Skip to content

pcvg/vue-tags-input

 
 

Repository files navigation

vue-tags-input

A tags input component for Vue 3 with autocompletion, custom validation, templating and much more

Forked from @johmun/vue-tags-input, which you should use instead if your project is on Vue 2.

Demo & Docs (for the original version)

Features

  • No dependencies
  • Custom validation rules
  • Hooks: Before adding, Before deleting ...
  • Edit tags after creation
  • Fast setup
  • Works with Vuex
  • Small size: 34kb minified (css included) | gzipped 9kb
  • Autocompletion
  • Many customization options
  • Own templates
  • Delete tags on backspace
  • Add tags on paste
  • Examples & Docs
  • Drag and Drop

Install

NPM

npm install @sipec/vue3-tags-input

CDN

<script src="https://unpkg.com/@sipec/vue3-tags-input/dist/vue-tags-input.js"></script>

Usage

<template>
  <div>
    <vue-tags-input
      v-model="tag"
      :tags="tags"
      @tags-changed="newTags => tags = newTags"
    />
  </div>
</template>
<script>
import VueTagsInput from "@sipec/vue3-tags-input";

export default {
  components: {
    VueTagsInput,
  },
  data() {
    return {
      tag: '',
      tags: [],
    };
  },
};
</script>

Usage with draggable

Draggable is disabled by default. Set prop :is-draggable to true to enable it. You can also set :draggable-handle to true to enable handle which can be styled with css class .handle. Classes for ghost-class and drag-class are .ghost-tag and .drag-tag.

On drop tag-order-changed is emitted with array of tags in new order. Use this array to update your tags to save the new order.

<template>
  <div>
    <vue-tags-input
      v-model="tag"
      :tags="tags"
      :is-draggable="true"
      @tags-changed="newTags => tags = newTags"
      @tag-order-changed="newTags => tags = newTags"
    />
  </div>
</template>

Migration From Vue 2

This version is faithful to the original spec. The only thing you'll have to change is replacing any usages of tags.sync with vmodel:tags in the props

License

MIT

Copyright (c) 2019 Johannes Munari

Packages

No packages published

Languages

  • JavaScript 79.2%
  • Vue 17.2%
  • SCSS 3.6%