Vue-multiselect

Example fiddle for issue reproduction usage

by Damian Dulisz

HTML

<script src="https://unpkg.com/[email protected]/dist/vue-multiselect.min.js"></script>
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/vue-multiselect.min.css">
<div id="app">
  <multiselect 
    :class="{ 'is-danger': !value.length }"
    v-model="value" 
    :options="options"
    :multiple="false"
    :taggable="true"
    track-by="library"
    @tag="selectNewValue"
    :custom-label="customLabel"
    :preserve-search="true"
    >
  </multiselect>
  <pre>{{ value }}</pre>
</div>

CSS

* {
  font-family: 'Lato', 'Avenir', sans-serif;
}

.is-danger .multiselect__tags {
  border-color: red;
}

Babel + JSX

new Vue({
	components: {
  	Multiselect: window.VueMultiselect.default
	},
	data: {
  	value: { language: 'JavaScript', library: 'Vue-Multiselect' },
  	options: [
    	{	language: 'JavaScript', library: 'Vue.js' },
      { language: 'JavaScript', library: 'Vue-Multiselect' },
      { language: 'JavaScript', library: 'Vuelidate' }
    ]
	},
  methods: {
  	customLabel (option) {
      return `${option.library} - ${option.language}`
    },
    selectNewValue (text) {
    	const newValue = { language: 'Custom', library: text }
    	this.value = newValue
      this.options.push(newValue)
    }
  }
}).$mount('#app')