Pular para o conteúdo

Popover

O componente Popover permite flutuar um painel de conteúdo ancorado a outro elemento, perfeito para menus de contexto, hover cards, tooltips e muito mais.

Para usar o Popover, importe-o dos seus componentes e passe o trigger obrigatório e as props opcionais open, onOpenChange, side, sideOffset, align, alignOffset, arrowPadding, sticky, hideWhenDetached, avoidCollisions, enabled e modal.

Um popover simples que aparece ao clicar no elemento de gatilho.

import React from "react";
import { Button, Popover } from "@firecms/ui";
export default function PopoverBasicDemo() {
return (
<Popover
trigger={<Button>Open Popover</Button>}
>
<div className="p-4">
This is a basic Popover.
</div>
</Popover>
);
}

Mostrando como alinhar o conteúdo do popover em relação ao elemento de gatilho.

import React from "react";
import { Button, Popover } from "@firecms/ui";
export default function PopoverAlignDemo() {
return (
<div>
<Popover
trigger={<Button>Open Left</Button>}
side="left"
>
<div className="p-4">
Aligned to the left.
</div>
</Popover>
<Popover
trigger={<Button>Open Bottom</Button>}
side="bottom"
>
<div className="p-4">
Aligned to the bottom.
</div>
</Popover>
</div>
);
}

Demonstra o uso das props open e onOpenChange para comportamento controlado.

import React, { useState } from "react";
import { Button, Popover } from "@firecms/ui";
export default function PopoverControlledDemo() {
const [open, setOpen] = useState(false);
return (
<Popover
trigger={<Button onClick={() => setOpen(!open)}>Toggle Popover</Button>}
open={open}
onOpenChange={setOpen}
>
<div className="p-4">
This Popover's visibility is controlled externally.
</div>
</Popover>
);
}

Ilustrando estilo personalizado aplicado ao conteúdo do popover.

import React from "react";
import { Button, Popover } from "@firecms/ui";
export default function PopoverStyledDemo() {
return (
<Popover
trigger={<Button>Open Custom Styled Popover</Button>}
className="bg-purple-500 text-white p-3 rounded-lg shadow-lg"
>
<div>
This Popover has custom styles applied.
</div>
</Popover>
);
}