1 | import _objectWithoutProperties from 'babel-runtime/helpers/objectWithoutProperties';
|
2 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
3 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
4 | import _inherits from 'babel-runtime/helpers/inherits';
|
5 | import PropTypes from 'prop-types';
|
6 | import React from 'react';
|
7 | import classNames from 'classnames';
|
8 | import elementType from 'react-prop-types/lib/elementType';
|
9 | import SafeAnchor from './SafeAnchor';
|
10 | import createChainedFunction from './utils/createChainedFunction';
|
11 |
|
12 | var propTypes = {
|
13 | |
14 |
|
15 |
|
16 |
|
17 |
|
18 | onClick: PropTypes.func,
|
19 | |
20 |
|
21 |
|
22 | componentClass: elementType
|
23 | };
|
24 |
|
25 | var defaultProps = {
|
26 | componentClass: SafeAnchor
|
27 | };
|
28 |
|
29 | var contextTypes = {
|
30 | $bs_panel: PropTypes.shape({
|
31 | bodyId: PropTypes.string,
|
32 | onToggle: PropTypes.func,
|
33 | expanded: PropTypes.bool
|
34 | })
|
35 | };
|
36 |
|
37 | var PanelToggle = function (_React$Component) {
|
38 | _inherits(PanelToggle, _React$Component);
|
39 |
|
40 | function PanelToggle() {
|
41 | _classCallCheck(this, PanelToggle);
|
42 |
|
43 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
44 | args[_key] = arguments[_key];
|
45 | }
|
46 |
|
47 | var _this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args)));
|
48 |
|
49 | _this.handleToggle = _this.handleToggle.bind(_this);
|
50 | return _this;
|
51 | }
|
52 |
|
53 | PanelToggle.prototype.handleToggle = function handleToggle(event) {
|
54 | var _ref = this.context.$bs_panel || {},
|
55 | onToggle = _ref.onToggle;
|
56 |
|
57 | if (onToggle) {
|
58 | onToggle(event);
|
59 | }
|
60 | };
|
61 |
|
62 | PanelToggle.prototype.render = function render() {
|
63 | var _props = this.props,
|
64 | onClick = _props.onClick,
|
65 | className = _props.className,
|
66 | componentClass = _props.componentClass,
|
67 | props = _objectWithoutProperties(_props, ['onClick', 'className', 'componentClass']);
|
68 |
|
69 | var _ref2 = this.context.$bs_panel || {},
|
70 | expanded = _ref2.expanded,
|
71 | bodyId = _ref2.bodyId;
|
72 |
|
73 | var Component = componentClass;
|
74 |
|
75 | props.onClick = createChainedFunction(onClick, this.handleToggle);
|
76 |
|
77 | props['aria-expanded'] = expanded;
|
78 | props.className = classNames(className, !expanded && 'collapsed');
|
79 |
|
80 | if (bodyId) {
|
81 | props['aria-controls'] = bodyId;
|
82 | }
|
83 |
|
84 | return React.createElement(Component, props);
|
85 | };
|
86 |
|
87 | return PanelToggle;
|
88 | }(React.Component);
|
89 |
|
90 | PanelToggle.propTypes = propTypes;
|
91 | PanelToggle.defaultProps = defaultProps;
|
92 | PanelToggle.contextTypes = contextTypes;
|
93 |
|
94 | export default PanelToggle; |
\ | No newline at end of file |