v-autocomplete
v1.8.2
Published
Autocomplete component for Vue.js
Downloads
11,082
Readme
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
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