@dereekb/dbx-form 13.11.14 → 13.11.15
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 +237 -201
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/{dereekb-dbx-form-info.wrapper.component-DxmZz3Dw.mjs → dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs} +5 -5
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +48 -30
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-quiz.mjs +34 -33
- package/fesm2022/dereekb-dbx-form-quiz.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form.mjs +847 -760
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/package.json +8 -8
- package/types/dereekb-dbx-form-calendar.d.ts +82 -79
- package/types/dereekb-dbx-form-mapbox.d.ts +22 -20
- package/types/dereekb-dbx-form-quiz.d.ts +11 -14
- package/types/dereekb-dbx-form.d.ts +726 -718
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-DxmZz3Dw.mjs.map +0 -1
|
@@ -15,9 +15,9 @@ class DbxForgeInfoWrapperComponent {
|
|
|
15
15
|
fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
|
|
16
16
|
onInfoClick = input(...(ngDevMode ? [undefined, { debugName: "onInfoClick" }] : /* istanbul ignore next */ []));
|
|
17
17
|
ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
|
|
18
|
-
|
|
18
|
+
ariaLabelValueSignal = computed(() => {
|
|
19
19
|
return this.ariaLabel() ?? 'More information';
|
|
20
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
20
|
+
}, ...(ngDevMode ? [{ debugName: "ariaLabelValueSignal" }] : /* istanbul ignore next */ []));
|
|
21
21
|
onClick() {
|
|
22
22
|
this.onInfoClick()?.();
|
|
23
23
|
}
|
|
@@ -28,7 +28,7 @@ class DbxForgeInfoWrapperComponent {
|
|
|
28
28
|
<ng-container #fieldComponent></ng-container>
|
|
29
29
|
</div>
|
|
30
30
|
<div class="dbx-form-info-wrapper-info dbx-flex-noshrink dbx-flex-column dbx-flex-center">
|
|
31
|
-
<button mat-icon-button type="button" (click)="onClick()" [attr.aria-label]="
|
|
31
|
+
<button mat-icon-button type="button" (click)="onClick()" [attr.aria-label]="ariaLabelValueSignal()">
|
|
32
32
|
<mat-icon>info</mat-icon>
|
|
33
33
|
</button>
|
|
34
34
|
</div>
|
|
@@ -45,7 +45,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
45
45
|
<ng-container #fieldComponent></ng-container>
|
|
46
46
|
</div>
|
|
47
47
|
<div class="dbx-form-info-wrapper-info dbx-flex-noshrink dbx-flex-column dbx-flex-center">
|
|
48
|
-
<button mat-icon-button type="button" (click)="onClick()" [attr.aria-label]="
|
|
48
|
+
<button mat-icon-button type="button" (click)="onClick()" [attr.aria-label]="ariaLabelValueSignal()">
|
|
49
49
|
<mat-icon>info</mat-icon>
|
|
50
50
|
</button>
|
|
51
51
|
</div>
|
|
@@ -58,4 +58,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
58
58
|
}], propDecorators: { fieldComponent: [{ type: i0.ViewChild, args: ['fieldComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }], onInfoClick: [{ type: i0.Input, args: [{ isSignal: true, alias: "onInfoClick", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }] } });
|
|
59
59
|
|
|
60
60
|
export { DbxForgeInfoWrapperComponent };
|
|
61
|
-
//# sourceMappingURL=dereekb-dbx-form-info.wrapper.component-
|
|
61
|
+
//# sourceMappingURL=dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dereekb-dbx-form-info.wrapper.component-ChSBMxgm.mjs","sources":["../../../../packages/dbx-form/src/lib/forge/field/wrapper/info/info.wrapper.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, computed, input, viewChild, ViewContainerRef } from '@angular/core';\nimport { MatIconButton } from '@angular/material/button';\nimport { MatIconModule } from '@angular/material/icon';\nimport { type FieldWrapper } from '@ng-forge/dynamic-forms';\n\n/**\n * Forge wrapper component that renders child fields inside a flex layout\n * with an info icon button beside them.\n *\n * Implements {@link FieldWrapper} and receives configuration\n * via component inputs.\n */\n@Component({\n selector: 'dbx-forge-info-wrapper',\n template: `\n <div class=\"dbx-form-info-wrapper dbx-flex-bar\">\n <div class=\"dbx-form-info-wrapper-content dbx-flex-grow\">\n <ng-container #fieldComponent></ng-container>\n </div>\n <div class=\"dbx-form-info-wrapper-info dbx-flex-noshrink dbx-flex-column dbx-flex-center\">\n <button mat-icon-button type=\"button\" (click)=\"onClick()\" [attr.aria-label]=\"ariaLabelValueSignal()\">\n <mat-icon>info</mat-icon>\n </button>\n </div>\n </div>\n `,\n imports: [MatIconButton, MatIconModule],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxForgeInfoWrapperComponent implements FieldWrapper {\n readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });\n\n readonly onInfoClick = input<() => void>();\n readonly ariaLabel = input<string>();\n\n readonly ariaLabelValueSignal = computed(() => {\n return this.ariaLabel() ?? 'More information';\n });\n\n onClick(): void {\n this.onInfoClick()?.();\n }\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -29,12 +29,14 @@ import { FormlyModule } from '@ngx-formly/core';
|
|
|
29
29
|
import { DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, provideDynamicForm } from '@ng-forge/dynamic-forms';
|
|
30
30
|
import { setupMetaTracking, resolveValueFieldContext, buildValueFieldInputs } from '@ng-forge/dynamic-forms/integration';
|
|
31
31
|
|
|
32
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- legacy formly mapbox factory; references deprecated config interfaces and is itself deprecated in favor of dbxForgeMapboxLatLngField() */
|
|
32
33
|
/**
|
|
33
34
|
* Creates a Formly field configuration for a Mapbox-powered latitude/longitude picker with optional map display.
|
|
34
35
|
*
|
|
36
|
+
* @param config - Optional field configuration overrides.
|
|
37
|
+
* @returns A validated Formly field configuration for the Mapbox lat/lng picker.
|
|
38
|
+
*
|
|
35
39
|
* @deprecated Use dbxForgeMapboxLatLngField() from the forge API instead.
|
|
36
|
-
* @param config - Optional field configuration overrides
|
|
37
|
-
* @returns A validated Formly field configuration for the Mapbox lat/lng picker
|
|
38
40
|
*/
|
|
39
41
|
function mapboxLatLngField(config = {}) {
|
|
40
42
|
const { key = 'latLng', latLngConfig, showMap, zoom, recenterTime, showCenterButton, setCenterOnLocationSet, selectLocationOnMapDrag, selectLocationOnMapClick, markerConfig } = config;
|
|
@@ -69,6 +71,7 @@ function mapboxLatLngField(config = {}) {
|
|
|
69
71
|
return fieldConfig;
|
|
70
72
|
}
|
|
71
73
|
|
|
74
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- marker component injects the deprecated DbxFormMapboxLatLngFieldComponent; both belong to the legacy mapbox formly layer being replaced by forge */
|
|
72
75
|
class DbxFormMapboxLatLngFieldMarkerComponent {
|
|
73
76
|
fieldComponent = inject(DbxFormMapboxLatLngFieldComponent);
|
|
74
77
|
marker$ = combineLatest([this.fieldComponent.latLng$, this.fieldComponent.markerConfig$]).pipe(map(([latLng, markerConfig]) => {
|
|
@@ -92,6 +95,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
92
95
|
}]
|
|
93
96
|
}] });
|
|
94
97
|
|
|
98
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- legacy DbxFormMapboxLatLngFieldComponent retained for backward compatibility; replacement is DbxForgeMapboxLatLngFieldComponent and intra-file references are part of the deprecated layer */
|
|
95
99
|
const DEFAULT_DBX_FORM_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY = 'DbxFormMapboxLatLngFieldComponent';
|
|
96
100
|
const DEFAULT_DBX_FORM_MAPBOX_LAT_LNG_MARKER_CONFIG = {
|
|
97
101
|
icon: 'pin_drop'
|
|
@@ -325,6 +329,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
325
329
|
`, providers: [provideMapboxStoreIfParentIsUnavailable()], imports: [NgClass, MapComponent, MarkerComponent, ReactiveFormsModule, MatIconModule, DbxMapboxModule, MatButtonModule, MatFormFieldModule, MatInputModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".dbx-mapbox-input-field .dbx-mapbox-input-field-map{height:220px;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-input{display:flex;align-items:center}.dbx-mapbox-input-field .dbx-mapbox-input-field-input .dbx-mapbox-input-field-input-field{width:calc(100% - 40px)}.dbx-mapbox-input-field-compact .dbx-latlng-field-input{min-height:120px;height:300px;max-height:calc(var(--vh100) * .5)}\n"] }]
|
|
326
330
|
}] });
|
|
327
331
|
|
|
332
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- legacy NgModule that wraps the deprecated DbxFormMapboxLatLngFieldComponent; replacement is provideDbxForgeMapboxFieldDeclarations() */
|
|
328
333
|
const importsAndExports$1 = [DbxFormMapboxLatLngFieldComponent];
|
|
329
334
|
/**
|
|
330
335
|
* @deprecated Use provideDbxForgeMapboxFieldDeclarations() instead.
|
|
@@ -358,8 +363,8 @@ const FORGE_MAPBOX_LATLNG_FIELD_TYPE = 'dbx-forge-mapbox-latlng';
|
|
|
358
363
|
*
|
|
359
364
|
* This is the forge equivalent of {@link mapboxLatLngField}.
|
|
360
365
|
*
|
|
361
|
-
* @param config - Optional field configuration overrides
|
|
362
|
-
* @returns A validated forge field definition for the Mapbox lat/lng picker
|
|
366
|
+
* @param config - Optional field configuration overrides.
|
|
367
|
+
* @returns A validated forge field definition for the Mapbox lat/lng picker.
|
|
363
368
|
*/
|
|
364
369
|
function dbxForgeMapboxLatLngField(config = {}) {
|
|
365
370
|
const { key = 'latLng', label, description, required, readonly: isReadonly, showMap, zoom, latLngConfig, recenterTime, showCenterButton, setCenterOnLocationSet, selectLocationOnMapDrag, selectLocationOnMapClick, markerConfig } = config;
|
|
@@ -465,26 +470,32 @@ class DbxForgeMapboxLatLngFieldComponent {
|
|
|
465
470
|
_useCurrentLocationDisabled = completeOnDestroy(new BehaviorSubject(false));
|
|
466
471
|
useCurrentLocationDisabled$ = this._useCurrentLocationDisabled.asObservable();
|
|
467
472
|
// Field value signal (double-call pattern)
|
|
468
|
-
|
|
473
|
+
fieldValueSignal = computed(() => {
|
|
469
474
|
const state = this.field()?.();
|
|
470
475
|
return state?.value?.();
|
|
471
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
472
|
-
|
|
476
|
+
}, ...(ngDevMode ? [{ debugName: "fieldValueSignal" }] : /* istanbul ignore next */ []));
|
|
477
|
+
isDisabledSignal = computed(() => {
|
|
473
478
|
const state = this.field()?.();
|
|
474
479
|
return state?.disabled?.() ?? false;
|
|
475
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
476
|
-
isReadonlyOrDisabledSignal = computed(() =>
|
|
480
|
+
}, ...(ngDevMode ? [{ debugName: "isDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
481
|
+
isReadonlyOrDisabledSignal = computed(() => {
|
|
482
|
+
const isDisabled = this.isDisabledSignal();
|
|
483
|
+
return this.props()?.readonly || isDisabled;
|
|
484
|
+
}, ...(ngDevMode ? [{ debugName: "isReadonlyOrDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
477
485
|
// Computed props from field definition
|
|
478
486
|
showMapSignal = computed(() => this.props()?.showMap ?? true, ...(ngDevMode ? [{ debugName: "showMapSignal" }] : /* istanbul ignore next */ []));
|
|
479
487
|
selectLocationOnMapDragSignal = computed(() => this.props()?.selectLocationOnMapDrag ?? true, ...(ngDevMode ? [{ debugName: "selectLocationOnMapDragSignal" }] : /* istanbul ignore next */ []));
|
|
480
488
|
selectLocationOnMapClickSignal = computed(() => this.props()?.selectLocationOnMapClick ?? false, ...(ngDevMode ? [{ debugName: "selectLocationOnMapClickSignal" }] : /* istanbul ignore next */ []));
|
|
481
489
|
setCenterOnLocationSetSignal = computed(() => this.props()?.setCenterOnLocationSet ?? true, ...(ngDevMode ? [{ debugName: "setCenterOnLocationSetSignal" }] : /* istanbul ignore next */ []));
|
|
482
|
-
showCenterButtonSignal = computed(() =>
|
|
490
|
+
showCenterButtonSignal = computed(() => {
|
|
491
|
+
const props = this.props();
|
|
492
|
+
return !this.selectLocationOnMapDragSignal() && props?.showCenterButton !== false;
|
|
493
|
+
}, ...(ngDevMode ? [{ debugName: "showCenterButtonSignal" }] : /* istanbul ignore next */ []));
|
|
483
494
|
recenterTimeSignal = computed(() => this.props()?.recenterTime || 10 * 1000, ...(ngDevMode ? [{ debugName: "recenterTimeSignal" }] : /* istanbul ignore next */ []));
|
|
484
495
|
placeholderTextSignal = computed(() => this.props()?.placeholder, ...(ngDevMode ? [{ debugName: "placeholderTextSignal" }] : /* istanbul ignore next */ []));
|
|
485
496
|
// Observables for map store sync
|
|
486
497
|
latLngValueSignal = computed(() => {
|
|
487
|
-
const value = this.
|
|
498
|
+
const value = this.fieldValueSignal();
|
|
488
499
|
const fn = this.latLngPointFunctionSignal();
|
|
489
500
|
return value == null ? defaultLatLngPoint() : fn(value);
|
|
490
501
|
}, ...(ngDevMode ? [{ debugName: "latLngValueSignal" }] : /* istanbul ignore next */ []));
|
|
@@ -563,7 +574,7 @@ class DbxForgeMapboxLatLngFieldComponent {
|
|
|
563
574
|
});
|
|
564
575
|
// Sync field value → text control (inbound)
|
|
565
576
|
effect(() => {
|
|
566
|
-
const value = this.
|
|
577
|
+
const value = this.fieldValueSignal();
|
|
567
578
|
if (!this._syncing) {
|
|
568
579
|
this._syncing = true;
|
|
569
580
|
this.textCtrl.setValue(value ?? '', { emitEvent: false });
|
|
@@ -663,9 +674,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
663
674
|
/**
|
|
664
675
|
* Custom mapper for the forge mapbox lat/lng field.
|
|
665
676
|
*
|
|
666
|
-
* @param fieldDef - Field definition configuration
|
|
667
|
-
* @param fieldDef.key - Form model key for the field
|
|
668
|
-
* @returns Signal containing a Record of input names to values for ngComponentOutlet
|
|
677
|
+
* @param fieldDef - Field definition configuration.
|
|
678
|
+
* @param fieldDef.key - Form model key for the field.
|
|
679
|
+
* @returns Signal containing a Record of input names to values for ngComponentOutlet.
|
|
669
680
|
*/
|
|
670
681
|
function mapboxLatLngFieldMapper(fieldDef) {
|
|
671
682
|
const ctx = resolveValueFieldContext();
|
|
@@ -689,12 +700,14 @@ var latlng_forge_field_component = /*#__PURE__*/Object.freeze({
|
|
|
689
700
|
mapboxLatLngFieldMapper: mapboxLatLngFieldMapper
|
|
690
701
|
});
|
|
691
702
|
|
|
703
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- legacy formly mapbox factory; references deprecated config interfaces and is itself deprecated in favor of dbxForgeMapboxZoomField() */
|
|
692
704
|
/**
|
|
693
705
|
* Creates a Formly field configuration for a Mapbox-powered zoom level picker with optional map preview.
|
|
694
706
|
*
|
|
707
|
+
* @param config - Optional field configuration overrides.
|
|
708
|
+
* @returns A validated Formly field configuration for the Mapbox zoom picker.
|
|
709
|
+
*
|
|
695
710
|
* @deprecated Use dbxForgeMapboxZoomField() from the forge API instead.
|
|
696
|
-
* @param config - Optional field configuration overrides
|
|
697
|
-
* @returns A validated Formly field configuration for the Mapbox zoom picker
|
|
698
711
|
*/
|
|
699
712
|
function mapboxZoomField(config = {}) {
|
|
700
713
|
const { key = 'zoom', showMap, center, minZoom, maxZoom, zoomStep } = config;
|
|
@@ -846,6 +859,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
846
859
|
`, providers: [provideMapboxStoreIfParentIsUnavailable()], imports: [NgClass, DbxMapboxModule, FormsModule, ReactiveFormsModule, MatFormFieldModule, MatInputModule], changeDetection: ChangeDetectionStrategy.OnPush, standalone: true, styles: [".dbx-mapbox-input-field .dbx-mapbox-input-field-map{height:220px;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-input-field .dbx-mapbox-input-field-input{display:flex;align-items:center}.dbx-mapbox-input-field .dbx-mapbox-input-field-input .dbx-mapbox-input-field-input-field{width:calc(100% - 40px)}.dbx-mapbox-input-field-compact .dbx-latlng-field-input{min-height:120px;height:300px;max-height:calc(var(--vh100) * .5)}\n"] }]
|
|
847
860
|
}] });
|
|
848
861
|
|
|
862
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- legacy NgModule that wraps the deprecated DbxFormMapboxZoomFieldComponent; replacement is provideDbxForgeMapboxFieldDeclarations() */
|
|
849
863
|
const importsAndExports = [DbxFormMapboxZoomFieldComponent];
|
|
850
864
|
/**
|
|
851
865
|
* @deprecated Use provideDbxForgeMapboxFieldDeclarations() instead.
|
|
@@ -879,8 +893,8 @@ const FORGE_MAPBOX_ZOOM_FIELD_TYPE = 'dbx-forge-mapbox-zoom';
|
|
|
879
893
|
*
|
|
880
894
|
* This is the forge equivalent of {@link mapboxZoomField}.
|
|
881
895
|
*
|
|
882
|
-
* @param config - Optional field configuration overrides
|
|
883
|
-
* @returns A validated forge field definition for the Mapbox zoom picker
|
|
896
|
+
* @param config - Optional field configuration overrides.
|
|
897
|
+
* @returns A validated forge field definition for the Mapbox zoom picker.
|
|
884
898
|
*/
|
|
885
899
|
function dbxForgeMapboxZoomField(config = {}) {
|
|
886
900
|
const { key = 'zoom', label, description, required, readonly: isReadonly, showMap, center, minZoom, maxZoom, zoomStep } = config;
|
|
@@ -940,22 +954,25 @@ class DbxForgeMapboxZoomFieldComponent {
|
|
|
940
954
|
_sub = cleanSubscription();
|
|
941
955
|
_center = completeOnDestroy(new BehaviorSubject(undefined));
|
|
942
956
|
// Field value signal (double-call pattern)
|
|
943
|
-
|
|
957
|
+
fieldValueSignal = computed(() => {
|
|
944
958
|
const state = this.field()?.();
|
|
945
959
|
return state?.value?.();
|
|
946
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
947
|
-
|
|
960
|
+
}, ...(ngDevMode ? [{ debugName: "fieldValueSignal" }] : /* istanbul ignore next */ []));
|
|
961
|
+
isDisabledSignal = computed(() => {
|
|
948
962
|
const state = this.field()?.();
|
|
949
963
|
return state?.disabled?.() ?? false;
|
|
950
|
-
}, ...(ngDevMode ? [{ debugName: "
|
|
951
|
-
isReadonlyOrDisabledSignal = computed(() =>
|
|
964
|
+
}, ...(ngDevMode ? [{ debugName: "isDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
965
|
+
isReadonlyOrDisabledSignal = computed(() => {
|
|
966
|
+
const isDisabled = this.isDisabledSignal();
|
|
967
|
+
return this.props()?.readonly || isDisabled;
|
|
968
|
+
}, ...(ngDevMode ? [{ debugName: "isReadonlyOrDisabledSignal" }] : /* istanbul ignore next */ []));
|
|
952
969
|
// Computed props
|
|
953
970
|
showMapSignal = computed(() => this.props()?.showMap ?? true, ...(ngDevMode ? [{ debugName: "showMapSignal" }] : /* istanbul ignore next */ []));
|
|
954
971
|
lockMapToZoomLevelsSignal = computed(() => this.props()?.lockMapToZoomLevels ?? false, ...(ngDevMode ? [{ debugName: "lockMapToZoomLevelsSignal" }] : /* istanbul ignore next */ []));
|
|
955
972
|
minZoomSignal = computed(() => mapboxZoomLevel(this.props()?.minZoom || MAPBOX_MIN_ZOOM_LEVEL), ...(ngDevMode ? [{ debugName: "minZoomSignal" }] : /* istanbul ignore next */ []));
|
|
956
973
|
maxZoomSignal = computed(() => mapboxZoomLevel(this.props()?.maxZoom || MAPBOX_MAX_ZOOM_LEVEL), ...(ngDevMode ? [{ debugName: "maxZoomSignal" }] : /* istanbul ignore next */ []));
|
|
957
974
|
zoomStepSignal = computed(() => mapboxZoomLevel(this.props()?.zoomStep || 1), ...(ngDevMode ? [{ debugName: "zoomStepSignal" }] : /* istanbul ignore next */ []));
|
|
958
|
-
fieldValue$ = toObservable(this.
|
|
975
|
+
fieldValue$ = toObservable(this.fieldValueSignal);
|
|
959
976
|
zoom$ = this.fieldValue$.pipe(filterMaybe(), shareReplay(1));
|
|
960
977
|
center$ = this._center.pipe(filterMaybe());
|
|
961
978
|
_syncing = false;
|
|
@@ -1001,7 +1018,7 @@ class DbxForgeMapboxZoomFieldComponent {
|
|
|
1001
1018
|
});
|
|
1002
1019
|
// Sync field value → number control (inbound)
|
|
1003
1020
|
effect(() => {
|
|
1004
|
-
const value = this.
|
|
1021
|
+
const value = this.fieldValueSignal();
|
|
1005
1022
|
if (!this._syncing) {
|
|
1006
1023
|
this._syncing = true;
|
|
1007
1024
|
this.numberCtrl.setValue(value ?? null, { emitEvent: false });
|
|
@@ -1066,9 +1083,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.11", ngImpo
|
|
|
1066
1083
|
/**
|
|
1067
1084
|
* Custom mapper for the forge mapbox zoom field.
|
|
1068
1085
|
*
|
|
1069
|
-
* @param fieldDef - Field definition configuration
|
|
1070
|
-
* @param fieldDef.key - Form model key for the field
|
|
1071
|
-
* @returns Signal containing a Record of input names to values for ngComponentOutlet
|
|
1086
|
+
* @param fieldDef - Field definition configuration.
|
|
1087
|
+
* @param fieldDef.key - Form model key for the field.
|
|
1088
|
+
* @returns Signal containing a Record of input names to values for ngComponentOutlet.
|
|
1072
1089
|
*/
|
|
1073
1090
|
function mapboxZoomFieldMapper(fieldDef) {
|
|
1074
1091
|
const ctx = resolveValueFieldContext();
|
|
@@ -1090,6 +1107,7 @@ var zoom_forge_field_component = /*#__PURE__*/Object.freeze({
|
|
|
1090
1107
|
mapboxZoomFieldMapper: mapboxZoomFieldMapper
|
|
1091
1108
|
});
|
|
1092
1109
|
|
|
1110
|
+
/* eslint-disable @typescript-eslint/no-deprecated -- aggregator NgModule for the deprecated mapbox formly modules; replacement is provideDbxForgeMapboxFieldDeclarations() */
|
|
1093
1111
|
/**
|
|
1094
1112
|
* @deprecated Use provideDbxForgeMapboxFieldDeclarations() instead.
|
|
1095
1113
|
*/
|
|
@@ -1130,7 +1148,7 @@ const DBX_FORGE_MAPBOX_FIELD_TYPES = [DbxForgeMapboxLatLngFieldType, DbxForgeMap
|
|
|
1130
1148
|
*
|
|
1131
1149
|
* Add this to your app's providers alongside provideDbxForgeFormFieldDeclarations().
|
|
1132
1150
|
*
|
|
1133
|
-
* @returns
|
|
1151
|
+
* @returns The providers that register the mapbox forge field types with ng-forge.
|
|
1134
1152
|
*/
|
|
1135
1153
|
function provideDbxForgeMapboxFieldDeclarations() {
|
|
1136
1154
|
return provideDynamicForm(...DBX_FORGE_MAPBOX_FIELD_TYPES);
|