Ir al contenido

Popconfirm

Un diálogo de confirmación simple activado por un clic.

import { Popconfirm } from 'asterui'

Básico

Popconfirm simple con título.

import { Popconfirm, Button, notification } from 'asterui'

function App() {
  const handleDelete = () => {
    notification.success({
      message: 'Deleted',
      description: 'The item has been deleted successfully.',
    });
  };
  
  return (
      <Popconfirm title="Are you sure?" onConfirm={handleDelete}>
        <Button color="error">Delete</Button>
      </Popconfirm>
    )
}

export default App

Con descripción

Agrega una descripción para más contexto.

import { Popconfirm, Button, notification } from 'asterui'

function App() {
  const handleDelete = () => {
    notification.success({
      message: 'Deleted',
      description: 'The item has been deleted successfully.',
    });
  };
  
  return (
      <Popconfirm
        title="Delete this task?"
        description="This action cannot be undone. Are you sure you want to continue?"
        onConfirm={handleDelete}
      >
        <Button color="error">Delete</Button>
      </Popconfirm>
    )
}

export default App

Posiciones

Popconfirm puede colocarse en diferentes posiciones.

import { Popconfirm, Button } from 'asterui'

function App() {
  return (
      <div className="flex gap-4 flex-wrap">
        <Popconfirm title="Delete?" placement="top">
          <Button>Top</Button>
        </Popconfirm>
        <Popconfirm title="Delete?" placement="right">
          <Button>Right</Button>
        </Popconfirm>
        <Popconfirm title="Delete?" placement="bottom">
          <Button>Bottom</Button>
        </Popconfirm>
        <Popconfirm title="Delete?" placement="left">
          <Button>Left</Button>
        </Popconfirm>
      </div>
    )
}

export default App

Texto personalizado

Personaliza el texto y tipos de botones.

import { Popconfirm, Button, notification } from 'asterui'

function App() {
  return (
      <Popconfirm
        title="Confirm submission?"
        okText="Yes, submit"
        cancelText="No, cancel"
        okType="success"
        cancelType="error"
        onConfirm={() => {
          notification.success({ message: 'Submitted!', description: 'Form submitted successfully.' });
        }}
      >
        <Button color="primary">Submit</Button>
      </Popconfirm>
    )
}

export default App

Confirmación asíncrona

Maneja operaciones asíncronas con estado de carga.

import { Popconfirm, Button, notification } from 'asterui'

function App() {
  const handleAsyncDelete = () => {
    return new Promise<void>((resolve) => {
      setTimeout(() => {
        notification.success({
          message: 'Deleted',
          description: 'The item has been deleted after async operation.',
        });
        resolve();
      }, 2000);
    });
  };
  
  return (
      <Popconfirm
        title="Delete this item?"
        description="This will take a moment..."
        onConfirm={handleAsyncDelete}
      >
        <Button color="error">Delete (Async)</Button>
      </Popconfirm>
    )
}

export default App

Icono personalizado

Personaliza u oculta el icono.

import { Popconfirm, Button } from 'asterui'

function App() {
  return (
      <div className="flex gap-4">
        <Popconfirm title="Delete this?" icon={<span className="text-2xl">🗑️</span>}>
          <Button>Custom Icon</Button>
        </Popconfirm>
        <Popconfirm title="Proceed?" icon={null}>
          <Button>No Icon</Button>
        </Popconfirm>
      </div>
    )
}

export default App

Sin botón de cancelar

Oculta el botón de cancelar para confirmaciones de solo reconocimiento.

import { Popconfirm, Button } from 'asterui'

function App() {
  return (
      <Popconfirm
        title="Acknowledge this message"
        description="Click OK to dismiss."
        showCancel={false}
        okText="Got it"
      >
        <Button color="info">Show Info</Button>
      </Popconfirm>
    )
}

export default App

Deshabilitado

Popconfirm deshabilitado.

import { Popconfirm, Button } from 'asterui'

function App() {
  return (
      <Popconfirm title="Are you sure?" disabled>
        <Button disabled>Disabled</Button>
      </Popconfirm>
    )
}

export default App
PropiedadDescripciónTipoPredeterminado
childrenElemento activadorReact.ReactElement-
titleTítulo de la confirmaciónReact.ReactNode-
descriptionTexto de descripciónReact.ReactNode-
onConfirmCallback cuando se confirma (soporta async)() => void | Promise<void>-
onCancelCallback cuando se cancela() => void-
okTextTexto para botón de confirmarstring'OK'
cancelTextTexto para botón de cancelarstring'Cancel'
okTypeTipo de botón para botón de confirmar'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'error' | 'info''primary'
cancelTypeTipo de botón para botón de cancelar'primary' | 'secondary' | 'accent' | 'success' | 'warning' | 'error' | 'info' | 'ghost''ghost'
placementPosición del popup de confirmación'top' | 'bottom' | 'left' | 'right''top'
disabledSi el popconfirm está deshabilitadobooleanfalse
iconIcono personalizado (null para ocultar el predeterminado)React.ReactNode-
showCancelMostrar botón de cancelarbooleantrue
  • El foco queda atrapado dentro del popconfirm cuando está abierto
  • La tecla Escape cierra el popconfirm
  • Los botones son accesibles por teclado
  • El estado de carga se comunica vía aria-busy