UNPKG

6.35 kBJavaScriptView Raw
1'use strict';
2
3exports.__esModule = true;
4
5var _assign = require('babel-runtime/core-js/object/assign');
6
7var _assign2 = _interopRequireDefault(_assign);
8
9var _values = require('babel-runtime/core-js/object/values');
10
11var _values2 = _interopRequireDefault(_values);
12
13var _extends2 = require('babel-runtime/helpers/extends');
14
15var _extends3 = _interopRequireDefault(_extends2);
16
17var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
18
19var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
20
21var _possibleConstructorReturn2 = require('babel-runtime/helpers/possibleConstructorReturn');
22
23var _possibleConstructorReturn3 = _interopRequireDefault(_possibleConstructorReturn2);
24
25var _inherits2 = require('babel-runtime/helpers/inherits');
26
27var _inherits3 = _interopRequireDefault(_inherits2);
28
29var _classnames = require('classnames');
30
31var _classnames2 = _interopRequireDefault(_classnames);
32
33var _propTypes = require('prop-types');
34
35var _propTypes2 = _interopRequireDefault(_propTypes);
36
37var _react = require('react');
38
39var _react2 = _interopRequireDefault(_react);
40
41var _uncontrollable = require('uncontrollable');
42
43var _uncontrollable2 = _interopRequireDefault(_uncontrollable);
44
45var _bootstrapUtils = require('./utils/bootstrapUtils');
46
47var _StyleConfig = require('./utils/StyleConfig');
48
49var _PanelBody = require('./PanelBody');
50
51var _PanelBody2 = _interopRequireDefault(_PanelBody);
52
53var _PanelHeading = require('./PanelHeading');
54
55var _PanelHeading2 = _interopRequireDefault(_PanelHeading);
56
57var _PanelTitle = require('./PanelTitle');
58
59var _PanelTitle2 = _interopRequireDefault(_PanelTitle);
60
61var _PanelFooter = require('./PanelFooter');
62
63var _PanelFooter2 = _interopRequireDefault(_PanelFooter);
64
65var _PanelToggle = require('./PanelToggle');
66
67var _PanelToggle2 = _interopRequireDefault(_PanelToggle);
68
69var _PanelCollapse = require('./PanelCollapse');
70
71var _PanelCollapse2 = _interopRequireDefault(_PanelCollapse);
72
73function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
74
75var defaultGetId = function defaultGetId(id, type) {
76 return id ? id + '--' + type : null;
77};
78
79var propTypes = {
80 /**
81 * Controls the collapsed/expanded state ofthe Panel. Requires
82 * a `Panel.Collapse` or `<Panel.Body collapsible>` child component
83 * in order to actually animate out or in.
84 *
85 * @controllable onToggle
86 */
87 expanded: _propTypes2.default.bool,
88 /**
89 * A callback fired when the collapse state changes.
90 *
91 * @controllable expanded
92 */
93 onToggle: _propTypes2.default.func,
94 eventKey: _propTypes2.default.any,
95
96 /**
97 * An HTML `id` attribute uniquely identifying the Panel component.
98 */
99 id: _propTypes2.default.string
100};
101
102var contextTypes = {
103 $bs_panelGroup: _propTypes2.default.shape({
104 getId: _propTypes2.default.func,
105 activeKey: _propTypes2.default.any,
106 onToggle: _propTypes2.default.func
107 })
108};
109
110var childContextTypes = {
111 $bs_panel: _propTypes2.default.shape({
112 headingId: _propTypes2.default.string,
113 bodyId: _propTypes2.default.string,
114 bsClass: _propTypes2.default.string,
115 onToggle: _propTypes2.default.func,
116 expanded: _propTypes2.default.bool
117 })
118};
119
120var Panel = function (_React$Component) {
121 (0, _inherits3.default)(Panel, _React$Component);
122
123 function Panel() {
124 (0, _classCallCheck3.default)(this, Panel);
125
126 for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
127 args[_key] = arguments[_key];
128 }
129
130 var _this = (0, _possibleConstructorReturn3.default)(this, _React$Component.call.apply(_React$Component, [this].concat(args)));
131
132 _this.handleToggle = _this.handleToggle.bind(_this);
133 return _this;
134 }
135
136 Panel.prototype.getChildContext = function getChildContext() {
137 var _props = this.props,
138 eventKey = _props.eventKey,
139 id = _props.id;
140
141 var _ref = this.context.$bs_panelGroup || {},
142 getId = _ref.getId;
143
144 var ids = void 0;
145 var idKey = eventKey == null ? id : eventKey;
146
147 if (idKey !== null) {
148 getId = getId || defaultGetId;
149 ids = {
150 headingId: getId(idKey, 'heading'),
151 bodyId: getId(idKey, 'body')
152 };
153 }
154
155 return {
156 $bs_panel: (0, _extends3.default)({}, ids, {
157 bsClass: this.props.bsClass,
158 expanded: this.getExpanded(),
159 onToggle: this.handleToggle
160 })
161 };
162 };
163
164 Panel.prototype.getExpanded = function getExpanded() {
165 var eventKey = this.props.eventKey;
166
167 var _ref2 = this.context.$bs_panelGroup || {},
168 activeKey = _ref2.activeKey;
169
170 return this.props.expanded != null || activeKey === undefined ? this.props.expanded : activeKey === eventKey;
171 };
172
173 Panel.prototype.handleToggle = function handleToggle(e) {
174 var _ref3 = this.context.$bs_panelGroup || {},
175 onToggle = _ref3.onToggle;
176
177 var expanded = !this.getExpanded();
178
179 this.props.onToggle(expanded, e);
180 if (onToggle) {
181 onToggle(this.props.eventKey, expanded, e);
182 }
183 };
184
185 Panel.prototype.render = function render() {
186 var _props2 = this.props,
187 className = _props2.className,
188 children = _props2.children;
189
190 var _splitBsPropsAndOmit = (0, _bootstrapUtils.splitBsPropsAndOmit)(this.props, ['onToggle', 'eventKey', 'expanded']),
191 bsProps = _splitBsPropsAndOmit[0],
192 props = _splitBsPropsAndOmit[1];
193
194 return _react2.default.createElement(
195 'div',
196 (0, _extends3.default)({}, props, { className: (0, _classnames2.default)(className, (0, _bootstrapUtils.getClassSet)(bsProps)) }),
197 children
198 );
199 };
200
201 return Panel;
202}(_react2.default.Component);
203
204Panel.propTypes = propTypes;
205
206Panel.contextTypes = contextTypes;
207Panel.childContextTypes = childContextTypes;
208
209var UncontrolledPanel = (0, _uncontrollable2.default)((0, _bootstrapUtils.bsClass)('panel', (0, _bootstrapUtils.bsStyles)([].concat((0, _values2.default)(_StyleConfig.State), [_StyleConfig.Style.DEFAULT, _StyleConfig.Style.PRIMARY]), _StyleConfig.Style.DEFAULT, Panel)), { expanded: 'onToggle' });
210
211(0, _assign2.default)(UncontrolledPanel, {
212 Heading: _PanelHeading2.default,
213 Title: _PanelTitle2.default,
214 Body: _PanelBody2.default,
215 Footer: _PanelFooter2.default,
216 Toggle: _PanelToggle2.default,
217 Collapse: _PanelCollapse2.default
218});
219
220exports.default = UncontrolledPanel;
221module.exports = exports['default'];
\No newline at end of file