|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- import PropTypes from 'prop-types';
- import { useContext } from 'react';
- import DropdownContext from './DropdownContext';
- /**
- * Wires up Dropdown toggle functinality, returning a set a props to attach
- * to the element that functions as the dropdown toggle (generally a button).
- */
-
- export function useDropdownToggle() {
- var _useContext = useContext(DropdownContext),
- show = _useContext.show,
- toggle = _useContext.toggle,
- setToggle = _useContext.setToggle;
-
- return [{
- ref: setToggle,
- 'aria-haspopup': true,
- 'aria-expanded': !!show
- }, {
- show: show,
- toggle: toggle
- }];
- }
- var propTypes = {
- /**
- * A render prop that returns a Toggle element. The `props`
- * argument should spread through to **a component that can accept a ref**. Use
- * the `onToggle` argument to toggle the menu open or closed
- *
- * @type {Function ({
- * show: boolean,
- * toggle: (show: boolean) => void,
- * props: {
- * ref: (?HTMLElement) => void,
- * aria-haspopup: true
- * aria-expanded: boolean
- * },
- * }) => React.Element}
- */
- children: PropTypes.func.isRequired
- };
-
- function DropdownToggle(_ref) {
- var children = _ref.children;
-
- var _useDropdownToggle = useDropdownToggle(),
- props = _useDropdownToggle[0],
- _useDropdownToggle$ = _useDropdownToggle[1],
- show = _useDropdownToggle$.show,
- toggle = _useDropdownToggle$.toggle;
-
- return children({
- show: show,
- toggle: toggle,
- props: props
- });
- }
-
- DropdownToggle.displayName = 'ReactOverlaysDropdownToggle';
- DropdownToggle.propTypes = propTypes;
- /** @component */
-
- export default DropdownToggle;
|