1 | import _Object$assign from 'babel-runtime/core-js/object/assign';
|
2 | import _Object$values from 'babel-runtime/core-js/object/values';
|
3 | import _extends from 'babel-runtime/helpers/extends';
|
4 | import _classCallCheck from 'babel-runtime/helpers/classCallCheck';
|
5 | import _possibleConstructorReturn from 'babel-runtime/helpers/possibleConstructorReturn';
|
6 | import _inherits from 'babel-runtime/helpers/inherits';
|
7 | import classNames from 'classnames';
|
8 | import PropTypes from 'prop-types';
|
9 | import React from 'react';
|
10 | import uncontrollable from 'uncontrollable';
|
11 |
|
12 | import { bsStyles, bsClass, getClassSet, splitBsPropsAndOmit } from './utils/bootstrapUtils';
|
13 | import { State, Style } from './utils/StyleConfig';
|
14 | import Body from './PanelBody';
|
15 | import Heading from './PanelHeading';
|
16 | import Title from './PanelTitle';
|
17 | import Footer from './PanelFooter';
|
18 | import Toggle from './PanelToggle';
|
19 | import Collapse from './PanelCollapse';
|
20 |
|
21 | var defaultGetId = function defaultGetId(id, type) {
|
22 | return id ? id + '--' + type : null;
|
23 | };
|
24 |
|
25 | var propTypes = {
|
26 | |
27 |
|
28 |
|
29 |
|
30 |
|
31 |
|
32 |
|
33 | expanded: PropTypes.bool,
|
34 | |
35 |
|
36 |
|
37 |
|
38 |
|
39 | onToggle: PropTypes.func,
|
40 | eventKey: PropTypes.any,
|
41 |
|
42 | |
43 |
|
44 |
|
45 | id: PropTypes.string
|
46 | };
|
47 |
|
48 | var contextTypes = {
|
49 | $bs_panelGroup: PropTypes.shape({
|
50 | getId: PropTypes.func,
|
51 | activeKey: PropTypes.any,
|
52 | onToggle: PropTypes.func
|
53 | })
|
54 | };
|
55 |
|
56 | var childContextTypes = {
|
57 | $bs_panel: PropTypes.shape({
|
58 | headingId: PropTypes.string,
|
59 | bodyId: PropTypes.string,
|
60 | bsClass: PropTypes.string,
|
61 | onToggle: PropTypes.func,
|
62 | expanded: PropTypes.bool
|
63 | })
|
64 | };
|
65 |
|
66 | var Panel = function (_React$Component) {
|
67 | _inherits(Panel, _React$Component);
|
68 |
|
69 | function Panel() {
|
70 | _classCallCheck(this, Panel);
|
71 |
|
72 | for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {
|
73 | args[_key] = arguments[_key];
|
74 | }
|
75 |
|
76 | var _this = _possibleConstructorReturn(this, _React$Component.call.apply(_React$Component, [this].concat(args)));
|
77 |
|
78 | _this.handleToggle = _this.handleToggle.bind(_this);
|
79 | return _this;
|
80 | }
|
81 |
|
82 | Panel.prototype.getChildContext = function getChildContext() {
|
83 | var _props = this.props,
|
84 | eventKey = _props.eventKey,
|
85 | id = _props.id;
|
86 |
|
87 | var _ref = this.context.$bs_panelGroup || {},
|
88 | getId = _ref.getId;
|
89 |
|
90 | var ids = void 0;
|
91 | var idKey = eventKey == null ? id : eventKey;
|
92 |
|
93 | if (idKey !== null) {
|
94 | getId = getId || defaultGetId;
|
95 | ids = {
|
96 | headingId: getId(idKey, 'heading'),
|
97 | bodyId: getId(idKey, 'body')
|
98 | };
|
99 | }
|
100 |
|
101 | return {
|
102 | $bs_panel: _extends({}, ids, {
|
103 | bsClass: this.props.bsClass,
|
104 | expanded: this.getExpanded(),
|
105 | onToggle: this.handleToggle
|
106 | })
|
107 | };
|
108 | };
|
109 |
|
110 | Panel.prototype.getExpanded = function getExpanded() {
|
111 | var eventKey = this.props.eventKey;
|
112 |
|
113 | var _ref2 = this.context.$bs_panelGroup || {},
|
114 | activeKey = _ref2.activeKey;
|
115 |
|
116 | return this.props.expanded != null || activeKey === undefined ? this.props.expanded : activeKey === eventKey;
|
117 | };
|
118 |
|
119 | Panel.prototype.handleToggle = function handleToggle(e) {
|
120 | var _ref3 = this.context.$bs_panelGroup || {},
|
121 | onToggle = _ref3.onToggle;
|
122 |
|
123 | var expanded = !this.getExpanded();
|
124 |
|
125 | this.props.onToggle(expanded, e);
|
126 | if (onToggle) {
|
127 | onToggle(this.props.eventKey, expanded, e);
|
128 | }
|
129 | };
|
130 |
|
131 | Panel.prototype.render = function render() {
|
132 | var _props2 = this.props,
|
133 | className = _props2.className,
|
134 | children = _props2.children;
|
135 |
|
136 | var _splitBsPropsAndOmit = splitBsPropsAndOmit(this.props, ['onToggle', 'eventKey', 'expanded']),
|
137 | bsProps = _splitBsPropsAndOmit[0],
|
138 | props = _splitBsPropsAndOmit[1];
|
139 |
|
140 | return React.createElement(
|
141 | 'div',
|
142 | _extends({}, props, { className: classNames(className, getClassSet(bsProps)) }),
|
143 | children
|
144 | );
|
145 | };
|
146 |
|
147 | return Panel;
|
148 | }(React.Component);
|
149 |
|
150 | Panel.propTypes = propTypes;
|
151 |
|
152 | Panel.contextTypes = contextTypes;
|
153 | Panel.childContextTypes = childContextTypes;
|
154 |
|
155 | var UncontrolledPanel = uncontrollable(bsClass('panel', bsStyles([].concat(_Object$values(State), [Style.DEFAULT, Style.PRIMARY]), Style.DEFAULT, Panel)), { expanded: 'onToggle' });
|
156 |
|
157 | _Object$assign(UncontrolledPanel, {
|
158 | Heading: Heading,
|
159 | Title: Title,
|
160 | Body: Body,
|
161 | Footer: Footer,
|
162 | Toggle: Toggle,
|
163 | Collapse: Collapse
|
164 | });
|
165 |
|
166 | export default UncontrolledPanel; |
\ | No newline at end of file |