@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.
- package/fesm2022/dereekb-dbx-form-calendar.mjs +10 -18
- package/fesm2022/dereekb-dbx-form-calendar.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs +39 -0
- package/fesm2022/dereekb-dbx-form-flex.wrapper.component-CpOHCk87.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs +61 -0
- package/fesm2022/dereekb-dbx-form-info.wrapper.component-18n632L-.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-mapbox.mjs +26 -16
- package/fesm2022/dereekb-dbx-form-mapbox.mjs.map +1 -1
- package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs +52 -0
- package/fesm2022/dereekb-dbx-form-section.wrapper.component-vq21oG6v.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs +42 -0
- package/fesm2022/dereekb-dbx-form-style.wrapper.component-BbKj-IHD.mjs.map +1 -0
- package/fesm2022/dereekb-dbx-form.mjs +4893 -2968
- package/fesm2022/dereekb-dbx-form.mjs.map +1 -1
- package/lib/forge/_forge.scss +14 -0
- package/lib/forge/field/_field.scss +0 -2
- package/lib/forge/field/selection/_selection.scss +3 -0
- package/lib/forge/field/selection/list/_list.scss +17 -0
- package/lib/forge/field/selection/pickable/_pickable.scss +26 -1
- package/lib/forge/field/selection/sourceselect/_sourceselect.scss +16 -32
- package/lib/forge/field/wrapper/_wrapper.scss +16 -6
- package/lib/{formly/form/_form.scss → forge/preset/_preset.scss} +3 -12
- package/lib/forge/style/_shared.scss +13 -3
- package/lib/form/_form.scss +21 -7
- package/lib/formly/field/selection/sourceselect/_sourceselect.scss +0 -7
- package/lib/style/_all-core.scss +2 -4
- package/lib/style/_all-theme.scss +2 -4
- package/lib/style/_all-typography.scss +1 -1
- package/package.json +10 -10
- package/types/dereekb-dbx-form-calendar.d.ts +9 -20
- package/types/dereekb-dbx-form-mapbox.d.ts +15 -12
- package/types/dereekb-dbx-form.d.ts +4962 -3950
- package/fesm2022/dereekb-dbx-form-array.field.component-1wYSd4d3.mjs +0 -169
- package/fesm2022/dereekb-dbx-form-array.field.component-1wYSd4d3.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-formfield.field.component-BQyujXe3.mjs +0 -70
- package/fesm2022/dereekb-dbx-form-formfield.field.component-BQyujXe3.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-info.wrapper.field.component-Crm4wVr5.mjs +0 -35
- package/fesm2022/dereekb-dbx-form-info.wrapper.field.component-Crm4wVr5.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-section.field.component-DliafLqL.mjs +0 -63
- package/fesm2022/dereekb-dbx-form-section.field.component-DliafLqL.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-style.field.component-C3ZNiotx.mjs +0 -71
- package/fesm2022/dereekb-dbx-form-style.field.component-C3ZNiotx.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-working.field.component-CO8vK2bH.mjs +0 -53
- package/fesm2022/dereekb-dbx-form-working.field.component-CO8vK2bH.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-working.wrapper.field.component-BtD7_5i5.mjs +0 -54
- package/fesm2022/dereekb-dbx-form-working.wrapper.field.component-BtD7_5i5.mjs.map +0 -1
- package/fesm2022/dereekb-dbx-form-wrapper.content.component-Cy4ND_se.mjs +0 -87
- 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
|
|
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
|
|
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
|
-
|
|
462
|
-
|
|
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
|
-
|
|
488
|
-
|
|
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 =
|
|
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.
|
|
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
|
|
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
|
|
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,
|
|
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
|