@dereekb/dbx-form 9.1.2 → 9.3.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.
Files changed (51) hide show
  1. package/esm2020/lib/formly/field/selection/searchable/searchable.text.field.component.mjs +1 -1
  2. package/esm2020/lib/formly/field/value/date/datetime.field.mjs +6 -6
  3. package/esm2020/lib/formly/field/value/text/text.additional.field.mjs +22 -1
  4. package/esm2020/lib/formly/field/wrapper/style.wrapper.component.mjs +18 -7
  5. package/esm2020/lib/formly/template/index.mjs +2 -1
  6. package/esm2020/lib/formly/template/timezone.mjs +38 -0
  7. package/esm2020/mapbox/dereekb-dbx-form-mapbox.mjs +5 -0
  8. package/esm2020/mapbox/index.mjs +3 -0
  9. package/esm2020/mapbox/lib/field/index.mjs +2 -0
  10. package/esm2020/mapbox/lib/field/latlng/index.mjs +4 -0
  11. package/esm2020/mapbox/lib/field/latlng/latlng.field.component.mjs +124 -0
  12. package/esm2020/mapbox/lib/field/latlng/latlng.field.mjs +26 -0
  13. package/esm2020/mapbox/lib/field/latlng/latlng.module.mjs +53 -0
  14. package/esm2020/mapbox/lib/mapbox.module.mjs +15 -0
  15. package/fesm2015/dereekb-dbx-form-mapbox.mjs +214 -0
  16. package/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -0
  17. package/fesm2015/dereekb-dbx-form.mjs +69 -14
  18. package/fesm2015/dereekb-dbx-form.mjs.map +1 -1
  19. package/fesm2020/dereekb-dbx-form-mapbox.mjs +216 -0
  20. package/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -0
  21. package/fesm2020/dereekb-dbx-form.mjs +78 -14
  22. package/fesm2020/dereekb-dbx-form.mjs.map +1 -1
  23. package/lib/formly/field/value/date/_date.scss +0 -10
  24. package/lib/formly/field/value/date/datetime.field.d.ts +1 -1
  25. package/lib/formly/field/value/text/text.additional.field.d.ts +3 -0
  26. package/lib/formly/field/wrapper/_wrapper.scss +10 -0
  27. package/lib/formly/field/wrapper/style.wrapper.component.d.ts +10 -3
  28. package/lib/formly/template/index.d.ts +1 -0
  29. package/lib/formly/template/timezone.d.ts +20 -0
  30. package/mapbox/README.md +6 -0
  31. package/mapbox/esm2020/dereekb-dbx-form-mapbox.mjs +5 -0
  32. package/mapbox/esm2020/index.mjs +3 -0
  33. package/mapbox/esm2020/lib/field/index.mjs +2 -0
  34. package/mapbox/esm2020/lib/field/latlng/index.mjs +4 -0
  35. package/mapbox/esm2020/lib/field/latlng/latlng.field.component.mjs +124 -0
  36. package/mapbox/esm2020/lib/field/latlng/latlng.field.mjs +26 -0
  37. package/mapbox/esm2020/lib/field/latlng/latlng.module.mjs +53 -0
  38. package/mapbox/esm2020/lib/mapbox.module.mjs +15 -0
  39. package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs +214 -0
  40. package/mapbox/fesm2015/dereekb-dbx-form-mapbox.mjs.map +1 -0
  41. package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs +216 -0
  42. package/mapbox/fesm2020/dereekb-dbx-form-mapbox.mjs.map +1 -0
  43. package/mapbox/index.d.ts +2 -0
  44. package/mapbox/lib/field/index.d.ts +1 -0
  45. package/mapbox/lib/field/latlng/index.d.ts +3 -0
  46. package/mapbox/lib/field/latlng/latlng.field.component.d.ts +42 -0
  47. package/mapbox/lib/field/latlng/latlng.field.d.ts +5 -0
  48. package/mapbox/lib/field/latlng/latlng.module.d.ts +15 -0
  49. package/mapbox/lib/mapbox.module.d.ts +7 -0
  50. package/mapbox/package.json +40 -0
  51. package/package.json +12 -4
@@ -4,16 +4,6 @@
4
4
 
5
5
  // MARK: Mixin
6
6
  @mixin core() {
7
- .dbx-datetime-parent-form-field {
8
- > formly-wrapper-mat-form-field {
9
- > mat-form-field.mat-form-field {
10
- > .mat-form-field-wrapper > .mat-form-field-underline {
11
- display: none;
12
- }
13
- }
14
- }
15
- }
16
-
17
7
  .dbx-datetime-field {
18
8
  width: 100%;
19
9
  }
@@ -10,4 +10,4 @@ export declare const TAKE_NEXT_UPCOMING_TIME_CONFIG_OBS: () => Observable<DateTi
10
10
  * Same as DateTime field but with the Date input hidden by default.
11
11
  */
12
12
  export declare function timeOnlyField(config?: Partial<TimeFieldConfig>): FormlyFieldConfig;
13
- export declare function dateTimeField(config?: Partial<DateTimeFieldConfig>): FormlyFieldConfig<DbxDateTimeFieldProps>;
13
+ export declare function dateTimeField(config?: Partial<DateTimeFieldConfig>): import("../../wrapper/wrapper").WrapperFormlyFieldConfig<import("../../wrapper/style.wrapper.component").DbxFormStyleWrapperConfig, FormlyFieldConfig<DbxDateTimeFieldProps>>;
@@ -17,3 +17,6 @@ export declare function cityField({ key, required }?: Partial<TextFieldConfig>):
17
17
  export declare function stateField({ key, required }?: Partial<TextFieldConfig>): FormlyFieldConfig;
18
18
  export declare function countryField({ key, required }?: Partial<TextFieldConfig>): FormlyFieldConfig;
19
19
  export declare function zipCodeField({ key, required }?: Partial<TextFieldConfig>): FormlyFieldConfig;
20
+ export declare const DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER = "12.345,-67.8910";
21
+ export declare const DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE = "Invalid/unknown coordinates";
22
+ export declare function latLngTextField({ key }?: Partial<TextFieldConfig>): FormlyFieldConfig;
@@ -6,6 +6,16 @@ $form-flex-section-group-item-padding: $form-flex-section-group-padding * 2;
6
6
 
7
7
  // MARK: Mixin
8
8
  @mixin core() {
9
+ .dbx-mat-form-field-disable-underline {
10
+ > formly-wrapper-mat-form-field {
11
+ > mat-form-field.mat-form-field {
12
+ > .mat-form-field-wrapper > .mat-form-field-underline {
13
+ display: none;
14
+ }
15
+ }
16
+ }
17
+ }
18
+
9
19
  .dbx-form-expand-wrapper-button {
10
20
  text-decoration: underline;
11
21
  margin-right: 8px;
@@ -4,13 +4,20 @@ import { Maybe } from '@dereekb/util';
4
4
  import { FieldWrapper, FormlyFieldConfig } from '@ngx-formly/core';
5
5
  import { Observable } from 'rxjs';
6
6
  import * as i0 from "@angular/core";
7
+ export declare type DbxFormStyleObject = {
8
+ [styleClass: string]: any;
9
+ };
7
10
  export interface DbxFormStyleWrapperConfig {
8
- style: ObservableOrValue<string>;
11
+ styleGetter?: Maybe<ObservableOrValue<DbxFormStyleObject>>;
12
+ classGetter?: Maybe<ObservableOrValue<string>>;
9
13
  }
10
14
  export declare class DbxFormStyleWrapperComponent extends FieldWrapper<FormlyFieldConfig<DbxFormStyleWrapperConfig>> implements OnInit, OnDestroy {
11
15
  private _style;
12
- readonly style$: Observable<Maybe<string>>;
13
- get styleGetter(): ObservableOrValue<string>;
16
+ private _class;
17
+ readonly style$: Observable<Maybe<{}>>;
18
+ readonly class$: Observable<Maybe<string>>;
19
+ get styleGetter(): Maybe<ObservableOrValue<DbxFormStyleObject>>;
20
+ get classGetter(): Maybe<ObservableOrValue<string>>;
14
21
  ngOnInit(): void;
15
22
  ngOnDestroy(): void;
16
23
  static ɵfac: i0.ɵɵFactoryDeclaration<DbxFormStyleWrapperComponent, never>;
@@ -1,2 +1,3 @@
1
1
  export * from './login';
2
2
  export * from './available';
3
+ export * from './timezone';
@@ -0,0 +1,20 @@
1
+ import { TimezoneString } from '@dereekb/util';
2
+ import { TimezoneInfo } from '@dereekb/date';
3
+ import { FormlyFieldConfig } from '@ngx-formly/core';
4
+ import { SearchableValueFieldStringSearchFn, SearchableValueFieldDisplayFn } from '../field/selection/searchable';
5
+ import { SearchableTextFieldConfig } from '../field/selection/searchable/searchable.field';
6
+ export declare type TestStringSearchFunction = (text: string) => string[];
7
+ export declare function timezoneStringSearchFunction(): SearchableValueFieldStringSearchFn<string, TimezoneInfo>;
8
+ export declare const DISPLAY_FOR_TIMEZONE_STRING_VALUE: SearchableValueFieldDisplayFn<string, TimezoneInfo>;
9
+ /**
10
+ * textPasswordField() configuration.
11
+ */
12
+ export interface TimezoneStringFieldConfig extends Omit<SearchableTextFieldConfig<TimezoneString, TimezoneInfo>, 'inputType' | 'searchOnEmptyText' | 'search' | 'displayForValue' | 'key'>, Partial<Pick<SearchableTextFieldConfig<TimezoneString, TimezoneInfo>, 'key'>> {
13
+ }
14
+ /**
15
+ * Template for login field that takes in a username and password.
16
+ *
17
+ * @param param0
18
+ * @returns
19
+ */
20
+ export declare function timezoneStringField(config?: TimezoneStringFieldConfig): FormlyFieldConfig;
@@ -0,0 +1,6 @@
1
+ @dereekb/dbx-form/mapbox
2
+ =======
3
+
4
+ The sources for this package are in the main [@dereekb/dbx-components](https://github.com/dereekb/dbx-components) repo. Please file issues and pull requests against that repo.
5
+
6
+ License: MIT
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Generated bundle index. Do not edit.
3
+ */
4
+ export * from './index';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVyZWVrYi1kYngtZm9ybS1tYXBib3guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2RlcmVla2ItZGJ4LWZvcm0tbWFwYm94LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
@@ -0,0 +1,3 @@
1
+ export * from './lib/field';
2
+ export * from './lib/mapbox.module';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMscUJBQXFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xpYi9maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2xpYi9tYXBib3gubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export * from './latlng';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2xpYi9maWVsZC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gJy4vbGF0bG5nJztcbiJdfQ==
@@ -0,0 +1,4 @@
1
+ export * from './latlng.field';
2
+ export * from './latlng.field.component';
3
+ export * from './latlng.module';
4
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9kYngtZm9ybS9tYXBib3gvc3JjL2xpYi9maWVsZC9sYXRsbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLDBCQUEwQixDQUFDO0FBQ3pDLGNBQWMsaUJBQWlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL2xhdGxuZy5maWVsZCc7XG5leHBvcnQgKiBmcm9tICcuL2xhdGxuZy5maWVsZC5jb21wb25lbnQnO1xuZXhwb3J0ICogZnJvbSAnLi9sYXRsbmcubW9kdWxlJztcbiJdfQ==
@@ -0,0 +1,124 @@
1
+ import { CompactContextStore, mapCompactModeObs } from '@dereekb/dbx-web';
2
+ import { Component, Optional } from '@angular/core';
3
+ import { FieldType } from '@ngx-formly/material';
4
+ import { first, BehaviorSubject, filter, shareReplay, startWith, switchMap, map } from 'rxjs';
5
+ import { filterMaybe, SubscriptionObject } from '@dereekb/rxjs';
6
+ import { latLngPoint, latLngStringFunction } from '@dereekb/util';
7
+ import { GeolocationService } from '@ng-web-apis/geolocation';
8
+ import * as i0 from "@angular/core";
9
+ import * as i1 from "@dereekb/dbx-web";
10
+ import * as i2 from "@ng-web-apis/geolocation";
11
+ import * as i3 from "@angular/common";
12
+ import * as i4 from "@angular/material/icon";
13
+ import * as i5 from "@angular/material/button";
14
+ import * as i6 from "@angular/forms";
15
+ import * as i7 from "@angular/material/form-field";
16
+ import * as i8 from "@angular/material/input";
17
+ import * as i9 from "ngx-mapbox-gl";
18
+ export class DbxFormMapboxLatLngFieldComponent extends FieldType {
19
+ constructor(compact, geolocation$) {
20
+ super();
21
+ this.compact = compact;
22
+ this.geolocation$ = geolocation$;
23
+ this.compactClass$ = mapCompactModeObs(this.compact?.mode$, {
24
+ compact: 'dbx-texteditor-field-compact'
25
+ });
26
+ this._sub = new SubscriptionObject();
27
+ this._zoom = new BehaviorSubject([12]);
28
+ this._formControlObs = new BehaviorSubject(undefined);
29
+ this.formControl$ = this._formControlObs.pipe(filterMaybe());
30
+ this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
31
+ this.latLng$ = this.value$.pipe(filterMaybe(), map((x) => latLngPoint(x)), filter((x) => x.lat !== 0 && x.lng !== 0), shareReplay(1));
32
+ this.center$ = this.latLng$;
33
+ this.zoom$ = this._zoom.asObservable();
34
+ }
35
+ get zoom() {
36
+ return [Math.min(this.field.props.zoom || 12, 18)];
37
+ }
38
+ get formGroupName() {
39
+ return this.field.key;
40
+ }
41
+ get formGroup() {
42
+ return this.form;
43
+ }
44
+ get label() {
45
+ return this.field.props?.label;
46
+ }
47
+ get description() {
48
+ return this.props.description;
49
+ }
50
+ get isReadonlyOrDisabled() {
51
+ return this.props.readonly || this.disabled;
52
+ }
53
+ ngOnInit() {
54
+ this._latLngStringFunction = latLngStringFunction(this.field.props.latLngConfig);
55
+ this._formControlObs.next(this.formControl);
56
+ this._zoom.next(this.zoom);
57
+ if (this.props.readonly) {
58
+ this.formControl.disable();
59
+ }
60
+ }
61
+ ngOnDestroy() {
62
+ super.ngOnDestroy();
63
+ this._formControlObs.complete();
64
+ this._zoom.complete();
65
+ this._sub.destroy();
66
+ }
67
+ useCurrentLocation() {
68
+ this._sub.subscription = this.geolocation$.pipe(first()).subscribe((position) => {
69
+ if (position) {
70
+ const { latitude: lat, longitude: lng } = position.coords;
71
+ this.setValue({ lat, lng });
72
+ }
73
+ });
74
+ }
75
+ onDragEnd(marker) {
76
+ this.setValue(marker.getLngLat());
77
+ }
78
+ setValue(latLng) {
79
+ this.formControl.setValue(latLng ? this._latLngStringFunction(latLng) : latLng);
80
+ }
81
+ }
82
+ DbxFormMapboxLatLngFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2.GeolocationService }], target: i0.ɵɵFactoryTarget.Component });
83
+ DbxFormMapboxLatLngFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxFormMapboxLatLngFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
84
+ <div class="dbx-mapbox-latlng-field" [ngClass]="(compactClass$ | async) ?? ''" [formGroup]="formGroup">
85
+ <div class="dbx-mapbox-latlng-field-map">
86
+ <mgl-map [style]="'mapbox://styles/mapbox/streets-v9'" [zoom]="(zoom$ | async) || [8]" [center]="(center$ | async) || [0, 0]">
87
+ <mgl-marker [lngLat]="(latLng$ | async) || [0, 0]" [draggable]="!isReadonlyOrDisabled" (markerDragEnd)="onDragEnd($event)"></mgl-marker>
88
+ </mgl-map>
89
+ </div>
90
+ <div class="dbx-mapbox-latlng-field-input">
91
+ <button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
92
+ <mat-icon>my_location</mat-icon>
93
+ </button>
94
+ <mat-form-field class="dbx-mapbox-latlng-field-input-field">
95
+ <mat-label>Coordinates</mat-label>
96
+ <input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
97
+ </mat-form-field>
98
+ </div>
99
+ </div>
100
+ `, isInline: true, styles: [".dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map{height:220px;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input{display:flex;align-items:center}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input .dbx-mapbox-latlng-field-input-field{width:calc(100% - 40px)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MapComponent, selector: "mgl-map", inputs: ["accessToken", "collectResourceTiming", "crossSourceCollisions", "customMapboxApiUrl", "fadeDuration", "hash", "refreshExpiredTiles", "failIfMajorPerformanceCaveat", "bearingSnap", "interactive", "pitchWithRotate", "clickTolerance", "attributionControl", "logoPosition", "maxTileCacheSize", "localIdeographFontFamily", "preserveDrawingBuffer", "trackResize", "transformRequest", "bounds", "antialias", "locale", "minZoom", "maxZoom", "minPitch", "maxPitch", "scrollZoom", "dragRotate", "touchPitch", "touchZoomRotate", "doubleClickZoom", "keyboard", "dragPan", "boxZoom", "style", "center", "maxBounds", "zoom", "bearing", "pitch", "fitBoundsOptions", "renderWorldCopies", "projection", "movingMethod", "movingOptions", "fitBounds", "fitScreenCoordinates", "centerWithPanTo", "panToOptions", "cursorStyle"], outputs: ["mapResize", "mapRemove", "mapMouseDown", "mapMouseUp", "mapMouseMove", "mapClick", "mapDblClick", "mapMouseOver", "mapMouseOut", "mapContextMenu", "mapTouchStart", "mapTouchEnd", "mapTouchMove", "mapTouchCancel", "mapWheel", "moveStart", "move", "moveEnd", "mapDragStart", "mapDrag", "mapDragEnd", "zoomStart", "zoomEvt", "zoomEnd", "rotateStart", "rotate", "rotateEnd", "pitchStart", "pitchEvt", "pitchEnd", "boxZoomStart", "boxZoomEnd", "boxZoomCancel", "webGlContextLost", "webGlContextRestored", "mapLoad", "idle", "render", "mapError", "data", "styleData", "sourceData", "dataLoading", "styleDataLoading", "sourceDataLoading", "styleImageMissing", "resize", "remove", "mouseDown", "mouseUp", "mouseMove", "click", "dblClick", "mouseOver", "mouseOut", "contextMenu", "touchStart", "touchEnd", "touchMove", "touchCancel", "wheel", "dragStart", "drag", "dragEnd", "load", "error"] }, { kind: "component", type: i9.MarkerComponent, selector: "mgl-marker", inputs: ["offset", "anchor", "clickTolerance", "feature", "lngLat", "draggable", "popupShown", "className", "pitchAlignment", "rotationAlignment"], outputs: ["markerDragStart", "markerDragEnd", "markerDrag", "dragStart", "dragEnd", "drag"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
101
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, decorators: [{
102
+ type: Component,
103
+ args: [{ template: `
104
+ <div class="dbx-mapbox-latlng-field" [ngClass]="(compactClass$ | async) ?? ''" [formGroup]="formGroup">
105
+ <div class="dbx-mapbox-latlng-field-map">
106
+ <mgl-map [style]="'mapbox://styles/mapbox/streets-v9'" [zoom]="(zoom$ | async) || [8]" [center]="(center$ | async) || [0, 0]">
107
+ <mgl-marker [lngLat]="(latLng$ | async) || [0, 0]" [draggable]="!isReadonlyOrDisabled" (markerDragEnd)="onDragEnd($event)"></mgl-marker>
108
+ </mgl-map>
109
+ </div>
110
+ <div class="dbx-mapbox-latlng-field-input">
111
+ <button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
112
+ <mat-icon>my_location</mat-icon>
113
+ </button>
114
+ <mat-form-field class="dbx-mapbox-latlng-field-input-field">
115
+ <mat-label>Coordinates</mat-label>
116
+ <input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
117
+ </mat-form-field>
118
+ </div>
119
+ </div>
120
+ `, styles: [".dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map{height:220px;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input{display:flex;align-items:center}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input .dbx-mapbox-latlng-field-input-field{width:calc(100% - 40px)}\n"] }]
121
+ }], ctorParameters: function () { return [{ type: i1.CompactContextStore, decorators: [{
122
+ type: Optional
123
+ }] }, { type: i2.GeolocationService }]; } });
124
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL2ZpZWxkL2xhdGxuZy9sYXRsbmcuZmllbGQuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQzFFLE9BQU8sRUFBRSxTQUFTLEVBQXFCLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUV2RSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFakQsT0FBTyxFQUFFLEtBQUssRUFBRSxlQUFlLEVBQXNDLE1BQU0sRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxHQUFHLEVBQWlDLE1BQU0sTUFBTSxDQUFDO0FBQ2pLLE9BQU8sRUFBRSxXQUFXLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDaEUsT0FBTyxFQUE2RSxXQUFXLEVBQXdCLG9CQUFvQixFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRW5LLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDBCQUEwQixDQUFDOzs7Ozs7Ozs7OztBQTZCOUQsTUFBTSxPQUFPLGlDQUE2SCxTQUFRLFNBQTZCO0lBNEI3SyxZQUFpQyxPQUE0QixFQUFtQixZQUFnQztRQUM5RyxLQUFLLEVBQUUsQ0FBQztRQUR1QixZQUFPLEdBQVAsT0FBTyxDQUFxQjtRQUFtQixpQkFBWSxHQUFaLFlBQVksQ0FBb0I7UUF6QnZHLGtCQUFhLEdBQUcsaUJBQWlCLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUU7WUFDOUQsT0FBTyxFQUFFLDhCQUE4QjtTQUN4QyxDQUFDLENBQUM7UUFFSyxTQUFJLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQ2hDLFVB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QUFFLEVBQUU7WUFDOUUsSUFBSSxRQUFRLEVBQUU7Z0JBQ1osTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQzFELElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQzthQUM3QjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVELFNBQVMsQ0FBQyxNQUFjO1FBQ3RCLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELFFBQVEsQ0FBQyxNQUEyQjtRQUNsQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDbEYsQ0FBQzs7OEhBeEZVLGlDQUFpQztrSEFBakMsaUNBQWlDLDJFQXBCbEM7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUOzJGQUdVLGlDQUFpQztrQkFyQjdDLFNBQVM7K0JBQ0U7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJUOzswQkErQlksUUFBUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFic3RyYWN0Q29udHJvbCwgRm9ybUNvbnRyb2wsIEZvcm1Hcm91cCB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IENvbXBhY3RDb250ZXh0U3RvcmUsIG1hcENvbXBhY3RNb2RlT2JzIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBPcHRpb25hbCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRmllbGRUeXBlQ29uZmlnLCBGb3JtbHlGaWVsZFByb3BzIH0gZnJvbSAnQG5neC1mb3JtbHkvY29yZSc7XG5pbXBvcnQgeyBGaWVsZFR5cGUgfSBmcm9tICdAbmd4LWZvcm1seS9tYXRlcmlhbCc7XG5pbXBvcnQgeyBFZGl0b3IsIFZhbGlkYXRvcnMgfSBmcm9tICduZ3gtZWRpdG9yJztcbmltcG9ydCB7IGZpcnN0LCBCZWhhdmlvclN1YmplY3QsIGRlYm91bmNlVGltZSwgZGlzdGluY3RVbnRpbENoYW5nZWQsIGZpbHRlciwgc2hhcmVSZXBsYXksIHN0YXJ0V2l0aCwgc3dpdGNoTWFwLCBtYXAsIE9ic2VydmFibGUsIGNvbWJpbmVMYXRlc3QsIG9mIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBmaWx0ZXJNYXliZSwgU3Vic2NyaXB0aW9uT2JqZWN0IH0gZnJvbSAnQGRlcmVla2Ivcnhqcyc7XG5pbXBvcnQgeyBNYXliZSwgbGF0TG5nU3RyaW5nLCBMYXRMbmdTdHJpbmcsIExhdExuZ1BvaW50LCBMYXRMbmdQb2ludEZ1bmN0aW9uQ29uZmlnLCBsYXRMbmdQb2ludCwgTGF0TG5nU3RyaW5nRnVuY3Rpb24sIGxhdExuZ1N0cmluZ0Z1bmN0aW9uIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBpc1NhbWVNaW51dGUgfSBmcm9tICdkYXRlLWZucyc7XG5pbXBvcnQgeyBHZW9sb2NhdGlvblNlcnZpY2UgfSBmcm9tICdAbmctd2ViLWFwaXMvZ2VvbG9jYXRpb24nO1xuaW1wb3J0IHsgTWFya2VyIH0gZnJvbSAnbWFwYm94LWdsJztcblxuZXhwb3J0IGludGVyZmFjZSBEYnhGb3JtTWFwYm94TGF0TG5nQ29tcG9uZW50RmllbGRQcm9wcyBleHRlbmRzIEZvcm1seUZpZWxkUHJvcHMge1xuICB6b29tPzogbnVtYmVyO1xuICBsYXRMbmdDb25maWc/OiBMYXRMbmdQb2ludEZ1bmN0aW9uQ29uZmlnO1xufVxuXG5AQ29tcG9uZW50KHtcbiAgdGVtcGxhdGU6IGBcbiAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1sYXRsbmctZmllbGRcIiBbbmdDbGFzc109XCIoY29tcGFjdENsYXNzJCB8IGFzeW5jKSA/PyAnJ1wiIFtmb3JtR3JvdXBdPVwiZm9ybUdyb3VwXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1sYXRsbmctZmllbGQtbWFwXCI+XG4gICAgICAgIDxtZ2wtbWFwIFtzdHlsZV09XCInbWFwYm94Oi8vc3R5bGVzL21hcGJveC9zdHJlZXRzLXY5J1wiIFt6b29tXT1cIih6b29tJCB8IGFzeW5jKSB8fCBbOF1cIiBbY2VudGVyXT1cIihjZW50ZXIkIHwgYXN5bmMpIHx8IFswLCAwXVwiPlxuICAgICAgICAgIDxtZ2wtbWFya2VyIFtsbmdMYXRdPVwiKGxhdExuZyQgfCBhc3luYykgfHwgWzAsIDBdXCIgW2RyYWdnYWJsZV09XCIhaXNSZWFkb25seU9yRGlzYWJsZWRcIiAobWFya2VyRHJhZ0VuZCk9XCJvbkRyYWdFbmQoJGV2ZW50KVwiPjwvbWdsLW1hcmtlcj5cbiAgICAgICAgPC9tZ2wtbWFwPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzPVwiZGJ4LW1hcGJveC1sYXRsbmctZmllbGQtaW5wdXRcIj5cbiAgICAgICAgPGJ1dHRvbiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInVzZUN1cnJlbnRMb2NhdGlvbigpXCIgW2Rpc2FibGVkXT1cImlzUmVhZG9ubHlPckRpc2FibGVkXCI+XG4gICAgICAgICAgPG1hdC1pY29uPm15X2xvY2F0aW9uPC9tYXQtaWNvbj5cbiAgICAgICAgPC9idXR0b24+XG4gICAgICAgIDxtYXQtZm9ybS1maWVsZCBjbGFzcz1cImRieC1tYXBib3gtbGF0bG5nLWZpZWxkLWlucHV0LWZpZWxkXCI+XG4gICAgICAgICAgPG1hdC1sYWJlbD5Db29yZGluYXRlczwvbWF0LWxhYmVsPlxuICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIFtmb3JtQ29udHJvbF09XCJmb3JtQ29udHJvbFwiIC8+XG4gICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XG4gICAgICA8L2Rpdj5cbiAgICA8L2Rpdj5cbiAgYCxcbiAgc3R5bGVVcmxzOiBbJy4vbGF0bG5nLmZpZWxkLmNvbXBvbmVudC5zY3NzJ11cbn0pXG5leHBvcnQgY2xhc3MgRGJ4Rm9ybU1hcGJveExhdExuZ0ZpZWxkQ29tcG9uZW50PFQgZXh0ZW5kcyBEYnhGb3JtTWFwYm94TGF0TG5nQ29tcG9uZW50RmllbGRQcm9wcyA9IERieEZvcm1NYXBib3hMYXRMbmdDb21wb25lbnRGaWVsZFByb3BzPiBleHRlbmRzIEZpZWxkVHlwZTxGaWVsZFR5cGVDb25maWc8VD4+IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xuICBwcml2YXRlIF9sYXRMbmdTdHJpbmdGdW5jdGlvbiE6IExhdExuZ1N0cmluZ0Z1bmN0aW9uO1xuXG4gIHJlYWRvbmx5IGNvbXBhY3RDbGFzcyQgPSBtYXBDb21wYWN0TW9kZU9icyh0aGlzLmNvbXBhY3Q/Lm1vZGUkLCB7XG4gICAgY29tcGFjdDogJ2RieC10ZXh0ZWRpdG9yLWZpZWxkLWNvbXBhY3QnXG4gIH0pO1xuXG4gIHByaXZhdGUgX3N1YiA9IG5ldyBTdWJzY3JpcHRpb25PYmplY3QoKTtcbiAgcHJpdmF0ZSBfem9vbSA9IG5ldyBCZWhhdmlvclN1YmplY3Q8W251bWJlcl0+KFsxMl0pO1xuXG4gIHByaXZhdGUgX2Zvcm1Db250cm9sT2JzID0gbmV3IEJlaGF2aW9yU3ViamVjdDxNYXliZTxBYnN0cmFjdENvbnRyb2w+Pih1bmRlZmluZWQpO1xuICByZWFkb25seSBmb3JtQ29udHJvbCQgPSB0aGlzLl9mb3JtQ29udHJvbE9icy5waXBlKGZpbHRlck1heWJlKCkpO1xuXG4gIHJlYWRvbmx5IHZhbHVlJCA9IHRoaXMuZm9ybUNvbnRyb2wkLnBpcGUoXG4gICAgc3dpdGNoTWFwKChjb250cm9sKSA9PiBjb250cm9sLnZhbHVlQ2hhbmdlcy5waXBlKHN0YXJ0V2l0aChjb250cm9sLnZhbHVlKSkpLFxuICAgIHNoYXJlUmVwbGF5KDEpXG4gICk7XG5cbiAgcmVhZG9ubHkgbGF0TG5nJDogT2JzZXJ2YWJsZTxMYXRMbmdQb2ludD4gPSB0aGlzLnZhbHVlJC5waXBlKFxuICAgIGZpbHRlck1heWJlKCksXG4gICAgbWFwKCh4KSA9PiBsYXRMbmdQb2ludCh4KSksXG4gICAgZmlsdGVyKCh4KSA9PiB4LmxhdCAhPT0gMCAmJiB4LmxuZyAhPT0gMCksXG4gICAgc2hhcmVSZXBsYXkoMSlcbiAgKTtcblxuICByZWFkb25seSBjZW50ZXIkID0gdGhpcy5sYXRMbmckO1xuICByZWFkb25seSB6b29tJCA9IHRoaXMuX3pvb20uYXNPYnNlcnZhYmxlKCk7XG5cbiAgY29uc3RydWN0b3IoQE9wdGlvbmFsKCkgcmVhZG9ubHkgY29tcGFjdDogQ29tcGFjdENvbnRleHRTdG9yZSwgcHJpdmF0ZSByZWFkb25seSBnZW9sb2NhdGlvbiQ6IEdlb2xvY2F0aW9uU2VydmljZSkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBnZXQgem9vbSgpOiBbbnVtYmVyXSB7XG4gICAgcmV0dXJuIFtNYXRoLm1pbih0aGlzLmZpZWxkLnByb3BzLnpvb20gfHwgMTIsIDE4KV07XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZpZWxkLmtleSBhcyBzdHJpbmc7XG4gIH1cblxuICBnZXQgZm9ybUdyb3VwKCk6IEZvcm1Hcm91cCB7XG4gICAgcmV0dXJuIHRoaXMuZm9ybSBhcyBGb3JtR3JvdXA7XG4gIH1cblxuICBnZXQgbGFiZWwoKTogTWF5YmU8c3RyaW5nPiB7XG4gICAgcmV0dXJuIHRoaXMuZmllbGQucHJvcHM/LmxhYmVsO1xuICB9XG5cbiAgZ2V0IGRlc2NyaXB0aW9uKCk6IE1heWJlPHN0cmluZz4ge1xuICAgIHJldHVybiB0aGlzLnByb3BzLmRlc2NyaXB0aW9uO1xuICB9XG5cbiAgZ2V0IGlzUmVhZG9ubHlPckRpc2FibGVkKCkge1xuICAgIHJldHVybiB0aGlzLnByb3BzLnJlYWRvbmx5IHx8IHRoaXMuZGlzYWJsZWQ7XG4gIH1cblxuICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLl9sYXRMbmdTdHJpbmdGdW5jdGlvbiA9IGxhdExuZ1N0cmluZ0Z1bmN0aW9uKHRoaXMuZmllbGQucHJvcHMubGF0TG5nQ29uZmlnKTtcbiAgICB0aGlzLl9mb3JtQ29udHJvbE9icy5uZXh0KHRoaXMuZm9ybUNvbnRyb2wpO1xuICAgIHRoaXMuX3pvb20ubmV4dCh0aGlzLnpvb20pO1xuXG4gICAgaWYgKHRoaXMucHJvcHMucmVhZG9ubHkpIHtcbiAgICAgIHRoaXMuZm9ybUNvbnRyb2wuZGlzYWJsZSgpO1xuICAgIH1cbiAgfVxuXG4gIG92ZXJyaWRlIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gICAgdGhpcy5fZm9ybUNvbnRyb2xPYnMuY29tcGxldGUoKTtcbiAgICB0aGlzLl96b29tLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5fc3ViLmRlc3Ryb3koKTtcbiAgfVxuXG4gIHVzZUN1cnJlbnRMb2NhdGlvbigpIHtcbiAgICB0aGlzLl9zdWIuc3Vic2NyaXB0aW9uID0gdGhpcy5nZW9sb2NhdGlvbiQucGlwZShmaXJzdCgpKS5zdWJzY3JpYmUoKHBvc2l0aW9uKSA9PiB7XG4gICAgICBpZiAocG9zaXRpb24pIHtcbiAgICAgICAgY29uc3QgeyBsYXRpdHVkZTogbGF0LCBsb25naXR1ZGU6IGxuZyB9ID0gcG9zaXRpb24uY29vcmRzO1xuICAgICAgICB0aGlzLnNldFZhbHVlKHsgbGF0LCBsbmcgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBvbkRyYWdFbmQobWFya2VyOiBNYXJrZXIpIHtcbiAgICB0aGlzLnNldFZhbHVlKG1hcmtlci5nZXRMbmdMYXQoKSk7XG4gIH1cblxuICBzZXRWYWx1ZShsYXRMbmc/OiBNYXliZTxMYXRMbmdQb2ludD4pIHtcbiAgICB0aGlzLmZvcm1Db250cm9sLnNldFZhbHVlKGxhdExuZyA/IHRoaXMuX2xhdExuZ1N0cmluZ0Z1bmN0aW9uKGxhdExuZykgOiBsYXRMbmcpO1xuICB9XG59XG4iXX0=
@@ -0,0 +1,26 @@
1
+ import { DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE, DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER, formlyField, propsForFieldConfig, styleWrapper, validatorsForFieldConfig } from '@dereekb/dbx-form';
2
+ import { LAT_LNG_PATTERN } from '@dereekb/util';
3
+ export function mapboxLatLngField(config = {}) {
4
+ const { key = 'latLng' } = config;
5
+ const fieldConfig = {
6
+ ...formlyField({
7
+ key,
8
+ type: 'mapbox-latlng-picker',
9
+ ...propsForFieldConfig(config, {
10
+ label: config.label ?? 'Location Picker',
11
+ placeholder: DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER,
12
+ pattern: LAT_LNG_PATTERN,
13
+ autocomplete: false
14
+ })
15
+ }),
16
+ ...validatorsForFieldConfig({
17
+ messages: {
18
+ pattern: DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE
19
+ }
20
+ })
21
+ };
22
+ return styleWrapper(fieldConfig, {
23
+ classGetter: 'dbx-mat-form-field-disable-underline'
24
+ });
25
+ }
26
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLmZpZWxkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvZGJ4LWZvcm0vbWFwYm94L3NyYy9saWIvZmllbGQvbGF0bG5nL2xhdGxuZy5maWVsZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsMENBQTBDLEVBQUUsc0NBQXNDLEVBQXVDLFdBQVcsRUFBc0IsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLHdCQUF3QixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMVAsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUtoRCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsU0FBa0MsRUFBRTtJQUNwRSxNQUFNLEVBQUUsR0FBRyxHQUFHLFFBQVEsRUFBRSxHQUFHLE1BQU0sQ0FBQztJQUNsQyxNQUFNLFdBQVcsR0FBc0I7UUFDckMsR0FBRyxXQUFXLENBQUM7WUFDYixHQUFHO1lBQ0gsSUFBSSxFQUFFLHNCQUFzQjtZQUM1QixHQUFHLG1CQUFtQixDQUFDLE1BQU0sRUFBRTtnQkFDN0IsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLLElBQUksaUJBQWlCO2dCQUN4QyxXQUFXLEVBQUUsc0NBQXNDO2dCQUNuRCxPQUFPLEVBQUUsZUFBZTtnQkFDeEIsWUFBWSxFQUFFLEtBQUs7YUFDcEIsQ0FBQztTQUNILENBQUM7UUFDRixHQUFHLHdCQUF3QixDQUFDO1lBQzFCLFFBQVEsRUFBRTtnQkFDUixPQUFPLEVBQUUsMENBQTBDO2FBQ3BEO1NBQ0YsQ0FBQztLQUNILENBQUM7SUFFRixPQUFPLFlBQVksQ0FBQyxXQUFXLEVBQUU7UUFDL0IsV0FBVyxFQUFFLHNDQUFzQztLQUNwRCxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgREVGQVVMVF9MQVRfTE5HX1RFWFRfRklFTERfUEFUVEVSTl9NRVNTQUdFLCBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QTEFDRUhPTERFUiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgRmllbGRDb25maWcsIGZvcm1seUZpZWxkLCBMYWJlbGVkRmllbGRDb25maWcsIHByb3BzRm9yRmllbGRDb25maWcsIHN0eWxlV3JhcHBlciwgdmFsaWRhdG9yc0ZvckZpZWxkQ29uZmlnIH0gZnJvbSAnQGRlcmVla2IvZGJ4LWZvcm0nO1xuaW1wb3J0IHsgTEFUX0xOR19QQVRURVJOIH0gZnJvbSAnQGRlcmVla2IvdXRpbCc7XG5pbXBvcnQgeyBGb3JtbHlGaWVsZENvbmZpZyB9IGZyb20gJ0BuZ3gtZm9ybWx5L2NvcmUnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1hcGJveExhdExuZ0ZpZWxkQ29uZmlnIGV4dGVuZHMgT21pdDxMYWJlbGVkRmllbGRDb25maWcsICdrZXknPiwgRGVzY3JpcHRpb25GaWVsZENvbmZpZywgUGFydGlhbDxGaWVsZENvbmZpZz4ge31cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcGJveExhdExuZ0ZpZWxkKGNvbmZpZzogTWFwYm94TGF0TG5nRmllbGRDb25maWcgPSB7fSk6IEZvcm1seUZpZWxkQ29uZmlnIHtcbiAgY29uc3QgeyBrZXkgPSAnbGF0TG5nJyB9ID0gY29uZmlnO1xuICBjb25zdCBmaWVsZENvbmZpZzogRm9ybWx5RmllbGRDb25maWcgPSB7XG4gICAgLi4uZm9ybWx5RmllbGQoe1xuICAgICAga2V5LFxuICAgICAgdHlwZTogJ21hcGJveC1sYXRsbmctcGlja2VyJyxcbiAgICAgIC4uLnByb3BzRm9yRmllbGRDb25maWcoY29uZmlnLCB7XG4gICAgICAgIGxhYmVsOiBjb25maWcubGFiZWwgPz8gJ0xvY2F0aW9uIFBpY2tlcicsXG4gICAgICAgIHBsYWNlaG9sZGVyOiBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QTEFDRUhPTERFUixcbiAgICAgICAgcGF0dGVybjogTEFUX0xOR19QQVRURVJOLFxuICAgICAgICBhdXRvY29tcGxldGU6IGZhbHNlXG4gICAgICB9KVxuICAgIH0pLFxuICAgIC4uLnZhbGlkYXRvcnNGb3JGaWVsZENvbmZpZyh7XG4gICAgICBtZXNzYWdlczoge1xuICAgICAgICBwYXR0ZXJuOiBERUZBVUxUX0xBVF9MTkdfVEVYVF9GSUVMRF9QQVRURVJOX01FU1NBR0VcbiAgICAgIH1cbiAgICB9KVxuICB9O1xuXG4gIHJldHVybiBzdHlsZVdyYXBwZXIoZmllbGRDb25maWcsIHtcbiAgICBjbGFzc0dldHRlcjogJ2RieC1tYXQtZm9ybS1maWVsZC1kaXNhYmxlLXVuZGVybGluZSdcbiAgfSk7XG59XG4iXX0=
@@ -0,0 +1,53 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { CommonModule } from '@angular/common';
3
+ import { DbxFormMapboxLatLngFieldComponent } from './latlng.field.component';
4
+ import { FormlyModule } from '@ngx-formly/core';
5
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
6
+ import { MatInputModule } from '@angular/material/input';
7
+ import { DbxTextModule } from '@dereekb/dbx-web';
8
+ import { NgxMapboxGLModule } from 'ngx-mapbox-gl';
9
+ import { MatIconModule } from '@angular/material/icon';
10
+ import { MatButtonModule } from '@angular/material/button';
11
+ import * as i0 from "@angular/core";
12
+ import * as i1 from "@ngx-formly/core";
13
+ export class DbxFormMapboxLatLngModule {
14
+ }
15
+ DbxFormMapboxLatLngModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
16
+ DbxFormMapboxLatLngModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, declarations: [DbxFormMapboxLatLngFieldComponent], imports: [CommonModule,
17
+ MatIconModule,
18
+ MatButtonModule,
19
+ DbxTextModule,
20
+ FormsModule,
21
+ ReactiveFormsModule,
22
+ MatInputModule, i1.FormlyModule, NgxMapboxGLModule] });
23
+ DbxFormMapboxLatLngModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, imports: [CommonModule,
24
+ MatIconModule,
25
+ MatButtonModule,
26
+ DbxTextModule,
27
+ FormsModule,
28
+ ReactiveFormsModule,
29
+ MatInputModule,
30
+ FormlyModule.forChild({
31
+ types: [{ name: 'mapbox-latlng-picker', component: DbxFormMapboxLatLngFieldComponent, wrappers: ['style', 'form-field'] }]
32
+ }),
33
+ NgxMapboxGLModule] });
34
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, decorators: [{
35
+ type: NgModule,
36
+ args: [{
37
+ imports: [
38
+ CommonModule,
39
+ MatIconModule,
40
+ MatButtonModule,
41
+ DbxTextModule,
42
+ FormsModule,
43
+ ReactiveFormsModule,
44
+ MatInputModule,
45
+ FormlyModule.forChild({
46
+ types: [{ name: 'mapbox-latlng-picker', component: DbxFormMapboxLatLngFieldComponent, wrappers: ['style', 'form-field'] }]
47
+ }),
48
+ NgxMapboxGLModule
49
+ ],
50
+ declarations: [DbxFormMapboxLatLngFieldComponent]
51
+ }]
52
+ }] });
53
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF0bG5nLm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL2ZpZWxkL2xhdGxuZy9sYXRsbmcubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDekMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxpQ0FBaUMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzdFLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNoRCxPQUFPLEVBQUUsV0FBVyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQzs7O0FBa0IzRCxNQUFNLE9BQU8seUJBQXlCOztzSEFBekIseUJBQXlCO3VIQUF6Qix5QkFBeUIsaUJBRnJCLGlDQUFpQyxhQVo5QyxZQUFZO1FBQ1osYUFBYTtRQUNiLGVBQWU7UUFDZixhQUFhO1FBQ2IsV0FBVztRQUNYLG1CQUFtQjtRQUNuQixjQUFjLG1CQUlkLGlCQUFpQjt1SEFJUix5QkFBeUIsWUFkbEMsWUFBWTtRQUNaLGFBQWE7UUFDYixlQUFlO1FBQ2YsYUFBYTtRQUNiLFdBQVc7UUFDWCxtQkFBbUI7UUFDbkIsY0FBYztRQUNkLFlBQVksQ0FBQyxRQUFRLENBQUM7WUFDcEIsS0FBSyxFQUFFLENBQUMsRUFBRSxJQUFJLEVBQUUsc0JBQXNCLEVBQUUsU0FBUyxFQUFFLGlDQUFpQyxFQUFFLFFBQVEsRUFBRSxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsRUFBRSxDQUFDO1NBQzNILENBQUM7UUFDRixpQkFBaUI7MkZBSVIseUJBQXlCO2tCQWhCckMsUUFBUTttQkFBQztvQkFDUixPQUFPLEVBQUU7d0JBQ1AsWUFBWTt3QkFDWixhQUFhO3dCQUNiLGVBQWU7d0JBQ2YsYUFBYTt3QkFDYixXQUFXO3dCQUNYLG1CQUFtQjt3QkFDbkIsY0FBYzt3QkFDZCxZQUFZLENBQUMsUUFBUSxDQUFDOzRCQUNwQixLQUFLLEVBQUUsQ0FBQyxFQUFFLElBQUksRUFBRSxzQkFBc0IsRUFBRSxTQUFTLEVBQUUsaUNBQWlDLEVBQUUsUUFBUSxFQUFFLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxFQUFFLENBQUM7eUJBQzNILENBQUM7d0JBQ0YsaUJBQWlCO3FCQUNsQjtvQkFDRCxZQUFZLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztpQkFDbEQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IERieEZvcm1NYXBib3hMYXRMbmdGaWVsZENvbXBvbmVudCB9IGZyb20gJy4vbGF0bG5nLmZpZWxkLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBGb3JtbHlNb2R1bGUgfSBmcm9tICdAbmd4LWZvcm1seS9jb3JlJztcbmltcG9ydCB7IEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XG5pbXBvcnQgeyBEYnhUZXh0TW9kdWxlIH0gZnJvbSAnQGRlcmVla2IvZGJ4LXdlYic7XG5pbXBvcnQgeyBOZ3hNYXBib3hHTE1vZHVsZSB9IGZyb20gJ25neC1tYXBib3gtZ2wnO1xuaW1wb3J0IHsgTWF0SWNvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2ljb24nO1xuaW1wb3J0IHsgTWF0QnV0dG9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvYnV0dG9uJztcblxuQE5nTW9kdWxlKHtcbiAgaW1wb3J0czogW1xuICAgIENvbW1vbk1vZHVsZSxcbiAgICBNYXRJY29uTW9kdWxlLFxuICAgIE1hdEJ1dHRvbk1vZHVsZSxcbiAgICBEYnhUZXh0TW9kdWxlLFxuICAgIEZvcm1zTW9kdWxlLFxuICAgIFJlYWN0aXZlRm9ybXNNb2R1bGUsXG4gICAgTWF0SW5wdXRNb2R1bGUsXG4gICAgRm9ybWx5TW9kdWxlLmZvckNoaWxkKHtcbiAgICAgIHR5cGVzOiBbeyBuYW1lOiAnbWFwYm94LWxhdGxuZy1waWNrZXInLCBjb21wb25lbnQ6IERieEZvcm1NYXBib3hMYXRMbmdGaWVsZENvbXBvbmVudCwgd3JhcHBlcnM6IFsnc3R5bGUnLCAnZm9ybS1maWVsZCddIH1dXG4gICAgfSksXG4gICAgTmd4TWFwYm94R0xNb2R1bGVcbiAgXSxcbiAgZGVjbGFyYXRpb25zOiBbRGJ4Rm9ybU1hcGJveExhdExuZ0ZpZWxkQ29tcG9uZW50XVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtTWFwYm94TGF0TG5nTW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,15 @@
1
+ import { NgModule } from '@angular/core';
2
+ import { DbxFormMapboxLatLngModule } from './field/latlng/latlng.module';
3
+ import * as i0 from "@angular/core";
4
+ export class DbxFormMapboxModule {
5
+ }
6
+ DbxFormMapboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
7
+ DbxFormMapboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, exports: [DbxFormMapboxLatLngModule] });
8
+ DbxFormMapboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, imports: [DbxFormMapboxLatLngModule] });
9
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, decorators: [{
10
+ type: NgModule,
11
+ args: [{
12
+ exports: [DbxFormMapboxLatLngModule]
13
+ }]
14
+ }] });
15
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFwYm94Lm1vZHVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2RieC1mb3JtL21hcGJveC9zcmMvbGliL21hcGJveC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLEVBQUUseUJBQXlCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQzs7QUFLekUsTUFBTSxPQUFPLG1CQUFtQjs7Z0hBQW5CLG1CQUFtQjtpSEFBbkIsbUJBQW1CLFlBRnBCLHlCQUF5QjtpSEFFeEIsbUJBQW1CLFlBRnBCLHlCQUF5QjsyRkFFeEIsbUJBQW1CO2tCQUgvQixRQUFRO21CQUFDO29CQUNSLE9BQU8sRUFBRSxDQUFDLHlCQUF5QixDQUFDO2lCQUNyQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBEYnhGb3JtTWFwYm94TGF0TG5nTW9kdWxlIH0gZnJvbSAnLi9maWVsZC9sYXRsbmcvbGF0bG5nLm1vZHVsZSc7XG5cbkBOZ01vZHVsZSh7XG4gIGV4cG9ydHM6IFtEYnhGb3JtTWFwYm94TGF0TG5nTW9kdWxlXVxufSlcbmV4cG9ydCBjbGFzcyBEYnhGb3JtTWFwYm94TW9kdWxlIHt9XG4iXX0=
@@ -0,0 +1,214 @@
1
+ import { formlyField, propsForFieldConfig, DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER, validatorsForFieldConfig, DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE, styleWrapper } from '@dereekb/dbx-form';
2
+ import { LAT_LNG_PATTERN, latLngPoint, latLngStringFunction } from '@dereekb/util';
3
+ import * as i1 from '@dereekb/dbx-web';
4
+ import { mapCompactModeObs, DbxTextModule } from '@dereekb/dbx-web';
5
+ import * as i0 from '@angular/core';
6
+ import { Component, Optional, NgModule } from '@angular/core';
7
+ import { FieldType } from '@ngx-formly/material';
8
+ import { BehaviorSubject, switchMap, startWith, shareReplay, map, filter, first } from 'rxjs';
9
+ import { SubscriptionObject, filterMaybe } from '@dereekb/rxjs';
10
+ import * as i2 from '@ng-web-apis/geolocation';
11
+ import * as i3 from '@angular/common';
12
+ import { CommonModule } from '@angular/common';
13
+ import * as i4 from '@angular/material/icon';
14
+ import { MatIconModule } from '@angular/material/icon';
15
+ import * as i5 from '@angular/material/button';
16
+ import { MatButtonModule } from '@angular/material/button';
17
+ import * as i6 from '@angular/forms';
18
+ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
19
+ import * as i7 from '@angular/material/form-field';
20
+ import * as i8 from '@angular/material/input';
21
+ import { MatInputModule } from '@angular/material/input';
22
+ import * as i9 from 'ngx-mapbox-gl';
23
+ import { NgxMapboxGLModule } from 'ngx-mapbox-gl';
24
+ import * as i1$1 from '@ngx-formly/core';
25
+ import { FormlyModule } from '@ngx-formly/core';
26
+
27
+ function mapboxLatLngField(config = {}) {
28
+ var _a;
29
+ const { key = 'latLng' } = config;
30
+ const fieldConfig = Object.assign(Object.assign({}, formlyField(Object.assign({ key, type: 'mapbox-latlng-picker' }, propsForFieldConfig(config, {
31
+ label: (_a = config.label) !== null && _a !== void 0 ? _a : 'Location Picker',
32
+ placeholder: DEFAULT_LAT_LNG_TEXT_FIELD_PLACEHOLDER,
33
+ pattern: LAT_LNG_PATTERN,
34
+ autocomplete: false
35
+ })))), validatorsForFieldConfig({
36
+ messages: {
37
+ pattern: DEFAULT_LAT_LNG_TEXT_FIELD_PATTERN_MESSAGE
38
+ }
39
+ }));
40
+ return styleWrapper(fieldConfig, {
41
+ classGetter: 'dbx-mat-form-field-disable-underline'
42
+ });
43
+ }
44
+
45
+ class DbxFormMapboxLatLngFieldComponent extends FieldType {
46
+ constructor(compact, geolocation$) {
47
+ var _a;
48
+ super();
49
+ this.compact = compact;
50
+ this.geolocation$ = geolocation$;
51
+ this.compactClass$ = mapCompactModeObs((_a = this.compact) === null || _a === void 0 ? void 0 : _a.mode$, {
52
+ compact: 'dbx-texteditor-field-compact'
53
+ });
54
+ this._sub = new SubscriptionObject();
55
+ this._zoom = new BehaviorSubject([12]);
56
+ this._formControlObs = new BehaviorSubject(undefined);
57
+ this.formControl$ = this._formControlObs.pipe(filterMaybe());
58
+ this.value$ = this.formControl$.pipe(switchMap((control) => control.valueChanges.pipe(startWith(control.value))), shareReplay(1));
59
+ this.latLng$ = this.value$.pipe(filterMaybe(), map((x) => latLngPoint(x)), filter((x) => x.lat !== 0 && x.lng !== 0), shareReplay(1));
60
+ this.center$ = this.latLng$;
61
+ this.zoom$ = this._zoom.asObservable();
62
+ }
63
+ get zoom() {
64
+ return [Math.min(this.field.props.zoom || 12, 18)];
65
+ }
66
+ get formGroupName() {
67
+ return this.field.key;
68
+ }
69
+ get formGroup() {
70
+ return this.form;
71
+ }
72
+ get label() {
73
+ var _a;
74
+ return (_a = this.field.props) === null || _a === void 0 ? void 0 : _a.label;
75
+ }
76
+ get description() {
77
+ return this.props.description;
78
+ }
79
+ get isReadonlyOrDisabled() {
80
+ return this.props.readonly || this.disabled;
81
+ }
82
+ ngOnInit() {
83
+ this._latLngStringFunction = latLngStringFunction(this.field.props.latLngConfig);
84
+ this._formControlObs.next(this.formControl);
85
+ this._zoom.next(this.zoom);
86
+ if (this.props.readonly) {
87
+ this.formControl.disable();
88
+ }
89
+ }
90
+ ngOnDestroy() {
91
+ super.ngOnDestroy();
92
+ this._formControlObs.complete();
93
+ this._zoom.complete();
94
+ this._sub.destroy();
95
+ }
96
+ useCurrentLocation() {
97
+ this._sub.subscription = this.geolocation$.pipe(first()).subscribe((position) => {
98
+ if (position) {
99
+ const { latitude: lat, longitude: lng } = position.coords;
100
+ this.setValue({ lat, lng });
101
+ }
102
+ });
103
+ }
104
+ onDragEnd(marker) {
105
+ this.setValue(marker.getLngLat());
106
+ }
107
+ setValue(latLng) {
108
+ this.formControl.setValue(latLng ? this._latLngStringFunction(latLng) : latLng);
109
+ }
110
+ }
111
+ DbxFormMapboxLatLngFieldComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, deps: [{ token: i1.CompactContextStore, optional: true }, { token: i2.GeolocationService }], target: i0.ɵɵFactoryTarget.Component });
112
+ DbxFormMapboxLatLngFieldComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.1.2", type: DbxFormMapboxLatLngFieldComponent, selector: "ng-component", usesInheritance: true, ngImport: i0, template: `
113
+ <div class="dbx-mapbox-latlng-field" [ngClass]="(compactClass$ | async) ?? ''" [formGroup]="formGroup">
114
+ <div class="dbx-mapbox-latlng-field-map">
115
+ <mgl-map [style]="'mapbox://styles/mapbox/streets-v9'" [zoom]="(zoom$ | async) || [8]" [center]="(center$ | async) || [0, 0]">
116
+ <mgl-marker [lngLat]="(latLng$ | async) || [0, 0]" [draggable]="!isReadonlyOrDisabled" (markerDragEnd)="onDragEnd($event)"></mgl-marker>
117
+ </mgl-map>
118
+ </div>
119
+ <div class="dbx-mapbox-latlng-field-input">
120
+ <button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
121
+ <mat-icon>my_location</mat-icon>
122
+ </button>
123
+ <mat-form-field class="dbx-mapbox-latlng-field-input-field">
124
+ <mat-label>Coordinates</mat-label>
125
+ <input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
126
+ </mat-form-field>
127
+ </div>
128
+ </div>
129
+ `, isInline: true, styles: [".dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map{height:220px;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input{display:flex;align-items:center}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input .dbx-mapbox-latlng-field-input-field{width:calc(100% - 40px)}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i4.MatIcon, selector: "mat-icon", inputs: ["color", "inline", "svgIcon", "fontSet", "fontIcon"], exportAs: ["matIcon"] }, { kind: "component", type: i5.MatButton, selector: "button[mat-button], button[mat-raised-button], button[mat-icon-button], button[mat-fab], button[mat-mini-fab], button[mat-stroked-button], button[mat-flat-button]", inputs: ["disabled", "disableRipple", "color"], exportAs: ["matButton"] }, { kind: "directive", type: i6.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: i6.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i6.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i6.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i6.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "component", type: i7.MatFormField, selector: "mat-form-field", inputs: ["color", "appearance", "hideRequiredMarker", "hintLabel", "floatLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i7.MatLabel, selector: "mat-label" }, { kind: "directive", type: i8.MatInput, selector: "input[matInput], textarea[matInput], select[matNativeControl], input[matNativeControl], textarea[matNativeControl]", inputs: ["disabled", "id", "placeholder", "name", "required", "type", "errorStateMatcher", "aria-describedby", "value", "readonly"], exportAs: ["matInput"] }, { kind: "component", type: i9.MapComponent, selector: "mgl-map", inputs: ["accessToken", "collectResourceTiming", "crossSourceCollisions", "customMapboxApiUrl", "fadeDuration", "hash", "refreshExpiredTiles", "failIfMajorPerformanceCaveat", "bearingSnap", "interactive", "pitchWithRotate", "clickTolerance", "attributionControl", "logoPosition", "maxTileCacheSize", "localIdeographFontFamily", "preserveDrawingBuffer", "trackResize", "transformRequest", "bounds", "antialias", "locale", "minZoom", "maxZoom", "minPitch", "maxPitch", "scrollZoom", "dragRotate", "touchPitch", "touchZoomRotate", "doubleClickZoom", "keyboard", "dragPan", "boxZoom", "style", "center", "maxBounds", "zoom", "bearing", "pitch", "fitBoundsOptions", "renderWorldCopies", "projection", "movingMethod", "movingOptions", "fitBounds", "fitScreenCoordinates", "centerWithPanTo", "panToOptions", "cursorStyle"], outputs: ["mapResize", "mapRemove", "mapMouseDown", "mapMouseUp", "mapMouseMove", "mapClick", "mapDblClick", "mapMouseOver", "mapMouseOut", "mapContextMenu", "mapTouchStart", "mapTouchEnd", "mapTouchMove", "mapTouchCancel", "mapWheel", "moveStart", "move", "moveEnd", "mapDragStart", "mapDrag", "mapDragEnd", "zoomStart", "zoomEvt", "zoomEnd", "rotateStart", "rotate", "rotateEnd", "pitchStart", "pitchEvt", "pitchEnd", "boxZoomStart", "boxZoomEnd", "boxZoomCancel", "webGlContextLost", "webGlContextRestored", "mapLoad", "idle", "render", "mapError", "data", "styleData", "sourceData", "dataLoading", "styleDataLoading", "sourceDataLoading", "styleImageMissing", "resize", "remove", "mouseDown", "mouseUp", "mouseMove", "click", "dblClick", "mouseOver", "mouseOut", "contextMenu", "touchStart", "touchEnd", "touchMove", "touchCancel", "wheel", "dragStart", "drag", "dragEnd", "load", "error"] }, { kind: "component", type: i9.MarkerComponent, selector: "mgl-marker", inputs: ["offset", "anchor", "clickTolerance", "feature", "lngLat", "draggable", "popupShown", "className", "pitchAlignment", "rotationAlignment"], outputs: ["markerDragStart", "markerDragEnd", "markerDrag", "dragStart", "dragEnd", "drag"] }, { kind: "pipe", type: i3.AsyncPipe, name: "async" }] });
130
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngFieldComponent, decorators: [{
131
+ type: Component,
132
+ args: [{ template: `
133
+ <div class="dbx-mapbox-latlng-field" [ngClass]="(compactClass$ | async) ?? ''" [formGroup]="formGroup">
134
+ <div class="dbx-mapbox-latlng-field-map">
135
+ <mgl-map [style]="'mapbox://styles/mapbox/streets-v9'" [zoom]="(zoom$ | async) || [8]" [center]="(center$ | async) || [0, 0]">
136
+ <mgl-marker [lngLat]="(latLng$ | async) || [0, 0]" [draggable]="!isReadonlyOrDisabled" (markerDragEnd)="onDragEnd($event)"></mgl-marker>
137
+ </mgl-map>
138
+ </div>
139
+ <div class="dbx-mapbox-latlng-field-input">
140
+ <button mat-icon-button (click)="useCurrentLocation()" [disabled]="isReadonlyOrDisabled">
141
+ <mat-icon>my_location</mat-icon>
142
+ </button>
143
+ <mat-form-field class="dbx-mapbox-latlng-field-input-field">
144
+ <mat-label>Coordinates</mat-label>
145
+ <input type="text" matInput [placeholder]="placeholder" [formControl]="formControl" />
146
+ </mat-form-field>
147
+ </div>
148
+ </div>
149
+ `, styles: [".dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map{height:220px;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-map mgl-map{height:100%;width:100%}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input{display:flex;align-items:center}.dbx-mapbox-latlng-field .dbx-mapbox-latlng-field-input .dbx-mapbox-latlng-field-input-field{width:calc(100% - 40px)}\n"] }]
150
+ }], ctorParameters: function () {
151
+ return [{ type: i1.CompactContextStore, decorators: [{
152
+ type: Optional
153
+ }] }, { type: i2.GeolocationService }];
154
+ } });
155
+
156
+ class DbxFormMapboxLatLngModule {
157
+ }
158
+ DbxFormMapboxLatLngModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
159
+ DbxFormMapboxLatLngModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, declarations: [DbxFormMapboxLatLngFieldComponent], imports: [CommonModule,
160
+ MatIconModule,
161
+ MatButtonModule,
162
+ DbxTextModule,
163
+ FormsModule,
164
+ ReactiveFormsModule,
165
+ MatInputModule, i1$1.FormlyModule, NgxMapboxGLModule] });
166
+ DbxFormMapboxLatLngModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, imports: [CommonModule,
167
+ MatIconModule,
168
+ MatButtonModule,
169
+ DbxTextModule,
170
+ FormsModule,
171
+ ReactiveFormsModule,
172
+ MatInputModule,
173
+ FormlyModule.forChild({
174
+ types: [{ name: 'mapbox-latlng-picker', component: DbxFormMapboxLatLngFieldComponent, wrappers: ['style', 'form-field'] }]
175
+ }),
176
+ NgxMapboxGLModule] });
177
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxLatLngModule, decorators: [{
178
+ type: NgModule,
179
+ args: [{
180
+ imports: [
181
+ CommonModule,
182
+ MatIconModule,
183
+ MatButtonModule,
184
+ DbxTextModule,
185
+ FormsModule,
186
+ ReactiveFormsModule,
187
+ MatInputModule,
188
+ FormlyModule.forChild({
189
+ types: [{ name: 'mapbox-latlng-picker', component: DbxFormMapboxLatLngFieldComponent, wrappers: ['style', 'form-field'] }]
190
+ }),
191
+ NgxMapboxGLModule
192
+ ],
193
+ declarations: [DbxFormMapboxLatLngFieldComponent]
194
+ }]
195
+ }] });
196
+
197
+ class DbxFormMapboxModule {
198
+ }
199
+ DbxFormMapboxModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });
200
+ DbxFormMapboxModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, exports: [DbxFormMapboxLatLngModule] });
201
+ DbxFormMapboxModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, imports: [DbxFormMapboxLatLngModule] });
202
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.1.2", ngImport: i0, type: DbxFormMapboxModule, decorators: [{
203
+ type: NgModule,
204
+ args: [{
205
+ exports: [DbxFormMapboxLatLngModule]
206
+ }]
207
+ }] });
208
+
209
+ /**
210
+ * Generated bundle index. Do not edit.
211
+ */
212
+
213
+ export { DbxFormMapboxLatLngFieldComponent, DbxFormMapboxLatLngModule, DbxFormMapboxModule, mapboxLatLngField };
214
+ //# sourceMappingURL=dereekb-dbx-form-mapbox.mjs.map