1
-
2
1
# Sender 输入框
3
2
4
3
用于聊天的输入框组件。
@@ -45,6 +44,18 @@ sender/speech
45
44
46
45
</ClientOnly >
47
46
47
+ ### 语音输入图标
48
+
49
+ <ClientOnly >
50
+
51
+ :::demo 调整语音输入显示的图标,包含正在录音的图标。
52
+
53
+ sender/speechIcon
54
+
55
+ :::
56
+
57
+ </ClientOnly >
58
+
48
59
### 自定义语音输入
49
60
50
61
<ClientOnly >
@@ -143,35 +154,38 @@ sender/focus
143
154
144
155
### SenderProps
145
156
146
- | 属性 | 说明 | 类型 | 默认值 | 版本 |
147
- | --- | --- | --- | --- | --- |
148
- | actions | 自定义按钮,当不需要默认操作按钮时,可以设为 ` actions={false} ` | VNode \| (oriNode, info: \{ components: ActionsComponents \} ) => VNode | - | - |
149
- | allowSpeech | 是否允许语音输入 | boolean \| SpeechConfig | false | - |
150
- | classNames | 样式类名 | [ 见下] ( #semantic-dom ) | - | - |
151
- | components | 自定义组件 | Record<'input', ComponentType> | - | - |
152
- | defaultValue | 输入框默认值 | string | - | - |
153
- | disabled | 是否禁用 | boolean | false | - |
154
- | loading | 是否加载中 | boolean | false | - |
155
- | header | 头部面板 | VNode \| () => VNode | - | - |
156
- | prefix | 前缀内容 | VNode \| () => VNode | - | - |
157
- | footer | 底部内容 | ReactNode \| (info: \{ components: ActionsComponents \} ) => ReactNode | - | - |
158
- | readOnly | 是否让输入框只读 | boolean | false | - |
159
- | rootClassName | 根元素样式类 | string | - | - |
160
- | styles | 语义化定义样式 | [ 见下] ( #semantic-dom ) | - | - |
161
- | submitType | 提交模式 | SubmitType | ` enter ` \| ` shiftEnter ` | - |
162
- | value(v-model) | 输入框值 | string | - | - |
163
- | onSubmit | 点击发送按钮的回调 | (message: string) => void | - | - |
164
- | onChange | 输入框值改变的回调 | (value: string, event?: FormEvent \| ChangeEvent ) => void | - | - |
165
- | onCancel | 点击取消按钮的回调 | () => void | - | - |
166
- | onPasteFile | 黏贴文件的回调 | (firstFile: File, files: FileList) => void | - | - |
167
- | autoSize | 自适应内容高度,可设置为 true \| false 或对象:\{ minRows: 2, maxRows: 6 \} | boolean \| \{ minRows?: number; maxRows?: number \} | \{ maxRows: 8 \} | - |
157
+ | 属性 | 说明 | 类型 | 默认值 | 版本 |
158
+ | -------------- | --------------------------------------------------------------------------- | ---------------------------------------------------------------------- | ----------------------- | - --- |
159
+ | actions | 自定义按钮,当不需要默认操作按钮时,可以设为 ` actions={false} ` | VNode \| (oriNode, info: \{ components: ActionsComponents \} ) => VNode | - | - |
160
+ | allowSpeech | 是否允许语音输入 | boolean \| SpeechConfig | false | - |
161
+ | classNames | 样式类名 | [ 见下] ( #semantic-dom ) | - | - |
162
+ | components | 自定义组件 | Record<'input', ComponentType> | - | - |
163
+ | defaultValue | 输入框默认值 | string | - | - |
164
+ | disabled | 是否禁用 | boolean | false | - |
165
+ | loading | 是否加载中 | boolean | false | - |
166
+ | header | 头部面板 | VNode \| () => VNode | - | - |
167
+ | prefix | 前缀内容 | VNode \| () => VNode | - | - |
168
+ | footer | 底部内容 | ReactNode \| (info: \{ components: ActionsComponents \} ) => ReactNode | - | - |
169
+ | readOnly | 是否让输入框只读 | boolean | false | - |
170
+ | rootClassName | 根元素样式类 | string | - | - |
171
+ | styles | 语义化定义样式 | [ 见下] ( #semantic-dom ) | - | - |
172
+ | submitType | 提交模式 | SubmitType | ` enter ` \| ` shiftEnter ` | - |
173
+ | value(v-model) | 输入框值 | string | - | - |
174
+ | onSubmit | 点击发送按钮的回调 | (message: string) => void | - | - |
175
+ | onChange | 输入框值改变的回调 | (value: string, event?: FormEvent \| ChangeEvent ) => void | - | - |
176
+ | onCancel | 点击取消按钮的回调 | () => void | - | - |
177
+ | onPasteFile | 黏贴文件的回调 | (firstFile: File, files: FileList) => void | - | - |
178
+ | autoSize | 自适应内容高度,可设置为 true \| false 或对象:\{ minRows: 2, maxRows: 6 \} | boolean \| \{ minRows?: number; maxRows?: number \} | \{ maxRows: 8 \} | - |
168
179
169
180
``` typescript | pure
170
181
type SpeechConfig = {
171
182
// 当设置 `recording` 时,内置的语音输入功能将会被禁用。
172
183
// 交由开发者实现三方语音输入的功能。
173
184
recording? : boolean ;
174
185
onRecordingChange? : (recording : boolean ) => void ;
186
+ audioIcon? : ButtonProps [' icon' ] | VNode ;
187
+ audioDisabledIcon? : ButtonProps [' icon' ] | VNode ;
188
+ audioRecordingIcon? : ButtonProps [' icon' ] | VNode ;
175
189
};
176
190
```
177
191
@@ -186,31 +200,31 @@ type ActionsComponents = {
186
200
187
201
### Sender Slots
188
202
189
- | 插槽名 | 说明 | 类型 |
190
- | ------- | ------ | ---- |
191
- | header | 头部面板 | - |
192
- | prefix | 前缀内容 | _ |
203
+ | 插槽名 | 说明 | 类型 |
204
+ | ------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ---- |
205
+ | header | 头部面板 | - |
206
+ | prefix | 前缀内容 | _ |
193
207
| actions | 操作按钮 | \{ ori: VNode; info: \{ components: \{ SendButton: InstanceType\< Button\> ; ClearButton: InstanceType\< Button\> ; LoadingButton: InstanceType\< Button\> ; SpeechButton: InstanceType\< Button\> ; \} \} \} |
194
- | footer | 底部内容 | \{ info: \{ components: \{ SendButton: InstanceType\< Button\> ; ClearButton: InstanceType\< Button\> ; LoadingButton: InstanceType\< Button\> ; SpeechButton: InstanceType\< Button\> ; \} \} \} |
208
+ | footer | 底部内容 | \{ info: \{ components: \{ SendButton: InstanceType\< Button\> ; ClearButton: InstanceType\< Button\> ; LoadingButton: InstanceType\< Button\> ; SpeechButton: InstanceType\< Button\> ; \} \} \} |
195
209
196
210
#### Sender Ref
197
211
198
- | 属性 | 说明 | 类型 | 默认值 | 版本 |
199
- | --- | --- | --- | --- | --- |
200
- | nativeElement | 外层容器 | ` HTMLDivElement ` | - | - |
201
- | focus | 获取焦点 | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | - | - |
202
- | blur | 取消焦点 | () => void | - | - |
212
+ | 属性 | 说明 | 类型 | 默认值 | 版本 |
213
+ | ------------- | -------- | -------------------------------------------------------------------------- | ------ | - --- |
214
+ | nativeElement | 外层容器 | ` HTMLDivElement ` | - | - |
215
+ | focus | 获取焦点 | (option?: { preventScroll?: boolean, cursor?: 'start' \| 'end' \| 'all' }) | - | - |
216
+ | blur | 取消焦点 | () => void | - | - |
203
217
204
218
### Sender.Header
205
219
206
- | 属性 | 说明 | 类型 | 默认值 | 版本 |
207
- | --- | --- | --- | --- | --- |
208
- | children | 面板内容 | VNode | - | - |
209
- | closable | 是否可关闭 | boolean | true | - |
210
- | forceRender | 强制渲染,在初始化便需要 ref 内部元素时使用 | boolean | false | - |
211
- | open | 是否展开 | boolean | - | - |
212
- | title | 标题 | VNode | - | - |
213
- | onOpenChange | 展开状态改变的回调 | (open: boolean) => void | - | - |
220
+ | 属性 | 说明 | 类型 | 默认值 | 版本 |
221
+ | ------------ | ------------------------------------------- | ----------------------- | ------ | - --- |
222
+ | children | 面板内容 | VNode | - | - |
223
+ | closable | 是否可关闭 | boolean | true | - |
224
+ | forceRender | 强制渲染,在初始化便需要 ref 内部元素时使用 | boolean | false | - |
225
+ | open | 是否展开 | boolean | - | - |
226
+ | title | 标题 | VNode | - | - |
227
+ | onOpenChange | 展开状态改变的回调 | (open: boolean) => void | - | - |
214
228
215
229
## Semantic DOM
216
230
0 commit comments