1 | import PropTypes from 'prop-types';
|
2 | import React, { useContext, useCallback } from 'react';
|
3 | import DropdownContext from './DropdownContext';
|
4 |
|
5 | var noop = function noop() {};
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 | export function useDropdownToggle() {
|
15 | var _ref = useContext(DropdownContext) || {},
|
16 | _ref$show = _ref.show,
|
17 | show = _ref$show === void 0 ? false : _ref$show,
|
18 | _ref$toggle = _ref.toggle,
|
19 | toggle = _ref$toggle === void 0 ? noop : _ref$toggle,
|
20 | setToggle = _ref.setToggle;
|
21 |
|
22 | var handleClick = useCallback(function (e) {
|
23 | toggle(!show, e);
|
24 | }, [show, toggle]);
|
25 | return [{
|
26 | ref: setToggle || noop,
|
27 | onClick: handleClick,
|
28 | 'aria-haspopup': true,
|
29 | 'aria-expanded': !!show
|
30 | }, {
|
31 | show: show,
|
32 | toggle: toggle
|
33 | }];
|
34 | }
|
35 | var propTypes = {
|
36 | |
37 |
|
38 |
|
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 |
|
49 |
|
50 |
|
51 | children: PropTypes.func.isRequired
|
52 | };
|
53 |
|
54 |
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 | function DropdownToggle(_ref2) {
|
61 | var children = _ref2.children;
|
62 |
|
63 | var _useDropdownToggle = useDropdownToggle(),
|
64 | props = _useDropdownToggle[0],
|
65 | meta = _useDropdownToggle[1];
|
66 |
|
67 | return React.createElement(React.Fragment, null, children(props, meta));
|
68 | }
|
69 |
|
70 | DropdownToggle.displayName = 'ReactOverlaysDropdownToggle';
|
71 | DropdownToggle.propTypes = propTypes;
|
72 |
|
73 |
|
74 | export default DropdownToggle; |
\ | No newline at end of file |