import { useEffect, useRef, useState } from "@wordpress/element";
import { Button, Popover } from "@wordpress/components";
import "./editor.scss";
import { BorderIcon } from "../../icons/icons";
import { jsonParse } from "../../blocks/shared/helpFn";
const SelectField = ({ popupRef, childElement, onClose, anchor = "", divClassName = "" }) => {
return (
<>
{React?.cloneElement(childElement, { onClose })}
>
);
};
const Popup = (props) => {
const {
label,
children,
toggleButton,
type = "",
activeLabel = "",
divClassName = "",
popupClose = true,
setPopupClose = () => {},
} = props;
const [isContentsVisible, setIsContentsVisible] = useState(false);
const [popoverAnchor, setPopoverAnchor] = useState(null);
const popupRef = useRef(null);
const buttonRef = useRef(null);
const handleButtonClick = () => {
setIsContentsVisible((prev) => !prev); // Toggle content visibility
setPopupClose((prev) => !prev);
};
// Close the dropdown when clicking outside of it
useEffect(() => {
const handleClickOutside = (event) => {
const typographyElement = event.target.closest(".sp-smart-post-typography-fonts");
const popupElement = event.target.closest(".sp-smart-post-popup-content");
const colorPopupElement = event.target.closest(".sp-smart-post-picker-pallet-wrapper");
if (
popupRef.current &&
!popupRef.current.contains(event.target) &&
!buttonRef.current.contains(event.target) &&
!typographyElement &&
!popupElement &&
!colorPopupElement
) {
setIsContentsVisible(false);
setPopupClose(false);
}
};
document.addEventListener("mousedown", handleClickOutside);
return () => {
document.removeEventListener("mousedown", handleClickOutside);
};
}, [popupRef, buttonRef]);
const value = toggleButton?.props?.attributes || null;
const isActivePopUpButton = value ? jsonParse(value) : true;
return (
<>
{type !== "select" && (
<>
{label && (
{label}
)}
{toggleButton && toggleButton}
}
ref={buttonRef}
onClick={handleButtonClick}
/>
>
)}
{type === "select" && (
<>
{activeLabel?.replaceAll("-", " ")}
{isContentsVisible && isActivePopUpButton ? (
) : (
)}
>
)}
{type !== "select" && isContentsVisible && isActivePopUpButton && (
{
setIsContentsVisible(false);
setPopupClose(false);
}}
/>
)}
{type === "select" && popupClose && (
{
// setIsContentsVisible(false);
// setPopupClose(false);
// }}
/>
)}
>
);
};
export default Popup;