Skip to content

提示词标签 PromptChip ​

chip 是 Prompt 编辑器里的内联片段:输入触发字符并选中候选后插入,以单行标签的形式展示,同时仍是输入内容的一部分。modelValue 用 chip 的 label 拼出纯文本,content 则保留文本与 chip 的片段数组。

基础使用 ​

chipConfig 的 trigger 指定唤起候选列表的字符,options 给出候选(也可以混入分组)。选中后,触发字符与已输入的关键词会被替换成一个 chip,插入与移除分别触发 chipAdd 与 chipRemove。

chipType 决定 chip 的类型,可以是固定字符串,也可以是按选项计算的函数;类型会拼成 px-prompt-chip__<type> 类,在输入内容以纯文本保存时不受影响。

Type @ or / to insert a chip
Last added: -
Last removed: -
隐藏源代码

插入与删除 ​

除输入触发字符外,也可以用 ref 上的 insertChip 与 removeChip 手动操作:前者在光标处插入一个 chip,后者按 id 移除。输入触发字符时,trigger 事件会给出当前字符、关键词、面板是否展开以及触发位置。

下面的例子用两个按钮插入与移除 chip,并通过 chipAdd 与 chipRemove 维护自己的列表。

Use the buttons to insert a chip
0 chip(s)
隐藏源代码

自定义样式 ​

chip 的节点由编辑器在输入过程中创建,结构不能替换,外观通过类型类定制:直接用 px-prompt-chip__<type> 改背景、颜色、圆角。chip 处在 contenteditable 中,不要在其中放按钮、输入框这类可聚焦元素。

Type @ to insert a member or a source
隐藏源代码

API ​

PromptChip ​

属性类型可选默认值描述版本
idnumber | string | symbol否PromptChip 的唯一标识。0.2.1
typestring是PromptChip 的类型。0.2.1
labelstring否PromptChip 展示的文本。0.2.1
valuestring是PromptChip 携带的文本值。0.2.1
dataRecord<string, any>是PromptChip 携带的自定义数据。0.2.1

PromptChipConfig ​

属性类型可选默认值描述版本
triggerstring | string[]是唤起候选列表的触发字符。0.2.1
options(string | PromptOption | PromptGroupOption)[]是候选列表的数据。0.2.1
filter(query: string, options: (string | PromptOption | PromptGroupOption)[]) => (string | PromptOption | PromptGroupOption)[]是候选列表的自定义过滤函数。0.2.1
dropdownPropsOmit<PopupProps, 'visible' | 'content'> & EmitEvent<PopupEvents>是候选列表弹出层的属性与事件。0.2.1

PromptTriggerPayload ​

属性类型可选默认值描述版本
charstring否触发提及的字符。0.2.1
querystring否触发字符之后已输入的关键词。0.2.1
activeboolean否候选列表是否展开。0.2.1
rectDOMRect | undefined是触发字符所在位置的区域。0.2.1

事件 ​

以下事件由 Prompt 抛出,参数与 chip 相关,详见 提示词输入。

事件参数描述版本
chipAddchip: PromptChipchip 插入时触发。0.2.1
chipRemovechip: PromptChipchip 移除时触发。0.2.1
triggerpayload: PromptTriggerPayload输入提及触发字符时触发。0.2.1

方法 ​

以下方法通过 ref 调用,属于 Prompt,详见 提示词输入。

属性类型可选默认值描述版本
setCaret(position: PromptCaretPosition) => void否将光标移动到指定位置:start、end 或字符偏移;setContent 之后调用需先 await nextTick()。0.2.1
insertChip(chip: PromptChip) => void否在光标处插入 chip。0.2.1
removeChip(id: number | string | symbol) => void否移除指定 id 的 chip。0.2.1

PromptCaretPosition ​

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

PromptOption ​

ts
export interface PromptOption extends Omit<OptionListOption, 'value'> {
	chipType?: string | ((option: PromptOption) => string)
}

PromptGroupOption ​

ts
export interface PromptGroupOption {
	label: string
	key: string | number | symbol
	children: (PromptOption | string)[]
	type: typeof GROUP_OPTION_TYPE
}

OptionListOption, OptionListOption ​

ts
export interface OptionListOption<T = any> extends Option<T> {
	disabled?: boolean
	key?: string | number | symbol
}

export interface OptionListGroupOption extends GroupOption {
	label: string
	key: string | number | symbol
	children: (OptionListOption | string)[]
}

Option, GroupOption ​

ts
export interface Option<T = any> {
	value: T
	label: string
}

export interface GroupOption<T = any> {
	children: (Option<T> | string)[]
	type: 'group'
}