Skip to content

Mentions 提及 ​

输入 @(或 # 等)触发建议浮层的提及输入组件,适合 @成员 / @任务 / 评论发布等场景。

基础用法 ​

基础用法

输入 @ 后弹出建议列表:↑/↓ 选择、Enter 插入(选中项并入文本)、Esc 或点击外部关闭。

关键词过滤 ​

关键词过滤

@ 后继续输入即过滤:默认按 label 或 value 小写模糊匹配(@zhangsan 也能命中「张三」);无匹配时显示空态「无匹配提及」。自定义过滤可挂 el.filterOption(query, option) 函数(JS property 通道)。

中文正文直接触发 ​

中文正文紧贴 @ 触发

无需在 @ 前加空格:「大家好@张」在中文正文里紧贴即可触发(从光标倒走至空格/换行即断界);但关键词段内含空格/换行会截断不触发。中文输入法组合期间(拼音候选未确认)Enter/↑↓ 不会误选中或误换行,组合确认后再弹层。

trigger 多触发符(@/# 分流) ​

trigger 数组(@ 成员 / # 任务)

trigger 默认 @,支持单字符串或 JSON 数组 ["@","#"] 并存。oas-search/oas-select 的 detail 带命中 prefix 字段,宿主可据此把不同触发符分流到各自数据源。prefix 是 trigger 的兼容别名(attribute 与 property 通道均可用)。

异步建议(oas-search + loading) ​

远端搜索(模拟请求)

命中 @/# 或关键词变化即派发 oas-search(detail { query, prefix },即时派发不防抖——宿主自行防抖)。宿主请求期间置 loading,面板显示「加载中…」;回填 options 后即展示。光标在词内移动不重复派发,重新触发/关键词变化才再派发。

自定义选项渲染(头像富选项) ​

富选项渲染(oas-option-render)

每个选项行渲染后派发 oas-option-render(detail { index, option, element }),element 为选项文本容器,宿主可改写为头像/两行富内容;option 携带 options 里的全部扩展字段。也可以放 <template slot="option"> 提供静态骨架,[data-option-label] 节点自动绑定选项文本。

禁用选项 ​

禁用项(可见不可选)

options 项带 disabled: true 时仍展示但置灰不可选:↑↓/Home/End 键盘导航跳过、点击忽略、aria-disabled 同步;全部禁用时 Enter 只关闭浮层不误插。

可清空(clearable) ​

可清空

面板方向与分隔符(placement / split) ​

placement + split

文本非空且未禁用/只读时右上角显示清空按钮,点击清空文本并派发 oas-clear(detail 为清空前的值)与空值 oas-change。

自动增高(autosize) ​

评论发布框(autosize + max-rows)

autosize 下高度随内容在 min-rows(默认 1)与 max-rows(默认 6,显式 "0" 不封顶)间自适应,超出上限出滚动条。min-rows="2" 常配评论场景留出首行高度。

整段删除(whole) ​

点击 Backspace 一次删除整段提及(whole)

光标停在被提及成员后方按 Backspace,一次删除整段「@张三」

whole 开启后,光标紧跟某个已插入的提及段(如「@张三」,含空格的长成员名如「@张伟(组员)」也一次删除)时按 Backspace,会整段移除「trigger + 成员名」并派发 oas-whole-remove(detail { value, option, prefix },option 为完整选项原对象)。未命中的关键位置仍逐字符删除;提及段与后文之间的分隔符(默认空格)不跟随删除,用户按需再删。未开启 whole 时按 Backspace 逐字符删除(长成员名可多按几次,或撤销恢复)。

单行形态(type) ​

单行 @指派(type=input)

type 默认 textarea(多行),设为 input 时压缩为单行输入框(高度锁单行、Enter 不换行),适合「单行 @指派成员」等场景;仍可配 autosize/clearable 等。

尺寸 / 形态 / 校验态 / 只读 ​

尺寸(size)

size 支持 small / medium / large(就近跟随 oas-config-provider 的 size 注入)。

形态(variant)

校验态(status)

status 支持 success / warning / error:error 联动 combobox 的 aria-invalid,也可由 oas-form-item/oas-form 校验态驱动(宿主 aria-invalid 自动镜像到输入框)。

只读 / 禁用

readonly 可聚焦可复制、不可输入且不触发提及浮层;disabled 灰化不可交互。

面板头尾与空态插槽

提示:输入 @ 提及成员共 2 位成员 · 右键 @ 更多换个关键词,或输入 @ 查看全部

header / footer 插槽渲染面板头尾(提示条/统计信息);empty 插槽替换默认「无匹配提及」空态。split 属性(默认空格)控制扫描断界与插入补位所用的分隔符,需逗号等分隔时可换。

键盘与删除说明 ​

提及成员以纯文本写入。开启 whole 时,光标紧跟提及段按 Backspace 一次删除整段;未开启 whole 时逐字符删除(含空格的长成员名需多按几次,可用撤销恢复)。建议浮层开启时 Home/End 跳到建议首尾、↑/↓ 循环移动(跳过禁用项);type=input 单行时浮层关闭的 Enter 拦截换行。

事件 ​

事件反馈

oas-select 的 detail 为 { value, label, option, prefix }——option 是完整选项原对象(含扩展字段),宿主无需再反查 id:

无障碍名称(label) ​

label(可访问名称)

label 作为输入框(combobox)的可访问名称(aria-label):设置后读屏朗读该名称;未设置时依次回退 placeholder → 内置文案「提及输入框」。

受控值 ​

value(受控)

value 属性为受控通道,外部修改即时同步到文本域;输入期间外部 options/loading 等属性变化不会覆盖正在编辑的草稿。

required 必填 ​

required 必填(原生校验链)

required 驱动原生校验链(form-associated):未填时 checkValidity() 为 false(valueMissing),原生表单提交被阻止;填写后自动恢复 :valid。

程序性读/写当前值走公开 value property(对齐原生 textarea.value):el.value 读取——当前完整文本(含 @提及标记);el.value = x 写入——写受控 value 属性并即时回写内部控件(受控赋值优先于未确认草稿),不派发事件。

API ​

oas-mentions ​

属性 ​

属性说明类型默认值
autosize自适应高度(配 min-rows/max-rows)boolean—
clearable清空按钮(清空全部内容并派 oas-clear)boolean—
disabled禁用boolean—
label可访问名称(默认走内置文案)——
loading建议面板加载态(远程搜索时;配 oas-search 使用)boolean—
max-rows最大行数(autosize 下生效;"0" 不封顶)string—
min-rows最小行数(autosize 下生效)string1
options选项,JSON 数组 [{ label, value }]Option[] | string[]
placeholder占位提示string—
placement建议面板方向:auto(默认)/ top / bottomstringauto
readonly只读(可聚焦可读,不弹建议面板)boolean—
required必填标记(驱动原生校验链 valueMissing;不透传内层控件)boolean—
size尺寸档位 small / medium(默认)/ largestringmedium
split提及项与后文的分隔符(默认空格;后文已分隔则不重复补)string
status校验态:error / warning / successstring—
trigger触发符:默认 @,支持单字符串或 JSON 数组 ["@","#"] 多触发符并存string | string[]@
type形态:textarea(默认)/ input(单行锁高,Enter 不换行)stringtextarea
value值(受控,完整文本)string—
variant形态:outlined(默认)/ filled / borderlessstringoutlined
whole整段删除:光标紧跟提及段按 Backspace 一次删除「prefix + 成员名」并派发 oas-whole-removeboolean—

Property(JS property;是否写回 attribute 见各行说明) ​

Property说明类型默认值
value当前值:含 @提及标记的完整文本string—

事件 ​

事件说明
oas-blur失焦时派发,detail: { value: this.ta.value }
oas-change插入后文本变化,detail: { value }(完整文本)
oas-clear清空时派发,detail: { value }(清空前值)
oas-focus聚焦时派发,detail: { value: t.value }
oas-input输入时派发(IME 组合期不派发),detail: { value }
oas-option-render选项渲染时派发(富选项通道),detail: { index, option, element }
oas-search触发符扫描到待选时派发(远程搜索钩子),detail: { query, prefix }
oas-select选中建议项,detail: { value, label, option, prefix }(option 为完整选项原对象)
oas-whole-remove整段删除提及项时派发,detail: { value, option, prefix }(option 为完整选项原对象)

插槽 ​

名称说明
empty无匹配项时的空态内容(替代默认 noMatch 文案)
footer建议面板底部内容
header建议面板顶部内容
template[slot="option"]自定义选项模板([data-option-label] 绑定)

CSS 变量 ​

CSS 变量默认值
--oas-glass-blurnone
--oas-glass-ringtransparent

基于 MIT OR Apache-2.0 双许可发布