UNPKG

@ng-maps/places

Version:

Components related to places library. Currently only an autocomplete directive is implemented that can be attached to an input field to provide places suggestions

1 lines 17.7 kB
{"version":3,"file":"ng-maps-places.mjs","sources":["../../../../libs/places/src/lib/configuration.ts","../../../../libs/places/src/lib/directives/autocomplete.ts","../../../../libs/places/src/lib/directives/search-box.ts","../../../../libs/places/src/lib/places.module.ts","../../../../libs/places/src/public-api.ts","../../../../libs/places/src/ng-maps-places.ts"],"sourcesContent":["import { InjectionToken } from '@angular/core';\n\nexport interface NgMapsPlacesConfiguration {\n autocomplete?: Partial<google.maps.places.AutocompleteOptions>;\n searchBox?: google.maps.places.SearchBoxOptions;\n}\n\nexport const NG_MAPS_PLACES_DEFAULT_CONFIGURATION =\n new InjectionToken<NgMapsPlacesConfiguration>(\n 'NgMapsPlacesDefaultConfiguration',\n { providedIn: 'root', factory: () => ({}) },\n );\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { fromEventPattern, Subscription } from 'rxjs';\n\nimport { MapsAPILoader } from '@ng-maps/core';\n\nimport {\n NgMapsPlacesConfiguration,\n NG_MAPS_PLACES_DEFAULT_CONFIGURATION,\n} from '../configuration';\n\n/**\n * @example\n * <input [mapAutocomplete]='options' (placeResult)='onPlacesResult($event)' />\n */\n@Directive({\n selector: '[mapAutocomplete]',\n standalone: false,\n})\nexport class NgMapsAutocompleteDirective\n implements OnInit, OnChanges, OnDestroy\n{\n /**\n * Configuration Input described by the AutocompleteOptions Interface\n * https://developers.google.com/maps/documentation/javascript/reference/3.exp/places-widget#AutocompleteOptions\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('mapAutocomplete')\n public config?: Partial<google.maps.places.AutocompleteOptions>;\n\n /**\n * This event is fired on selection of an element from the autocomplete list.\n * The event contains a PlaceResult from GoogleMapsAPI\n * https://developers.google.com/maps/documentation/javascript/reference/3.exp/places-service#PlaceResult\n */\n @Output()\n public placeResult: EventEmitter<google.maps.places.PlaceResult> =\n new EventEmitter<google.maps.places.PlaceResult>();\n\n /**\n * This event is fired on selection of an element from the autocomplete list.\n * The event contains a LatLngBounds from GoogleMapsAPI\n * https://developers.google.com/maps/documentation/javascript/reference/3.exp/coordinates#LatLngBounds\n */\n @Output()\n public bounds: EventEmitter<google.maps.LatLngBounds> =\n new EventEmitter<google.maps.LatLngBounds>();\n\n private autocomplete?: google.maps.places.Autocomplete;\n private readonly subscription: Subscription = new Subscription();\n\n constructor(\n private element: ElementRef,\n private mapsAPILoader: MapsAPILoader,\n @Inject(NG_MAPS_PLACES_DEFAULT_CONFIGURATION)\n private defaultConfig: NgMapsPlacesConfiguration,\n private _zone: NgZone,\n ) {}\n\n /** @internal */\n public ngOnInit(): void {\n if (typeof this.config === 'undefined') {\n this.config = {\n types: ['address'],\n ...(this.defaultConfig?.autocomplete ?? {}),\n };\n } else {\n this.config = {\n types: ['address'],\n ...(this.defaultConfig?.autocomplete ?? {}),\n ...this.config,\n };\n }\n\n if (this.element.nativeElement instanceof HTMLInputElement) {\n this.init();\n } else {\n throw new Error('Directive can only be applied to an HTMLInputElement');\n }\n }\n\n /** @internal */\n public async init() {\n await this.mapsAPILoader.load();\n this.autocomplete = new google.maps.places.Autocomplete(\n this.element.nativeElement,\n this.config,\n );\n this.subscription.add(\n fromEventPattern(\n (handler: any) => this.addHandler(handler),\n () => this.removeHandler(),\n ).subscribe({\n next: () => {\n this.placeResult.emit(this.autocomplete!.getPlace());\n this.bounds.emit(this.autocomplete!.getBounds());\n },\n }),\n );\n }\n\n /** @internal */\n public ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.config !== 'undefined' && !changes.config.firstChange) {\n const config = changes.config\n .currentValue as google.maps.places.AutocompleteOptions;\n if (typeof config.bounds !== 'undefined') {\n this.autocomplete?.setBounds(config.bounds);\n }\n if (typeof config.componentRestrictions !== 'undefined') {\n this.autocomplete?.setComponentRestrictions(\n config.componentRestrictions,\n );\n }\n if (typeof config.types !== 'undefined') {\n this.autocomplete?.setTypes(config.types);\n }\n }\n }\n\n /** @internal */\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /** @internal */\n private addHandler(handler: (...args: Array<any>) => void) {\n return this.autocomplete?.addListener('place_changed', () =>\n this._zone.run(handler),\n );\n }\n\n /** @internal */\n private removeHandler() {\n this.autocomplete?.unbindAll();\n }\n}\n","import {\n Directive,\n ElementRef,\n EventEmitter,\n Inject,\n Input,\n NgZone,\n OnChanges,\n OnDestroy,\n OnInit,\n Output,\n SimpleChanges,\n} from '@angular/core';\nimport { fromEventPattern, Subscription } from 'rxjs';\n\nimport { MapsAPILoader } from '@ng-maps/core';\n\nimport {\n NgMapsPlacesConfiguration,\n NG_MAPS_PLACES_DEFAULT_CONFIGURATION,\n} from '../configuration';\n\n/**\n * @example\n * <input [mapAutocomplete]='options' (placeResult)='onPlacesResult($event)' />\n */\n@Directive({\n selector: '[mapSearchBox]',\n standalone: false,\n})\nexport class NgMapsSearchBoxDirective implements OnInit, OnChanges, OnDestroy {\n /**\n * Configuration Input described by the AutocompleteOptions Interface\n * https://developers.google.com/maps/documentation/javascript/reference/3.exp/places-widget#AutocompleteOptions\n */\n // eslint-disable-next-line @angular-eslint/no-input-rename\n @Input('mapSearchBox')\n public config: google.maps.places.SearchBoxOptions | undefined | null;\n\n /**\n * This event is fired on selection of an element from the autocomplete list.\n * The event contains a PlaceResult from GoogleMapsAPI\n * https://developers.google.com/maps/documentation/javascript/reference/3.exp/places-service#PlaceResult\n */\n @Output()\n public placeResult: EventEmitter<Array<google.maps.places.PlaceResult>> =\n new EventEmitter<Array<google.maps.places.PlaceResult>>();\n\n /**\n * This event is fired on selection of an element from the autocomplete list.\n * The event contains a LatLngBounds from GoogleMapsAPI\n * https://developers.google.com/maps/documentation/javascript/reference/3.exp/coordinates#LatLngBounds\n */\n @Output()\n public bounds: EventEmitter<google.maps.LatLngBounds> =\n new EventEmitter<google.maps.LatLngBounds>();\n\n private searchBox?: google.maps.places.SearchBox;\n private readonly subscription: Subscription = new Subscription();\n\n constructor(\n private element: ElementRef,\n private mapsAPILoader: MapsAPILoader,\n @Inject(NG_MAPS_PLACES_DEFAULT_CONFIGURATION)\n private defaultConfig: NgMapsPlacesConfiguration,\n private _zone: NgZone,\n ) {}\n\n /** @internal */\n public ngOnInit(): void {\n if (typeof this.config === 'undefined') {\n this.config = this.defaultConfig?.searchBox;\n } else {\n this.config = {\n ...(this.defaultConfig?.searchBox ?? {}),\n ...this.config,\n };\n }\n\n if (this.element.nativeElement instanceof HTMLInputElement) {\n this.init();\n } else {\n throw new Error('Directive can only be applied to an HTMLInputElement');\n }\n }\n\n /** @internal */\n public async init() {\n await this.mapsAPILoader.load();\n this.searchBox = new google.maps.places.SearchBox(\n this.element.nativeElement,\n this.config,\n );\n this.subscription.add(\n fromEventPattern(\n (handler: any) => this.addHandler(handler),\n () => this.removeHandler(),\n ).subscribe({\n next: () => {\n this.placeResult.emit(this.searchBox!.getPlaces());\n this.bounds.emit(this.searchBox!.getBounds());\n },\n }),\n );\n }\n\n /** @internal */\n public ngOnChanges(changes: SimpleChanges): void {\n if (typeof changes.config !== 'undefined' && !changes.config.firstChange) {\n const config = changes.config\n .currentValue as google.maps.places.SearchBoxOptions;\n if (typeof config.bounds !== 'undefined' && this.searchBox) {\n this.searchBox.setBounds(config.bounds);\n }\n }\n }\n\n /** @internal */\n public ngOnDestroy(): void {\n this.subscription.unsubscribe();\n }\n\n /** @internal */\n private addHandler(handler: (...args: Array<any>) => void) {\n return this.searchBox?.addListener('places_changed', () =>\n this._zone.run(handler),\n );\n }\n\n /** @internal */\n private removeHandler() {\n this.searchBox?.unbindAll();\n }\n}\n","import { ModuleWithProviders, NgModule } from '@angular/core';\n\nimport {\n NgMapsPlacesConfiguration,\n NG_MAPS_PLACES_DEFAULT_CONFIGURATION,\n} from './configuration';\nimport { NgMapsAutocompleteDirective } from './directives/autocomplete';\nimport { NgMapsSearchBoxDirective } from './directives/search-box';\n\n/**\n * @internal\n */\nexport function placesDirectives() {\n return [NgMapsAutocompleteDirective, NgMapsSearchBoxDirective];\n}\n\n@NgModule({\n declarations: placesDirectives(),\n exports: placesDirectives(),\n})\nexport class NgMapsPlacesModule {\n /**\n * configure the NgMapsPlacesModule with a value\n * @param config\n */\n public static forRoot(\n config: NgMapsPlacesConfiguration,\n ): ModuleWithProviders<NgMapsPlacesModule> {\n return {\n ngModule: NgMapsPlacesModule,\n providers: [\n {\n provide: NG_MAPS_PLACES_DEFAULT_CONFIGURATION,\n useValue: config,\n },\n ],\n };\n }\n\n /**\n * configure the NgMapsPlacesModule with a factory\n * @param factory\n * @param deps\n */\n public static forRootFactory(\n factory: (...args: Array<any>) => NgMapsPlacesConfiguration,\n deps?: Array<any>,\n ): ModuleWithProviders<NgMapsPlacesModule> {\n return {\n ngModule: NgMapsPlacesModule,\n providers: [\n {\n provide: NG_MAPS_PLACES_DEFAULT_CONFIGURATION,\n useFactory: factory,\n deps,\n },\n ],\n };\n }\n}\n","/*\n * Public API Surface of places\n */\n\nexport * from './lib/directives/autocomplete';\nexport * from './lib/directives/search-box';\nexport * from './lib/configuration';\nexport * from './lib/places.module';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}