@ntragas/pouncejstest
Version:
A collection of UI components from Panther labs
49 lines (44 loc) • 1.26 kB
JavaScript
import React from 'react';
import useDisclosure from '../../utils/useDisclosure';
import { useId } from '@reach/auto-id';
// @ts-ignore
var PopoverContext = /*#__PURE__*/React.createContext(undefined);
var usePopoverContext = function usePopoverContext() {
return React.useContext(PopoverContext);
};
var Popover = function Popover(_ref) {
var isInitiallyOpen = _ref.isOpen,
id = _ref.id,
children = _ref.children;
var _useDisclosure = useDisclosure({
isOpen: isInitiallyOpen
}),
isOpen = _useDisclosure.isOpen,
close = _useDisclosure.close,
open = _useDisclosure.open,
toggle = _useDisclosure.toggle;
var triggerRef = React.useRef(null);
var popoverRef = React.useRef(null);
var popoverId = useId(id);
var contextValue = React.useMemo(function () {
return {
popoverId,
triggerRef,
popoverRef,
open,
close,
toggle,
isOpen
};
}, [popoverId, triggerRef, popoverRef, close, toggle, isOpen]);
return /*#__PURE__*/React.createElement(PopoverContext.Provider, {
value: contextValue
}, typeof children === 'function' ? children({
isOpen,
open,
close,
toggle
}) : children);
};
export { usePopoverContext };
export default Popover;