All Projects → shentao → Vue Multiselect

shentao / Vue Multiselect

Licence: mit
Universal select/multiselect/tagging component for Vue.js

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
Vue
7211 projects

Projects that are alternatives of or similar to Vue Multiselect

Vue Treeselect
A multi-select component with nested options support for Vue.js
Stars: ✭ 2,347 (-60.8%)
Mutual labels:  component, select, dropdown
React Select Search
⚡️ Lightweight select component for React
Stars: ✭ 379 (-93.67%)
Mutual labels:  component, select, dropdown
Ngx Select Dropdown
Custom Dropdown for Angular 4+ with multiple and single selection options
Stars: ✭ 91 (-98.48%)
Mutual labels:  component, select, dropdown
vue-single-select
single select dropdown with autocomplete
Stars: ✭ 43 (-99.28%)
Mutual labels:  select, dropdown
react-functional-select
Micro-sized & micro-optimized select component for React.js
Stars: ✭ 165 (-97.24%)
Mutual labels:  select, dropdown
frontal
An Angular select/dropdown component
Stars: ✭ 20 (-99.67%)
Mutual labels:  select, dropdown
insect
🛠 Highly customisable, minimalistic input x select field for React.
Stars: ✭ 33 (-99.45%)
Mutual labels:  select, dropdown
React Click Outside
Higher Order Component that provides click outside functionality
Stars: ✭ 266 (-95.56%)
Mutual labels:  component, dropdown
mithril-select
Custom Select Component for Mithril.js
Stars: ✭ 14 (-99.77%)
Mutual labels:  select, dropdown
Ngx Treeview
An Angular treeview component with checkbox
Stars: ✭ 312 (-94.79%)
Mutual labels:  component, dropdown
React Dropdown Tree Select
Lightweight, accessible, customizable and fast Dropdown Tree Select component for React
Stars: ✭ 345 (-94.24%)
Mutual labels:  select, dropdown
Slim Select
Slim advanced select dropdown
Stars: ✭ 517 (-91.37%)
Mutual labels:  select, dropdown
react-native-select-pro
React Native dropdown (select) component developed by Mobile Reality
Stars: ✭ 79 (-98.68%)
Mutual labels:  select, dropdown
react-native-select-dropdown
react-native-select-dropdown is a highly customized dropdown | select | picker | menu for react native that works for andriod and iOS platforms.
Stars: ✭ 156 (-97.39%)
Mutual labels:  select, dropdown
hierarchy-select
Hierarchy Select jQuery Plugin for Twitter Bootstrap
Stars: ✭ 40 (-99.33%)
Mutual labels:  select, dropdown
react-multi-select-component
Lightweight (~5KB gzipped) multiple selection dropdown component
Stars: ✭ 279 (-95.34%)
Mutual labels:  select, dropdown
Material Ui Superselectfield
multiselection autocomplete dropdown component for Material-UI
Stars: ✭ 260 (-95.66%)
Mutual labels:  select, dropdown
Ngx Ui
🚀 Style and Component Library for Angular
Stars: ✭ 534 (-91.08%)
Mutual labels:  component, select
react-native-autocomplete-dropdown
Dropdown Item picker with search and autocomplete (typeahead) functionality for react native
Stars: ✭ 87 (-98.55%)
Mutual labels:  select, dropdown
choc-autocomplete
🏇 Autocomplete Component Package for Chakra UI
Stars: ✭ 286 (-95.22%)
Mutual labels:  select, dropdown

vue-multiselect Build StatusCodecov branchnpm

Probably the most complete selecting solution for Vue.js 2.0, without jQuery.

Vue 3.0 Support

For Vue 3.0 compatible version see next branch.

Vue-Multiselect Screen

Documentation

Visit: vue-multiselect.js.org

Sponsors

Gold

Vuejs Amsterdam

Vue - The Road To Enterprise

Suade Labs

Silver

Storyblok

Bronze

Vue Mastery logo

Features & characteristics:

  • NO dependencies
  • Single select
  • Multiple select
  • Tagging
  • Dropdowns
  • Filtering
  • Search with suggestions
  • Logic split into mixins
  • Basic component and support for custom components
  • V-model support
  • Vuex support
  • Async options support
  • > 95% test coverage
  • Fully configurable (see props list below)

Breaking changes:

  • Instead of Vue.partial for custom option templates you can use a custom render function.
  • The :key props has changed to :track-by, due to conflicts with Vue 2.0.
  • Support for v-model
  • @update has changed to @input to also work with v-model
  • :selected has changed to :value for the same reason
  • Browserify users: if you wish to import .vue files, please add vueify transform.

Install & basic usage

npm install vue-multiselect
<template>
  <div>
    <multiselect
      v-model="selected"
      :options="options">
    </multiselect>
  </div>
</template>

<script>
  import Multiselect from 'vue-multiselect'
  export default {
    components: { Multiselect },
    data () {
      return {
        selected: null,
        options: ['list', 'of', 'options']
      }
    }
  }
</script>

<style src="vue-multiselect/dist/vue-multiselect.min.css"></style>

JSFiddle

Example JSFiddle – Use this for issue reproduction.

Examples

in jade-lang/pug-lang

Single select / dropdown

multiselect(
  :value="value",
  :options="source",
  :searchable="false",
  :close-on-select="false",
  :allow-empty="false",
  @input="updateSelected",
  label="name",
  placeholder="Select one",
  track-by="name"
)

Single select with search

multiselect(
  v-model="value",
  :options="source",
  :close-on-select="true",
  :clear-on-select="false",
  placeholder="Select one",
  label="name",
  track-by="name"
)

Multiple select with search

multiselect(
  v-model="multiValue",
  :options="source",
  :multiple="true",
  :close-on-select="true",
  placeholder="Pick some",
  label="name",
  track-by="name"
)

Tagging

with @tag event

multiselect(
  v-model="taggingSelected",
  :options="taggingOptions",
  :multiple="true",
  :taggable="true",
  @tag="addTag",
  tag-placeholder="Add this as new tag",
  placeholder="Type to search or add tag",
  label="name",
  track-by="code"
)
addTag (newTag) {
  const tag = {
    name: newTag,
    code: newTag.substring(0, 2) + Math.floor((Math.random() * 10000000))
  }
  this.taggingOptions.push(tag)
  this.taggingSelected.push(tag)
},

Asynchronous dropdown

multiselect(
  v-model="selectedCountries",
  :options="countries",
  :multiple="multiple",
  :searchable="searchable",
  @search-change="asyncFind",
  placeholder="Type to search",
  label="name"
  track-by="code"
)
  span(slot="noResult").
    Oops! No elements found. Consider changing the search query.
methods: {
  asyncFind (query) {
    this.countries = findService(query)
  }
}

Contributing

# serve with hot reload at localhost:8080
npm run dev

# distribution build with minification
npm run bundle

# build the documentation into docs
npm run docs

# run unit tests
npm run test

# run unit tests watch
npm run unit

For detailed explanation on how things work, checkout the guide and docs for vue-loader.

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].