UNPKG

3.63 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
12var _react = _interopRequireDefault(require("react"));
13
14var _propTypes = _interopRequireDefault(require("prop-types"));
15
16var _Button = _interopRequireDefault(require("./Button"));
17
18var _ButtonGroup = _interopRequireDefault(require("./ButtonGroup"));
19
20var _Dropdown = _interopRequireDefault(require("./Dropdown"));
21
22var propTypes = {
23 /**
24 * An html id attribute for the Toggle button, necessary for assistive technologies, such as screen readers.
25 * @type {string|number}
26 * @required
27 */
28 id: _propTypes.default.any,
29
30 /**
31 * Accessible label for the toggle; the value of `title` if not specified.
32 */
33 toggleLabel: _propTypes.default.string,
34
35 /** An `href` passed to the non-toggle Button */
36 href: _propTypes.default.string,
37
38 /** An anchor `target` passed to the non-toggle Button */
39 target: _propTypes.default.string,
40
41 /** An `onClick` handler passed to the non-toggle Button */
42 onClick: _propTypes.default.func,
43
44 /** The content of the non-toggle Button. */
45 title: _propTypes.default.node.isRequired,
46
47 /** Disables both Buttons */
48 disabled: _propTypes.default.bool,
49
50 /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */
51 menuRole: _propTypes.default.string,
52
53 /**
54 * Which event when fired outside the component will cause it to be closed.
55 *
56 * _see [DropdownMenu](#menu-props) for more details_
57 */
58 rootCloseEvent: _propTypes.default.string,
59
60 /** @ignore */
61 bsPrefix: _propTypes.default.string,
62
63 /** @ignore */
64 variant: _propTypes.default.string,
65
66 /** @ignore */
67 size: _propTypes.default.string
68};
69var defaultProps = {
70 toggleLabel: 'Toggle dropdown'
71};
72
73var SplitButton = _react.default.forwardRef(function (_ref, ref) {
74 var id = _ref.id,
75 bsPrefix = _ref.bsPrefix,
76 size = _ref.size,
77 variant = _ref.variant,
78 title = _ref.title,
79 toggleLabel = _ref.toggleLabel,
80 children = _ref.children,
81 onClick = _ref.onClick,
82 href = _ref.href,
83 target = _ref.target,
84 menuRole = _ref.menuRole,
85 rootCloseEvent = _ref.rootCloseEvent,
86 props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["id", "bsPrefix", "size", "variant", "title", "toggleLabel", "children", "onClick", "href", "target", "menuRole", "rootCloseEvent"]);
87 return _react.default.createElement(_Dropdown.default, (0, _extends2.default)({
88 ref: ref
89 }, props, {
90 as: _ButtonGroup.default
91 }), _react.default.createElement(_Button.default, {
92 size: size,
93 variant: variant,
94 disabled: props.disabled,
95 bsPrefix: bsPrefix,
96 href: href,
97 target: target,
98 onClick: onClick
99 }, title), _react.default.createElement(_Dropdown.default.Toggle, {
100 split: true,
101 id: id,
102 size: size,
103 variant: variant,
104 disabled: props.disabled,
105 childBsPrefix: bsPrefix
106 }, _react.default.createElement("span", {
107 className: "sr-only"
108 }, toggleLabel)), _react.default.createElement(_Dropdown.default.Menu, {
109 role: menuRole,
110 rootCloseEvent: rootCloseEvent
111 }, children));
112});
113
114SplitButton.propTypes = propTypes;
115SplitButton.defaultProps = defaultProps;
116SplitButton.displayName = 'SplitButton';
117var _default = SplitButton;
118exports.default = _default;
119module.exports = exports["default"];
\No newline at end of file