UNPKG

@wix/design-system

Version:

@wix/design-system

64 lines 2.55 kB
import React, { useRef } from 'react'; import Trigger from './components/Trigger/Trigger'; import Content from './components/Content/Content'; import { usePopover } from './hooks/usePopover'; import { PopoverNextContext } from './PopoverNext.context'; import { st, classes } from './PopoverNext.st.css.js'; import PropTypes from 'prop-types'; import { APPEND_TO } from './PopoverNext.constants'; function PopoverNext({ children, appendTo, dataHook, className, onMouseEnter, onMouseLeave, onKeyDown, ...restOptions }) { const rootRef = useRef(null); const popover = usePopover({ ...restOptions, appendTo, dataHook, rootRef }); return (React.createElement(PopoverNextContext.Provider, { value: popover }, React.createElement("div", { "data-popover-root": true, ref: rootRef, "data-hook": dataHook, className: st(classes.root, className), onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, onKeyDown: onKeyDown }, children))); } PopoverNext.displayName = 'PopoverNext'; PopoverNext.proptypes = { dataHook: PropTypes.string, className: PropTypes.string, children: PropTypes.node, open: PropTypes.bool, onOpenChange: PropTypes.func.isRequired, focusManagerEnabled: PropTypes.bool, appendTo: PropTypes.oneOfType([ PropTypes.oneOf(Object.values(APPEND_TO)), PropTypes.func, ]), dynamicWidth: PropTypes.bool, width: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), minWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), maxWidth: PropTypes.oneOfType([PropTypes.string, PropTypes.number]), zIndex: PropTypes.number, excludeClass: PropTypes.string, hideDelay: PropTypes.number, moveBy: PropTypes.shape({ x: PropTypes.number, y: PropTypes.number }), onMouseEnter: PropTypes.func, onMouseLeave: PropTypes.func, flip: PropTypes.bool, onKeyDown: PropTypes.func, placement: PropTypes.oneOf([ 'top', 'top-start', 'top-end', 'right', 'right-start', 'right-end', 'bottom', 'bottom-start', 'bottom-end', 'left', 'left-start', 'left-end', ]), fixed: PropTypes.bool, showDelay: PropTypes.number, timeout: PropTypes.oneOfType([ PropTypes.number, PropTypes.shape({ enter: PropTypes.number, exit: PropTypes.number }), ]), transitionSettings: PropTypes.any, }; PopoverNext.Trigger = Trigger; PopoverNext.Content = Content; export default PopoverNext; //# sourceMappingURL=PopoverNext.js.map