import { useEffect, useRef, useState } from 'react'; import { FaPaperclip, FaCubes, FaGoogle, FaMicrosoft, FaSlack, FaChevronRight, FaFileAlt, FaTable, FaDesktop, FaStickyNote, FaTasks, FaCalendarAlt, FaFolderOpen, FaEnvelope, FaFileWord, FaFileExcel, FaFilePowerpoint, FaClipboardList, FaExchangeAlt, FaCloud } from 'react-icons/fa'; import './AddContentDropdown.css'; function AddContentDropdown({ isOpen, onClose, toggleButtonRef, onAddFilesClick, onServiceClick, selectedServices = { google: [], microsoft: [], slack: false } }) { const dropdownRef = useRef(null); const [openSubMenus, setOpenSubMenus] = useState({ connectApps: false, googleWorkspace: false, microsoft365: false }); // Effect to handle clicks outside the dropdown to close it useEffect(() => { const handleClickOutside = (event) => { // Do not close if the click is on the toggle button itself if (toggleButtonRef && toggleButtonRef.current && toggleButtonRef.current.contains(event.target)) { return; } // Close the dropdown if the click is outside of it if (dropdownRef.current && !dropdownRef.current.contains(event.target)) { onClose(); // Reset all sub-menus when closing setOpenSubMenus({ connectApps: false, googleWorkspace: false, microsoft365: false }); } }; if (isOpen) { document.addEventListener('mousedown', handleClickOutside); } else { document.removeEventListener('mousedown', handleClickOutside); } return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, [isOpen, onClose, toggleButtonRef]); // Reset sub-menus when dropdown closes useEffect(() => { if (!isOpen) { setOpenSubMenus({ connectApps: false, googleWorkspace: false, microsoft365: false }); } }, [isOpen]); const handleConnectAppsHover = () => { setOpenSubMenus(prev => ({ ...prev, connectApps: true })); }; const handleGoogleWorkspaceHover = () => { setOpenSubMenus(prev => ({ ...prev, googleWorkspace: true, // Close Microsoft 365 when hovering Google Workspace microsoft365: false })); }; const handleMicrosoft365Hover = () => { setOpenSubMenus(prev => ({ ...prev, microsoft365: true, // Close Google Workspace when hovering Microsoft 365 googleWorkspace: false })); }; const handleSlackHover = () => { // Close service sub-menus when hovering Slack setOpenSubMenus(prev => ({ ...prev, googleWorkspace: false, microsoft365: false })); }; const handleAddFilesHover = () => { // Close Connect Apps menu when hovering Add Files setOpenSubMenus({ connectApps: false, googleWorkspace: false, microsoft365: false }); }; // Simplified handlers - just call onServiceClick const handleGoogleServiceClick = (service) => { if (onServiceClick && typeof onServiceClick === 'function') { onServiceClick('google', service); } }; const handleMicrosoftServiceClick = (service) => { if (onServiceClick && typeof onServiceClick === 'function') { onServiceClick('microsoft', service); } }; const handleSlackClick = () => { if (onServiceClick && typeof onServiceClick === 'function') { onServiceClick('slack', 'slack'); } }; // Helper to check if a service is selected const isServiceSelected = (provider, service) => { if (provider === 'slack') { return selectedServices.slack || false; } return selectedServices[provider]?.includes(service) || false; }; return (
); } export default AddContentDropdown;