Popconfirm

气泡确认框:目标元素操作需二次确认时使用。封装 Popover,内置确认/取消双按钮 + 可选右上角关闭按钮,比 Modal 更轻量。支持 title/content(content 可为函数注入 initialFocusRef)、icon(缺省 IconAlertTriangle)、okType/cancelType、okButtonProps/cancelButtonProps(含 autoFocus)、onConfirm/onCancel 返回 Promise 时对应按钮 loading(resolve 关闭 / reject 保持)、12 方位 position(默认 bottomLeft)。role=dialog non-modal。

设计文档

如何引入

import { Popconfirm } from '@chenzy-design/svelte';

基础使用

点击触发元素弹出确认气泡,内置确认/取消按钮,比 Modal 更轻量。

类型搭配

气泡确认框本身无 type 分级 prop,通过 icon 颜色与 okType 搭配出不同风格。

延时关闭

onConfirm/onCancel 返回 Promise 时对应按钮自动 loading,resolve 后关闭、reject 保持打开。

初始化弹出层焦点

okButtonProps/cancelButtonProps 传 autoFocus,或 content 函数用 initialFocusRef 绑定,打开时自动聚焦。

关闭按钮

showCloseIcon 默认 true 展示右上角关闭按钮,设为 false 可隐藏。

箭头

showArrow 显示指向触发元素的小三角,arrowPointAtCenter 令三角指向元素中心。

API 参考

Popconfirm

Props

属性说明类型默认值
visible受控显隐(配合 trigger=custom);不回写,仅 onVisibleChangebooleanundefined
defaultVisible非受控初始显隐booleanfalse
title标题(文本或富文本 Snippet)string | Snippetundefined
content正文;函数 Snippet 入参含 initialFocusRef,绑定后打开时聚焦(对齐 Semi)string | Snippet<[{ initialFocusRef }]>undefined
icon自定义图标;false 隐藏;缺省 IconAlertTriangle(警示色)Snippet | false<IconAlertTriangle size="extra-large"/>
okText确认按钮文字string'确认'(locale)
cancelText取消按钮文字string'取消'(locale)
okType确认按钮类型(对齐 Semi)'primary'|'secondary'|'tertiary'|'warning'|'danger''primary'
cancelType取消按钮类型(对齐 Semi)ButtonType'tertiary'
okButtonProps透传确认按钮额外属性(含 autoFocus;onclick/loading/theme 组件托管)ExtraButtonPropsundefined
cancelButtonProps透传取消按钮额外属性(含 autoFocus;onclick/loading/disabled 组件托管)ExtraButtonPropsundefined
showCloseIcon是否显示右上角关闭按钮(对齐 Semi)booleantrue
position弹出方位(对齐 Semi 默认 bottomLeft)'top'|'topLeft'|...|'bottomRight' 等 12 方位'bottomLeft'
trigger触发方式(对齐 Semi)'click'|'hover'|'focus'|'custom''click'
disabled点击子元素是否弹出,false 不弹(对齐 Semi)booleanfalse
closeOnEscEsc 关闭,受控时不生效(对齐 Semi)booleantrue
arrowPointAtCenter箭头指向触发元素中心(需 showArrow,对齐 Semi)booleanfalse
showArrow是否显示箭头三角(对齐 Semi)booleanfalse
motion入场动效(reduced-motion 退化)booleantrue
mouseEnterDelayhover 进入延迟(ms)number50
mouseLeaveDelayhover 离开延迟(ms)number50
getPopupContainer自定义浮层容器(对齐 Semi)() => HTMLElementundefined
zIndex浮层层级(对齐 Semi)number1030
guardFocusTab 焦点在浮层内循环(对齐 Semi)booleantrue
returnFocusOnCloseEsc 后焦点回到 trigger(仅 click,对齐 Semi)booleantrue
stopPropagation阻止浮层内事件冒泡(对齐 Semi)booleantrue
rePosKey手动触发重新定位string | numberundefined
class卡片自定义类名(对齐 Semi className)string''
style卡片自定义内联样式(对齐 Semi)string''
children触发元素(必填)Snippetundefined
onVisibleChange显隐切换回调(对齐 Semi)(visible: boolean) => voidundefined
onClickOutSide点击浮层外部回调(对齐 Semi)(e: MouseEvent) => voidundefined
onEscKeyDowntrigger/浮层按 Esc 回调(对齐 Semi)(e: KeyboardEvent) => voidundefined
onConfirm确认回调;返回 Promise 时按钮 loading,resolve 关闭 / reject 保持(e: MouseEvent) => void | Promise<unknown>undefined
onCancel取消回调;返回 Promise 时按钮 loading,resolve 关闭 / reject 保持(e: MouseEvent) => void | Promise<unknown>undefined

Accessibility

ARIA roledialog
键盘交互EscapeTabShift+TabEnterSpace
  • 浮层 role=dialog(aria-modal=false,复用 Popover),aria-labelledby 指向 Popconfirm 标题
  • 触发元素承载 role=button + aria-haspopup=dialog + aria-expanded/controls(复用 Popover dialog 语义)
  • guardFocus(默认 true)用 useFocusTrap 陷入焦点,关闭后 returnFocusOnClose 归还触发器
  • okButtonProps/cancelButtonProps.autoFocus 或 content 函数 initialFocusRef 控制打开时初始焦点(对齐 Semi)
  • closeOnEsc 与外部点击关闭复用 Popover→Tooltip 的 useDismiss

设计变量

变量默认值用法
--cd-color-popconfirm-body-text var(--cd-color-text-2)正文文字颜色
--cd-color-popconfirm-header-alert-icon var(--cd-color-warning)警示图标颜色
--cd-color-popconfirm-header-text var(--cd-color-text-0)标题文字颜色