ngx-google-place-autocomplete
Version:
* A simple and lightweight google place autocomplete directive for Angular2
112 lines • 10 kB
JavaScript
/**
* @fileoverview added by tsickle
* @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
*/
import { Directive, ElementRef, Output, EventEmitter, NgZone } from '@angular/core';
var NgxGooglePlaceAutocompleteDirective = /** @class */ (function () {
function NgxGooglePlaceAutocompleteDirective(elRef, zone) {
this.zone = zone;
this.onSelect = new EventEmitter();
this.element = elRef.nativeElement;
}
/**
* @return {?}
*/
NgxGooglePlaceAutocompleteDirective.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
/** @type {?} */
var autocomplete = new google.maps.places.Autocomplete(this.element);
google.maps.event.addListener(autocomplete, 'place_changed', (/**
* @return {?}
*/
function () {
_this.zone.run((/**
* @return {?}
*/
function () {
/** @type {?} */
var place = _this.getFormattedAddress(autocomplete.getPlace());
if (place) {
_this.onSelect.emit(place);
}
}));
}));
};
/**
* @param {?} place
* @return {?}
*/
NgxGooglePlaceAutocompleteDirective.prototype.getFormattedAddress = /**
* @param {?} place
* @return {?}
*/
function (place) {
/** @type {?} */
var location_obj = {
fullAddress: null,
city: null,
state: null,
streetNumber: null,
streetName: null,
country: null,
postalCode: null
};
for (var i in place.address_components) {
/** @type {?} */
var item = place.address_components[i];
location_obj['fullAddress'] = place.formatted_address;
if (item['types'].indexOf('locality') > -1) {
location_obj['city'] = item['long_name'];
}
else if (item['types'].indexOf('administrative_area_level_1') > -1) {
location_obj['state'] = item['short_name'];
}
else if (item['types'].indexOf('street_number') > -1) {
location_obj['streetNumber'] = item['short_name'];
}
else if (item['types'].indexOf('route') > -1) {
location_obj['streetName'] = item['long_name'];
}
else if (item['types'].indexOf('country') > -1) {
location_obj['country'] = item['long_name'];
}
else if (item['types'].indexOf('postal_code') > -1) {
location_obj['postalCode'] = item['short_name'];
}
}
return location_obj;
};
NgxGooglePlaceAutocompleteDirective.decorators = [
{ type: Directive, args: [{
selector: '[ngx-google-place]'
},] }
];
/** @nocollapse */
NgxGooglePlaceAutocompleteDirective.ctorParameters = function () { return [
{ type: ElementRef },
{ type: NgZone }
]; };
NgxGooglePlaceAutocompleteDirective.propDecorators = {
onSelect: [{ type: Output }]
};
return NgxGooglePlaceAutocompleteDirective;
}());
export { NgxGooglePlaceAutocompleteDirective };
if (false) {
/**
* @type {?}
* @private
*/
NgxGooglePlaceAutocompleteDirective.prototype.element;
/** @type {?} */
NgxGooglePlaceAutocompleteDirective.prototype.onSelect;
/**
* @type {?}
* @private
*/
NgxGooglePlaceAutocompleteDirective.prototype.zone;
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmd4LWdvb2dsZS1wbGFjZS1hdXRvY29tcGxldGUuZGlyZWN0aXZlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmd4LWdvb2dsZS1wbGFjZS1hdXRvY29tcGxldGUvIiwic291cmNlcyI6WyJsaWIvbmd4LWdvb2dsZS1wbGFjZS1hdXRvY29tcGxldGUuZGlyZWN0aXZlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLFVBQVUsRUFBVSxNQUFNLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUk1RjtJQVNJLDZDQUFZLEtBQWlCLEVBQVUsSUFBWTtRQUFaLFNBQUksR0FBSixJQUFJLENBQVE7UUFGekMsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBR3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQztJQUN2QyxDQUFDOzs7O0lBRUQsc0RBQVE7OztJQUFSO1FBQUEsaUJBV0M7O1lBVlMsWUFBWSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7UUFFdEUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxlQUFlOzs7UUFBRTtZQUN6RCxLQUFJLENBQUMsSUFBSSxDQUFDLEdBQUc7OztZQUFDOztvQkFDSixLQUFLLEdBQUcsS0FBSSxDQUFDLG1CQUFtQixDQUFDLFlBQVksQ0FBQyxRQUFRLEVBQUUsQ0FBQztnQkFDL0QsSUFBSSxLQUFLLEVBQUU7b0JBQ1AsS0FBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQzdCO1lBQ0wsQ0FBQyxFQUFDLENBQUM7UUFDUCxDQUFDLEVBQUMsQ0FBQztJQUNQLENBQUM7Ozs7O0lBRUQsaUVBQW1COzs7O0lBQW5CLFVBQW9CLEtBQUs7O1lBQ2YsWUFBWSxHQUFHO1lBQ2pCLFdBQVcsRUFBRSxJQUFJO1lBQ2pCLElBQUksRUFBRSxJQUFJO1lBQ1YsS0FBSyxFQUFFLElBQUk7WUFDWCxZQUFZLEVBQUUsSUFBSTtZQUNsQixVQUFVLEVBQUUsSUFBSTtZQUNoQixPQUFPLEVBQUUsSUFBSTtZQUNiLFVBQVUsRUFBRSxJQUFJO1NBQ25CO1FBRUQsS0FBSyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUU7O2dCQUM5QixJQUFJLEdBQUcsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUMsQ0FBQztZQUN4QyxZQUFZLENBQUMsYUFBYSxDQUFDLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBRXRELElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDeEMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUM1QztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsNkJBQTZCLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDbEUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQzthQUM5QztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ3BELFlBQVksQ0FBQyxjQUFjLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDckQ7aUJBQU0sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUM1QyxZQUFZLENBQUMsWUFBWSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDO2FBQ2xEO2lCQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtnQkFDOUMsWUFBWSxDQUFDLFNBQVMsQ0FBQyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQzthQUMvQztpQkFBTSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQUU7Z0JBQ2xELFlBQVksQ0FBQyxZQUFZLENBQUMsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7YUFDbkQ7U0FDSjtRQUVELE9BQU8sWUFBWSxDQUFDO0lBQ3hCLENBQUM7O2dCQXpESixTQUFTLFNBQUM7b0JBQ1AsUUFBUSxFQUFFLG9CQUFvQjtpQkFDakM7Ozs7Z0JBTm1CLFVBQVU7Z0JBQWdDLE1BQU07OzsyQkFXL0QsTUFBTTs7SUFtRFgsMENBQUM7Q0FBQSxBQTFERCxJQTBEQztTQXREWSxtQ0FBbUM7Ozs7OztJQUU1QyxzREFBa0M7O0lBQ2xDLHVEQUEyRDs7Ozs7SUFFNUIsbURBQW9CIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlLCBFbGVtZW50UmVmLCBPbkluaXQsIE91dHB1dCwgRXZlbnRFbWl0dGVyLCBOZ1pvbmUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuXHJcbmRlY2xhcmUgbGV0IGdvb2dsZTogYW55O1xyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ1tuZ3gtZ29vZ2xlLXBsYWNlXSdcclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBOZ3hHb29nbGVQbGFjZUF1dG9jb21wbGV0ZURpcmVjdGl2ZSBpbXBsZW1lbnRzIE9uSW5pdCB7XHJcblxyXG4gICAgcHJpdmF0ZSBlbGVtZW50OiBIVE1MSW5wdXRFbGVtZW50O1xyXG4gICAgQE91dHB1dCgpIG9uU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihlbFJlZjogRWxlbWVudFJlZiwgcHJpdmF0ZSB6b25lOiBOZ1pvbmUpIHtcclxuICAgICAgICB0aGlzLmVsZW1lbnQgPSBlbFJlZi5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25Jbml0KCkge1xyXG4gICAgICAgIGNvbnN0IGF1dG9jb21wbGV0ZSA9IG5ldyBnb29nbGUubWFwcy5wbGFjZXMuQXV0b2NvbXBsZXRlKHRoaXMuZWxlbWVudCk7XHJcblxyXG4gICAgICAgIGdvb2dsZS5tYXBzLmV2ZW50LmFkZExpc3RlbmVyKGF1dG9jb21wbGV0ZSwgJ3BsYWNlX2NoYW5nZWQnLCAoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuem9uZS5ydW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcGxhY2UgPSB0aGlzLmdldEZvcm1hdHRlZEFkZHJlc3MoYXV0b2NvbXBsZXRlLmdldFBsYWNlKCkpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vblNlbGVjdC5lbWl0KHBsYWNlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0Rm9ybWF0dGVkQWRkcmVzcyhwbGFjZSkge1xyXG4gICAgICAgIGNvbnN0IGxvY2F0aW9uX29iaiA9IHtcclxuICAgICAgICAgICAgZnVsbEFkZHJlc3M6IG51bGwsXHJcbiAgICAgICAgICAgIGNpdHk6IG51bGwsXHJcbiAgICAgICAgICAgIHN0YXRlOiBudWxsLFxyXG4gICAgICAgICAgICBzdHJlZXROdW1iZXI6IG51bGwsXHJcbiAgICAgICAgICAgIHN0cmVldE5hbWU6IG51bGwsXHJcbiAgICAgICAgICAgIGNvdW50cnk6IG51bGwsXHJcbiAgICAgICAgICAgIHBvc3RhbENvZGU6IG51bGxcclxuICAgICAgICB9O1xyXG5cclxuICAgICAgICBmb3IgKGxldCBpIGluIHBsYWNlLmFkZHJlc3NfY29tcG9uZW50cykge1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtID0gcGxhY2UuYWRkcmVzc19jb21wb25lbnRzW2ldO1xyXG4gICAgICAgICAgICBsb2NhdGlvbl9vYmpbJ2Z1bGxBZGRyZXNzJ10gPSBwbGFjZS5mb3JtYXR0ZWRfYWRkcmVzcztcclxuXHJcbiAgICAgICAgICAgIGlmIChpdGVtWyd0eXBlcyddLmluZGV4T2YoJ2xvY2FsaXR5JykgPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgbG9jYXRpb25fb2JqWydjaXR5J10gPSBpdGVtWydsb25nX25hbWUnXTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtWyd0eXBlcyddLmluZGV4T2YoJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uX29ialsnc3RhdGUnXSA9IGl0ZW1bJ3Nob3J0X25hbWUnXTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtWyd0eXBlcyddLmluZGV4T2YoJ3N0cmVldF9udW1iZXInKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbl9vYmpbJ3N0cmVldE51bWJlciddID0gaXRlbVsnc2hvcnRfbmFtZSddO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1bJ3R5cGVzJ10uaW5kZXhPZigncm91dGUnKSA+IC0xKSB7XHJcbiAgICAgICAgICAgICAgICBsb2NhdGlvbl9vYmpbJ3N0cmVldE5hbWUnXSA9IGl0ZW1bJ2xvbmdfbmFtZSddO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGl0ZW1bJ3R5cGVzJ10uaW5kZXhPZignY291bnRyeScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uX29ialsnY291bnRyeSddID0gaXRlbVsnbG9uZ19uYW1lJ107XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbVsndHlwZXMnXS5pbmRleE9mKCdwb3N0YWxfY29kZScpID4gLTEpIHtcclxuICAgICAgICAgICAgICAgIGxvY2F0aW9uX29ialsncG9zdGFsQ29kZSddID0gaXRlbVsnc2hvcnRfbmFtZSddO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbG9jYXRpb25fb2JqO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==