JGuang

Popconfirm

Popconfirm · Ant Design

Preview
npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

Popconfirm

Pop up a bubble confirmation box for an action.

When To Use

A simple and compact dialog used for asking for user confirmation.

The difference with the confirm modal dialog is that it's more lightweight than the static popped full-screen confirm modal.

Examples

  • Basic · basic
  • Locale text · locale
  • Placement · placement
  • Auto Shift · shift
  • Conditional trigger · dynamic-trigger
  • Customize icon · icon
  • Asynchronously close · async
  • Asynchronously close on Promise · promise
  • Custom semantic dom styling · style-class

API

Common props ref:Common props

PropertyDescriptionTypeDefaultVersionGlobal Config
cancelButtonPropsThe cancel button propsButtonProps-×
cancelTextThe text of the Cancel buttonstringCancel×
disabledWhether show popconfirm when click its childrenNodebooleanfalse×
iconCustomize icon of confirmationReactNode<ExclamationCircleFilled />×
okButtonPropsThe ok button propsButtonProps-×
okTextThe text of the Confirm buttonstringOK×
okTypeButton type of the Confirm buttonstringprimary×
showCancelShow cancel buttonbooleantrue4.18.0×
titleThe title of the confirmation boxReactNode | () => ReactNode-×
descriptionThe description of the confirmation box titleReactNode | () => ReactNode-5.1.0×
onCancelA callback of cancelfunction(e)-×
onConfirmA callback of confirmationfunction(e)-×
onPopupClickA callback of popup clickfunction(e)-5.5.0×

<Antd component="Alert" title="The following APIs are shared by Tooltip, Popconfirm, Popover." type="info" banner="true"></Antd>

PropertyDescriptionTypeDefaultVersionGlobal Config
alignPlease refer to the settings dom-alignobject-×
arrowChange arrow's visible state and change whether the arrow is pointed at the center of target.boolean | { pointAtCenter: boolean }true5.2.0Tooltip: 6.0.0, Popover: 6.0.0, Popconfirm: 6.0.0
autoAdjustOverflowWhether to adjust popup placement automatically when popup is off screenbooleantrue×
colorThe background colorstring-4.3.0×
classNamesCustomize class for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, string> | (info: { props })=> Record<SemanticDOM, string>-5.23.0Tooltip: 5.23.0, Popover: 5.23.0, Popconfirm: 5.23.0
defaultOpenWhether the floating tooltip card is open by defaultbooleanfalse4.23.0×
destroyTooltipOnHideWhether destroy dom when closebooleanfalse×
destroyOnHiddenWhether destroy dom when closebooleanfalse5.25.0×
freshTooltip will cache content when it is closed by default. Setting this property will always keep updatingbooleanfalse5.10.0×
getPopupContainerThe DOM container of the tip, the default behavior is to create a div element in body(triggerNode: HTMLElement) => HTMLElement() => document.body×
mouseEnterDelayDelay in seconds, before tooltip is shown on mouse enternumber0.1Tooltip: 6.6.0, Popover: 6.6.0, Popconfirm: 6.6.0
mouseLeaveDelayDelay in seconds, before tooltip is hidden on mouse leavenumber0.1Tooltip: 6.6.0, Popover: 6.6.0, Popconfirm: 6.6.0
overlayClassNameClass name of the tooltip card, please use classNames.root insteadstring-×
overlayStyleStyle of the tooltip card, please use styles.rootReact.CSSProperties-×
overlayInnerStyleStyle of the tooltip inner content, please use styles.container insteadReact.CSSProperties-×
placementThe position of the tooltip relative to the target, which can be one of top left right bottom topLeft topRight bottomLeft bottomRight leftTop leftBottom rightTop rightBottomstringtop×
stylesCustomize inline style for each semantic structure inside the component. Supports object or function.Record<SemanticDOM, CSSProperties> | (info: { props })=> Record<SemanticDOM, CSSProperties>-5.23.0Tooltip: 5.23.0, Popover: 5.23.0, Popconfirm: 5.23.0
triggerTooltip trigger mode. Could be multiple by passing an arrayhover | focus | click | contextMenu | Array<string>hoverTooltip: 6.1.0, Popover: 6.1.0, Popconfirm: 6.1.0
openWhether the floating tooltip card is open or not. Use visible under 4.23.0 (why?)booleanfalse4.23.0×
zIndexConfig z-index of Tooltipnumber-×
onOpenChangeCallback executed when visibility of the tooltip card is changed(open: boolean) => void-4.23.0×

Semantic DOM

Semantic nodeNative descriptionVersion
rootRoot element, set absolute positioning, z-index, transform origin, arrow direction and popover container styles—
containerContainer element, set background color, padding, border radius, shadow, border and content display styles—
iconIcon element, set the confirmation icon size, color and layout styles6.4.0
titleTitle element, set title text styles and spacing—
contentDescription element, set content text styles and layout—
arrowArrow element with width, height, position, color and border styles—

Semantic description source: vendor/components/popconfirm/demo/_semantic.tsx

Design Token

Types, inheritance and declarations retain the pinned native source. Defaults are computed by the native theme and may be overridden by ConfigProvider; this table does not invent static defaults.

TokenTypeNative description
zIndexPopupnumberz-index of Popconfirm

Declaration source: vendor/components/popconfirm/style/index.ts

import type { CSSObject } from '@ant-design/cssinjs';

import type { FullToken, GenerateStyle, GetDefaultToken } from '../../theme/internal';

import { genStyleHooks } from '../../theme/internal';

export interface ComponentToken {
  /**
   * @desc 确认框 z-index
   * @descEN z-index of Popconfirm
   */
  zIndexPopup: number;
}

/**
 * @desc Popconfirm 组件的 Token
 * @descEN Token for Popconfirm component
 */
export interface PopconfirmToken extends FullToken<'Popconfirm'> {}

FAQ

<Antd component="Alert" title="The following FAQ applies to Tooltip, Popconfirm, Popover components." type="warning" banner="true"></Antd>

Why does the warning findDOMNode is deprecated sometimes appear in strict mode?

This is due to the implementation of @rc-component/trigger. @rc-component/trigger forces children to accept ref, otherwise it will fall back to findDOMNode, so children need to be native html tags. If not, you need to use React.forwardRef transparently passes ref to native html tags.

Why is the tooltip for my custom component not opening?

Similar issues: #15909, #12812.

Please ensure that the child node to accept onMouseEnter, onMouseLeave, onPointerEnter, onPointerLeave, onFocus, and onClick events, If you create your own component and do not explicitly add these mouse and pointer events as props, the tooltip will never appear. See Example.

What's the placement logic?

It will follow placement config when screen has enough space. And flip when space is not enough (Such as top to bottom or topLeft to bottomLeft). Single direction such as top bottom left right will auto shift on the view:

<img alt="shift" height="200" src="https://mdn.alipayobjects.com/huamei_7uahnr/afts/img/A*sxaTTJjLtIMAAAAAAAAAAAAADrJ8AQ/original" />

When placement is set to edge align such as topLeft bottomRight, it will only do flip but not do shift.

How to support keyboard accessibility?

By default, Tooltip and similar components trigger on hover rather than focus, so they will not respond to keyboard focus events. If you want the component to support keyboard accessibility, you can enable it in the following ways:

  • Enable for a single component: Set the trigger property to include focus, for example trigger="focus" or trigger={['hover', 'focus']}.
  • Enable globally: Use ConfigProvider to set global configuration, so all relevant components across your application support keyboard focus trigger by default.
import { ConfigProvider, Tooltip, Button } from 'antd';

// Single component
<Tooltip trigger={['hover', 'focus']} title="Title">
  <Button>Button</Button>
</Tooltip>

// Global configuration
<ConfigProvider
  tooltip={{ trigger: ['hover', 'focus'] }}
  popover={{ trigger: ['hover', 'focus'] }}
  popconfirm={{ trigger: ['hover', 'focus'] }}
>
  <App />
</ConfigProvider>

For more questions, please refer to Tooltip FAQ.

Shared native props

Tips: The following generic properties apply to most antd components; those not supported are described separately.

PropertyDescriptionTypeDefault
styleThe additional styleCSSProperties-
classNameThe additional css classstring-
rootClassNameClassName on the root elementstring-
autoFocusAuto focus when component mounted, only effective for focusable elements like forms, links, etc.booleanfalse

Install and reproduce an example

npm install antd@6.6.5 @ant-design/icons@6.3.4 dayjs@1.11.23

Use ConfigProvider and native App; configure dayjs locale separately. Each example lists its complete source files and additional pinned dependencies in View code. Example names select demos, not universal component props. See the resource setup guide for theme, locale and SSR.

Native type references

The source viewer includes unchanged native implementations and the following source declarations. Inherited types remain in their native packages. English source comments are preserved as code reference.

  • vendor/components/popconfirm/PurePanel.tsx
  • vendor/components/popconfirm/index.tsx
  • vendor/components/popconfirm/style/index.ts

Source and license

https://github.com/ant-design/ant-design/tree/4a39f54842eade4e565ab336ef6097cd7e723cdd

Original bilingual prose and executable examples are retained. Website-only embeds and token tables are expanded locally. Ant Design is MIT; separately listed dependency notices also apply. Upload previews block outbound requests and do not provide a backend.