import React, { FC, useEffect, useState } from 'react'; import ReactModal from 'react-modal'; import css from './index.module.css'; import IconHelpSVG from '../../assets/icons/icon_help.svg'; import CloseSVG from '../../assets/icons/icon_close.svg'; export interface ToolTipModalProps { title: string; description: string; iconClass?: string; } const ToolTipModal: FC = ({ title, description, iconClass, }) => { const [modalIsOpen, setIsOpen] = React.useState(false); const [isDesktop, setDesktop] = useState(null); const [isToolTipShown, setIsToolTipOpen] = useState(null); const openModal = (): void => { setIsOpen(true); }; const closeModal = (): void => { setIsOpen(false); }; const updateMedia = (): void => { setDesktop(window.innerWidth > 700); window.innerWidth < 700 ? setIsToolTipOpen(false) : null; }; useEffect(() => { setDesktop(window.innerWidth > 700); }, []); useEffect(() => { window.addEventListener('resize', updateMedia); return (): void => window.removeEventListener('resize', updateMedia); }); const renderContent = (): JSX.Element => { return ( <>
{title} {!isToolTipShown && (
)}
{description}
); }; return (
{ return false; } : openModal } onMouseOver={(): void => { isDesktop ? setIsToolTipOpen(true) : false; }} onMouseLeave={(): void => { isDesktop ? setIsToolTipOpen(false) : false; }} >
{isToolTipShown && (
{renderContent()}
)} {renderContent()}
); }; export default ToolTipModal;