UNPKG

5.89 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _assign = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/assign"));
9
10var _values = _interopRequireDefault(require("@babel/runtime-corejs2/core-js/object/values"));
11
12var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
13
14var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inheritsLoose"));
15
16var _classnames = _interopRequireDefault(require("classnames"));
17
18var _propTypes = _interopRequireDefault(require("prop-types"));
19
20var _react = _interopRequireDefault(require("react"));
21
22var _uncontrollable = _interopRequireDefault(require("uncontrollable"));
23
24var _warning = _interopRequireDefault(require("warning"));
25
26var _bootstrapUtils = require("./utils/bootstrapUtils");
27
28var _StyleConfig = require("./utils/StyleConfig");
29
30var _PanelBody = _interopRequireDefault(require("./PanelBody"));
31
32var _PanelHeading = _interopRequireDefault(require("./PanelHeading"));
33
34var _PanelTitle = _interopRequireDefault(require("./PanelTitle"));
35
36var _PanelFooter = _interopRequireDefault(require("./PanelFooter"));
37
38var _PanelToggle = _interopRequireDefault(require("./PanelToggle"));
39
40var _PanelCollapse = _interopRequireDefault(require("./PanelCollapse"));
41
42var has = Object.prototype.hasOwnProperty;
43
44var defaultGetId = function defaultGetId(id, type) {
45 return id ? id + "--" + type : null;
46};
47
48var propTypes = {
49 /**
50 * Controls the collapsed/expanded state ofthe Panel. Requires
51 * a `Panel.Collapse` or `<Panel.Body collapsible>` child component
52 * in order to actually animate out or in.
53 *
54 * @controllable onToggle
55 */
56 expanded: _propTypes.default.bool,
57
58 /**
59 * A callback fired when the collapse state changes.
60 *
61 * @controllable expanded
62 */
63 onToggle: _propTypes.default.func,
64 eventKey: _propTypes.default.any,
65
66 /**
67 * An HTML `id` attribute uniquely identifying the Panel component.
68 */
69 id: _propTypes.default.string
70};
71var contextTypes = {
72 $bs_panelGroup: _propTypes.default.shape({
73 getId: _propTypes.default.func,
74 activeKey: _propTypes.default.any,
75 onToggle: _propTypes.default.func
76 })
77};
78var childContextTypes = {
79 $bs_panel: _propTypes.default.shape({
80 headingId: _propTypes.default.string,
81 bodyId: _propTypes.default.string,
82 bsClass: _propTypes.default.string,
83 onToggle: _propTypes.default.func,
84 expanded: _propTypes.default.bool
85 })
86};
87
88var Panel =
89/*#__PURE__*/
90function (_React$Component) {
91 (0, _inheritsLoose2.default)(Panel, _React$Component);
92
93 function Panel() {
94 var _this;
95
96 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
97 args[_key] = arguments[_key];
98 }
99
100 _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;
101
102 _this.handleToggle = function (e) {
103 var panelGroup = _this.context.$bs_panelGroup;
104 var expanded = !_this.getExpanded();
105
106 if (panelGroup && panelGroup.onToggle) {
107 panelGroup.onToggle(_this.props.eventKey, expanded, e);
108 } else {
109 _this.props.onToggle(expanded, e);
110 }
111 };
112
113 return _this;
114 }
115
116 var _proto = Panel.prototype;
117
118 _proto.getChildContext = function getChildContext() {
119 var _this$props = this.props,
120 eventKey = _this$props.eventKey,
121 id = _this$props.id;
122 var idKey = eventKey == null ? id : eventKey;
123 var ids;
124
125 if (idKey !== null) {
126 var panelGroup = this.context.$bs_panelGroup;
127 var getId = panelGroup && panelGroup.getId || defaultGetId;
128 ids = {
129 headingId: getId(idKey, 'heading'),
130 bodyId: getId(idKey, 'body')
131 };
132 }
133
134 return {
135 $bs_panel: (0, _extends2.default)({}, ids, {
136 bsClass: this.props.bsClass,
137 expanded: this.getExpanded(),
138 onToggle: this.handleToggle
139 })
140 };
141 };
142
143 _proto.getExpanded = function getExpanded() {
144 var panelGroup = this.context.$bs_panelGroup;
145
146 if (panelGroup && has.call(panelGroup, 'activeKey')) {
147 process.env.NODE_ENV !== "production" ? (0, _warning.default)(this.props.expanded == null, 'Specifying `<Panel>` `expanded` in the context of an accordion ' + '`<PanelGroup>` is not supported. Set `activeKey` on the ' + '`<PanelGroup>` instead.') : void 0;
148 return panelGroup.activeKey === this.props.eventKey;
149 }
150
151 return !!this.props.expanded;
152 };
153
154 _proto.render = function render() {
155 var _this$props2 = this.props,
156 className = _this$props2.className,
157 children = _this$props2.children;
158
159 var _splitBsPropsAndOmit = (0, _bootstrapUtils.splitBsPropsAndOmit)(this.props, ['onToggle', 'eventKey', 'expanded']),
160 bsProps = _splitBsPropsAndOmit[0],
161 props = _splitBsPropsAndOmit[1];
162
163 return _react.default.createElement("div", (0, _extends2.default)({}, props, {
164 className: (0, _classnames.default)(className, (0, _bootstrapUtils.getClassSet)(bsProps))
165 }), children);
166 };
167
168 return Panel;
169}(_react.default.Component);
170
171Panel.propTypes = propTypes;
172Panel.contextTypes = contextTypes;
173Panel.childContextTypes = childContextTypes;
174var UncontrolledPanel = (0, _uncontrollable.default)((0, _bootstrapUtils.bsClass)('panel', (0, _bootstrapUtils.bsStyles)((0, _values.default)(_StyleConfig.State).concat([_StyleConfig.Style.DEFAULT, _StyleConfig.Style.PRIMARY]), _StyleConfig.Style.DEFAULT, Panel)), {
175 expanded: 'onToggle'
176});
177(0, _assign.default)(UncontrolledPanel, {
178 Heading: _PanelHeading.default,
179 Title: _PanelTitle.default,
180 Body: _PanelBody.default,
181 Footer: _PanelFooter.default,
182 Toggle: _PanelToggle.default,
183 Collapse: _PanelCollapse.default
184});
185var _default = UncontrolledPanel;
186exports.default = _default;
187module.exports = exports["default"];
\No newline at end of file