@wix/design-system
Version:
@wix/design-system
64 lines • 2.55 kB
JavaScript
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