Introducing AlienX extension – The next evolution of UI development.Check it out on VS Code
Enjoy AlienUI React? Give it a star on Github ⭐
A customizable popover component.
A default popover that displays rich content in a page.
import React, { useState, useRef, useEffect } from "react";
const Popover = () => {
const [isOpen, setIsOpen] = useState(false);
const popoverRef = useRef<HTMLDivElement>(null);
const buttonRef = useRef<HTMLButtonElement>(null);
const handleClickOutside = (event: MouseEvent) => {
if (
popoverRef.current &&
!popoverRef.current.contains(event.target as Node) &&
buttonRef.current &&
!buttonRef.current.contains(event.target as Node)
) {
setIsOpen(false);
}
};
useEffect(() => {
document.addEventListener("mousedown", handleClickOutside);
return () => {
document.removeEventListener("mousedown", handleClickOutside);
};
}, []);
return (
<div className="relative flex justify-center items-center">
<button
ref={buttonRef}
onClick={() => setIsOpen((prev) => !prev)}
className="px-4 py-2 text-white bg-black rounded"
>
Toggle Popover
</button>
{isOpen && (
<div
ref={popoverRef}
className="absolute z-10 bottom-full mb-2 w-60 h-auto p-4 bg-white border rounded shadow"
>
<p>This is a Galaxy Popover</p>
<p className="mt-2 text-sm text-gray-500">
You can put any content here.
</p>
</div>
)}
</div>
);
};
export default Popover;
import React from "react";
import Popover from "./components/comp/Popover/GalaxyPopover";
const App = () => {
return (
<div>
<Popover />
</div>
);
};
export default App;