Salta ai contenuti

Popover

Il componente Popover consente di far fluttuare un pannello di contenuto ancorato a un altro elemento, perfetto per menu contestuali, hover card, tooltip e molto altro.

Per usare il Popover, importalo dai tuoi componenti e passa il trigger richiesto e le prop opzionali open, onOpenChange, side, sideOffset, align, alignOffset, arrowPadding, sticky, hideWhenDetached, avoidCollisions, enabled e modal.

Un popover semplice che appare cliccando l’elemento trigger.

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>
);
}

Mostra come allineare il contenuto del popover rispetto all’elemento trigger.

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>
);
}

Dimostra l’uso delle prop open e onOpenChange per un comportamento controllato.

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>
);
}

Illustrazione di stile personalizzato applicato al contenuto del 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>
);
}