import React, { useEffect, useRef, useState } from 'react'; import { useIntl } from 'react-intl'; import { Editor } from '@tiptap/react'; import getTrad from '../../../utils/getTrad'; import useButton from './useButton'; import * as S from './styles'; export interface ButtonProps { identifier: string; editor: Editor; toggleMediaLibrary: () => void; } const Button = ({ identifier, editor, toggleMediaLibrary }: ButtonProps): JSX.Element => { const { formatMessage } = useIntl(); const dropdownRef = useRef(null); const props = useButton({ identifier, editor, toggleMediaLibrary }); const [dropdownOpen, setDropdownOpen] = useState(false); const toggleDropdown = () => { setDropdownOpen(!dropdownOpen); }; useEffect(() => { function handleClickOutside(event: MouseEvent) { if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { setDropdownOpen(false); } } document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [dropdownRef]); if (props?.dropdown && props.dropdown.length > 0) { return ( {dropdownOpen && ( {props.dropdown.map((item, key) => { return ( ); })} )} ); } return ( ); }; export default Button;