UNPKG

3.78 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 /** A `type` passed to the non-toggle Button */
48 type: _propTypes.default.string,
49
50 /** Disables both Buttons */
51 disabled: _propTypes.default.bool,
52
53 /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */
54 menuRole: _propTypes.default.string,
55
56 /**
57 * Which event when fired outside the component will cause it to be closed.
58 *
59 * _see [DropdownMenu](#menu-props) for more details_
60 */
61 rootCloseEvent: _propTypes.default.string,
62
63 /** @ignore */
64 bsPrefix: _propTypes.default.string,
65
66 /** @ignore */
67 variant: _propTypes.default.string,
68
69 /** @ignore */
70 size: _propTypes.default.string
71};
72var defaultProps = {
73 toggleLabel: 'Toggle dropdown',
74 type: 'button'
75};
76
77var SplitButton = _react.default.forwardRef(function (_ref, ref) {
78 var id = _ref.id,
79 bsPrefix = _ref.bsPrefix,
80 size = _ref.size,
81 variant = _ref.variant,
82 title = _ref.title,
83 type = _ref.type,
84 toggleLabel = _ref.toggleLabel,
85 children = _ref.children,
86 onClick = _ref.onClick,
87 href = _ref.href,
88 target = _ref.target,
89 menuRole = _ref.menuRole,
90 rootCloseEvent = _ref.rootCloseEvent,
91 props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["id", "bsPrefix", "size", "variant", "title", "type", "toggleLabel", "children", "onClick", "href", "target", "menuRole", "rootCloseEvent"]);
92 return _react.default.createElement(_Dropdown.default, (0, _extends2.default)({
93 ref: ref
94 }, props, {
95 as: _ButtonGroup.default
96 }), _react.default.createElement(_Button.default, {
97 size: size,
98 variant: variant,
99 disabled: props.disabled,
100 bsPrefix: bsPrefix,
101 href: href,
102 target: target,
103 onClick: onClick,
104 type: type
105 }, title), _react.default.createElement(_Dropdown.default.Toggle, {
106 split: true,
107 id: id,
108 size: size,
109 variant: variant,
110 disabled: props.disabled,
111 childBsPrefix: bsPrefix
112 }, _react.default.createElement("span", {
113 className: "sr-only"
114 }, toggleLabel)), _react.default.createElement(_Dropdown.default.Menu, {
115 role: menuRole,
116 rootCloseEvent: rootCloseEvent
117 }, children));
118});
119
120SplitButton.propTypes = propTypes;
121SplitButton.defaultProps = defaultProps;
122SplitButton.displayName = 'SplitButton';
123var _default = SplitButton;
124exports.default = _default;
125module.exports = exports["default"];
\No newline at end of file