@nex-ui/react
Version:
🎉 A beautiful, modern, and reliable React component library.
59 lines (56 loc) • 2.02 kB
JavaScript
"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 };