@dereekb/dbx-form 13.43.0 → 14.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/fesm2022/dereekb-dbx-form-calendar.mjs +159 -199
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-expand.field.component-BO_8nxHg.mjs +70 -0
- package/fesm2022/dereekb-dbx-form-expand.field.component-BO_8nxHg.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C54ACtzt.mjs +40 -0
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C54ACtzt.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-info.field.component-CImBKYE7.mjs +61 -0
- package/fesm2022/dereekb-dbx-form-info.field.component-CImBKYE7.mjs.map +1 -0
- package/fesm2022/{dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs → dereekb-dbx-form-info.wrapper.component-DdDCQ47C.mjs} +14 -13
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-DdDCQ47C.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +100 -60
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-quiz.mjs +106 -73
- package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
- package/fesm2022/{dereekb-dbx-form-section.wrapper.component-BoR5-a8A.mjs → dereekb-dbx-form-section.wrapper.component-CpXSvC5e.mjs} +14 -13
- package/fesm2022/dereekb-dbx-form-section.wrapper.component-CpXSvC5e.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-style-demo.mjs +30 -39
- package/fesm2022/dereekb-dbx-form-style-demo.mjs.map +1 -1
- package/fesm2022/{dereekb-dbx-form-style.wrapper.component-C4dVNND_.mjs → dereekb-dbx-form-style.wrapper.component-CPzzgQXk.mjs} +12 -12
- package/fesm2022/dereekb-dbx-form-style.wrapper.component-CPzzgQXk.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form.mjs +958 -642
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/package.json +24 -24
- package/types/dereekb-dbx-form-calendar.d.ts +55 -64
- package/types/dereekb-dbx-form.d.ts +51 -293
- package/fesm2022/dereekb-dbx-form-expand.field.component-uqVNtX2s.mjs +0 -56
- package/fesm2022/dereekb-dbx-form-expand.field.component-uqVNtX2s.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C2nN1Oi1.mjs +0 -39
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-C2nN1Oi1.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-info.field.component-CBAXCDdO.mjs +0 -50
- package/fesm2022/dereekb-dbx-form-info.field.component-CBAXCDdO.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-section.wrapper.component-BoR5-a8A.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-style.wrapper.component-C4dVNND_.mjs.map +0 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { forwardRef, inject, input, Directive, effect,
|
|
2
|
+
import { forwardRef, inject, input, Directive, effect, Service, signal, computed, Injectable, untracked, viewChild, Component, output, InjectionToken, DestroyRef, ElementRef, ViewContainerRef, NgModule, model, makeEnvironmentProviders } from '@angular/core';
|
|
3
3
|
import * as i1$1 from '@dereekb/dbx-web';
|
|
4
|
-
import { DbxActionTransitionSafetyDirective, AbstractDialogDirective, DbxDialogContentDirective, DbxActionModule, DbxButtonModule, DbxDialogContentCloseComponent, AbstractPopoverDirective, DbxPopoverService, DbxAnchorComponent, DbxLoadingModule, DbxButtonComponent, DbxLoadingComponent, dbxValueListItemDecisionFunction, DbxListModifierModule, CompactContextStore, mapCompactModeObs, DbxChipDirective, DbxButtonSpacerDirective } from '@dereekb/dbx-web';
|
|
4
|
+
import { DbxActionTransitionSafetyDirective, AbstractDialogDirective, DbxActionSnackbarErrorDirective, DbxDialogContentDirective, DbxActionModule, DbxButtonModule, DbxDialogContentCloseComponent, AbstractPopoverDirective, DbxPopoverService, DbxAnchorComponent, DbxLoadingModule, DbxButtonComponent, DbxLoadingComponent, dbxValueListItemDecisionFunction, DbxListModifierModule, CompactContextStore, mapCompactModeObs, DbxChipDirective, DbxButtonSpacerDirective } from '@dereekb/dbx-web';
|
|
5
5
|
import { isPast, addSeconds, startOfDay, addMinutes, addDays, isBefore } from 'date-fns';
|
|
6
6
|
import { map, of, shareReplay, switchMap, first, exhaustMap, catchError, delay, filter, combineLatest, distinctUntilChanged, BehaviorSubject, scan, skip, EMPTY, throttleTime, startWith, Subject, interval, combineLatestWith as combineLatestWith$1, timer, withLatestFrom, debounceTime as debounceTime$1, mergeMap, tap as tap$1 } from 'rxjs';
|
|
7
7
|
import * as i1 from '@dereekb/dbx-core';
|
|
@@ -167,26 +167,31 @@ class DbxActionFormDirective {
|
|
|
167
167
|
*
|
|
168
168
|
* Defaults to true.
|
|
169
169
|
*/
|
|
170
|
-
dbxActionFormDisabledOnWorking = input(true,
|
|
170
|
+
dbxActionFormDisabledOnWorking = input(true, /* @ts-ignore */
|
|
171
|
+
...(ngDevMode ? [{ debugName: "dbxActionFormDisabledOnWorking" }] : /* istanbul ignore next */ []));
|
|
171
172
|
/**
|
|
172
173
|
* Optional validator that checks whether or not the value is
|
|
173
174
|
* ready to send before the context store is marked enabled.
|
|
174
175
|
*/
|
|
175
|
-
dbxActionFormIsValid = input(
|
|
176
|
+
dbxActionFormIsValid = input(/* @ts-ignore */
|
|
177
|
+
...(ngDevMode ? [undefined, { debugName: "dbxActionFormIsValid" }] : /* istanbul ignore next */ []));
|
|
176
178
|
/**
|
|
177
179
|
* Optional function that checks whether or not the value is still the same/equal.
|
|
178
180
|
*/
|
|
179
|
-
dbxActionFormIsEqual = input(
|
|
181
|
+
dbxActionFormIsEqual = input(/* @ts-ignore */
|
|
182
|
+
...(ngDevMode ? [undefined, { debugName: "dbxActionFormIsEqual" }] : /* istanbul ignore next */ []));
|
|
180
183
|
/**
|
|
181
184
|
* Optional function that checks whether or not the value has been modified.
|
|
182
185
|
*
|
|
183
186
|
* If dbxActionFormIsEqual is provided, this will be ignored.
|
|
184
187
|
*/
|
|
185
|
-
dbxActionFormIsModified = input(
|
|
188
|
+
dbxActionFormIsModified = input(/* @ts-ignore */
|
|
189
|
+
...(ngDevMode ? [undefined, { debugName: "dbxActionFormIsModified" }] : /* istanbul ignore next */ []));
|
|
186
190
|
/**
|
|
187
191
|
* Optional function that maps the form's value to the source's value.
|
|
188
192
|
*/
|
|
189
|
-
dbxActionFormMapValue = input(
|
|
193
|
+
dbxActionFormMapValue = input(/* @ts-ignore */
|
|
194
|
+
...(ngDevMode ? [undefined, { debugName: "dbxActionFormMapValue" }] : /* istanbul ignore next */ []));
|
|
190
195
|
dbxActionFormDisabledOnWorking$ = toObservable(this.dbxActionFormDisabledOnWorking);
|
|
191
196
|
isValidFunction$ = toObservable(this.dbxActionFormIsValid).pipe(map((x) => x ?? (() => of(true))), shareReplay(1));
|
|
192
197
|
isModifiedFunction$ = makeIsModifiedFunctionObservable({
|
|
@@ -302,14 +307,13 @@ class DbxActionFormDirective {
|
|
|
302
307
|
return of({ value: value });
|
|
303
308
|
}));
|
|
304
309
|
}
|
|
305
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
306
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
310
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxActionFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
311
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: DbxActionFormDirective, isStandalone: true, selector: "[dbxActionForm]", inputs: { dbxActionFormDisabledOnWorking: { classPropertyName: "dbxActionFormDisabledOnWorking", publicName: "dbxActionFormDisabledOnWorking", isSignal: true, isRequired: false, transformFunction: null }, dbxActionFormIsValid: { classPropertyName: "dbxActionFormIsValid", publicName: "dbxActionFormIsValid", isSignal: true, isRequired: false, transformFunction: null }, dbxActionFormIsEqual: { classPropertyName: "dbxActionFormIsEqual", publicName: "dbxActionFormIsEqual", isSignal: true, isRequired: false, transformFunction: null }, dbxActionFormIsModified: { classPropertyName: "dbxActionFormIsModified", publicName: "dbxActionFormIsModified", isSignal: true, isRequired: false, transformFunction: null }, dbxActionFormMapValue: { classPropertyName: "dbxActionFormMapValue", publicName: "dbxActionFormMapValue", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
307
312
|
}
|
|
308
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
313
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxActionFormDirective, decorators: [{
|
|
309
314
|
type: Directive,
|
|
310
315
|
args: [{
|
|
311
|
-
selector: '[dbxActionForm]'
|
|
312
|
-
standalone: true
|
|
316
|
+
selector: '[dbxActionForm]'
|
|
313
317
|
}]
|
|
314
318
|
}], ctorParameters: () => [], propDecorators: { dbxActionFormDisabledOnWorking: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionFormDisabledOnWorking", required: false }] }], dbxActionFormIsValid: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionFormIsValid", required: false }] }], dbxActionFormIsEqual: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionFormIsEqual", required: false }] }], dbxActionFormIsModified: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionFormIsModified", required: false }] }], dbxActionFormMapValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionFormMapValue", required: false }] }] } });
|
|
315
319
|
|
|
@@ -332,20 +336,21 @@ class DbxActionFormSafetyDirective extends DbxActionTransitionSafetyDirective {
|
|
|
332
336
|
*
|
|
333
337
|
* Defaults to `'auto'`, which blocks transitions when the form has unsaved changes.
|
|
334
338
|
*/
|
|
335
|
-
dbxActionFormSafety = input('auto',
|
|
336
|
-
|
|
339
|
+
dbxActionFormSafety = input('auto', /* @ts-ignore */
|
|
340
|
+
...(ngDevMode ? [{ debugName: "dbxActionFormSafety" }] : /* istanbul ignore next */ []));
|
|
341
|
+
_dbxActionFormSafetyUpdateEffect = effect(() => this._safetyType.next(this.dbxActionFormSafety()), /* @ts-ignore */
|
|
342
|
+
...(ngDevMode ? [{ debugName: "_dbxActionFormSafetyUpdateEffect" }] : /* istanbul ignore next */ []));
|
|
337
343
|
_handleOnBeforeTransition(transition) {
|
|
338
344
|
this.dbxActionForm.form.forceFormUpdate();
|
|
339
345
|
return super._handleOnBeforeTransition(transition);
|
|
340
346
|
}
|
|
341
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
342
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
347
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxActionFormSafetyDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
348
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: DbxActionFormSafetyDirective, isStandalone: true, selector: "[dbxActionFormSafety]", inputs: { dbxActionFormSafety: { classPropertyName: "dbxActionFormSafety", publicName: "dbxActionFormSafety", isSignal: true, isRequired: false, transformFunction: null } }, usesInheritance: true, ngImport: i0 });
|
|
343
349
|
}
|
|
344
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
350
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxActionFormSafetyDirective, decorators: [{
|
|
345
351
|
type: Directive,
|
|
346
352
|
args: [{
|
|
347
|
-
selector: '[dbxActionFormSafety]'
|
|
348
|
-
standalone: true
|
|
353
|
+
selector: '[dbxActionFormSafety]'
|
|
349
354
|
}]
|
|
350
355
|
}], propDecorators: { dbxActionFormSafety: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxActionFormSafety", required: false }] }] } });
|
|
351
356
|
|
|
@@ -602,14 +607,11 @@ class DbxForgeGlobalDefaultConfigService {
|
|
|
602
607
|
setDefaultValidationMessages(messages) {
|
|
603
608
|
this._defaults = { ...this._defaults, defaultValidationMessages: messages ?? undefined };
|
|
604
609
|
}
|
|
605
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
606
|
-
static ɵprov = i0.ɵɵ
|
|
610
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeGlobalDefaultConfigService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
611
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeGlobalDefaultConfigService });
|
|
607
612
|
}
|
|
608
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
609
|
-
type:
|
|
610
|
-
args: [{
|
|
611
|
-
providedIn: 'root'
|
|
612
|
-
}]
|
|
613
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeGlobalDefaultConfigService, decorators: [{
|
|
614
|
+
type: Service
|
|
613
615
|
}] });
|
|
614
616
|
|
|
615
617
|
/**
|
|
@@ -787,7 +789,8 @@ class DbxForgeFormContext {
|
|
|
787
789
|
* and the combined result is exposed as {@link allWrappersValid}.
|
|
788
790
|
*/
|
|
789
791
|
_wrapperValidSignals = new Set();
|
|
790
|
-
_wrapperValidSignalsVersion = signal(0,
|
|
792
|
+
_wrapperValidSignalsVersion = signal(0, /* @ts-ignore */
|
|
793
|
+
...(ngDevMode ? [{ debugName: "_wrapperValidSignalsVersion" }] : /* istanbul ignore next */ []));
|
|
791
794
|
/**
|
|
792
795
|
* Computed signal that is `true` when all registered wrapper nested forms are valid.
|
|
793
796
|
* Returns `true` when no wrappers are registered.
|
|
@@ -802,7 +805,8 @@ class DbxForgeFormContext {
|
|
|
802
805
|
}
|
|
803
806
|
}
|
|
804
807
|
return result;
|
|
805
|
-
},
|
|
808
|
+
}, /* @ts-ignore */
|
|
809
|
+
...(ngDevMode ? [{ debugName: "allWrappersValid" }] : /* istanbul ignore next */ []));
|
|
806
810
|
/**
|
|
807
811
|
* Registers a wrapper's nested form validity signal for tracking.
|
|
808
812
|
*
|
|
@@ -826,7 +830,8 @@ class DbxForgeFormContext {
|
|
|
826
830
|
* Allows wrapper field components to write values to sibling hidden fields
|
|
827
831
|
* in the parent form (e.g., for the form-field wrapper's hidden field sync).
|
|
828
832
|
*/
|
|
829
|
-
_parentFormTree = signal(undefined,
|
|
833
|
+
_parentFormTree = signal(undefined, /* @ts-ignore */
|
|
834
|
+
...(ngDevMode ? [{ debugName: "_parentFormTree" }] : /* istanbul ignore next */ []));
|
|
830
835
|
parentFormTree = this._parentFormTree.asReadonly();
|
|
831
836
|
setParentFormTree(tree) {
|
|
832
837
|
this._parentFormTree.set(tree);
|
|
@@ -928,10 +933,10 @@ class DbxForgeFormContext {
|
|
|
928
933
|
this._reset.complete();
|
|
929
934
|
});
|
|
930
935
|
}
|
|
931
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
932
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
936
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormContext, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
937
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormContext });
|
|
933
938
|
}
|
|
934
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
939
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormContext, decorators: [{
|
|
935
940
|
type: Injectable
|
|
936
941
|
}] });
|
|
937
942
|
/**
|
|
@@ -985,14 +990,16 @@ class DbxForgeFormContextService {
|
|
|
985
990
|
formValue = computed(() => {
|
|
986
991
|
const form = this._signalRef.dynamicForm();
|
|
987
992
|
return (form?.formValue() ?? {});
|
|
988
|
-
},
|
|
993
|
+
}, /* @ts-ignore */
|
|
994
|
+
...(ngDevMode ? [{ debugName: "formValue" }] : /* istanbul ignore next */ []));
|
|
989
995
|
/**
|
|
990
996
|
* The active Signal Form tree, or undefined until the DynamicForm mounts.
|
|
991
997
|
*/
|
|
992
998
|
rootForm = computed(() => {
|
|
993
999
|
const form = this._signalRef.dynamicForm();
|
|
994
1000
|
return form?.form();
|
|
995
|
-
},
|
|
1001
|
+
}, /* @ts-ignore */
|
|
1002
|
+
...(ngDevMode ? [{ debugName: "rootForm" }] : /* istanbul ignore next */ []));
|
|
996
1003
|
/**
|
|
997
1004
|
* Builds an {@link EvaluationContext} scoped to the current array item.
|
|
998
1005
|
*
|
|
@@ -1048,10 +1055,10 @@ class DbxForgeFormContextService {
|
|
|
1048
1055
|
}
|
|
1049
1056
|
return result;
|
|
1050
1057
|
}
|
|
1051
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1052
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
1058
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormContextService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1059
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormContextService });
|
|
1053
1060
|
}
|
|
1054
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1061
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormContextService, decorators: [{
|
|
1055
1062
|
type: Injectable
|
|
1056
1063
|
}] });
|
|
1057
1064
|
/**
|
|
@@ -1090,13 +1097,18 @@ class DbxForgeFormComponent {
|
|
|
1090
1097
|
_setValueSub = cleanSubscription();
|
|
1091
1098
|
_resetSub = cleanSubscription();
|
|
1092
1099
|
_disabledSub = cleanSubscription();
|
|
1093
|
-
dynamicForm = viewChild(DynamicForm,
|
|
1100
|
+
dynamicForm = viewChild(DynamicForm, /* @ts-ignore */
|
|
1101
|
+
...(ngDevMode ? [{ debugName: "dynamicForm" }] : /* istanbul ignore next */ []));
|
|
1094
1102
|
formValue = signal({}, { ...(ngDevMode ? { debugName: "formValue" } : /* istanbul ignore next */ {}), equal: (a, b) => _forgeFormValueEqual(a, b, this._context) });
|
|
1095
1103
|
configSignal = toSignal(this._context.config$, { initialValue: undefined });
|
|
1096
|
-
_changesCount = signal(0,
|
|
1097
|
-
|
|
1098
|
-
|
|
1099
|
-
|
|
1104
|
+
_changesCount = signal(0, /* @ts-ignore */
|
|
1105
|
+
...(ngDevMode ? [{ debugName: "_changesCount" }] : /* istanbul ignore next */ []));
|
|
1106
|
+
_lastResetAt = signal(new Date(), /* @ts-ignore */
|
|
1107
|
+
...(ngDevMode ? [{ debugName: "_lastResetAt" }] : /* istanbul ignore next */ []));
|
|
1108
|
+
_isReset = signal(true, /* @ts-ignore */
|
|
1109
|
+
...(ngDevMode ? [{ debugName: "_isReset" }] : /* istanbul ignore next */ []));
|
|
1110
|
+
_disabled = signal(undefined, /* @ts-ignore */
|
|
1111
|
+
...(ngDevMode ? [{ debugName: "_disabled" }] : /* istanbul ignore next */ []));
|
|
1100
1112
|
/**
|
|
1101
1113
|
* True once ng-forge has finished its synchronous initialization: the config
|
|
1102
1114
|
* has arrived, the DynamicForm view child is populated, and ng-forge has
|
|
@@ -1108,7 +1120,8 @@ class DbxForgeFormComponent {
|
|
|
1108
1120
|
* {@link DbxFormSourceDirective} 'reset' mode still forwards an
|
|
1109
1121
|
* asynchronously-resolving value once it arrives.
|
|
1110
1122
|
*/
|
|
1111
|
-
_formReady = signal(false,
|
|
1123
|
+
_formReady = signal(false, /* @ts-ignore */
|
|
1124
|
+
...(ngDevMode ? [{ debugName: "_formReady" }] : /* istanbul ignore next */ []));
|
|
1112
1125
|
/**
|
|
1113
1126
|
* A setValue payload received while {@link _formReady} was false. Applied
|
|
1114
1127
|
* once ready; only the most recent pending value is retained.
|
|
@@ -1118,10 +1131,12 @@ class DbxForgeFormComponent {
|
|
|
1118
1131
|
* with a null/undefined inner value).
|
|
1119
1132
|
*/
|
|
1120
1133
|
_pendingValue = undefined;
|
|
1121
|
-
isDisabledSignal = computed(() => BooleanStringKeyArrayUtility.isTrue(this._disabled()),
|
|
1134
|
+
isDisabledSignal = computed(() => BooleanStringKeyArrayUtility.isTrue(this._disabled()), /* @ts-ignore */
|
|
1135
|
+
...(ngDevMode ? [{ debugName: "isDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
1122
1136
|
formOptionsSignal = computed(() => {
|
|
1123
1137
|
return this.isDisabledSignal() ? { disabled: true } : undefined;
|
|
1124
|
-
},
|
|
1138
|
+
}, /* @ts-ignore */
|
|
1139
|
+
...(ngDevMode ? [{ debugName: "formOptionsSignal" }] : /* istanbul ignore next */ []));
|
|
1125
1140
|
/**
|
|
1126
1141
|
* Computed validity combining the ng-forge DynamicForm's valid signal with
|
|
1127
1142
|
* validity from all registered wrapper nested forms.
|
|
@@ -1131,7 +1146,8 @@ class DbxForgeFormComponent {
|
|
|
1131
1146
|
* DynamicForm.valid(). They register their nested validity via
|
|
1132
1147
|
* {@link DbxForgeFormContext.registerWrapperValidity}, and this computed combines both sources.
|
|
1133
1148
|
*/
|
|
1134
|
-
formValidSignal = computed(() => (this.dynamicForm()?.valid() ?? false) && this._context.allWrappersValid(),
|
|
1149
|
+
formValidSignal = computed(() => (this.dynamicForm()?.valid() ?? false) && this._context.allWrappersValid(), /* @ts-ignore */
|
|
1150
|
+
...(ngDevMode ? [{ debugName: "formValidSignal" }] : /* istanbul ignore next */ []));
|
|
1135
1151
|
/**
|
|
1136
1152
|
* Track form value changes and update the context value + changes count.
|
|
1137
1153
|
*
|
|
@@ -1162,7 +1178,8 @@ class DbxForgeFormComponent {
|
|
|
1162
1178
|
this._emitFormState();
|
|
1163
1179
|
}
|
|
1164
1180
|
});
|
|
1165
|
-
},
|
|
1181
|
+
}, /* @ts-ignore */
|
|
1182
|
+
...(ngDevMode ? [{ debugName: "_formValueEffect" }] : /* istanbul ignore next */ []));
|
|
1166
1183
|
/**
|
|
1167
1184
|
* Marks the form as ready once the ng-forge DynamicForm view child is
|
|
1168
1185
|
* populated. The viewChild signal updates after ng-forge has completed its
|
|
@@ -1185,7 +1202,8 @@ class DbxForgeFormComponent {
|
|
|
1185
1202
|
}
|
|
1186
1203
|
});
|
|
1187
1204
|
}
|
|
1188
|
-
},
|
|
1205
|
+
}, /* @ts-ignore */
|
|
1206
|
+
...(ngDevMode ? [{ debugName: "_formReadyEffect" }] : /* istanbul ignore next */ []));
|
|
1189
1207
|
/**
|
|
1190
1208
|
* Expose the parent DynamicForm's field tree to the context so wrapper components
|
|
1191
1209
|
* can write to sibling hidden fields in the parent form.
|
|
@@ -1195,7 +1213,8 @@ class DbxForgeFormComponent {
|
|
|
1195
1213
|
untracked(() => {
|
|
1196
1214
|
this._context.setParentFormTree(formTree);
|
|
1197
1215
|
});
|
|
1198
|
-
},
|
|
1216
|
+
}, /* @ts-ignore */
|
|
1217
|
+
...(ngDevMode ? [{ debugName: "_parentFormTreeEffect" }] : /* istanbul ignore next */ []));
|
|
1199
1218
|
/**
|
|
1200
1219
|
* Track validity changes from the DynamicForm and update the context.
|
|
1201
1220
|
*
|
|
@@ -1208,7 +1227,8 @@ class DbxForgeFormComponent {
|
|
|
1208
1227
|
this._context.updateIsValid(isValid);
|
|
1209
1228
|
this._emitFormState();
|
|
1210
1229
|
});
|
|
1211
|
-
},
|
|
1230
|
+
}, /* @ts-ignore */
|
|
1231
|
+
...(ngDevMode ? [{ debugName: "_validityEffect" }] : /* istanbul ignore next */ []));
|
|
1212
1232
|
_emitFormState() {
|
|
1213
1233
|
const isValid = this.formValidSignal();
|
|
1214
1234
|
const isReset = this._isReset();
|
|
@@ -1308,14 +1328,14 @@ class DbxForgeFormComponent {
|
|
|
1308
1328
|
this.formValue.set(sanitized);
|
|
1309
1329
|
this._emitFormState();
|
|
1310
1330
|
}
|
|
1311
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1312
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
1331
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
1332
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeFormComponent, isStandalone: true, selector: "dbx-forge", host: { properties: { "class.dbx-forge-form-disabled": "isDisabledSignal()" }, classAttribute: "dbx-forge" }, providers: [EventDispatcher, { provide: DbxForgeDynamicFormSignalRef, useExisting: DbxForgeFormComponent }, DbxForgeFormContextService, { provide: DbxForm, useExisting: DbxForgeFormContext }, { provide: DbxMutableForm, useExisting: DbxForgeFormContext }], viewQueries: [{ propertyName: "dynamicForm", first: true, predicate: DynamicForm, descendants: true, isSignal: true }], ngImport: i0, template: `
|
|
1313
1333
|
@if (configSignal()) {
|
|
1314
1334
|
<form [dynamic-form]="configSignal()!" [(value)]="formValue" [formOptions]="formOptionsSignal()"></form>
|
|
1315
1335
|
}
|
|
1316
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DynamicForm, selector: "form[dynamic-form]", inputs: ["dynamic-form", "formOptions", "value", "source"], outputs: ["valueChange", "validityChange", "dirtyChange", "submitted", "reset", "cleared", "events", "initialized", "onPageChange", "onPageNavigationStateChange"] }]
|
|
1336
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DynamicForm, selector: "form[dynamic-form]", inputs: ["dynamic-form", "formOptions", "value", "source"], outputs: ["valueChange", "validityChange", "dirtyChange", "submitted", "reset", "cleared", "events", "initialized", "activePageInitialized", "onPageChange", "onPageNavigationStateChange"] }] });
|
|
1317
1337
|
}
|
|
1318
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormComponent, decorators: [{
|
|
1319
1339
|
type: Component,
|
|
1320
1340
|
args: [{
|
|
1321
1341
|
selector: 'dbx-forge',
|
|
@@ -1329,9 +1349,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
1329
1349
|
'[class.dbx-forge-form-disabled]': 'isDisabledSignal()'
|
|
1330
1350
|
},
|
|
1331
1351
|
providers: [EventDispatcher, { provide: DbxForgeDynamicFormSignalRef, useExisting: DbxForgeFormComponent }, DbxForgeFormContextService, { provide: DbxForm, useExisting: DbxForgeFormContext }, { provide: DbxMutableForm, useExisting: DbxForgeFormContext }],
|
|
1332
|
-
imports: [DynamicForm]
|
|
1333
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
1334
|
-
standalone: true
|
|
1352
|
+
imports: [DynamicForm]
|
|
1335
1353
|
}]
|
|
1336
1354
|
}], propDecorators: { dynamicForm: [{ type: i0.ViewChild, args: [i0.forwardRef(() => DynamicForm), { isSignal: true }] }] } });
|
|
1337
1355
|
/**
|
|
@@ -1495,11 +1513,13 @@ class DbxFormSourceDirective {
|
|
|
1495
1513
|
/**
|
|
1496
1514
|
* The mode controlling when the source value is forwarded to the form.
|
|
1497
1515
|
*/
|
|
1498
|
-
dbxFormSourceMode = input(
|
|
1516
|
+
dbxFormSourceMode = input(/* @ts-ignore */
|
|
1517
|
+
...(ngDevMode ? [undefined, { debugName: "dbxFormSourceMode" }] : /* istanbul ignore next */ []));
|
|
1499
1518
|
/**
|
|
1500
1519
|
* The source value or observable to pipe into the form.
|
|
1501
1520
|
*/
|
|
1502
|
-
dbxFormSource = input(
|
|
1521
|
+
dbxFormSource = input(/* @ts-ignore */
|
|
1522
|
+
...(ngDevMode ? [undefined, { debugName: "dbxFormSource" }] : /* istanbul ignore next */ []));
|
|
1503
1523
|
_effectSub = cleanSubscription();
|
|
1504
1524
|
_setFormSourceObservableEffect = effect(() => {
|
|
1505
1525
|
const formSource = this.dbxFormSource();
|
|
@@ -1519,15 +1539,15 @@ class DbxFormSourceDirective {
|
|
|
1519
1539
|
});
|
|
1520
1540
|
}
|
|
1521
1541
|
this._effectSub.setSub(subscription);
|
|
1522
|
-
},
|
|
1523
|
-
|
|
1524
|
-
static
|
|
1542
|
+
}, /* @ts-ignore */
|
|
1543
|
+
...(ngDevMode ? [{ debugName: "_setFormSourceObservableEffect" }] : /* istanbul ignore next */ []));
|
|
1544
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1545
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: DbxFormSourceDirective, isStandalone: true, selector: "[dbxFormSource]", inputs: { dbxFormSourceMode: { classPropertyName: "dbxFormSourceMode", publicName: "dbxFormSourceMode", isSignal: true, isRequired: false, transformFunction: null }, dbxFormSource: { classPropertyName: "dbxFormSource", publicName: "dbxFormSource", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
1525
1546
|
}
|
|
1526
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1547
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormSourceDirective, decorators: [{
|
|
1527
1548
|
type: Directive,
|
|
1528
1549
|
args: [{
|
|
1529
|
-
selector: '[dbxFormSource]'
|
|
1530
|
-
standalone: true
|
|
1550
|
+
selector: '[dbxFormSource]'
|
|
1531
1551
|
}]
|
|
1532
1552
|
}], propDecorators: { dbxFormSourceMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxFormSourceMode", required: false }] }], dbxFormSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxFormSource", required: false }] }] } });
|
|
1533
1553
|
|
|
@@ -1582,9 +1602,9 @@ class DbxForgeActionDialogComponent extends AbstractDialogDirective {
|
|
|
1582
1602
|
data: config
|
|
1583
1603
|
});
|
|
1584
1604
|
}
|
|
1585
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1586
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
1587
|
-
<dbx-dialog-content dbxAction [dbxActionHandler]="handleSubmitValue" class="dbx-dialog-content-with-header">
|
|
1605
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeActionDialogComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
1606
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: DbxForgeActionDialogComponent, isStandalone: true, selector: "ng-component", providers: [provideDbxForgeFormContext()], usesInheritance: true, ngImport: i0, template: `
|
|
1607
|
+
<dbx-dialog-content dbxAction [dbxActionHandler]="handleSubmitValue" class="dbx-dialog-content-with-header" dbxActionSnackbarError>
|
|
1588
1608
|
<h3 class="dbx-dialog-content-header">{{ header }}</h3>
|
|
1589
1609
|
<dbx-dialog-content-close (close)="close()"></dbx-dialog-content-close>
|
|
1590
1610
|
<div>
|
|
@@ -1592,13 +1612,13 @@ class DbxForgeActionDialogComponent extends AbstractDialogDirective {
|
|
|
1592
1612
|
<dbx-button dbxActionButton [buttonDisplay]="submitButtonConfig" [buttonStyle]="submitButtonConfig" [raised]="true"></dbx-button>
|
|
1593
1613
|
</div>
|
|
1594
1614
|
</dbx-dialog-content>
|
|
1595
|
-
`, isInline: true, dependencies: [{ kind: "directive", type: DbxDialogContentDirective, selector: "dbx-dialog-content,[dbxDialogContent],.dbx-dialog-content", inputs: ["width"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1.DbxActionButtonDirective, selector: "[dbxActionButton]", inputs: ["dbxActionButtonEcho"] }, { kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1$1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "
|
|
1615
|
+
`, isInline: true, dependencies: [{ kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { kind: "directive", type: DbxDialogContentDirective, selector: "dbx-dialog-content,[dbxDialogContent],.dbx-dialog-content", inputs: ["width"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1.DbxActionButtonDirective, selector: "[dbxActionButton]", inputs: ["dbxActionButtonEcho"] }, { kind: "ngmodule", type: DbxButtonModule }, { kind: "component", type: i1$1.DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }, { kind: "component", type: DbxDialogContentCloseComponent, selector: "dbx-dialog-content-close", inputs: ["padded"], outputs: ["close"] }, { kind: "component", type: DbxForgeFormComponent, selector: "dbx-forge" }, { kind: "directive", type: DbxFormSourceDirective, selector: "[dbxFormSource]", inputs: ["dbxFormSourceMode", "dbxFormSource"] }, { kind: "directive", type: DbxActionFormDirective, selector: "[dbxActionForm]", inputs: ["dbxActionFormDisabledOnWorking", "dbxActionFormIsValid", "dbxActionFormIsEqual", "dbxActionFormIsModified", "dbxActionFormMapValue"] }] });
|
|
1596
1616
|
}
|
|
1597
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1617
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeActionDialogComponent, decorators: [{
|
|
1598
1618
|
type: Component,
|
|
1599
1619
|
args: [{
|
|
1600
1620
|
template: `
|
|
1601
|
-
<dbx-dialog-content dbxAction [dbxActionHandler]="handleSubmitValue" class="dbx-dialog-content-with-header">
|
|
1621
|
+
<dbx-dialog-content dbxAction [dbxActionHandler]="handleSubmitValue" class="dbx-dialog-content-with-header" dbxActionSnackbarError>
|
|
1602
1622
|
<h3 class="dbx-dialog-content-header">{{ header }}</h3>
|
|
1603
1623
|
<dbx-dialog-content-close (close)="close()"></dbx-dialog-content-close>
|
|
1604
1624
|
<div>
|
|
@@ -1607,9 +1627,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
1607
1627
|
</div>
|
|
1608
1628
|
</dbx-dialog-content>
|
|
1609
1629
|
`,
|
|
1610
|
-
standalone: true,
|
|
1611
1630
|
providers: [provideDbxForgeFormContext()],
|
|
1612
|
-
imports: [DbxDialogContentDirective, DbxActionModule, DbxButtonModule, DbxDialogContentCloseComponent, DbxForgeFormComponent, DbxFormSourceDirective, DbxActionFormDirective]
|
|
1631
|
+
imports: [DbxActionSnackbarErrorDirective, DbxDialogContentDirective, DbxActionModule, DbxButtonModule, DbxDialogContentCloseComponent, DbxForgeFormComponent, DbxFormSourceDirective, DbxActionFormDirective]
|
|
1613
1632
|
}]
|
|
1614
1633
|
}] });
|
|
1615
1634
|
|
|
@@ -1636,14 +1655,13 @@ class DbxFormLoggerDirective {
|
|
|
1636
1655
|
console.log('dbxFormLogger - stream: ', { currentValue, event });
|
|
1637
1656
|
}));
|
|
1638
1657
|
}
|
|
1639
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1640
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1658
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormLoggerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1659
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: DbxFormLoggerDirective, isStandalone: true, selector: "[dbxFormLogger],[dbxFormStreamLogger]", ngImport: i0 });
|
|
1641
1660
|
}
|
|
1642
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1661
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormLoggerDirective, decorators: [{
|
|
1643
1662
|
type: Directive,
|
|
1644
1663
|
args: [{
|
|
1645
|
-
selector: '[dbxFormLogger],[dbxFormStreamLogger]'
|
|
1646
|
-
standalone: true
|
|
1664
|
+
selector: '[dbxFormLogger],[dbxFormStreamLogger]'
|
|
1647
1665
|
}]
|
|
1648
1666
|
}], ctorParameters: () => [] });
|
|
1649
1667
|
|
|
@@ -1672,7 +1690,8 @@ class DbxFormLoadingSourceDirective {
|
|
|
1672
1690
|
/**
|
|
1673
1691
|
* The loading state source to observe. The form value is set once loading finishes with a non-null value.
|
|
1674
1692
|
*/
|
|
1675
|
-
dbxFormLoadingSource = input(
|
|
1693
|
+
dbxFormLoadingSource = input(/* @ts-ignore */
|
|
1694
|
+
...(ngDevMode ? [undefined, { debugName: "dbxFormLoadingSource" }] : /* istanbul ignore next */ []));
|
|
1676
1695
|
mode$ = toObservable(this.dbxFormLoadingSourceMode);
|
|
1677
1696
|
source$ = toObservable(this.dbxFormLoadingSource).pipe(maybeValueFromObservableOrValue(), filterMaybe(), valueFromFinishedLoadingState());
|
|
1678
1697
|
constructor() {
|
|
@@ -1680,14 +1699,13 @@ class DbxFormLoadingSourceDirective {
|
|
|
1680
1699
|
this.form.setValue(x);
|
|
1681
1700
|
}));
|
|
1682
1701
|
}
|
|
1683
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1684
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
1702
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormLoadingSourceDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1703
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: DbxFormLoadingSourceDirective, isStandalone: true, selector: "[dbxFormLoadingSource]", inputs: { dbxFormLoadingSourceMode: { classPropertyName: "dbxFormLoadingSourceMode", publicName: "dbxFormLoadingSourceMode", isSignal: true, isRequired: false, transformFunction: null }, dbxFormLoadingSource: { classPropertyName: "dbxFormLoadingSource", publicName: "dbxFormLoadingSource", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
1685
1704
|
}
|
|
1686
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1705
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormLoadingSourceDirective, decorators: [{
|
|
1687
1706
|
type: Directive,
|
|
1688
1707
|
args: [{
|
|
1689
|
-
selector: '[dbxFormLoadingSource]'
|
|
1690
|
-
standalone: true
|
|
1708
|
+
selector: '[dbxFormLoadingSource]'
|
|
1691
1709
|
}]
|
|
1692
1710
|
}], ctorParameters: () => [], propDecorators: { dbxFormLoadingSourceMode: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxFormLoadingSourceMode", required: false }] }], dbxFormLoadingSource: [{ type: i0.Input, args: [{ isSignal: true, alias: "dbxFormLoadingSource", required: false }] }] } });
|
|
1693
1711
|
|
|
@@ -1726,14 +1744,13 @@ class DbxFormValueChangeDirective {
|
|
|
1726
1744
|
}
|
|
1727
1745
|
}));
|
|
1728
1746
|
}
|
|
1729
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
1730
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
1747
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormValueChangeDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
1748
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: DbxFormValueChangeDirective, isStandalone: true, selector: "[dbxFormValueChange]", outputs: { dbxFormValueChange: "dbxFormValueChange" }, ngImport: i0 });
|
|
1731
1749
|
}
|
|
1732
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
1750
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormValueChangeDirective, decorators: [{
|
|
1733
1751
|
type: Directive,
|
|
1734
1752
|
args: [{
|
|
1735
|
-
selector: '[dbxFormValueChange]'
|
|
1736
|
-
standalone: true
|
|
1753
|
+
selector: '[dbxFormValueChange]'
|
|
1737
1754
|
}]
|
|
1738
1755
|
}], propDecorators: { dbxFormValueChange: [{ type: i0.Output, args: ["dbxFormValueChange"] }] } });
|
|
1739
1756
|
|
|
@@ -2315,10 +2332,10 @@ function dbxForgeFieldFunctionConfigure(...fns) {
|
|
|
2315
2332
|
return fn;
|
|
2316
2333
|
}
|
|
2317
2334
|
/**
|
|
2318
|
-
* Creates a {@link DbxForgeFieldFunctionConfigPropsBuilder} that automatically copies `hint`
|
|
2335
|
+
* Creates a {@link DbxForgeFieldFunctionConfigPropsBuilder} that automatically copies `hint`
|
|
2319
2336
|
* from the top-level field config into `props.hint`.
|
|
2320
2337
|
*
|
|
2321
|
-
* Historically hint
|
|
2338
|
+
* Historically the hint lived at the base config level. In `@ng-forge/dynamic-forms` hints are
|
|
2322
2339
|
* expected under `props`, so this builder bridges that gap.
|
|
2323
2340
|
*
|
|
2324
2341
|
* @param makeProps - Optional delegate that produces additional props; its result is merged before the hint is applied.
|
|
@@ -2338,10 +2355,6 @@ function dbxForgeFieldFunctionConfigPropsWithHintBuilder(makeProps) {
|
|
|
2338
2355
|
if ('hint' in input) {
|
|
2339
2356
|
props.hint = input.hint;
|
|
2340
2357
|
}
|
|
2341
|
-
else if ('description' in input) {
|
|
2342
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated -- intentionally accepts the deprecated `description` input as a fallback for `hint`
|
|
2343
|
-
props.hint = input.description;
|
|
2344
|
-
}
|
|
2345
2358
|
return props;
|
|
2346
2359
|
};
|
|
2347
2360
|
}
|
|
@@ -2803,14 +2816,14 @@ function dbxForgeNameField(config = {}) {
|
|
|
2803
2816
|
* ```
|
|
2804
2817
|
*/
|
|
2805
2818
|
function dbxForgeEmailField(config = {}) {
|
|
2806
|
-
const { key = 'email', label = 'Email Address', placeholder = 'you@example.com', required, readonly: isReadonly,
|
|
2819
|
+
const { key = 'email', label = 'Email Address', placeholder = 'you@example.com', required, readonly: isReadonly, hint, autocomplete } = config;
|
|
2807
2820
|
return dbxForgeTextField({
|
|
2808
2821
|
key,
|
|
2809
2822
|
label,
|
|
2810
2823
|
placeholder,
|
|
2811
2824
|
required,
|
|
2812
2825
|
readonly: isReadonly,
|
|
2813
|
-
|
|
2826
|
+
hint,
|
|
2814
2827
|
autocomplete,
|
|
2815
2828
|
inputType: 'email'
|
|
2816
2829
|
});
|
|
@@ -3037,8 +3050,7 @@ function isFlexFieldConfig(input) {
|
|
|
3037
3050
|
* dbxForgeFlexLayout({ breakpoint: 'large', breakToColumn: true, relative: true, size: 1, fields: [...] })
|
|
3038
3051
|
* ```
|
|
3039
3052
|
*/
|
|
3040
|
-
function dbxForgeFlexLayout(
|
|
3041
|
-
const config = Array.isArray(input) ? { ...legacyConfig, fields: input } : input;
|
|
3053
|
+
function dbxForgeFlexLayout(config) {
|
|
3042
3054
|
const { breakpoint, relative, breakToColumn, size: defaultSize = 2, fields = [] } = config;
|
|
3043
3055
|
const mappedFields = fields.map((entry) => {
|
|
3044
3056
|
const { field, size = defaultSize } = isFlexFieldConfig(entry) ? entry : { field: entry };
|
|
@@ -3825,15 +3837,6 @@ const dbxForgeCheckboxField = dbxForgeFieldFunction({
|
|
|
3825
3837
|
}
|
|
3826
3838
|
})
|
|
3827
3839
|
});
|
|
3828
|
-
// COMPAT: Deprecated aliases
|
|
3829
|
-
/**
|
|
3830
|
-
* CSS class applied to forge fields when `styledBox` is enabled.
|
|
3831
|
-
*
|
|
3832
|
-
* @deprecated Boolean fields now use the Material-style form-field wrapper to render the
|
|
3833
|
-
* outlined chrome and standard label/hint/error subscript. Retained as an export for any
|
|
3834
|
-
* consumers still referencing the class name directly.
|
|
3835
|
-
*/
|
|
3836
|
-
const FORGE_STYLED_BOX_CLASS = 'dbx-forge-styled-box';
|
|
3837
3840
|
|
|
3838
3841
|
var DbxDateTimeFieldTimeMode;
|
|
3839
3842
|
(function (DbxDateTimeFieldTimeMode) {
|
|
@@ -4598,14 +4601,11 @@ class DbxDateTimeFieldMenuPresetsService {
|
|
|
4598
4601
|
set configurations(configurations) {
|
|
4599
4602
|
this._configurations.next(configurations);
|
|
4600
4603
|
}
|
|
4601
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
4602
|
-
static ɵprov = i0.ɵɵ
|
|
4604
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxDateTimeFieldMenuPresetsService, deps: [], target: i0.ɵɵFactoryTarget.Service });
|
|
4605
|
+
static ɵprov = i0.ɵɵngDeclareService({ minVersion: "22.0.0", version: "22.1.4", ngImport: i0, type: DbxDateTimeFieldMenuPresetsService });
|
|
4603
4606
|
}
|
|
4604
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
4605
|
-
type:
|
|
4606
|
-
args: [{
|
|
4607
|
-
providedIn: 'root'
|
|
4608
|
-
}]
|
|
4607
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxDateTimeFieldMenuPresetsService, decorators: [{
|
|
4608
|
+
type: Service
|
|
4609
4609
|
}] });
|
|
4610
4610
|
|
|
4611
4611
|
// MARK: Time Output Constants
|
|
@@ -4626,29 +4626,46 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4626
4626
|
presetsService = inject(DbxDateTimeFieldMenuPresetsService, { optional: true });
|
|
4627
4627
|
fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);
|
|
4628
4628
|
// MARK: ng-forge ValueFieldComponent inputs
|
|
4629
|
-
field = input.required(
|
|
4630
|
-
|
|
4631
|
-
|
|
4632
|
-
|
|
4633
|
-
|
|
4634
|
-
|
|
4635
|
-
|
|
4636
|
-
|
|
4637
|
-
|
|
4638
|
-
|
|
4629
|
+
field = input.required(/* @ts-ignore */
|
|
4630
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
4631
|
+
key = input.required(/* @ts-ignore */
|
|
4632
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
4633
|
+
label = input(/* @ts-ignore */
|
|
4634
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
4635
|
+
placeholder = input(/* @ts-ignore */
|
|
4636
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
4637
|
+
className = input('', /* @ts-ignore */
|
|
4638
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
4639
|
+
tabIndex = input(/* @ts-ignore */
|
|
4640
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
4641
|
+
props = input(/* @ts-ignore */
|
|
4642
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
4643
|
+
meta = input(/* @ts-ignore */
|
|
4644
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
4645
|
+
validationMessages = input(/* @ts-ignore */
|
|
4646
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
4647
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
4648
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
4639
4649
|
// MARK: Form controls
|
|
4640
4650
|
dateCtrl = new FormControl(null);
|
|
4641
4651
|
timeCtrl = new FormControl(null, {
|
|
4642
4652
|
validators: [Validators.pattern(/^(now)$|^(\d|(0\d)|(1\d)|(2[0-3]))(:)?([0-5]\d)?(\s)?([apAP][Mm])?(\\s)*$/)]
|
|
4643
4653
|
});
|
|
4644
4654
|
// MARK: Internal signals
|
|
4645
|
-
_fullDay = signal(false,
|
|
4646
|
-
|
|
4647
|
-
|
|
4648
|
-
|
|
4649
|
-
|
|
4650
|
-
|
|
4651
|
-
|
|
4655
|
+
_fullDay = signal(false, /* @ts-ignore */
|
|
4656
|
+
...(ngDevMode ? [{ debugName: "_fullDay" }] : /* istanbul ignore next */ []));
|
|
4657
|
+
_timezone = signal(undefined, /* @ts-ignore */
|
|
4658
|
+
...(ngDevMode ? [{ debugName: "_timezone" }] : /* istanbul ignore next */ []));
|
|
4659
|
+
_pickerConfig = signal(undefined, /* @ts-ignore */
|
|
4660
|
+
...(ngDevMode ? [{ debugName: "_pickerConfig" }] : /* istanbul ignore next */ []));
|
|
4661
|
+
_timeDate = signal(undefined, /* @ts-ignore */
|
|
4662
|
+
...(ngDevMode ? [{ debugName: "_timeDate" }] : /* istanbul ignore next */ []));
|
|
4663
|
+
_presetConfigs = signal([], /* @ts-ignore */
|
|
4664
|
+
...(ngDevMode ? [{ debugName: "_presetConfigs" }] : /* istanbul ignore next */ []));
|
|
4665
|
+
_isCleared = signal(false, /* @ts-ignore */
|
|
4666
|
+
...(ngDevMode ? [{ debugName: "_isCleared" }] : /* istanbul ignore next */ []));
|
|
4667
|
+
_isTimeInputFocused = signal(false, /* @ts-ignore */
|
|
4668
|
+
...(ngDevMode ? [{ debugName: "_isTimeInputFocused" }] : /* istanbul ignore next */ []));
|
|
4652
4669
|
// MARK: Subscription management
|
|
4653
4670
|
_sub = cleanSubscription();
|
|
4654
4671
|
_valueSub = cleanSubscription();
|
|
@@ -4676,7 +4693,8 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4676
4693
|
fieldLabelSignal = computed(() => {
|
|
4677
4694
|
const l = this.label();
|
|
4678
4695
|
return typeof l === 'string' && l ? l : undefined;
|
|
4679
|
-
},
|
|
4696
|
+
}, /* @ts-ignore */
|
|
4697
|
+
...(ngDevMode ? [{ debugName: "fieldLabelSignal" }] : /* istanbul ignore next */ []));
|
|
4680
4698
|
isRequiredSignal = computed(() => {
|
|
4681
4699
|
let required = false;
|
|
4682
4700
|
try {
|
|
@@ -4687,18 +4705,24 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4687
4705
|
required = false;
|
|
4688
4706
|
}
|
|
4689
4707
|
return required;
|
|
4690
|
-
},
|
|
4691
|
-
|
|
4708
|
+
}, /* @ts-ignore */
|
|
4709
|
+
...(ngDevMode ? [{ debugName: "isRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
4710
|
+
isDateRequiredSignal = computed(() => this.isRequiredSignal(), /* @ts-ignore */
|
|
4711
|
+
...(ngDevMode ? [{ debugName: "isDateRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
4692
4712
|
isTimeRequiredSignal = computed(() => {
|
|
4693
4713
|
const timeMode = this.timeModeSignal();
|
|
4694
4714
|
return this.isRequiredSignal() && timeMode === DbxDateTimeFieldTimeMode.REQUIRED;
|
|
4695
|
-
},
|
|
4715
|
+
}, /* @ts-ignore */
|
|
4716
|
+
...(ngDevMode ? [{ debugName: "isTimeRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
4696
4717
|
descriptionSignal = computed(() => {
|
|
4697
4718
|
const h = this.props()?.hint;
|
|
4698
4719
|
return typeof h === 'string' ? h : undefined;
|
|
4699
|
-
},
|
|
4700
|
-
|
|
4701
|
-
|
|
4720
|
+
}, /* @ts-ignore */
|
|
4721
|
+
...(ngDevMode ? [{ debugName: "descriptionSignal" }] : /* istanbul ignore next */ []));
|
|
4722
|
+
appearanceSignal = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
|
|
4723
|
+
...(ngDevMode ? [{ debugName: "appearanceSignal" }] : /* istanbul ignore next */ []));
|
|
4724
|
+
valueModeSignal = computed(() => this.props()?.valueMode ?? DbxDateTimeValueMode.DATE, /* @ts-ignore */
|
|
4725
|
+
...(ngDevMode ? [{ debugName: "valueModeSignal" }] : /* istanbul ignore next */ []));
|
|
4702
4726
|
timeModeSignal = computed(() => {
|
|
4703
4727
|
const p = this.props();
|
|
4704
4728
|
if (this.valueModeSignal() === DbxDateTimeValueMode.DAY_STRING)
|
|
@@ -4708,43 +4732,64 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4708
4732
|
if (p?.timeMode)
|
|
4709
4733
|
return p.timeMode;
|
|
4710
4734
|
return DbxDateTimeFieldTimeMode.REQUIRED;
|
|
4711
|
-
},
|
|
4735
|
+
}, /* @ts-ignore */
|
|
4736
|
+
...(ngDevMode ? [{ debugName: "timeModeSignal" }] : /* istanbul ignore next */ []));
|
|
4712
4737
|
isTimeOnlySignal = computed(() => {
|
|
4713
4738
|
const props = this.props();
|
|
4714
4739
|
return this.valueModeSignal() === DbxDateTimeValueMode.MINUTE_OF_DAY || props?.timeOnly === true;
|
|
4715
|
-
},
|
|
4716
|
-
|
|
4717
|
-
|
|
4718
|
-
|
|
4740
|
+
}, /* @ts-ignore */
|
|
4741
|
+
...(ngDevMode ? [{ debugName: "isTimeOnlySignal" }] : /* istanbul ignore next */ []));
|
|
4742
|
+
isDateOnlySignal = computed(() => this.timeModeSignal() === DbxDateTimeFieldTimeMode.NONE, /* @ts-ignore */
|
|
4743
|
+
...(ngDevMode ? [{ debugName: "isDateOnlySignal" }] : /* istanbul ignore next */ []));
|
|
4744
|
+
isFullDaySignal = computed(() => this._fullDay(), /* @ts-ignore */
|
|
4745
|
+
...(ngDevMode ? [{ debugName: "isFullDaySignal" }] : /* istanbul ignore next */ []));
|
|
4746
|
+
showDateInputSignal = computed(() => !this.isTimeOnlySignal(), /* @ts-ignore */
|
|
4747
|
+
...(ngDevMode ? [{ debugName: "showDateInputSignal" }] : /* istanbul ignore next */ []));
|
|
4719
4748
|
showTimeInputSignal = computed(() => {
|
|
4720
4749
|
const timeMode = this.timeModeSignal();
|
|
4721
4750
|
return !this._fullDay() && timeMode !== DbxDateTimeFieldTimeMode.NONE;
|
|
4722
|
-
},
|
|
4751
|
+
}, /* @ts-ignore */
|
|
4752
|
+
...(ngDevMode ? [{ debugName: "showTimeInputSignal" }] : /* istanbul ignore next */ []));
|
|
4723
4753
|
showAddTimeButtonSignal = computed(() => {
|
|
4724
4754
|
const timeMode = this.timeModeSignal();
|
|
4725
4755
|
return !this.showTimeInputSignal() && timeMode === DbxDateTimeFieldTimeMode.OPTIONAL;
|
|
4726
|
-
},
|
|
4727
|
-
|
|
4728
|
-
|
|
4729
|
-
|
|
4730
|
-
|
|
4731
|
-
|
|
4732
|
-
|
|
4733
|
-
|
|
4734
|
-
|
|
4735
|
-
|
|
4736
|
-
|
|
4756
|
+
}, /* @ts-ignore */
|
|
4757
|
+
...(ngDevMode ? [{ debugName: "showAddTimeButtonSignal" }] : /* istanbul ignore next */ []));
|
|
4758
|
+
dateLabelSignal = computed(() => this.props()?.dateLabel ?? 'Date', /* @ts-ignore */
|
|
4759
|
+
...(ngDevMode ? [{ debugName: "dateLabelSignal" }] : /* istanbul ignore next */ []));
|
|
4760
|
+
timeLabelSignal = computed(() => this.props()?.timeLabel ?? 'Time', /* @ts-ignore */
|
|
4761
|
+
...(ngDevMode ? [{ debugName: "timeLabelSignal" }] : /* istanbul ignore next */ []));
|
|
4762
|
+
allDayLabelSignal = computed(() => this.props()?.allDayLabel ?? 'All Day', /* @ts-ignore */
|
|
4763
|
+
...(ngDevMode ? [{ debugName: "allDayLabelSignal" }] : /* istanbul ignore next */ []));
|
|
4764
|
+
atTimeLabelSignal = computed(() => this.props()?.atTimeLabel ?? 'At', /* @ts-ignore */
|
|
4765
|
+
...(ngDevMode ? [{ debugName: "atTimeLabelSignal" }] : /* istanbul ignore next */ []));
|
|
4766
|
+
hideDateHintSignal = computed(() => this.props()?.hideDateHint ?? false, /* @ts-ignore */
|
|
4767
|
+
...(ngDevMode ? [{ debugName: "hideDateHintSignal" }] : /* istanbul ignore next */ []));
|
|
4768
|
+
hideDatePickerSignal = computed(() => this.props()?.hideDatePicker ?? false, /* @ts-ignore */
|
|
4769
|
+
...(ngDevMode ? [{ debugName: "hideDatePickerSignal" }] : /* istanbul ignore next */ []));
|
|
4770
|
+
showTimezoneSignal = computed(() => this.props()?.showTimezone ?? true, /* @ts-ignore */
|
|
4771
|
+
...(ngDevMode ? [{ debugName: "showTimezoneSignal" }] : /* istanbul ignore next */ []));
|
|
4772
|
+
showClearButtonSignal = computed(() => this.props()?.showClearButton !== false, /* @ts-ignore */
|
|
4773
|
+
...(ngDevMode ? [{ debugName: "showClearButtonSignal" }] : /* istanbul ignore next */ []));
|
|
4774
|
+
minuteStepSignal = computed(() => this.props()?.minuteStep ?? 5, /* @ts-ignore */
|
|
4775
|
+
...(ngDevMode ? [{ debugName: "minuteStepSignal" }] : /* istanbul ignore next */ []));
|
|
4776
|
+
alwaysShowDateInputSignal = computed(() => this.props()?.alwaysShowDateInput ?? true, /* @ts-ignore */
|
|
4777
|
+
...(ngDevMode ? [{ debugName: "alwaysShowDateInputSignal" }] : /* istanbul ignore next */ []));
|
|
4737
4778
|
autofillDateWhenTimeIsPickedSignal = computed(() => {
|
|
4738
4779
|
const alwaysShowDateInput = this.alwaysShowDateInputSignal();
|
|
4739
4780
|
return this.props()?.autofillDateWhenTimeIsPicked ?? alwaysShowDateInput === false;
|
|
4740
|
-
},
|
|
4741
|
-
|
|
4781
|
+
}, /* @ts-ignore */
|
|
4782
|
+
...(ngDevMode ? [{ debugName: "autofillDateWhenTimeIsPickedSignal" }] : /* istanbul ignore next */ []));
|
|
4783
|
+
openOnInputClickSignal = computed(() => this.props()?.openOnInputClick ?? 'picker', /* @ts-ignore */
|
|
4784
|
+
...(ngDevMode ? [{ debugName: "openOnInputClickSignal" }] : /* istanbul ignore next */ []));
|
|
4742
4785
|
// MARK: Timezone signals
|
|
4743
|
-
resolvedTimezoneSignal = computed(() => this._timezone() ?? guessCurrentTimezone(),
|
|
4786
|
+
resolvedTimezoneSignal = computed(() => this._timezone() ?? guessCurrentTimezone(), /* @ts-ignore */
|
|
4787
|
+
...(ngDevMode ? [{ debugName: "resolvedTimezoneSignal" }] : /* istanbul ignore next */ []));
|
|
4744
4788
|
timezoneInstanceSignal = computed(() => {
|
|
4745
4789
|
const tz = this.resolvedTimezoneSignal();
|
|
4746
4790
|
return tz ? dateTimezoneUtcNormal({ timezone: tz }) : undefined;
|
|
4747
|
-
},
|
|
4791
|
+
}, /* @ts-ignore */
|
|
4792
|
+
...(ngDevMode ? [{ debugName: "timezoneInstanceSignal" }] : /* istanbul ignore next */ []));
|
|
4748
4793
|
// MARK: Field value reading
|
|
4749
4794
|
// FieldTree<unknown> is callable — calling it returns FieldState which has .value, .disabled, etc.
|
|
4750
4795
|
// We call field()() to first unwrap the InputSignal (→ FieldTree), then call the FieldTree (→ FieldState).
|
|
@@ -4758,7 +4803,8 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4758
4803
|
// Field tree not yet initialized — fall through to undefined
|
|
4759
4804
|
}
|
|
4760
4805
|
return result;
|
|
4761
|
-
},
|
|
4806
|
+
}, /* @ts-ignore */
|
|
4807
|
+
...(ngDevMode ? [{ debugName: "fieldValueSignal" }] : /* istanbul ignore next */ []));
|
|
4762
4808
|
isDisabled = dbxForgeFieldDisabled();
|
|
4763
4809
|
// MARK: Observable pipelines
|
|
4764
4810
|
// Parse field value to system timezone Date
|
|
@@ -4925,7 +4971,8 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4925
4971
|
}
|
|
4926
4972
|
}
|
|
4927
4973
|
return result;
|
|
4928
|
-
},
|
|
4974
|
+
}, /* @ts-ignore */
|
|
4975
|
+
...(ngDevMode ? [{ debugName: "dateValueSignal" }] : /* istanbul ignore next */ []));
|
|
4929
4976
|
displayValueSignal = toSignal(this.displayValue$);
|
|
4930
4977
|
pickerFilterSignal = toSignal(this.pickerFilter$, { initialValue: () => true });
|
|
4931
4978
|
dateInputMinSignal = toSignal(this.dateInputMin$, { initialValue: null });
|
|
@@ -4944,12 +4991,17 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4944
4991
|
const isOptional = this.timeModeSignal() === DbxDateTimeFieldTimeMode.OPTIONAL;
|
|
4945
4992
|
const hasPresets = Boolean(this.presetsSignal()?.length);
|
|
4946
4993
|
return disabled || (!isOptional && !hasPresets);
|
|
4947
|
-
},
|
|
4994
|
+
}, /* @ts-ignore */
|
|
4995
|
+
...(ngDevMode ? [{ debugName: "isTimeMenuDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
4948
4996
|
// ARIA
|
|
4949
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
4950
|
-
|
|
4951
|
-
|
|
4952
|
-
|
|
4997
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
4998
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
4999
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
5000
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
5001
|
+
ariaInvalidSignal = computed(() => (this.hasErrorSignal() ? 'true' : null), /* @ts-ignore */
|
|
5002
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
5003
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
5004
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
4953
5005
|
ariaDescribedBySignal = computed(() => {
|
|
4954
5006
|
const errorId = this.errorIdSignal();
|
|
4955
5007
|
const props = this.props();
|
|
@@ -4962,7 +5014,8 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
4962
5014
|
result = hintId;
|
|
4963
5015
|
}
|
|
4964
5016
|
return result;
|
|
4965
|
-
},
|
|
5017
|
+
}, /* @ts-ignore */
|
|
5018
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
4966
5019
|
constructor() {
|
|
4967
5020
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });
|
|
4968
5021
|
// Initialize fullDay from timeMode
|
|
@@ -5279,14 +5332,14 @@ class DbxForgeDateTimeFieldComponent {
|
|
|
5279
5332
|
// Silently handle if sibling field is not writable
|
|
5280
5333
|
}
|
|
5281
5334
|
}
|
|
5282
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5283
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "21.2.11", type: DbxForgeDateTimeFieldComponent, isStandalone: true, selector: "dbx-forge-datetime-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()" } }, ngImport: i0, template: "<div class=\"dbx-forge-datetime-field-wrapper\">\n <!-- Field Label -->\n @if (fieldLabelSignal()) {\n <span class=\"dbx-forge-field-label\">\n {{ fieldLabelSignal() }}\n @if (isRequiredSignal()) {\n <span class=\"dbx-forge-required-marker\">*</span>\n }\n </span>\n }\n\n <!-- Date + Time row -->\n <div class=\"dbx-forge-datetime-field dbx-forge-datetime-inputs\">\n <!-- Date Input -->\n @if (resolvedShowDateInputSignal()) {\n <div class=\"dbx-forge-datetime-col\" [class.dbx-forge-datetime-col-full]=\"isDateOnlySignal()\">\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ dateLabelSignal() }}</mat-label>\n <input matInput [disabled]=\"isDisabledSignal()\" [required]=\"isDateRequiredSignal()\" [min]=\"dateInputMinSignal()\" [max]=\"dateInputMaxSignal()\" [matDatepicker]=\"picker\" [matDatepickerFilter]=\"pickerFilterSignal()\" (dateChange)=\"onDatePicked($event)\" [value]=\"dateValueSignal()\" (click)=\"onDateInputClick(picker)\" (keydown)=\"onDateKeydown($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n @if (!hideDatePickerSignal()) {\n <button matPrefix mat-icon-button (click)=\"picker.open()\" [disabled]=\"isDisabledSignal()\" aria-label=\"Open date picker\">\n <mat-icon aria-hidden=\"true\">calendar_today</mat-icon>\n </button>\n }\n <mat-datepicker #picker></mat-datepicker>\n @if (resolvedShowClearButtonSignal()) {\n <button matSuffix mat-icon-button aria-label=\"Clear date and time\" [disabled]=\"isDisabledSignal()\" (click)=\"clearValue()\">\n <mat-icon aria-hidden=\"true\">clear</mat-icon>\n </button>\n }\n @if (!showTimeInputSignal()) {\n <span matTextSuffix>\n <ng-container [ngTemplateOutlet]=\"tzSuffix\"></ng-container>\n </span>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- Time Input / Add Time Button -->\n @if (showTimeInputSignal() || showAddTimeButtonSignal()) {\n <div class=\"dbx-forge-datetime-col\">\n @if (showTimeInputSignal()) {\n <mat-menu #timemenu=\"matMenu\">\n @if (timeModeSignal() === 'optional') {\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n }\n @for (preset of presetsSignal(); track $index) {\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n }\n </mat-menu>\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ timeLabelSignal() }}</mat-label>\n <input matInput [errorStateMatcher]=\"timeErrorStateMatcher\" [required]=\"isTimeRequiredSignal()\" [formControl]=\"timeCtrl\" (focus)=\"onTimeFocus()\" (focusout)=\"onTimeBlur()\" (keydown)=\"onTimeKeydown($event)\" />\n <button matPrefix mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"Open time presets\" [disabled]=\"isTimeMenuDisabledSignal()\">\n <mat-icon aria-hidden=\"true\">timer</mat-icon>\n </button>\n <span matTextSuffix>\n <ng-container [ngTemplateOutlet]=\"tzSuffix\"></ng-container>\n </span>\n @if (timeCtrl.hasError('pattern')) {\n <mat-error>The input time is not recognizable.</mat-error>\n }\n </mat-form-field>\n }\n @if (showAddTimeButtonSignal()) {\n <div class=\"dbx-forge-add-time-wrapper\">\n <button mat-button (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Date Hint / Error -->\n @if (hasErrorSignal()) {\n @if (currentErrorMessageSignal()) {\n <mat-error class=\"dbx-forge-datetime-error\" [id]=\"errorIdSignal()\">{{ currentErrorMessageSignal() }}</mat-error>\n }\n } @else if (!hideDateHintSignal()) {\n <div class=\"dbx-forge-datetime-hint\" [id]=\"hintIdSignal()\">\n @if (!hasValueSignal()) {\n <span class=\"dbx-small dbx-hint\">No date/time set</span>\n } @else if (displayValueSignal(); as dv) {\n @if (fullDaySignal()) {\n <small>\n <b class=\"dbx-ok\">{{ allDayLabelSignal() }}</b>\n {{ dv | date: 'fullDate' }} {{ tzAbbreviationSignal() }} ({{ dv | dateDistance }})\n </small>\n } @else {\n <small>\n <b class=\"dbx-ok\">{{ atTimeLabelSignal() }}</b>\n {{ dv | date: 'medium' }} {{ tzAbbreviationSignal() }} ({{ dv | timeDistance }})\n </small>\n }\n }\n </div>\n }\n\n <!-- Description -->\n @if (descriptionSignal()) {\n <p class=\"dbx-hint dbx-forge-datetime-desc\">{{ descriptionSignal() }}</p>\n }\n</div>\n\n<!-- Timezone Suffix Template -->\n<ng-template #tzSuffix>\n @if (showTimezoneSignal()) {\n <span class=\"dbx-forge-datetime-timezone dbx-faint\">{{ tzAbbreviationSignal() }}</span>\n }\n</ng-template>\n", styles: [".dbx-forge-datetime-field-wrapper{width:100%}.dbx-forge-datetime-inputs{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;width:100%}.dbx-forge-datetime-col{flex:1 1 0%;min-width:180px}.dbx-forge-datetime-col-full{flex:1 1 100%}.dbx-forge-datetime-col-field{width:100%}.dbx-forge-field-label{font-weight:500}.dbx-forge-required-marker{color:var(--mat-sys-error, red)}.dbx-forge-datetime-desc{font-size:12px;margin-top:0}.dbx-forge-add-time-wrapper{display:flex;align-items:center;min-height:56px}.dbx-forge-datetime-timezone{padding:0 6px;pointer-events:none}.dbx-forge-datetime-hint,.dbx-forge-datetime-error{padding:0 2px}@media(max-width:599px){.dbx-forge-datetime-inputs{flex-direction:column;align-items:stretch}.dbx-forge-datetime-col{flex:1 1 auto;width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.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: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.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: MatDividerModule }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DateDistancePipe, name: "dateDistance" }, { kind: "pipe", type: TimeDistancePipe, name: "timeDistance" }, { kind: "pipe", type: GetValuePipe, name: "getValue" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
5335
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeDateTimeFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5336
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeDateTimeFieldComponent, isStandalone: true, selector: "dbx-forge-datetime-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()" } }, ngImport: i0, template: "<div class=\"dbx-forge-datetime-field-wrapper\">\n <!-- Field Label -->\n @if (fieldLabelSignal()) {\n <span class=\"dbx-forge-field-label\">\n {{ fieldLabelSignal() }}\n @if (isRequiredSignal()) {\n <span class=\"dbx-forge-required-marker\">*</span>\n }\n </span>\n }\n\n <!-- Date + Time row -->\n <div class=\"dbx-forge-datetime-field dbx-forge-datetime-inputs\">\n <!-- Date Input -->\n @if (resolvedShowDateInputSignal()) {\n <div class=\"dbx-forge-datetime-col\" [class.dbx-forge-datetime-col-full]=\"isDateOnlySignal()\">\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ dateLabelSignal() }}</mat-label>\n <input\n matInput\n [disabled]=\"isDisabledSignal()\"\n [required]=\"isDateRequiredSignal()\"\n [min]=\"dateInputMinSignal()\"\n [max]=\"dateInputMaxSignal()\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"pickerFilterSignal()\"\n (dateChange)=\"onDatePicked($event)\"\n [value]=\"dateValueSignal()\"\n (click)=\"onDateInputClick(picker)\"\n (keydown)=\"onDateKeydown($event)\"\n [attr.aria-invalid]=\"ariaInvalidSignal()\"\n [attr.aria-required]=\"ariaRequiredSignal()\"\n [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n @if (!hideDatePickerSignal()) {\n <button matPrefix mat-icon-button (click)=\"picker.open()\" [disabled]=\"isDisabledSignal()\" aria-label=\"Open date picker\">\n <mat-icon aria-hidden=\"true\">calendar_today</mat-icon>\n </button>\n }\n <mat-datepicker #picker></mat-datepicker>\n @if (resolvedShowClearButtonSignal()) {\n <button matSuffix mat-icon-button aria-label=\"Clear date and time\" [disabled]=\"isDisabledSignal()\" (click)=\"clearValue()\">\n <mat-icon aria-hidden=\"true\">clear</mat-icon>\n </button>\n }\n @if (!showTimeInputSignal()) {\n <span matTextSuffix>\n <ng-container [ngTemplateOutlet]=\"tzSuffix\"></ng-container>\n </span>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- Time Input / Add Time Button -->\n @if (showTimeInputSignal() || showAddTimeButtonSignal()) {\n <div class=\"dbx-forge-datetime-col\">\n @if (showTimeInputSignal()) {\n <mat-menu #timemenu=\"matMenu\">\n @if (timeModeSignal() === 'optional') {\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n }\n @for (preset of presetsSignal(); track $index) {\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n }\n </mat-menu>\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ timeLabelSignal() }}</mat-label>\n <input matInput [errorStateMatcher]=\"timeErrorStateMatcher\" [required]=\"isTimeRequiredSignal()\" [formControl]=\"timeCtrl\" (focus)=\"onTimeFocus()\" (focusout)=\"onTimeBlur()\" (keydown)=\"onTimeKeydown($event)\" />\n <button matPrefix mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"Open time presets\" [disabled]=\"isTimeMenuDisabledSignal()\">\n <mat-icon aria-hidden=\"true\">timer</mat-icon>\n </button>\n <span matTextSuffix>\n <ng-container [ngTemplateOutlet]=\"tzSuffix\"></ng-container>\n </span>\n @if (timeCtrl.hasError('pattern')) {\n <mat-error>The input time is not recognizable.</mat-error>\n }\n </mat-form-field>\n }\n @if (showAddTimeButtonSignal()) {\n <div class=\"dbx-forge-add-time-wrapper\">\n <button mat-button (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Date Hint / Error -->\n @if (hasErrorSignal()) {\n @if (currentErrorMessageSignal()) {\n <mat-error class=\"dbx-forge-datetime-error\" [id]=\"errorIdSignal()\">{{ currentErrorMessageSignal() }}</mat-error>\n }\n } @else if (!hideDateHintSignal()) {\n <div class=\"dbx-forge-datetime-hint\" [id]=\"hintIdSignal()\">\n @if (!hasValueSignal()) {\n <span class=\"dbx-small dbx-hint\">No date/time set</span>\n } @else if (displayValueSignal(); as dv) {\n @if (fullDaySignal()) {\n <small>\n <b class=\"dbx-ok\">{{ allDayLabelSignal() }}</b>\n {{ dv | date: 'fullDate' }} {{ tzAbbreviationSignal() }} ({{ dv | dateDistance }})\n </small>\n } @else {\n <small>\n <b class=\"dbx-ok\">{{ atTimeLabelSignal() }}</b>\n {{ dv | date: 'medium' }} {{ tzAbbreviationSignal() }} ({{ dv | timeDistance }})\n </small>\n }\n }\n </div>\n }\n\n <!-- Description -->\n @if (descriptionSignal()) {\n <p class=\"dbx-hint dbx-forge-datetime-desc\">{{ descriptionSignal() }}</p>\n }\n</div>\n\n<!-- Timezone Suffix Template -->\n<ng-template #tzSuffix>\n @if (showTimezoneSignal()) {\n <span class=\"dbx-forge-datetime-timezone dbx-faint\">{{ tzAbbreviationSignal() }}</span>\n }\n</ng-template>\n", styles: [".dbx-forge-datetime-field-wrapper{width:100%}.dbx-forge-datetime-inputs{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;width:100%}.dbx-forge-datetime-col{flex:1 1 0%;min-width:180px}.dbx-forge-datetime-col-full{flex:1 1 100%}.dbx-forge-datetime-col-field{width:100%}.dbx-forge-field-label{font-weight:500}.dbx-forge-required-marker{color:var(--mat-sys-error, red)}.dbx-forge-datetime-desc{font-size:12px;margin-top:0}.dbx-forge-add-time-wrapper{display:flex;align-items:center;min-height:56px}.dbx-forge-datetime-timezone{padding:0 6px;pointer-events:none}.dbx-forge-datetime-hint,.dbx-forge-datetime-error{padding:0 2px}@media(max-width:599px){.dbx-forge-datetime-inputs{flex-direction:column;align-items:stretch}.dbx-forge-datetime-col{flex:1 1 auto;width:100%}}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$2.MatPrefix, selector: "[matPrefix], [matIconPrefix], [matTextPrefix]", inputs: ["matTextPrefix"] }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.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: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatMenuModule }, { kind: "component", type: i6.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: i6.MatMenuItem, selector: "[mat-menu-item]", inputs: ["role", "disabled", "disableRipple"], exportAs: ["matMenuItem"] }, { kind: "directive", type: i6.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: MatDividerModule }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.RequiredValidator, selector: ":not([type=checkbox])[required][formControlName],:not([type=checkbox])[required][formControl],:not([type=checkbox])[required][ngModel]", inputs: ["required"] }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "pipe", type: DatePipe, name: "date" }, { kind: "pipe", type: DateDistancePipe, name: "dateDistance" }, { kind: "pipe", type: TimeDistancePipe, name: "timeDistance" }, { kind: "pipe", type: GetValuePipe, name: "getValue" }] });
|
|
5284
5337
|
}
|
|
5285
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5338
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeDateTimeFieldComponent, decorators: [{
|
|
5286
5339
|
type: Component,
|
|
5287
|
-
args: [{ selector: 'dbx-forge-datetime-field',
|
|
5340
|
+
args: [{ selector: 'dbx-forge-datetime-field', imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, MatButtonModule, MatIconModule, MatMenuModule, MatDividerModule, ReactiveFormsModule, FormsModule, NgTemplateOutlet, DatePipe, DateDistancePipe, TimeDistancePipe, GetValuePipe], host: {
|
|
5288
5341
|
'[class]': 'className()'
|
|
5289
|
-
}, template: "<div class=\"dbx-forge-datetime-field-wrapper\">\n <!-- Field Label -->\n @if (fieldLabelSignal()) {\n <span class=\"dbx-forge-field-label\">\n {{ fieldLabelSignal() }}\n @if (isRequiredSignal()) {\n <span class=\"dbx-forge-required-marker\">*</span>\n }\n </span>\n }\n\n <!-- Date + Time row -->\n <div class=\"dbx-forge-datetime-field dbx-forge-datetime-inputs\">\n <!-- Date Input -->\n @if (resolvedShowDateInputSignal()) {\n <div class=\"dbx-forge-datetime-col\" [class.dbx-forge-datetime-col-full]=\"isDateOnlySignal()\">\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ dateLabelSignal() }}</mat-label>\n <input
|
|
5342
|
+
}, template: "<div class=\"dbx-forge-datetime-field-wrapper\">\n <!-- Field Label -->\n @if (fieldLabelSignal()) {\n <span class=\"dbx-forge-field-label\">\n {{ fieldLabelSignal() }}\n @if (isRequiredSignal()) {\n <span class=\"dbx-forge-required-marker\">*</span>\n }\n </span>\n }\n\n <!-- Date + Time row -->\n <div class=\"dbx-forge-datetime-field dbx-forge-datetime-inputs\">\n <!-- Date Input -->\n @if (resolvedShowDateInputSignal()) {\n <div class=\"dbx-forge-datetime-col\" [class.dbx-forge-datetime-col-full]=\"isDateOnlySignal()\">\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ dateLabelSignal() }}</mat-label>\n <input\n matInput\n [disabled]=\"isDisabledSignal()\"\n [required]=\"isDateRequiredSignal()\"\n [min]=\"dateInputMinSignal()\"\n [max]=\"dateInputMaxSignal()\"\n [matDatepicker]=\"picker\"\n [matDatepickerFilter]=\"pickerFilterSignal()\"\n (dateChange)=\"onDatePicked($event)\"\n [value]=\"dateValueSignal()\"\n (click)=\"onDateInputClick(picker)\"\n (keydown)=\"onDateKeydown($event)\"\n [attr.aria-invalid]=\"ariaInvalidSignal()\"\n [attr.aria-required]=\"ariaRequiredSignal()\"\n [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n @if (!hideDatePickerSignal()) {\n <button matPrefix mat-icon-button (click)=\"picker.open()\" [disabled]=\"isDisabledSignal()\" aria-label=\"Open date picker\">\n <mat-icon aria-hidden=\"true\">calendar_today</mat-icon>\n </button>\n }\n <mat-datepicker #picker></mat-datepicker>\n @if (resolvedShowClearButtonSignal()) {\n <button matSuffix mat-icon-button aria-label=\"Clear date and time\" [disabled]=\"isDisabledSignal()\" (click)=\"clearValue()\">\n <mat-icon aria-hidden=\"true\">clear</mat-icon>\n </button>\n }\n @if (!showTimeInputSignal()) {\n <span matTextSuffix>\n <ng-container [ngTemplateOutlet]=\"tzSuffix\"></ng-container>\n </span>\n }\n </mat-form-field>\n </div>\n }\n\n <!-- Time Input / Add Time Button -->\n @if (showTimeInputSignal() || showAddTimeButtonSignal()) {\n <div class=\"dbx-forge-datetime-col\">\n @if (showTimeInputSignal()) {\n <mat-menu #timemenu=\"matMenu\">\n @if (timeModeSignal() === 'optional') {\n <button mat-menu-item (click)=\"removeTime()\">\n <span>Remove Time</span>\n </button>\n <mat-divider></mat-divider>\n }\n @for (preset of presetsSignal(); track $index) {\n <button mat-menu-item (click)=\"selectPreset(preset)\">{{ preset.label | getValue }}</button>\n }\n </mat-menu>\n <mat-form-field [appearance]=\"appearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-datetime-col-field\">\n <mat-label>{{ timeLabelSignal() }}</mat-label>\n <input matInput [errorStateMatcher]=\"timeErrorStateMatcher\" [required]=\"isTimeRequiredSignal()\" [formControl]=\"timeCtrl\" (focus)=\"onTimeFocus()\" (focusout)=\"onTimeBlur()\" (keydown)=\"onTimeKeydown($event)\" />\n <button matPrefix mat-icon-button [matMenuTriggerFor]=\"timemenu\" aria-label=\"Open time presets\" [disabled]=\"isTimeMenuDisabledSignal()\">\n <mat-icon aria-hidden=\"true\">timer</mat-icon>\n </button>\n <span matTextSuffix>\n <ng-container [ngTemplateOutlet]=\"tzSuffix\"></ng-container>\n </span>\n @if (timeCtrl.hasError('pattern')) {\n <mat-error>The input time is not recognizable.</mat-error>\n }\n </mat-form-field>\n }\n @if (showAddTimeButtonSignal()) {\n <div class=\"dbx-forge-add-time-wrapper\">\n <button mat-button (click)=\"addTime()\">\n <mat-icon>timer</mat-icon>\n Add Time\n </button>\n </div>\n }\n </div>\n }\n </div>\n\n <!-- Date Hint / Error -->\n @if (hasErrorSignal()) {\n @if (currentErrorMessageSignal()) {\n <mat-error class=\"dbx-forge-datetime-error\" [id]=\"errorIdSignal()\">{{ currentErrorMessageSignal() }}</mat-error>\n }\n } @else if (!hideDateHintSignal()) {\n <div class=\"dbx-forge-datetime-hint\" [id]=\"hintIdSignal()\">\n @if (!hasValueSignal()) {\n <span class=\"dbx-small dbx-hint\">No date/time set</span>\n } @else if (displayValueSignal(); as dv) {\n @if (fullDaySignal()) {\n <small>\n <b class=\"dbx-ok\">{{ allDayLabelSignal() }}</b>\n {{ dv | date: 'fullDate' }} {{ tzAbbreviationSignal() }} ({{ dv | dateDistance }})\n </small>\n } @else {\n <small>\n <b class=\"dbx-ok\">{{ atTimeLabelSignal() }}</b>\n {{ dv | date: 'medium' }} {{ tzAbbreviationSignal() }} ({{ dv | timeDistance }})\n </small>\n }\n }\n </div>\n }\n\n <!-- Description -->\n @if (descriptionSignal()) {\n <p class=\"dbx-hint dbx-forge-datetime-desc\">{{ descriptionSignal() }}</p>\n }\n</div>\n\n<!-- Timezone Suffix Template -->\n<ng-template #tzSuffix>\n @if (showTimezoneSignal()) {\n <span class=\"dbx-forge-datetime-timezone dbx-faint\">{{ tzAbbreviationSignal() }}</span>\n }\n</ng-template>\n", styles: [".dbx-forge-datetime-field-wrapper{width:100%}.dbx-forge-datetime-inputs{display:flex;flex-wrap:wrap;gap:6px;align-items:flex-start;width:100%}.dbx-forge-datetime-col{flex:1 1 0%;min-width:180px}.dbx-forge-datetime-col-full{flex:1 1 100%}.dbx-forge-datetime-col-field{width:100%}.dbx-forge-field-label{font-weight:500}.dbx-forge-required-marker{color:var(--mat-sys-error, red)}.dbx-forge-datetime-desc{font-size:12px;margin-top:0}.dbx-forge-add-time-wrapper{display:flex;align-items:center;min-height:56px}.dbx-forge-datetime-timezone{padding:0 6px;pointer-events:none}.dbx-forge-datetime-hint,.dbx-forge-datetime-error{padding:0 2px}@media(max-width:599px){.dbx-forge-datetime-inputs{flex-direction:column;align-items:stretch}.dbx-forge-datetime-col{flex:1 1 auto;width:100%}}\n"] }]
|
|
5290
5343
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
5291
5344
|
// MARK: Mapper
|
|
5292
5345
|
/**
|
|
@@ -5334,16 +5387,26 @@ class DbxForgeDateRangeFieldComponent {
|
|
|
5334
5387
|
destroyRef = inject(DestroyRef);
|
|
5335
5388
|
elementRef = inject((ElementRef));
|
|
5336
5389
|
// Standard ng-forge value field inputs
|
|
5337
|
-
field = input.required(
|
|
5338
|
-
|
|
5339
|
-
|
|
5340
|
-
|
|
5341
|
-
|
|
5342
|
-
|
|
5343
|
-
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5390
|
+
field = input.required(/* @ts-ignore */
|
|
5391
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
5392
|
+
key = input.required(/* @ts-ignore */
|
|
5393
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
5394
|
+
label = input(/* @ts-ignore */
|
|
5395
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
5396
|
+
placeholder = input(/* @ts-ignore */
|
|
5397
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
5398
|
+
className = input('', /* @ts-ignore */
|
|
5399
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
5400
|
+
tabIndex = input(/* @ts-ignore */
|
|
5401
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
5402
|
+
props = input(/* @ts-ignore */
|
|
5403
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
5404
|
+
meta = input(/* @ts-ignore */
|
|
5405
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
5406
|
+
validationMessages = input(/* @ts-ignore */
|
|
5407
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
5408
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
5409
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
5347
5410
|
/**
|
|
5348
5411
|
* Internal FormControls for start and end dates and times.
|
|
5349
5412
|
*/
|
|
@@ -5352,27 +5415,38 @@ class DbxForgeDateRangeFieldComponent {
|
|
|
5352
5415
|
endDateCtrl = new FormControl(null);
|
|
5353
5416
|
endTimeCtrl = new FormControl('');
|
|
5354
5417
|
// Computed props
|
|
5355
|
-
startLabelSignal = computed(() => this.props()?.startLabel ?? 'Start',
|
|
5356
|
-
|
|
5357
|
-
|
|
5358
|
-
|
|
5418
|
+
startLabelSignal = computed(() => this.props()?.startLabel ?? 'Start', /* @ts-ignore */
|
|
5419
|
+
...(ngDevMode ? [{ debugName: "startLabelSignal" }] : /* istanbul ignore next */ []));
|
|
5420
|
+
endLabelSignal = computed(() => this.props()?.endLabel ?? 'End', /* @ts-ignore */
|
|
5421
|
+
...(ngDevMode ? [{ debugName: "endLabelSignal" }] : /* istanbul ignore next */ []));
|
|
5422
|
+
showTimeSignal = computed(() => this.props()?.showTime ?? false, /* @ts-ignore */
|
|
5423
|
+
...(ngDevMode ? [{ debugName: "showTimeSignal" }] : /* istanbul ignore next */ []));
|
|
5424
|
+
effectiveAppearanceSignal = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
|
|
5425
|
+
...(ngDevMode ? [{ debugName: "effectiveAppearanceSignal" }] : /* istanbul ignore next */ []));
|
|
5359
5426
|
minDateSignal = computed(() => {
|
|
5360
5427
|
const minDate = this.props()?.minDate;
|
|
5361
5428
|
return minDate ? safeToJsDate(minDate) : null;
|
|
5362
|
-
},
|
|
5429
|
+
}, /* @ts-ignore */
|
|
5430
|
+
...(ngDevMode ? [{ debugName: "minDateSignal" }] : /* istanbul ignore next */ []));
|
|
5363
5431
|
maxDateSignal = computed(() => {
|
|
5364
5432
|
const maxDate = this.props()?.maxDate;
|
|
5365
5433
|
return maxDate ? safeToJsDate(maxDate) : null;
|
|
5366
|
-
},
|
|
5434
|
+
}, /* @ts-ignore */
|
|
5435
|
+
...(ngDevMode ? [{ debugName: "maxDateSignal" }] : /* istanbul ignore next */ []));
|
|
5367
5436
|
// Error handling
|
|
5368
5437
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
5369
5438
|
showErrors = shouldShowErrors(this.field);
|
|
5370
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
5439
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
5440
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
5371
5441
|
// ARIA
|
|
5372
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
5373
|
-
|
|
5374
|
-
|
|
5375
|
-
|
|
5442
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
5443
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
5444
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
5445
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
5446
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
5447
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
5448
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
5449
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
5376
5450
|
ariaDescribedBySignal = computed(() => {
|
|
5377
5451
|
const errorId = this.errorIdSignal();
|
|
5378
5452
|
const hintId = this.hintIdSignal();
|
|
@@ -5381,7 +5455,8 @@ class DbxForgeDateRangeFieldComponent {
|
|
|
5381
5455
|
if (this.props()?.hint)
|
|
5382
5456
|
return hintId;
|
|
5383
5457
|
return null;
|
|
5384
|
-
},
|
|
5458
|
+
}, /* @ts-ignore */
|
|
5459
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
5385
5460
|
/**
|
|
5386
5461
|
* Flag to prevent feedback loops during sync.
|
|
5387
5462
|
*/
|
|
@@ -5483,12 +5558,12 @@ class DbxForgeDateRangeFieldComponent {
|
|
|
5483
5558
|
}
|
|
5484
5559
|
return result;
|
|
5485
5560
|
}
|
|
5486
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
5487
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
5561
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeDateRangeFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
5562
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeDateRangeFieldComponent, isStandalone: true, selector: "dbx-forge-daterange-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-forge-daterange-field\">\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-start\">\n <mat-label>{{ startLabelSignal() }}</mat-label>\n <input matInput [matDatepicker]=\"startPicker\" [formControl]=\"startDateCtrl\" [min]=\"minDateSignal()\" [max]=\"maxDateSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n <mat-datepicker-toggle matIconSuffix [for]=\"startPicker\"></mat-datepicker-toggle>\n <mat-datepicker #startPicker></mat-datepicker>\n </mat-form-field>\n @if (showTimeSignal()) {\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-start-time\">\n <mat-label>Start Time</mat-label>\n <input matInput type=\"time\" [formControl]=\"startTimeCtrl\" />\n </mat-form-field>\n }\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-end\">\n <mat-label>{{ endLabelSignal() }}</mat-label>\n <input matInput [matDatepicker]=\"endPicker\" [formControl]=\"endDateCtrl\" [min]=\"minDateSignal()\" [max]=\"maxDateSignal()\" />\n <mat-datepicker-toggle matIconSuffix [for]=\"endPicker\"></mat-datepicker-toggle>\n <mat-datepicker #endPicker></mat-datepicker>\n </mat-form-field>\n @if (showTimeSignal()) {\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-end-time\">\n <mat-label>End Time</mat-label>\n <input matInput type=\"time\" [formControl]=\"endTimeCtrl\" />\n </mat-form-field>\n }\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</div>\n", styles: [".dbx-forge-daterange-field{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}.dbx-forge-daterange-start,.dbx-forge-daterange-end{flex:1 1 auto;min-width:140px}.dbx-forge-daterange-start-time,.dbx-forge-daterange-end-time{flex:0 1 auto;min-width:100px}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: MatDatepickerModule }, { kind: "component", type: i3.MatDatepicker, selector: "mat-datepicker", exportAs: ["matDatepicker"] }, { kind: "directive", type: i3.MatDatepickerInput, selector: "input[matDatepicker]", inputs: ["matDatepicker", "min", "max", "matDatepickerFilter"], exportAs: ["matDatepickerInput"] }, { kind: "component", type: i3.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
5488
5563
|
}
|
|
5489
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
5564
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeDateRangeFieldComponent, decorators: [{
|
|
5490
5565
|
type: Component,
|
|
5491
|
-
args: [{ selector: 'dbx-forge-daterange-field',
|
|
5566
|
+
args: [{ selector: 'dbx-forge-daterange-field', imports: [MatFormFieldModule, MatInputModule, MatDatepickerModule, MatButtonModule, MatIconModule, ReactiveFormsModule, DynamicTextPipe, AsyncPipe], template: "<div class=\"dbx-forge-daterange-field\">\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-start\">\n <mat-label>{{ startLabelSignal() }}</mat-label>\n <input matInput [matDatepicker]=\"startPicker\" [formControl]=\"startDateCtrl\" [min]=\"minDateSignal()\" [max]=\"maxDateSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n <mat-datepicker-toggle matIconSuffix [for]=\"startPicker\"></mat-datepicker-toggle>\n <mat-datepicker #startPicker></mat-datepicker>\n </mat-form-field>\n @if (showTimeSignal()) {\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-start-time\">\n <mat-label>Start Time</mat-label>\n <input matInput type=\"time\" [formControl]=\"startTimeCtrl\" />\n </mat-form-field>\n }\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-end\">\n <mat-label>{{ endLabelSignal() }}</mat-label>\n <input matInput [matDatepicker]=\"endPicker\" [formControl]=\"endDateCtrl\" [min]=\"minDateSignal()\" [max]=\"maxDateSignal()\" />\n <mat-datepicker-toggle matIconSuffix [for]=\"endPicker\"></mat-datepicker-toggle>\n <mat-datepicker #endPicker></mat-datepicker>\n </mat-form-field>\n @if (showTimeSignal()) {\n <mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-daterange-end-time\">\n <mat-label>End Time</mat-label>\n <input matInput type=\"time\" [formControl]=\"endTimeCtrl\" />\n </mat-form-field>\n }\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</div>\n", styles: [".dbx-forge-daterange-field{display:flex;flex-wrap:wrap;gap:8px;align-items:flex-start}.dbx-forge-daterange-start,.dbx-forge-daterange-end{flex:1 1 auto;min-width:140px}.dbx-forge-daterange-start-time,.dbx-forge-daterange-end-time{flex:0 1 auto;min-width:100px}\n"] }]
|
|
5492
5567
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
5493
5568
|
// MARK: Mapper
|
|
5494
5569
|
/**
|
|
@@ -5566,23 +5641,36 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
5566
5641
|
destroyRef = inject(DestroyRef);
|
|
5567
5642
|
elementRef = inject((ElementRef));
|
|
5568
5643
|
// MARK: ng-forge ValueFieldComponent inputs
|
|
5569
|
-
field = input.required(
|
|
5570
|
-
|
|
5571
|
-
|
|
5572
|
-
|
|
5573
|
-
|
|
5574
|
-
|
|
5575
|
-
|
|
5576
|
-
|
|
5577
|
-
|
|
5578
|
-
|
|
5644
|
+
field = input.required(/* @ts-ignore */
|
|
5645
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
5646
|
+
key = input.required(/* @ts-ignore */
|
|
5647
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
5648
|
+
label = input(/* @ts-ignore */
|
|
5649
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
5650
|
+
placeholder = input(/* @ts-ignore */
|
|
5651
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
5652
|
+
className = input('', /* @ts-ignore */
|
|
5653
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
5654
|
+
tabIndex = input(/* @ts-ignore */
|
|
5655
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
5656
|
+
props = input(/* @ts-ignore */
|
|
5657
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
5658
|
+
meta = input(/* @ts-ignore */
|
|
5659
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
5660
|
+
validationMessages = input(/* @ts-ignore */
|
|
5661
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
5662
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
5663
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
5579
5664
|
// MARK: View children
|
|
5580
|
-
calendar = viewChild.required(MatCalendar
|
|
5665
|
+
calendar = viewChild.required(MatCalendar, /* @ts-ignore */
|
|
5666
|
+
...(ngDevMode ? [{ debugName: "calendar" }] : /* istanbul ignore next */ []));
|
|
5581
5667
|
startDateInputElement = viewChild('startDateInput', { ...(ngDevMode ? { debugName: "startDateInputElement" } : /* istanbul ignore next */ {}), read: ElementRef });
|
|
5582
5668
|
endDateInputElement = viewChild('endDateInput', { ...(ngDevMode ? { debugName: "endDateInputElement" } : /* istanbul ignore next */ {}), read: ElementRef });
|
|
5583
5669
|
// MARK: Internal signals
|
|
5584
|
-
currentDateRangeInputSignal = signal(undefined,
|
|
5585
|
-
|
|
5670
|
+
currentDateRangeInputSignal = signal(undefined, /* @ts-ignore */
|
|
5671
|
+
...(ngDevMode ? [{ debugName: "currentDateRangeInputSignal" }] : /* istanbul ignore next */ []));
|
|
5672
|
+
currentSelectionModeSignal = signal('single', /* @ts-ignore */
|
|
5673
|
+
...(ngDevMode ? [{ debugName: "currentSelectionModeSignal" }] : /* istanbul ignore next */ []));
|
|
5586
5674
|
// MARK: Subscription management
|
|
5587
5675
|
_sub = cleanSubscription();
|
|
5588
5676
|
_inputRangeFormSub = cleanSubscription();
|
|
@@ -5615,20 +5703,29 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
5615
5703
|
// Field tree not yet initialized — fall through to false
|
|
5616
5704
|
}
|
|
5617
5705
|
return result;
|
|
5618
|
-
},
|
|
5706
|
+
}, /* @ts-ignore */
|
|
5707
|
+
...(ngDevMode ? [{ debugName: "isRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
5619
5708
|
isDisabled = dbxForgeFieldDisabled();
|
|
5620
|
-
valueModeSignal = computed(() => this.props()?.valueMode ?? DbxDateTimeValueMode.DATE,
|
|
5621
|
-
|
|
5622
|
-
|
|
5709
|
+
valueModeSignal = computed(() => this.props()?.valueMode ?? DbxDateTimeValueMode.DATE, /* @ts-ignore */
|
|
5710
|
+
...(ngDevMode ? [{ debugName: "valueModeSignal" }] : /* istanbul ignore next */ []));
|
|
5711
|
+
showRangeInputSignal = computed(() => this.props()?.showRangeInput ?? true, /* @ts-ignore */
|
|
5712
|
+
...(ngDevMode ? [{ debugName: "showRangeInputSignal" }] : /* istanbul ignore next */ []));
|
|
5713
|
+
showTimezoneSignal = computed(() => this.props()?.showTimezone ?? true, /* @ts-ignore */
|
|
5714
|
+
...(ngDevMode ? [{ debugName: "showTimezoneSignal" }] : /* istanbul ignore next */ []));
|
|
5623
5715
|
// Error handling
|
|
5624
5716
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
5625
5717
|
showErrors = shouldShowErrors(this.field);
|
|
5626
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
5718
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
5719
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
5627
5720
|
// ARIA
|
|
5628
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
5629
|
-
|
|
5630
|
-
|
|
5631
|
-
|
|
5721
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
5722
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
5723
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
5724
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
5725
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
5726
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
5727
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
5728
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
5632
5729
|
ariaDescribedBySignal = computed(() => {
|
|
5633
5730
|
const errorId = this.errorIdSignal();
|
|
5634
5731
|
const props = this.props();
|
|
@@ -5641,7 +5738,8 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
5641
5738
|
result = hintId;
|
|
5642
5739
|
}
|
|
5643
5740
|
return result;
|
|
5644
|
-
},
|
|
5741
|
+
}, /* @ts-ignore */
|
|
5742
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
5645
5743
|
hasRequiredErrorSignal = computed(() => {
|
|
5646
5744
|
let result = false;
|
|
5647
5745
|
try {
|
|
@@ -5659,7 +5757,8 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
5659
5757
|
// Field tree not yet initialized — fall through to false
|
|
5660
5758
|
}
|
|
5661
5759
|
return result;
|
|
5662
|
-
},
|
|
5760
|
+
}, /* @ts-ignore */
|
|
5761
|
+
...(ngDevMode ? [{ debugName: "hasRequiredErrorSignal" }] : /* istanbul ignore next */ []));
|
|
5663
5762
|
// MARK: Field value reading
|
|
5664
5763
|
fieldValueSignal = computed(() => {
|
|
5665
5764
|
let result = undefined;
|
|
@@ -5671,7 +5770,8 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
5671
5770
|
// Field tree not yet initialized — fall through to undefined
|
|
5672
5771
|
}
|
|
5673
5772
|
return result;
|
|
5674
|
-
},
|
|
5773
|
+
}, /* @ts-ignore */
|
|
5774
|
+
...(ngDevMode ? [{ debugName: "fieldValueSignal" }] : /* istanbul ignore next */ []));
|
|
5675
5775
|
fieldValue$ = toObservable(this.fieldValueSignal);
|
|
5676
5776
|
// MARK: Observable pipelines
|
|
5677
5777
|
config$ = this._config.pipe(map((x) => x ?? of({})), switchMap((x) => x), distinctUntilChanged(), shareReplay(1));
|
|
@@ -5885,7 +5985,9 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
5885
5985
|
// The old switchMap pattern re-subscribed to dateRangeSelection (which has shareReplay(1))
|
|
5886
5986
|
// whenever the field value changed externally, causing the cached user selection to replay
|
|
5887
5987
|
// and overwrite the external value.
|
|
5888
|
-
this._sub.subscription = dateRangeSelection
|
|
5988
|
+
this._sub.subscription = dateRangeSelection
|
|
5989
|
+
.pipe(skipAllInitialMaybe(), withLatestFrom(this.valueInSystemTimezone$, this.timezoneInstance$.pipe(map((timezoneInstance) => fixedDateRangeOutputValueFactory(this.valueModeSignal(), timezoneInstance)))), throttleTime(TIME_OUTPUT_THROTTLE_TIME, undefined, { leading: false, trailing: true }))
|
|
5990
|
+
.subscribe(([rawValue, currentValue, valueFactory]) => {
|
|
5889
5991
|
const value = rawValue ? valueFactory(rawValue) : null;
|
|
5890
5992
|
const isSameRange = dbxDateRangeIsSameDateRangeFieldValue(value, currentValue);
|
|
5891
5993
|
if (!isSameRange) {
|
|
@@ -6019,17 +6121,17 @@ class DbxForgeFixedDateRangeFieldComponent {
|
|
|
6019
6121
|
// Field may not be ready
|
|
6020
6122
|
}
|
|
6021
6123
|
}
|
|
6022
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6023
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
6124
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFixedDateRangeFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6125
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeFixedDateRangeFieldComponent, isStandalone: true, selector: "dbx-forge-fixeddaterange-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, providers: [
|
|
6024
6126
|
{
|
|
6025
6127
|
provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
|
|
6026
6128
|
useClass: forwardRef(() => DbxForgeFixedDateRangeFieldSelectionStrategy)
|
|
6027
6129
|
}
|
|
6028
|
-
], viewQueries: [{ propertyName: "calendar", first: true, predicate: MatCalendar, descendants: true, isSignal: true }, { propertyName: "startDateInputElement", first: true, predicate: ["startDateInput"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "endDateInputElement", first: true, predicate: ["endDateInput"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div class=\"dbx-fixeddaterange-field\">\n <mat-calendar #calendarView [selected]=\"calendarSelectionSignal()\" [dateFilter]=\"pickerFilterSignal()\" [minDate]=\"minDateSignal()\" [maxDate]=\"maxDateSignal()\" (selectedChange)=\"selectedChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\"></mat-calendar>\n <mat-form-field class=\"dbx-fixeddaterange-field-input\" appearance=\"fill\">\n @if (showRangeInputSignal()) {\n <mat-date-range-input [formGroup]=\"inputRangeForm\">\n <input #startDateInput matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input #endDateInput [ngClass]=\"endDisabledSignal() ? 'dbx-fixeddaterange-field-input-end' : ''\" [attr.tabindex]=\"endDisabledSignal() ? -1 : 0\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n }\n </mat-form-field>\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint }}</mat-hint>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.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: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }]
|
|
6130
|
+
], viewQueries: [{ propertyName: "calendar", first: true, predicate: MatCalendar, descendants: true, isSignal: true }, { propertyName: "startDateInputElement", first: true, predicate: ["startDateInput"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "endDateInputElement", first: true, predicate: ["endDateInput"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<div class=\"dbx-fixeddaterange-field\">\n <mat-calendar #calendarView [selected]=\"calendarSelectionSignal()\" [dateFilter]=\"pickerFilterSignal()\" [minDate]=\"minDateSignal()\" [maxDate]=\"maxDateSignal()\" (selectedChange)=\"selectedChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\"></mat-calendar>\n <mat-form-field class=\"dbx-fixeddaterange-field-input\" appearance=\"fill\">\n @if (showRangeInputSignal()) {\n <mat-date-range-input [formGroup]=\"inputRangeForm\">\n <input #startDateInput matStartDate formControlName=\"start\" placeholder=\"Start date\" />\n <input #endDateInput [ngClass]=\"endDisabledSignal() ? 'dbx-fixeddaterange-field-input-end' : ''\" [attr.tabindex]=\"endDisabledSignal() ? -1 : 0\" matEndDate formControlName=\"end\" placeholder=\"End date\" />\n </mat-date-range-input>\n }\n </mat-form-field>\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint }}</mat-hint>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: MatDatepickerModule }, { kind: "component", type: i3.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: i3.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i3.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i3.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],[formArray],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i1$4.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1$4.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }] });
|
|
6029
6131
|
}
|
|
6030
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6132
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFixedDateRangeFieldComponent, decorators: [{
|
|
6031
6133
|
type: Component,
|
|
6032
|
-
args: [{ selector: 'dbx-forge-fixeddaterange-field',
|
|
6134
|
+
args: [{ selector: 'dbx-forge-fixeddaterange-field', imports: [MatDatepickerModule, MatFormFieldModule, ReactiveFormsModule, MatInputModule, MatError, NgClass], providers: [
|
|
6033
6135
|
{
|
|
6034
6136
|
provide: MAT_DATE_RANGE_SELECTION_STRATEGY,
|
|
6035
6137
|
useClass: forwardRef(() => DbxForgeFixedDateRangeFieldSelectionStrategy)
|
|
@@ -6085,10 +6187,10 @@ class DbxForgeFixedDateRangeFieldSelectionStrategy {
|
|
|
6085
6187
|
const year = date.getFullYear();
|
|
6086
6188
|
return this._dateAdapter.createDate(year, monthIndex, day);
|
|
6087
6189
|
}
|
|
6088
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6089
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
|
6190
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFixedDateRangeFieldSelectionStrategy, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
6191
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFixedDateRangeFieldSelectionStrategy });
|
|
6090
6192
|
}
|
|
6091
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6193
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFixedDateRangeFieldSelectionStrategy, decorators: [{
|
|
6092
6194
|
type: Injectable
|
|
6093
6195
|
}] });
|
|
6094
6196
|
// MARK: Mapper
|
|
@@ -6182,7 +6284,8 @@ const DEFAULT_DURATION_PICKER_POPOVER_KEY = 'durationpicker';
|
|
|
6182
6284
|
* ```
|
|
6183
6285
|
*/
|
|
6184
6286
|
class DbxDurationPickerPopoverComponent extends AbstractPopoverDirective {
|
|
6185
|
-
durationData = signal(this.popover.data?.current ?? {},
|
|
6287
|
+
durationData = signal(this.popover.data?.current ?? {}, /* @ts-ignore */
|
|
6288
|
+
...(ngDevMode ? [{ debugName: "durationData" }] : /* istanbul ignore next */ []));
|
|
6186
6289
|
units = [...(this.popover.data?.units ?? ['d', 'h', 'min', 's'])].reverse();
|
|
6187
6290
|
_onChange = this.popover.data?.onChange;
|
|
6188
6291
|
_minMs = this.popover.data?.minMs;
|
|
@@ -6410,12 +6513,12 @@ class DbxDurationPickerPopoverComponent extends AbstractPopoverDirective {
|
|
|
6410
6513
|
}
|
|
6411
6514
|
return false;
|
|
6412
6515
|
}
|
|
6413
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6414
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
6516
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxDurationPickerPopoverComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6517
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxDurationPickerPopoverComponent, isStandalone: true, selector: "ng-component", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-duration-picker\">\n @for (unit of units; track unit) {\n <div class=\"dbx-duration-picker-column\">\n <span class=\"dbx-duration-picker-label\">{{ unitLabel(unit) }}</span>\n <button\n mat-icon-button\n type=\"button\"\n (mousedown)=\"onHoldStart('increment', unit, $event)\"\n (mouseup)=\"stopHold()\"\n (mouseleave)=\"stopHold()\"\n (keydown.arrowup)=\"onHoldStart('increment', unit, $event)\"\n (keydown.arrowdown)=\"onHoldStart('decrement', unit, $event)\"\n (keyup)=\"onKeyUp($event)\"\n [disabled]=\"!canIncrement(unit)\"\n aria-label=\"Increase\">\n <mat-icon>add</mat-icon>\n </button>\n <span class=\"dbx-duration-picker-value\">{{ getValue(unit) }}</span>\n <button\n mat-icon-button\n type=\"button\"\n (mousedown)=\"onHoldStart('decrement', unit, $event)\"\n (mouseup)=\"stopHold()\"\n (mouseleave)=\"stopHold()\"\n (keydown.arrowup)=\"onHoldStart('increment', unit, $event)\"\n (keydown.arrowdown)=\"onHoldStart('decrement', unit, $event)\"\n (keyup)=\"onKeyUp($event)\"\n [disabled]=\"!canDecrement(unit)\"\n aria-label=\"Decrease\">\n <mat-icon>remove</mat-icon>\n </button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }] });
|
|
6415
6518
|
}
|
|
6416
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6519
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxDurationPickerPopoverComponent, decorators: [{
|
|
6417
6520
|
type: Component,
|
|
6418
|
-
args: [{ imports: [MatIconModule, MatButtonModule],
|
|
6521
|
+
args: [{ imports: [MatIconModule, MatButtonModule], template: "<div class=\"dbx-duration-picker\">\n @for (unit of units; track unit) {\n <div class=\"dbx-duration-picker-column\">\n <span class=\"dbx-duration-picker-label\">{{ unitLabel(unit) }}</span>\n <button\n mat-icon-button\n type=\"button\"\n (mousedown)=\"onHoldStart('increment', unit, $event)\"\n (mouseup)=\"stopHold()\"\n (mouseleave)=\"stopHold()\"\n (keydown.arrowup)=\"onHoldStart('increment', unit, $event)\"\n (keydown.arrowdown)=\"onHoldStart('decrement', unit, $event)\"\n (keyup)=\"onKeyUp($event)\"\n [disabled]=\"!canIncrement(unit)\"\n aria-label=\"Increase\">\n <mat-icon>add</mat-icon>\n </button>\n <span class=\"dbx-duration-picker-value\">{{ getValue(unit) }}</span>\n <button\n mat-icon-button\n type=\"button\"\n (mousedown)=\"onHoldStart('decrement', unit, $event)\"\n (mouseup)=\"stopHold()\"\n (mouseleave)=\"stopHold()\"\n (keydown.arrowup)=\"onHoldStart('increment', unit, $event)\"\n (keydown.arrowdown)=\"onHoldStart('decrement', unit, $event)\"\n (keyup)=\"onKeyUp($event)\"\n [disabled]=\"!canDecrement(unit)\"\n aria-label=\"Decrease\">\n <mat-icon>remove</mat-icon>\n </button>\n </div>\n }\n</div>\n" }]
|
|
6419
6522
|
}], ctorParameters: () => [] });
|
|
6420
6523
|
|
|
6421
6524
|
/**
|
|
@@ -6433,16 +6536,26 @@ class DbxForgeTimeDurationFieldComponent {
|
|
|
6433
6536
|
popoverService = inject(DbxPopoverService);
|
|
6434
6537
|
elementRef = inject((ElementRef));
|
|
6435
6538
|
// Standard ng-forge value field inputs
|
|
6436
|
-
field = input.required(
|
|
6437
|
-
|
|
6438
|
-
|
|
6439
|
-
|
|
6440
|
-
|
|
6441
|
-
|
|
6442
|
-
|
|
6443
|
-
|
|
6444
|
-
|
|
6445
|
-
|
|
6539
|
+
field = input.required(/* @ts-ignore */
|
|
6540
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
6541
|
+
key = input.required(/* @ts-ignore */
|
|
6542
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
6543
|
+
label = input(/* @ts-ignore */
|
|
6544
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
6545
|
+
placeholder = input(/* @ts-ignore */
|
|
6546
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
6547
|
+
className = input('', /* @ts-ignore */
|
|
6548
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
6549
|
+
tabIndex = input(/* @ts-ignore */
|
|
6550
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
6551
|
+
props = input(/* @ts-ignore */
|
|
6552
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
6553
|
+
meta = input(/* @ts-ignore */
|
|
6554
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
6555
|
+
validationMessages = input(/* @ts-ignore */
|
|
6556
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
6557
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
6558
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
6446
6559
|
/**
|
|
6447
6560
|
* Internal FormControl for the text input.
|
|
6448
6561
|
*/
|
|
@@ -6453,14 +6566,19 @@ class DbxForgeTimeDurationFieldComponent {
|
|
|
6453
6566
|
*/
|
|
6454
6567
|
_currentDurationData = {};
|
|
6455
6568
|
// Computed props
|
|
6456
|
-
effectiveAppearanceSignal = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline',
|
|
6457
|
-
|
|
6458
|
-
|
|
6459
|
-
|
|
6569
|
+
effectiveAppearanceSignal = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
|
|
6570
|
+
...(ngDevMode ? [{ debugName: "effectiveAppearanceSignal" }] : /* istanbul ignore next */ []));
|
|
6571
|
+
outputUnitSignal = computed(() => this.props()?.outputUnit ?? 'ms', /* @ts-ignore */
|
|
6572
|
+
...(ngDevMode ? [{ debugName: "outputUnitSignal" }] : /* istanbul ignore next */ []));
|
|
6573
|
+
valueModeSignal = computed(() => this.props()?.valueMode ?? 'number', /* @ts-ignore */
|
|
6574
|
+
...(ngDevMode ? [{ debugName: "valueModeSignal" }] : /* istanbul ignore next */ []));
|
|
6575
|
+
allowedUnitsSignal = computed(() => this.props()?.allowedUnits ?? ALL_TIME_UNITS, /* @ts-ignore */
|
|
6576
|
+
...(ngDevMode ? [{ debugName: "allowedUnitsSignal" }] : /* istanbul ignore next */ []));
|
|
6460
6577
|
pickerUnitsSignal = computed(() => {
|
|
6461
6578
|
const allowedUnits = this.allowedUnitsSignal();
|
|
6462
6579
|
return this.props()?.pickerUnits ?? allowedUnits.filter((u) => u !== 'ms');
|
|
6463
|
-
},
|
|
6580
|
+
}, /* @ts-ignore */
|
|
6581
|
+
...(ngDevMode ? [{ debugName: "pickerUnitsSignal" }] : /* istanbul ignore next */ []));
|
|
6464
6582
|
/**
|
|
6465
6583
|
* Units used for decomposing/displaying duration text.
|
|
6466
6584
|
*/
|
|
@@ -6470,18 +6588,24 @@ class DbxForgeTimeDurationFieldComponent {
|
|
|
6470
6588
|
units.push('ms');
|
|
6471
6589
|
}
|
|
6472
6590
|
return units;
|
|
6473
|
-
},
|
|
6591
|
+
}, /* @ts-ignore */
|
|
6592
|
+
...(ngDevMode ? [{ debugName: "displayUnitsSignal" }] : /* istanbul ignore next */ []));
|
|
6474
6593
|
// Disabled state
|
|
6475
6594
|
isDisabled = dbxForgeFieldDisabled();
|
|
6476
6595
|
// Error handling
|
|
6477
6596
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
6478
6597
|
showErrors = shouldShowErrors(this.field);
|
|
6479
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
6598
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
6599
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
6480
6600
|
// ARIA
|
|
6481
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
6482
|
-
|
|
6483
|
-
|
|
6484
|
-
|
|
6601
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
6602
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
6603
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
6604
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
6605
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
6606
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
6607
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
6608
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
6485
6609
|
ariaDescribedBySignal = computed(() => {
|
|
6486
6610
|
const errorId = this.errorIdSignal();
|
|
6487
6611
|
const hintId = this.hintIdSignal();
|
|
@@ -6490,7 +6614,8 @@ class DbxForgeTimeDurationFieldComponent {
|
|
|
6490
6614
|
if (this.props()?.hint)
|
|
6491
6615
|
return hintId;
|
|
6492
6616
|
return null;
|
|
6493
|
-
},
|
|
6617
|
+
}, /* @ts-ignore */
|
|
6618
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
6494
6619
|
/**
|
|
6495
6620
|
* Flag to prevent feedback loops during sync.
|
|
6496
6621
|
*/
|
|
@@ -6651,12 +6776,12 @@ class DbxForgeTimeDurationFieldComponent {
|
|
|
6651
6776
|
}
|
|
6652
6777
|
return result;
|
|
6653
6778
|
}
|
|
6654
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6655
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
6779
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeTimeDurationFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
6780
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeTimeDurationFieldComponent, isStandalone: true, selector: "dbx-forge-timeduration-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "pickerButtonElement", first: true, predicate: ["pickerButton"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "<mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-timeduration-field\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n <input matInput type=\"text\" [formControl]=\"textCtrl\" (blur)=\"onTextBlur()\" (keydown.enter)=\"onTextEnter($event)\" placeholder=\"e.g. 2h30m\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n <button mat-icon-button matSuffix type=\"button\" #pickerButton (click)=\"openPicker()\" [disabled]=\"isDisabled()\" aria-label=\"Open duration picker\">\n <mat-icon>schedule</mat-icon>\n </button>\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</mat-form-field>\n", dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i1$2.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "directive", type: i2.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: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
6656
6781
|
}
|
|
6657
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
6782
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeTimeDurationFieldComponent, decorators: [{
|
|
6658
6783
|
type: Component,
|
|
6659
|
-
args: [{ selector: 'dbx-forge-timeduration-field',
|
|
6784
|
+
args: [{ selector: 'dbx-forge-timeduration-field', imports: [MatFormFieldModule, MatInputModule, MatButtonModule, MatIconModule, FormsModule, ReactiveFormsModule, DynamicTextPipe, AsyncPipe], template: "<mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\" class=\"dbx-forge-timeduration-field\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n <input matInput type=\"text\" [formControl]=\"textCtrl\" (blur)=\"onTextBlur()\" (keydown.enter)=\"onTextEnter($event)\" placeholder=\"e.g. 2h30m\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n <button mat-icon-button matSuffix type=\"button\" #pickerButton (click)=\"openPicker()\" [disabled]=\"isDisabled()\" aria-label=\"Open duration picker\">\n <mat-icon>schedule</mat-icon>\n </button>\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</mat-form-field>\n" }]
|
|
6660
6785
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }], pickerButtonElement: [{ type: i0.ViewChild, args: ['pickerButton', { ...{ read: ElementRef }, isSignal: true }] }] } });
|
|
6661
6786
|
// MARK: Mapper
|
|
6662
6787
|
/**
|
|
@@ -6818,16 +6943,26 @@ class DbxForgePhoneFieldComponent {
|
|
|
6818
6943
|
destroyRef = inject(DestroyRef);
|
|
6819
6944
|
elementRef = inject((ElementRef));
|
|
6820
6945
|
// Standard ng-forge value field inputs
|
|
6821
|
-
field = input.required(
|
|
6822
|
-
|
|
6823
|
-
|
|
6824
|
-
|
|
6825
|
-
|
|
6826
|
-
|
|
6827
|
-
|
|
6828
|
-
|
|
6829
|
-
|
|
6830
|
-
|
|
6946
|
+
field = input.required(/* @ts-ignore */
|
|
6947
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
6948
|
+
key = input.required(/* @ts-ignore */
|
|
6949
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
6950
|
+
label = input(/* @ts-ignore */
|
|
6951
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
6952
|
+
placeholder = input(/* @ts-ignore */
|
|
6953
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
6954
|
+
className = input('', /* @ts-ignore */
|
|
6955
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
6956
|
+
tabIndex = input(/* @ts-ignore */
|
|
6957
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
6958
|
+
props = input(/* @ts-ignore */
|
|
6959
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
6960
|
+
meta = input(/* @ts-ignore */
|
|
6961
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
6962
|
+
validationMessages = input(/* @ts-ignore */
|
|
6963
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
6964
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
6965
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
6831
6966
|
/**
|
|
6832
6967
|
* Internal FormControl used to bridge ngx-mat-input-tel (reactive forms)
|
|
6833
6968
|
* with the ng-forge Signal Forms field tree.
|
|
@@ -6835,23 +6970,34 @@ class DbxForgePhoneFieldComponent {
|
|
|
6835
6970
|
phoneCtrl = new FormControl('');
|
|
6836
6971
|
extensionCtrl = new FormControl('', { validators: [isPhoneExtension()] });
|
|
6837
6972
|
// Computed props
|
|
6838
|
-
preferredCountriesSignal = computed(() => this.props()?.preferredCountries ?? DEFAULT_FORGE_PREFERRED_COUNTRIES,
|
|
6839
|
-
|
|
6840
|
-
|
|
6841
|
-
|
|
6842
|
-
|
|
6843
|
-
|
|
6973
|
+
preferredCountriesSignal = computed(() => this.props()?.preferredCountries ?? DEFAULT_FORGE_PREFERRED_COUNTRIES, /* @ts-ignore */
|
|
6974
|
+
...(ngDevMode ? [{ debugName: "preferredCountriesSignal" }] : /* istanbul ignore next */ []));
|
|
6975
|
+
onlyCountriesSignal = computed(() => this.props()?.onlyCountries ?? [], /* @ts-ignore */
|
|
6976
|
+
...(ngDevMode ? [{ debugName: "onlyCountriesSignal" }] : /* istanbul ignore next */ []));
|
|
6977
|
+
enableSearchSignal = computed(() => this.props()?.enableSearch ?? true, /* @ts-ignore */
|
|
6978
|
+
...(ngDevMode ? [{ debugName: "enableSearchSignal" }] : /* istanbul ignore next */ []));
|
|
6979
|
+
allowExtensionSignal = computed(() => this.props()?.allowExtension ?? false, /* @ts-ignore */
|
|
6980
|
+
...(ngDevMode ? [{ debugName: "allowExtensionSignal" }] : /* istanbul ignore next */ []));
|
|
6981
|
+
effectiveAppearanceSignal = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
|
|
6982
|
+
...(ngDevMode ? [{ debugName: "effectiveAppearanceSignal" }] : /* istanbul ignore next */ []));
|
|
6983
|
+
effectiveAutocompleteSignal = computed(() => this.props()?.autocomplete ?? 'off', /* @ts-ignore */
|
|
6984
|
+
...(ngDevMode ? [{ debugName: "effectiveAutocompleteSignal" }] : /* istanbul ignore next */ []));
|
|
6844
6985
|
// Disabled state
|
|
6845
6986
|
isDisabled = dbxForgeFieldDisabled();
|
|
6846
6987
|
// Error handling
|
|
6847
6988
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
6848
6989
|
showErrors = shouldShowErrors(this.field);
|
|
6849
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
6990
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
6991
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
6850
6992
|
// ARIA
|
|
6851
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
6852
|
-
|
|
6853
|
-
|
|
6854
|
-
|
|
6993
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
6994
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
6995
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
6996
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
6997
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
6998
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
6999
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
7000
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
6855
7001
|
ariaDescribedBySignal = computed(() => {
|
|
6856
7002
|
const errorId = this.errorIdSignal();
|
|
6857
7003
|
const hintId = this.hintIdSignal();
|
|
@@ -6860,7 +7006,8 @@ class DbxForgePhoneFieldComponent {
|
|
|
6860
7006
|
if (this.props()?.hint)
|
|
6861
7007
|
return hintId;
|
|
6862
7008
|
return null;
|
|
6863
|
-
},
|
|
7009
|
+
}, /* @ts-ignore */
|
|
7010
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
6864
7011
|
/**
|
|
6865
7012
|
* Flag to prevent feedback loops during sync.
|
|
6866
7013
|
*/
|
|
@@ -6935,12 +7082,12 @@ class DbxForgePhoneFieldComponent {
|
|
|
6935
7082
|
}
|
|
6936
7083
|
this._syncing = false;
|
|
6937
7084
|
}
|
|
6938
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
6939
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7085
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePhoneFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7086
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgePhoneFieldComponent, isStandalone: true, selector: "dbx-forge-phone-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n <div class=\"dbx-form-phone-field\">\n <ngx-mat-input-tel\n name=\"phone\"\n class=\"dbx-form-phone-field-phone-content\"\n [formControl]=\"phoneCtrl\"\n [autocomplete]=\"effectiveAutocompleteSignal()\"\n [enableSearch]=\"enableSearchSignal()\"\n [preferredCountries]=\"preferredCountriesSignal()\"\n [onlyCountries]=\"onlyCountriesSignal()\"\n [enablePlaceholder]=\"false\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.aria-invalid]=\"ariaInvalidSignal()\"\n [attr.aria-required]=\"ariaRequiredSignal()\"\n [attr.aria-describedby]=\"ariaDescribedBySignal()\"></ngx-mat-input-tel>\n @if (allowExtensionSignal()) {\n <div class=\"dbx-form-phone-field-extension-content\">\n <span class=\"dbx-hint dbx-button-spacer\">Ext.</span>\n <input name=\"phone-extension\" class=\"dbx-form-phone-field-extension-input\" placeholder=\"123\" minlength=\"0\" maxlength=\"6\" [formControl]=\"extensionCtrl\" aria-label=\"Phone extension\" />\n </div>\n }\n </div>\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</mat-form-field>\n", styles: [":host{display:block;width:100%}:host mat-form-field{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: MatFormFieldModule }, { kind: "component", type: i1$2.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i1$2.MatLabel, selector: "mat-label" }, { kind: "directive", type: i1$2.MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: i1$2.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "ngmodule", type: MatInputModule }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.MinLengthValidator, selector: "[minlength][formControlName],[minlength][formControl],[minlength][ngModel]", inputs: ["minlength"] }, { kind: "directive", type: i1$4.MaxLengthValidator, selector: "[maxlength][formControlName],[maxlength][formControl],[maxlength][ngModel]", inputs: ["maxlength"] }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "component", type: NgxMatInputTelComponent, selector: "ngx-mat-input-tel", inputs: ["autocomplete", "ariaLabel", "cssClass", "defaultCountry", "errorStateMatcher", "maxLength", "name", "placeholder", "countriesName", "preferredCountries", "onlyCountries", "searchPlaceholder", "validation", "enablePlaceholder", "enableSearch", "resetOnChange", "separateDialCode", "hideAreaCodes", "format", "required", "disabled"], outputs: ["countryChanged"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
6940
7087
|
}
|
|
6941
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7088
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePhoneFieldComponent, decorators: [{
|
|
6942
7089
|
type: Component,
|
|
6943
|
-
args: [{ selector: 'dbx-forge-phone-field',
|
|
7090
|
+
args: [{ selector: 'dbx-forge-phone-field', imports: [MatFormFieldModule, MatInputModule, ReactiveFormsModule, NgxMatInputTelComponent, DynamicTextPipe, AsyncPipe], template: "<mat-form-field [appearance]=\"effectiveAppearanceSignal()\" subscriptSizing=\"dynamic\">\n @if (label()) {\n <mat-label>{{ label() | dynamicText | async }}</mat-label>\n }\n <div class=\"dbx-form-phone-field\">\n <ngx-mat-input-tel\n name=\"phone\"\n class=\"dbx-form-phone-field-phone-content\"\n [formControl]=\"phoneCtrl\"\n [autocomplete]=\"effectiveAutocompleteSignal()\"\n [enableSearch]=\"enableSearchSignal()\"\n [preferredCountries]=\"preferredCountriesSignal()\"\n [onlyCountries]=\"onlyCountriesSignal()\"\n [enablePlaceholder]=\"false\"\n [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\"\n [attr.aria-invalid]=\"ariaInvalidSignal()\"\n [attr.aria-required]=\"ariaRequiredSignal()\"\n [attr.aria-describedby]=\"ariaDescribedBySignal()\"></ngx-mat-input-tel>\n @if (allowExtensionSignal()) {\n <div class=\"dbx-form-phone-field-extension-content\">\n <span class=\"dbx-hint dbx-button-spacer\">Ext.</span>\n <input name=\"phone-extension\" class=\"dbx-form-phone-field-extension-input\" placeholder=\"123\" minlength=\"0\" maxlength=\"6\" [formControl]=\"extensionCtrl\" aria-label=\"Phone extension\" />\n </div>\n }\n </div>\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</mat-form-field>\n", styles: [":host{display:block;width:100%}:host mat-form-field{width:100%}\n"] }]
|
|
6944
7091
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
6945
7092
|
// MARK: Mapper
|
|
6946
7093
|
/**
|
|
@@ -7022,42 +7169,63 @@ class DbxForgeValueSelectionFieldComponent {
|
|
|
7022
7169
|
materialConfig = inject(MATERIAL_CONFIG, { optional: true });
|
|
7023
7170
|
elementRef = inject((ElementRef));
|
|
7024
7171
|
// ng-forge ValueFieldComponent inputs
|
|
7025
|
-
field = input.required(
|
|
7026
|
-
|
|
7027
|
-
|
|
7028
|
-
|
|
7029
|
-
|
|
7030
|
-
|
|
7031
|
-
|
|
7032
|
-
|
|
7033
|
-
|
|
7034
|
-
|
|
7172
|
+
field = input.required(/* @ts-ignore */
|
|
7173
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
7174
|
+
key = input.required(/* @ts-ignore */
|
|
7175
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
7176
|
+
label = input(/* @ts-ignore */
|
|
7177
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
7178
|
+
placeholder = input(/* @ts-ignore */
|
|
7179
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
7180
|
+
className = input('', /* @ts-ignore */
|
|
7181
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
7182
|
+
tabIndex = input(/* @ts-ignore */
|
|
7183
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
7184
|
+
props = input(/* @ts-ignore */
|
|
7185
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
7186
|
+
meta = input(/* @ts-ignore */
|
|
7187
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
7188
|
+
validationMessages = input(/* @ts-ignore */
|
|
7189
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
7190
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
7191
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
7035
7192
|
// Derived signals
|
|
7036
|
-
addClearOptionSignal = computed(() => this.props()?.addClearOption,
|
|
7193
|
+
addClearOptionSignal = computed(() => this.props()?.addClearOption, /* @ts-ignore */
|
|
7194
|
+
...(ngDevMode ? [{ debugName: "addClearOptionSignal" }] : /* istanbul ignore next */ []));
|
|
7037
7195
|
addClearOption$ = toObservable(this.addClearOptionSignal).pipe(distinctUntilChanged());
|
|
7038
|
-
inputOptionsSignal = computed(() => this.props()?.options,
|
|
7196
|
+
inputOptionsSignal = computed(() => this.props()?.options, /* @ts-ignore */
|
|
7197
|
+
...(ngDevMode ? [{ debugName: "inputOptionsSignal" }] : /* istanbul ignore next */ []));
|
|
7039
7198
|
inputOptions$ = toObservable(this.inputOptionsSignal).pipe(maybeValueFromObservableOrValue());
|
|
7040
7199
|
resolvedOptions$ = combineLatest([this.inputOptions$, this.addClearOption$]).pipe(map(([options, addClearOption]) => resolveForgeSelectionOptions(options ?? [], addClearOption ?? false)));
|
|
7041
7200
|
resolvedOptionsSignal = toSignal(this.resolvedOptions$);
|
|
7042
|
-
multipleSignal = computed(() => this.props()?.multiple ?? false,
|
|
7043
|
-
|
|
7044
|
-
|
|
7045
|
-
|
|
7201
|
+
multipleSignal = computed(() => this.props()?.multiple ?? false, /* @ts-ignore */
|
|
7202
|
+
...(ngDevMode ? [{ debugName: "multipleSignal" }] : /* istanbul ignore next */ []));
|
|
7203
|
+
effectiveAppearanceSignal = computed(() => this.props()?.appearance ?? this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
|
|
7204
|
+
...(ngDevMode ? [{ debugName: "effectiveAppearanceSignal" }] : /* istanbul ignore next */ []));
|
|
7205
|
+
effectiveSubscriptSizingSignal = computed(() => this.props()?.subscriptSizing ?? this.materialConfig?.subscriptSizing ?? 'dynamic', /* @ts-ignore */
|
|
7206
|
+
...(ngDevMode ? [{ debugName: "effectiveSubscriptSizingSignal" }] : /* istanbul ignore next */ []));
|
|
7207
|
+
compareWithSignal = computed(() => this.props()?.compareWith ?? Object.is, /* @ts-ignore */
|
|
7208
|
+
...(ngDevMode ? [{ debugName: "compareWithSignal" }] : /* istanbul ignore next */ []));
|
|
7046
7209
|
// Error display
|
|
7047
7210
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
7048
7211
|
showErrors = shouldShowErrors(this.field);
|
|
7049
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
7212
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
7213
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
7050
7214
|
/**
|
|
7051
7215
|
* Unique ID for the hint element
|
|
7052
7216
|
*/
|
|
7053
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
7217
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
7218
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
7054
7219
|
/**
|
|
7055
7220
|
* Base ID for error elements
|
|
7056
7221
|
*/
|
|
7057
|
-
errorIdSignal = computed(() => `${this.key()}-error`,
|
|
7222
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
7223
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
7058
7224
|
// Accessibility
|
|
7059
|
-
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null),
|
|
7060
|
-
|
|
7225
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
7226
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
7227
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
7228
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
7061
7229
|
ariaDescribedBySignal = computed(() => {
|
|
7062
7230
|
const errorId = this.errorIdSignal();
|
|
7063
7231
|
const hintId = this.hintIdSignal();
|
|
@@ -7066,16 +7234,17 @@ class DbxForgeValueSelectionFieldComponent {
|
|
|
7066
7234
|
if (this.props()?.hint)
|
|
7067
7235
|
return hintId;
|
|
7068
7236
|
return null;
|
|
7069
|
-
},
|
|
7237
|
+
}, /* @ts-ignore */
|
|
7238
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
7070
7239
|
constructor() {
|
|
7071
7240
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'mat-select' });
|
|
7072
7241
|
}
|
|
7073
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7074
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7242
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeValueSelectionFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7243
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeValueSelectionFieldComponent, isStandalone: true, selector: "dbx-forge-value-selection-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, ngImport: i0, template: "@let f = field();\n@let selectId = key() + '-select';\n\n<mat-form-field class=\"dbx-w100\" [appearance]=\"effectiveAppearanceSignal()\" [subscriptSizing]=\"effectiveSubscriptSizingSignal()\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <mat-select [id]=\"selectId\" [formField]=\"f\" [placeholder]=\"(placeholder() | dynamicText | async) ?? ''\" [multiple]=\"multipleSignal()\" [compareWith]=\"compareWithSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @for (option of resolvedOptionsSignal(); track $index) {\n <mat-option [value]=\"option.value\" [disabled]=\"option.disabled ?? false\">{{ option.label }}</mat-option>\n }\n </mat-select>\n\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (props()?.hint; as hint) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hint | dynamicText | async }}</mat-hint>\n }\n</mat-form-field>\n", dependencies: [{ 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: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: MatHint, selector: "mat-hint", inputs: ["align", "id"] }, { kind: "directive", type: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "directive", type: MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
7075
7244
|
}
|
|
7076
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7245
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeValueSelectionFieldComponent, decorators: [{
|
|
7077
7246
|
type: Component,
|
|
7078
|
-
args: [{ selector: 'dbx-forge-value-selection-field', imports: [MatFormField, MatLabel, MatSelect, MatOption, MatHint, FormField, MatError, DynamicTextPipe, AsyncPipe],
|
|
7247
|
+
args: [{ selector: 'dbx-forge-value-selection-field', imports: [MatFormField, MatLabel, MatSelect, MatOption, MatHint, FormField, MatError, DynamicTextPipe, AsyncPipe], host: {
|
|
7079
7248
|
'[id]': '`${key()}`',
|
|
7080
7249
|
'[attr.data-testid]': 'key()',
|
|
7081
7250
|
'[class]': 'className()',
|
|
@@ -7133,7 +7302,8 @@ const DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN = new InjectionToken('DbxSearcha
|
|
|
7133
7302
|
* value data via {@link DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN}.
|
|
7134
7303
|
*/
|
|
7135
7304
|
class DbxSearchableFieldAutocompleteItemComponent {
|
|
7136
|
-
displayValue = input.required(
|
|
7305
|
+
displayValue = input.required(/* @ts-ignore */
|
|
7306
|
+
...(ngDevMode ? [{ debugName: "displayValue" }] : /* istanbul ignore next */ []));
|
|
7137
7307
|
configSignal = computed(() => {
|
|
7138
7308
|
const displayValue = this.displayValue();
|
|
7139
7309
|
const config = {
|
|
@@ -7149,16 +7319,18 @@ class DbxSearchableFieldAutocompleteItemComponent {
|
|
|
7149
7319
|
], displayValue.display.providers)
|
|
7150
7320
|
};
|
|
7151
7321
|
return config;
|
|
7152
|
-
},
|
|
7153
|
-
|
|
7154
|
-
|
|
7155
|
-
|
|
7322
|
+
}, /* @ts-ignore */
|
|
7323
|
+
...(ngDevMode ? [{ debugName: "configSignal" }] : /* istanbul ignore next */ []));
|
|
7324
|
+
anchorSignal = computed(() => this.displayValue().anchor, /* @ts-ignore */
|
|
7325
|
+
...(ngDevMode ? [{ debugName: "anchorSignal" }] : /* istanbul ignore next */ []));
|
|
7326
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7327
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: DbxSearchableFieldAutocompleteItemComponent, isStandalone: true, selector: "dbx-searchable-field-autocomplete-item", inputs: { displayValue: { classPropertyName: "displayValue", publicName: "displayValue", isSignal: true, isRequired: true, transformFunction: null } }, ngImport: i0, template: `
|
|
7156
7328
|
<dbx-anchor [block]="true" [anchor]="anchorSignal()">
|
|
7157
7329
|
<dbx-injection [config]="configSignal()"></dbx-injection>
|
|
7158
7330
|
</dbx-anchor>
|
|
7159
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }]
|
|
7331
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxAnchorComponent, selector: "dbx-anchor, [dbx-anchor]", inputs: ["block"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }] });
|
|
7160
7332
|
}
|
|
7161
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7333
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxSearchableFieldAutocompleteItemComponent, decorators: [{
|
|
7162
7334
|
type: Component,
|
|
7163
7335
|
args: [{
|
|
7164
7336
|
selector: 'dbx-searchable-field-autocomplete-item',
|
|
@@ -7167,9 +7339,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
7167
7339
|
<dbx-injection [config]="configSignal()"></dbx-injection>
|
|
7168
7340
|
</dbx-anchor>
|
|
7169
7341
|
`,
|
|
7170
|
-
imports: [DbxAnchorComponent, DbxInjectionComponent]
|
|
7171
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7172
|
-
standalone: true
|
|
7342
|
+
imports: [DbxAnchorComponent, DbxInjectionComponent]
|
|
7173
7343
|
}]
|
|
7174
7344
|
}], propDecorators: { displayValue: [{ type: i0.Input, args: [{ isSignal: true, alias: "displayValue", required: true }] }] } });
|
|
7175
7345
|
// MARK: Default
|
|
@@ -7181,10 +7351,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
7181
7351
|
*/
|
|
7182
7352
|
class AbstractDbxSearchableFieldDisplayDirective {
|
|
7183
7353
|
displayValue = inject(DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN);
|
|
7184
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7185
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
7354
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7355
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: AbstractDbxSearchableFieldDisplayDirective, isStandalone: true, ngImport: i0 });
|
|
7186
7356
|
}
|
|
7187
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7357
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractDbxSearchableFieldDisplayDirective, decorators: [{
|
|
7188
7358
|
type: Directive
|
|
7189
7359
|
}] });
|
|
7190
7360
|
/**
|
|
@@ -7194,8 +7364,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
7194
7364
|
*/
|
|
7195
7365
|
class DbxDefaultSearchableFieldDisplayComponent extends AbstractDbxSearchableFieldDisplayDirective {
|
|
7196
7366
|
icon = this.displayValue.icon;
|
|
7197
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7198
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7367
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
7368
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxDefaultSearchableFieldDisplayComponent, isStandalone: true, selector: "dbx-default-searchable-field-display", usesInheritance: true, ngImport: i0, template: `
|
|
7199
7369
|
<div class="dbx-default-searchable-field-display dbx-flex-bar">
|
|
7200
7370
|
@if (icon) {
|
|
7201
7371
|
<mat-icon class="dbx-icon-spacer">{{ icon }}</mat-icon>
|
|
@@ -7205,9 +7375,9 @@ class DbxDefaultSearchableFieldDisplayComponent extends AbstractDbxSearchableFie
|
|
|
7205
7375
|
<span class="dbx-chip-sublabel">({{ displayValue.sublabel }})</span>
|
|
7206
7376
|
}
|
|
7207
7377
|
</div>
|
|
7208
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }]
|
|
7378
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }] });
|
|
7209
7379
|
}
|
|
7210
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7380
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxDefaultSearchableFieldDisplayComponent, decorators: [{
|
|
7211
7381
|
type: Component,
|
|
7212
7382
|
args: [{
|
|
7213
7383
|
selector: 'dbx-default-searchable-field-display',
|
|
@@ -7222,9 +7392,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
7222
7392
|
}
|
|
7223
7393
|
</div>
|
|
7224
7394
|
`,
|
|
7225
|
-
imports: [MatIconModule]
|
|
7226
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
7227
|
-
standalone: true
|
|
7395
|
+
imports: [MatIconModule]
|
|
7228
7396
|
}]
|
|
7229
7397
|
}] });
|
|
7230
7398
|
|
|
@@ -7241,15 +7409,24 @@ const DEFAULT_SEARCHABLE_FIELD_DISPLAY = {
|
|
|
7241
7409
|
*/
|
|
7242
7410
|
class AbstractForgeSearchableFieldDirective {
|
|
7243
7411
|
// MARK: ng-forge ValueFieldComponent Inputs
|
|
7244
|
-
key = input.required(
|
|
7245
|
-
|
|
7246
|
-
|
|
7247
|
-
|
|
7248
|
-
|
|
7249
|
-
|
|
7250
|
-
|
|
7251
|
-
|
|
7252
|
-
|
|
7412
|
+
key = input.required(/* @ts-ignore */
|
|
7413
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
7414
|
+
label = input(/* @ts-ignore */
|
|
7415
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
7416
|
+
placeholder = input(/* @ts-ignore */
|
|
7417
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
7418
|
+
className = input('', /* @ts-ignore */
|
|
7419
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
7420
|
+
tabIndex = input(/* @ts-ignore */
|
|
7421
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
7422
|
+
props = input(/* @ts-ignore */
|
|
7423
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
7424
|
+
meta = input(/* @ts-ignore */
|
|
7425
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
7426
|
+
validationMessages = input(/* @ts-ignore */
|
|
7427
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
7428
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
7429
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
7253
7430
|
inputCtrl = new FormControl('');
|
|
7254
7431
|
_clearDisplayHashMapSub = cleanSubscription();
|
|
7255
7432
|
_displayHashMap = completeOnDestroy(new BehaviorSubject(new Map()));
|
|
@@ -7260,18 +7437,23 @@ class AbstractForgeSearchableFieldDirective {
|
|
|
7260
7437
|
labelSignal = computed(() => {
|
|
7261
7438
|
const l = this.label();
|
|
7262
7439
|
return typeof l === 'string' ? l : undefined;
|
|
7263
|
-
},
|
|
7264
|
-
|
|
7440
|
+
}, /* @ts-ignore */
|
|
7441
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
7442
|
+
hintSignal = computed(() => this.props()?.hint, /* @ts-ignore */
|
|
7443
|
+
...(ngDevMode ? [{ debugName: "hintSignal" }] : /* istanbul ignore next */ []));
|
|
7265
7444
|
// ARIA IDs
|
|
7266
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
7267
|
-
|
|
7445
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
7446
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
7447
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
7448
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
7268
7449
|
searchInputPlaceholderSignal = computed(() => {
|
|
7269
7450
|
const p = this.props();
|
|
7270
7451
|
const placeholderValue = this.placeholder();
|
|
7271
7452
|
const searchOnEmpty = p?.searchOnEmptyText ?? false;
|
|
7272
7453
|
const placeholder = typeof placeholderValue === 'string' ? placeholderValue : undefined;
|
|
7273
7454
|
return placeholder || (searchOnEmpty ? '' : DEFAULT_SEARCH_INPUT_PLACEHOLDER);
|
|
7274
|
-
},
|
|
7455
|
+
}, /* @ts-ignore */
|
|
7456
|
+
...(ngDevMode ? [{ debugName: "searchInputPlaceholderSignal" }] : /* istanbul ignore next */ []));
|
|
7275
7457
|
// MARK: Search Results
|
|
7276
7458
|
searchResultsState$ = this.inputValueString$.pipe(switchMap((text) => {
|
|
7277
7459
|
const p = this.props();
|
|
@@ -7351,10 +7533,10 @@ class AbstractForgeSearchableFieldDirective {
|
|
|
7351
7533
|
return obs;
|
|
7352
7534
|
}));
|
|
7353
7535
|
}
|
|
7354
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7355
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
7536
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractForgeSearchableFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
7537
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: AbstractForgeSearchableFieldDirective, isStandalone: true, inputs: { key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
7356
7538
|
}
|
|
7357
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7539
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractForgeSearchableFieldDirective, decorators: [{
|
|
7358
7540
|
type: Directive
|
|
7359
7541
|
}], propDecorators: { key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
7360
7542
|
|
|
@@ -7468,8 +7650,10 @@ function dbxForgeSearchableStringChipField(config) {
|
|
|
7468
7650
|
*/
|
|
7469
7651
|
class DbxForgeSearchableTextFieldComponent extends AbstractForgeSearchableFieldDirective {
|
|
7470
7652
|
elementRef = inject((ElementRef));
|
|
7471
|
-
field = input.required(
|
|
7472
|
-
|
|
7653
|
+
field = input.required(/* @ts-ignore */
|
|
7654
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
7655
|
+
textInputRef = viewChild('textInput', /* @ts-ignore */
|
|
7656
|
+
...(ngDevMode ? [{ debugName: "textInputRef" }] : /* istanbul ignore next */ []));
|
|
7473
7657
|
_singleValueSyncSub = cleanSubscription();
|
|
7474
7658
|
_valuesSubject = completeOnDestroy(new BehaviorSubject([]));
|
|
7475
7659
|
// Disabled state
|
|
@@ -7477,42 +7661,52 @@ class DbxForgeSearchableTextFieldComponent extends AbstractForgeSearchableFieldD
|
|
|
7477
7661
|
// Error handling
|
|
7478
7662
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
7479
7663
|
showErrors = shouldShowErrors(this.field);
|
|
7480
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
7664
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
7665
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
7481
7666
|
// ARIA
|
|
7482
|
-
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null),
|
|
7667
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
7668
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
7483
7669
|
ariaDescribedBySignal = computed(() => {
|
|
7484
7670
|
if (this.errorsToDisplaySignal().length > 0)
|
|
7485
7671
|
return this.errorIdSignal();
|
|
7486
7672
|
if (this.props()?.hint)
|
|
7487
7673
|
return this.hintIdSignal();
|
|
7488
7674
|
return null;
|
|
7489
|
-
},
|
|
7490
|
-
|
|
7491
|
-
|
|
7675
|
+
}, /* @ts-ignore */
|
|
7676
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
7677
|
+
showClearValueSignal = computed(() => this.props()?.showClearValue ?? true, /* @ts-ignore */
|
|
7678
|
+
...(ngDevMode ? [{ debugName: "showClearValueSignal" }] : /* istanbul ignore next */ []));
|
|
7679
|
+
searchLabelSignal = computed(() => this.props()?.searchLabel ?? 'Search', /* @ts-ignore */
|
|
7680
|
+
...(ngDevMode ? [{ debugName: "searchLabelSignal" }] : /* istanbul ignore next */ []));
|
|
7492
7681
|
fieldValueSignal = computed(() => {
|
|
7493
7682
|
const fieldGetter = this.field();
|
|
7494
7683
|
const fieldState = typeof fieldGetter === 'function' ? fieldGetter() : undefined;
|
|
7495
7684
|
return fieldState?.value?.();
|
|
7496
|
-
},
|
|
7685
|
+
}, /* @ts-ignore */
|
|
7686
|
+
...(ngDevMode ? [{ debugName: "fieldValueSignal" }] : /* istanbul ignore next */ []));
|
|
7497
7687
|
displayValues$ = this._valuesSubject.pipe(switchMap((values) => this._loadDisplayValuesForValues(values)), map((x) => x?.value ?? []), shareReplay(1));
|
|
7498
7688
|
selectedDisplayValue$ = this.displayValues$.pipe(map((x) => x[0]), shareReplay(1));
|
|
7499
7689
|
selectedDisplayValueSignal = toSignal(this.selectedDisplayValue$);
|
|
7500
|
-
hasValueSignal = computed(() => Boolean(this.selectedDisplayValueSignal()),
|
|
7690
|
+
hasValueSignal = computed(() => Boolean(this.selectedDisplayValueSignal()), /* @ts-ignore */
|
|
7691
|
+
...(ngDevMode ? [{ debugName: "hasValueSignal" }] : /* istanbul ignore next */ []));
|
|
7501
7692
|
showSelectedDisplayValueSignal = computed(() => {
|
|
7502
7693
|
const hasValue = this.hasValueSignal();
|
|
7503
7694
|
const p = this.props();
|
|
7504
7695
|
const showSelected = p?.showSelectedValue ?? !(p?.allowStringValues ?? false);
|
|
7505
7696
|
return showSelected && hasValue;
|
|
7506
|
-
},
|
|
7697
|
+
}, /* @ts-ignore */
|
|
7698
|
+
...(ngDevMode ? [{ debugName: "showSelectedDisplayValueSignal" }] : /* istanbul ignore next */ []));
|
|
7507
7699
|
// Disabled state propagation
|
|
7508
7700
|
_disabledEffect = effect(() => {
|
|
7509
7701
|
toggleDisableFormControl(this.inputCtrl, this.isDisabled());
|
|
7510
|
-
},
|
|
7702
|
+
}, /* @ts-ignore */
|
|
7703
|
+
...(ngDevMode ? [{ debugName: "_disabledEffect" }] : /* istanbul ignore next */ []));
|
|
7511
7704
|
_syncFieldValueEffect = effect(() => {
|
|
7512
7705
|
const fieldValue = this.fieldValueSignal();
|
|
7513
7706
|
const values = fieldValue != null && fieldValue !== '' ? [fieldValue] : [];
|
|
7514
7707
|
this._valuesSubject.next(values);
|
|
7515
|
-
},
|
|
7708
|
+
}, /* @ts-ignore */
|
|
7709
|
+
...(ngDevMode ? [{ debugName: "_syncFieldValueEffect" }] : /* istanbul ignore next */ []));
|
|
7516
7710
|
constructor() {
|
|
7517
7711
|
super();
|
|
7518
7712
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });
|
|
@@ -7557,12 +7751,12 @@ class DbxForgeSearchableTextFieldComponent extends AbstractForgeSearchableFieldD
|
|
|
7557
7751
|
fieldState.value.set(value ?? null);
|
|
7558
7752
|
}
|
|
7559
7753
|
}
|
|
7560
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7561
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7754
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeSearchableTextFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7755
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeSearchableTextFieldComponent, isStandalone: true, selector: "dbx-forge-searchable-text-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: "textInputRef", first: true, predicate: ["textInput"], descendants: true, isSignal: true }], usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-text-field\" tabindex=\"0\" (click)=\"focusInput()\" (keydown.enter)=\"focusInput()\" [class.dbx-searchable-text-field-has-value]=\"hasValueSignal()\" [class.dbx-searchable-text-field-show-value]=\"showSelectedDisplayValueSignal()\">\n @if (showSelectedDisplayValueSignal()) {\n @let sv = selectedDisplayValueSignal();\n @if (sv) {\n <div class=\"dbx-searchable-text-field-value\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"sv\"></dbx-searchable-field-autocomplete-item>\n </div>\n }\n }\n <div class=\"dbx-searchable-text-field-input\">\n @if (searchLabelSignal()) {\n <div class=\"dbx-label\">{{ searchLabelSignal() }}</div>\n }\n <input #textInput class=\"dbx-forge-bare-input\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [placeholder]=\"searchInputPlaceholderSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n </div>\n</div>\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n @if (showClearValueSignal() && hasValueSignal()) {\n <mat-option [value]=\"{ _clear: true }\">Clear</mat-option>\n }\n @for (result of searchResultsSignal(); track $index) {\n <mat-option [value]=\"result\" [class.dbx-searchable-field-anchor-option]=\"!!result.anchor\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"result\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n }\n</mat-autocomplete>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.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: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: ["displayValue"] }] });
|
|
7562
7756
|
}
|
|
7563
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7757
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeSearchableTextFieldComponent, decorators: [{
|
|
7564
7758
|
type: Component,
|
|
7565
|
-
args: [{ selector: 'dbx-forge-searchable-text-field', imports: [FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatOptionModule, MatIconModule, DbxSearchableFieldAutocompleteItemComponent],
|
|
7759
|
+
args: [{ selector: 'dbx-forge-searchable-text-field', imports: [FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatOptionModule, MatIconModule, DbxSearchableFieldAutocompleteItemComponent], template: "<div class=\"dbx-searchable-text-field\" tabindex=\"0\" (click)=\"focusInput()\" (keydown.enter)=\"focusInput()\" [class.dbx-searchable-text-field-has-value]=\"hasValueSignal()\" [class.dbx-searchable-text-field-show-value]=\"showSelectedDisplayValueSignal()\">\n @if (showSelectedDisplayValueSignal()) {\n @let sv = selectedDisplayValueSignal();\n @if (sv) {\n <div class=\"dbx-searchable-text-field-value\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"sv\"></dbx-searchable-field-autocomplete-item>\n </div>\n }\n }\n <div class=\"dbx-searchable-text-field-input\">\n @if (searchLabelSignal()) {\n <div class=\"dbx-label\">{{ searchLabelSignal() }}</div>\n }\n <input #textInput class=\"dbx-forge-bare-input\" [formControl]=\"inputCtrl\" [matAutocomplete]=\"auto\" [placeholder]=\"searchInputPlaceholderSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n </div>\n</div>\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto=\"matAutocomplete\" (optionSelected)=\"selected($event)\">\n @if (showClearValueSignal() && hasValueSignal()) {\n <mat-option [value]=\"{ _clear: true }\">Clear</mat-option>\n }\n @for (result of searchResultsSignal(); track $index) {\n <mat-option [value]=\"result\" [class.dbx-searchable-field-anchor-option]=\"!!result.anchor\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"result\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n }\n</mat-autocomplete>\n" }]
|
|
7566
7760
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], textInputRef: [{ type: i0.ViewChild, args: ['textInput', { isSignal: true }] }] } });
|
|
7567
7761
|
|
|
7568
7762
|
var searchableText_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -7578,23 +7772,27 @@ var searchableText_field_component = /*#__PURE__*/Object.freeze({
|
|
|
7578
7772
|
*/
|
|
7579
7773
|
class DbxForgeSearchableChipFieldComponent extends AbstractForgeSearchableFieldDirective {
|
|
7580
7774
|
elementRef = inject((ElementRef));
|
|
7581
|
-
field = input.required(
|
|
7775
|
+
field = input.required(/* @ts-ignore */
|
|
7776
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
7582
7777
|
separatorKeysCodes = [ENTER, COMMA];
|
|
7583
7778
|
// Disabled state
|
|
7584
7779
|
isDisabled = dbxForgeFieldDisabled();
|
|
7585
7780
|
// Error handling
|
|
7586
7781
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
7587
7782
|
showErrors = shouldShowErrors(this.field);
|
|
7588
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
7783
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
7784
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
7589
7785
|
// ARIA
|
|
7590
|
-
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null),
|
|
7786
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
7787
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
7591
7788
|
ariaDescribedBySignal = computed(() => {
|
|
7592
7789
|
if (this.errorsToDisplaySignal().length > 0)
|
|
7593
7790
|
return this.errorIdSignal();
|
|
7594
7791
|
if (this.props()?.hint)
|
|
7595
7792
|
return this.hintIdSignal();
|
|
7596
7793
|
return null;
|
|
7597
|
-
},
|
|
7794
|
+
}, /* @ts-ignore */
|
|
7795
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
7598
7796
|
_blur = completeOnDestroy(new Subject());
|
|
7599
7797
|
_blurSub = cleanSubscription();
|
|
7600
7798
|
_valuesSubject = completeOnDestroy(new BehaviorSubject([]));
|
|
@@ -7604,14 +7802,16 @@ class DbxForgeSearchableChipFieldComponent extends AbstractForgeSearchableFieldD
|
|
|
7604
7802
|
// Disabled state propagation
|
|
7605
7803
|
_disabledEffect = effect(() => {
|
|
7606
7804
|
toggleDisableFormControl(this.inputCtrl, this.isDisabled());
|
|
7607
|
-
},
|
|
7805
|
+
}, /* @ts-ignore */
|
|
7806
|
+
...(ngDevMode ? [{ debugName: "_disabledEffect" }] : /* istanbul ignore next */ []));
|
|
7608
7807
|
_syncFieldValueEffect = effect(() => {
|
|
7609
7808
|
const fieldGetter = this.field();
|
|
7610
7809
|
const fieldState = typeof fieldGetter === 'function' ? fieldGetter() : undefined;
|
|
7611
7810
|
const fieldValue = fieldState?.value?.();
|
|
7612
7811
|
const values = fieldValue == null ? [] : convertMaybeToArray(fieldValue).filter((v) => v != null && v !== '');
|
|
7613
7812
|
this._valuesSubject.next(values);
|
|
7614
|
-
},
|
|
7813
|
+
}, /* @ts-ignore */
|
|
7814
|
+
...(ngDevMode ? [{ debugName: "_syncFieldValueEffect" }] : /* istanbul ignore next */ []));
|
|
7615
7815
|
constructor() {
|
|
7616
7816
|
super();
|
|
7617
7817
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });
|
|
@@ -7746,12 +7946,12 @@ class DbxForgeSearchableChipFieldComponent extends AbstractForgeSearchableFieldD
|
|
|
7746
7946
|
fieldState.value.set(newValue ?? null);
|
|
7747
7947
|
}
|
|
7748
7948
|
}
|
|
7749
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
7750
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
7949
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeSearchableChipFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
7950
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeSearchableChipFieldComponent, isStandalone: true, selector: "dbx-forge-searchable-chip-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null } }, usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-searchable-field dbx-searchable-chip-field\">\n <mat-chip-grid #chipGrid>\n @for (dv of displayValuesSignal(); track $index) {\n <mat-chip-row (removed)=\"removeWithDisplayValue(dv)\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"dv\"></dbx-searchable-field-autocomplete-item>\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n <input\n #textInput\n class=\"dbx-forge-bare-input\"\n [class.dbx-warn]=\"inputErrorMessage\"\n [formControl]=\"inputCtrl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"addChip($event)\"\n [placeholder]=\"searchInputPlaceholderSignal()\"\n (blur)=\"onBlur()\"\n (keydown)=\"tabPressedOnInput($event)\"\n [attr.aria-invalid]=\"ariaInvalidSignal()\"\n [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n </mat-chip-grid>\n @if (inputCtrl.value && inputCtrl.touched && inputErrorMessage) {\n <div class=\"dbx-small mat-mdc-form-field-error mat-mdc-form-field-bottom-align\">{{ inputErrorMessage }}</div>\n }\n</div>\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto=\"matAutocomplete\" (optionSelected)=\"selectedChip($event)\">\n @for (result of searchResultsSignal(); track $index) {\n <mat-option [value]=\"result\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"result\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n }\n</mat-autocomplete>\n", dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatAutocompleteModule }, { kind: "component", type: i2$1.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: "component", type: i2$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "directive", type: i2$1.MatAutocompleteTrigger, selector: "input[matAutocomplete], textarea[matAutocomplete]", inputs: ["matAutocomplete", "matAutocompletePosition", "matAutocompleteConnectedTo", "autocomplete", "matAutocompleteDisabled"], exportAs: ["matAutocompleteTrigger"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "component", type: i3$1.MatChipGrid, selector: "mat-chip-grid", inputs: ["disabled", "placeholder", "required", "value", "errorStateMatcher"], outputs: ["change", "valueChange"] }, { kind: "directive", type: i3$1.MatChipInput, selector: "input[matChipInputFor]", inputs: ["matChipInputFor", "matChipInputAddOnBlur", "matChipInputSeparatorKeyCodes", "placeholder", "id", "disabled", "readonly", "matChipInputDisabledInteractive"], outputs: ["matChipInputTokenEnd"], exportAs: ["matChipInput", "matChipInputFor"] }, { kind: "directive", type: i3$1.MatChipRemove, selector: "[matChipRemove]" }, { kind: "component", type: i3$1.MatChipRow, selector: "mat-chip-row, [mat-chip-row], mat-basic-chip-row, [mat-basic-chip-row]", inputs: ["editable"], outputs: ["edited"] }, { kind: "ngmodule", type: MatOptionModule }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: DbxLoadingModule }, { kind: "component", type: DbxSearchableFieldAutocompleteItemComponent, selector: "dbx-searchable-field-autocomplete-item", inputs: ["displayValue"] }] });
|
|
7751
7951
|
}
|
|
7752
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
7952
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeSearchableChipFieldComponent, decorators: [{
|
|
7753
7953
|
type: Component,
|
|
7754
|
-
args: [{ selector: 'dbx-forge-searchable-chip-field', imports: [FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatChipsModule, MatOptionModule, MatIconModule, DbxLoadingModule, DbxSearchableFieldAutocompleteItemComponent],
|
|
7954
|
+
args: [{ selector: 'dbx-forge-searchable-chip-field', imports: [FormsModule, ReactiveFormsModule, MatAutocompleteModule, MatChipsModule, MatOptionModule, MatIconModule, DbxLoadingModule, DbxSearchableFieldAutocompleteItemComponent], template: "<div class=\"dbx-searchable-field dbx-searchable-chip-field\">\n <mat-chip-grid #chipGrid>\n @for (dv of displayValuesSignal(); track $index) {\n <mat-chip-row (removed)=\"removeWithDisplayValue(dv)\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"dv\"></dbx-searchable-field-autocomplete-item>\n <button matChipRemove>\n <mat-icon>cancel</mat-icon>\n </button>\n </mat-chip-row>\n }\n <input\n #textInput\n class=\"dbx-forge-bare-input\"\n [class.dbx-warn]=\"inputErrorMessage\"\n [formControl]=\"inputCtrl\"\n [matAutocomplete]=\"auto\"\n [matChipInputFor]=\"chipGrid\"\n [matChipInputSeparatorKeyCodes]=\"separatorKeysCodes\"\n (matChipInputTokenEnd)=\"addChip($event)\"\n [placeholder]=\"searchInputPlaceholderSignal()\"\n (blur)=\"onBlur()\"\n (keydown)=\"tabPressedOnInput($event)\"\n [attr.aria-invalid]=\"ariaInvalidSignal()\"\n [attr.aria-describedby]=\"ariaDescribedBySignal()\" />\n </mat-chip-grid>\n @if (inputCtrl.value && inputCtrl.touched && inputErrorMessage) {\n <div class=\"dbx-small mat-mdc-form-field-error mat-mdc-form-field-bottom-align\">{{ inputErrorMessage }}</div>\n }\n</div>\n<mat-autocomplete class=\"dbx-searchable-text-field-autocomplete\" #auto=\"matAutocomplete\" (optionSelected)=\"selectedChip($event)\">\n @for (result of searchResultsSignal(); track $index) {\n <mat-option [value]=\"result\">\n <dbx-searchable-field-autocomplete-item [displayValue]=\"result\"></dbx-searchable-field-autocomplete-item>\n </mat-option>\n }\n</mat-autocomplete>\n" }]
|
|
7755
7955
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }] } });
|
|
7756
7956
|
|
|
7757
7957
|
var searchableChip_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -7779,16 +7979,26 @@ const FORGE_PICKABLE_LIST_FIELD_TYPE = 'dbx-pickable-list';
|
|
|
7779
7979
|
*/
|
|
7780
7980
|
class AbstractForgePickableItemFieldDirective {
|
|
7781
7981
|
// MARK: ng-forge ValueFieldComponent Inputs
|
|
7782
|
-
field = input.required(
|
|
7783
|
-
|
|
7784
|
-
|
|
7785
|
-
|
|
7786
|
-
|
|
7787
|
-
|
|
7788
|
-
|
|
7789
|
-
|
|
7790
|
-
|
|
7791
|
-
|
|
7982
|
+
field = input.required(/* @ts-ignore */
|
|
7983
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
7984
|
+
key = input.required(/* @ts-ignore */
|
|
7985
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
7986
|
+
label = input(/* @ts-ignore */
|
|
7987
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
7988
|
+
placeholder = input(/* @ts-ignore */
|
|
7989
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
7990
|
+
className = input('', /* @ts-ignore */
|
|
7991
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
7992
|
+
tabIndex = input(/* @ts-ignore */
|
|
7993
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
7994
|
+
props = input(/* @ts-ignore */
|
|
7995
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
7996
|
+
meta = input(/* @ts-ignore */
|
|
7997
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
7998
|
+
validationMessages = input(/* @ts-ignore */
|
|
7999
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
8000
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
8001
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
7792
8002
|
inputCtrl = new FormControl('');
|
|
7793
8003
|
_clearDisplayHashMapSub = cleanSubscription();
|
|
7794
8004
|
_displayHashMap = completeOnDestroy(new BehaviorSubject(new Map()));
|
|
@@ -7797,35 +8007,49 @@ class AbstractForgePickableItemFieldDirective {
|
|
|
7797
8007
|
labelSignal = computed(() => {
|
|
7798
8008
|
const l = this.label();
|
|
7799
8009
|
return typeof l === 'string' ? l : undefined;
|
|
7800
|
-
},
|
|
7801
|
-
|
|
7802
|
-
|
|
8010
|
+
}, /* @ts-ignore */
|
|
8011
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
8012
|
+
hintSignal = computed(() => this.props()?.hint, /* @ts-ignore */
|
|
8013
|
+
...(ngDevMode ? [{ debugName: "hintSignal" }] : /* istanbul ignore next */ []));
|
|
8014
|
+
multiSelectSignal = computed(() => this.props()?.multiSelect ?? true, /* @ts-ignore */
|
|
8015
|
+
...(ngDevMode ? [{ debugName: "multiSelectSignal" }] : /* istanbul ignore next */ []));
|
|
7803
8016
|
isDisabled = dbxForgeFieldDisabled();
|
|
7804
8017
|
readonlySignal = computed(() => {
|
|
7805
8018
|
const fieldGetter = this.field();
|
|
7806
8019
|
const fieldState = typeof fieldGetter === 'function' ? fieldGetter() : undefined;
|
|
7807
8020
|
return fieldState?.readonly?.() ?? false;
|
|
7808
|
-
},
|
|
8021
|
+
}, /* @ts-ignore */
|
|
8022
|
+
...(ngDevMode ? [{ debugName: "readonlySignal" }] : /* istanbul ignore next */ []));
|
|
7809
8023
|
isDisabledOrReadonlySignal = computed(() => {
|
|
7810
8024
|
const readonly = this.readonlySignal();
|
|
7811
8025
|
return this.isDisabled() || readonly;
|
|
7812
|
-
},
|
|
7813
|
-
|
|
8026
|
+
}, /* @ts-ignore */
|
|
8027
|
+
...(ngDevMode ? [{ debugName: "isDisabledOrReadonlySignal" }] : /* istanbul ignore next */ []));
|
|
8028
|
+
showSelectAllButtonSignal = computed(() => this.props()?.showSelectAllButton ?? false, /* @ts-ignore */
|
|
8029
|
+
...(ngDevMode ? [{ debugName: "showSelectAllButtonSignal" }] : /* istanbul ignore next */ []));
|
|
7814
8030
|
showTextFilterSignal = computed(() => {
|
|
7815
8031
|
const props = this.props();
|
|
7816
8032
|
return this.props()?.showTextFilter ?? Boolean(props?.filterValues);
|
|
7817
|
-
},
|
|
7818
|
-
|
|
7819
|
-
|
|
8033
|
+
}, /* @ts-ignore */
|
|
8034
|
+
...(ngDevMode ? [{ debugName: "showTextFilterSignal" }] : /* istanbul ignore next */ []));
|
|
8035
|
+
filterLabelSignal = computed(() => this.props()?.filterLabel, /* @ts-ignore */
|
|
8036
|
+
...(ngDevMode ? [{ debugName: "filterLabelSignal" }] : /* istanbul ignore next */ []));
|
|
8037
|
+
footerConfigSignal = computed(() => this.props()?.footerConfig, /* @ts-ignore */
|
|
8038
|
+
...(ngDevMode ? [{ debugName: "footerConfigSignal" }] : /* istanbul ignore next */ []));
|
|
7820
8039
|
// Error handling
|
|
7821
8040
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
7822
8041
|
showErrors = shouldShowErrors(this.field);
|
|
7823
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
8042
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
8043
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
7824
8044
|
// ARIA
|
|
7825
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
7826
|
-
|
|
7827
|
-
|
|
7828
|
-
|
|
8045
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
8046
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
8047
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
8048
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
8049
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
8050
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
8051
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
8052
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
7829
8053
|
ariaDescribedBySignal = computed(() => {
|
|
7830
8054
|
const errorId = this.errorIdSignal();
|
|
7831
8055
|
const props = this.props();
|
|
@@ -7838,7 +8062,8 @@ class AbstractForgePickableItemFieldDirective {
|
|
|
7838
8062
|
result = hintId;
|
|
7839
8063
|
}
|
|
7840
8064
|
return result;
|
|
7841
|
-
},
|
|
8065
|
+
}, /* @ts-ignore */
|
|
8066
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
7842
8067
|
get _pickOnlyOne() {
|
|
7843
8068
|
const p = this.props();
|
|
7844
8069
|
const asArrayValue = p?.asArrayValue ?? true;
|
|
@@ -7899,7 +8124,8 @@ class AbstractForgePickableItemFieldDirective {
|
|
|
7899
8124
|
allSelectedSignal = computed(() => {
|
|
7900
8125
|
const items = this.itemsSignal();
|
|
7901
8126
|
return items.length > 0 && items.every((x) => x.selected);
|
|
7902
|
-
},
|
|
8127
|
+
}, /* @ts-ignore */
|
|
8128
|
+
...(ngDevMode ? [{ debugName: "allSelectedSignal" }] : /* istanbul ignore next */ []));
|
|
7903
8129
|
// Sync field value to _valuesSubject
|
|
7904
8130
|
_syncFieldValueEffect = effect(() => {
|
|
7905
8131
|
const fieldGetter = this.field();
|
|
@@ -7910,7 +8136,8 @@ class AbstractForgePickableItemFieldDirective {
|
|
|
7910
8136
|
// otherwise show up as a phantom selection when the user picks an item.
|
|
7911
8137
|
const values = filterEmptyArrayValues(convertMaybeToArray(fieldValue));
|
|
7912
8138
|
this._valuesSubject.next(values);
|
|
7913
|
-
},
|
|
8139
|
+
}, /* @ts-ignore */
|
|
8140
|
+
...(ngDevMode ? [{ debugName: "_syncFieldValueEffect" }] : /* istanbul ignore next */ []));
|
|
7914
8141
|
// MARK: Lifecycle
|
|
7915
8142
|
ngOnInit() {
|
|
7916
8143
|
const p = this.props();
|
|
@@ -8010,10 +8237,10 @@ class AbstractForgePickableItemFieldDirective {
|
|
|
8010
8237
|
return of(hasDisplay.map((x) => x[3]));
|
|
8011
8238
|
}));
|
|
8012
8239
|
}
|
|
8013
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8014
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
8240
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractForgePickableItemFieldDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
8241
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: AbstractForgePickableItemFieldDirective, isStandalone: true, inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
8015
8242
|
}
|
|
8016
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8243
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractForgePickableItemFieldDirective, decorators: [{
|
|
8017
8244
|
type: Directive
|
|
8018
8245
|
}], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
8019
8246
|
|
|
@@ -8102,12 +8329,12 @@ class DbxForgePickableChipFieldComponent extends AbstractForgePickableItemFieldD
|
|
|
8102
8329
|
this._setValues(allValues);
|
|
8103
8330
|
}
|
|
8104
8331
|
}
|
|
8105
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8106
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
8332
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePickableChipFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8333
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgePickableChipFieldComponent, isStandalone: true, selector: "dbx-forge-pickable-chip-field", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-pickable-item-field\">\n @if (showTextFilterSignal()) {\n <div class=\"dbx-pickable-item-field-filter\">\n @if (filterLabelSignal()) {\n <div class=\"dbx-label\">{{ filterLabelSignal() }}</div>\n }\n <input class=\"dbx-forge-bare-input\" [placeholder]=\"'Filter'\" [formControl]=\"inputCtrl\" />\n <mat-divider></mat-divider>\n </div>\n }\n <div class=\"dbx-pickable-item-field-chips\">\n <mat-chip-listbox [multiple]=\"multiSelectSignal()\" [selectable]=\"!isDisabledOrReadonlySignal()\" [disabled]=\"isDisabledOrReadonlySignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @if (showSelectAllButtonSignal() && multiSelectSignal() && !isDisabledOrReadonlySignal()) {\n <mat-chip-option (click)=\"toggleAll()\" [selected]=\"allSelectedSignal()\">\n <span class=\"dbx-chip-label\">All</span>\n </mat-chip-option>\n }\n @for (item of itemsSignal(); track item.key) {\n <mat-chip-option (click)=\"itemClicked(item)\" [selected]=\"item.selected\" [disabled]=\"readonlySignal() || item.disabled\">\n @if (item.itemValue.icon) {\n <mat-icon matChipAvatar>{{ item.itemValue.icon }}</mat-icon>\n }\n <span class=\"dbx-chip-label\">{{ item.itemValue.label }}</span>\n @if (item.itemValue.sublabel) {\n <span class=\"dbx-chip-sublabel\">{{ item.itemValue.sublabel }}</span>\n }\n </mat-chip-option>\n }\n </mat-chip-listbox>\n <dbx-injection [config]=\"footerConfigSignal()\"></dbx-injection>\n </div>\n @if (noItemsAvailableSignal()) {\n <output class=\"dbx-label\">No items match this filter.</output>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatChipsModule }, { kind: "directive", type: i3$1.MatChipAvatar, selector: "mat-chip-avatar, [matChipAvatar]" }, { kind: "component", type: i3$1.MatChipListbox, selector: "mat-chip-listbox", inputs: ["multiple", "aria-orientation", "selectable", "compareWith", "required", "hideSingleSelectionIndicator", "value"], outputs: ["change"] }, { kind: "component", type: i3$1.MatChipOption, selector: "mat-basic-chip-option, [mat-basic-chip-option], mat-chip-option, [mat-chip-option]", inputs: ["selectable", "selected"], outputs: ["selectionChange"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }] });
|
|
8107
8334
|
}
|
|
8108
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8335
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePickableChipFieldComponent, decorators: [{
|
|
8109
8336
|
type: Component,
|
|
8110
|
-
args: [{ selector: 'dbx-forge-pickable-chip-field', imports: [ReactiveFormsModule, MatChipsModule, MatIconModule, MatDivider, DbxInjectionComponent],
|
|
8337
|
+
args: [{ selector: 'dbx-forge-pickable-chip-field', imports: [ReactiveFormsModule, MatChipsModule, MatIconModule, MatDivider, DbxInjectionComponent], template: "<div class=\"dbx-pickable-item-field\">\n @if (showTextFilterSignal()) {\n <div class=\"dbx-pickable-item-field-filter\">\n @if (filterLabelSignal()) {\n <div class=\"dbx-label\">{{ filterLabelSignal() }}</div>\n }\n <input class=\"dbx-forge-bare-input\" [placeholder]=\"'Filter'\" [formControl]=\"inputCtrl\" />\n <mat-divider></mat-divider>\n </div>\n }\n <div class=\"dbx-pickable-item-field-chips\">\n <mat-chip-listbox [multiple]=\"multiSelectSignal()\" [selectable]=\"!isDisabledOrReadonlySignal()\" [disabled]=\"isDisabledOrReadonlySignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @if (showSelectAllButtonSignal() && multiSelectSignal() && !isDisabledOrReadonlySignal()) {\n <mat-chip-option (click)=\"toggleAll()\" [selected]=\"allSelectedSignal()\">\n <span class=\"dbx-chip-label\">All</span>\n </mat-chip-option>\n }\n @for (item of itemsSignal(); track item.key) {\n <mat-chip-option (click)=\"itemClicked(item)\" [selected]=\"item.selected\" [disabled]=\"readonlySignal() || item.disabled\">\n @if (item.itemValue.icon) {\n <mat-icon matChipAvatar>{{ item.itemValue.icon }}</mat-icon>\n }\n <span class=\"dbx-chip-label\">{{ item.itemValue.label }}</span>\n @if (item.itemValue.sublabel) {\n <span class=\"dbx-chip-sublabel\">{{ item.itemValue.sublabel }}</span>\n }\n </mat-chip-option>\n }\n </mat-chip-listbox>\n <dbx-injection [config]=\"footerConfigSignal()\"></dbx-injection>\n </div>\n @if (noItemsAvailableSignal()) {\n <output class=\"dbx-label\">No items match this filter.</output>\n }\n</div>\n" }]
|
|
8111
8338
|
}], ctorParameters: () => [] });
|
|
8112
8339
|
|
|
8113
8340
|
var pickableChip_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -8142,12 +8369,12 @@ class DbxForgePickableListFieldComponent extends AbstractForgePickableItemFieldD
|
|
|
8142
8369
|
this._setValues(allValues);
|
|
8143
8370
|
}
|
|
8144
8371
|
}
|
|
8145
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8146
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
8372
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePickableListFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8373
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgePickableListFieldComponent, isStandalone: true, selector: "dbx-forge-pickable-list-field", usesInheritance: true, ngImport: i0, template: "<div class=\"dbx-pickable-item-field dbx-pickable-item-field-list\">\n @if (showTextFilterSignal()) {\n <div class=\"dbx-pickable-item-field-filter\">\n @if (filterLabelSignal()) {\n <div class=\"dbx-label\">{{ filterLabelSignal() }}</div>\n }\n <input class=\"dbx-forge-bare-input\" [placeholder]=\"'Filter'\" [formControl]=\"inputCtrl\" />\n <mat-divider></mat-divider>\n </div>\n }\n @if (showSelectAllButtonSignal() && multiSelectSignal() && !isDisabledOrReadonlySignal()) {\n <div class=\"dbx-pickable-item-field-select-all\">\n <button class=\"dbx-pickable-select-all-button\" type=\"button\" (click)=\"toggleAll()\">{{ allSelectedSignal() ? 'Deselect All' : 'Select All' }}</button>\n <mat-divider></mat-divider>\n </div>\n }\n <div class=\"dbx-pickable-item-field-list-content\">\n <mat-selection-list [multiple]=\"multiSelectSignal()\" [disabled]=\"isDisabledOrReadonlySignal()\" (selectionChange)=\"onSelectionChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @for (item of itemsSignal(); track item.key) {\n <mat-list-option class=\"dbx-list-view-item\" [value]=\"item.itemValue.value\" [selected]=\"item.selected\" [disabled]=\"readonlySignal() || item.disabled\">\n @if (item.itemValue.icon) {\n <mat-icon matListItemIcon>{{ item.itemValue.icon }}</mat-icon>\n }\n <div class=\"dbx-default-pickable-item-field-list-item dbx-flex-bar\">\n <span class=\"dbx-chip-label\">{{ item.itemValue.label }}</span>\n @if (item.itemValue.sublabel) {\n <span class=\"dbx-chip-sublabel\">({{ item.itemValue.sublabel }})</span>\n }\n </div>\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n <dbx-injection [config]=\"footerConfigSignal()\"></dbx-injection>\n @if (noItemsAvailableSignal()) {\n <output class=\"dbx-label\">No items match this filter.</output>\n }\n</div>\n", dependencies: [{ kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.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: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "ngmodule", type: MatListModule }, { kind: "component", type: i2$2.MatSelectionList, selector: "mat-selection-list", inputs: ["color", "compareWith", "multiple", "hideSingleSelectionIndicator", "disabled"], outputs: ["selectionChange"], exportAs: ["matSelectionList"] }, { kind: "component", type: i2$2.MatListOption, selector: "mat-list-option", inputs: ["togglePosition", "color", "value", "selected"], outputs: ["selectedChange"], exportAs: ["matListOption"] }, { kind: "directive", type: i2$2.MatListItemIcon, selector: "[matListItemIcon]" }, { kind: "component", type: i7.MatDivider, selector: "mat-divider", inputs: ["vertical", "inset"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }] });
|
|
8147
8374
|
}
|
|
8148
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8375
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePickableListFieldComponent, decorators: [{
|
|
8149
8376
|
type: Component,
|
|
8150
|
-
args: [{ selector: 'dbx-forge-pickable-list-field', imports: [ReactiveFormsModule, MatListModule, MatIconModule, MatDivider, DbxInjectionComponent],
|
|
8377
|
+
args: [{ selector: 'dbx-forge-pickable-list-field', imports: [ReactiveFormsModule, MatListModule, MatIconModule, MatDivider, DbxInjectionComponent], template: "<div class=\"dbx-pickable-item-field dbx-pickable-item-field-list\">\n @if (showTextFilterSignal()) {\n <div class=\"dbx-pickable-item-field-filter\">\n @if (filterLabelSignal()) {\n <div class=\"dbx-label\">{{ filterLabelSignal() }}</div>\n }\n <input class=\"dbx-forge-bare-input\" [placeholder]=\"'Filter'\" [formControl]=\"inputCtrl\" />\n <mat-divider></mat-divider>\n </div>\n }\n @if (showSelectAllButtonSignal() && multiSelectSignal() && !isDisabledOrReadonlySignal()) {\n <div class=\"dbx-pickable-item-field-select-all\">\n <button class=\"dbx-pickable-select-all-button\" type=\"button\" (click)=\"toggleAll()\">{{ allSelectedSignal() ? 'Deselect All' : 'Select All' }}</button>\n <mat-divider></mat-divider>\n </div>\n }\n <div class=\"dbx-pickable-item-field-list-content\">\n <mat-selection-list [multiple]=\"multiSelectSignal()\" [disabled]=\"isDisabledOrReadonlySignal()\" (selectionChange)=\"onSelectionChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @for (item of itemsSignal(); track item.key) {\n <mat-list-option class=\"dbx-list-view-item\" [value]=\"item.itemValue.value\" [selected]=\"item.selected\" [disabled]=\"readonlySignal() || item.disabled\">\n @if (item.itemValue.icon) {\n <mat-icon matListItemIcon>{{ item.itemValue.icon }}</mat-icon>\n }\n <div class=\"dbx-default-pickable-item-field-list-item dbx-flex-bar\">\n <span class=\"dbx-chip-label\">{{ item.itemValue.label }}</span>\n @if (item.itemValue.sublabel) {\n <span class=\"dbx-chip-sublabel\">({{ item.itemValue.sublabel }})</span>\n }\n </div>\n </mat-list-option>\n }\n </mat-selection-list>\n </div>\n <dbx-injection [config]=\"footerConfigSignal()\"></dbx-injection>\n @if (noItemsAvailableSignal()) {\n <output class=\"dbx-label\">No items match this filter.</output>\n }\n</div>\n" }]
|
|
8151
8378
|
}], ctorParameters: () => [] });
|
|
8152
8379
|
|
|
8153
8380
|
var pickableList_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -8208,16 +8435,26 @@ class DbxForgeSourceSelectFieldComponent {
|
|
|
8208
8435
|
materialConfig = inject(MATERIAL_CONFIG, { optional: true });
|
|
8209
8436
|
elementRef = inject((ElementRef));
|
|
8210
8437
|
// ng-forge ValueFieldComponent inputs
|
|
8211
|
-
field = input.required(
|
|
8212
|
-
|
|
8213
|
-
|
|
8214
|
-
|
|
8215
|
-
|
|
8216
|
-
|
|
8217
|
-
|
|
8218
|
-
|
|
8219
|
-
|
|
8220
|
-
|
|
8438
|
+
field = input.required(/* @ts-ignore */
|
|
8439
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
8440
|
+
key = input.required(/* @ts-ignore */
|
|
8441
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
8442
|
+
label = input(/* @ts-ignore */
|
|
8443
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
8444
|
+
placeholder = input(/* @ts-ignore */
|
|
8445
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
8446
|
+
className = input('', /* @ts-ignore */
|
|
8447
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
8448
|
+
tabIndex = input(/* @ts-ignore */
|
|
8449
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
8450
|
+
props = input(/* @ts-ignore */
|
|
8451
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
8452
|
+
meta = input(/* @ts-ignore */
|
|
8453
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
8454
|
+
validationMessages = input(/* @ts-ignore */
|
|
8455
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
8456
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
8457
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
8221
8458
|
// Disabled state
|
|
8222
8459
|
isDisabled = dbxForgeFieldDisabled();
|
|
8223
8460
|
_cacheMetaSub = cleanSubscription();
|
|
@@ -8231,19 +8468,27 @@ class DbxForgeSourceSelectFieldComponent {
|
|
|
8231
8468
|
buttonElement = viewChild('button', { ...(ngDevMode ? { debugName: "buttonElement" } : /* istanbul ignore next */ {}), read: (ElementRef) });
|
|
8232
8469
|
filterInputElement = viewChild('filterInput', { ...(ngDevMode ? { debugName: "filterInputElement" } : /* istanbul ignore next */ {}), read: (ElementRef) });
|
|
8233
8470
|
// Computed signals from props
|
|
8234
|
-
hintSignal = computed(() => this.props()?.hint,
|
|
8471
|
+
hintSignal = computed(() => this.props()?.hint, /* @ts-ignore */
|
|
8472
|
+
...(ngDevMode ? [{ debugName: "hintSignal" }] : /* istanbul ignore next */ []));
|
|
8235
8473
|
// Material config
|
|
8236
|
-
effectiveAppearanceSignal = computed(() => this.materialConfig?.appearance ?? 'outline',
|
|
8237
|
-
|
|
8474
|
+
effectiveAppearanceSignal = computed(() => this.materialConfig?.appearance ?? 'outline', /* @ts-ignore */
|
|
8475
|
+
...(ngDevMode ? [{ debugName: "effectiveAppearanceSignal" }] : /* istanbul ignore next */ []));
|
|
8476
|
+
effectiveSubscriptSizingSignal = computed(() => this.materialConfig?.subscriptSizing ?? 'dynamic', /* @ts-ignore */
|
|
8477
|
+
...(ngDevMode ? [{ debugName: "effectiveSubscriptSizingSignal" }] : /* istanbul ignore next */ []));
|
|
8238
8478
|
// Error handling
|
|
8239
8479
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
8240
8480
|
showErrors = shouldShowErrors(this.field);
|
|
8241
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
8481
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
8482
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
8242
8483
|
// ARIA
|
|
8243
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
8244
|
-
|
|
8245
|
-
|
|
8246
|
-
|
|
8484
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
8485
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
8486
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
8487
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
8488
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
8489
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
8490
|
+
ariaRequiredSignal = computed(() => (this.field()().required() ? 'true' : null), /* @ts-ignore */
|
|
8491
|
+
...(ngDevMode ? [{ debugName: "ariaRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
8247
8492
|
ariaDescribedBySignal = computed(() => {
|
|
8248
8493
|
const errorId = this.errorIdSignal();
|
|
8249
8494
|
const hintId = this.hintIdSignal();
|
|
@@ -8252,13 +8497,20 @@ class DbxForgeSourceSelectFieldComponent {
|
|
|
8252
8497
|
if (this.props()?.hint)
|
|
8253
8498
|
return hintId;
|
|
8254
8499
|
return null;
|
|
8255
|
-
},
|
|
8256
|
-
|
|
8257
|
-
|
|
8258
|
-
|
|
8259
|
-
|
|
8260
|
-
|
|
8261
|
-
|
|
8500
|
+
}, /* @ts-ignore */
|
|
8501
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
8502
|
+
multipleSignal = computed(() => this.props()?.multiple ?? false, /* @ts-ignore */
|
|
8503
|
+
...(ngDevMode ? [{ debugName: "multipleSignal" }] : /* istanbul ignore next */ []));
|
|
8504
|
+
showOpenSourceButtonSignal = computed(() => Boolean(this.props()?.openSource), /* @ts-ignore */
|
|
8505
|
+
...(ngDevMode ? [{ debugName: "showOpenSourceButtonSignal" }] : /* istanbul ignore next */ []));
|
|
8506
|
+
selectButtonIconSignal = computed(() => this.props()?.selectButtonIcon ?? 'add', /* @ts-ignore */
|
|
8507
|
+
...(ngDevMode ? [{ debugName: "selectButtonIconSignal" }] : /* istanbul ignore next */ []));
|
|
8508
|
+
filterableSignal = computed(() => this.props()?.filterable !== false, /* @ts-ignore */
|
|
8509
|
+
...(ngDevMode ? [{ debugName: "filterableSignal" }] : /* istanbul ignore next */ []));
|
|
8510
|
+
filterableGroupsSignal = computed(() => this.props()?.filterableGroups !== false, /* @ts-ignore */
|
|
8511
|
+
...(ngDevMode ? [{ debugName: "filterableGroupsSignal" }] : /* istanbul ignore next */ []));
|
|
8512
|
+
selectPanelClassSignal = computed(() => (this.filterableSignal() ? 'dbx-source-select-filterable-panel' : ''), /* @ts-ignore */
|
|
8513
|
+
...(ngDevMode ? [{ debugName: "selectPanelClassSignal" }] : /* istanbul ignore next */ []));
|
|
8262
8514
|
values$ = this._valuesSubject.asObservable().pipe(shareReplay(1));
|
|
8263
8515
|
allValuesEverSelected$ = this.values$.pipe(scan((acc, values) => {
|
|
8264
8516
|
let result = acc;
|
|
@@ -8374,7 +8626,8 @@ class DbxForgeSourceSelectFieldComponent {
|
|
|
8374
8626
|
// ng-forge can seed the field with the empty-string primitive default; treat nullish/empty as unset.
|
|
8375
8627
|
const values = filterEmptyArrayValues(fieldValue == null ? [] : convertMaybeToArray(fieldValue));
|
|
8376
8628
|
this._valuesSubject.next(values);
|
|
8377
|
-
},
|
|
8629
|
+
}, /* @ts-ignore */
|
|
8630
|
+
...(ngDevMode ? [{ debugName: "_syncFieldValueEffect" }] : /* istanbul ignore next */ []));
|
|
8378
8631
|
constructor() {
|
|
8379
8632
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'mat-select' });
|
|
8380
8633
|
}
|
|
@@ -8529,17 +8782,17 @@ class DbxForgeSourceSelectFieldComponent {
|
|
|
8529
8782
|
return of(hasDisplay.map((x) => x[3]));
|
|
8530
8783
|
}));
|
|
8531
8784
|
}
|
|
8532
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8533
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
8785
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeSourceSelectFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
8786
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeSourceSelectFieldComponent, isStandalone: true, selector: "dbx-forge-source-select-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "id": "`${key()}`", "attr.data-testid": "key()", "class": "className()", "attr.hidden": "field()().hidden() || null" } }, viewQueries: [{ propertyName: "buttonElement", first: true, predicate: ["button"], descendants: true, read: ElementRef, isSignal: true }, { propertyName: "filterInputElement", first: true, predicate: ["filterInput"], descendants: true, read: ElementRef, isSignal: true }], ngImport: i0, template: "@let f = field();\n@let selectId = key() + '-select';\n\n<mat-form-field class=\"dbx-w100\" [appearance]=\"effectiveAppearanceSignal()\" [subscriptSizing]=\"effectiveSubscriptSizingSignal()\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <mat-select [id]=\"selectId\" [formField]=\"f\" [multiple]=\"multipleSignal()\" [panelClass]=\"selectPanelClassSignal()\" (openedChange)=\"onSelectOpenedChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @if (filterableSignal()) {\n <div class=\"dbx-source-select-filter-container\">\n <input #filterInput class=\"dbx-forge-bare-input dbx-source-select-filter-input\" type=\"text\" placeholder=\"Type to filter...\" (input)=\"onFilterInput($event)\" (keydown)=\"onFilterKeydown($event)\" />\n </div>\n }\n @for (value of filteredNonGroupedValuesSignal(); track value.value) {\n <mat-option [value]=\"value.value\">{{ value.label }}</mat-option>\n }\n @for (optionGroup of filteredGroupedOptionsSignal(); track optionGroup.label) {\n <mat-optgroup [label]=\"optionGroup.label\">\n @for (value of optionGroup.values; track value.value) {\n <mat-option [value]=\"value.value\">{{ value.label }}</mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n\n @if (showOpenSourceButtonSignal() && !isDisabled()) {\n <div matSuffix class=\"dbx-source-select-field-suffix\">\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\" dbxActionSnackbarError>\n <dbx-button #button dbxActionButton [fab]=\"true\" [iconOnly]=\"true\" [icon]=\"selectButtonIconSignal()\"></dbx-button>\n </dbx-action>\n </div>\n }\n\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (hintSignal()) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hintSignal() }}</mat-hint>\n }\n</mat-form-field>\n", dependencies: [{ kind: "directive", type: DbxActionSnackbarErrorDirective, selector: "[dbxActionSnackbarError]", inputs: ["dbxActionSnackbarError"] }, { 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: "component", type: 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", "canSelectNullableOptions"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: MatOptgroup, selector: "mat-optgroup", inputs: ["label", "disabled"], exportAs: ["matOptgroup"] }, { 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: FormField, selector: "[formField]", inputs: ["formField"], exportAs: ["formField"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }, { kind: "ngmodule", type: DbxActionModule }, { kind: "directive", type: i1.DbxActionDirective, selector: "dbx-action,[dbxAction]", exportAs: ["action", "dbxAction"] }, { kind: "directive", type: i1.DbxActionHandlerDirective, selector: "[dbxActionHandler]", inputs: ["dbxActionHandler"] }, { kind: "directive", type: i1.DbxActionValueDirective, selector: "dbxActionValue,[dbxActionValue]", inputs: ["dbxActionValue"] }, { kind: "directive", type: i1.DbxActionButtonDirective, selector: "[dbxActionButton]", inputs: ["dbxActionButtonEcho"] }, { kind: "component", type: DbxLoadingComponent, selector: "dbx-loading", inputs: ["padding", "show", "text", "mode", "diameter", "linear", "loading", "error", "context"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
8534
8787
|
}
|
|
8535
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
8788
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeSourceSelectFieldComponent, decorators: [{
|
|
8536
8789
|
type: Component,
|
|
8537
|
-
args: [{ selector: 'dbx-forge-source-select-field', imports: [MatFormField, MatLabel, MatSelect, MatOption, MatOptgroup, MatHint, MatError, MatSuffix, FormField, DynamicTextPipe, AsyncPipe, DbxButtonComponent, DbxActionModule, DbxLoadingComponent],
|
|
8790
|
+
args: [{ selector: 'dbx-forge-source-select-field', imports: [DbxActionSnackbarErrorDirective, MatFormField, MatLabel, MatSelect, MatOption, MatOptgroup, MatHint, MatError, MatSuffix, FormField, DynamicTextPipe, AsyncPipe, DbxButtonComponent, DbxActionModule, DbxLoadingComponent], host: {
|
|
8538
8791
|
'[id]': '`${key()}`',
|
|
8539
8792
|
'[attr.data-testid]': 'key()',
|
|
8540
8793
|
'[class]': 'className()',
|
|
8541
8794
|
'[attr.hidden]': 'field()().hidden() || null'
|
|
8542
|
-
}, template: "@let f = field();\n@let selectId = key() + '-select';\n\n<mat-form-field class=\"dbx-w100\" [appearance]=\"effectiveAppearanceSignal()\" [subscriptSizing]=\"effectiveSubscriptSizingSignal()\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <mat-select [id]=\"selectId\" [formField]=\"f\" [multiple]=\"multipleSignal()\" [panelClass]=\"selectPanelClassSignal()\" (openedChange)=\"onSelectOpenedChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @if (filterableSignal()) {\n <div class=\"dbx-source-select-filter-container\">\n <input #filterInput class=\"dbx-forge-bare-input dbx-source-select-filter-input\" type=\"text\" placeholder=\"Type to filter...\" (input)=\"onFilterInput($event)\" (keydown)=\"onFilterKeydown($event)\" />\n </div>\n }\n @for (value of filteredNonGroupedValuesSignal(); track value.value) {\n <mat-option [value]=\"value.value\">{{ value.label }}</mat-option>\n }\n @for (optionGroup of filteredGroupedOptionsSignal(); track optionGroup.label) {\n <mat-optgroup [label]=\"optionGroup.label\">\n @for (value of optionGroup.values; track value.value) {\n <mat-option [value]=\"value.value\">{{ value.label }}</mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n\n @if (showOpenSourceButtonSignal() && !isDisabled()) {\n <div matSuffix class=\"dbx-source-select-field-suffix\">\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\">\n <dbx-button #button dbxActionButton [fab]=\"true\" [iconOnly]=\"true\" [icon]=\"selectButtonIconSignal()\"></dbx-button>\n </dbx-action>\n </div>\n }\n\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (hintSignal()) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hintSignal() }}</mat-hint>\n }\n</mat-form-field>\n" }]
|
|
8795
|
+
}, template: "@let f = field();\n@let selectId = key() + '-select';\n\n<mat-form-field class=\"dbx-w100\" [appearance]=\"effectiveAppearanceSignal()\" [subscriptSizing]=\"effectiveSubscriptSizingSignal()\">\n @if (label(); as label) {\n <mat-label>{{ label | dynamicText | async }}</mat-label>\n }\n\n <mat-select [id]=\"selectId\" [formField]=\"f\" [multiple]=\"multipleSignal()\" [panelClass]=\"selectPanelClassSignal()\" (openedChange)=\"onSelectOpenedChange($event)\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-required]=\"ariaRequiredSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\">\n @if (filterableSignal()) {\n <div class=\"dbx-source-select-filter-container\">\n <input #filterInput class=\"dbx-forge-bare-input dbx-source-select-filter-input\" type=\"text\" placeholder=\"Type to filter...\" (input)=\"onFilterInput($event)\" (keydown)=\"onFilterKeydown($event)\" />\n </div>\n }\n @for (value of filteredNonGroupedValuesSignal(); track value.value) {\n <mat-option [value]=\"value.value\">{{ value.label }}</mat-option>\n }\n @for (optionGroup of filteredGroupedOptionsSignal(); track optionGroup.label) {\n <mat-optgroup [label]=\"optionGroup.label\">\n @for (value of optionGroup.values; track value.value) {\n <mat-option [value]=\"value.value\">{{ value.label }}</mat-option>\n }\n </mat-optgroup>\n }\n </mat-select>\n\n @if (showOpenSourceButtonSignal() && !isDisabled()) {\n <div matSuffix class=\"dbx-source-select-field-suffix\">\n <dbx-action dbxActionValue [dbxActionHandler]=\"handleSelectOptions\" dbxActionSnackbarError>\n <dbx-button #button dbxActionButton [fab]=\"true\" [iconOnly]=\"true\" [icon]=\"selectButtonIconSignal()\"></dbx-button>\n </dbx-action>\n </div>\n }\n\n <dbx-loading class=\"dbx-source-select-field-loading\" [linear]=\"true\" [context]=\"context\"></dbx-loading>\n\n @if (errorsToDisplaySignal()[0]; as error) {\n <mat-error [id]=\"errorIdSignal()\">{{ error.message }}</mat-error>\n } @else if (hintSignal()) {\n <mat-hint [id]=\"hintIdSignal()\">{{ hintSignal() }}</mat-hint>\n }\n</mat-form-field>\n" }]
|
|
8543
8796
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }], buttonElement: [{ type: i0.ViewChild, args: ['button', { ...{ read: (ElementRef) }, isSignal: true }] }], filterInputElement: [{ type: i0.ViewChild, args: ['filterInput', { ...{ read: (ElementRef) }, isSignal: true }] }] } });
|
|
8544
8797
|
|
|
8545
8798
|
var sourceselect_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -8595,16 +8848,26 @@ const dbxForgeListSelectionField = dbxForgeFieldFunction({
|
|
|
8595
8848
|
class DbxForgeListSelectionFieldComponent {
|
|
8596
8849
|
elementRef = inject((ElementRef));
|
|
8597
8850
|
// ng-forge ValueFieldComponent inputs
|
|
8598
|
-
field = input.required(
|
|
8599
|
-
|
|
8600
|
-
|
|
8601
|
-
|
|
8602
|
-
|
|
8603
|
-
|
|
8604
|
-
|
|
8605
|
-
|
|
8606
|
-
|
|
8607
|
-
|
|
8851
|
+
field = input.required(/* @ts-ignore */
|
|
8852
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
8853
|
+
key = input.required(/* @ts-ignore */
|
|
8854
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
8855
|
+
label = input(/* @ts-ignore */
|
|
8856
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
8857
|
+
placeholder = input(/* @ts-ignore */
|
|
8858
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
8859
|
+
className = input('', /* @ts-ignore */
|
|
8860
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
8861
|
+
tabIndex = input(/* @ts-ignore */
|
|
8862
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
8863
|
+
props = input(/* @ts-ignore */
|
|
8864
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
8865
|
+
meta = input(/* @ts-ignore */
|
|
8866
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
8867
|
+
validationMessages = input(/* @ts-ignore */
|
|
8868
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
8869
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
8870
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
8608
8871
|
// Disabled state
|
|
8609
8872
|
isDisabled = dbxForgeFieldDisabled();
|
|
8610
8873
|
isDisabled$ = toObservable(this.isDisabled);
|
|
@@ -8615,8 +8878,10 @@ class DbxForgeListSelectionFieldComponent {
|
|
|
8615
8878
|
labelSignal = computed(() => {
|
|
8616
8879
|
const l = this.label();
|
|
8617
8880
|
return typeof l === 'string' ? l : undefined;
|
|
8618
|
-
},
|
|
8619
|
-
|
|
8881
|
+
}, /* @ts-ignore */
|
|
8882
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
8883
|
+
hintSignal = computed(() => this.props()?.hint, /* @ts-ignore */
|
|
8884
|
+
...(ngDevMode ? [{ debugName: "hintSignal" }] : /* istanbul ignore next */ []));
|
|
8620
8885
|
/**
|
|
8621
8886
|
* Resolves the configured `maxHeight` prop into a CSS length string for the
|
|
8622
8887
|
* `--dbx-forge-list-item-field-height` custom property. Returns `null` when
|
|
@@ -8634,15 +8899,20 @@ class DbxForgeListSelectionFieldComponent {
|
|
|
8634
8899
|
return `${raw}px`;
|
|
8635
8900
|
}
|
|
8636
8901
|
return raw;
|
|
8637
|
-
},
|
|
8902
|
+
}, /* @ts-ignore */
|
|
8903
|
+
...(ngDevMode ? [{ debugName: "maxHeightCssVarSignal" }] : /* istanbul ignore next */ []));
|
|
8638
8904
|
// Error handling
|
|
8639
8905
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
8640
8906
|
showErrors = shouldShowErrors(this.field);
|
|
8641
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
8907
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
8908
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
8642
8909
|
// ARIA
|
|
8643
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
8644
|
-
|
|
8645
|
-
|
|
8910
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
8911
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
8912
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
8913
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
8914
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
8915
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
8646
8916
|
ariaDescribedBySignal = computed(() => {
|
|
8647
8917
|
const errorId = this.errorIdSignal();
|
|
8648
8918
|
const hintId = this.hintIdSignal();
|
|
@@ -8651,7 +8921,8 @@ class DbxForgeListSelectionFieldComponent {
|
|
|
8651
8921
|
if (this.props()?.hint)
|
|
8652
8922
|
return hintId;
|
|
8653
8923
|
return null;
|
|
8654
|
-
},
|
|
8924
|
+
}, /* @ts-ignore */
|
|
8925
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
8655
8926
|
listComponentClass$ = this._listComponentClassObs.pipe(switchMapFilterMaybe());
|
|
8656
8927
|
config$ = this.listComponentClass$.pipe(map((componentClass) => {
|
|
8657
8928
|
const p = this.props();
|
|
@@ -8731,12 +9002,12 @@ class DbxForgeListSelectionFieldComponent {
|
|
|
8731
9002
|
fieldState.value.set(values);
|
|
8732
9003
|
}
|
|
8733
9004
|
}
|
|
8734
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8735
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "
|
|
9005
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeListSelectionFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9006
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: DbxForgeListSelectionFieldComponent, isStandalone: true, selector: "dbx-forge-list-selection-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-forge-list-item-field\" [class.dbx-forge-list-field-disabled]=\"isDisabled()\" [style.--dbx-forge-list-item-field-height]=\"maxHeightCssVarSignal()\" dbxListItemModifier [dbxListItemIsSelectedModifier]=\"isSelectedModifierFunctionSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\">\n <div class=\"dbx-forge-list-item-field-content\">\n <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n </div>\n</div>\n", dependencies: [{ kind: "ngmodule", type: DbxListModifierModule }, { kind: "directive", type: i1$1.DbxValueListItemModifierDirective, selector: "dbxListItemModifier,[dbxListItemModifier]", inputs: ["dbxListItemModifier"] }, { kind: "directive", type: i1$1.DbxListItemIsSelectedModifierDirective, selector: "dbxListItemIsSelectedModifier,[dbxListItemIsSelectedModifier]", inputs: ["dbxListItemIsSelectedModifier"] }, { kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }, { kind: "ngmodule", type: MatDividerModule }] });
|
|
8736
9007
|
}
|
|
8737
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9008
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeListSelectionFieldComponent, decorators: [{
|
|
8738
9009
|
type: Component,
|
|
8739
|
-
args: [{ selector: 'dbx-forge-list-selection-field', imports: [DbxListModifierModule, DbxInjectionComponent, MatDividerModule],
|
|
9010
|
+
args: [{ selector: 'dbx-forge-list-selection-field', imports: [DbxListModifierModule, DbxInjectionComponent, MatDividerModule], template: "<div class=\"dbx-forge-list-item-field\" [class.dbx-forge-list-field-disabled]=\"isDisabled()\" [style.--dbx-forge-list-item-field-height]=\"maxHeightCssVarSignal()\" dbxListItemModifier [dbxListItemIsSelectedModifier]=\"isSelectedModifierFunctionSignal()\" [attr.aria-invalid]=\"ariaInvalidSignal()\">\n <div class=\"dbx-forge-list-item-field-content\">\n <dbx-injection [config]=\"configSignal()\"></dbx-injection>\n </div>\n</div>\n" }]
|
|
8740
9011
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
8741
9012
|
|
|
8742
9013
|
var list_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -8785,34 +9056,46 @@ const FORGE_COMPONENT_FIELD_TYPE = 'dbx-component';
|
|
|
8785
9056
|
class DbxForgeComponentFieldComponent {
|
|
8786
9057
|
elementRef = inject((ElementRef));
|
|
8787
9058
|
// ng-forge ValueFieldComponent inputs
|
|
8788
|
-
field = input.required(
|
|
8789
|
-
|
|
8790
|
-
|
|
8791
|
-
|
|
8792
|
-
|
|
8793
|
-
|
|
8794
|
-
|
|
8795
|
-
|
|
8796
|
-
|
|
8797
|
-
|
|
9059
|
+
field = input.required(/* @ts-ignore */
|
|
9060
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
9061
|
+
key = input.required(/* @ts-ignore */
|
|
9062
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
9063
|
+
label = input(/* @ts-ignore */
|
|
9064
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
9065
|
+
placeholder = input(/* @ts-ignore */
|
|
9066
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
9067
|
+
className = input('', /* @ts-ignore */
|
|
9068
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
9069
|
+
tabIndex = input(/* @ts-ignore */
|
|
9070
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
9071
|
+
props = input(/* @ts-ignore */
|
|
9072
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
9073
|
+
meta = input(/* @ts-ignore */
|
|
9074
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
9075
|
+
validationMessages = input(/* @ts-ignore */
|
|
9076
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
9077
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
9078
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
8798
9079
|
// Disabled state
|
|
8799
9080
|
isDisabled = dbxForgeFieldDisabled();
|
|
8800
9081
|
showDisabledStateSignal = computed(() => {
|
|
8801
9082
|
const props = this.props();
|
|
8802
9083
|
return this.isDisabled() && (props?.allowDisabledEffects ?? true);
|
|
8803
|
-
},
|
|
9084
|
+
}, /* @ts-ignore */
|
|
9085
|
+
...(ngDevMode ? [{ debugName: "showDisabledStateSignal" }] : /* istanbul ignore next */ []));
|
|
8804
9086
|
constructor() {
|
|
8805
9087
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'dbx-injection' });
|
|
8806
9088
|
}
|
|
8807
9089
|
configSignal = computed(() => {
|
|
8808
9090
|
return this.props()?.componentField;
|
|
8809
|
-
},
|
|
8810
|
-
|
|
8811
|
-
static
|
|
9091
|
+
}, /* @ts-ignore */
|
|
9092
|
+
...(ngDevMode ? [{ debugName: "configSignal" }] : /* istanbul ignore next */ []));
|
|
9093
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeComponentFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9094
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.4", type: DbxForgeComponentFieldComponent, isStandalone: true, selector: "dbx-forge-component-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "className()", "class.dbx-forge-disabled": "showDisabledStateSignal()" } }, ngImport: i0, template: `
|
|
8812
9095
|
<div class="dbx-form-component" dbx-injection [config]="configSignal()"></div>
|
|
8813
|
-
`, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }]
|
|
9096
|
+
`, isInline: true, dependencies: [{ kind: "component", type: DbxInjectionComponent, selector: "dbx-injection, [dbxInjection], [dbx-injection]", inputs: ["config", "template"] }] });
|
|
8814
9097
|
}
|
|
8815
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9098
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeComponentFieldComponent, decorators: [{
|
|
8816
9099
|
type: Component,
|
|
8817
9100
|
args: [{
|
|
8818
9101
|
selector: 'dbx-forge-component-field',
|
|
@@ -8820,8 +9103,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
8820
9103
|
<div class="dbx-form-component" dbx-injection [config]="configSignal()"></div>
|
|
8821
9104
|
`,
|
|
8822
9105
|
imports: [DbxInjectionComponent],
|
|
8823
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
8824
|
-
standalone: true,
|
|
8825
9106
|
host: {
|
|
8826
9107
|
'[class]': 'className()',
|
|
8827
9108
|
'[class.dbx-forge-disabled]': 'showDisabledStateSignal()'
|
|
@@ -8893,16 +9174,26 @@ class DbxForgeTextEditorFieldComponent {
|
|
|
8893
9174
|
_compactContextStore = inject(CompactContextStore, { optional: true });
|
|
8894
9175
|
elementRef = inject((ElementRef));
|
|
8895
9176
|
// ng-forge ValueFieldComponent inputs
|
|
8896
|
-
field = input.required(
|
|
8897
|
-
|
|
8898
|
-
|
|
8899
|
-
|
|
8900
|
-
|
|
8901
|
-
|
|
8902
|
-
|
|
8903
|
-
|
|
8904
|
-
|
|
8905
|
-
|
|
9177
|
+
field = input.required(/* @ts-ignore */
|
|
9178
|
+
...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
|
|
9179
|
+
key = input.required(/* @ts-ignore */
|
|
9180
|
+
...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
|
|
9181
|
+
label = input(/* @ts-ignore */
|
|
9182
|
+
...(ngDevMode ? [undefined, { debugName: "label" }] : /* istanbul ignore next */ []));
|
|
9183
|
+
placeholder = input(/* @ts-ignore */
|
|
9184
|
+
...(ngDevMode ? [undefined, { debugName: "placeholder" }] : /* istanbul ignore next */ []));
|
|
9185
|
+
className = input('', /* @ts-ignore */
|
|
9186
|
+
...(ngDevMode ? [{ debugName: "className" }] : /* istanbul ignore next */ []));
|
|
9187
|
+
tabIndex = input(/* @ts-ignore */
|
|
9188
|
+
...(ngDevMode ? [undefined, { debugName: "tabIndex" }] : /* istanbul ignore next */ []));
|
|
9189
|
+
props = input(/* @ts-ignore */
|
|
9190
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
9191
|
+
meta = input(/* @ts-ignore */
|
|
9192
|
+
...(ngDevMode ? [undefined, { debugName: "meta" }] : /* istanbul ignore next */ []));
|
|
9193
|
+
validationMessages = input(/* @ts-ignore */
|
|
9194
|
+
...(ngDevMode ? [undefined, { debugName: "validationMessages" }] : /* istanbul ignore next */ []));
|
|
9195
|
+
defaultValidationMessages = input(/* @ts-ignore */
|
|
9196
|
+
...(ngDevMode ? [undefined, { debugName: "defaultValidationMessages" }] : /* istanbul ignore next */ []));
|
|
8906
9197
|
_editor;
|
|
8907
9198
|
_editorValueSub = cleanSubscription();
|
|
8908
9199
|
_syncFromFieldSub = cleanSubscription();
|
|
@@ -8916,20 +9207,27 @@ class DbxForgeTextEditorFieldComponent {
|
|
|
8916
9207
|
labelSignal = computed(() => {
|
|
8917
9208
|
const l = this.label();
|
|
8918
9209
|
return typeof l === 'string' ? l : undefined;
|
|
8919
|
-
},
|
|
9210
|
+
}, /* @ts-ignore */
|
|
9211
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
8920
9212
|
placeholderSignal = computed(() => {
|
|
8921
9213
|
const p = this.placeholder();
|
|
8922
9214
|
return typeof p === 'string' ? p : '';
|
|
8923
|
-
},
|
|
8924
|
-
|
|
9215
|
+
}, /* @ts-ignore */
|
|
9216
|
+
...(ngDevMode ? [{ debugName: "placeholderSignal" }] : /* istanbul ignore next */ []));
|
|
9217
|
+
descriptionSignal = computed(() => this.props()?.hint, /* @ts-ignore */
|
|
9218
|
+
...(ngDevMode ? [{ debugName: "descriptionSignal" }] : /* istanbul ignore next */ []));
|
|
8925
9219
|
// Error handling
|
|
8926
9220
|
resolvedErrors = createResolvedErrorsSignal(this.field, this.validationMessages, this.defaultValidationMessages);
|
|
8927
9221
|
showErrors = shouldShowErrors(this.field);
|
|
8928
|
-
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []),
|
|
9222
|
+
errorsToDisplaySignal = computed(() => (this.showErrors() ? this.resolvedErrors() : []), /* @ts-ignore */
|
|
9223
|
+
...(ngDevMode ? [{ debugName: "errorsToDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
8929
9224
|
// ARIA
|
|
8930
|
-
hintIdSignal = computed(() => `${this.key()}-hint`,
|
|
8931
|
-
|
|
8932
|
-
|
|
9225
|
+
hintIdSignal = computed(() => `${this.key()}-hint`, /* @ts-ignore */
|
|
9226
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
9227
|
+
errorIdSignal = computed(() => `${this.key()}-error`, /* @ts-ignore */
|
|
9228
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
9229
|
+
ariaInvalidSignal = computed(() => (this.showErrors() ? 'true' : null), /* @ts-ignore */
|
|
9230
|
+
...(ngDevMode ? [{ debugName: "ariaInvalidSignal" }] : /* istanbul ignore next */ []));
|
|
8933
9231
|
ariaDescribedBySignal = computed(() => {
|
|
8934
9232
|
const errorId = this.errorIdSignal();
|
|
8935
9233
|
const hintId = this.hintIdSignal();
|
|
@@ -8938,7 +9236,8 @@ class DbxForgeTextEditorFieldComponent {
|
|
|
8938
9236
|
if (this.props()?.hint)
|
|
8939
9237
|
return hintId;
|
|
8940
9238
|
return null;
|
|
8941
|
-
},
|
|
9239
|
+
}, /* @ts-ignore */
|
|
9240
|
+
...(ngDevMode ? [{ debugName: "ariaDescribedBySignal" }] : /* istanbul ignore next */ []));
|
|
8942
9241
|
constructor() {
|
|
8943
9242
|
setupMetaTracking(this.elementRef, this.meta, { selector: 'ngx-editor' });
|
|
8944
9243
|
}
|
|
@@ -8949,7 +9248,8 @@ class DbxForgeTextEditorFieldComponent {
|
|
|
8949
9248
|
_disabledEffect = effect(() => {
|
|
8950
9249
|
const disabled = this.isDisabled();
|
|
8951
9250
|
toggleDisableFormControl(this.editorFormControl, disabled);
|
|
8952
|
-
},
|
|
9251
|
+
}, /* @ts-ignore */
|
|
9252
|
+
...(ngDevMode ? [{ debugName: "_disabledEffect" }] : /* istanbul ignore next */ []));
|
|
8953
9253
|
_syncFieldToEditor = effect(() => {
|
|
8954
9254
|
const fieldSignal = this.field();
|
|
8955
9255
|
const node = fieldSignal ? fieldSignal() : undefined;
|
|
@@ -8957,7 +9257,8 @@ class DbxForgeTextEditorFieldComponent {
|
|
|
8957
9257
|
if (fieldValue !== undefined && fieldValue !== this.editorFormControl.value) {
|
|
8958
9258
|
this.editorFormControl.setValue(fieldValue ?? '', { emitEvent: false });
|
|
8959
9259
|
}
|
|
8960
|
-
},
|
|
9260
|
+
}, /* @ts-ignore */
|
|
9261
|
+
...(ngDevMode ? [{ debugName: "_syncFieldToEditor" }] : /* istanbul ignore next */ []));
|
|
8961
9262
|
ngOnInit() {
|
|
8962
9263
|
this._editor = new Editor({});
|
|
8963
9264
|
// Watch for FormControl value changes (updated by ngx-editor's formControl binding)
|
|
@@ -8982,12 +9283,12 @@ class DbxForgeTextEditorFieldComponent {
|
|
|
8982
9283
|
node.value.set(value);
|
|
8983
9284
|
}
|
|
8984
9285
|
}
|
|
8985
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
8986
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
9286
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeTextEditorFieldComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9287
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeTextEditorFieldComponent, isStandalone: true, selector: "dbx-forge-texteditor-field", inputs: { field: { classPropertyName: "field", publicName: "field", isSignal: true, isRequired: true, transformFunction: null }, key: { classPropertyName: "key", publicName: "key", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, placeholder: { classPropertyName: "placeholder", publicName: "placeholder", isSignal: true, isRequired: false, transformFunction: null }, className: { classPropertyName: "className", publicName: "className", isSignal: true, isRequired: false, transformFunction: null }, tabIndex: { classPropertyName: "tabIndex", publicName: "tabIndex", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null }, meta: { classPropertyName: "meta", publicName: "meta", isSignal: true, isRequired: false, transformFunction: null }, validationMessages: { classPropertyName: "validationMessages", publicName: "validationMessages", isSignal: true, isRequired: false, transformFunction: null }, defaultValidationMessages: { classPropertyName: "defaultValidationMessages", publicName: "defaultValidationMessages", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div class=\"dbx-texteditor-field\" [ngClass]=\"compactClassSignal()\" [class.dbx-texteditor-field-disabled]=\"isDisabled()\">\n @if (labelSignal()) {\n <span class=\"dbx-label\">{{ labelSignal() }}</span>\n }\n <div class=\"dbx-texteditor-field-content\">\n <div class=\"dbx-texteditor-field-input\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholderSignal()\" [formControl]=\"editorFormControl\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\"></ngx-editor>\n </div>\n <div class=\"dbx-texteditor-field-menu\">\n <ngx-editor-menu [editor]=\"editor\" [disabled]=\"isDisabled()\"></ngx-editor-menu>\n </div>\n </div>\n @if (errorsToDisplaySignal()[0]; as error) {\n <div class=\"dbx-form-description dbx-form-error\" [id]=\"errorIdSignal()\">{{ error.message }}</div>\n } @else if (descriptionSignal()) {\n <div class=\"dbx-form-description\" [id]=\"hintIdSignal()\">{{ descriptionSignal() }}</div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "ngmodule", type: NgxEditorModule }, { kind: "component", type: i1$5.NgxEditorComponent, selector: "ngx-editor", inputs: ["editor", "outputFormat", "placeholder"], outputs: ["focusOut", "focusIn"] }, { kind: "component", type: i1$5.NgxEditorMenuComponent, selector: "ngx-editor-menu", inputs: ["toolbar", "colorPresets", "disabled", "editor", "customMenuRef", "dropdownPlacement"] }, { kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1$4.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1$4.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }] });
|
|
8987
9288
|
}
|
|
8988
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9289
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeTextEditorFieldComponent, decorators: [{
|
|
8989
9290
|
type: Component,
|
|
8990
|
-
args: [{ selector: 'dbx-forge-texteditor-field', imports: [NgClass, NgxEditorModule, FormsModule, ReactiveFormsModule],
|
|
9291
|
+
args: [{ selector: 'dbx-forge-texteditor-field', imports: [NgClass, NgxEditorModule, FormsModule, ReactiveFormsModule], template: "<div class=\"dbx-texteditor-field\" [ngClass]=\"compactClassSignal()\" [class.dbx-texteditor-field-disabled]=\"isDisabled()\">\n @if (labelSignal()) {\n <span class=\"dbx-label\">{{ labelSignal() }}</span>\n }\n <div class=\"dbx-texteditor-field-content\">\n <div class=\"dbx-texteditor-field-input\">\n <ngx-editor [editor]=\"editor\" outputFormat=\"html\" [placeholder]=\"placeholderSignal()\" [formControl]=\"editorFormControl\" [attr.aria-invalid]=\"ariaInvalidSignal()\" [attr.aria-describedby]=\"ariaDescribedBySignal()\"></ngx-editor>\n </div>\n <div class=\"dbx-texteditor-field-menu\">\n <ngx-editor-menu [editor]=\"editor\" [disabled]=\"isDisabled()\"></ngx-editor-menu>\n </div>\n </div>\n @if (errorsToDisplaySignal()[0]; as error) {\n <div class=\"dbx-form-description dbx-form-error\" [id]=\"errorIdSignal()\">{{ error.message }}</div>\n } @else if (descriptionSignal()) {\n <div class=\"dbx-form-description\" [id]=\"hintIdSignal()\">{{ descriptionSignal() }}</div>\n }\n</div>\n" }]
|
|
8991
9292
|
}], ctorParameters: () => [], propDecorators: { field: [{ type: i0.Input, args: [{ isSignal: true, alias: "field", required: true }] }], key: [{ type: i0.Input, args: [{ isSignal: true, alias: "key", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], placeholder: [{ type: i0.Input, args: [{ isSignal: true, alias: "placeholder", required: false }] }], className: [{ type: i0.Input, args: [{ isSignal: true, alias: "className", required: false }] }], tabIndex: [{ type: i0.Input, args: [{ isSignal: true, alias: "tabIndex", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }], meta: [{ type: i0.Input, args: [{ isSignal: true, alias: "meta", required: false }] }], validationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "validationMessages", required: false }] }], defaultValidationMessages: [{ type: i0.Input, args: [{ isSignal: true, alias: "defaultValidationMessages", required: false }] }] } });
|
|
8992
9293
|
|
|
8993
9294
|
var texteditor_field_component = /*#__PURE__*/Object.freeze({
|
|
@@ -9108,30 +9409,39 @@ function _withValuesFromSource(field, source) {
|
|
|
9108
9409
|
* for coordinated add/remove/reorder operations.
|
|
9109
9410
|
*/
|
|
9110
9411
|
class DbxForgeArrayFieldWrapperComponent {
|
|
9111
|
-
fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
|
|
9112
|
-
fieldInputs = input(
|
|
9412
|
+
fieldComponent = viewChild.required('fieldComponent', { ...(ngDevMode ? { debugName: "fieldComponent" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
|
|
9413
|
+
fieldInputs = input(/* @ts-ignore */
|
|
9414
|
+
...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
|
|
9113
9415
|
dispatcher = inject(EventDispatcher);
|
|
9114
9416
|
_formContextService = inject(DbxForgeFormContextService);
|
|
9115
9417
|
/**
|
|
9116
9418
|
* Wrapper config props passed via addWrappers({ type, props }).
|
|
9117
9419
|
* ng-forge delivers wrapper config properties (with `type` stripped) as individual inputs.
|
|
9118
9420
|
*/
|
|
9119
|
-
props = input(
|
|
9421
|
+
props = input(/* @ts-ignore */
|
|
9422
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
9120
9423
|
// Disabled state
|
|
9121
9424
|
isDisabled = dbxForgeFieldDisabled();
|
|
9122
|
-
labelSignal = computed(() => this.props()?.label ?? '',
|
|
9123
|
-
|
|
9124
|
-
|
|
9125
|
-
|
|
9425
|
+
labelSignal = computed(() => this.props()?.label ?? '', /* @ts-ignore */
|
|
9426
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
9427
|
+
hintSignal = computed(() => this.props()?.hint ?? '', /* @ts-ignore */
|
|
9428
|
+
...(ngDevMode ? [{ debugName: "hintSignal" }] : /* istanbul ignore next */ []));
|
|
9429
|
+
disableRearrangeSignal = computed(() => this.props()?.disableRearrange ?? false, /* @ts-ignore */
|
|
9430
|
+
...(ngDevMode ? [{ debugName: "disableRearrangeSignal" }] : /* istanbul ignore next */ []));
|
|
9431
|
+
allowAddSignal = computed(() => this.props()?.allowAdd ?? true, /* @ts-ignore */
|
|
9432
|
+
...(ngDevMode ? [{ debugName: "allowAddSignal" }] : /* istanbul ignore next */ []));
|
|
9126
9433
|
addTextSignal = computed(() => {
|
|
9127
9434
|
const text = this.props()?.addText;
|
|
9128
9435
|
return typeof text === 'string' ? text : 'Add';
|
|
9129
|
-
},
|
|
9130
|
-
|
|
9436
|
+
}, /* @ts-ignore */
|
|
9437
|
+
...(ngDevMode ? [{ debugName: "addTextSignal" }] : /* istanbul ignore next */ []));
|
|
9438
|
+
addButtonStyleSignal = computed(() => this.props()?.addButtonStyle ?? { type: 'raised', color: 'primary' }, /* @ts-ignore */
|
|
9439
|
+
...(ngDevMode ? [{ debugName: "addButtonStyleSignal" }] : /* istanbul ignore next */ []));
|
|
9131
9440
|
/**
|
|
9132
9441
|
* Current item count read reactively from the form value.
|
|
9133
9442
|
*/
|
|
9134
|
-
itemCountSignal = computed(() => this._readArrayValue().length,
|
|
9443
|
+
itemCountSignal = computed(() => this._readArrayValue().length, /* @ts-ignore */
|
|
9444
|
+
...(ngDevMode ? [{ debugName: "itemCountSignal" }] : /* istanbul ignore next */ []));
|
|
9135
9445
|
/**
|
|
9136
9446
|
* Whether the array has reached its configured `maxLength`. When true, the
|
|
9137
9447
|
* add button is disabled. Returns false when `maxLength` is not set.
|
|
@@ -9140,7 +9450,8 @@ class DbxForgeArrayFieldWrapperComponent {
|
|
|
9140
9450
|
const itemCount = this.itemCountSignal();
|
|
9141
9451
|
const maxLength = this.props()?.maxLength;
|
|
9142
9452
|
return typeof maxLength === 'number' && itemCount >= maxLength;
|
|
9143
|
-
},
|
|
9453
|
+
}, /* @ts-ignore */
|
|
9454
|
+
...(ngDevMode ? [{ debugName: "atMaxLengthSignal" }] : /* istanbul ignore next */ []));
|
|
9144
9455
|
/**
|
|
9145
9456
|
* Add button disabled state — combines the standard disabled flag with the
|
|
9146
9457
|
* `maxLength` cap so clicking past the limit is prevented.
|
|
@@ -9148,7 +9459,8 @@ class DbxForgeArrayFieldWrapperComponent {
|
|
|
9148
9459
|
addButtonDisabledSignal = computed(() => {
|
|
9149
9460
|
const atMaxLength = this.atMaxLengthSignal();
|
|
9150
9461
|
return this.isDisabled() || atMaxLength;
|
|
9151
|
-
},
|
|
9462
|
+
}, /* @ts-ignore */
|
|
9463
|
+
...(ngDevMode ? [{ debugName: "addButtonDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
9152
9464
|
drop(event) {
|
|
9153
9465
|
if (event.previousIndex === event.currentIndex) {
|
|
9154
9466
|
return;
|
|
@@ -9270,12 +9582,12 @@ class DbxForgeArrayFieldWrapperComponent {
|
|
|
9270
9582
|
const boundedTo = Math.max(0, Math.min(toIndex, items.length));
|
|
9271
9583
|
this.dispatcher.dispatch(arrayEvent(key).insertAt(boundedTo, templateWithValues));
|
|
9272
9584
|
}
|
|
9273
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9274
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
9585
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeArrayFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9586
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeArrayFieldWrapperComponent, isStandalone: true, selector: "dbx-forge-array-field-wrapper", inputs: { fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: "<div class=\"dbx-form-repeat-array\">\n @if (labelSignal(); as labelText) {\n <div class=\"dbx-form-repeat-array-header\">\n <h4 class=\"dbx-form-repeat-array-title\">{{ labelText | dynamicText | async }}</h4>\n </div>\n }\n @if (hintSignal(); as hintText) {\n <p class=\"dbx-form-repeat-array-hint\">{{ hintText | dynamicText | async }}</p>\n }\n <div class=\"dbx-form-repeat-array-content\" cdkDropList [cdkDropListDisabled]=\"disableRearrangeSignal()\" (cdkDropListDropped)=\"drop($event)\">\n <ng-container #fieldComponent></ng-container>\n </div>\n @if (allowAddSignal()) {\n <div class=\"dbx-form-repeat-array-footer\">\n <dbx-button [text]=\"addTextSignal()\" [buttonStyle]=\"addButtonStyleSignal()\" [disabled]=\"addButtonDisabledSignal()\" (buttonClick)=\"addItem()\"></dbx-button>\n </div>\n }\n</div>\n", dependencies: [{ kind: "directive", type: CdkDropList, selector: "[cdkDropList], cdk-drop-list", inputs: ["cdkDropListConnectedTo", "cdkDropListData", "cdkDropListOrientation", "id", "cdkDropListLockAxis", "cdkDropListDisabled", "cdkDropListSortingDisabled", "cdkDropListEnterPredicate", "cdkDropListSortPredicate", "cdkDropListAutoScrollDisabled", "cdkDropListAutoScrollStep", "cdkDropListElementContainer", "cdkDropListHasAnchor"], outputs: ["cdkDropListDropped", "cdkDropListEntered", "cdkDropListExited", "cdkDropListSorted"], exportAs: ["cdkDropList"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }, { kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
9275
9587
|
}
|
|
9276
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9588
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeArrayFieldWrapperComponent, decorators: [{
|
|
9277
9589
|
type: Component,
|
|
9278
|
-
args: [{ selector: 'dbx-forge-array-field-wrapper', imports: [DynamicTextPipe, AsyncPipe, CdkDropList, DbxButtonComponent],
|
|
9590
|
+
args: [{ selector: 'dbx-forge-array-field-wrapper', imports: [DynamicTextPipe, AsyncPipe, CdkDropList, DbxButtonComponent], template: "<div class=\"dbx-form-repeat-array\">\n @if (labelSignal(); as labelText) {\n <div class=\"dbx-form-repeat-array-header\">\n <h4 class=\"dbx-form-repeat-array-title\">{{ labelText | dynamicText | async }}</h4>\n </div>\n }\n @if (hintSignal(); as hintText) {\n <p class=\"dbx-form-repeat-array-hint\">{{ hintText | dynamicText | async }}</p>\n }\n <div class=\"dbx-form-repeat-array-content\" cdkDropList [cdkDropListDisabled]=\"disableRearrangeSignal()\" (cdkDropListDropped)=\"drop($event)\">\n <ng-container #fieldComponent></ng-container>\n </div>\n @if (allowAddSignal()) {\n <div class=\"dbx-form-repeat-array-footer\">\n <dbx-button [text]=\"addTextSignal()\" [buttonStyle]=\"addButtonStyleSignal()\" [disabled]=\"addButtonDisabledSignal()\" (buttonClick)=\"addItem()\"></dbx-button>\n </div>\n }\n</div>\n" }]
|
|
9279
9591
|
}], propDecorators: { fieldComponent: [{ type: i0.ViewChild, args: ['fieldComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }], fieldInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldInputs", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
|
|
9280
9592
|
|
|
9281
9593
|
var arrayField_wrapper_component = /*#__PURE__*/Object.freeze({
|
|
@@ -9304,17 +9616,21 @@ const DEFAULT_DUPLICATE_BUTTON = {
|
|
|
9304
9616
|
* a drag handle, item label, and remove button.
|
|
9305
9617
|
*/
|
|
9306
9618
|
class DbxForgeArrayFieldElementWrapperComponent {
|
|
9307
|
-
fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
|
|
9619
|
+
fieldComponent = viewChild.required('fieldComponent', { ...(ngDevMode ? { debugName: "fieldComponent" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
|
|
9308
9620
|
parent = inject(DbxForgeArrayFieldWrapperComponent);
|
|
9309
9621
|
formContextService = inject(DbxForgeFormContextService);
|
|
9310
9622
|
arrayContext = inject(ARRAY_CONTEXT);
|
|
9311
9623
|
// Disabled state
|
|
9312
9624
|
isDisabled = dbxForgeFieldDisabled();
|
|
9313
9625
|
// Props from wrapper config (ng-forge passes wrapper config properties as individual inputs)
|
|
9314
|
-
fieldInputs = input(
|
|
9315
|
-
|
|
9316
|
-
|
|
9317
|
-
|
|
9626
|
+
fieldInputs = input(/* @ts-ignore */
|
|
9627
|
+
...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
|
|
9628
|
+
props = input(/* @ts-ignore */
|
|
9629
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
9630
|
+
disableRearrangeSignal = computed(() => this.props()?.disableRearrange ?? false, /* @ts-ignore */
|
|
9631
|
+
...(ngDevMode ? [{ debugName: "disableRearrangeSignal" }] : /* istanbul ignore next */ []));
|
|
9632
|
+
showIndexChipSignal = computed(() => this.props()?.showIndexChip ?? true, /* @ts-ignore */
|
|
9633
|
+
...(ngDevMode ? [{ debugName: "showIndexChipSignal" }] : /* istanbul ignore next */ []));
|
|
9318
9634
|
indexChipDisplaySignal = computed(() => {
|
|
9319
9635
|
const displayFn = this.props()?.indexChipDisplay;
|
|
9320
9636
|
let result = DEFAULT_INDEX_CHIP_DISPLAY;
|
|
@@ -9323,7 +9639,8 @@ class DbxForgeArrayFieldElementWrapperComponent {
|
|
|
9323
9639
|
result = displayFn(ctx);
|
|
9324
9640
|
}
|
|
9325
9641
|
return result;
|
|
9326
|
-
},
|
|
9642
|
+
}, /* @ts-ignore */
|
|
9643
|
+
...(ngDevMode ? [{ debugName: "indexChipDisplaySignal" }] : /* istanbul ignore next */ []));
|
|
9327
9644
|
allowRemoveSignal = computed(() => {
|
|
9328
9645
|
const allowRemove = this.props()?.allowRemove;
|
|
9329
9646
|
let result;
|
|
@@ -9335,12 +9652,15 @@ class DbxForgeArrayFieldElementWrapperComponent {
|
|
|
9335
9652
|
result = allowRemove ?? true;
|
|
9336
9653
|
}
|
|
9337
9654
|
return result;
|
|
9338
|
-
},
|
|
9655
|
+
}, /* @ts-ignore */
|
|
9656
|
+
...(ngDevMode ? [{ debugName: "allowRemoveSignal" }] : /* istanbul ignore next */ []));
|
|
9339
9657
|
removeTextSignal = computed(() => {
|
|
9340
9658
|
const text = this.props()?.removeText;
|
|
9341
9659
|
return typeof text === 'string' ? text : 'Remove';
|
|
9342
|
-
},
|
|
9343
|
-
|
|
9660
|
+
}, /* @ts-ignore */
|
|
9661
|
+
...(ngDevMode ? [{ debugName: "removeTextSignal" }] : /* istanbul ignore next */ []));
|
|
9662
|
+
removeButtonStyleSignal = computed(() => this.props()?.removeButtonStyle ?? { type: 'stroked', color: 'warn' }, /* @ts-ignore */
|
|
9663
|
+
...(ngDevMode ? [{ debugName: "removeButtonStyleSignal" }] : /* istanbul ignore next */ []));
|
|
9344
9664
|
/**
|
|
9345
9665
|
* Resolves {@link DbxForgeArrayFieldElementWrapperProps.allowDuplicate} to either
|
|
9346
9666
|
* `false` (hide the button) or a target {@link IndexNumber}. `true` maps to the
|
|
@@ -9367,8 +9687,10 @@ class DbxForgeArrayFieldElementWrapperComponent {
|
|
|
9367
9687
|
}
|
|
9368
9688
|
}
|
|
9369
9689
|
return result;
|
|
9370
|
-
},
|
|
9371
|
-
|
|
9690
|
+
}, /* @ts-ignore */
|
|
9691
|
+
...(ngDevMode ? [{ debugName: "duplicateTargetIndexSignal" }] : /* istanbul ignore next */ []));
|
|
9692
|
+
allowDuplicateSignal = computed(() => this.duplicateTargetIndexSignal() !== false, /* @ts-ignore */
|
|
9693
|
+
...(ngDevMode ? [{ debugName: "allowDuplicateSignal" }] : /* istanbul ignore next */ []));
|
|
9372
9694
|
duplicateButtonSignal = computed(() => {
|
|
9373
9695
|
const duplicateButton = this.props()?.duplicateButton;
|
|
9374
9696
|
let result;
|
|
@@ -9380,7 +9702,8 @@ class DbxForgeArrayFieldElementWrapperComponent {
|
|
|
9380
9702
|
result = duplicateButton ?? DEFAULT_DUPLICATE_BUTTON;
|
|
9381
9703
|
}
|
|
9382
9704
|
return result;
|
|
9383
|
-
},
|
|
9705
|
+
}, /* @ts-ignore */
|
|
9706
|
+
...(ngDevMode ? [{ debugName: "duplicateButtonSignal" }] : /* istanbul ignore next */ []));
|
|
9384
9707
|
labelSignal = computed(() => {
|
|
9385
9708
|
const props = this.props();
|
|
9386
9709
|
const index = this.arrayContext.index();
|
|
@@ -9404,7 +9727,8 @@ class DbxForgeArrayFieldElementWrapperComponent {
|
|
|
9404
9727
|
}
|
|
9405
9728
|
}
|
|
9406
9729
|
return result;
|
|
9407
|
-
},
|
|
9730
|
+
}, /* @ts-ignore */
|
|
9731
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
9408
9732
|
removeItem() {
|
|
9409
9733
|
this.parent.removeItem(this.arrayContext.index());
|
|
9410
9734
|
}
|
|
@@ -9414,12 +9738,12 @@ class DbxForgeArrayFieldElementWrapperComponent {
|
|
|
9414
9738
|
this.parent.duplicateItem(this.arrayContext.index(), targetIndex);
|
|
9415
9739
|
}
|
|
9416
9740
|
}
|
|
9417
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9418
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "
|
|
9741
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeArrayFieldElementWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9742
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeArrayFieldElementWrapperComponent, isStandalone: true, selector: "dbx-forge-array-field-element-wrapper", inputs: { fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: "<div class=\"dbx-form-repeat-array-field\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragDisabled]=\"disableRearrangeSignal()\">\n <ng-template cdkDragPlaceholder>\n <div class=\"dbx-form-repeat-array-drag-placeholder\"></div>\n </ng-template>\n @if (showIndexChipSignal()) {\n <dbx-chip [display]=\"indexChipDisplaySignal()\">{{ arrayContext.index() + 1 }}</dbx-chip>\n }\n <div class=\"dbx-content-navbar dbx-form-repeat-array-bar dbx-flex-bar\">\n @if (!disableRearrangeSignal()) {\n <button mat-icon-button type=\"button\" cdkDragHandle class=\"dbx-form-repeat-array-drag-button\" [disabled]=\"isDisabled()\" aria-label=\"Drag to reorder\">\n <mat-icon>drag_handle</mat-icon>\n </button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <span class=\"dbx-form-repeat-array-label\">{{ labelSignal() }}</span>\n <span class=\"spacer\"></span>\n @if (allowDuplicateSignal()) {\n <dbx-button class=\"dbx-button-spacer\" [buttonDisplay]=\"duplicateButtonSignal().display\" [buttonStyle]=\"duplicateButtonSignal().style\" [disabled]=\"isDisabled()\" (buttonClick)=\"duplicateItem()\"></dbx-button>\n }\n @if (allowRemoveSignal()) {\n <dbx-button [text]=\"removeTextSignal()\" [buttonStyle]=\"removeButtonStyleSignal()\" [disabled]=\"isDisabled()\" (buttonClick)=\"removeItem()\"></dbx-button>\n }\n </div>\n <div class=\"dbx-form-repeat-array-field-content\">\n <ng-container #fieldComponent></ng-container>\n </div>\n</div>\n", dependencies: [{ kind: "directive", type: CdkDrag, selector: "[cdkDrag]", inputs: ["cdkDragData", "cdkDragLockAxis", "cdkDragRootElement", "cdkDragBoundary", "cdkDragStartDelay", "cdkDragFreeDragPosition", "cdkDragDisabled", "cdkDragConstrainPosition", "cdkDragPreviewClass", "cdkDragPreviewContainer", "cdkDragScale"], outputs: ["cdkDragStarted", "cdkDragReleased", "cdkDragEnded", "cdkDragEntered", "cdkDragExited", "cdkDragDropped", "cdkDragMoved"], exportAs: ["cdkDrag"] }, { kind: "directive", type: CdkDragHandle, selector: "[cdkDragHandle]", inputs: ["cdkDragHandleDisabled"] }, { kind: "directive", type: CdkDragPlaceholder, selector: "ng-template[cdkDragPlaceholder]", inputs: ["data"] }, { kind: "directive", type: DbxChipDirective, selector: "dbx-chip", inputs: ["small", "block", "color", "display", "tone"] }, { kind: "ngmodule", type: MatIconModule }, { kind: "component", type: i1$3.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "ngmodule", type: MatButtonModule }, { kind: "component", type: i4.MatIconButton, selector: "button[mat-icon-button], a[mat-icon-button], button[matIconButton], a[matIconButton]", exportAs: ["matButton", "matAnchor"] }, { kind: "component", type: DbxButtonComponent, selector: "dbx-button", inputs: ["bar", "type", "buttonStyle", "color", "spinnerColor", "customTextColor", "customSpinnerColor", "basic", "tonal", "raised", "stroked", "flat", "iconOnly", "fab", "customContent", "allowClickPropagation", "mode"] }, { kind: "directive", type: DbxButtonSpacerDirective, selector: "dbx-button-spacer,[dbxButtonSpacer]" }] });
|
|
9419
9743
|
}
|
|
9420
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
9744
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeArrayFieldElementWrapperComponent, decorators: [{
|
|
9421
9745
|
type: Component,
|
|
9422
|
-
args: [{ selector: 'dbx-forge-array-field-element-wrapper', imports: [CdkDrag, CdkDragHandle, CdkDragPlaceholder, DbxChipDirective, MatIconModule, MatButtonModule, DbxButtonComponent, DbxButtonSpacerDirective],
|
|
9746
|
+
args: [{ selector: 'dbx-forge-array-field-element-wrapper', imports: [CdkDrag, CdkDragHandle, CdkDragPlaceholder, DbxChipDirective, MatIconModule, MatButtonModule, DbxButtonComponent, DbxButtonSpacerDirective], template: "<div class=\"dbx-form-repeat-array-field\" cdkDrag cdkDragLockAxis=\"y\" [cdkDragDisabled]=\"disableRearrangeSignal()\">\n <ng-template cdkDragPlaceholder>\n <div class=\"dbx-form-repeat-array-drag-placeholder\"></div>\n </ng-template>\n @if (showIndexChipSignal()) {\n <dbx-chip [display]=\"indexChipDisplaySignal()\">{{ arrayContext.index() + 1 }}</dbx-chip>\n }\n <div class=\"dbx-content-navbar dbx-form-repeat-array-bar dbx-flex-bar\">\n @if (!disableRearrangeSignal()) {\n <button mat-icon-button type=\"button\" cdkDragHandle class=\"dbx-form-repeat-array-drag-button\" [disabled]=\"isDisabled()\" aria-label=\"Drag to reorder\">\n <mat-icon>drag_handle</mat-icon>\n </button>\n <dbx-button-spacer></dbx-button-spacer>\n }\n <span class=\"dbx-form-repeat-array-label\">{{ labelSignal() }}</span>\n <span class=\"spacer\"></span>\n @if (allowDuplicateSignal()) {\n <dbx-button class=\"dbx-button-spacer\" [buttonDisplay]=\"duplicateButtonSignal().display\" [buttonStyle]=\"duplicateButtonSignal().style\" [disabled]=\"isDisabled()\" (buttonClick)=\"duplicateItem()\"></dbx-button>\n }\n @if (allowRemoveSignal()) {\n <dbx-button [text]=\"removeTextSignal()\" [buttonStyle]=\"removeButtonStyleSignal()\" [disabled]=\"isDisabled()\" (buttonClick)=\"removeItem()\"></dbx-button>\n }\n </div>\n <div class=\"dbx-form-repeat-array-field-content\">\n <ng-container #fieldComponent></ng-container>\n </div>\n</div>\n" }]
|
|
9423
9747
|
}], propDecorators: { fieldComponent: [{ type: i0.ViewChild, args: ['fieldComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }], fieldInputs: [{ type: i0.Input, args: [{ isSignal: true, alias: "fieldInputs", required: false }] }], props: [{ type: i0.Input, args: [{ isSignal: true, alias: "props", required: false }] }] } });
|
|
9424
9748
|
|
|
9425
9749
|
var arrayField_element_wrapper_component = /*#__PURE__*/Object.freeze({
|
|
@@ -9435,18 +9759,22 @@ var arrayField_element_wrapper_component = /*#__PURE__*/Object.freeze({
|
|
|
9435
9759
|
* and the parent {@link FieldSignalContext} to observe form validation state.
|
|
9436
9760
|
*/
|
|
9437
9761
|
class DbxForgeFormFieldWrapperComponent {
|
|
9438
|
-
fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
|
|
9762
|
+
fieldComponent = viewChild.required('fieldComponent', { ...(ngDevMode ? { debugName: "fieldComponent" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
|
|
9439
9763
|
// Props from wrapper config
|
|
9440
|
-
fieldInputs = input(
|
|
9764
|
+
fieldInputs = input(/* @ts-ignore */
|
|
9765
|
+
...(ngDevMode ? [undefined, { debugName: "fieldInputs" }] : /* istanbul ignore next */ []));
|
|
9441
9766
|
/**
|
|
9442
9767
|
* Wrapper config props passed via `addWrappers({ type, props })`.
|
|
9443
9768
|
* ng-forge delivers wrapper config properties (with `type` stripped) as individual inputs.
|
|
9444
9769
|
*/
|
|
9445
|
-
props = input(
|
|
9770
|
+
props = input(/* @ts-ignore */
|
|
9771
|
+
...(ngDevMode ? [undefined, { debugName: "props" }] : /* istanbul ignore next */ []));
|
|
9446
9772
|
// Read-only field tree from the wrapped field
|
|
9447
|
-
formStateSignal = computed(() => this.fieldInputs()?.field,
|
|
9773
|
+
formStateSignal = computed(() => this.fieldInputs()?.field, /* @ts-ignore */
|
|
9774
|
+
...(ngDevMode ? [{ debugName: "formStateSignal" }] : /* istanbul ignore next */ []));
|
|
9448
9775
|
// Disabled state
|
|
9449
|
-
isDisabledSignal = computed(() => this.formStateSignal()?.disabled(),
|
|
9776
|
+
isDisabledSignal = computed(() => this.formStateSignal()?.disabled(), /* @ts-ignore */
|
|
9777
|
+
...(ngDevMode ? [{ debugName: "isDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
9450
9778
|
/**
|
|
9451
9779
|
* Resolved notch label. Prefers a wrapper-level `props.label` override and
|
|
9452
9780
|
* falls back to the wrapped field's own label.
|
|
@@ -9454,13 +9782,18 @@ class DbxForgeFormFieldWrapperComponent {
|
|
|
9454
9782
|
labelSignal = computed(() => {
|
|
9455
9783
|
const fieldInputs = this.fieldInputs();
|
|
9456
9784
|
return this.props()?.label ?? fieldInputs?.label;
|
|
9457
|
-
},
|
|
9458
|
-
|
|
9459
|
-
|
|
9785
|
+
}, /* @ts-ignore */
|
|
9786
|
+
...(ngDevMode ? [{ debugName: "labelSignal" }] : /* istanbul ignore next */ []));
|
|
9787
|
+
hintSignal = computed(() => this.fieldInputs()?.props?.hint, /* @ts-ignore */
|
|
9788
|
+
...(ngDevMode ? [{ debugName: "hintSignal" }] : /* istanbul ignore next */ []));
|
|
9789
|
+
classNameSignal = computed(() => this.fieldInputs()?.className ?? '', /* @ts-ignore */
|
|
9790
|
+
...(ngDevMode ? [{ debugName: "classNameSignal" }] : /* istanbul ignore next */ []));
|
|
9460
9791
|
// Key for ARIA IDs
|
|
9461
|
-
keySignal = computed(() => this.fieldInputs()?.key ?? '',
|
|
9792
|
+
keySignal = computed(() => this.fieldInputs()?.key ?? '', /* @ts-ignore */
|
|
9793
|
+
...(ngDevMode ? [{ debugName: "keySignal" }] : /* istanbul ignore next */ []));
|
|
9462
9794
|
// Validation state from form tree
|
|
9463
|
-
childErrorsSignal = computed(() => this.formStateSignal()?.errors(),
|
|
9795
|
+
childErrorsSignal = computed(() => this.formStateSignal()?.errors(), /* @ts-ignore */
|
|
9796
|
+
...(ngDevMode ? [{ debugName: "childErrorsSignal" }] : /* istanbul ignore next */ []));
|
|
9464
9797
|
/**
|
|
9465
9798
|
* Whether errors should be displayed.
|
|
9466
9799
|
*
|
|
@@ -9471,7 +9804,8 @@ class DbxForgeFormFieldWrapperComponent {
|
|
|
9471
9804
|
showErrorsSignal = computed(() => {
|
|
9472
9805
|
const childErrors = this.childErrorsSignal();
|
|
9473
9806
|
return (this.formStateSignal()?.invalid() ?? false) && (childErrors?.length ?? 0) > 0;
|
|
9474
|
-
},
|
|
9807
|
+
}, /* @ts-ignore */
|
|
9808
|
+
...(ngDevMode ? [{ debugName: "showErrorsSignal" }] : /* istanbul ignore next */ []));
|
|
9475
9809
|
hasError = this.showErrorsSignal;
|
|
9476
9810
|
/**
|
|
9477
9811
|
* Resolves the first error message using the same priority as ng-forge's
|
|
@@ -9491,21 +9825,26 @@ class DbxForgeFormFieldWrapperComponent {
|
|
|
9491
9825
|
const defaultMessages = inputs?.defaultValidationMessages ?? {};
|
|
9492
9826
|
const message = fieldMessages[error.kind] ?? defaultMessages[error.kind] ?? error.message ?? error.kind;
|
|
9493
9827
|
return interpolateParams(message, error);
|
|
9494
|
-
},
|
|
9828
|
+
}, /* @ts-ignore */
|
|
9829
|
+
...(ngDevMode ? [{ debugName: "firstErrorMessageSignal" }] : /* istanbul ignore next */ []));
|
|
9495
9830
|
/**
|
|
9496
9831
|
* Whether any child field has `required` state, used to show the asterisk in the label.
|
|
9497
9832
|
*/
|
|
9498
|
-
isRequiredSignal = computed(() => this.formStateSignal()?.required(),
|
|
9833
|
+
isRequiredSignal = computed(() => this.formStateSignal()?.required(), /* @ts-ignore */
|
|
9834
|
+
...(ngDevMode ? [{ debugName: "isRequiredSignal" }] : /* istanbul ignore next */ []));
|
|
9499
9835
|
// ARIA IDs
|
|
9500
|
-
labelIdSignal = computed(() => `${this.keySignal()}-label`,
|
|
9501
|
-
|
|
9502
|
-
|
|
9503
|
-
|
|
9504
|
-
|
|
9505
|
-
}
|
|
9506
|
-
i0.ɵɵ
|
|
9836
|
+
labelIdSignal = computed(() => `${this.keySignal()}-label`, /* @ts-ignore */
|
|
9837
|
+
...(ngDevMode ? [{ debugName: "labelIdSignal" }] : /* istanbul ignore next */ []));
|
|
9838
|
+
errorIdSignal = computed(() => `${this.keySignal()}-error`, /* @ts-ignore */
|
|
9839
|
+
...(ngDevMode ? [{ debugName: "errorIdSignal" }] : /* istanbul ignore next */ []));
|
|
9840
|
+
hintIdSignal = computed(() => `${this.keySignal()}-hint`, /* @ts-ignore */
|
|
9841
|
+
...(ngDevMode ? [{ debugName: "hintIdSignal" }] : /* istanbul ignore next */ []));
|
|
9842
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormFieldWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9843
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeFormFieldWrapperComponent, isStandalone: true, selector: "dbx-forge-form-field-wrapper", inputs: { fieldInputs: { classPropertyName: "fieldInputs", publicName: "fieldInputs", isSignal: true, isRequired: false, transformFunction: null }, props: { classPropertyName: "props", publicName: "props", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classNameSignal()" }, classAttribute: "dbx-forge-form-field mat-form-field-animations-enabled" }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: "<div class=\"dbx-forge-form-field-wrapper\" [class.dbx-forge-form-field-wrapper-error]=\"hasError()\" [class.dbx-forge-form-field-wrapper-disabled]=\"isDisabledSignal()\" role=\"group\" [attr.aria-labelledby]=\"labelSignal() ? labelIdSignal() : null\">\n <div class=\"dbx-forge-form-field-outline\">\n <div class=\"dbx-forge-form-field-outline-leading\"></div>\n <div class=\"dbx-forge-form-field-outline-notch\" [class.dbx-forge-form-field-outline-notch-empty]=\"!labelSignal()\">\n @if (labelSignal(); as labelText) {\n <span class=\"dbx-forge-form-field-outline-label\" [id]=\"labelIdSignal()\">\n {{ labelText | dynamicText | async }}\n @if (isRequiredSignal()) {\n <span aria-hidden=\"true\" class=\"mat-mdc-form-field-required-marker mdc-floating-label--required\"></span>\n }\n </span>\n }\n </div>\n <div class=\"dbx-forge-form-field-outline-trailing\"></div>\n </div>\n <div class=\"dbx-forge-form-field-content\">\n <ng-container #fieldComponent></ng-container>\n </div>\n</div>\n<div class=\"mat-mdc-form-field-subscript-wrapper mat-mdc-form-field-bottom-align mat-mdc-form-field-subscript-dynamic-size\">\n @if (showErrorsSignal()) {\n <div class=\"mat-mdc-form-field-error-wrapper\">\n <div class=\"mat-mdc-form-field-error mat-mdc-form-field-bottom-align\" [id]=\"errorIdSignal()\">{{ firstErrorMessageSignal() }}</div>\n </div>\n } @else if (hintSignal(); as hint) {\n <div class=\"mat-mdc-form-field-hint-wrapper\">\n <div class=\"mat-mdc-form-field-hint mat-mdc-form-field-bottom-align\" [id]=\"hintIdSignal()\">{{ hint }}</div>\n </div>\n }\n</div>\n", styles: [".dbx-forge-form-field-wrapper{position:relative;margin-top:8px}.dbx-forge-form-field-outline{display:flex;position:absolute;inset:0;pointer-events:none}.dbx-forge-form-field-outline-leading{border:1px solid var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, .38)));border-right:none;border-radius:var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small, 4px)) 0 0 var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small, 4px));width:12px}.dbx-forge-form-field-outline-notch{border-bottom:1px solid var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, .38)));display:flex;align-items:flex-start;max-width:calc(100% - 24px)}.dbx-forge-form-field-outline-notch-empty{border-top:1px solid var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, .38)));width:0;padding:0}.dbx-forge-form-field-outline-label{display:inline-block;transform:translateY(-50%);pointer-events:auto;padding:0 4px;background:var(--mat-sys-surface, white);white-space:nowrap;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;font-family:var(--mat-form-field-outlined-label-text-populated-font, var(--mat-sys-body-small-font));font-size:var(--mat-form-field-outlined-label-text-populated-size, var(--mat-sys-body-small-size));line-height:var(--mat-form-field-outlined-label-text-populated-line-height, var(--mat-sys-body-small-line-height));letter-spacing:var(--mat-form-field-outlined-label-text-populated-tracking, var(--mat-sys-body-small-tracking));font-weight:var(--mat-form-field-outlined-label-text-populated-weight, var(--mat-sys-body-small-weight));color:var(--mat-form-field-outlined-label-text-color, var(--mat-sys-on-surface-variant, rgba(0, 0, 0, .6)))}.dbx-forge-form-field-outline-trailing{border:1px solid var(--mat-form-field-outlined-outline-color, var(--mat-sys-outline, rgba(0, 0, 0, .38)));border-left:none;border-radius:0 var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small, 4px)) var(--mat-form-field-outlined-container-shape, var(--mat-sys-corner-extra-small, 4px)) 0;flex-grow:1}.dbx-forge-form-field-wrapper:hover .dbx-forge-form-field-outline-leading,.dbx-forge-form-field-wrapper:hover .dbx-forge-form-field-outline-notch,.dbx-forge-form-field-wrapper:hover .dbx-forge-form-field-outline-trailing{border-color:var(--mat-form-field-outlined-hover-outline-color, var(--mat-sys-on-surface, rgba(0, 0, 0, .87)))}.dbx-forge-form-field-wrapper:focus-within .dbx-forge-form-field-outline-leading,.dbx-forge-form-field-wrapper:focus-within .dbx-forge-form-field-outline-notch,.dbx-forge-form-field-wrapper:focus-within .dbx-forge-form-field-outline-trailing{border-color:var(--mat-form-field-outlined-focus-outline-color, var(--mat-sys-primary));border-width:2px}.dbx-forge-form-field-wrapper:focus-within .dbx-forge-form-field-outline-label{color:var(--mat-form-field-outlined-focus-label-text-color, var(--mat-sys-primary));padding:0 3px}.dbx-forge-form-field-wrapper-error .dbx-forge-form-field-outline-leading,.dbx-forge-form-field-wrapper-error .dbx-forge-form-field-outline-notch,.dbx-forge-form-field-wrapper-error .dbx-forge-form-field-outline-trailing,.dbx-forge-form-field-wrapper-error:focus-within .dbx-forge-form-field-outline-leading,.dbx-forge-form-field-wrapper-error:focus-within .dbx-forge-form-field-outline-notch,.dbx-forge-form-field-wrapper-error:focus-within .dbx-forge-form-field-outline-trailing{border-color:var(--mat-form-field-outlined-error-outline-color, var(--mat-sys-error, #f44336))}.dbx-forge-form-field-wrapper-error .dbx-forge-form-field-outline-label,.dbx-forge-form-field-wrapper-error:focus-within .dbx-forge-form-field-outline-label{color:var(--mat-form-field-outlined-error-label-text-color, var(--mat-sys-error, #f44336))}.dbx-forge-form-field-content{position:relative;padding:var(--mat-form-field-container-vertical-padding, 16px) 16px 8px;min-height:56px;box-sizing:border-box}.dbx-forge-form-field-wrapper-disabled .dbx-forge-form-field-content{opacity:.38;pointer-events:none}.dbx-forge-form-field-wrapper-disabled .dbx-forge-form-field-outline-leading,.dbx-forge-form-field-wrapper-disabled .dbx-forge-form-field-outline-notch,.dbx-forge-form-field-wrapper-disabled .dbx-forge-form-field-outline-trailing,.dbx-forge-form-field-wrapper-disabled:hover .dbx-forge-form-field-outline-leading,.dbx-forge-form-field-wrapper-disabled:hover .dbx-forge-form-field-outline-notch,.dbx-forge-form-field-wrapper-disabled:hover .dbx-forge-form-field-outline-trailing{border-color:var(--mat-form-field-outlined-disabled-outline-color, rgba(0, 0, 0, .12))}.dbx-forge-form-field-wrapper-disabled .dbx-forge-form-field-outline-label{color:var(--mat-form-field-outlined-disabled-label-text-color, rgba(0, 0, 0, .38))}\n"], dependencies: [{ kind: "pipe", type: DynamicTextPipe, name: "dynamicText" }, { kind: "pipe", type: AsyncPipe, name: "async" }] });
|
|
9844
|
+
}
|
|
9845
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormFieldWrapperComponent, decorators: [{
|
|
9507
9846
|
type: Component,
|
|
9508
|
-
args: [{ selector: 'dbx-forge-form-field-wrapper', imports: [DynamicTextPipe, AsyncPipe],
|
|
9847
|
+
args: [{ selector: 'dbx-forge-form-field-wrapper', imports: [DynamicTextPipe, AsyncPipe], host: {
|
|
9509
9848
|
// `mat-form-field-animations-enabled` is intentionally retained: it gates
|
|
9510
9849
|
// the 300ms subscript fade animation via Material's
|
|
9511
9850
|
// `.mat-form-field-animations-enabled .mat-mdc-form-field-hint-wrapper { animation-duration: 300ms; }`
|
|
@@ -9643,22 +9982,23 @@ function dbxForgeStyleWrapper(config) {
|
|
|
9643
9982
|
* pending signal to detect when async validators are running.
|
|
9644
9983
|
*/
|
|
9645
9984
|
class DbxForgeWorkingWrapperComponent {
|
|
9646
|
-
fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
|
|
9985
|
+
fieldComponent = viewChild.required('fieldComponent', { ...(ngDevMode ? { debugName: "fieldComponent" } : /* istanbul ignore next */ {}), read: ViewContainerRef });
|
|
9647
9986
|
fieldSignalContext = inject(FIELD_SIGNAL_CONTEXT);
|
|
9648
9987
|
showLoadingSignal = computed(() => {
|
|
9649
9988
|
return this.fieldSignalContext.form().pending();
|
|
9650
|
-
},
|
|
9651
|
-
|
|
9652
|
-
static
|
|
9989
|
+
}, /* @ts-ignore */
|
|
9990
|
+
...(ngDevMode ? [{ debugName: "showLoadingSignal" }] : /* istanbul ignore next */ []));
|
|
9991
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeWorkingWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
9992
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.4", type: DbxForgeWorkingWrapperComponent, isStandalone: true, selector: "dbx-forge-working-wrapper", viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
|
|
9653
9993
|
<div class="dbx-forge-working-wrapper">
|
|
9654
9994
|
<ng-container #fieldComponent></ng-container>
|
|
9655
9995
|
@if (showLoadingSignal()) {
|
|
9656
9996
|
<mat-progress-bar mode="indeterminate" class="dbx-forge-working-bar"></mat-progress-bar>
|
|
9657
9997
|
}
|
|
9658
9998
|
</div>
|
|
9659
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }]
|
|
9999
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: MatProgressBarModule }, { kind: "component", type: i1$6.MatProgressBar, selector: "mat-progress-bar", inputs: ["color", "value", "bufferValue", "mode"], outputs: ["animationEnd"], exportAs: ["matProgressBar"] }] });
|
|
9660
10000
|
}
|
|
9661
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10001
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeWorkingWrapperComponent, decorators: [{
|
|
9662
10002
|
type: Component,
|
|
9663
10003
|
args: [{
|
|
9664
10004
|
selector: 'dbx-forge-working-wrapper',
|
|
@@ -9670,9 +10010,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
9670
10010
|
}
|
|
9671
10011
|
</div>
|
|
9672
10012
|
`,
|
|
9673
|
-
imports: [MatProgressBarModule]
|
|
9674
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9675
|
-
standalone: true
|
|
10013
|
+
imports: [MatProgressBarModule]
|
|
9676
10014
|
}]
|
|
9677
10015
|
}], propDecorators: { fieldComponent: [{ type: i0.ViewChild, args: ['fieldComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }] } });
|
|
9678
10016
|
|
|
@@ -9699,11 +10037,11 @@ const dbxForgeFormComponentImports = [DbxForgeFormComponent];
|
|
|
9699
10037
|
* Default imports module for a view that extends AbstractSyncForgeFormDirective or AbstractConfigAsyncForgeFormDirective.
|
|
9700
10038
|
*/
|
|
9701
10039
|
class DbxForgeFormComponentImportsModule {
|
|
9702
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9703
|
-
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "
|
|
9704
|
-
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "
|
|
10040
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormComponentImportsModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
|
|
10041
|
+
static ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormComponentImportsModule, imports: [DbxForgeFormComponent], exports: [DbxForgeFormComponent] });
|
|
10042
|
+
static ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormComponentImportsModule, imports: [dbxForgeFormComponentImports] });
|
|
9705
10043
|
}
|
|
9706
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10044
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeFormComponentImportsModule, decorators: [{
|
|
9707
10045
|
type: NgModule,
|
|
9708
10046
|
args: [{
|
|
9709
10047
|
imports: dbxForgeFormComponentImports,
|
|
@@ -9717,7 +10055,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
9717
10055
|
*/
|
|
9718
10056
|
class AbstractForgeFormDirective {
|
|
9719
10057
|
context = inject((DbxForgeFormContext), { self: true });
|
|
9720
|
-
disabled = input(false,
|
|
10058
|
+
disabled = input(false, /* @ts-ignore */
|
|
10059
|
+
...(ngDevMode ? [{ debugName: "disabled" }] : /* istanbul ignore next */ []));
|
|
9721
10060
|
_disabledEffect = effect(() => {
|
|
9722
10061
|
if (this.disabled()) {
|
|
9723
10062
|
this.context.setDisabled('directive', true);
|
|
@@ -9725,7 +10064,8 @@ class AbstractForgeFormDirective {
|
|
|
9725
10064
|
else {
|
|
9726
10065
|
this.context.setDisabled('directive', false);
|
|
9727
10066
|
}
|
|
9728
|
-
},
|
|
10067
|
+
}, /* @ts-ignore */
|
|
10068
|
+
...(ngDevMode ? [{ debugName: "_disabledEffect" }] : /* istanbul ignore next */ []));
|
|
9729
10069
|
getValue() {
|
|
9730
10070
|
return this.context.getValue();
|
|
9731
10071
|
}
|
|
@@ -9741,10 +10081,10 @@ class AbstractForgeFormDirective {
|
|
|
9741
10081
|
setDisabled(key, disabled) {
|
|
9742
10082
|
this.context.setDisabled(key, disabled);
|
|
9743
10083
|
}
|
|
9744
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9745
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
10084
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractForgeFormDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10085
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: AbstractForgeFormDirective, isStandalone: true, inputs: { disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
|
|
9746
10086
|
}
|
|
9747
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10087
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractForgeFormDirective, decorators: [{
|
|
9748
10088
|
type: Directive
|
|
9749
10089
|
}], propDecorators: { disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }] } });
|
|
9750
10090
|
/**
|
|
@@ -9754,10 +10094,10 @@ class AbstractSyncForgeFormDirective extends AbstractForgeFormDirective {
|
|
|
9754
10094
|
ngOnInit() {
|
|
9755
10095
|
this.context.config = this.formConfig;
|
|
9756
10096
|
}
|
|
9757
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9758
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
10097
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractSyncForgeFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10098
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: AbstractSyncForgeFormDirective, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
9759
10099
|
}
|
|
9760
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10100
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractSyncForgeFormDirective, decorators: [{
|
|
9761
10101
|
type: Directive
|
|
9762
10102
|
}] });
|
|
9763
10103
|
/**
|
|
@@ -9771,10 +10111,10 @@ class AbstractAsyncForgeFormDirective extends AbstractForgeFormDirective {
|
|
|
9771
10111
|
this.context.config = formConfig;
|
|
9772
10112
|
});
|
|
9773
10113
|
}
|
|
9774
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9775
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
10114
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractAsyncForgeFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10115
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: AbstractAsyncForgeFormDirective, isStandalone: true, usesInheritance: true, ngImport: i0 });
|
|
9776
10116
|
}
|
|
9777
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10117
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractAsyncForgeFormDirective, decorators: [{
|
|
9778
10118
|
type: Directive
|
|
9779
10119
|
}] });
|
|
9780
10120
|
/**
|
|
@@ -9788,12 +10128,13 @@ class AbstractConfigAsyncForgeFormDirective extends AbstractAsyncForgeFormDirect
|
|
|
9788
10128
|
/**
|
|
9789
10129
|
* The forge form config input.
|
|
9790
10130
|
*/
|
|
9791
|
-
config = model(
|
|
10131
|
+
config = model(/* @ts-ignore */
|
|
10132
|
+
...(ngDevMode ? [undefined, { debugName: "config" }] : /* istanbul ignore next */ []));
|
|
9792
10133
|
currentConfig$ = toObservable(this.config).pipe(maybeValueFromObservableOrValue());
|
|
9793
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9794
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "
|
|
10134
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractConfigAsyncForgeFormDirective, deps: null, target: i0.ɵɵFactoryTarget.Directive });
|
|
10135
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.4", type: AbstractConfigAsyncForgeFormDirective, isStandalone: true, inputs: { config: { classPropertyName: "config", publicName: "config", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { config: "configChange" }, usesInheritance: true, ngImport: i0 });
|
|
9795
10136
|
}
|
|
9796
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10137
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: AbstractConfigAsyncForgeFormDirective, decorators: [{
|
|
9797
10138
|
type: Directive
|
|
9798
10139
|
}], propDecorators: { config: [{ type: i0.Input, args: [{ isSignal: true, alias: "config", required: false }] }, { type: i0.Output, args: ["configChange"] }] } });
|
|
9799
10140
|
|
|
@@ -9804,18 +10145,16 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
9804
10145
|
*/
|
|
9805
10146
|
class DbxForgeAsyncConfigFormComponent extends AbstractConfigAsyncForgeFormDirective {
|
|
9806
10147
|
formConfig$ = this.currentConfig$;
|
|
9807
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
9808
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10148
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeAsyncConfigFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10149
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: DbxForgeAsyncConfigFormComponent, isStandalone: true, selector: "dbx-forge-form", providers: provideDbxForgeFormContext(), usesInheritance: true, ngImport: i0, template: "<dbx-forge></dbx-forge>", isInline: true, dependencies: [{ kind: "ngmodule", type: DbxForgeFormComponentImportsModule }, { kind: "component", type: DbxForgeFormComponent, selector: "dbx-forge" }] });
|
|
9809
10150
|
}
|
|
9810
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10151
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgeAsyncConfigFormComponent, decorators: [{
|
|
9811
10152
|
type: Component,
|
|
9812
10153
|
args: [{
|
|
9813
10154
|
selector: 'dbx-forge-form',
|
|
9814
10155
|
template: DBX_FORGE_FORM_COMPONENT_TEMPLATE,
|
|
9815
10156
|
providers: provideDbxForgeFormContext(),
|
|
9816
|
-
imports: [DbxForgeFormComponentImportsModule]
|
|
9817
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
9818
|
-
standalone: true
|
|
10157
|
+
imports: [DbxForgeFormComponentImportsModule]
|
|
9819
10158
|
}]
|
|
9820
10159
|
}] });
|
|
9821
10160
|
|
|
@@ -9899,12 +10238,12 @@ const DBX_FORGE_FIELD_TYPES = [
|
|
|
9899
10238
|
// -- Wrapper-related fields --
|
|
9900
10239
|
{
|
|
9901
10240
|
name: FORGE_EXPAND_FIELD_TYPE_NAME,
|
|
9902
|
-
loadComponent: () => import('./dereekb-dbx-form-expand.field.component-
|
|
10241
|
+
loadComponent: () => import('./dereekb-dbx-form-expand.field.component-BO_8nxHg.mjs').then((m) => m.DbxForgeExpandFieldComponent),
|
|
9903
10242
|
mapper: valueFieldMapper
|
|
9904
10243
|
},
|
|
9905
10244
|
{
|
|
9906
10245
|
name: FORGE_INFO_BUTTON_FIELD_TYPE_NAME,
|
|
9907
|
-
loadComponent: () => import('./dereekb-dbx-form-info.field.component-
|
|
10246
|
+
loadComponent: () => import('./dereekb-dbx-form-info.field.component-CImBKYE7.mjs').then((m) => m.DbxForgeInfoButtonFieldComponent),
|
|
9908
10247
|
mapper: valueFieldMapper
|
|
9909
10248
|
}
|
|
9910
10249
|
];
|
|
@@ -9918,15 +10257,15 @@ const DBX_FORGE_FIELD_WRAPPER_TYPES = [
|
|
|
9918
10257
|
},
|
|
9919
10258
|
{
|
|
9920
10259
|
wrapperName: DBX_FORGE_SECTION_WRAPPER_TYPE_NAME,
|
|
9921
|
-
loadComponent: () => import('./dereekb-dbx-form-section.wrapper.component-
|
|
10260
|
+
loadComponent: () => import('./dereekb-dbx-form-section.wrapper.component-CpXSvC5e.mjs').then((m) => m.DbxForgeSectionWrapperComponent)
|
|
9922
10261
|
},
|
|
9923
10262
|
{
|
|
9924
10263
|
wrapperName: DBX_FORGE_STYLE_WRAPPER_TYPE_NAME,
|
|
9925
|
-
loadComponent: () => import('./dereekb-dbx-form-style.wrapper.component-
|
|
10264
|
+
loadComponent: () => import('./dereekb-dbx-form-style.wrapper.component-CPzzgQXk.mjs').then((m) => m.DbxForgeStyleWrapperComponent)
|
|
9926
10265
|
},
|
|
9927
10266
|
{
|
|
9928
10267
|
wrapperName: DBX_FORGE_INFO_WRAPPER_TYPE_NAME,
|
|
9929
|
-
loadComponent: () => import('./dereekb-dbx-form-info.wrapper.component-
|
|
10268
|
+
loadComponent: () => import('./dereekb-dbx-form-info.wrapper.component-DdDCQ47C.mjs').then((m) => m.DbxForgeInfoWrapperComponent)
|
|
9930
10269
|
},
|
|
9931
10270
|
{
|
|
9932
10271
|
wrapperName: DBX_FORGE_WORKING_WRAPPER_TYPE_NAME,
|
|
@@ -9934,7 +10273,7 @@ const DBX_FORGE_FIELD_WRAPPER_TYPES = [
|
|
|
9934
10273
|
},
|
|
9935
10274
|
{
|
|
9936
10275
|
wrapperName: DBX_FORGE_FLEX_WRAPPER_TYPE_NAME,
|
|
9937
|
-
loadComponent: () => import('./dereekb-dbx-form-flex.wrapper.component-
|
|
10276
|
+
loadComponent: () => import('./dereekb-dbx-form-flex.wrapper.component-C54ACtzt.mjs').then((m) => m.DbxForgeFlexWrapperComponent)
|
|
9938
10277
|
},
|
|
9939
10278
|
{
|
|
9940
10279
|
wrapperName: DBX_FORGE_ARRAY_FIELD_WRAPPER_NAME,
|
|
@@ -9976,11 +10315,9 @@ function provideDbxForgeFormFieldDeclarations(...additionalFieldTypes) {
|
|
|
9976
10315
|
* Creates a forge field array for a simple search form with a single text input.
|
|
9977
10316
|
*
|
|
9978
10317
|
* @param config - Optional search field configuration with label and placeholder.
|
|
9979
|
-
* @returns The forge field defs for the search form
|
|
9980
|
-
*
|
|
9981
|
-
* TODO(migrate): Will be renamed in a future release to dbxForgePresetSearchFormFields.
|
|
10318
|
+
* @returns The forge field defs for the search form.
|
|
9982
10319
|
*/
|
|
9983
|
-
function
|
|
10320
|
+
function dbxForgePresetSearchFormFields(config) {
|
|
9984
10321
|
const { key = 'search', label, placeholder = 'Search', props } = config ?? {};
|
|
9985
10322
|
const field = dbxForgeTextField({
|
|
9986
10323
|
key,
|
|
@@ -9992,20 +10329,19 @@ function dbxFormSearchFormFields(config) {
|
|
|
9992
10329
|
return [field];
|
|
9993
10330
|
}
|
|
9994
10331
|
|
|
9995
|
-
|
|
9996
|
-
class DbxFormSearchFormComponent extends AbstractConfigAsyncForgeFormDirective {
|
|
10332
|
+
class DbxForgePresetSearchFormComponent extends AbstractConfigAsyncForgeFormDirective {
|
|
9997
10333
|
// eslint-disable-next-line @angular-eslint/no-output-native
|
|
9998
10334
|
search = output();
|
|
9999
|
-
formConfig$ = this.currentConfig$.pipe(map((config) => ({ fields:
|
|
10335
|
+
formConfig$ = this.currentConfig$.pipe(map((config) => ({ fields: dbxForgePresetSearchFormFields(config) })));
|
|
10000
10336
|
searchChanged(value) {
|
|
10001
10337
|
this.search.emit(value?.search ?? '');
|
|
10002
10338
|
}
|
|
10003
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10004
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "
|
|
10339
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePresetSearchFormComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
10340
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.4", type: DbxForgePresetSearchFormComponent, isStandalone: true, selector: "dbx-form-search-form", outputs: { search: "search" }, host: { classAttribute: "d-block dbx-form-search-form" }, providers: provideDbxForgeFormContext(), usesInheritance: true, ngImport: i0, template: `
|
|
10005
10341
|
<dbx-forge (dbxFormValueChange)="searchChanged($event)"></dbx-forge>
|
|
10006
|
-
`, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxForgeFormComponentImportsModule }, { kind: "component", type: DbxForgeFormComponent, selector: "dbx-forge" }, { kind: "directive", type: DbxFormValueChangeDirective, selector: "[dbxFormValueChange]", outputs: ["dbxFormValueChange"] }]
|
|
10342
|
+
`, isInline: true, dependencies: [{ kind: "ngmodule", type: DbxForgeFormComponentImportsModule }, { kind: "component", type: DbxForgeFormComponent, selector: "dbx-forge" }, { kind: "directive", type: DbxFormValueChangeDirective, selector: "[dbxFormValueChange]", outputs: ["dbxFormValueChange"] }] });
|
|
10007
10343
|
}
|
|
10008
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10344
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxForgePresetSearchFormComponent, decorators: [{
|
|
10009
10345
|
type: Component,
|
|
10010
10346
|
args: [{
|
|
10011
10347
|
selector: 'dbx-form-search-form',
|
|
@@ -10014,8 +10350,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
10014
10350
|
`,
|
|
10015
10351
|
providers: provideDbxForgeFormContext(),
|
|
10016
10352
|
imports: [DbxForgeFormComponentImportsModule, DbxFormValueChangeDirective],
|
|
10017
|
-
standalone: true,
|
|
10018
|
-
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
10019
10353
|
host: {
|
|
10020
10354
|
class: 'd-block dbx-form-search-form'
|
|
10021
10355
|
}
|
|
@@ -10219,23 +10553,6 @@ function dbxForgeUsernameLoginField(username) {
|
|
|
10219
10553
|
}
|
|
10220
10554
|
return result;
|
|
10221
10555
|
}
|
|
10222
|
-
// MARK: Compat
|
|
10223
|
-
// COMPAT: Deprecated aliases
|
|
10224
|
-
/**
|
|
10225
|
-
* @deprecated use DEFAULT_DBX_FORGE_PASSWORDS_MATCH_VALIDATION_MESSAGE instead.
|
|
10226
|
-
* @dbxAllowDefaultPrefix
|
|
10227
|
-
*/
|
|
10228
|
-
const DBX_FORGE_DEFAULT_PASSWORDS_MATCH_VALIDATION_MESSAGE = DEFAULT_DBX_FORGE_PASSWORDS_MATCH_VALIDATION_MESSAGE;
|
|
10229
|
-
/**
|
|
10230
|
-
* @deprecated use DEFAULT_DBX_FORGE_TEXT_PASSWORD_AUTOCOMPLETE instead.
|
|
10231
|
-
* @dbxAllowDefaultPrefix
|
|
10232
|
-
*/
|
|
10233
|
-
const DBX_FORGE_TEXT_PASSWORD_DEFAULT_AUTOCOMPLETE = DEFAULT_DBX_FORGE_TEXT_PASSWORD_AUTOCOMPLETE;
|
|
10234
|
-
/**
|
|
10235
|
-
* @deprecated use DEFAULT_DBX_FORGE_TEXT_VERIFY_PASSWORD_AUTOCOMPLETE instead.
|
|
10236
|
-
* @dbxAllowDefaultPrefix
|
|
10237
|
-
*/
|
|
10238
|
-
const DBX_FORGE_TEXT_VERIFY_PASSWORD_DEFAULT_AUTOCOMPLETE = DEFAULT_DBX_FORGE_TEXT_VERIFY_PASSWORD_AUTOCOMPLETE;
|
|
10239
10556
|
|
|
10240
10557
|
/**
|
|
10241
10558
|
* A function that takes a search string and returns matching string results.
|
|
@@ -10514,17 +10831,16 @@ function pickableValueFieldValuesConfigForStaticLabeledValues(input) {
|
|
|
10514
10831
|
* @selector `dbx-form-spacer,[dbxFormSpacer],.dbx-form-spacer`
|
|
10515
10832
|
*/
|
|
10516
10833
|
class DbxFormSpacerDirective {
|
|
10517
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
|
10518
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "
|
|
10834
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormSpacerDirective, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
10835
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.1.4", type: DbxFormSpacerDirective, isStandalone: true, selector: "dbx-form-spacer,[dbxFormSpacer],.dbx-form-spacer", host: { classAttribute: "d-block dbx-form-spacer" }, ngImport: i0 });
|
|
10519
10836
|
}
|
|
10520
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
|
10837
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.4", ngImport: i0, type: DbxFormSpacerDirective, decorators: [{
|
|
10521
10838
|
type: Directive,
|
|
10522
10839
|
args: [{
|
|
10523
10840
|
selector: 'dbx-form-spacer,[dbxFormSpacer],.dbx-form-spacer',
|
|
10524
10841
|
host: {
|
|
10525
10842
|
class: 'd-block dbx-form-spacer'
|
|
10526
|
-
}
|
|
10527
|
-
standalone: true
|
|
10843
|
+
}
|
|
10528
10844
|
}]
|
|
10529
10845
|
}] });
|
|
10530
10846
|
|
|
@@ -10699,5 +11015,5 @@ function provideDbxFormConfiguration(config) {
|
|
|
10699
11015
|
* Generated bundle index. Do not edit.
|
|
10700
11016
|
*/
|
|
10701
11017
|
|
|
10702
|
-
export { APP_ACTION_FORM_DISABLED_KEY, AbstractAsyncForgeFormDirective, AbstractConfigAsyncForgeFormDirective, AbstractDbxSearchableFieldDisplayDirective, AbstractForgeFormDirective, AbstractForgePickableItemFieldDirective, AbstractForgeSearchableFieldDirective, AbstractSyncForgeFormDirective, DBX_DATE_TIME_FIELD_DATE_NOT_IN_SCHEDULE_ERROR, DBX_DATE_TIME_FIELD_MENU_PRESETS_TOKEN, DBX_DATE_TIME_FIELD_TIME_NOT_IN_RANGE_ERROR, DBX_FORGE_ARRAY_FIELD_ELEMENT_WRAPPER_NAME, DBX_FORGE_ARRAY_FIELD_WRAPPER_NAME,
|
|
11018
|
+
export { APP_ACTION_FORM_DISABLED_KEY, AbstractAsyncForgeFormDirective, AbstractConfigAsyncForgeFormDirective, AbstractDbxSearchableFieldDisplayDirective, AbstractForgeFormDirective, AbstractForgePickableItemFieldDirective, AbstractForgeSearchableFieldDirective, AbstractSyncForgeFormDirective, DBX_DATE_TIME_FIELD_DATE_NOT_IN_SCHEDULE_ERROR, DBX_DATE_TIME_FIELD_MENU_PRESETS_TOKEN, DBX_DATE_TIME_FIELD_TIME_NOT_IN_RANGE_ERROR, DBX_FORGE_ARRAY_FIELD_ELEMENT_WRAPPER_NAME, DBX_FORGE_ARRAY_FIELD_WRAPPER_NAME, DBX_FORGE_FIELD_TYPES, DBX_FORGE_FIELD_WRAPPER_TYPES, DBX_FORGE_FLEX_WRAPPER_TYPE_NAME, DBX_FORGE_FORM_COMPONENT_TEMPLATE, DBX_FORGE_FORM_FIELD_WRAPPER_NAME, DBX_FORGE_INFO_WRAPPER_TYPE_NAME, DBX_FORGE_PASSWORDS_MATCH_VALIDATION_KIND, DBX_FORGE_SEARCHABLE_CHIP_FIELD_TYPE_NAME, DBX_FORGE_SEARCHABLE_TEXT_FIELD_TYPE_NAME, DBX_FORGE_SECTION_WRAPPER_TYPE_NAME, DBX_FORGE_STYLE_WRAPPER_TYPE_NAME, DBX_FORGE_WORKING_WRAPPER_TYPE_NAME, DBX_SEARCHABLE_FIELD_COMPONENT_DATA_TOKEN, DEFAULT_DATE_TIME_FIELD_MENU_PRESETS_PRESETS, DEFAULT_DBX_FORGE_PASSWORDS_MATCH_VALIDATION_MESSAGE, DEFAULT_DBX_FORGE_TEXT_PASSWORD_AUTOCOMPLETE, DEFAULT_DBX_FORGE_TEXT_VERIFY_PASSWORD_AUTOCOMPLETE, DEFAULT_DURATION_PICKER_POPOVER_KEY, DEFAULT_FORGE_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE, DEFAULT_FORGE_LAT_LNG_TEXT_FIELD_PLACEHOLDER, DEFAULT_FORM_DISABLED_KEY, DEFAULT_TRANSFORM_DEBOUNCE_TIME, DbxActionFormDirective, DbxActionFormSafetyDirective, DbxDateTimeFieldMenuPresetsService, DbxDateTimeFieldTimeMode, DbxDateTimeValueMode, DbxDefaultSearchableFieldDisplayComponent, DbxDurationPickerPopoverComponent, DbxForgeActionDialogComponent, DbxForgeArrayFieldElementWrapperComponent, DbxForgeArrayFieldWrapperComponent, DbxForgeAsyncConfigFormComponent, DbxForgeComponentFieldComponent, DbxForgeDateRangeFieldComponent, DbxForgeDateTimeFieldComponent, DbxForgeDynamicFormSignalRef, DbxForgeFixedDateRangeFieldComponent, DbxForgeFixedDateRangeFieldSelectionStrategy, DbxForgeFormComponent, DbxForgeFormComponentImportsModule, DbxForgeFormContext, DbxForgeFormContextService, DbxForgeFormFieldWrapperComponent, DbxForgeGlobalDefaultConfigService, DbxForgeListSelectionFieldComponent, DbxForgePhoneFieldComponent, DbxForgePickableChipFieldComponent, DbxForgePickableListFieldComponent, DbxForgePresetSearchFormComponent, DbxForgeSearchableChipFieldComponent, DbxForgeSearchableTextFieldComponent, DbxForgeSourceSelectFieldComponent, DbxForgeTextEditorFieldComponent, DbxForgeTimeDurationFieldComponent, DbxForgeWorkingWrapperComponent, DbxForm, DbxFormLoadingSourceDirective, DbxFormLoggerDirective, DbxFormSourceDirective, DbxFormSpacerDirective, DbxFormState, DbxFormValueChangeDirective, DbxMutableForm, DbxSearchableFieldAutocompleteItemComponent, FIELD_VALUES_ARE_EQUAL_VALIDATION_KEY, FIELD_VALUE_IS_AVAILABLE_ERROR_VALIDATION_KEY, FIELD_VALUE_IS_AVAILABLE_VALIDATION_KEY, FORGE_COMPONENT_FIELD_TYPE, FORGE_DATERANGE_FIELD_TYPE, FORGE_DATETIME_FIELD_TYPE, FORGE_EXPAND_FIELD_TYPE_NAME, FORGE_FIELD_VALUE_IS_AVAILABLE_VALIDATOR_NAME, FORGE_FIXEDDATERANGE_FIELD_TYPE, FORGE_INFO_BUTTON_FIELD_TYPE_NAME, FORGE_IS_DIVISIBLE_BY_VALIDATION_KEY, FORGE_LIST_SELECTION_FIELD_TYPE, FORGE_PHONE_FIELD_TYPE, FORGE_PICKABLE_CHIP_FIELD_TYPE, FORGE_PICKABLE_LIST_FIELD_TYPE, FORGE_SOURCE_SELECT_FIELD_TYPE, FORGE_TEXT_EDITOR_FIELD_TYPE, FORGE_TIMEDURATION_FIELD_TYPE, FORGE_VALUE_SELECTION_FIELD_TYPE, INVALID_PHONE_NUMBER_EXTENSION_MESSAGE, INVALID_PHONE_NUMBER_MESSAGE, IS_DIVISIBLE_BY_VALIDATION_KEY, IS_NOT_WEBSITE_URL_VALIDATION_KEY, IS_NOT_WEBSITE_URL_WITH_EXPECTED_DOMAIN_VALIDATION_KEY, IS_NOT_WEBSITE_URL_WITH_PREFIX_VALIDATION_KEY, SELF_DEPENDENCY_TOKEN, _filterForgeFormValueKeepInternal, _filterForgeFormValueStripInternal, _forgeFormValueEqual, applyTimeOffset, buildCombinedDateTime, computeDateKeyboardStep, computeErrorMessage, computeTimeKeyboardStep, configureDbxForgeFormFieldWrapper, configureDbxForgeFormFieldWrapperWith, configureForgeAutocompleteFieldMeta, copyFormConfigCustomFnConfig, dateRangeFieldMapper, dateTimeFieldCalc, dateTimeFieldMapper, dateTimePreset, dbxDateRangeIsSameDateRangeFieldValue, dbxDateTimeInputValueParseFactory, dbxDateTimeIsSameDateTimeFieldValue, dbxDateTimeOutputValueFactory, dbxForgeAddressFields, dbxForgeAddressGroup, dbxForgeAddressLineField, dbxForgeAddressListField, dbxForgeArrayField, dbxForgeBuildFieldDef, dbxForgeCheckboxField, dbxForgeChecklistField, dbxForgeCityField, dbxForgeComponentField, dbxForgeContainer, dbxForgeCountryField, dbxForgeDateField, dbxForgeDateRangeRow, dbxForgeDateTimeField, dbxForgeDateTimeRangeRow, dbxForgeDefaultValidationMessages, dbxForgeDollarAmountField, dbxForgeEmailField, dbxForgeExpandWrapper, dbxForgeFieldDisabled, dbxForgeFieldFunction, dbxForgeFieldFunctionConfigPropsWithHintBuilder, dbxForgeFieldFunctionConfigure, dbxForgeFinalizeFormConfig, dbxForgeFixedDateRangeField, dbxForgeFlexLayout, provideDbxForgeFormContext as dbxForgeFormComponentProviders, dbxForgeGroup, dbxForgeInfoWrapper, dbxForgeLatLngTextField, dbxForgeListSelectionField, dbxForgeNameField, dbxForgeNumberField, dbxForgeNumberSliderField, dbxForgePhoneField, dbxForgePickableChipField, dbxForgePickableListField, dbxForgePresetSearchFormFields, dbxForgeRow, dbxForgeSearchableChipField, dbxForgeSearchableStringChipField, dbxForgeSearchableTextField, dbxForgeSectionWrapper, dbxForgeSourceSelectField, dbxForgeStateField, dbxForgeStyleWrapper, dbxForgeSubsectionWrapper, dbxForgeTextAreaField, dbxForgeTextEditorField, dbxForgeTextField, dbxForgeTextIsAvailableField, dbxForgeTextPasswordField, dbxForgeTextPasswordWithVerifyField, dbxForgeTextVerifyPasswordField, dbxForgeTimeDurationField, dbxForgeTimezoneStringField, dbxForgeToggleField, dbxForgeToggleWrapper, dbxForgeUsernameLoginField, dbxForgeUsernamePasswordLoginFields, dbxForgeValueSelectionField, dbxForgeWebsiteUrlField, dbxForgeZipCodeField, dbxFormSourceObservable, dbxFormSourceObservableFromStream, disableAutofillAttributes, fieldAutocompleteAttributeValue, fieldValueIsAvailableValidator, fieldValuesAreEqualValidator, filterPickableItemFieldValuesByLabel, filterPickableItemFieldValuesByLabelFilterFunction, filterPresets, fixedDateRangeFieldMapper, isDivisibleBy, isDomain, isE164PhoneNumber, isE164PhoneNumberWithValidExtension, isInRange, isPhoneExtension, isTruthy, isWebsiteUrlValidator, mergeDbxForgeFieldFormConfig, mergePickerConfig, navigateDate, phoneFieldMapper, pickableValueFieldValuesConfigForStaticLabeledValues, provideDbxForgeFormContext, provideDbxForgeFormFieldDeclarations, provideDbxForm, provideDbxFormConfiguration, provideDbxMutableForm, resolveForgeSelectionOptions, streamValueFromControl, stripEmptyForgeValues, stripForgeInternalKeys, timeDurationFieldMapper, toggleDisableFormControl };
|
|
10703
11019
|
//# sourceMappingURL=dereekb-dbx-form.mjs.map
|