UNPKG

@nex-ui/react

Version:

🎉 A beautiful, modern, and reliable React component library.

59 lines (56 loc) • 2.02 kB
"use client"; import { jsx } from 'react/jsx-runtime'; import { DialogProvider } from './DialogContext.mjs'; import { useDefaultProps } from '../utils/useDefaultProps.mjs'; import { Modal } from '../modal/Modal.mjs'; import { useModal } from '../modal/ModalContext.mjs'; const Provider = (props)=>{ const { children, fullScreen = false, placement = 'top', hideCloseButton = false, maxWidth = 'md', scroll = 'outside', hideBackdrop = false } = props; const { open, preventScroll, keepMounted, defaultOpen, closeOnEscape, closeOnInteractOutside, setOpen } = useModal(); const ownerState = { ...props, closeOnEscape, hideBackdrop, fullScreen, preventScroll, scroll, maxWidth, open, setOpen, placement, keepMounted, defaultOpen, hideCloseButton, closeOnInteractBackdrop: closeOnInteractOutside }; return /*#__PURE__*/ jsx(DialogProvider, { value: ownerState, children: children }); }; const Dialog = (inProps)=>{ const props = useDefaultProps({ name: 'Dialog', props: inProps }); const { open, children, restoreFocus, onOpenChange, defaultOpen, keepMounted, closeOnEscape, closeOnInteractBackdrop, preventScroll, 'aria-describedby': describedby, 'aria-labelledby': labelledby, ...remainingProps } = props; return /*#__PURE__*/ jsx(Modal, { open: open, restoreFocus: restoreFocus, onOpenChange: onOpenChange, defaultOpen: defaultOpen, keepMounted: keepMounted, closeOnInteractOutside: closeOnInteractBackdrop, preventScroll: preventScroll, closeOnEscape: closeOnEscape, "aria-describedby": describedby, "aria-labelledby": labelledby, children: /*#__PURE__*/ jsx(Provider, { ...remainingProps, children: children }) }); }; Dialog.displayName = 'Dialog'; Provider.displayName = 'InnerProvider'; export { Dialog };