"use strict"; var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard"); var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); exports.__esModule = true; exports.useDropdownToggle = useDropdownToggle; exports["default"] = void 0; var _propTypes = _interopRequireDefault(require("prop-types")); var _react = _interopRequireWildcard(require("react")); var _DropdownContext = _interopRequireDefault(require("./DropdownContext")); var noop = function noop() {}; /** * Wires up Dropdown toggle functionality, returning a set a props to attach * to the element that functions as the dropdown toggle (generally a button). * * @memberOf Dropdown */ function useDropdownToggle() { var _ref = (0, _react.useContext)(_DropdownContext["default"]) || {}, _ref$show = _ref.show, show = _ref$show === void 0 ? false : _ref$show, _ref$toggle = _ref.toggle, toggle = _ref$toggle === void 0 ? noop : _ref$toggle, setToggle = _ref.setToggle; var handleClick = (0, _react.useCallback)(function (e) { toggle(!show, e); }, [show, toggle]); return [{ ref: setToggle || noop, onClick: handleClick, '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["default"].func.isRequired }; /** * Also exported as `` from `Dropdown`. * * @displayName DropdownToggle * @memberOf Dropdown */ function DropdownToggle(_ref2) { var children = _ref2.children; var _useDropdownToggle = useDropdownToggle(), props = _useDropdownToggle[0], meta = _useDropdownToggle[1]; return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children(props, meta)); } DropdownToggle.displayName = 'ReactOverlaysDropdownToggle'; DropdownToggle.propTypes = propTypes; /** @component */ var _default = DropdownToggle; exports["default"] = _default;