🔔 Alert..!! Get 2 Month Free Cloud Hosting With $200 Bonus From Digital Ocean ACTIVATE DEAL

An autocomplete component for Vue.js that allows to customize the appearance for any framework.

Form

Documentation

v-autocomplete


Autocomplete component for Vue.js

This component is css-free. The idea is to be used with any framework.

Installation

Using yarn

yarn add v-autocomplete

Using npm

npm i --save v-autocomplete

Demo

DEMO

Usage

Bundler (Webpack, Rollup)

import Vue from 'vue'  import Autocomplete from 'v-autocomplete'  // You need a specific loader for CSS files like https://github.com/webpack/css-loader import 'v-autocomplete/dist/v-autocomplete.css'  Vue.use(Autocomplete)

Browser

<!-- Include after Vue --> <link rel="stylesheet" href="v-autocomplete/dist/v-autocomplete.css"></link> <script src="v-autocomplete/dist/v-autocomplete.js"></script> <script>   Vue.use(VAutocomplete.default) </script>

Example

<template>   <v-autocomplete :items="items" v-model="item" :get-label="getLabel" :component-item='template' @update-items="updateItems">   </v-autocomplete> </template>  <script> import ItemTemplate from './ItemTemplate.vue' export default {   data () {     return {       item: {id: 9, name: 'Lion', description: 'Lorem ipsum dolor sit amet, consectetur adipisicing elit.'},       items: [],       template: ItemTemplate     }   },   methods: {     getLabel (item) {       return item.name     },     updateItems (text) {       yourGetItemsMethod(text).then( (response) => {         this.items = response       })     }   } } </script>

ItemTemplate example:

<template>   <div>     <b>#{{item.id}}</b>     <span>{{ item.name }}</span>     <abbr>{{item.description}}</abbr>   </div> </template>  <script> export default {   props: {     item: { required: true },     searchText: { required: true }   } } </script>

Properties

Name Type Required Default value Info
items Array Yes List items
component-item Vue Component or Function or String No Item Item list template
min-len Number No 3 Min length to trigger the updateItems event
wait String No 500 Miliseconds dela to trigger the updateItems event
get-label Function No function(item) { return item } Anonymous function to extract label of the item
value Mixed No Initial value (use v-model)
auto-select-one-item Boolean No true Auto select item if result one item in items
input-attrs Object No {} Attributes for input
keep-open Boolean No false If true, suggestions list stays open even when input is not active
placeholder String No Deprecated, will be removed in the next version. Use input-attrs
input-class String No Custom class of input search. Deprecated, will be removed in the next version. Use input-attrs
disabled Boolean No false Disable input. Deprecated, will be removed in the next version. Use input-attrs

Events

Name Params Info
input item: Item changed Triggered after any changed in the model
change text: Text of search input Triggered after every change in the search input
update-items text: Text of search input Same as change, but respecting min-len and wait
item-clicked item: Item clicked Triggered after a click on a suggestion
item-selected item: Item selected Like @input, but only when has value
blur text: Text of search input Triggered on blur in the search input
focus text: Text of search input Triggered on focus in the search input

What about appearence?

Just overwrite their css classes. See the structure in stylus lang:

.v-autocomplete   .v-autocomplete-input-group     .v-autocomplete-input   .v-autocomplete-list     .v-autocomplete-list-item       &.v-autocomplete-item-active

Follows the css used in the DEMO:

.v-autocomplete   .v-autocomplete-input-group     .v-autocomplete-input       font-size 1.5em       padding 10px 15px       box-shadow none       border 1px solid #157977       width calc(100% - 32px)       outline none       background-color #eee     &.v-autocomplete-selected       .v-autocomplete-input         color green         background-color #f2fff2   .v-autocomplete-list     width 100%     text-align left     border none     border-top none     max-height 400px     overflow-y auto     border-bottom 1px solid #157977     .v-autocomplete-list-item       cursor pointer       background-color #fff       padding 10px       border-bottom 1px solid #157977       border-left 1px solid #157977       border-right 1px solid #157977       &:last-child         border-bottom none       &:hover         background-color #eee       abbr         opacity 0.8         font-size 0.8em         display block         font-family sans-serif

Development

$ git clone https://github.com/paliari/v-autocomplete.git $ cd v-autocomplete 

Using yarn

# install dependencies $ yarn install  # compile demo for development $ yarn dev  # open Browser and start serve in demo $ yarn demo:open  # compile dist demo $ yarn dist:demo  # compile dist $ yarn dist 

Using npm

# install dependencies $ npm install  # compile demo for development $ npm run dev  # open Browser and start serve in demo $ npm run demo:open  # compile dist demo $ npm run dist:demo  # compile dist $ npm run dist 

Authors

License

This project is licensed under MIT License


You May Also Like