/
dedaMazai
/
reactGoodPattern
Обзор
Документация
Войти
/
dedaMazai
/
reactGoodPattern
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
moduleFederation/container/src/shared/ui/Modal/Modal.tsx
58 строк
1 KB
Andrey Chipizubov
add microFronts
25 май 2023, 01:05
25 май 2023, 01:05
ec973d2
Код
Авторство
О чём код?
import { ReactNode } from "react"; import { classNames, Mods } from "@/shared/lib/classNames/classNames"; import { useModal } from "@/shared/lib/hooks/useModal/useModal"; import { Portal } from "../Portal/Portal"; import cls from "./Modal.module.scss"; import { Overlay } from "../Overlay/Overlay"; interface ModalProps { className?: string; children?: ReactNode; isOpen?: boolean; onClose?: () => void; lazy?: boolean; } const ANIMATION_DELAY = 200; export const Modal = (props: ModalProps) => { const { className, children, isOpen, onClose, lazy, } = props; const { close, isClosing, isMounted, } = useModal({ animationDelay: ANIMATION_DELAY, onClose, isOpen, }); const mods: Mods = { [cls.opened]: isOpen, [cls.isClosing]: isClosing, }; if (lazy && !isMounted) { return null; } return ( <Portal> <div className={classNames(cls.Modal, mods, ["app_modal"])}> <Overlay onClick={close} /> <div className={classNames(cls.content, {}, [className])} > {children} </div> </div> </Portal> ); };