anjaneyasivan / V Suggestions
Vue component for suggestions with custom templates
Stars: ✭ 42
Projects that are alternatives of or similar to V Suggestions
React Input Tags
React component for tagging inputs.
Stars: ✭ 10 (-76.19%)
Mutual labels: autocomplete, autosuggest
react-abstract-autocomplete
Bring-Your-Own-UI autocomplete / mentions component for React.
Stars: ✭ 15 (-64.29%)
Mutual labels: autocomplete, autosuggest
React Selectrix
A beautiful, materialized and flexible React Select control
Stars: ✭ 166 (+295.24%)
Mutual labels: autocomplete, autosuggest
Autosuggest Trie
Minimalistic trie implementation for autosuggest and autocomplete components
Stars: ✭ 22 (-47.62%)
Mutual labels: autocomplete, autosuggest
Zsh Autosuggestions
Fish-like autosuggestions for zsh
Stars: ✭ 19,697 (+46797.62%)
Mutual labels: autocomplete, autosuggest
React Autowhatever
Accessible rendering layer for Autosuggest and Autocomplete components
Stars: ✭ 146 (+247.62%)
Mutual labels: autocomplete, autosuggest
addressr
Free Australian Address Validation, Search and Autocomplete
Stars: ✭ 46 (+9.52%)
Mutual labels: autocomplete, autosuggest
React Input Enhancements
Set of enhancements for input control
Stars: ✭ 1,375 (+3173.81%)
Mutual labels: autocomplete, autosuggest
Vue Simple Suggest
Feature-rich autocomplete component for Vue.js
Stars: ✭ 324 (+671.43%)
Mutual labels: autocomplete, autosuggest
codemirror-autosuggest
CodeMirror autosuggest addon
Stars: ✭ 44 (+4.76%)
Mutual labels: autocomplete, autosuggest
Downshift
🏎 A set of primitives to build simple, flexible, WAI-ARIA compliant React autocomplete, combobox or select dropdown components.
Stars: ✭ 10,183 (+24145.24%)
Mutual labels: autocomplete, autosuggest
Vue Autosuggest
🔍 Vue autosuggest component.
Stars: ✭ 492 (+1071.43%)
Mutual labels: autocomplete, autosuggest
Autosuggest Highlight
Utilities for highlighting text in autosuggest and autocomplete components
Stars: ✭ 176 (+319.05%)
Mutual labels: autocomplete, autosuggest
fast-autocomplete
Fast Autocomplete: When Elastcsearch suggestions are not fast and flexible enough
Stars: ✭ 201 (+378.57%)
Mutual labels: autocomplete, autosuggest
Jquery Autocomplete
Ajax Autocomplete for jQuery allows you to easily create autocomplete/autosuggest boxes for text input fields
Stars: ✭ 3,461 (+8140.48%)
Mutual labels: autocomplete, autosuggest
React Autosuggest
WAI-ARIA compliant React autosuggest component
Stars: ✭ 5,773 (+13645.24%)
Mutual labels: autocomplete, autosuggest
Angular Auto Complete
AngularJS auto complete plugin
Stars: ✭ 27 (-35.71%)
Mutual labels: autocomplete
Bootstrap3 autocomplete input
Autocomplete/typeahead input with Bootstrap 3 and Rails 4. Works with SimpleForm
Stars: ✭ 25 (-40.48%)
Mutual labels: autocomplete
V Tag Suggestion
A simple tag component with typeahead
Stars: ✭ 40 (-4.76%)
Mutual labels: autocomplete
Autoprompt
Auto complete command prompts for C# .Net console apps
Stars: ✭ 22 (-47.62%)
Mutual labels: autocomplete
v-suggestions
suggestions with custom templates
Installation
# npm
npm install v-suggestions
# yarn
yarn add v-suggestions
import Suggestions from 'v-suggestions'
import 'v-suggestions/dist/v-suggestions.css' // you can import the stylesheets also (optional)
Vue.component('suggestions', Suggestions)
Component supports Vue 2.1.0+ version. v-suggetions uses slot-scope based templates for customizing suggestions.
Demo
Online demo is also available!
User Guide
Property | Type | Description |
---|---|---|
v-model | String | an empty or predefined string as search query |
onInputChange | Function | When the search query is changed, this function will be trigerred. The function should return an array of objects for the Component to render. It can also return a Promise instead of a set of objects. AJAX calls or delays can be addressed. |
onItemSelected | Function (optional) | When user selects (clicks or presses enter on an item), this function will be called |
options | Object | A set of options for customization of the component |
options.debounce | Integer | A delay in milliseconds between each "onInputChange" events. If unspecified, it will be ignored. Comes in handy for ajax requests. See examples. |
options.placeholder | string | A placeholder string for search (optional) |
options.inputClass | string | Override classnames given to the input text element (optional) |
Simple Example
<suggestions
v-model="query"
:options="options"
:onInputChange="onCountryInputChange">
export default {
data () {
let countries = ['Afghanistan', 'Åland Islands', 'Albania', 'Algeria', 'American Samoa', 'AndorrA', 'Angola', 'Anguilla', 'Antarctica', 'Antigua and Barbuda', 'Argentina', 'Armenia', 'Aruba', 'Australia', 'Austria', 'Azerbaijan', 'Bahamas', 'Bahrain', 'Bangladesh', 'Barbados', 'Belarus', 'Belgium', 'Belize']
return {
query: '',
countries: countries,
selectedCountry: null,
options: {}
}
},
methods: {
onCountryInputChange (query) {
if (query.trim().length === 0) {
return null
}
// return the matching countries as an array
return this.countries.filter((country) => {
return country.toLowerCase().includes(query.toLowerCase())
})
},
onCountrySelected (item) {
this.selectedCountry = item
},
onSearchItemSelected (item) {
this.selectedSearchItem = item
}
}
}
Ajax based results with custom template (Duckduckgo API)
<suggestions
v-model="searchQuery"
:options="searchOptions"
:onItemSelected="onSearchItemSelected"
:onInputChange="onInputChange">
<div slot="item" slot-scope="props" class="single-item">
<template v-if="props.item.Icon && props.item.Icon.URL">
<div class="image-wrap" :style="{'backgroundImage': 'url('+ props.item.Icon.URL + ')' }"></div>
</template>
<span class="name">{{props.item.Text}}</span>
</div>
</suggestions>
export default {
data () {
return {
searchQuery: '',
selectedSearchItem: null,
options: {}
}
},
methods: {
onInputChange (query) {
if (query.trim().length === 0) {
return null
}
const url = `http://api.duckduckgo.com/?q=${query}&format=json&pretty=1`
return new Promise(resolve => {
axios.get(url).then(response => {
const items = []
response.data.RelatedTopics.forEach((item) => {
if (item.Text) {
items.push(item)
} else if (item.Topics && item.Topics.length > 0) {
item.Topics.forEach(topic => {
items.push(topic)
})
}
})
resolve(items)
})
})
},
onSearchItemSelected (item) {
this.selectedSearchItem = item
}
}
}
Custom key events
You can pass the @keyDown
event to handle custom key events, e.g. hitting enter when no item was selected.
<suggestions
v-model="searchQuery"
:options="searchOptions"
:onItemSelected="onSearchItemSelected"
:onInputChange="onInputChange"
@keyDown="onInputKeyDown"
>
</suggestions>
Note that the project description data, including the texts, logos, images, and/or trademarks,
for each open source project belongs to its rightful owner.
If you wish to add or remove any projects, please contact us at [email protected].