# Sender 消息发送组件
# 功能说明
消息发送组件,用于用户输入和发送消息,支持以下特性:
- 自适应高度的文本输入区域
- 支持两种布局变体(默认和上下布局)
- 内置语音识别功能(使用浏览器 Web Speech API)
- 可自定义的头部和底部内容
- 触发字符弹出框功能
- 多种提交方式(Enter/Shift+Enter)
- 内置操作按钮(发送、取消、清除、语音)
- 禁用和只读状态支持
# 使用示例
# 基础用法
基本消息发送组件使用,包含默认布局和基本功能。
复制代码
# 组件实例方法
使用组件实例调用方法示例。
复制代码
# 不同布局变体
通过 variant
属性配置不同布局样式。
复制代码
# 语音识别功能
内置语音识别功能,通过 allowSpeech
属性开启即可。调用浏览器原生的语音识别 API,在谷歌浏览器中使用,需要在魔法环境中才能正常使用。
注意
如果你不想使用内置的语音识别功能,可以通过 @recording-change
事件来监听录音状态,自行实现语音识别功能。
你也可以通过组件 ref 实例对象进行调用:
senderRef.value.startRecognition()
触发开始录音senderRef.value.stopRecognition()
触发结束录音
内置语音识别: 自定义语音识别:
复制代码
# 触发字符弹出框
通过 triggerStrings
配置触发字符,当输入这些字符时显示弹出框。可以通过 triggerPopoverWidth
和 triggerPopoverLeft
属性自定义弹出框的宽度和左偏移量。
复制代码
# 自定义操作按钮
通过 action-list
插槽自定义操作按钮。
复制代码
# 自定义头部和底部
注意
显示头部需要在挂载的时候手动调用组件的 openHeader
方法
通过 header
和 footer
插槽自定义头部和底部内容。
复制代码
# 自定义输入框样式
通过 input-style
方便对输入框的样式透传
复制代码
# 属性
参数 | 说明 | 类型 | 默认值 |
---|---|---|---|
value / v-model | 绑定值 | String | '' |
placeholder | 输入框占位文本 | String | '请输入内容' |
autoSize | 输入框自适应配置 | Object | { minRows: 1, maxRows: 6 } |
readOnly | 是否只读 | Boolean | false |
disabled | 是否禁用 | Boolean | false |
loading | 是否显示加载状态 | Boolean | false |
clearable | 是否显示清除按钮 | Boolean | false |
allowSpeech | 是否启用语音输入 | Boolean | false |
submitType | 提交方式,可选 'enter' 或 'shiftEnter' | String | 'enter' |
headerAnimationTimer | 头部动画持续时间(ms) | Number | 300 |
inputWidth | 输入框宽度 | String | '100%' |
variant | 布局变体,可选 'default' 或 'updown' | String | 'default' |
showUpdown | 在 updown 变体下是否显示操作栏 | Boolean | true |
submitBtnDisabled | 手动控制提交按钮禁用状态 | Boolean | - |
inputStyle | 输入框样式透传 | Object | {} |
triggerStrings | 触发弹出框的字符数组 | Array | [] |
triggerPopoverVisible | 弹出框显示状态 | Boolean | false |
triggerPopoverWidth | 弹出框宽度 | String | 'fit-content' |
triggerPopoverLeft | 弹出框左侧偏移 | String | '0px' |
triggerPopoverOffset | 弹出框偏移量 | Number | 8 |
triggerPopoverPlacement | 弹出框位置 | String | 'top-start' |
# 方法
方法名 | 说明 | 参数 | 返回值 |
---|---|---|---|
blur | 移除焦点 | - | - |
focus | 获取焦点 | type: 'all'/'start'/'end' | - |
focusToStart | 聚焦到文本开头 | - | - |
focusToEnd | 聚焦到文本末尾 | - | - |
startRecognition | 开始语音识别 | - | - |
stopRecognition | 停止语音识别 | - | - |
submit | 触发提交 | - | - |
cancel | 触发取消 | - | - |
clear | 清除内容 | - | - |
# 事件
事件名 | 说明 | 回调参数 |
---|---|---|
input | 输入值变化时触发 | (value: string) |
submit | 点击提交按钮或按下提交快捷键时触发 | (value: string) |
cancel | 点击取消按钮时触发 | (value: string) |
recording-change | 语音识别状态变化时触发 | (isRecording: boolean) |
trigger | 触发字符状态变化时触发 | { oldValue: string, newValue: string, triggerString: string, isOpen: boolean, cursorPosition?: number } |
update:triggerPopoverVisible | 弹出框显示状态变化时触发 | (visible: boolean) |
# 插槽
插槽名 | 说明 | 作用域参数 |
---|---|---|
header | 自定义头部内容 | - |
footer | 自定义底部内容 | - |
prefix | 输入框前缀内容 | - |
action-list | 自定义操作按钮列表 | - |
trigger-popover | 触发字符弹出框内容 | { triggerString: string, readonly: boolean } |