UNPKG

ng-gplace-autocomplete

Version:

An angular componet for google maps autocomplete!

126 lines (121 loc) 4.44 kB
import { Injectable, ɵɵdefineInjectable, EventEmitter, Component, NgZone, Input, Output, ViewChild, NgModule } from '@angular/core'; import { CommonModule } from '@angular/common'; import { FormsModule } from '@angular/forms'; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class NgGplaceAutocompleteService { constructor() { } } NgGplaceAutocompleteService.decorators = [ { type: Injectable, args: [{ providedIn: 'root' },] } ]; /** @nocollapse */ NgGplaceAutocompleteService.ctorParameters = () => []; /** @nocollapse */ NgGplaceAutocompleteService.ngInjectableDef = ɵɵdefineInjectable({ factory: function NgGplaceAutocompleteService_Factory() { return new NgGplaceAutocompleteService(); }, token: NgGplaceAutocompleteService, providedIn: "root" }); /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ // import { FormGroup, FormBuilder } from '@angular/forms'; class NgAutocompleteComponent { /** * @param {?} ngZone */ constructor(ngZone) { this.ngZone = ngZone; this.placeholder = 'Search an address'; this.country = ['us']; this.onAddressChange = new EventEmitter(); } /** * @return {?} */ ngAfterViewInit() { this.getPlaceAutocomplete(); } /** * @private * @return {?} */ getPlaceAutocomplete() { /** @type {?} */ const autocomplete = new google.maps.places.Autocomplete(this.addresstext.nativeElement, { componentRestrictions: { country: this.country }, types: [this.addressType] // 'establishment'|'address'|'geocode' }); google.maps.event.addListener(autocomplete, 'place_changed', (/** * @return {?} */ () => { this.ngZone.run((/** * @return {?} */ () => { /** @type {?} */ const place = autocomplete.getPlace(); //verify result if (place.geometry === undefined || place.geometry === null) { return; } // console.log('Inside ng-gplace-autocomplete',place.geometry.location.lat(),place.geometry.location.lng()) /** @type {?} */ const data = { location: { lat: place.geometry.location.lat(), lng: place.geometry.location.lng() }, place: place }; this.invokeEvent(data); })); })); } /** * @param {?} place * @return {?} */ invokeEvent(place) { this.onAddressChange.emit(place); } } NgAutocompleteComponent.decorators = [ { type: Component, args: [{ selector: 'ng-autocomplete', template: "<input #autocomplete type=\"text\" [ngStyle]=\"style\" [placeholder]=\"placeholder\" [(ngModel)]=\"autocompleteInput\">", styles: ["input{margin:0;border:1px solid #778899}"] }] } ]; /** @nocollapse */ NgAutocompleteComponent.ctorParameters = () => [ { type: NgZone } ]; NgAutocompleteComponent.propDecorators = { style: [{ type: Input }], placeholder: [{ type: Input }], addressType: [{ type: Input }], country: [{ type: Input }], onAddressChange: [{ type: Output }], addresstext: [{ type: ViewChild, args: ['autocomplete', { static: false },] }] }; /** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ class NgAutocompleteModule { } NgAutocompleteModule.decorators = [ { type: NgModule, args: [{ declarations: [NgAutocompleteComponent], imports: [ CommonModule, FormsModule ], exports: [NgAutocompleteComponent] },] } ]; export { NgAutocompleteComponent, NgAutocompleteModule, NgGplaceAutocompleteService }; //# sourceMappingURL=ng-gplace-autocomplete.js.map