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