import { createPortal } from 'react-dom'; import Icon from '../Icon/Icon.js'; import { DrawerProps } from './Types.js'; import Button from '../Button/Button.js'; import classNames from 'classnames'; import './Drawer.scss'; import { useEffect } from 'react'; import Tooltip from '../Tooltip/Tooltip.js'; const Drawer = ({ isOpen = true, children = 'Drawer content area', onClose = () => {}, title = 'drawer', primaryButtonProps = {}, secondaryButtonProps = {}, showEditButton = false, onEdit = () => {}, overlay = false, isFooterRequired = true, footerContent = null, paddingNotRequired = false, size = 'medium', }: DrawerProps) => { let titleLength = 0; if (typeof title === 'string') { titleLength = title.length; } const onCancel = () => { if (secondaryButtonProps.onClick) { secondaryButtonProps.onClick(); } else { onClose(); } }; const handleKeyDown: (event: KeyboardEvent) => void = (event) => { if (event?.key === 'Escape') { onClose(); } }; useEffect(() => { if (isOpen) { document.addEventListener('keydown', handleKeyDown); } return () => { document.removeEventListener('keydown', handleKeyDown); }; }, [isOpen]); if (!isOpen) { return null; } return createPortal(
{overlay &&
}
{showEditButton && ( )}
{titleLength > 80 ? (
{title?.toLocaleString().slice(0, 80)}...
) : (
{title}
)}
{children}
{isFooterRequired && (
{footerContent ? ( footerContent ) : (
{secondaryButtonProps.label && (
)}
)}
, document.body ); }; export default Drawer;