From 154f3ce130144802d9cefc76fa3b0b7112ee0bbc Mon Sep 17 00:00:00 2001 From: rylanlin Date: Wed, 27 May 2026 18:30:48 +0800 Subject: [PATCH] feat(TagInput): support `tagDisplay` --- db/TDesign.db | Bin 1142784 -> 1142784 bytes .../components/tag-input/tag-input.en-US.md | 57 +++++++++--------- .../components/tag-input/tag-input.md | 1 + .../packages/components/tag-input/type.ts | 8 ++- .../packages/components/tag-input/props.ts | 4 ++ .../components/tag-input/tag-input.en-US.md | 55 ++++++++--------- .../components/tag-input/tag-input.md | 1 + .../packages/components/tag-input/type.ts | 6 +- .../tdesign-vue/src/tag-input/props.ts | 4 ++ .../src/tag-input/tag-input.en-US.md | 55 ++++++++--------- .../tdesign-vue/src/tag-input/tag-input.md | 1 + .../tdesign-vue/src/tag-input/type.ts | 6 +- packages/scripts/api.json | 39 ++++++++++++ 13 files changed, 151 insertions(+), 86 deletions(-) diff --git a/db/TDesign.db b/db/TDesign.db index 74909f8b5e0402a03458837fff471337d0eeaf24..d00d13bbbc93f90705d16aaaf8014b3fdc2d4da4 100644 GIT binary patch delta 346 zcmZp8;M(xOb%Hcw+C&*=#2(>;K0Pht2TX?lYrIs4Nd~#oa{;& zw*xr%uT4+r=U*^=osU2bTb9_d&w_gG2EGE@4SWT!2nn%sm@)9X^B(6}&;5YIjI)dD z-*&|SZUv6*W*LH6OiT<3)6D_}W9l2@7U@Z`Fv@Z&GV=0zUt|^SxP}%d@Fl zp6s3cqO0k7(@rA;BQsqCQ(Yr-1w#WXBQq;gOH3hl%Mic(lvJDPhOB}T?A8jIc`2zC f(-)d@OHW_w&n7(Gz?FrY#af}(Zu^65K?N27a3yia delta 171 zcmV;c095~g;6;GoMUWc-Wsw|10cC+;g3;1BGA&g~54B(rq(1~U0=NK|9)b@nw=_TyKmwPzLJ&N+utE@52?s1_ z+fWD()|X(951^N>Ob~pR@QM!#hcrzPw=_)=&=L>^2sQu@M-9geuM6M^HVKNiAy5k< Z2)8z95o!Vg0YbMnQ4u}?x8Q3LAO!2lHTM7j diff --git a/packages/products/tdesign-react/packages/components/tag-input/tag-input.en-US.md b/packages/products/tdesign-react/packages/components/tag-input/tag-input.en-US.md index aafeb8378..d9ddb8e3e 100644 --- a/packages/products/tdesign-react/packages/components/tag-input/tag-input.en-US.md +++ b/packages/products/tdesign-react/packages/components/tag-input/tag-input.en-US.md @@ -7,42 +7,43 @@ name | type | default | description | required -- | -- | -- | -- | -- className | String | - | className of component | N -style | Object | - | CSS(Cascading Style Sheets),Typescript:`React.CSSProperties` | N +style | Object | - | CSS(Cascading Style Sheets),Typescript: `React.CSSProperties` | N autoWidth | Boolean | false | \- | N borderless | Boolean | false | \- | N clearable | Boolean | false | \- | N -collapsedItems | TElement | - | Typescript:`TNode<{ value: TagInputValue; collapsedSelectedItems: TagInputValue; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +collapsedItems | TElement | - | Typescript: `TNode<{ value: TagInputValue; collapsedSelectedItems: TagInputValue; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N disabled | Boolean | undefined | \- | N dragSort | Boolean | false | \- | N excessTagsDisplayType | String | break-line | options: scroll/break-line | N -inputProps | Object | - | Typescript:`InputProps`,[Input API Documents](./input?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N -inputValue | String / Number | '' | input value。Typescript:`string` | N -defaultInputValue | String / Number | '' | input value。uncontrolled property。Typescript:`string` | N -label | TNode | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +inputProps | Object | - | Typescript: `InputProps`,[Input API Documents](./input?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N +inputValue | String / Number | '' | input value。Typescript: `string` | N +defaultInputValue | String / Number | '' | input value。uncontrolled property。Typescript: `string` | N +label | TNode | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N max | Number | - | max tag number | N minCollapsedNum | Number | 0 | \- | N placeholder | String | undefined | placeholder description | N -prefixIcon | TElement | - | Typescript:`TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +prefixIcon | TElement | - | Typescript: `TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N readonly | Boolean | undefined | \- | N -size | String | medium | options: small/medium/large。Typescript:`SizeEnum`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +size | String | medium | options: small/medium/large。Typescript: `SizeEnum`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N status | String | - | options: default/success/warning/error | N -suffix | TNode | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N -suffixIcon | TElement | - | Typescript:`TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N -tag | TNode | - | Typescript:`string \| TNode<{ value: string \| number }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N -tagProps | Object | - | Typescript:`TagProps`,[Tag API Documents](./tag?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N -tips | TNode | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N -value | Array | [] | value。Typescript:`TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N -defaultValue | Array | [] | value。uncontrolled property。Typescript:`TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N -valueDisplay | TNode | - | Typescript:`string \| TNode<{ value: TagInputValue; onClose: (index: number, item?: any) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N -onBlur | Function | | Typescript:`(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on blur | N -onChange | Function | | Typescript:`(value: TagInputValue, context: TagInputChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputChangeContext { trigger: TagInputTriggerSource; index?: number; item?: string \| number; e?: MouseEvent \| KeyboardEvent }`

`type TagInputTriggerSource = 'enter' \| 'tag-remove' \| 'backspace' \| 'clear'`
| N -onClear | Function | | Typescript:`(context: { e: MouseEvent }) => void`
| N -onClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
| N -onDragSort | Function | | Typescript:`(context: TagInputDragSortContext) => void`
trigger on drag sort。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputDragSortContext { newTags: TagInputValue; currentIndex: number; current: string \| number; targetIndex: number; target: string \| number }`
| N -onEnter | Function | | Typescript:`(value: TagInputValue, context: { e: KeyboardEvent; inputValue: string }) => void`
| N -onFocus | Function | | Typescript:`(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on focus | N -onInputChange | Function | | Typescript:`(value: string, context?: InputValueChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface InputValueChangeContext { e?: InputEvent \| MouseEvent \| CompositionEvent \| KeyboardEvent; trigger: 'input' \| 'clear' \| 'enter' \| 'blur' }`
| N -onMouseenter | Function | | Typescript:`(context: { e: MouseEvent }) => void`
trigger on mouseenter | N -onMouseleave | Function | | Typescript:`(context: { e: MouseEvent }) => void`
trigger on mouseleave | N -onPaste | Function | | Typescript:`(context: { e: ClipboardEvent; pasteValue: string }) => void`
| N -onRemove | Function | | Typescript:`(context: TagInputRemoveContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputRemoveContext { value: TagInputValue; index: number; item: string \| number; e?: MouseEvent \| KeyboardEvent; trigger: TagInputRemoveTrigger }`

`type TagInputRemoveTrigger = 'tag-remove' \| 'backspace'`
| N +suffix | TNode | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +suffixIcon | TElement | - | Typescript: `TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +tag | TNode | - | Typescript: `string \| TNode<{ value: string \| number }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +tagDisplay | Function | - | Typescript: `TNode<{ value: string \| number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +tagProps | Object | - | Typescript: `TagProps`,[Tag API Documents](./tag?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N +tips | TNode | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +value | Array | [] | value。Typescript: `TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N +defaultValue | Array | [] | value。uncontrolled property。Typescript: `TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N +valueDisplay | TNode | - | Typescript: `string \| TNode<{ value: TagInputValue; onClose: (index: number, item?: any) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +onBlur | Function | | Typescript: `(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on blur | N +onChange | Function | | Typescript: `(value: TagInputValue, context: TagInputChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputChangeContext { trigger: TagInputTriggerSource; index?: number; item?: string \| number; e?: MouseEvent \| KeyboardEvent }`

`type TagInputTriggerSource = 'enter' \| 'tag-remove' \| 'backspace' \| 'clear'`
| N +onClear | Function | | Typescript: `(context: { e: MouseEvent }) => void`
| N +onClick | Function | | Typescript: `(context: { e: MouseEvent }) => void`
| N +onDragSort | Function | | Typescript: `(context: TagInputDragSortContext) => void`
trigger on drag sort。[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputDragSortContext { newTags: TagInputValue; currentIndex: number; current: string \| number; targetIndex: number; target: string \| number }`
| N +onEnter | Function | | Typescript: `(value: TagInputValue, context: { e: KeyboardEvent; inputValue: string }) => void`
| N +onFocus | Function | | Typescript: `(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on focus | N +onInputChange | Function | | Typescript: `(value: string, context?: InputValueChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface InputValueChangeContext { e?: InputEvent \| MouseEvent \| CompositionEvent \| KeyboardEvent; trigger: 'input' \| 'clear' \| 'enter' \| 'blur' }`
| N +onMouseenter | Function | | Typescript: `(context: { e: MouseEvent }) => void`
trigger on mouseenter | N +onMouseleave | Function | | Typescript: `(context: { e: MouseEvent }) => void`
trigger on mouseleave | N +onPaste | Function | | Typescript: `(context: { e: ClipboardEvent; pasteValue: string }) => void`
| N +onRemove | Function | | Typescript: `(context: TagInputRemoveContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputRemoveContext { value: TagInputValue; index: number; item: string \| number; e?: MouseEvent \| KeyboardEvent; trigger: TagInputRemoveTrigger }`

`type TagInputRemoveTrigger = 'tag-remove' \| 'backspace'`
| N diff --git a/packages/products/tdesign-react/packages/components/tag-input/tag-input.md b/packages/products/tdesign-react/packages/components/tag-input/tag-input.md index 309cff2dc..ff6cea483 100644 --- a/packages/products/tdesign-react/packages/components/tag-input/tag-input.md +++ b/packages/products/tdesign-react/packages/components/tag-input/tag-input.md @@ -29,6 +29,7 @@ status | String | - | 输入框状态。可选项:default/success/warning/erro suffix | TNode | - | 后置图标前的后置内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N suffixIcon | TElement | - | 组件后置图标。TS 类型:`TNode`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N tag | TNode | - | 自定义标签的内部内容,每一个标签的当前值。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签。TS 类型:`string \| TNode<{ value: string \| number }>`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N +tagDisplay | Function | - | 自定义单个标签的整体节点。TS 类型:`TNode<{ value: string \| number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N tagProps | Object | - | 透传 Tag 组件全部属性。TS 类型:`TagProps`,[Tag API Documents](./tag?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N tips | TNode | - | 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/common.ts) | N value | Array | [] | 值。TS 类型:`TagInputValue` `type TagInputValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-react/blob/develop/packages/components/tag-input/type.ts) | N diff --git a/packages/products/tdesign-react/packages/components/tag-input/type.ts b/packages/products/tdesign-react/packages/components/tag-input/type.ts index cd5712dce..235aa6a05 100644 --- a/packages/products/tdesign-react/packages/components/tag-input/type.ts +++ b/packages/products/tdesign-react/packages/components/tag-input/type.ts @@ -6,8 +6,8 @@ import { InputProps } from '../input'; import { TagProps } from '../tag'; -import { TNode, TElement, SizeEnum } from '../common'; -import { MouseEvent, KeyboardEvent, ClipboardEvent, FocusEvent, FormEvent, CompositionEvent } from 'react'; +import type { TNode, TElement, SizeEnum } from '../common'; +import type { MouseEvent, KeyboardEvent, ClipboardEvent, FocusEvent, FormEvent, CompositionEvent } from 'react'; export interface TdTagInputProps { /** @@ -108,6 +108,10 @@ export interface TdTagInputProps { * 自定义标签的内部内容,每一个标签的当前值。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签 */ tag?: string | TNode<{ value: string | number }>; + /** + * 自定义单个标签的整体节点 + */ + tagDisplay?: TNode<{ value: string | number; index: number; onClose: (context?: { e?: MouseEvent }) => void }>; /** * 透传 Tag 组件全部属性 */ diff --git a/packages/products/tdesign-vue-next/packages/components/tag-input/props.ts b/packages/products/tdesign-vue-next/packages/components/tag-input/props.ts index 33e8ff5f7..e57391e85 100644 --- a/packages/products/tdesign-vue-next/packages/components/tag-input/props.ts +++ b/packages/products/tdesign-vue-next/packages/components/tag-input/props.ts @@ -104,6 +104,10 @@ export default { tag: { type: [String, Function] as PropType, }, + /** 自定义单个标签的整体节点 */ + tagDisplay: { + type: Function as PropType, + }, /** 透传 Tag 组件全部属性 */ tagProps: { type: Object as PropType, diff --git a/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.en-US.md b/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.en-US.md index e92282b53..d470e5d5d 100644 --- a/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.en-US.md +++ b/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.en-US.md @@ -9,41 +9,42 @@ name | type | default | description | required autoWidth | Boolean | false | \- | N borderless | Boolean | false | \- | N clearable | Boolean | false | \- | N -collapsedItems | Slot / Function | - | Typescript:`TNode<{ value: TagInputValue; collapsedSelectedItems: TagInputValue; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +collapsedItems | Slot / Function | - | Typescript: `TNode<{ value: TagInputValue; collapsedSelectedItems: TagInputValue; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N disabled | Boolean | undefined | \- | N dragSort | Boolean | false | \- | N excessTagsDisplayType | String | break-line | options: scroll/break-line | N -inputProps | Object | - | Typescript:`InputProps`,[Input API Documents](./input?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N -inputValue | String / Number | '' | input value。`v-model:inputValue` is supported。Typescript:`string` | N -defaultInputValue | String / Number | '' | input value。uncontrolled property。Typescript:`string` | N -label | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +inputProps | Object | - | Typescript: `InputProps`,[Input API Documents](./input?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N +inputValue | String / Number | '' | input value。`v-model:inputValue` is supported。Typescript: `string` | N +defaultInputValue | String / Number | '' | input value。uncontrolled property。Typescript: `string` | N +label | String / Slot / Function | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N max | Number | - | max tag number | N minCollapsedNum | Number | 0 | \- | N placeholder | String | undefined | placeholder description | N -prefixIcon | Slot / Function | - | Typescript:`TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +prefixIcon | Slot / Function | - | Typescript: `TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N readonly | Boolean | undefined | \- | N -size | String | medium | options: small/medium/large。Typescript:`SizeEnum`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +size | String | medium | options: small/medium/large。Typescript: `SizeEnum`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N status | String | - | options: default/success/warning/error | N -suffix | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -suffixIcon | Slot / Function | - | Typescript:`TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -tag | String / Slot / Function | - | Typescript:`string \| TNode<{ value: string \| number }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -tagProps | Object | - | Typescript:`TagProps`,[Tag API Documents](./tag?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N -tips | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -value | Array | [] | value。`v-model` and `v-model:value` is supported。Typescript:`TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N -defaultValue | Array | [] | value。uncontrolled property。Typescript:`TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N -valueDisplay | String / Slot / Function | - | Typescript:`string \| TNode<{ value: TagInputValue; onClose: (index: number, item?: any) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N -onBlur | Function | | Typescript:`(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on blur | N -onChange | Function | | Typescript:`(value: TagInputValue, context: TagInputChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputChangeContext { trigger: TagInputTriggerSource; index?: number; item?: string \| number; e?: MouseEvent \| KeyboardEvent }`

`type TagInputTriggerSource = 'enter' \| 'tag-remove' \| 'backspace' \| 'clear'`
| N -onClear | Function | | Typescript:`(context: { e: MouseEvent }) => void`
| N -onClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
| N -onDragSort | Function | | Typescript:`(context: TagInputDragSortContext) => void`
trigger on drag sort。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputDragSortContext { newTags: TagInputValue; currentIndex: number; current: string \| number; targetIndex: number; target: string \| number }`
| N -onEnter | Function | | Typescript:`(value: TagInputValue, context: { e: KeyboardEvent; inputValue: string }) => void`
| N -onFocus | Function | | Typescript:`(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on focus | N -onInputChange | Function | | Typescript:`(value: string, context?: InputValueChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface InputValueChangeContext { e?: InputEvent \| MouseEvent \| CompositionEvent \| KeyboardEvent; trigger: 'input' \| 'clear' \| 'enter' \| 'blur' }`
| N -onMouseenter | Function | | Typescript:`(context: { e: MouseEvent }) => void`
trigger on mouseenter | N -onMouseleave | Function | | Typescript:`(context: { e: MouseEvent }) => void`
trigger on mouseleave | N -onPaste | Function | | Typescript:`(context: { e: ClipboardEvent; pasteValue: string }) => void`
| N -onRemove | Function | | Typescript:`(context: TagInputRemoveContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputRemoveContext { value: TagInputValue; index: number; item: string \| number; e?: MouseEvent \| KeyboardEvent; trigger: TagInputRemoveTrigger }`

`type TagInputRemoveTrigger = 'tag-remove' \| 'backspace'`
| N +suffix | String / Slot / Function | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +suffixIcon | Slot / Function | - | Typescript: `TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +tag | String / Slot / Function | - | Typescript: `string \| TNode<{ value: string \| number }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +tagDisplay | Function | - | Typescript: `TNode<{ value: string \| number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +tagProps | Object | - | Typescript: `TagProps`,[Tag API Documents](./tag?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N +tips | String / Slot / Function | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +value | Array | [] | value。`v-model` and `v-model:value` is supported。Typescript: `TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N +defaultValue | Array | [] | value。uncontrolled property。Typescript: `TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N +valueDisplay | String / Slot / Function | - | Typescript: `string \| TNode<{ value: TagInputValue; onClose: (index: number, item?: any) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +onBlur | Function | | Typescript: `(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on blur | N +onChange | Function | | Typescript: `(value: TagInputValue, context: TagInputChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputChangeContext { trigger: TagInputTriggerSource; index?: number; item?: string \| number; e?: MouseEvent \| KeyboardEvent }`

`type TagInputTriggerSource = 'enter' \| 'tag-remove' \| 'backspace' \| 'clear'`
| N +onClear | Function | | Typescript: `(context: { e: MouseEvent }) => void`
| N +onClick | Function | | Typescript: `(context: { e: MouseEvent }) => void`
| N +onDragSort | Function | | Typescript: `(context: TagInputDragSortContext) => void`
trigger on drag sort。[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputDragSortContext { newTags: TagInputValue; currentIndex: number; current: string \| number; targetIndex: number; target: string \| number }`
| N +onEnter | Function | | Typescript: `(value: TagInputValue, context: { e: KeyboardEvent; inputValue: string }) => void`
| N +onFocus | Function | | Typescript: `(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on focus | N +onInputChange | Function | | Typescript: `(value: string, context?: InputValueChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface InputValueChangeContext { e?: InputEvent \| MouseEvent \| CompositionEvent \| KeyboardEvent; trigger: 'input' \| 'clear' \| 'enter' \| 'blur' }`
| N +onMouseenter | Function | | Typescript: `(context: { e: MouseEvent }) => void`
trigger on mouseenter | N +onMouseleave | Function | | Typescript: `(context: { e: MouseEvent }) => void`
trigger on mouseleave | N +onPaste | Function | | Typescript: `(context: { e: ClipboardEvent; pasteValue: string }) => void`
| N +onRemove | Function | | Typescript: `(context: TagInputRemoveContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts)。
`interface TagInputRemoveContext { value: TagInputValue; index: number; item: string \| number; e?: MouseEvent \| KeyboardEvent; trigger: TagInputRemoveTrigger }`

`type TagInputRemoveTrigger = 'tag-remove' \| 'backspace'`
| N ### TagInput Events diff --git a/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.md b/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.md index 582bf6f2c..80f9483d5 100644 --- a/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.md +++ b/packages/products/tdesign-vue-next/packages/components/tag-input/tag-input.md @@ -27,6 +27,7 @@ status | String | - | 输入框状态。可选项:default/success/warning/erro suffix | String / Slot / Function | - | 后置图标前的后置内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N suffixIcon | Slot / Function | - | 组件后置图标。TS 类型:`TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N tag | String / Slot / Function | - | 自定义标签的内部内容,每一个标签的当前值。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签。TS 类型:`string \| TNode<{ value: string \| number }>`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N +tagDisplay | Function | - | 自定义单个标签的整体节点。TS 类型:`TNode<{ value: string \| number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N tagProps | Object | - | 透传 Tag 组件全部属性。TS 类型:`TagProps`,[Tag API Documents](./tag?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N tips | String / Slot / Function | - | 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/common.ts) | N value | Array | [] | 值。支持语法糖 `v-model` 或 `v-model:value`。TS 类型:`TagInputValue` `type TagInputValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-vue-next/blob/develop/packages/components/tag-input/type.ts) | N diff --git a/packages/products/tdesign-vue-next/packages/components/tag-input/type.ts b/packages/products/tdesign-vue-next/packages/components/tag-input/type.ts index 8b2389d3b..6fc62fd6e 100644 --- a/packages/products/tdesign-vue-next/packages/components/tag-input/type.ts +++ b/packages/products/tdesign-vue-next/packages/components/tag-input/type.ts @@ -6,7 +6,7 @@ import { InputProps } from '../input'; import { TagProps } from '../tag'; -import { TNode, SizeEnum } from '../common'; +import type { TNode, SizeEnum } from '../common'; export interface TdTagInputProps { /** @@ -107,6 +107,10 @@ export interface TdTagInputProps { * 自定义标签的内部内容,每一个标签的当前值。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签 */ tag?: string | TNode<{ value: string | number }>; + /** + * 自定义单个标签的整体节点 + */ + tagDisplay?: TNode<{ value: string | number; index: number; onClose: (context?: { e?: MouseEvent }) => void }>; /** * 透传 Tag 组件全部属性 */ diff --git a/packages/products/tdesign-vue/src/tag-input/props.ts b/packages/products/tdesign-vue/src/tag-input/props.ts index d0a6968a8..fc683f7b4 100644 --- a/packages/products/tdesign-vue/src/tag-input/props.ts +++ b/packages/products/tdesign-vue/src/tag-input/props.ts @@ -104,6 +104,10 @@ export default { tag: { type: [String, Function] as PropType, }, + /** 自定义单个标签的整体节点 */ + tagDisplay: { + type: Function as PropType, + }, /** 透传 Tag 组件全部属性 */ tagProps: { type: Object as PropType, diff --git a/packages/products/tdesign-vue/src/tag-input/tag-input.en-US.md b/packages/products/tdesign-vue/src/tag-input/tag-input.en-US.md index d31a8f633..8b1124f6b 100644 --- a/packages/products/tdesign-vue/src/tag-input/tag-input.en-US.md +++ b/packages/products/tdesign-vue/src/tag-input/tag-input.en-US.md @@ -9,41 +9,42 @@ name | type | default | description | required autoWidth | Boolean | false | \- | N borderless | Boolean | false | \- | N clearable | Boolean | false | \- | N -collapsedItems | Slot / Function | - | Typescript:`TNode<{ value: TagInputValue; collapsedSelectedItems: TagInputValue; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +collapsedItems | Slot / Function | - | Typescript: `TNode<{ value: TagInputValue; collapsedSelectedItems: TagInputValue; count: number; onClose: (context: { index: number, e?: MouseEvent }) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N disabled | Boolean | undefined | \- | N dragSort | Boolean | false | \- | N excessTagsDisplayType | String | break-line | options: scroll/break-line | N -inputProps | Object | - | Typescript:`InputProps`,[Input API Documents](./input?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N -inputValue | String / Number | '' | input value。`.sync` is supported。Typescript:`string` | N -defaultInputValue | String / Number | '' | input value。uncontrolled property。Typescript:`string` | N -label | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +inputProps | Object | - | Typescript: `InputProps`,[Input API Documents](./input?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N +inputValue | String / Number | '' | input value。`.sync` is supported。Typescript: `string` | N +defaultInputValue | String / Number | '' | input value。uncontrolled property。Typescript: `string` | N +label | String / Slot / Function | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N max | Number | - | max tag number | N minCollapsedNum | Number | 0 | \- | N placeholder | String | undefined | placeholder description | N -prefixIcon | Slot / Function | - | Typescript:`TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +prefixIcon | Slot / Function | - | Typescript: `TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N readonly | Boolean | undefined | \- | N -size | String | medium | options: small/medium/large。Typescript:`SizeEnum`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +size | String | medium | options: small/medium/large。Typescript: `SizeEnum`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N status | String | - | options: default/success/warning/error | N -suffix | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -suffixIcon | Slot / Function | - | Typescript:`TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -tag | String / Slot / Function | - | Typescript:`string \| TNode<{ value: string \| number }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -tagProps | Object | - | Typescript:`TagProps`,[Tag API Documents](./tag?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N -tips | String / Slot / Function | - | Typescript:`string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -value | Array | [] | value。`v-model` is supported。Typescript:`TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N -defaultValue | Array | [] | value。uncontrolled property。Typescript:`TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N -valueDisplay | String / Slot / Function | - | Typescript:`string \| TNode<{ value: TagInputValue; onClose: (index: number, item?: any) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N -onBlur | Function | | Typescript:`(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on blur | N -onChange | Function | | Typescript:`(value: TagInputValue, context: TagInputChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface TagInputChangeContext { trigger: TagInputTriggerSource; index?: number; item?: string \| number; e?: MouseEvent \| KeyboardEvent }`

`type TagInputTriggerSource = 'enter' \| 'tag-remove' \| 'backspace' \| 'clear'`
| N -onClear | Function | | Typescript:`(context: { e: MouseEvent }) => void`
| N -onClick | Function | | Typescript:`(context: { e: MouseEvent }) => void`
| N -onDragSort | Function | | Typescript:`(context: TagInputDragSortContext) => void`
trigger on drag sort。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface TagInputDragSortContext { newTags: TagInputValue; currentIndex: number; current: string \| number; targetIndex: number; target: string \| number }`
| N -onEnter | Function | | Typescript:`(value: TagInputValue, context: { e: KeyboardEvent; inputValue: string }) => void`
| N -onFocus | Function | | Typescript:`(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on focus | N -onInputChange | Function | | Typescript:`(value: string, context?: InputValueChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface InputValueChangeContext { e?: InputEvent \| MouseEvent \| CompositionEvent \| KeyboardEvent; trigger: 'input' \| 'clear' \| 'enter' \| 'blur' }`
| N -onMouseenter | Function | | Typescript:`(context: { e: MouseEvent }) => void`
trigger on mouseenter | N -onMouseleave | Function | | Typescript:`(context: { e: MouseEvent }) => void`
trigger on mouseleave | N -onPaste | Function | | Typescript:`(context: { e: ClipboardEvent; pasteValue: string }) => void`
| N -onRemove | Function | | Typescript:`(context: TagInputRemoveContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface TagInputRemoveContext { value: TagInputValue; index: number; item: string \| number; e?: MouseEvent \| KeyboardEvent; trigger: TagInputRemoveTrigger }`

`type TagInputRemoveTrigger = 'tag-remove' \| 'backspace'`
| N +suffix | String / Slot / Function | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +suffixIcon | Slot / Function | - | Typescript: `TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +tag | String / Slot / Function | - | Typescript: `string \| TNode<{ value: string \| number }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +tagDisplay | Function | - | Typescript: `TNode<{ value: string \| number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +tagProps | Object | - | Typescript: `TagProps`,[Tag API Documents](./tag?tab=api)。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N +tips | String / Slot / Function | - | Typescript: `string \| TNode`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +value | Array | [] | value。`v-model` is supported。Typescript: `TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N +defaultValue | Array | [] | value。uncontrolled property。Typescript: `TagInputValue` `type TagInputValue = Array`。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N +valueDisplay | String / Slot / Function | - | Typescript: `string \| TNode<{ value: TagInputValue; onClose: (index: number, item?: any) => void }>`。[see more ts definition](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +onBlur | Function | | Typescript: `(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on blur | N +onChange | Function | | Typescript: `(value: TagInputValue, context: TagInputChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface TagInputChangeContext { trigger: TagInputTriggerSource; index?: number; item?: string \| number; e?: MouseEvent \| KeyboardEvent }`

`type TagInputTriggerSource = 'enter' \| 'tag-remove' \| 'backspace' \| 'clear'`
| N +onClear | Function | | Typescript: `(context: { e: MouseEvent }) => void`
| N +onClick | Function | | Typescript: `(context: { e: MouseEvent }) => void`
| N +onDragSort | Function | | Typescript: `(context: TagInputDragSortContext) => void`
trigger on drag sort。[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface TagInputDragSortContext { newTags: TagInputValue; currentIndex: number; current: string \| number; targetIndex: number; target: string \| number }`
| N +onEnter | Function | | Typescript: `(value: TagInputValue, context: { e: KeyboardEvent; inputValue: string }) => void`
| N +onFocus | Function | | Typescript: `(value: TagInputValue, context: { inputValue: string; e: FocusEvent }) => void`
trigger on focus | N +onInputChange | Function | | Typescript: `(value: string, context?: InputValueChangeContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface InputValueChangeContext { e?: InputEvent \| MouseEvent \| CompositionEvent \| KeyboardEvent; trigger: 'input' \| 'clear' \| 'enter' \| 'blur' }`
| N +onMouseenter | Function | | Typescript: `(context: { e: MouseEvent }) => void`
trigger on mouseenter | N +onMouseleave | Function | | Typescript: `(context: { e: MouseEvent }) => void`
trigger on mouseleave | N +onPaste | Function | | Typescript: `(context: { e: ClipboardEvent; pasteValue: string }) => void`
| N +onRemove | Function | | Typescript: `(context: TagInputRemoveContext) => void`
[see more ts definition](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts)。
`interface TagInputRemoveContext { value: TagInputValue; index: number; item: string \| number; e?: MouseEvent \| KeyboardEvent; trigger: TagInputRemoveTrigger }`

`type TagInputRemoveTrigger = 'tag-remove' \| 'backspace'`
| N ### TagInput Events diff --git a/packages/products/tdesign-vue/src/tag-input/tag-input.md b/packages/products/tdesign-vue/src/tag-input/tag-input.md index 40e30b3a5..b06eb19e6 100644 --- a/packages/products/tdesign-vue/src/tag-input/tag-input.md +++ b/packages/products/tdesign-vue/src/tag-input/tag-input.md @@ -27,6 +27,7 @@ status | String | - | 输入框状态。可选项:default/success/warning/erro suffix | String / Slot / Function | - | 后置图标前的后置内容。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N suffixIcon | Slot / Function | - | 组件后置图标。TS 类型:`TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N tag | String / Slot / Function | - | 自定义标签的内部内容,每一个标签的当前值。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签。TS 类型:`string \| TNode<{ value: string \| number }>`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N +tagDisplay | Function | - | 自定义单个标签的整体节点。TS 类型:`TNode<{ value: string \| number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N tagProps | Object | - | 透传 Tag 组件全部属性。TS 类型:`TagProps`,[Tag API Documents](./tag?tab=api)。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N tips | String / Slot / Function | - | 输入框下方提示文本,会根据不同的 `status` 呈现不同的样式。TS 类型:`string \| TNode`。[通用类型定义](https://github.com/Tencent/tdesign-vue/blob/develop/src/common.ts) | N value | Array | [] | 值。支持语法糖 `v-model`。TS 类型:`TagInputValue` `type TagInputValue = Array`。[详细类型定义](https://github.com/Tencent/tdesign-vue/tree/develop/src/tag-input/type.ts) | N diff --git a/packages/products/tdesign-vue/src/tag-input/type.ts b/packages/products/tdesign-vue/src/tag-input/type.ts index 3c0c9cad5..c9e4440ff 100644 --- a/packages/products/tdesign-vue/src/tag-input/type.ts +++ b/packages/products/tdesign-vue/src/tag-input/type.ts @@ -6,7 +6,7 @@ import { InputProps } from '../input'; import { TagProps } from '../tag'; -import { TNode, SizeEnum } from '../common'; +import type { TNode, SizeEnum } from '../common'; export interface TdTagInputProps { /** @@ -107,6 +107,10 @@ export interface TdTagInputProps { * 自定义标签的内部内容,每一个标签的当前值。注意和 `valueDisplay` 区分,`valueDisplay` 是用来定义全部标签内容,而非某一个标签 */ tag?: string | TNode<{ value: string | number }>; + /** + * 自定义单个标签的整体节点 + */ + tagDisplay?: TNode<{ value: string | number; index: number; onClose: (context?: { e?: MouseEvent }) => void }>; /** * 透传 Tag 组件全部属性 */ diff --git a/packages/scripts/api.json b/packages/scripts/api.json index d5ee34980..b8aecb41c 100644 --- a/packages/scripts/api.json +++ b/packages/scripts/api.json @@ -134986,6 +134986,45 @@ "TNode" ] }, + { + "id": 1779877619, + "platform_framework": [ + "1", + "2" + ], + "component": "TagInput", + "field_category": 1, + "field_name": "tagDisplay", + "field_type": [ + "32" + ], + "field_default_value": "", + "field_enum": "", + "field_desc_zh": "自定义单个标签的整体节点", + "field_desc_en": null, + "field_required": 0, + "event_input": "", + "create_time": "2026-05-27 10:26:59", + "update_time": "2026-05-27 10:26:59", + "event_output": null, + "custom_field_type": "TNode<{ value: string | number; index: number; onClose: (context?: { e?: MouseEvent }) => void; }>", + "syntactic_sugar": null, + "readonly": 1, + "html_attribute": 0, + "trigger_elements": "", + "deprecated": 0, + "version": "", + "test_description": null, + "support_default_value": 0, + "field_category_text": "Props", + "platform_framework_text": [ + "Vue(PC)", + "React(PC)" + ], + "field_type_text": [ + "Function" + ] + }, { "id": 2096, "platform_framework": [