组件
标签输入 Tags Input
TagsInput:标签输入。一个字段容器中,标签平时显示为低调墨色,编辑时只轻微提升色调。部件:Root、Label、Control、Input、ClearTrigger、Item、ItemPreview、ItemText、ItemInput、ItemDeleteTrigger、HiddenInput、Context。
#基础用法
<script setup lang="ts">
import { TagsInput } from "@bysages/vue";
</script>
<template>
<TagsInput.Root :default-value="['Qinghua', 'Celadon']">
<TagsInput.Label>Pigments</TagsInput.Label>
<TagsInput.Control>
<TagsInput.Context v-slot="{ value }">
<TagsInput.Item v-for="(tag, index) in value" :key="index" :index="index" :value="tag">
<TagsInput.ItemPreview>
<TagsInput.ItemText>{{ tag }}</TagsInput.ItemText>
<TagsInput.ItemDeleteTrigger
><svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.75"
aria-hidden="true"
>
<path d="M6 6l12 12M18 6 6 18" /></svg
></TagsInput.ItemDeleteTrigger>
</TagsInput.ItemPreview>
<TagsInput.ItemInput />
</TagsInput.Item>
</TagsInput.Context>
<TagsInput.Input placeholder="Add pigment" />
<TagsInput.ClearTrigger
><svg
width="14"
height="14"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="1.75"
aria-hidden="true"
>
<path d="M6 6l12 12M18 6 6 18" /></svg
></TagsInput.ClearTrigger>
</TagsInput.Control>
<TagsInput.HiddenInput />
</TagsInput.Root>
</template>
#属性
#ClearTrigger
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#Control
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#HiddenInput
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#Input
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#ItemContext
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#ItemDeleteTrigger
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#ItemInput
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#ItemPreview
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#ItemText
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#Item
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
disabled | boolean | undefined | — | |
index | string | number | — | |
value | string | — |
#Label
纯造型的部件——自身没有属性,沿用部件结构的共享样式。
#Root
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
size | String as PropType<"sm" | "md" | "lg"> | "md" | 标签输入框静止状态的高度档位 |
addOnPaste | boolean | false | 粘贴内容时是否添加标签 |
allowDuplicates | boolean | false | 是否允许重复标签 |
allowOverflow | boolean | 是否允许标签数量超过 max;超过后根元素会附加 data-invalid | |
autoFocus | boolean | input 是否自动聚焦 | |
blurBehavior | 'clear' | 'add' | 标签输入失焦时的行为:add 把 input 值添加为新标签,clear 清空 input 值 | |
defaultInputValue | string | 标签输入渲染时的初始值;不需要控制输入值时使用 | |
defaultValue | string[] | 标签渲染时的初始值;不需要控制标签值时使用 | |
delimiter | string | RegExp | "," | 触发添加标签的按键,也是粘贴时拆分标签的字符 |
disabled | boolean | 标签输入是否禁用 | |
editable | boolean | true | 标签创建后能否按 Enter 或双击编辑 |
form | string | 底层 input 元素关联的表单 | |
id | string | 组件内部状态机的唯一标识 | |
ids | Partial<{ root: string; input: string; hiddenInput: string; clearBtn: string; label: string; control: string; item(opts: tagsInput.ItemProps): string; itemDeleteTrigger(opts: tagsInput.ItemProps): string; itemInput(opts: tagsInput.ItemProps): string; }> | 标签输入各元素的 id,适合组合使用 | |
inputValue | string | 标签输入的受控值 | |
invalid | boolean | 标签输入是否无效 | |
max | number | Infinity | 标签数量上限 |
maxLength | number | input 最大长度 | |
modelValue | string[] | 标签输入的 v-model 值 | |
name | string | input 的 name 属性,用于表单提交 | |
placeholder | string | 没有标签时 input 的占位文本 | |
readOnly | boolean | 标签输入是否只读 | |
required | boolean | 标签输入是否必填 | |
sanitizeValue | (value: string) => string | 添加标签前清理标签值的函数 | |
translations | tagsInput.IntlTranslations | 无障碍元素及其状态的本地化文案 | |
validate | (details: tagsInput.ValidateArgs) => boolean | 返回能否添加标签的布尔值,可防止重复或无效标签值 |