UNPKG

veoci-vuetify-google-autocomplete

Version:

A Vuetify ready Vue.jS component to Google Places Autocomplete - Forked by Veoci

269 lines (183 loc) 7.86 kB
# Vuetify Google Autocomplete A Vuetify ready Vue.js (2.x) autosuggest component for the Google Maps Places API. ## Versions Latest Stable: 2.0.2 See [releases](https://github.com/MadimetjaShika/vuetify-google-autocomplete/releases) for details. ## Thanks Huge thanks and credit goes to [@olefirenko](https://github.com/olefirenko) and contributors for creating [Vue Google Autocomplete](https://github.com/olefirenko/vue-google-autocomplete) from which this Vuetify ready version was inspired. ## Demo Live Interactive demo: [madimetjashika.github.io/vuetify-google-autocomplete](https://madimetjashika.github.io/vuetify-google-autocomplete/) ## Installation The easiest way to use Vuetify Google Autocomplete is to install it from **npm** or **yarn**. ```sh npm i vuetify-google-autocomplete ``` Or ```sh yarn add vuetify-google-autocomplete ``` ### For version >= 2.0.0 Within your main.js or Vue entry point, import and initialise the component. ```javascript import Vue from 'vue'; import VuetifyGoogleAutocomplete from 'vuetify-google-autocomplete'; Vue.use(VuetifyGoogleAutocomplete, { apiKey: '...', // Can also be an object. E.g, for Google Maps Premium API, pass `{ client: <YOUR-CLIENT-ID> }` version: '...', // Optional }); ``` To obtain API key please visit the [Google Developer Console](https://console.developers.google.com). The API's that you have to enable in your Google API Manager Dashboard are [Google Maps Geocoding API](https://developers.google.com/maps/documentation/geocoding/start), [Google Places API Web Service](https://developers.google.com/places/web-service/) and [Google Maps Javascript API](https://developers.google.com/maps/documentation/javascript/). ## Usage ### For version >= 2.0.0 Simply start using the component in your HTML. ```html <vuetify-google-autocomplete id="map" append-icon="search" disabled="true" placeholder="Start typing" v-on:placechanged="getAddressData" > </vuetify-google-autocomplete> ``` In your template you can use this syntax: ```html <vuetify-google-autocomplete id="map" append-icon="search" disabled="true" classname="form-control" placeholder="Start typing" v-on:placechanged="getAddressData" > </vuetify-google-autocomplete> ``` ### Properties > NB: This componenent implements the same props as those specified for [Vuetify Text Fields](https://vuetifyjs.com/components/text-fields) as at v1.0.3, **some** of which are listed below. Please see [Vuetify Text Fields](https://vuetifyjs.com/components/text-fields) for a complete list of available props. #### id Type: `String` `required` ID for the input container. #### append-icon Type: `String` Default: `null` The icon to append to the end of the input field. #### prepend-icon Type: `String` Default: `null` The icon to prepend at the beginning of the input field. #### classname Type: `String` Class to the input container. #### placeholder Type: `String` Default: `Search Address` The input field will get this placeholder text. Note that the input field will also get a label with the same text. #### disabled Type: `Boolean` Default: `false` Sets the input as either disabled or not. #### types Type: `String` Default: `address` Types supported in place autocomplete requests. [More info](https://developers.google.com/places/supported_types#table3) #### country Type: `String`|`Array` Default: null Option to restrict the autocomplete search to a particular country. Countries must be passed as a two-character, ISO 3166-1 Alpha-2 compatible country code (i.e. "br", "sg", "fr"). You can provide a single one, or an array of up to 5 country code strings. Note: this is a dynamic property. You must pass it as `:country=""` to your component, otherwise it won't work. For example: ```html <vuetify-google-autocomplete :country="['au', 'nz']"></vuetify-google-autocomplete> ``` will restrict the countries to Australia and New Zealand. #### enable-geolocation Type: `Boolean` Default: `false` Bias the search towards user current location. ### Events The component emits next events, which you can listen in your application: #### placechanged Gets triggered when the address data got obtained. This data is available on the returned objects: * `street_number`, `route`, `locality`, `administrative_area_level_1`, `country`, `postal_code`, `latitude`, `longitude`. * `place` - [PlaceResult object](https://developers.google.com/maps/documentation/javascript/reference#PlaceResult) is available as second parameter. #### no-results-found Gets triggered when a user entered the name of a Place that was not suggested and pressed the Enter key, or the Place Details request failed. #### focus Gets triggered when the autocomplete input field receives focus. #### blur Gets triggered when the autocomplete input field loses focus. #### inputChange Gets triggered every time autocomplete input got changed #### change Gets triggered when the autocomplete results got changed #### keypress Gets triggered when a key gets pressed ### Exposed component functions These functions are accessible by setting "ref" on the component ([Refs documentation](https://vuejs.org/v2/guide/components.html#Child-Component-Refs)). See example below how to use these functions. #### clear() Call to clear the value of the user input. #### focus() Call focus to focus on the element #### blur() Call blur to blur (unfocus) the element #### update(value) Call to update the user input with a new value ### Example Please note that you need to provide what method will listen (`v-on:placechanged`) to an event when the address data is obtained. ```html <template> <div> <h2>Your Address</h2> <vuetify-google-autocomplete ref="address" id="map" classname="form-control" placeholder="Please type your address" v-on:placechanged="getAddressData" country="sg" > </vuetify-google-autocomplete> </div> </template> <script> export default { data: function () { return { address: '' } }, mounted() { // To demonstrate functionality of exposed component functions // Here we make focus on the user input this.$refs.address.focus(); }, methods: { /** * When the location found * @param {Object} addressData Data of the found location * @param {Object} placeResultData PlaceResult object * @param {String} id Input container ID */ getAddressData: function (addressData, placeResultData, id) { this.address = addressData; } } } </script> ``` ## Contributing Lets make this an awesome vuetify component! Collaborations and contributions are welcome! [code of conduct]: https://thoughtbot.com/open-source-code-of-conduct ### Contribution Guidlines Have a read through the [Contributor Code of Conduct](https://github.com/MadimetjaShika/vuetify-google-autocomplete/blob/master/CODE_OF_CONDUCT.md). Pretty standard, nothing hectic. Fork, then clone the repo: git clone git@github.com:your-username/vuetify-google-autocomplete.git Install dependencies with **npm** npm install or **yarn** yarn Make your changes and ensure tests are written for your changes. Ensure that your changes pass all the tests: npm run test If relevant, please ensure that you update the README and demo/example accordingly. Push to your fork and [submit a pull request](https://github.com/MadimetjaShika/vuetify-google-autocomplete/compare/). If all is well, your changes will be merged timeously! Feel free to also post issues for bug fixes or enhancements or anything.