UNPKG

5.27 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime-corejs2/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/objectWithoutPropertiesLoose"));
11
12var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime-corejs2/helpers/inheritsLoose"));
13
14var _react = _interopRequireDefault(require("react"));
15
16var _propTypes = _interopRequireDefault(require("prop-types"));
17
18var _isRequiredForA11y = _interopRequireDefault(require("prop-types-extra/lib/isRequiredForA11y"));
19
20var _uncontrollable = _interopRequireDefault(require("uncontrollable"));
21
22var _elementType = _interopRequireDefault(require("prop-types-extra/lib/elementType"));
23
24var _Nav = _interopRequireDefault(require("./Nav"));
25
26var _NavItem = _interopRequireDefault(require("./NavItem"));
27
28var _TabContainer = _interopRequireDefault(require("./TabContainer"));
29
30var _TabContent = _interopRequireDefault(require("./TabContent"));
31
32var _bootstrapUtils = require("./utils/bootstrapUtils");
33
34var _ValidComponentChildren = _interopRequireDefault(require("./utils/ValidComponentChildren"));
35
36var TabContainer = _TabContainer.default.ControlledComponent;
37var propTypes = {
38 /**
39 * Mark the Tab with a matching `eventKey` as active.
40 *
41 * @controllable onSelect
42 */
43 activeKey: _propTypes.default.any,
44
45 /**
46 * Navigation style
47 */
48 bsStyle: _propTypes.default.oneOf(['tabs', 'pills']),
49
50 /**
51 * Sets a default animation strategy. Use `false` to disable, `true`
52 * to enable the default `<Fade>` animation, or a react-transition-group
53 * v2 `<Transition/>` component.
54 */
55 animation: _propTypes.default.oneOfType([_propTypes.default.bool, _elementType.default]),
56 id: (0, _isRequiredForA11y.default)(_propTypes.default.oneOfType([_propTypes.default.string, _propTypes.default.number])),
57
58 /**
59 * Callback fired when a Tab is selected.
60 *
61 * ```js
62 * function (
63 * Any eventKey,
64 * SyntheticEvent event?
65 * )
66 * ```
67 *
68 * @controllable activeKey
69 */
70 onSelect: _propTypes.default.func,
71
72 /**
73 * Wait until the first "enter" transition to mount tabs (add them to the DOM)
74 */
75 mountOnEnter: _propTypes.default.bool,
76
77 /**
78 * Unmount tabs (remove it from the DOM) when it is no longer visible
79 */
80 unmountOnExit: _propTypes.default.bool
81};
82var defaultProps = {
83 bsStyle: 'tabs',
84 animation: true,
85 mountOnEnter: false,
86 unmountOnExit: false
87};
88
89function getDefaultActiveKey(children) {
90 var defaultActiveKey;
91
92 _ValidComponentChildren.default.forEach(children, function (child) {
93 if (defaultActiveKey == null) {
94 defaultActiveKey = child.props.eventKey;
95 }
96 });
97
98 return defaultActiveKey;
99}
100
101var Tabs =
102/*#__PURE__*/
103function (_React$Component) {
104 (0, _inheritsLoose2.default)(Tabs, _React$Component);
105
106 function Tabs() {
107 return _React$Component.apply(this, arguments) || this;
108 }
109
110 var _proto = Tabs.prototype;
111
112 _proto.renderTab = function renderTab(child) {
113 var _child$props = child.props,
114 title = _child$props.title,
115 eventKey = _child$props.eventKey,
116 disabled = _child$props.disabled,
117 tabClassName = _child$props.tabClassName;
118
119 if (title == null) {
120 return null;
121 }
122
123 return _react.default.createElement(_NavItem.default, {
124 eventKey: eventKey,
125 disabled: disabled,
126 className: tabClassName
127 }, title);
128 };
129
130 _proto.render = function render() {
131 var _this$props = this.props,
132 id = _this$props.id,
133 onSelect = _this$props.onSelect,
134 animation = _this$props.animation,
135 mountOnEnter = _this$props.mountOnEnter,
136 unmountOnExit = _this$props.unmountOnExit,
137 bsClass = _this$props.bsClass,
138 className = _this$props.className,
139 style = _this$props.style,
140 children = _this$props.children,
141 _this$props$activeKey = _this$props.activeKey,
142 activeKey = _this$props$activeKey === void 0 ? getDefaultActiveKey(children) : _this$props$activeKey,
143 props = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["id", "onSelect", "animation", "mountOnEnter", "unmountOnExit", "bsClass", "className", "style", "children", "activeKey"]);
144 return _react.default.createElement(TabContainer, {
145 id: id,
146 activeKey: activeKey,
147 onSelect: onSelect,
148 className: className,
149 style: style
150 }, _react.default.createElement("div", null, _react.default.createElement(_Nav.default, (0, _extends2.default)({}, props, {
151 role: "tablist"
152 }), _ValidComponentChildren.default.map(children, this.renderTab)), _react.default.createElement(_TabContent.default, {
153 bsClass: bsClass,
154 animation: animation,
155 mountOnEnter: mountOnEnter,
156 unmountOnExit: unmountOnExit
157 }, children)));
158 };
159
160 return Tabs;
161}(_react.default.Component);
162
163Tabs.propTypes = propTypes;
164Tabs.defaultProps = defaultProps;
165(0, _bootstrapUtils.bsClass)('tab', Tabs);
166
167var _default = (0, _uncontrollable.default)(Tabs, {
168 activeKey: 'onSelect'
169});
170
171exports.default = _default;
172module.exports = exports["default"];
\No newline at end of file