import { createPortal } from 'react-dom'; import { DrawerProps } from './Types.js'; import Button from '../Button/Button.js'; import classNames from 'classnames'; import './Drawer.scss'; import { useEffect, useState } from 'react'; import Icon from '../Icon'; import useEscapeKey from '../../hooks/keyboardevents/useEscKeyEvent.js'; const Drawer = ({ isOpen = true, children = 'Drawer content area', onClose = () => {}, title = 'drawer', primaryButtonProps = {}, secondaryButtonProps = {}, leftPrimaryButtonProps = {}, leftSecondaryButtonProps = {}, showEditButton = false, onEdit = () => {}, overlay = false, isFooterRequired = true, footerContent = null, size = 'medium', _isExpanded = false, isBackButtonVisible = false, _isCloseModalButtonVisible = true, }: DrawerProps) => { const [isExpanded, setIsExpanded] = useState(_isExpanded); const handleEsc = useEscapeKey('Escape'); handleEsc(onClose); const toggleExpand = () => { setIsExpanded((prev) => !prev); }; const onCancel = () => { if (secondaryButtonProps.onClick) { secondaryButtonProps.onClick(); } else { onClose(); } }; useEffect(() => { closeModal(); }, [isOpen]); const closeModal = () => { if (!isOpen) { setTimeout(() => { return null; }, 1000); } }; const drawerSize = isExpanded ? 'x-large' : size; return createPortal(
{overlay &&
}
{showEditButton && ( )} {_isExpanded && ( )} {isBackButtonVisible && ( )}
{title}
{_isCloseModalButtonVisible && (
)}
{children}
{isFooterRequired && (
{footerContent ? ( footerContent ) : ( <>
{leftSecondaryButtonProps.label && (
{secondaryButtonProps.label && (
)}
)}
, document.body ); }; export default Drawer;