Server IP : 192.158.238.246 / Your IP : 18.118.30.3 Web Server : LiteSpeed System : Linux uniform.iwebfusion.net 4.18.0-553.27.1.lve.1.el8.x86_64 #1 SMP Wed Nov 20 15:58:00 UTC 2024 x86_64 User : jenniferflocom ( 1321) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/7779/task/7779/cwd/plugins/give/src/Views/Components/AdminUI/ModalDialog/ |
Upload File : |
import {MouseEventHandler, useCallback, useEffect} from 'react'; import {createPortal} from 'react-dom'; import {__} from '@wordpress/i18n'; import {ExitIcon} from '@givewp/components/AdminUI/Icons'; import './style.scss'; export interface ModalProps { children: JSX.Element | JSX.Element[]; title: string; isOpen?: boolean; icon?: JSX.Element | JSX.Element[]; insertInto?: string; handleClose?: MouseEventHandler; showHeader?: boolean; showCloseIcon?: boolean; wrapperClassName?: string; } export default function Modal({ title, icon, children, insertInto, handleClose, isOpen = true, showHeader = true, showCloseIcon = true, wrapperClassName = '', }: ModalProps) { // ESC key closes modal const closeModal = useCallback((e) => { if (e.keyCode === 27 && typeof handleClose === 'function') { handleClose(e); } }, []); useEffect(() => { document.addEventListener('keydown', closeModal, false); return () => { document.removeEventListener('keydown', closeModal, false); }; }, []); if (!isOpen) return null; return createPortal( <div className={`givewp-modal-wrapper ${wrapperClassName}`}> <div role="dialog" aria-label={title} className="givewp-modal-dialog"> {showHeader ? ( <div className="givewp-modal-header"> {icon && <div className="givewp-modal-icon-header">{icon}</div>} {title} {showCloseIcon && handleClose && ( <button aria-label={__('Close dialog', 'give')} className="givewp-modal-close" onClick={handleClose} > <ExitIcon aria-label={__('Close dialog icon', 'give')} /> </button> )} </div> ) : ( <> {showCloseIcon && handleClose && ( <button aria-label={__('Close dialog', 'give')} className="givewp-modal-close-headless" onClick={handleClose} > <ExitIcon aria-label={__('Close dialog icon', 'give')} /> </button> )} {icon && <div className="givewp-modal-icon-center">{icon}</div>} </> )} <div className="givewp-modal-content">{children}</div> </div> </div>, insertInto ? document.querySelector(insertInto) : document.body ); }