TagInput

标签输入框能够将输入的内容生成标签。

设计文档(新窗口打开)

代码演示

如何引入

import { TagInput } from '@chenzy-design/svelte';

基本演示

敲击回车键后,输入内容将成为标签。标签内容如果为空串或者纯空格时,则会被过滤。

抖音

火山

西瓜视频

批量添加

可以使用 separator 设置分隔符,来实现批量输入,它的默认值为英文逗号。支持多个分隔符以 string[] 格式传入。



批量删除

可使用 showClear 设置是否支持一键删除所有标签和输入框内容。

抖音

火山

禁用

抖音

火山

西瓜视频

尺寸大小

通过 size 控制标签输入框的大小尺寸,可选:small、default、large。





不同校验状态样式

可以使用 validateStatus 设置不同校验状态的样式,它仅影响背景颜色等样式表现,可选值:default、warning、error。





前缀 / 后缀

可以通过 prefix 传入输入框前缀,通过 suffix 传入输入框后缀,可以为文本或者节点。当 prefix、suffix 传入的内容为 string 或者 Icon 时,会自动带上左右间隔;若为自定义节点,则左右间隔为 0。



Prefix




Suffix

失焦后自动创建标签

可使用 addOnBlur,设置是否在 blur 事件触发时,将当前 input 的值自动创建成 tag。

抖音

火山

西瓜视频

过滤重复标签

可使用 allowDuplicates,设置是否允许创建相同 tag,默认为 true。

抖音

火山

西瓜视频

输入限制

可使用 max 限制输入的标签数量,超出后将不允许再输入,并且触发 onExceed() 回调。可使用 maxLength 限制单个标签的最大长度,超出后将不允许再输入,并且触发 onInputExceed() 回调。

限制标签展示数量

利用 maxTagCount 可以限制展示的标签数量,超出部分将以 +N 的方式展示。使用 showRestTagsPopover 可以设置在超出 maxTagCount 后,hover +N 是否显示 Popover,并且可以在 restTagsPopoverProps 属性中配置 Popover。

抖音

火山

+1

标签受控

可使用 value 设置标签内容,并配合 onChange 实现标签内容受控。

抖音

输入受控

可使用 inputValue 设置输入框内容,并配合 onInputChange 实现输入内容受控。

回调

抖音

焦点管理

可以使用 blur() 和 focus() 方法对焦点进行管理。

抖音

火山

自定义标签渲染

可以使用 renderTagItem 自定义标签渲染,第三个参数 onClose 用于关闭对应标签。

avatar 夏可漫@semi.com

拖拽排序

将 draggable 设为 true,开启拖拽排序功能。拖拽排序下不允许添加相同 Tag,因此需要将 allowDuplicates 设置为 false。拖拽功能开启后,点击 TagInput,Tag 可拖拽。点击 TagInput 外任意区域,Tag 不可拖拽。

抖音

火山

西瓜视频

API 参考

属性说明类型默认值
addOnBlur是否在 blur 事件触发时,将当前 input 的值自动创建成 tagbooleanfalse
affixIsIconprefix/suffix 传节点时是否按图标间距渲染booleantrue
allowDuplicates是否允许添加相同 tagbooleantrue
aria-label表示该 TagInput 作用string-
ariaDescribedby关联 helpText / extraText 节点 idstring-
ariaErrormessageerror 态关联错误信息容器 idstring-
ariaLabelledby关联外部 label 元素 idstring-
ariaRequired必填语义boolean-
autoFocus初始渲染时是否自动 focusbooleanfalse
class样式类名string-
clearIcon自定义清除图标Snippet-
defaultValue初始标签string[]-
disabled是否禁用booleanfalse
draggable设置是否可拖拽booleanfalse
expandRestTagsOnClick在不可拖拽的情况下,TagInput 被点击后是否展开多余的 Tagbooleantrue
insetLabel内嵌 label(前缀位)string \| Snippet-
insetLabelId内嵌 label 的 id(关联输入)string-
inputValue当前输入框内容,配合 onInputChange 实现受控string-
max允许标签的最大数量number-
maxLength单个标签的最大长度number-
maxTagCount标签的最大展示数量,超出后将以 +N 形式展示number-
placeholder占位默认值string-
prefix前缀标签string \| Snippet-
preventScroll指示浏览器是否应滚动文档以显示新聚焦的元素,作用于组件内的 focus 方法boolean-
renderTagItem自定义标签渲染Snippet<[{ value, index, onClose }]>-
restTagsPopoverPropsPopover 的配置属性object{}
separator设置批量输入时的分隔符string \| string[],
showClear是否支持一键删除所有标签和输入内容booleanfalse
showContentTooltip当标签长度过长发生截断时,hover 标签时是否通过 Tooltip 显示全部内容boolean \| objecttrue
showRestTagsPopover当超过 maxTagCount,hover +N 时,是否通过 Popover 显示剩余内容booleantrue
size设置输入框尺寸,可选:small、large、defaultstringdefault
split自定义分隔符处理函数(value: string, separator) => string[]-
style内联样式string-
suffix后缀标签string \| Snippet-
validateStatus设置校验状态样式,可选:default、warning、errorstringdefault
value当前标签,配合 onChange 实现受控string[]-
onAdd添加标签时的回调(addedValue: string[]) => void-
onBlur输入框失去焦点时的回调(e) => void-
onChange标签变化时的回调(value: string[]) => void-
onExceed超过 max 时的回调(value: string[]) => void-
onFocus输入框获取焦点时的回调(e) => void-
onInputChange输入框内容变化时的回调(value: string) => void-
onInputExceed超过 maxLength 时的回调(value: string) => void-
onKeyDownkeydown 回调(e: KeyboardEvent) => void-
onRemove移除标签时的回调(removedValue: string, idx: number) => void-

Methods

绑定在组件实例上的方法,可以通过 bind:this 拿到实例后调用:

名称描述
blur()移出焦点
focus()获取焦点

Accessibility

ARIA

  • TagInput 支持传入 aria-label 来表示该 TagInput 作用。
  • TagInput 会依据 disabled 及 validateStatus props 来分别设置 aria-disabled、aria-invalid。
  • TagInput 的输入框和清空按钮均具有 aria-label 来表明元素作用。

设计变量

变量
默认值
用法
--cd-tag-input-border-default transparent 标签输入框描边颜色 - 默认
--cd-tag-input-border-focus var(--cd-color-focus-border) 标签输入框描边颜色 - 选中态
--cd-tag-input-border-hover transparent 标签输入框描边颜色 - 悬浮
--cd-tag-input-danger-bg-default var(--cd-color-danger-light-default) 危险标签输入框背景颜色 - 默认
--cd-tag-input-danger-bg-focus var(--cd-color-danger-light-default) 危险标签输入框背景颜色 - 选中
--cd-tag-input-danger-bg-hover var(--cd-color-danger-light-hover) 危险标签输入框背景颜色 - 悬浮
--cd-tag-input-danger-border-default var(--cd-color-danger-light-default) 危险标签输入框描边颜色 - 默认
--cd-tag-input-danger-border-focus var(--cd-color-danger) 危险标签输入框描边颜色 - 选中
--cd-tag-input-danger-border-hover var(--cd-color-danger-light-hover) 危险标签输入框描边颜色 - 悬浮
--cd-tag-input-default-bg-default var(--cd-color-fill-0) 标签输入框背景颜色 - 默认
显示第 1 条-第 10 条,共 27 条
  • 1
  • 2
  • 3