对话输入框
@astryxdesign/core v0.7.1 · ChatComposerInput
属性
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
v-model | string | — | 草稿内容。放在 ChatComposer 里时,不传就用外层那份草稿。 |
placeholder | string | 先用外层的,再用本地化的“Type a message…” | 草稿为空时才显示的提示文字。 |
maxRows | number | 8 | 超过几行以后输入框开始自己滚动。 |
triggers | ChatComposerTrigger[] | — | 敲哪些字符会弹出候选列表。每个触发项带上字符、搜索来源、以及选中后插什么。 |
debounceMs | number | 150 | 异步搜索的等待时间。同步数据源不等待。 |
hasHistory | boolean | true | 光标在草稿首尾时按方向键,翻出之前提交过的内容。 |
label | string | 本地化的“Message input” | 编辑区给读屏用的名字。 |
isDisabled | boolean | 跟随外层输入区 | 不能编辑。不传就跟着外层输入区的禁用状态。 |
pasteAsToken | { onPaste } | false | 内置的长度阈值 | 粘贴的长文本会变成一个标签。传 useChatPasteAsToken 的返回值可以改阈值,传 false 就原样插入文字。 |
pasteAction | (event, text) => boolean | void | — | 纯文本粘贴时最先拿到机会。返回 true 表示你处理了,输入框不再自己插入。 |
事件
| 事件 | 参数 | 说明 |
|---|---|---|
update:modelValue | string | 序列化后的草稿,标签的值也算在里面。v-model 绑的就是它。 |
change | string | 草稿变了,不管是手打、粘贴,还是代码塞进去的。 |
submit | string | 没按 Shift 的回车。Shift+回车是换行。 |
files | File[] | 粘贴或拖进来的文件。拖文件进来不会让页面跳走。 |
keydown | KeyboardEvent | 候选列表没有接这个按键时的按下事件。调 preventDefault() 可以跳过回车发送和历史翻阅。 |
暴露的方法
| 名称 | 类型 | 说明 |
|---|---|---|
insertToken | (token) => string | undefined | 在光标处塞一个标签,返回它的 id。 |
expandToken | (id: string) => void | 把一个标签还原成它序列化出来的文字。 |
insertText | (text: string) => void | 在光标处插入纯文本。 |
focus | () => void | 聚焦到编辑区,用户原来在这个框里的光标位置不动。 |
getValue | () => string | 序列化后的草稿,标签的值也算在里面。 |