Saltar al contenido
El Muestrario

componente · @solu30/ui-kit/feedback

Dialog

Diálogo centrado que se arma por composición: disparador, contenido, encabezado, pie y cierre.

86 sitios de import en 7 de 15 verticales — un archivo que la importa cuenta una vez, monte una instancia o veinte.

  • carlosmartinpavon
  • cmp-packages
  • dietaly
  • elliot
  • gestorsalon
  • luigi
  • raquetea

El componente, montado

Cargando el espécimen…

Éste es el conjunto completo. Abajo, los mismos casos por separado, cada uno con su código.

Cómo se usa

import {
  Dialog,
  DialogClose,
  DialogContent,
  DialogDescription,
  DialogFooter,
  DialogHeader,
  DialogTitle,
  DialogTrigger,
} from '@solu30/ui-kit/feedback'
<Dialog open={abierto} onOpenChange={setAbierto}>
  <DialogContent>
    <DialogHeader>
      <DialogTitle>Nueva combinación de sabores</DialogTitle>
      <DialogDescription>Se agrega al catálogo de la sucursal.</DialogDescription>
    </DialogHeader>
    <DialogFooter>
      <Button onClick={() => setAbierto(false)}>Guardar</Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Anatomía

Las partes que componen Dialog se importan del mismo subpath. Sueltas no significan nada: se montan siempre dentro de su padre.

Dialog
├── DialogClose
├── DialogContent
├── DialogDescription
├── DialogFooter
├── DialogHeader
├── DialogTitle
└── DialogTrigger

Props

5 props declaradas en los tipos de la versión instalada.
PropRequeridaTipoQué hace
openopcionalboolean—
onOpenChangeopcional(open: boolean) => void—
defaultOpenopcionalboolean—
modalopcionalboolean—
childrensíReactNode—

Formulario

Cuando el diálogo pide una acción del usuario antes de cerrarse —cargar o confirmar un dato— con header, cuerpo y footer con las dos acciones.

Cargando el espécimen…

Detalle

Cuando el diálogo sólo muestra información y se cierra con una sola acción — sin campos que completar.

Cargando el espécimen…

Composición

Para ver las piezas sueltas —trigger, contenido, cierre— armadas a mano en vez de con el atajo, cuando la pantalla necesita controlar el disparador o el cierre por su cuenta.

Cargando el espécimen…

Ejemplo del paquete

// Sin `open` se maneja solo desde el trigger; con `open` + `onOpenChange` lo maneja el consumidor.
<Dialog open={abierto} onOpenChange={setAbierto}>
  <DialogContent>
    <DialogHeader>
      <DialogTitle>Nueva reserva</DialogTitle>
      <DialogDescription>Todos los campos son obligatorios.</DialogDescription>
    </DialogHeader>
    <FormularioReserva />
    <DialogFooter>
      <DialogClose asChild><Button variant="ghost">Cancelar</Button></DialogClose>
      <Button onClick={guardar}>Guardar</Button>
    </DialogFooter>
  </DialogContent>
</Dialog>

Del @example del JSDoc de @solu30/ui-kit, sin editar: son 65 de los 541 símbolos. La sangría y los renglones en blanco son los del paquete.