参考
提及 Mentions
Mentions:提及建议。候选内容显示为浮动卡片。锚点是虚拟的,来自宿主输入框的实时矩形,因此宿主可以保留自己的结构(textarea 放在宿主指定的位置),卡片仍指向正确位置。检测状态通过 `useMentions` 与宿主共享。
Option · Popup · Root · Textarea
#MentionsVessel
Mentions:提及建议。候选内容显示为浮动卡片。锚点是虚拟的,来自宿主输入框的实时矩形,因此宿主可以保留自己的结构(textarea 放在宿主指定的位置),卡片仍指向正确位置。检测状态通过 useMentions 与宿主共享。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
open | Boolean | false | — |
matches | Array as PropType<MentionEntry[]> | () => [] | — |
active | Number | 0 | — |
anchor | Object as PropType<HTMLTextAreaElement | null> | null | — |
size | String as PropType<"sm" | "md" | "lg"> | "md" | 宿主输入框的尺寸档位,让选项行与输入框保持一致 |
| 事件 | 载荷 |
|---|---|
insert | (_entry: MentionEntry) => true |
update:active | (_index: number) => true |
update:open | (_open: boolean) => true |
#Mentions
@ 提及组件基于普通 textarea:当插入符前的文本以触发字符和已输入片段结尾时,会在锚定容器中显示匹配候选;选择候选后,片段会替换为 trigger + label,并通过 update:modelValue 返回整段文本,方向键移动候选,Enter 插入,Escape 关闭。输入框复用 Field.Textarea,自动获得字段能力(label id、invalid 状态、autoresize);候选容器通过弹出层状态机锚定到整个字段而不是插入符坐标,因为常见字段尺寸下按插入符定位需要第二套定位系统,收益有限;保留自定义输入结构的组件(如 AI 提示输入)可不用这层外壳,直接接入 useMentions 和 MentionsVessel。
| 属性 | 类型 | 默认值 | 描述 |
|---|---|---|---|
items | Array as PropType<MentionEntry[]> | () => [] | — |
modelValue | String | undefined | — |
trigger | String | "@" | — |
placeholder | String | undefined | — |
autoresize | Boolean | false | — |
invalid | Boolean | false | — |
size | String as PropType<"sm" | "md" | "lg"> | "md" | 输入框使用的控件高度档位 |