v0.1.9

Popconfirm 气泡确认框

引入import { Popconfirm } from '@apollo-design/ui';

目标元素的操作需要用户进一步的确认时使用。与 Popover 相比它内置了「确认 / 取消」两个按钮。

引入

import { Popconfirm } from '@apollo-design/ui';

代码演示

加载中…

基本 #

最简单的用法:title + description 双通道。

加载中…

定制按钮文案 #

okText / cancelText 为空时回退到 locale 的 OK / Cancel。

加载中…

自定义图标 #

使用原生 #icon 组合图标组件与当前内容。槽优先于 icon 数据,包括有意为空;移除槽后恢复默认图标或 icon 数据。静态预览传入 false,移除槽后隐藏图标;正文输入保持。

加载中…

Promise 关闭 #

onConfirm 返回 Promise 时按钮进 loading,resolve 后才关闭。

加载中…

受控与异步 #

通过 v-model:open 受控,配合 okButtonProps.loading 表达进行中的状态。

加载中…

位置 #

支持 12 个方位。

加载中…

条件触发 #

@open-change 中可以决定是否接受受控状态更新。

加载中…

自定义面板渲染 #

使用原生标题、描述及按钮内容槽;切换、更新和清空后,只有移除槽才恢复 prop / locale。原生字符串 style 与语义根样式按 Vue 规则合并。主题按钮切换当前 Popconfirm.zIndexPopup,移除覆盖后恢复默认层级。

加载中…

语义化结构 #

语义槽:root / container / arrow / icon / title / content(description 用 content)。

加载中…

大页面下的浮层 #

浮层在大页面里会自动调整位置(autoAdjustOverflow)。

API

PopconfirmProps

参数 说明 类型 默认值
title 标题数据(0 合法);模板内容使用 #title VNodeChild -
description 描述数据;模板内容使用 #description VNodeChild -
disabled 是否禁用(禁用后不通过触发器展开,也不发 openChange) boolean false
open 是否展开(受控) boolean -
defaultOpen 默认是否展开 boolean false
trigger 触发行为 string | string[] 'click'
placement 浮层位置 TooltipPlacement 'top'
okText 确认按钮文案;为空回退 locale。富内容走 #okText 插槽(优先) string | slot OK
okType 确认按钮类型 LegacyButtonType 'primary'
cancelText 取消按钮文案;为空回退 locale。富内容走 #cancelText 插槽(优先) string | slot Cancel
okButtonProps 确认按钮属性;根类名使用 Vue 原生 class PopconfirmButtonProps -
cancelButtonProps 取消按钮属性;根类名使用 Vue 原生 class PopconfirmButtonProps -
showCancel 是否显示取消按钮 boolean true
icon 图标数据;false 时不显示。模板组合使用 #icon VNode | string | false ExclamationCircleFilled
onConfirm 点击确认 (e?: MouseEvent) => void | Promise -
onCancel 点击取消 (e?: MouseEvent) => void -
classNames 语义化类名(root / container / arrow / icon / title / content) 对象或函数 -
styles 语义化样式(同上) 对象或函数 -

onConfirm / onCancel 是业务回调 props,支持 :on-confirm / :onConfirm 等 Vue 绑定;确认回调的返回值用于等待 Promise。状态同步通过 update:open / v-model:open。

确认同步返回时请求关闭;返回 Promise 时,按钮进入 loading,成功后请求关闭,失败保持面板并通过 Vue 错误处理上报。实际接受关闭后,下次打开使用新的确认会话,旧 Promise 不会关闭新面板;业务请求和定时器仍由调用者在取消及卸载时清理。受控父级拒绝关闭时,当前操作继续。

插槽

名称 说明
default 触发元素(仅 Popconfirm)
title / description 标题 / 描述,优先于同名 prop
icon 图标内容,优先于 icon 数据或默认图标;空槽不渲染包裹
okText / cancelText 按钮内容,优先于字符串 prop 和 locale

导出 PopconfirmSlots。五个内容槽也适用于 PopconfirmPurePanel;空槽不回退,移除槽才恢复 prop、默认图标或 locale。条件槽在当前 render 读取,图标切换保持正文节点与输入状态。内容函数 prop 已直接移除;异步确认等业务回调保留,见 迁移记录。

原生 class/style

原生 class/style 作用于浮层根,style 支持字符串、对象和混合数组,优先于语义根样式。PopconfirmPurePanel 转发 root/container/arrow 的 classNames/styles 给静态面板,icon/title/content 给确认正文;原生 style 只作用于面板根,不覆盖 styles.container。

事件

事件 说明 参数
openChange 请求改变展开状态;受控时由父级决定是否接受 (open: boolean)
update:open v-model:open 同步请求 (open: boolean)
popupClick 确认正文被点击;静态面板同样支持 (event: MouseEvent)
afterOpenChange 开合动画完成 (open: boolean)

模板使用 @open-change / @popup-click / @after-open-change,支持 .once 和监听器数组;JSX / h() 使用 onOpenChange / onPopupClick / onAfterOpenChange。旧的 :on-open-change / :on-popup-click 函数 prop 直接改为事件,不保留兼容通道。onConfirm / onCancel 业务回调保持原契约。

原生 class/style 只作用于浮层根,其他原生 attrs 和事件传给触发元素。撤销受控 open 后保留最后接受的值,父级拒绝的更新请求不会成为本地状态。

Ref

Popconfirm 与 Popover 同物:forceAlign / nativeElement / popupElement。

主题变量

Token 说明 默认值
zIndexPopup 浮层 z-index zIndexPopupBase + 60

theme.components.Popconfirm.zIndexPopup 与现有全局视觉 Token 读取当前主题,支持嵌套、替换和移除,0 是有效层级。Popconfirm 与静态面板只消费自己的组件配置;正文中的独立 Popover / Tooltip 仍消费各自配置。内部共享一次层级计算;最终根样式的数值 zIndex(含 0、数字字符串)优先并同步后代层级,撤除后恢复专用 zIndex 或自动层级。条件根样式中的 undefined、空字符串及原生 style 的 false/null/undefined 释放当前覆盖;calc/var 的自动后代层级仍延期。

静态面板原生 style 迁移。

Powered by Vue 3 + ViteApollo Design · Vue NativeGitHub