1 | 'use strict';
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 |
|
7 | var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
|
8 |
|
9 | var _classnames = require('classnames');
|
10 |
|
11 | var _classnames2 = _interopRequireDefault(_classnames);
|
12 |
|
13 | var _react = require('react');
|
14 |
|
15 | var _react2 = _interopRequireDefault(_react);
|
16 |
|
17 | var _propTypes = require('prop-types');
|
18 |
|
19 | var _propTypes2 = _interopRequireDefault(_propTypes);
|
20 |
|
21 | var _tinperBeeCore = require('tinper-bee-core');
|
22 |
|
23 | function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
24 |
|
25 | function _defaults(obj, defaults) { var keys = Object.getOwnPropertyNames(defaults); for (var i = 0; i < keys.length; i++) { var key = keys[i]; var value = Object.getOwnPropertyDescriptor(defaults, key); if (value && value.configurable && obj[key] === undefined) { Object.defineProperty(obj, key, value); } } return obj; }
|
26 |
|
27 | function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; }
|
28 |
|
29 | function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
30 |
|
31 | function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
32 |
|
33 | function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : _defaults(subClass, superClass); }
|
34 |
|
35 | var propTypes = {
|
36 |
|
37 | accordion: _propTypes2["default"].bool,
|
38 |
|
39 | activeKey: _propTypes2["default"].any,
|
40 |
|
41 | defaultActiveKey: _propTypes2["default"].any,
|
42 |
|
43 | onSelect: _propTypes2["default"].func,
|
44 | role: _propTypes2["default"].string
|
45 | };
|
46 |
|
47 | var defaultProps = {
|
48 | accordion: false,
|
49 | clsPrefix: 'u-panel-group'
|
50 | };
|
51 |
|
52 |
|
53 |
|
54 | var PanelGroup = function (_React$Component) {
|
55 | _inherits(PanelGroup, _React$Component);
|
56 |
|
57 | function PanelGroup(props, context) {
|
58 | _classCallCheck(this, PanelGroup);
|
59 |
|
60 | var _this = _possibleConstructorReturn(this, _React$Component.call(this, props, context));
|
61 |
|
62 | _this.handleSelect = _this.handleSelect.bind(_this);
|
63 |
|
64 | _this.state = {
|
65 | activeKey: props.defaultActiveKey
|
66 | };
|
67 | return _this;
|
68 | }
|
69 |
|
70 | PanelGroup.prototype.handleSelect = function handleSelect(key, e) {
|
71 | e.preventDefault();
|
72 |
|
73 | if (this.props.onSelect) {
|
74 | this.props.onSelect(key, e);
|
75 | }
|
76 |
|
77 | if (this.state.activeKey === key) {
|
78 | key = null;
|
79 | }
|
80 |
|
81 | this.setState({ activeKey: key });
|
82 | };
|
83 |
|
84 | PanelGroup.prototype.render = function render() {
|
85 | var _this2 = this;
|
86 |
|
87 | var _props = this.props,
|
88 | accordion = _props.accordion,
|
89 | propsActiveKey = _props.activeKey,
|
90 | className = _props.className,
|
91 | children = _props.children,
|
92 | defaultActiveKey = _props.defaultActiveKey,
|
93 | onSelect = _props.onSelect,
|
94 | style = _props.style,
|
95 | clsPrefix = _props.clsPrefix,
|
96 | others = _objectWithoutProperties(_props, ['accordion', 'activeKey', 'className', 'children', 'defaultActiveKey', 'onSelect', 'style', 'clsPrefix']);
|
97 |
|
98 | var activeKey = void 0;
|
99 | if (accordion) {
|
100 | activeKey = propsActiveKey != null ? propsActiveKey : this.state.activeKey;
|
101 | others.role = others.role || 'tablist';
|
102 | }
|
103 |
|
104 | var classes = {};
|
105 | classes['' + clsPrefix] = true;
|
106 |
|
107 | return _react2["default"].createElement(
|
108 | 'div',
|
109 | _extends({}, others, {
|
110 | className: (0, _classnames2["default"])(className, classes)
|
111 | }),
|
112 | _react2["default"].Children.map(children, function (child) {
|
113 | if (!_react2["default"].isValidElement(child)) {
|
114 | return child;
|
115 | }
|
116 | var childProps = {
|
117 | style: child.props.style
|
118 | };
|
119 |
|
120 | if (accordion) {
|
121 | _extends(childProps, {
|
122 | headerRole: 'tab',
|
123 | panelRole: 'tabpanel',
|
124 | collapsible: true,
|
125 | expanded: child.props.eventKey === activeKey,
|
126 | onSelect: (0, _tinperBeeCore.createChainedFunction)(_this2.handleSelect, child.props.onSelect)
|
127 | });
|
128 | }
|
129 |
|
130 | return (0, _react.cloneElement)(child, childProps);
|
131 | })
|
132 | );
|
133 | };
|
134 |
|
135 | return PanelGroup;
|
136 | }(_react2["default"].Component);
|
137 |
|
138 | PanelGroup.propTypes = propTypes;
|
139 | PanelGroup.defaultProps = defaultProps;
|
140 |
|
141 | exports["default"] = PanelGroup;
|
142 | module.exports = exports['default']; |
\ | No newline at end of file |