Skip to content

提示词输入 Prompt ​

面向 AI 对话场景的富文本输入组件,支持自适应多行输入、chip 提及、附件上传、语音输入与自定义工具栏。

完整示例 ​

输入内容由 modelValue 与 content 分别维护文本与 chip 片段;chipConfig 配置提及的触发字符与候选列表(详见 提示词标签),uploadConfig 启用附件上传(详见 提示词附件),speechConfig 启用语音输入(详见 提示词语音输入)。工具栏通过 start、end、send 插槽组合:PromptAction、PromptSwitch 与 PromptSelect 提供动作、开关与下拉选择(详见 提示词操作),PromptSend 提供发送入口(详见 提示词发送)。

Speech Mode
Prompt State
Ask anything, type @ or / to mention
0 / 200
隐藏源代码

光标与文本操作 ​

除 focus 与 blur 外,ref 上还有一组直接操作输入区域的方法:setCaret 与 placeCaretAtEnd 定位光标,select 全选,insertText 在光标处插入文本,removeText 删除光标前的字符,insertChip 插入 chip(详见 提示词标签)。disabled 与 readonly 只拦截用户输入,这些方法仍然生效,和原生 input 的语义一致。下面的例子把这些方法都做成了按钮。

value: Hello Pixelium
隐藏源代码

API ​

PromptCounterConfig ​

属性类型可选默认值描述版本
maxLengthnumber是输入内容的最大长度。0.2.1
countGraphemes(value: string) => number是自定义的文本长度统计函数,用于计数与截断。0.2.1
sliceGraphemes(value: string, limit: number) => string是自定义的文本截断函数,接收文本与长度上限。0.2.1

PromptProps ​

属性类型可选默认值描述版本
modelValuestring | null是Prompt 的输入文本。0.2.1
defaultValuestring | null是非受控模式下初始的输入文本。0.2.1
contentPromptContent | null是Prompt 的输入内容,包含文本与 chip 片段。0.2.1
defaultContentPromptContent | null是非受控模式下初始的输入内容。0.2.1
shape'rect' | 'round'是'round'Prompt 的外观形状。0.2.1
borderRadiusNumberOrPercentage | NumberOrPercentage[]是Prompt 的圆角,接受数字、百分比或分别设置四个角的数组。0.2.1
disabledboolean是falsePrompt 是否禁用。0.2.1
readonlyboolean是falsePrompt 是否只读。0.2.1
loadingboolean是falsePrompt 是否处于提交中。0.2.1
cancellableboolean是true提交中是否允许中断。0.2.1
placeholderstring是输入内容为空时展示的占位文字。0.2.1
autoSizeboolean是true输入区域是否随内容自动增高。0.2.1
minRownumber是1输入区域的最小行数。0.2.1
maxRownumber是Infinity输入区域的最大行数。0.2.1
counterConfigPromptCounterConfig是字数统计的配置,传入后展示计数区域。0.2.1
submitKeyPromptSubmitKey是'ctrl+enter'触发提交的按键组合。0.2.1
newlineKeyPromptSubmitKey是'enter'插入换行的按键组合。0.2.1
requireContentboolean是true输入内容为空时是否禁止提交。0.2.1
clearOnSubmitboolean是false提交后是否清空输入内容。0.2.1
uploadConfigPromptUploadConfig是附件上传的配置,传入后启用附件能力,详见 提示词附件。0.2.1
speechConfigPromptSpeechConfig是语音输入的配置,传入后启用语音能力,详见 提示词语音输入。0.2.1
chipConfigPromptChipConfig是chip 提及的配置,详见 提示词标签。0.2.1

PromptEvents ​

事件参数描述版本
update:modelValuevalue: string输入文本变化时触发。0.2.1
inputvalue: string, e: Event在输入区域中输入时触发。0.2.1
changevalue: string, e: Event | undefined输入区域失去焦点且内容发生变化时触发。0.2.1
submitvalue: string, e: KeyboardEvent | MouseEvent | undefined提交时触发,提交入口、提交按键与 submit 方法都会触发。0.2.1
cancele: MouseEvent | undefined提交中点击中断入口时触发。0.2.1
clearvalue: string输入内容被清空时触发。0.2.1
focuse: FocusEvent输入区域获得焦点时触发。0.2.1
blure: FocusEvent输入区域失去焦点时触发。0.2.1
keydowne: KeyboardEvent在输入区域中按下按键时触发。0.2.1
pastee: ClipboardEvent在输入区域中粘贴时触发。0.2.1
update:contentcontent: PromptContent输入内容中的文本或 chip 变化时触发。0.2.1
chipAddchip: PromptChipchip 插入时触发。0.2.1
chipRemovechip: PromptChipchip 移除时触发。0.2.1
triggerpayload: PromptTriggerPayload输入提及触发字符时触发。0.2.1
selectoption: string | PromptOption, e: MouseEvent | KeyboardEvent在候选列表中选择一项时触发。0.2.1

PromptSlots ​

插槽参数描述版本
attachmentupload: PromptUploadScope附件区域,用于放置 PromptAttachment 等附件内容,作用域提供附件上传的操作,其中未指定文件的操作作用于全部对应文件。0.2.1
footerupload: PromptUploadScope, send: PromptSendScope, speech: PromptSpeechScope底部行区域,默认由 start、end 与 send 插槽组成,替换后由自定义内容接管整行;作用域提供附件上传的操作,其中未指定文件的操作作用于全部对应文件。0.2.1
startupload: PromptUploadScope, send: PromptSendScope, speech: PromptSpeechScope工具栏的起始区域,作用域提供附件上传的操作,其中未指定文件的操作作用于全部对应文件。0.2.1
endupload: PromptUploadScope, send: PromptSendScope, speech: PromptSpeechScope工具栏的末尾区域,位于发送入口之前,作用域提供附件上传的操作,其中未指定文件的操作作用于全部对应文件。0.2.1
sendupload: PromptUploadScope, send: PromptSendScope, speech: PromptSpeechScope发送入口区域,作用域提供附件上传的操作,其中未指定文件的操作作用于全部对应文件。0.2.1
countvalue: string, count: number, maxLength: number | undefined计数区域。0.2.1
chip-optionoption: string | PromptOption候选列表中选项的内容。0.2.1
chip-group-labeloption: PromptGroupOption候选列表中分组标题的内容。0.2.1
speech-panelspeech: PromptSpeechScope语音录制面板区域,替换内置的 PromptSpeechPanel。0.2.1
speech-cancelspeech: PromptSpeechScope语音录制面板的取消入口。0.2.1
speech-visualizerspeech: PromptSpeechScope语音录制面板的波形区域。0.2.1
speech-textspeech: PromptSpeechScope语音识别的实时文本区域。0.2.1
speech-acceptspeech: PromptSpeechScope语音录制面板的确认入口。0.2.1

PromptExpose ​

属性类型可选默认值描述版本
focus() => void否让输入区域获得焦点。0.2.1
blur() => void否让输入区域失去焦点。0.2.1
clear() => void否清空输入内容。0.2.1
submit() => void否提交当前的输入内容。0.2.1
select() => void否选中输入区域中的全部内容。0.2.1
setCaret(position: PromptCaretPosition) => void否将光标移动到指定位置:start、end 或字符偏移,chip 计为其 label 的长度,偏移落在 chip 内时移动到 chip 之前;setContent 之后调用需先 await nextTick()。0.2.1
placeCaretAtEnd() => void否将光标移动到输入内容的末尾。0.2.1
insertChip(chip: PromptChip) => void否在光标处插入 chip。0.2.1
removeChip(id: number | string | symbol) => void否移除指定 id 的 chip。0.2.1
insertText(text: string) => void否在光标处插入文本。0.2.1
removeText(length: number) => void否删除光标前的 length 个字符,区间覆盖到的 chip 整体删除。0.2.1
getContent() => PromptContent否读取当前的输入内容。0.2.1
setContent(content: PromptContent) => void否覆盖当前的输入内容。0.2.1

PromptSubmitModifier ​

ts
export type PromptSubmitModifier =
	| 'ctrl'
	| 'control'
	| 'meta'
	| 'cmd'
	| 'command'
	| 'alt'
	| 'option'
	| 'shift'

PromptSubmitKey ​

ts
type SubmitKeyPrefix =
	| PromptSubmitModifier
	| `${PromptSubmitModifier}+${PromptSubmitModifier}`
	| `${PromptSubmitModifier}+${PromptSubmitModifier}+${PromptSubmitModifier}`

export type PromptSubmitKey = 'enter' | `${SubmitKeyPrefix}+enter`

PromptSegment ​

ts
export type PromptSegment = { type: 'text'; text: string } | { type: 'chip'; chip: PromptChip }

PromptContent ​

ts
export type PromptContent = PromptSegment[]

PromptCaretPosition ​

ts
export type PromptCaretPosition = 'start' | 'end' | number

EmitEvent ​

ts
export type EmitEvent<T extends Record<string, any>> = {
	[K in keyof T as `on${Capitalize<K & string>}`]?: (...args: T[K]) => void
}

RestAttrs ​

ts
import type { StyleValue } from 'vue'

export type VueClassValue = string | Record<string, any> | VueClassValue[]
export type VueStyleValue = StyleValue

export type RestAttrs = {
	style?: VueStyleValue | null
	class?: VueClassValue | null
	[x: string]: any
}