---
url: "https://vueda.dev/v3/reference/api/vue/TagsInput.md"
title: "TagsInput"
---

# TagsInput

## Overview

Root of a tags input control allowing users to add and remove tag values.

Theme entry: [TagsInput](/v3/reference/theming/keys/TagsInput.md)

## Props

| Name | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| <span id="prop-themeOverride">themeOverride</span> | `Object` |  | `null` | A partial ThemeObject keyed by component name, merged over this component's theme and provided to descendants. |
| <span id="prop-class">class</span> | `import('vue').HTMLAttributes['class']` |  | `undefined` | Additional CSS classes to apply to the root element. |
| <span id="prop-modelValue">modelValue</span> | `array` |  | `undefined` | The controlled value of the tags input. Can be bound with v-model. |
| <span id="prop-defaultValue">defaultValue</span> | `array` |  | `undefined` | The initial value when uncontrolled. |
| <span id="prop-addOnPaste">addOnPaste</span> | `boolean` |  | `undefined` | When true, allow adding tags on paste. Works with the delimiter prop. |
| <span id="prop-addOnTab">addOnTab</span> | `boolean` |  | `undefined` | When true, allow adding tags on Tab keydown. |
| <span id="prop-addOnBlur">addOnBlur</span> | `boolean` |  | `undefined` | When true, allow adding tags on input blur. |
| <span id="prop-duplicate">duplicate</span> | `boolean` |  | `undefined` | When true, allow duplicated tags. |
| <span id="prop-disabled">disabled</span> | `boolean` |  | `undefined` | When true, prevents user interaction. |
| <span id="prop-delimiter">delimiter</span> | `string\|object` |  | `undefined` | The character or regular expression to trigger addition of a new tag. Also used to split tags on paste. |
| <span id="prop-dir">dir</span> | `string` |  | `undefined` | The reading direction of the tags input. |
| <span id="prop-convertValue">convertValue</span> | `func` |  | `undefined` | Converts an entered string to the tag value, before the duplicate check runs. |
| <span id="prop-max">max</span> | `number` |  | `undefined` | Maximum number of tags. |
| <span id="prop-name">name</span> | `string` |  | `undefined` | The name submitted with the form. |
| <span id="prop-required">required</span> | `boolean` |  | `undefined` | When true, the field is required. |
| <span id="prop-as">as</span> | `string\|object` |  | `undefined` | The HTML element or component to render as. |
| <span id="prop-asChild">asChild</span> | `boolean` |  | `undefined` | Whether to render as a child element. |

## Slots

### `default` {#slot-default}

Scoped slot.

## Events

| Name | Description |
| --- | --- |
| `update:modelValue` | Emitted when the value changes. |
| `invalid` | Emitted when an invalid tag entry is attempted. |
| `addTag` | Emitted when a new tag is added. |
| `removeTag` | Emitted when a tag is removed. |

[Full event reference](/v3/reference/api/vue/TagsInput/events.md)

## Source

`client/lib/controls/tags-input/TagsInput.vue`
