Skip to content

Editable 就地编辑 ​

点击/回车/空格进入编辑态,Enter 提交、Esc 取消,空值提交默认非破坏;支持多行、图标触发、受控编辑态与提交方式四态组合。

基础用法 ​

点击编辑

点击文本(或聚焦后按 Enter/空格)进入编辑,Enter 提交、Esc 还原。

占位符 ​

空值占位

值为空时展示 placeholder。

提交方式四态 ​

submit-on-enter=false(仅按钮/失焦提交)

submit-on-blur=false(防误提交:点页面空白不提交)

两者都关(仅显式按钮提交)

submit-on-enter(默认 true)与 submit-on-blur(默认 true)组合出四种提交方式:both(默认)/ 仅 Enter / 仅失焦 / 仅按钮。

受控编辑态 ​

editing 属性程序化控制

进入/退出编辑

default-editing 挂载即编辑(新建条目场景)

  • 宿主设置 editing 属性进入编辑态;移除属性走取消路径退出(非破坏,派发 oas-cancel)
  • 组件内部进入/退出时 editing 属性自动反射,宿主可监听 attribute 或 oas-editing 事件(detail: { editing: boolean },进入/退出各派发一次)

多行编辑 ​

multiline(Ctrl/⌘+Enter 提交)

multiline 时编辑态渲染 textarea:Enter 换行、Ctrl/⌘ + Enter 提交、Esc 取消;高度随内容自适应(最小 1 行)。输入法组合态的 Ctrl+Enter(选词确认)不会误提交。

图标触发 ​

trigger=icon(铅笔按钮触发,防误触)

trigger="text"(默认)点文本即编辑;trigger="icon" 时文本纯展示,尾部铅笔按钮承载交互(可聚焦,Enter/空格/点击进入编辑);trigger="dblclick" 时双击进编辑(单击不触发,可选中文本不冲突,Enter/空格聚焦时进编辑为键盘逃生)。适合文本可能与页面点击行为冲突的场景。

trigger=dblclick(双击编辑)

展示态自定义 ​

template[slot=display] 图标+文本

template[slot="display"] 克隆展示态内容:[data-display-value] 绑定当前值、[data-display-placeholder] 绑定占位文本,缺省回落纯文本。

确认/取消图标自定义 ​

template[slot=ok-icon] / [slot=cancel-icon]

空值提交语义 ​

allow-empty(允许清空)

默认空值提交还原旧值并派发 oas-cancel(非破坏);allow-empty 时空值照常提交为空串并派发 oas-change(「清空重置」场景)。

尺寸 / 校验态 / 只读 ​

size 三档

status=error

readonly(可聚焦可读不可编辑)

readonly 与 disabled 分立:只读保持正常文本色、可聚焦可复制,仅不可进入编辑(aria-readonly)。

maxlength ​

长度限制

禁用 ​

disabled

事件 ​

提交/取消/编辑态事件

监听 oas-change(提交)、oas-cancel(取消/空值提交)、oas-editing(编辑态切换,detail: { editing }):

非文本就地编辑(Inplace 组合模式) ​

需要「点开换任意内容」(表格、图片等)时,不必引入新组件——display slot + 宿主切换即可替代:

宿主 v-if 切换 + display slot 组合

A展示态:头像 + 名称(任意内容)编辑

宿主用 v-if / hidden 切换展示与编辑两块任意内容(几行样板即可);文本场景直接用 oas-editable(其 display slot + editing 受控就是同一机制的封装)。

本页能力速览(正文说明) ​

  • submit-on-blur:默认 true(失焦提交,现状行为),false 拼出四态提交方式
  • editing / default-editing:受控编辑态 / 初始编辑态(退出统一走提交/取消路径)
  • multiline:多行编辑,Ctrl/⌘+Enter 提交、Enter 换行、自适应高
  • trigger:text | icon | dblclick(点文本 / 铅笔按钮 / 双击编辑,均可配)
  • allow-empty:允许空值提交为空串(默认非破坏还原)
  • size / status / readonly:三档尺寸、校验态、只读
  • 插槽:template[slot="display"](data-display-value / data-display-placeholder 绑定)、ok-icon / cancel-icon
  • 事件:oas-editing { editing }(既有 oas-change / oas-cancel 不变)

API ​

oas-editable ​

属性 ​

属性说明类型默认值
allow-empty允许提交空值(默认非破坏不变;空值还原旧值)boolean—
default-editing挂载即编辑(仅首次消费)boolean—
disabled禁用boolean—
editing受控编辑态(内部进出自动反射;宿主移除走取消路径)boolean—
maxlength输入最大长度string—
multiline多行编辑(textarea;Enter 换行、Ctrl/⌘+Enter 提交、自适应高)boolean—
placeholder空值占位string—
readonly只读(可聚焦可读不可编辑,aria-readonly)boolean—
size尺寸档位 small / medium(默认)/ largestringmedium
status校验态:error / warning / successstring—
submit-on-blur失焦提交(默认 true;与 submit-on-enter 拼出 both/enter/blur/none 四态)stringtrue
submit-on-enter是否允许 Enter 提交stringtrue
trigger触发方式:text(默认点文本)/ icon(铅笔按钮触发,防误触)/ dblclick(双击编辑,单击不触发,Enter/空格聚焦时进编辑为键盘逃生)string—
value当前值(受控)string—

Property(JS property;是否写回 attribute 见各行说明) ​

Property说明类型默认值
value当前值:编辑中读输入框文本,否则读 value 属性string—

事件 ​

事件说明
oas-cancel取消/空值提交(还原旧值),默认非破坏,detail: { value: oldValue } | { value: this.getAttr('value', '') }
oas-change提交新值,detail: { value }
oas-editing进入/退出编辑态各派一次,detail: { editing }

插槽 ​

名称说明
template[slot="display"]展示态自定义([data-display-value]/[data-display-placeholder] 绑定)

键盘:展示态 Enter/空格/点击进入编辑;编辑态 Enter 提交、Esc 还原失焦。

ARIA:展示态 role="button" + aria-label="编辑",编辑态输入框保持同一 label。

基于 MIT OR Apache-2.0 双许可发布