UNPKG

2.98 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 Button from './Button';
6import ButtonGroup from './ButtonGroup';
7import Dropdown from './Dropdown';
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 /**
17 * Accessible label for the toggle; the value of `title` if not specified.
18 */
19 toggleLabel: PropTypes.string,
20
21 /** An `href` passed to the non-toggle Button */
22 href: PropTypes.string,
23
24 /** An anchor `target` passed to the non-toggle Button */
25 target: PropTypes.string,
26
27 /** An `onClick` handler passed to the non-toggle Button */
28 onClick: PropTypes.func,
29
30 /** The content of the non-toggle Button. */
31 title: PropTypes.node.isRequired,
32
33 /** Disables both Buttons */
34 disabled: PropTypes.bool,
35
36 /** An ARIA accessible role applied to the Menu component. When set to 'menu', The dropdown */
37 menuRole: PropTypes.string,
38
39 /**
40 * Which event when fired outside the component will cause it to be closed.
41 *
42 * _see [DropdownMenu](#menu-props) for more details_
43 */
44 rootCloseEvent: PropTypes.string,
45
46 /** @ignore */
47 bsPrefix: PropTypes.string,
48
49 /** @ignore */
50 variant: PropTypes.string,
51
52 /** @ignore */
53 size: PropTypes.string
54};
55var defaultProps = {
56 toggleLabel: 'Toggle dropdown'
57};
58var SplitButton = React.forwardRef(function (_ref, ref) {
59 var id = _ref.id,
60 bsPrefix = _ref.bsPrefix,
61 size = _ref.size,
62 variant = _ref.variant,
63 title = _ref.title,
64 toggleLabel = _ref.toggleLabel,
65 children = _ref.children,
66 onClick = _ref.onClick,
67 href = _ref.href,
68 target = _ref.target,
69 menuRole = _ref.menuRole,
70 rootCloseEvent = _ref.rootCloseEvent,
71 props = _objectWithoutPropertiesLoose(_ref, ["id", "bsPrefix", "size", "variant", "title", "toggleLabel", "children", "onClick", "href", "target", "menuRole", "rootCloseEvent"]);
72
73 return React.createElement(Dropdown, _extends({
74 ref: ref
75 }, props, {
76 as: ButtonGroup
77 }), React.createElement(Button, {
78 size: size,
79 variant: variant,
80 disabled: props.disabled,
81 bsPrefix: bsPrefix,
82 href: href,
83 target: target,
84 onClick: onClick
85 }, title), React.createElement(Dropdown.Toggle, {
86 split: true,
87 id: id,
88 size: size,
89 variant: variant,
90 disabled: props.disabled,
91 childBsPrefix: bsPrefix
92 }, React.createElement("span", {
93 className: "sr-only"
94 }, toggleLabel)), React.createElement(Dropdown.Menu, {
95 role: menuRole,
96 rootCloseEvent: rootCloseEvent
97 }, children));
98});
99SplitButton.propTypes = propTypes;
100SplitButton.defaultProps = defaultProps;
101SplitButton.displayName = 'SplitButton';
102export default SplitButton;
\No newline at end of file