UNPKG

3.32 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutPropertiesLoose"));
9
10var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inheritsLoose"));
11
12var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/assertThisInitialized"));
13
14var _propTypes = _interopRequireDefault(require("prop-types"));
15
16var _react = _interopRequireDefault(require("react"));
17
18var _classnames = _interopRequireDefault(require("classnames"));
19
20var _elementType = _interopRequireDefault(require("react-prop-types/lib/elementType"));
21
22var _SafeAnchor = _interopRequireDefault(require("./SafeAnchor"));
23
24var _createChainedFunction = _interopRequireDefault(require("./utils/createChainedFunction"));
25
26var propTypes = {
27 /**
28 * only here to satisfy linting, just the html onClick handler.
29 *
30 * @private
31 */
32 onClick: _propTypes.default.func,
33
34 /**
35 * You can use a custom element for this component
36 */
37 componentClass: _elementType.default
38};
39var defaultProps = {
40 componentClass: _SafeAnchor.default
41};
42var contextTypes = {
43 $bs_panel: _propTypes.default.shape({
44 bodyId: _propTypes.default.string,
45 onToggle: _propTypes.default.func,
46 expanded: _propTypes.default.bool
47 })
48};
49
50var PanelToggle =
51/*#__PURE__*/
52function (_React$Component) {
53 (0, _inheritsLoose2.default)(PanelToggle, _React$Component);
54
55 function PanelToggle() {
56 var _this;
57
58 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
59 args[_key] = arguments[_key];
60 }
61
62 _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
63 _this.handleToggle = _this.handleToggle.bind((0, _assertThisInitialized2.default)((0, _assertThisInitialized2.default)(_this)));
64 return _this;
65 }
66
67 var _proto = PanelToggle.prototype;
68
69 _proto.handleToggle = function handleToggle(event) {
70 var _ref = this.context.$bs_panel || {},
71 onToggle = _ref.onToggle;
72
73 if (onToggle) {
74 onToggle(event);
75 }
76 };
77
78 _proto.render = function render() {
79 var _this$props = this.props,
80 onClick = _this$props.onClick,
81 className = _this$props.className,
82 componentClass = _this$props.componentClass,
83 props = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["onClick", "className", "componentClass"]);
84
85 var _ref2 = this.context.$bs_panel || {},
86 expanded = _ref2.expanded,
87 bodyId = _ref2.bodyId;
88
89 var Component = componentClass;
90 props.onClick = (0, _createChainedFunction.default)(onClick, this.handleToggle);
91 props['aria-expanded'] = expanded;
92 props.className = (0, _classnames.default)(className, !expanded && 'collapsed');
93
94 if (bodyId) {
95 props['aria-controls'] = bodyId;
96 }
97
98 return _react.default.createElement(Component, props);
99 };
100
101 return PanelToggle;
102}(_react.default.Component);
103
104PanelToggle.propTypes = propTypes;
105PanelToggle.defaultProps = defaultProps;
106PanelToggle.contextTypes = contextTypes;
107var _default = PanelToggle;
108exports.default = _default;
109module.exports = exports["default"];
\No newline at end of file