UNPKG

3.7 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _objectWithoutProperties2 = require('babel-runtime/helpers/objectWithoutProperties');
6
7var _objectWithoutProperties3 = _interopRequireDefault(_objectWithoutProperties2);
8
9var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
10
11var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
12
13var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
14
15var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
16
17var _inherits2 = require('babel-runtime/helpers/inherits');
18
19var _inherits3 = _interopRequireDefault(_inherits2);
20
21var _propTypes = require('prop-types');
22
23var _propTypes2 = _interopRequireDefault(_propTypes);
24
25var _react = require('react');
26
27var _react2 = _interopRequireDefault(_react);
28
29var _classnames = require('classnames');
30
31var _classnames2 = _interopRequireDefault(_classnames);
32
33var _elementType = require('react-prop-types/lib/elementType');
34
35var _elementType2 = _interopRequireDefault(_elementType);
36
37var _SafeAnchor = require('./SafeAnchor');
38
39var _SafeAnchor2 = _interopRequireDefault(_SafeAnchor);
40
41var _createChainedFunction = require('./utils/createChainedFunction');
42
43var _createChainedFunction2 = _interopRequireDefault(_createChainedFunction);
44
45function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
46
47var propTypes = {
48 /**
49 * only here to satisfy linting, just the html onClick handler.
50 *
51 * @private
52 */
53 onClick: _propTypes2.default.func,
54 /**
55 * You can use a custom element for this component
56 */
57 componentClass: _elementType2.default
58};
59
60var defaultProps = {
61 componentClass: _SafeAnchor2.default
62};
63
64var contextTypes = {
65 $bs_panel: _propTypes2.default.shape({
66 bodyId: _propTypes2.default.string,
67 onToggle: _propTypes2.default.func,
68 expanded: _propTypes2.default.bool
69 })
70};
71
72var PanelToggle = function (_React$Component) {
73 (0, _inherits3.default)(PanelToggle, _React$Component);
74
75 function PanelToggle() {
76 (0, _classCallCheck3.default)(this, PanelToggle);
77
78 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
79 args[_key] = arguments[_key];
80 }
81
82 var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args)));
83
84 _this.handleToggle = _this.handleToggle.bind(_this);
85 return _this;
86 }
87
88 PanelToggle.prototype.handleToggle = function handleToggle(event) {
89 var _ref = this.context.$bs_panel || {},
90 onToggle = _ref.onToggle;
91
92 if (onToggle) {
93 onToggle(event);
94 }
95 };
96
97 PanelToggle.prototype.render = function render() {
98 var _props = this.props,
99 onClick = _props.onClick,
100 className = _props.className,
101 componentClass = _props.componentClass,
102 props = (0, _objectWithoutProperties3.default)(_props, ['onClick', 'className', 'componentClass']);
103
104 var _ref2 = this.context.$bs_panel || {},
105 expanded = _ref2.expanded,
106 bodyId = _ref2.bodyId;
107
108 var Component = componentClass;
109
110 props.onClick = (0, _createChainedFunction2.default)(onClick, this.handleToggle);
111
112 props['aria-expanded'] = expanded;
113 props.className = (0, _classnames2.default)(className, !expanded && 'collapsed');
114
115 if (bodyId) {
116 props['aria-controls'] = bodyId;
117 }
118
119 return _react2.default.createElement(Component, props);
120 };
121
122 return PanelToggle;
123}(_react2.default.Component);
124
125PanelToggle.propTypes = propTypes;
126PanelToggle.defaultProps = defaultProps;
127PanelToggle.contextTypes = contextTypes;
128
129exports.default = PanelToggle;
130module.exports = exports['default'];
\No newline at end of file