UNPKG

3.45 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import React from 'react';
4import PropTypes from 'prop-types';
5import Dropdown from './Dropdown';
6import DropdownToggle from './DropdownToggle';
7import DropdownMenu, { alignPropType } from './DropdownMenu';
8var propTypes = {
9 /**
10 * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.
11 * @type {string|number}
12 * @required
13 */
14 id: PropTypes.any,
15
16 /** An `href` passed to the Toggle component */
17 href: PropTypes.string,
18
19 /** An `onClick` handler passed to the Toggle component */
20 onClick: PropTypes.func,
21
22 /** The content of the non-toggle Button. */
23 title: PropTypes.node.isRequired,
24
25 /** Disables both Buttons */
26 disabled: PropTypes.bool,
27
28 /**
29 * Aligns the dropdown menu responsively.
30 *
31 * _see [DropdownMenu](#dropdown-menu-props) for more details_
32 *
33 * @type {"left"|"right"|{ sm: "left"|"right" }|{ md: "left"|"right" }|{ lg: "left"|"right" }|{ xl: "left"|"right"} }
34 */
35 menuAlign: alignPropType,
36
37 /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */
38 menuRole: PropTypes.string,
39
40 /** Whether to render the dropdown menu in the DOM before the first time it is shown */
41 renderMenuOnMount: PropTypes.bool,
42
43 /**
44 * Which event when fired outside the component will cause it to be closed.
45 *
46 * _see [DropdownMenu](#dropdown-menu-props) for more details_
47 */
48 rootCloseEvent: PropTypes.string,
49
50 /** @ignore */
51 bsPrefix: PropTypes.string,
52
53 /** @ignore */
54 variant: PropTypes.string,
55
56 /** @ignore */
57 size: PropTypes.string
58};
59/**
60 * A convenience component for simple or general use dropdowns. Renders a `Button` toggle and all `children`
61 * are passed directly to the default `Dropdown.Menu`. This component accepts all of
62 * [`Dropdown`'s props](#dropdown-props).
63 *
64 * _All unknown props are passed through to the `Dropdown` component._ Only
65 * the Button `variant`, `size` and `bsPrefix` props are passed to the toggle,
66 * along with menu-related props are passed to the `Dropdown.Menu`
67 */
68
69var DropdownButton = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
70 var title = _ref.title,
71 children = _ref.children,
72 bsPrefix = _ref.bsPrefix,
73 rootCloseEvent = _ref.rootCloseEvent,
74 variant = _ref.variant,
75 size = _ref.size,
76 menuAlign = _ref.menuAlign,
77 menuRole = _ref.menuRole,
78 renderMenuOnMount = _ref.renderMenuOnMount,
79 disabled = _ref.disabled,
80 href = _ref.href,
81 id = _ref.id,
82 props = _objectWithoutPropertiesLoose(_ref, ["title", "children", "bsPrefix", "rootCloseEvent", "variant", "size", "menuAlign", "menuRole", "renderMenuOnMount", "disabled", "href", "id"]);
83
84 return /*#__PURE__*/React.createElement(Dropdown, _extends({
85 ref: ref
86 }, props), /*#__PURE__*/React.createElement(DropdownToggle, {
87 id: id,
88 href: href,
89 size: size,
90 variant: variant,
91 disabled: disabled,
92 childBsPrefix: bsPrefix
93 }, title), /*#__PURE__*/React.createElement(DropdownMenu, {
94 align: menuAlign,
95 role: menuRole,
96 renderOnMount: renderMenuOnMount,
97 rootCloseEvent: rootCloseEvent
98 }, children));
99});
100DropdownButton.displayName = 'DropdownButton';
101DropdownButton.propTypes = propTypes;
102export default DropdownButton;
\No newline at end of file