UNPKG

9.35 kBJavaScriptView Raw
1'use strict';
2
3var _reactTransformHmr2 = require('react-transform-hmr');
4
5var _reactTransformHmr3 = _interopRequireDefault(_reactTransformHmr2);
6
7var _react = require('react');
8
9var _reactTransformCatchErrors2 = require('react-transform-catch-errors');
10
11var _reactTransformCatchErrors3 = _interopRequireDefault(_reactTransformCatchErrors2);
12
13var _redboxReact = require('redbox-react');
14
15Object.defineProperty(exports, '__esModule', {
16 value: true
17});
18
19var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
20
21var _get = function get(_x, _x2, _x3) { var _again = true; _function: while (_again) { var object = _x, property = _x2, receiver = _x3; _again = false; if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { _x = parent; _x2 = property; _x3 = receiver; _again = true; desc = parent = undefined; continue _function; } } else if ('value' in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } } };
22
23function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
24
25function _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) : subClass.__proto__ = superClass; }
26
27var _react2 = _interopRequireDefault(_react);
28
29var _reactLibUpdate = require('react/lib/update');
30
31var _reactLibUpdate2 = _interopRequireDefault(_reactLibUpdate);
32
33var _Tab = require('./Tab');
34
35var _Tab2 = _interopRequireDefault(_Tab);
36
37var _FunctionTab = require('./FunctionTab');
38
39var _FunctionTab2 = _interopRequireDefault(_FunctionTab);
40
41var _classnames = require('classnames');
42
43var _classnames2 = _interopRequireDefault(_classnames);
44
45var _reactDnd = require('react-dnd');
46
47var _reactDndHtml5Backend = require('react-dnd-html5-backend');
48
49var _reactDndHtml5Backend2 = _interopRequireDefault(_reactDndHtml5Backend);
50
51var _components = {
52 _$Tabs: {
53 displayName: 'Tabs'
54 }
55};
56
57var _reactComponentWrapper = (0, _reactTransformHmr3['default'])({
58 filename: 'src/Tabs.jsx',
59 components: _components,
60 locals: [module],
61 imports: [_react]
62});
63
64var _reactComponentWrapper2 = (0, _reactTransformCatchErrors3['default'])({
65 filename: 'src/Tabs.jsx',
66 components: _components,
67 locals: [],
68 imports: [_react, _redboxReact]
69});
70
71function _wrapComponent(uniqueId) {
72 return function (ReactClass) {
73 return _reactComponentWrapper2(_reactComponentWrapper(ReactClass, uniqueId), uniqueId);
74 };
75}
76
77function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
78
79var Tabs = (function (_React$Component) {
80 _inherits(Tabs, _React$Component);
81
82 function Tabs(props) {
83 _classCallCheck(this, _Tabs);
84
85 _get(Object.getPrototypeOf(_Tabs.prototype), 'constructor', this).call(this, props);
86 this.handleTabClick = this.handleTabClick.bind(this);
87 this.handleAddFrontClick = this.handleAddFrontClick.bind(this);
88 this.handleAddBackClick = this.handleAddBackClick.bind(this);
89 this.handleTabDeleteButton = this.handleTabDeleteButton.bind(this);
90 this.moveTab = this.moveTab.bind(this);
91 this._getPanel = this._getPanel.bind(this);
92
93 this.state = {
94 activeKey: props.activeKey || props.defaultActiveKey,
95 style: props.style || props.defaultStyle,
96 children: props.children,
97 status: 'static' // || 'dragging'
98 };
99 }
100
101 _createClass(Tabs, [{
102 key: 'componentWillReceiveProps',
103 value: function componentWillReceiveProps(nextProps) {
104 if (nextProps.activeKey !== this.state.activeKey) {
105 this.setState({
106 activeKey: nextProps.activeKey
107 });
108 }
109 if (nextProps.children !== this.state.children) {
110 this.setState({
111 children: nextProps.children
112 });
113 }
114 }
115 }, {
116 key: 'handleTabClick',
117 value: function handleTabClick(activeKey) {
118 if (this.props.handleTabClick) {
119 this.props.handleTabClick(activeKey);
120 }
121
122 this.setState({
123 activeKey: activeKey,
124 panelUpdateKey: -1
125 });
126 }
127 }, {
128 key: 'handleAddFrontClick',
129 value: function handleAddFrontClick() {
130 this.props.handleAddFrontClick();
131 this.setState({
132 panelUpdateKey: 0
133 });
134 }
135 }, {
136 key: 'handleAddBackClick',
137 value: function handleAddBackClick() {
138 this.props.handleAddBackClick();
139 }
140 }, {
141 key: 'handleTabDeleteButton',
142 value: function handleTabDeleteButton(key) {
143 this.props.handleTabDeleteButton();
144 this.setState({
145 panelUpdateKey: key
146 });
147 }
148 }, {
149 key: 'moveTab',
150 value: function moveTab(dragIndex, hoverIndex) {
151 var dragTab = this.state.children[dragIndex];
152 this.props.setMoveData(dragIndex, hoverIndex);
153 }
154 }, {
155 key: '_getPanel',
156 value: function _getPanel() {
157 var that = this;
158 var tab = [];
159 var panel = [];
160 _react2['default'].Children.forEach(this.state.children, function (children, index) {
161 // add tabs
162 var status, className;
163 if (index === that.state.activeKey) {
164 status = 'active';
165 } else {
166 status = 'inactive';
167 }
168
169 tab.push(_react2['default'].createElement(_Tab2['default'], { key: 'tab' + index,
170 tabKey: index,
171 title: children.props.title,
172 status: status,
173 style: that.state.style,
174 handleTabClick: that.handleTabClick,
175 tabDeleteButton: that.props.tabDeleteButton,
176 handleTabDeleteButton: that.handleTabDeleteButton,
177 beginDrag: that.props.beginDrag,
178 moveTab: that.moveTab }));
179 if (!children.props.lazy || children.props.lazy && index === that.state.activeKey) {
180 var props = { className: (0, _classnames2['default'])(that.state.style + 'panel', status), status: status, key: index };
181 if (that.state.panelUpdateKey === index) {
182 props.update = true;
183 }
184 panel.push(_react2['default'].cloneElement(children, props));
185 }
186 });
187 if (this.props.addFrontTab && tab.length > 0) {
188 //if the tab more than one, show add button
189 tab.unshift(_react2['default'].createElement(_FunctionTab2['default'], { key: 'ADDFront',
190 tabKey: 'ADD',
191 title: '+',
192 style: that.state.style,
193 handleTabClick: that.handleAddFrontClick }));
194 }
195 if (this.props.addBackTab && tab.length > 0) {
196 //if the tab more than one, show add button
197 tab.push(_react2['default'].createElement(_FunctionTab2['default'], { key: 'ADDBack',
198 tabKey: 'ADD',
199 title: '+',
200 style: that.state.style,
201 handleTabClick: that.handleAddBackClick }));
202 }
203
204 return { tab: tab, panel: panel };
205 }
206 }, {
207 key: 'render',
208 value: function render() {
209 var deleteButtonTmpl;
210 var opt = this._getPanel();
211 var wrapper = this.state.style + "wrapper";
212 var tabWrapper = this.state.style + "tab__wrapper";
213 var panelWrapper = this.state.style + "panel__wrapper";
214 var noneName = this.props.deleteAllButtonName;
215 if (this.props.deleteAllButton && opt.tab.length > 0) {
216 var className = this.state.style + "delete button btn-primary bg-red";
217 deleteButtonTmpl = _react2['default'].createElement(
218 'button',
219 { className: className, onClick: this.props.handleDeleteAllButton },
220 noneName ? noneName : 'None'
221 );
222 }
223
224 return _react2['default'].createElement(
225 'div',
226 { className: wrapper },
227 deleteButtonTmpl,
228 _react2['default'].createElement(
229 'div',
230 { className: tabWrapper },
231 opt.tab
232 ),
233 _react2['default'].createElement(
234 'div',
235 { className: panelWrapper },
236 opt.panel
237 )
238 );
239 }
240 }], [{
241 key: 'defaultProps',
242 value: {
243 defaultActiveKey: 0,
244 defaultStyle: "tabtab__default__"
245 },
246 enumerable: true
247 }]);
248
249 var _Tabs = Tabs;
250 Tabs = _wrapComponent('_$Tabs')(Tabs) || Tabs;
251 Tabs = (0, _reactDnd.DragDropContext)(_reactDndHtml5Backend2['default'])(Tabs) || Tabs;
252 return Tabs;
253})(_react2['default'].Component);
254
255exports['default'] = Tabs;
256module.exports = exports['default'];
\No newline at end of file