UNPKG

@nex-ui/react

Version:

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

23 lines (20 loc) • 933 B
"use client"; import { chain } from '@nex-ui/utils'; import { isValidElement, cloneElement } from 'react'; import { useModal } from './ModalContext.mjs'; const ModalTrigger = (props)=>{ const { setOpen, open, keepMounted, modalContentId } = useModal(); const { children } = props; const renderChildren = ()=>{ const element = children; const { onClick, 'aria-haspopup': ariaHaspopup, 'aria-expanded': ariaExpanded, 'aria-controls': ariaControls } = element.props; return /*#__PURE__*/ cloneElement(element, { onClick: chain(()=>setOpen(true), onClick), 'aria-haspopup': ariaHaspopup || 'dialog', 'aria-expanded': ariaExpanded || open, 'aria-controls': ariaControls || (keepMounted || open ? modalContentId : undefined) }); }; return /*#__PURE__*/ isValidElement(children) ? renderChildren() : children; }; export { ModalTrigger };