-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy pathDropdownButton.js
46 lines (36 loc) · 1.04 KB
/
DropdownButton.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import React from 'react';
import PropTypes from 'prop-types';
import Dropdown from './Dropdown';
import splitComponentProps from './utils/splitComponentProps';
const propTypes = {
...Dropdown.propTypes,
// Toggle props.
bsStyle: PropTypes.string,
bsSize: PropTypes.string,
title: PropTypes.node.isRequired,
noCaret: PropTypes.bool,
// Override generated docs from <Dropdown>.
/**
* @private
*/
children: PropTypes.node
};
class DropdownButton extends React.Component {
render() {
const { bsSize, bsStyle, title, children, ...props } = this.props;
const [dropdownProps, toggleProps] = splitComponentProps(
props,
Dropdown.ControlledComponent
);
return (
<Dropdown {...dropdownProps} bsSize={bsSize} bsStyle={bsStyle}>
<Dropdown.Toggle {...toggleProps} bsSize={bsSize} bsStyle={bsStyle}>
{title}
</Dropdown.Toggle>
<Dropdown.Menu>{children}</Dropdown.Menu>
</Dropdown>
);
}
}
DropdownButton.propTypes = propTypes;
export default DropdownButton;