Popover
Permite mostrar acciones o información complementaria en una caja flotante anclada a un elemento, que se abre al interactuar con él.
- Agrupar acciones secundarias: mostrarlas ancladas a un disparador de opciones cuando no hay espacio para incluirlas en línea. Ej.: "Editar", "Archivar" y "Eliminar" en una fila de una lista.
- Editar un valor sin salir del contexto: resolver una edición puntual sin abrir un modal ni navegar a otra pantalla. Ej.: ajustar el stock de un producto desde la propia fila del listado.
- Mostrar subsecciones del menú: desplegar las opciones anidadas cuando el Menu principal se muestra colapsado. Ej.: al pasar el mouse sobre "Productos" colapsado, mostrar "Lista de productos", "Inventario", "Categorías", "Suscripciones" y "Tablas de precios".
- Desplegar filtros contextuales: aplicar selecciones rápidas sobre una vista. Ej.: ordenar un listado por fecha más o menos reciente.
- Mostrar un texto de ayuda breve: un tip corto sobre un elemento, sin acciones ni contenido interactivo. En su lugar, usar Tooltip. Ej.: aclarar qué hace un ícono.
- Interrumpir el flujo para una tarea de foco completo: un formulario extenso o una decisión que requiere toda la atención de la persona. En su lugar, usar Modal. Ej.: confirmar la eliminación de un recurso.
- Elegir un valor dentro de un formulario: una opción que forma parte de la carga de datos. En su lugar, usar Select. Ej.: elegir el país en un campo de dirección.
Lista de ventas
Órdenes de compra
Carritos abandonados
- Surface: el fondo, el borde redondeado y la sombra de la caja flotante que la despegan del contenido detrás.
- Content: los elementos que se muestran dentro de la caja, como una lista de acciones o un dato complementario.
- Arrow: indicador opcional que apunta al disparador para reforzar el vínculo entre ambos; se controla con arrow (visible por defecto).
top: la caja aparece arriba del disparador.
bottom (valor por defecto): la caja aparece debajo del disparador.
left: la caja aparece a la izquierda del disparador.
right: la caja aparece a la derecha del disparador.
Sufijo -start: alinea el borde inicial de la caja (izquierdo si el lado es top/bottom, superior si es left/right) con el disparador, en vez de centrarla.
Sufijo -end: alinea el borde final de la caja (derecho si el lado es top/bottom, inferior si es left/right) con el disparador, en vez de centrarla.
base (valor por defecto): relleno estándar. Para contenido propio que no trae su propio espaciado, como un texto o un dato.
small: relleno reducido. Para menús de acciones, donde un padding amplio separa de más las opciones.
none: sin relleno. Cuando el contenido ya trae su propio espaciado interno o sus filas deben ocupar todo el ancho de la caja. Ej.: una lista de opciones seleccionables.
Con flecha (valor por defecto): refuerza el vínculo entre la caja y el disparador. Usar cuando ese vínculo no es evidente a simple vista.
Sin flecha (arrow={false}): para menús de acciones anclados a un disparador claro, donde la flecha agrega ruido. Es lo más frecuente en menús de opciones.
enabledClick, valor por defecto. Abre y cierra al hacer clic en el disparador. Apropiado para contenido con el que la persona va a interactuar, como acciones u opciones.
enabledHover. Abre al pasar el cursor. Reservar para casos específicos como Menu colapsado, donde el clic ya tiene otra acción (va directo a una sección).
neutral-background
Neutral (neutral-background, valor por defecto): fondo neutro, adecuado para la mayoría de los casos.
primary-interactive
Primary (primary-interactive): se usa como base del patrón Product updates, para anunciar una novedad de producto dentro de la propia caja.
El uso más frecuente es como menú de acciones contextuales sobre cada fila de una lista o de una tabla, anclado a un disparador de opciones (position="bottom-end" es habitual cuando el disparador está alineado a la derecha). El popover se abre por clic y se cierra al elegir una opción o al hacer clic fuera de la caja; el estado de visibilidad suele controlarse por fila con visible y onVisibility.
Compartir
Duplicar
Eliminar
Conviene activar renderOverlay para que un toque accidental no alcance los elementos que quedan detrás de la caja mientras está abierta: es el patrón que evita, por ejemplo, disparar la acción de una fila al tocar fuera del menú para cerrarlo. El disparador debe ofrecer un área táctil cómoda; un disparador de opciones la cumple.
Compartir
Duplicar
Eliminar
Pedido #1024
Editar
Archivar
Mostrar un conjunto breve de acciones secundarias relacionadas con el elemento.
Editar datos
Evita formularios y acciones complejas que necesiten confirmación.
Lista de clientes
Mensajes
Usar el popover cuando el contenido tiene más de una línea o incluye acciones.
Tienda online
Ir a la tienda online
No usar para textos breves o aclaraciones de solo lectura.
Compartir
Eliminar
Mantener abierto un solo popover a la vez.
Archivar
Ver detalle
Compartir
Eliminar
Evitar varios popovers abiertos a la vez.
- Disparador como control real: el disparador debe ser un elemento interactivo (Button, IconButton o Link), no un texto o una caja sin rol, para que reciba foco por teclado y anuncie su función.
- Etiqueta en disparadores solo ícono: cuando el disparador es un IconButton, incluir un aria-label que describa qué acción abre. Ej.: "Más acciones".
- Cierre con teclado y clic fuera: con enabledDismiss (activado por defecto) el popover se cierra con la tecla Esc y al hacer clic fuera de la caja; no desactivarlo sin ofrecer otra forma de cerrarlo.
- Foco visible en el contenido: los controles dentro de la caja reciben foco y muestran su anillo; mantener un orden de foco lógico y no anular ese anillo con estilos propios.
- Overlay para evitar interacciones accidentales: activar renderOverlay cuando un clic fuera de la caja no deba alcanzar los elementos que quedan detrás, algo especialmente relevante en pantallas táctiles.
- Abrir mediante clic/tap los popovers con acciones: esto permite que la caja permanezca abierta mientras la persona elige.
Instalá el componente vía terminal.
npm install @nimbus-ds/componentsimport React from "react";
import { Box, Button, IconButton, Popover } from "@nimbus-ds/components";
import { EditIcon, ArchiveIcon, TrashIcon, EllipsisIcon } from "@nimbus-ds/icons";
const Example: React.FC = () => (
<Box display="flex" justifyContent="center">
<Popover
arrow={false}
padding="small"
content={
<Box display="flex" flexDirection="column" gap="1">
<Button appearance="transparent">
<EditIcon />
Editar
</Button>
<Button appearance="transparent">
<ArchiveIcon />
Archivar
</Button>
<Button appearance="transparent">
<TrashIcon />
Eliminar
</Button>
</Box>
}
>
<IconButton source={<EllipsisIcon />} aria-label="Más acciones" />
</Popover>
</Box>
);
export default Example;Las propiedades adicionales se pasan al elemento <Popover>. Consultá la documentación del elemento div para ver la lista de atributos aceptados.
Popover
| Name | Type | Default | Description |
|---|---|---|---|
children* | React.ReactNode | ((data: { open: boolean, setVisibility: (visibility: boolean) => void }) => React.ReactNode); | An HTML element, or a function that returns one. It's used to set the position of the popover. | |
content* | React.ReactNode | The content of the popover. | |
visible | boolean | If true, the component is shown. | |
onVisibility | (visible: boolean) => void; | Function to control popover opening and closing. | |
arrow | boolean | 'true' | Conditional for displaying the popover arrow. |
matchReferenceWidth | boolean | 'false' | A common feature of select dropdowns is that the dropdown matches the width of the reference regardless of its contents. |
position | 'bottom' | 'bottom' | Position of the popover. |
enabledHover | boolean | 'false' | Adds hover event listeners that change the open state, like CSS :hover. |
enabledClick | boolean | 'true' | Adds click event listeners that change the open state. |
enabledDismiss | boolean | 'true' | Adds listeners that dismiss (close) the floating element. |
offset | number | '10' | Offest displaces the floating element from its core placement along the specified axes. |
renderOverlay | boolean | 'false' | When enabled, renders an invisible overlay that prevents accidental clicks on elements behind the popover. |
width | string | 'fit-content' | The width property specifies the width of a popover's content area. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' |
maxWidth | string | The maxWidth property specifies the maximum width of a popover's content area. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' | |
height | string | The height property specifies the height of a popover's content area. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' | |
zIndex | '100' | The zIndex property specifies the stack order of the popover. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' | |
backgroundColor | 'danger-surfaceHighlight' | 'neutral-background' | The backgroundColor property sets the background color of the popover. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' |
color | 'danger-surfaceHighlight' | 'neutral-background' | The color property is used to set the color of the popover. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' |
padding | 'base' | 'base' | The padding properties are used to generate space around an popover's content area. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' |
overflow | 'auto' | The overflow shorthand property sets the desired behavior for an popover's content overflow. This is a responsive property and you can have the options below available for you to use. '{ "xs": "value", "md": "value", "lg": "value", "xl": "value", "xxl": "value" }' |
Ayudanos a mejorar la documentación
¿Encontraste un problema o tenés una sugerencia? Contanos.