@dereekb/dbx-form 13.8.0 → 13.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/fesm2022/dereekb-dbx-form-calendar.mjs +10 -18
  2. package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
  3. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs +39 -0
  4. package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs.map +1 -0
  5. package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs +61 -0
  6. package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs.map +1 -0
  7. package/fesm2022/dereekb-dbx-form-mapbox.mjs +26 -16
  8. package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
  9. package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs +52 -0
  10. package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs.map +1 -0
  11. package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs +42 -0
  12. package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs.map +1 -0
  13. package/fesm2022/dereekb-dbx-form.mjs +4893 -2968
  14. package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
  15. package/lib/forge/_forge.scss +14 -0
  16. package/lib/forge/field/_field.scss +0 -2
  17. package/lib/forge/field/selection/_selection.scss +3 -0
  18. package/lib/forge/field/selection/list/_list.scss +17 -0
  19. package/lib/forge/field/selection/pickable/_pickable.scss +26 -1
  20. package/lib/forge/field/selection/sourceselect/_sourceselect.scss +16 -32
  21. package/lib/forge/field/wrapper/_wrapper.scss +16 -6
  22. package/lib/{formly/form/_form.scss → forge/preset/_preset.scss} +3 -12
  23. package/lib/forge/style/_shared.scss +13 -3
  24. package/lib/form/_form.scss +21 -7
  25. package/lib/formly/field/selection/sourceselect/_sourceselect.scss +0 -7
  26. package/lib/style/_all-core.scss +2 -4
  27. package/lib/style/_all-theme.scss +2 -4
  28. package/lib/style/_all-typography.scss +1 -1
  29. package/package.json +10 -10
  30. package/types/dereekb-dbx-form-calendar.d.ts +9 -20
  31. package/types/dereekb-dbx-form-mapbox.d.ts +15 -12
  32. package/types/dereekb-dbx-form.d.ts +4962 -3950
  33. package/fesm2022/dereekb-dbx-form-array.field.component-1wYSd4d3.mjs +0 -169
  34. package/fesm2022/dereekb-dbx-form-array.field.component-1wYSd4d3.mjs.map +0 -1
  35. package/fesm2022/dereekb-dbx-form-formfield.field.component-BQyujXe3.mjs +0 -70
  36. package/fesm2022/dereekb-dbx-form-formfield.field.component-BQyujXe3.mjs.map +0 -1
  37. package/fesm2022/dereekb-dbx-form-info.wrapper.field.component-Crm4wVr5.mjs +0 -35
  38. package/fesm2022/dereekb-dbx-form-info.wrapper.field.component-Crm4wVr5.mjs.map +0 -1
  39. package/fesm2022/dereekb-dbx-form-section.field.component-DliafLqL.mjs +0 -63
  40. package/fesm2022/dereekb-dbx-form-section.field.component-DliafLqL.mjs.map +0 -1
  41. package/fesm2022/dereekb-dbx-form-style.field.component-C3ZNiotx.mjs +0 -71
  42. package/fesm2022/dereekb-dbx-form-style.field.component-C3ZNiotx.mjs.map +0 -1
  43. package/fesm2022/dereekb-dbx-form-working.field.component-CO8vK2bH.mjs +0 -53
  44. package/fesm2022/dereekb-dbx-form-working.field.component-CO8vK2bH.mjs.map +0 -1
  45. package/fesm2022/dereekb-dbx-form-working.wrapper.field.component-BtD7_5i5.mjs +0 -54
  46. package/fesm2022/dereekb-dbx-form-working.wrapper.field.component-BtD7_5i5.mjs.map +0 -1
  47. package/fesm2022/dereekb-dbx-form-wrapper.content.component-Cy4ND_se.mjs +0 -87
  48. package/fesm2022/dereekb-dbx-form-wrapper.content.component-Cy4ND_se.mjs.map +0 -1
@@ -0,0 +1,39 @@
1
+ import * as i0 from '@angular/core';
2
+ import { viewChild, ViewContainerRef, input, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { DbxFlexGroupDirective } from '@dereekb/dbx-web';
4
+
5
+ /**
6
+ * Forge wrapper component that arranges child fields in a responsive flex layout
7
+ * using the `dbxFlexGroup` directive.
8
+ *
9
+ * Registered as forge wrapper `'dbx-forge-flex'`.
10
+ */
11
+ class DbxForgeFlexWrapperComponent {
12
+ fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
13
+ breakpoint = input(...(ngDevMode ? [undefined, { debugName: "breakpoint" }] : /* istanbul ignore next */ []));
14
+ relative = input(false, ...(ngDevMode ? [{ debugName: "relative" }] : /* istanbul ignore next */ []));
15
+ breakToColumn = input(false, ...(ngDevMode ? [{ debugName: "breakToColumn" }] : /* istanbul ignore next */ []));
16
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DbxForgeFlexWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
17
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: DbxForgeFlexWrapperComponent, isStandalone: true, selector: "dbx-forge-flex-wrapper", inputs: { breakpoint: { classPropertyName: "breakpoint", publicName: "breakpoint", isSignal: true, isRequired: false, transformFunction: null }, relative: { classPropertyName: "relative", publicName: "relative", isSignal: true, isRequired: false, transformFunction: null }, breakToColumn: { classPropertyName: "breakToColumn", publicName: "breakToColumn", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
18
+ <div class="dbx-form-flex-section" dbxFlexGroup [content]="false" [relative]="relative()" [breakpoint]="breakpoint()" [breakToColumn]="breakToColumn()">
19
+ <ng-container #fieldComponent></ng-container>
20
+ </div>
21
+ `, isInline: true, dependencies: [{ kind: "directive", type: DbxFlexGroupDirective, selector: "[dbxFlexGroup]", inputs: ["content", "breakToColumn", "relative", "breakpoint"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
22
+ }
23
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DbxForgeFlexWrapperComponent, decorators: [{
24
+ type: Component,
25
+ args: [{
26
+ selector: 'dbx-forge-flex-wrapper',
27
+ template: `
28
+ <div class="dbx-form-flex-section" dbxFlexGroup [content]="false" [relative]="relative()" [breakpoint]="breakpoint()" [breakToColumn]="breakToColumn()">
29
+ <ng-container #fieldComponent></ng-container>
30
+ </div>
31
+ `,
32
+ imports: [DbxFlexGroupDirective],
33
+ changeDetection: ChangeDetectionStrategy.OnPush,
34
+ standalone: true
35
+ }]
36
+ }], propDecorators: { fieldComponent: [{ type: i0.ViewChild, args: ['fieldComponent', { ...{ read: ViewContainerRef }, isSignal: true }] }], breakpoint: [{ type: i0.Input, args: [{ isSignal: true, alias: "breakpoint", required: false }] }], relative: [{ type: i0.Input, args: [{ isSignal: true, alias: "relative", required: false }] }], breakToColumn: [{ type: i0.Input, args: [{ isSignal: true, alias: "breakToColumn", required: false }] }] } });
37
+
38
+ export { DbxForgeFlexWrapperComponent };
39
+ //# sourceMappingURL=dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs","sources":["../../../../packages/dbx-form/src/lib/forge/field/wrapper/flex/flex.wrapper.component.ts"],"sourcesContent":["import { ChangeDetectionStrategy, Component, input, viewChild, ViewContainerRef } from '@angular/core';\nimport { DbxFlexGroupDirective, type ScreenMediaWidthType } from '@dereekb/dbx-web';\nimport { type FieldWrapperContract } from '@ng-forge/dynamic-forms';\n\n/**\n * Forge wrapper component that arranges child fields in a responsive flex layout\n * using the `dbxFlexGroup` directive.\n *\n * Registered as forge wrapper `'dbx-forge-flex'`.\n */\n@Component({\n selector: 'dbx-forge-flex-wrapper',\n template: `\n <div class=\"dbx-form-flex-section\" dbxFlexGroup [content]=\"false\" [relative]=\"relative()\" [breakpoint]=\"breakpoint()\" [breakToColumn]=\"breakToColumn()\">\n <ng-container #fieldComponent></ng-container>\n </div>\n `,\n imports: [DbxFlexGroupDirective],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: true\n})\nexport class DbxForgeFlexWrapperComponent implements FieldWrapperContract {\n readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });\n\n readonly breakpoint = input<ScreenMediaWidthType | undefined>();\n readonly relative = input<boolean>(false);\n readonly breakToColumn = input<boolean>(false);\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import * as i0 from '@angular/core';
2
+ import { viewChild, ViewContainerRef, input, computed, ChangeDetectionStrategy, Component } from '@angular/core';
3
+ import { MatIconButton } from '@angular/material/button';
4
+ import * as i1 from '@angular/material/icon';
5
+ import { MatIconModule } from '@angular/material/icon';
6
+
7
+ /**
8
+ * Forge wrapper component that renders child fields inside a flex layout
9
+ * with an info icon button beside them.
10
+ *
11
+ * Implements {@link FieldWrapperContract} and receives configuration
12
+ * via component inputs.
13
+ */
14
+ class DbxForgeInfoWrapperComponent {
15
+ fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });
16
+ onInfoClick = input(...(ngDevMode ? [undefined, { debugName: "onInfoClick" }] : /* istanbul ignore next */ []));
17
+ ariaLabel = input(...(ngDevMode ? [undefined, { debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
18
+ ariaLabelValue = computed(() => {
19
+ return this.ariaLabel() ?? 'More information';
20
+ }, ...(ngDevMode ? [{ debugName: "ariaLabelValue" }] : /* istanbul ignore next */ []));
21
+ onClick() {
22
+ this.onInfoClick()?.();
23
+ }
24
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DbxForgeInfoWrapperComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
25
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "21.2.4", type: DbxForgeInfoWrapperComponent, isStandalone: true, selector: "dbx-forge-info-wrapper", inputs: { onInfoClick: { classPropertyName: "onInfoClick", publicName: "onInfoClick", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null } }, viewQueries: [{ propertyName: "fieldComponent", first: true, predicate: ["fieldComponent"], descendants: true, read: ViewContainerRef, isSignal: true }], ngImport: i0, template: `
26
+ <div class="dbx-form-info-wrapper dbx-flex-bar">
27
+ <div class="dbx-form-info-wrapper-content dbx-flex-grow">
28
+ <ng-container #fieldComponent></ng-container>
29
+ </div>
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]="ariaLabelValue()">
32
+ <mat-icon>info</mat-icon>
33
+ </button>
34
+ </div>
35
+ </div>
36
+ `, isInline: true, dependencies: [{ kind: "component", type: 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.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
37
+ }
38
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "21.2.4", ngImport: i0, type: DbxForgeInfoWrapperComponent, decorators: [{
39
+ type: Component,
40
+ args: [{
41
+ selector: 'dbx-forge-info-wrapper',
42
+ template: `
43
+ <div class="dbx-form-info-wrapper dbx-flex-bar">
44
+ <div class="dbx-form-info-wrapper-content dbx-flex-grow">
45
+ <ng-container #fieldComponent></ng-container>
46
+ </div>
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]="ariaLabelValue()">
49
+ <mat-icon>info</mat-icon>
50
+ </button>
51
+ </div>
52
+ </div>
53
+ `,
54
+ imports: [MatIconButton, MatIconModule],
55
+ changeDetection: ChangeDetectionStrategy.OnPush,
56
+ standalone: true
57
+ }]
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
+
60
+ export { DbxForgeInfoWrapperComponent };
61
+ //# sourceMappingURL=dereekb-dbx-form-info.wrapper.component-18n632L-.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dereekb-dbx-form-info.wrapper.component-18n632L-.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 FieldWrapperContract } 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 FieldWrapperContract} 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]=\"ariaLabelValue()\">\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 FieldWrapperContract {\n readonly fieldComponent = viewChild.required('fieldComponent', { read: ViewContainerRef });\n\n readonly onInfoClick = input<() => void>();\n readonly ariaLabel = input<string>();\n\n readonly ariaLabelValue = computed(() => {\n return this.ariaLabel() ?? 'More information';\n });\n\n onClick(): void {\n this.onInfoClick()?.();\n }\n}\n"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@ import * as i3 from '@angular/forms';
4
4
  import { ReactiveFormsModule, FormControl, FormsModule } from '@angular/forms';
5
5
  import { CompactContextStore, mapCompactModeObs } from '@dereekb/dbx-web';
6
6
  import * as i0 from '@angular/core';
7
- import { inject, ChangeDetectionStrategy, Component, Injector, NgModule, input, computed, effect } from '@angular/core';
7
+ import { inject, ChangeDetectionStrategy, Component, Injector, NgModule, ElementRef, input, computed, effect } from '@angular/core';
8
8
  import { FieldType } from '@ngx-formly/material';
9
9
  import { combineLatest, map, shareReplay, BehaviorSubject, of, switchMap, startWith, distinctUntilChanged, skipWhile, filter, skip, throttleTime, first } from 'rxjs';
10
10
  import { SubscriptionObject, filterMaybe, asObservableFromGetter } from '@dereekb/rxjs';
@@ -26,12 +26,12 @@ import { MapComponent, MarkerComponent } from 'ngx-mapbox-gl';
26
26
  import * as i1 from '@ngx-formly/core';
27
27
  import { FormlyModule } from '@ngx-formly/core';
28
28
  import { DEFAULT_PROPS, DEFAULT_VALIDATION_MESSAGES, provideDynamicForm } from '@ng-forge/dynamic-forms';
29
- import { resolveValueFieldContext, buildValueFieldInputs } from '@ng-forge/dynamic-forms/integration';
29
+ import { setupMetaTracking, resolveValueFieldContext, buildValueFieldInputs } from '@ng-forge/dynamic-forms/integration';
30
30
 
31
31
  /**
32
32
  * Creates a Formly field configuration for a Mapbox-powered latitude/longitude picker with optional map display.
33
33
  *
34
- * @deprecated Use forgeMapboxLatLngField() from the forge API instead.
34
+ * @deprecated Use dbxForgeMapboxLatLngField() from the forge API instead.
35
35
  * @param config - Optional field configuration overrides
36
36
  * @returns A validated Formly field configuration for the Mapbox lat/lng picker
37
37
  */
@@ -368,7 +368,7 @@ const FORGE_MAPBOX_LATLNG_FIELD_TYPE = 'dbx-forge-mapbox-latlng';
368
368
  * @param config - Optional field configuration overrides
369
369
  * @returns A validated forge field definition for the Mapbox lat/lng picker
370
370
  */
371
- function forgeMapboxLatLngField(config = {}) {
371
+ function dbxForgeMapboxLatLngField(config = {}) {
372
372
  const { key = 'latLng', label, description, required, readonly: isReadonly, showMap, zoom, latLngConfig, recenterTime, showCenterButton, setCenterOnLocationSet, selectLocationOnMapDrag, selectLocationOnMapClick, markerConfig } = config;
373
373
  const props = filterFromPOJO({
374
374
  label: label ?? 'Location',
@@ -437,6 +437,7 @@ class DbxForgeMapboxLatLngFieldComponent {
437
437
  compact = inject(CompactContextStore, { optional: true });
438
438
  dbxMapboxInjectionStore = inject(DbxMapboxInjectionStore, { optional: true });
439
439
  dbxMapboxMapStore = inject(DbxMapboxMapStore);
440
+ elementRef = inject((ElementRef));
440
441
  // Standard ng-forge value field inputs
441
442
  field = input.required(...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
442
443
  key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
@@ -458,8 +459,13 @@ class DbxForgeMapboxLatLngFieldComponent {
458
459
  _clickSub = new SubscriptionObject();
459
460
  _zoom = new BehaviorSubject(12);
460
461
  _markerConfig = new BehaviorSubject(of(DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_MARKER_CONFIG));
461
- _latLngStringFunction;
462
- _latLngPointFunction;
462
+ // Reactive lat/lng conversion functions derived from props so latLng$ recomputes when props arrive.
463
+ latLngPointConfigSignal = computed(() => {
464
+ const p = this.props();
465
+ return { ...p?.latLngConfig, wrap: p?.latLngConfig?.wrap || false, validate: p?.latLngConfig?.validate || false, precisionRounding: p?.latLngConfig?.precisionRounding ?? 'round' };
466
+ }, ...(ngDevMode ? [{ debugName: "latLngPointConfigSignal" }] : /* istanbul ignore next */ []));
467
+ latLngPointFunctionSignal = computed(() => latLngPointFunction(this.latLngPointConfigSignal()), ...(ngDevMode ? [{ debugName: "latLngPointFunctionSignal" }] : /* istanbul ignore next */ []));
468
+ latLngStringFunctionSignal = computed(() => latLngStringFunction(this.latLngPointConfigSignal()), ...(ngDevMode ? [{ debugName: "latLngStringFunctionSignal" }] : /* istanbul ignore next */ []));
463
469
  compactClass$ = mapCompactModeObs(this.compact?.mode$, {
464
470
  compact: 'dbx-mapbox-input-field-compact'
465
471
  }).pipe(filterMaybe());
@@ -484,14 +490,18 @@ class DbxForgeMapboxLatLngFieldComponent {
484
490
  recenterTimeSignal = computed(() => this.props()?.recenterTime || 10 * 1000, ...(ngDevMode ? [{ debugName: "recenterTimeSignal" }] : /* istanbul ignore next */ []));
485
491
  placeholderTextSignal = computed(() => this.props()?.placeholder, ...(ngDevMode ? [{ debugName: "placeholderTextSignal" }] : /* istanbul ignore next */ []));
486
492
  // Observables for map store sync
487
- fieldValue$ = toObservable(this.fieldValue);
488
- latLng$ = this.fieldValue$.pipe(filterMaybe(), map((x) => this._latLngPointFunction?.(x) ?? defaultLatLngPoint()), distinctUntilChanged(isSameLatLngPoint), shareReplay(1));
493
+ latLngValueSignal = computed(() => {
494
+ const value = this.fieldValue();
495
+ const fn = this.latLngPointFunctionSignal();
496
+ return value != null ? fn(value) : defaultLatLngPoint();
497
+ }, ...(ngDevMode ? [{ debugName: "latLngValueSignal" }] : /* istanbul ignore next */ []));
498
+ latLng$ = toObservable(this.latLngValueSignal).pipe(distinctUntilChanged(isSameLatLngPoint), shareReplay(1));
489
499
  nonZeroLatLng$ = this.latLng$.pipe(skipWhile(isDefaultLatLngPoint), filter(isValidLatLngPoint));
490
500
  zoom$ = this._zoom.asObservable();
491
501
  markerConfig$ = this._markerConfig.asObservable().pipe(switchMap((x) => x), shareReplay(1));
492
502
  useCurrentLocationDisabledSignal = toSignal(this._useCurrentLocationDisabled, { initialValue: false });
493
503
  compactClassSignal = toSignal(this.compactClass$, { initialValue: '' });
494
- latLngSignal = toSignal(this.latLng$, { initialValue: defaultLatLngPoint() });
504
+ latLngSignal = this.latLngValueSignal;
495
505
  _syncing = false;
496
506
  _setFieldValue(value) {
497
507
  const state = this.field()?.();
@@ -502,15 +512,13 @@ class DbxForgeMapboxLatLngFieldComponent {
502
512
  }
503
513
  }
504
514
  constructor() {
515
+ setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });
505
516
  // Initialize on first props emission
506
517
  effect(() => {
507
518
  const p = this.props();
508
519
  if (!p) {
509
520
  return;
510
521
  }
511
- const latLngPointConfig = { ...p.latLngConfig, wrap: p.latLngConfig?.wrap || false, validate: p.latLngConfig?.validate || false, precisionRounding: p.latLngConfig?.precisionRounding ?? 'round' };
512
- this._latLngStringFunction = latLngStringFunction(latLngPointConfig);
513
- this._latLngPointFunction = latLngPointFunction(latLngPointConfig);
514
522
  const zoom = Math.min(p.zoom || 12, 18);
515
523
  this._zoom.next(zoom);
516
524
  if (p.setCenterOnLocationSet !== false) {
@@ -608,7 +616,7 @@ class DbxForgeMapboxLatLngFieldComponent {
608
616
  this.setValue(marker.getLngLat());
609
617
  }
610
618
  setValue(latLng) {
611
- const stringValue = latLng ? this._latLngStringFunction(latLng) : null;
619
+ const stringValue = latLng ? this.latLngStringFunctionSignal()(latLng) : null;
612
620
  this._syncing = true;
613
621
  this.textCtrl.setValue(stringValue, { emitEvent: false });
614
622
  this._setFieldValue(stringValue);
@@ -696,7 +704,7 @@ var latlng_forge_field_component = /*#__PURE__*/Object.freeze({
696
704
  /**
697
705
  * Creates a Formly field configuration for a Mapbox-powered zoom level picker with optional map preview.
698
706
  *
699
- * @deprecated Use forgeMapboxZoomField() from the forge API instead.
707
+ * @deprecated Use dbxForgeMapboxZoomField() from the forge API instead.
700
708
  * @param config - Optional field configuration overrides
701
709
  * @returns A validated Formly field configuration for the Mapbox zoom picker
702
710
  */
@@ -889,7 +897,7 @@ const FORGE_MAPBOX_ZOOM_FIELD_TYPE = 'dbx-forge-mapbox-zoom';
889
897
  * @param config - Optional field configuration overrides
890
898
  * @returns A validated forge field definition for the Mapbox zoom picker
891
899
  */
892
- function forgeMapboxZoomField(config = {}) {
900
+ function dbxForgeMapboxZoomField(config = {}) {
893
901
  const { key = 'zoom', label, description, required, readonly: isReadonly, showMap, center, minZoom, maxZoom, zoomStep } = config;
894
902
  const props = filterFromPOJO({
895
903
  label: label ?? 'Zoom',
@@ -923,6 +931,7 @@ class DbxForgeMapboxZoomFieldComponent {
923
931
  compact = inject(CompactContextStore, { optional: true });
924
932
  dbxMapboxService = inject(DbxMapboxService);
925
933
  dbxMapboxMapStore = inject(DbxMapboxMapStore);
934
+ elementRef = inject((ElementRef));
926
935
  // Standard ng-forge value field inputs
927
936
  field = input.required(...(ngDevMode ? [{ debugName: "field" }] : /* istanbul ignore next */ []));
928
937
  key = input.required(...(ngDevMode ? [{ debugName: "key" }] : /* istanbul ignore next */ []));
@@ -974,6 +983,7 @@ class DbxForgeMapboxZoomFieldComponent {
974
983
  }
975
984
  }
976
985
  constructor() {
986
+ setupMetaTracking(this.elementRef, this.meta, { selector: 'input' });
977
987
  // Initialize on first props emission
978
988
  effect(() => {
979
989
  const p = this.props();
@@ -1142,5 +1152,5 @@ function provideDbxForgeMapboxFieldDeclarations() {
1142
1152
  * Generated bundle index. Do not edit.
1143
1153
  */
1144
1154
 
1145
- export { DBX_FORGE_MAPBOX_FIELD_TYPES, DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY, DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_MARKER_CONFIG, DEFAULT_DBX_FORM_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY, DEFAULT_DBX_FORM_MAPBOX_LAT_LNG_MARKER_CONFIG, DbxForgeMapboxLatLngFieldComponent, DbxForgeMapboxLatLngFieldMarkerComponent, DbxForgeMapboxZoomFieldComponent, DbxFormMapboxLatLngFieldComponent, DbxFormMapboxLatLngFieldMarkerComponent, DbxFormMapboxLatLngModule, DbxFormMapboxModule, DbxFormMapboxZoomFieldComponent, DbxFormMapboxZoomModule, FORGE_MAPBOX_LATLNG_FIELD_TYPE, FORGE_MAPBOX_ZOOM_FIELD_TYPE, forgeMapboxLatLngField, forgeMapboxZoomField, mapboxLatLngField, mapboxLatLngFieldMapper, mapboxZoomField, mapboxZoomFieldMapper, provideDbxForgeMapboxFieldDeclarations };
1155
+ export { DBX_FORGE_MAPBOX_FIELD_TYPES, DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY, DEFAULT_DBX_FORGE_MAPBOX_LAT_LNG_MARKER_CONFIG, DEFAULT_DBX_FORM_MAPBOX_LAT_LNG_FIELD_INJECTION_KEY, DEFAULT_DBX_FORM_MAPBOX_LAT_LNG_MARKER_CONFIG, DbxForgeMapboxLatLngFieldComponent, DbxForgeMapboxLatLngFieldMarkerComponent, DbxForgeMapboxZoomFieldComponent, DbxFormMapboxLatLngFieldComponent, DbxFormMapboxLatLngFieldMarkerComponent, DbxFormMapboxLatLngModule, DbxFormMapboxModule, DbxFormMapboxZoomFieldComponent, DbxFormMapboxZoomModule, FORGE_MAPBOX_LATLNG_FIELD_TYPE, FORGE_MAPBOX_ZOOM_FIELD_TYPE, dbxForgeMapboxLatLngField, dbxForgeMapboxZoomField, mapboxLatLngField, mapboxLatLngFieldMapper, mapboxZoomField, mapboxZoomFieldMapper, provideDbxForgeMapboxFieldDeclarations };
1146
1156
  //# sourceMappingURL=dereekb-dbx-form-mapbox.mjs.map