Skip to content

Popconfirm 气泡确认 ​

在触发元素旁显示确认气泡,常用于删除等危险操作前的二次确认。基于浮层定位引擎:12 方位 + 溢出自动翻转 + 箭头指向 + fixed 定位(不被容器裁剪)。

基础用法 ​

点击触发元素弹出气泡;确定 / 取消按钮 / Esc / 点击外部均会关闭。oas-ok、oas-cancel(仅取消按钮派发)携带 detail: { source, event };Esc / 外部点击关闭不派发 oas-cancel,其来源见 oas-open-change 的 reason。

基础用法

删除

受控显示 ​

open 属性受控;显隐变化派发 oas-open-change,detail.reason 标明来源(trigger / ok / cancel / esc / outside / api)。

受控显示(oas-open-change)

打开确认关闭closed删除

异步确认 ​

监听 oas-ok 后同步设置 ok-loading(确定按钮转 loading 并阻止本次自动关闭),请求完成后移除属性并关闭气泡。loading 期间再次点击确定不派发事件(防重复提交)。

异步确认(ok-loading)

归档订单

语义主题 ​

theme 三态:default / warning / danger——联动默认图标、图标色与确定按钮色阶,危险删除一步到位。

语义主题

defaultwarningdanger

文案与图标 ​

ok-text / cancel-text 自定义按钮文案(空值回落 locale);description 二级说明文案(属性与 slot="description" 双通道);hide-icon 隐藏图标;icon 插槽替换默认图标;show-cancel="false" 单按钮确认。

文案与图标

自定义文案单按钮无图标✉自定义图标

十二方位 ​

placement 支持 12 方位(top / top-start / top-end / bottom 系与 left / right 系同理);空间不足时自动沿主轴翻转(auto-adjust-overflow="false" 可关闭)。旧 position 属性值仍然兼容。

十二方位

top-starttoptop-end
left-startleftleft-endright-startrightright-end
bottom-startbottombottom-end

触发方式与禁用 ​

trigger 支持空格分隔多选(click / hover / focus / contextmenu / manual,默认 click);disabled 禁用后不弹气泡(视觉降饱和)。键盘可达:打开时焦点移入气泡(确定按钮优先),关闭后焦点回到触发元素,Esc 关闭最顶层气泡。

触发方式与禁用

hoverfocuscontextmenudisabled

自定义操作区 ​

slot="actions" 有内容时替代内置按钮区,配合 show() / hide() 方法表达确认语义(oas-open-change 的 reason 为 api)。

自定义操作区(actions 插槽)

归档项目
跳过归档

虚拟锚点 ​

virtual 模式以坐标(virtual-x / virtual-y)或元素(virtual-anchor)为锚点定位,触发与关闭完全由宿主控制(不响应外点关闭)。

虚拟锚点(virtual)

在标记处弹出锚点

虚拟坐标(virtual-x / virtual-y)

在 (220, 140) 处弹出closed

定位细节(arrow / auto-adjust-overflow / position / width) ​

arrow="false" 隐藏箭头;auto-adjust-overflow="false" 关闭空间不足时的自动翻转/避让;旧 position 属性(四基向)仍然兼容;width 固定面板宽度。

定位细节

无箭头width=280不自动调整position=top

事件绑定(onoas-*) ​

气泡事件可在模板上直接经 onoas-* 属性绑定(onoas-ok / onoas-cancel),等价于宿主框架里的 @oas-ok 监听。

事件反馈

删除

API ​

oas-popconfirm ​

属性 ​

属性说明类型默认值
arrow是否显示箭头(默认 true;arrow="false" 隐藏,箭头元素与 ::part(arrow) 保留)stringtrue
auto-adjust-overflow视口边缘自动翻转与避让(默认 true;"false" 关闭,保持声明 placement,可能溢出视口)stringtrue
cancel-text取消按钮文案;缺省走 locale popconfirm.cancelstring—
description描述文案(标题下方次要说明,次要色小字号;slot="description" 富内容优先)string—
disabled整体禁用:全部触发路径拦截、不弹气泡,宿主降饱和并同步 aria-disabled(自身 disabled 与 config-provider 注入均生效)boolean—
hide-icon隐藏前置语义图标(默认显示,随 theme 联动换图标)boolean—
ok-loading确定按钮 loading 态:原文字占位保留、居中转 spinner(aria-busy),点击被拦截防重复提交;宿主在 oas-ok 监听里同步置位可阻止本次自动关闭boolean—
ok-text确定按钮文案;缺省走 locale popconfirm.okstring—
open是否显示气泡boolean—
placement气泡位置:12 向 top/bottom/left/right × -start/-end(默认 top);缺席回落旧 position(4 基向子集)string—
position气泡位置string—
show-cancel是否显示取消按钮(默认 true;show-cancel="false" 单按钮确认)stringtrue
theme语义主题:default / warning / danger——面板 tint 底与描边、图标与确定按钮色阶联动(token 含 dark 变体)stringdefault
title确认文案(渲染进可见标题区;读取后即从宿主移除,不残留原生悬浮提示;清空传空串);富内容用 slot="title"string—
trigger触发方式:click(默认)/ hover / focus / contextmenu / manual,空格分隔可多选;含 hover 时触屏自动降级点按切换stringclick
virtual虚拟触发模式:不绑定触发元素,open 完全受外部控制,位置由 virtual-anchor 或 virtual-x/virtual-y 指定;不注册外部点击关闭boolean—
virtual-anchor虚拟锚点元素选择器(virtual-x/virtual-y 未设置时生效)——
virtual-x虚拟锚点 x(视口坐标,px)——
virtual-y虚拟锚点 y(视口坐标,px)——
width面板宽度:数字(px)/ "trigger"(与触发元素同宽)/ 任意 CSS 值;默认 min-width 200pxstring—

事件 ​

事件说明
oas-cancel仅点击「取消」按钮时派发(Esc / 外部点击走 oas-open-change 的 reason),detail: { source: this, event: e }
oas-ok点击「确定」,随后气泡自动收起,detail: { source: this, event: e }
oas-open-changeopen 状态变化时派发,detail: { open, reason }(reason: ok/cancel/esc/outside/trigger/api)

插槽 ​

名称说明
默认气泡确认框主体内容
actions操作按钮区(替代默认确认 / 取消按钮)
description描述文案
icon自定义图标(替代内置图标:默认 / warning 主题为警示三角,danger 主题为圆圈感叹)
title标题富内容插槽,有内容时覆盖 title 属性文案

CSS 变量 ​

CSS 变量默认值
--oas-glass-blurnone
--oas-glass-ringtransparent
--oas-origin-xcenter
--oas-origin-ycenter
--oas-popconfirm-arrow-height12px
--oas-popconfirm-arrow-radius0
--oas-popconfirm-arrow-width12px

方法 ​

方法说明
show()打开气泡(等价 open 属性,oas-open-change 的 reason 为 api)
hide()关闭气泡(等价移除 open,oas-open-change 的 reason 为 api)
restoreFocus()焦点还原到触发元素

面板 role="alertdialog";打开时焦点移入气泡(确定按钮优先),关闭后焦点回到触发元素;trigger 同步 aria-expanded / aria-controls;Esc 关闭最顶层气泡(嵌套场景逐层关闭)。

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