diff --git a/src/components/emoji-picker-button.js b/src/components/emoji-picker-button.js index 45e7b02..b298b03 100644 --- a/src/components/emoji-picker-button.js +++ b/src/components/emoji-picker-button.js @@ -15,21 +15,30 @@ import React, { useEffect, useRef, useState } from "react"; * @return {JSX.Element} */ function EmojiPickerButton({ showPicker, toggleShowPicker, buttonElement, buttonRef }) { - + const [typeButton, setTypeButton] = useState(/** @type {"OWN" | "REF" | "CUSTOM_CONTENT" | "IDLE"} */ "IDLE"); const localButtonRef = useRef(null); - const [showCustomButtonContent, setShowCustomButtonContent] = useState(false); useEffect(() => { - if ((buttonRef?.current?.childNodes?.length ?? 0) > 2) { - localButtonRef.current.appendChild(buttonRef.current.childNodes[0]); - setShowCustomButtonContent(true); - } else if ((buttonElement?.childNodes?.length ?? 0) > 2) { + if (!buttonRef && !buttonElement) { + setTypeButton("OWN"); + return; + } + + if (buttonRef && buttonRef.current) { + buttonRef.current.addEventListener("click", toggleShowPicker); + setTypeButton("REF"); + return () => { + if (!buttonRef.current) return; + return buttonRef.current.removeEventListener("click", toggleShowPicker); + } + } + else if ((buttonElement?.childNodes?.length ?? 0) >= 2) { localButtonRef.current.appendChild(buttonElement?.childNodes[0]); - setShowCustomButtonContent(true); + setTypeButton("CUSTOM_CONTENT"); } - }, [buttonElement?.childNodes]); + }, [buttonRef, buttonElement, buttonElement?.childNodes]) - return ( + return ( typeButton !== "IDLE" && typeButton !== "REF" &&