UNPKG

ng-gplace-autocomplete

Version:

An angular componet for google maps autocomplete!

111 lines 8.82 kB
/** * @fileoverview added by tsickle * @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc */ /// <reference path="../../node_modules/@types/googlemaps/index.d.ts"/> import { Component, Input, Output, ViewChild, EventEmitter, NgZone } from '@angular/core'; // import { FormGroup, FormBuilder } from '@angular/forms'; export 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 },] }] }; if (false) { /** @type {?} */ NgAutocompleteComponent.prototype.style; /** @type {?} */ NgAutocompleteComponent.prototype.placeholder; /** @type {?} */ NgAutocompleteComponent.prototype.addressType; /** @type {?} */ NgAutocompleteComponent.prototype.country; /** @type {?} */ NgAutocompleteComponent.prototype.onAddressChange; /** @type {?} */ NgAutocompleteComponent.prototype.addresstext; /** @type {?} */ NgAutocompleteComponent.prototype.autocompleteInput; /** @type {?} */ NgAutocompleteComponent.prototype.queryWait; /** * @type {?} * @private */ NgAutocompleteComponent.prototype.ngZone; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmctZ3BsYWNlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZy1ncGxhY2UtYXV0b2NvbXBsZXRlLyIsInNvdXJjZXMiOlsibGliL25nLWdwbGFjZS1hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQ0EsT0FBTyxFQUFFLFNBQVMsRUFBVSxLQUFLLEVBQUUsTUFBTSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPakgsTUFBTSxPQUFPLHVCQUF1Qjs7OztJQUVsQyxZQUFvQixNQUFjO1FBQWQsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUV6QixnQkFBVyxHQUFXLG1CQUFtQixDQUFBO1FBRXpDLFlBQU8sR0FBYSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLG9CQUFlLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7SUFMNUIsQ0FBQzs7OztJQVd2QyxlQUFlO1FBQ2IsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQzs7Ozs7SUFFTyxvQkFBb0I7O2NBQ3BCLFlBQVksR0FBRyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFDckY7WUFDRSxxQkFBcUIsRUFBRSxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2hELEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxzQ0FBc0M7U0FDakUsQ0FBQztRQUNKLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsZUFBZTs7O1FBQUUsR0FBRyxFQUFFO1lBQ2hFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRzs7O1lBQUMsR0FBRyxFQUFFOztzQkFDYixLQUFLLEdBQUcsWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFFckMsZUFBZTtnQkFDZixJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssU0FBUyxJQUFJLEtBQUssQ0FBQyxRQUFRLEtBQUssSUFBSSxFQUFFO29CQUMzRCxPQUFPO2lCQUNSOzs7c0JBR0ssSUFBSSxHQUFHO29CQUNYLFFBQVEsRUFBRTt3QkFDUixHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO3dCQUNsQyxHQUFHLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxFQUFFO3FCQUNuQztvQkFDRCxLQUFLLEVBQUUsS0FBSztpQkFDYjtnQkFDRCxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3pCLENBQUMsRUFBQyxDQUFDO1FBQ0wsQ0FBQyxFQUFDLENBQUM7SUFDTCxDQUFDOzs7OztJQUVELFdBQVcsQ0FBQyxLQUFVO1FBQ3BCLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ25DLENBQUM7OztZQXBERixTQUFTLFNBQUM7Z0JBQ1QsUUFBUSxFQUFFLGlCQUFpQjtnQkFDM0IsbUlBQXNEOzthQUV2RDs7OztZQU5rRixNQUFNOzs7b0JBVXRGLEtBQUs7MEJBQ0wsS0FBSzswQkFDTCxLQUFLO3NCQUNMLEtBQUs7OEJBQ0wsTUFBTTswQkFDTixTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRTs7OztJQUw1Qyx3Q0FBb0I7O0lBQ3BCLDhDQUFrRDs7SUFDbEQsOENBQTZCOztJQUM3QiwwQ0FBb0M7O0lBQ3BDLGtEQUFrRTs7SUFDbEUsOENBQStEOztJQUUvRCxvREFBMEI7O0lBQzFCLDRDQUFtQjs7Ozs7SUFUUCx5Q0FBc0IiLCJzb3VyY2VzQ29udGVudCI6WyIvLy8gPHJlZmVyZW5jZSBwYXRoPVwiLi4vLi4vbm9kZV9tb2R1bGVzL0B0eXBlcy9nb29nbGVtYXBzL2luZGV4LmQudHNcIi8+XHJcbmltcG9ydCB7IENvbXBvbmVudCwgT25Jbml0LCBJbnB1dCwgT3V0cHV0LCBWaWV3Q2hpbGQsIEV2ZW50RW1pdHRlciwgQWZ0ZXJWaWV3SW5pdCwgTmdab25lIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbi8vIGltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybUJ1aWxkZXIgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbmctYXV0b2NvbXBsZXRlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vbmctZ3BsYWNlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vbmctZ3BsYWNlLWF1dG9jb21wbGV0ZS5jb21wb25lbnQuc2NzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBOZ0F1dG9jb21wbGV0ZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQge1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIG5nWm9uZTogTmdab25lKSB7IH1cclxuICBASW5wdXQoKSBzdHlsZTogYW55O1xyXG4gIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VhcmNoIGFuIGFkZHJlc3MnXHJcbiAgQElucHV0KCkgYWRkcmVzc1R5cGU6IHN0cmluZztcclxuICBASW5wdXQoKSBjb3VudHJ5OiBzdHJpbmdbXSA9IFsndXMnXTtcclxuICBAT3V0cHV0KCkgb25BZGRyZXNzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAVmlld0NoaWxkKCdhdXRvY29tcGxldGUnLCB7IHN0YXRpYzogZmFsc2UgfSkgYWRkcmVzc3RleHQ6IGFueTtcclxuXHJcbiAgYXV0b2NvbXBsZXRlSW5wdXQ6IHN0cmluZztcclxuICBxdWVyeVdhaXQ6IGJvb2xlYW47XHJcbiAgXHJcbiAgbmdBZnRlclZpZXdJbml0KCkge1xyXG4gICAgdGhpcy5nZXRQbGFjZUF1dG9jb21wbGV0ZSgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRQbGFjZUF1dG9jb21wbGV0ZSgpIHtcclxuICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKHRoaXMuYWRkcmVzc3RleHQubmF0aXZlRWxlbWVudCxcclxuICAgICAge1xyXG4gICAgICAgIGNvbXBvbmVudFJlc3RyaWN0aW9uczogeyBjb3VudHJ5OiB0aGlzLmNvdW50cnkgfSxcclxuICAgICAgICB0eXBlczogW3RoaXMuYWRkcmVzc1R5cGVdIC8vICdlc3RhYmxpc2htZW50J3wnYWRkcmVzcyd8J2dlb2NvZGUnXHJcbiAgICAgIH0pO1xyXG4gICAgZ29vZ2xlLm1hcHMuZXZlbnQuYWRkTGlzdGVuZXIoYXV0b2NvbXBsZXRlLCAncGxhY2VfY2hhbmdlZCcsICgpID0+IHtcclxuICAgICAgdGhpcy5uZ1pvbmUucnVuKCgpID0+IHtcclxuICAgICAgICBjb25zdCBwbGFjZSA9IGF1dG9jb21wbGV0ZS5nZXRQbGFjZSgpO1xyXG5cclxuICAgICAgICAvL3ZlcmlmeSByZXN1bHRcclxuICAgICAgICBpZiAocGxhY2UuZ2VvbWV0cnkgPT09IHVuZGVmaW5lZCB8fCBwbGFjZS5nZW9tZXRyeSA9PT0gbnVsbCkge1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ0luc2lkZSBuZy1ncGxhY2UtYXV0b2NvbXBsZXRlJyxwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSxwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKSlcclxuICAgICAgICBjb25zdCBkYXRhID0ge1xyXG4gICAgICAgICAgbG9jYXRpb246IHtcclxuICAgICAgICAgICAgbGF0OiBwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sYXQoKSxcclxuICAgICAgICAgICAgbG5nOiBwbGFjZS5nZW9tZXRyeS5sb2NhdGlvbi5sbmcoKVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHBsYWNlOiBwbGFjZVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmludm9rZUV2ZW50KGRhdGEpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgaW52b2tlRXZlbnQocGxhY2U6IGFueSkge1xyXG4gICAgdGhpcy5vbkFkZHJlc3NDaGFuZ2UuZW1pdChwbGFjZSk7XHJcbiAgfVxyXG59XHJcbiJdfQ==