UNPKG

3.58 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
11
12var _react = _interopRequireDefault(require("react"));
13
14var _isRequiredForA11y = _interopRequireDefault(require("prop-types-extra/lib/isRequiredForA11y"));
15
16var _uncontrollable = require("uncontrollable");
17
18var _Nav = _interopRequireDefault(require("./Nav"));
19
20var _NavLink = _interopRequireDefault(require("./NavLink"));
21
22var _NavItem = _interopRequireDefault(require("./NavItem"));
23
24var _TabContainer = _interopRequireDefault(require("./TabContainer"));
25
26var _TabContent = _interopRequireDefault(require("./TabContent"));
27
28var _TabPane = _interopRequireDefault(require("./TabPane"));
29
30var _ElementChildren = require("./ElementChildren");
31
32var _excluded = ["id", "onSelect", "transition", "mountOnEnter", "unmountOnExit", "children", "activeKey"];
33var defaultProps = {
34 variant: 'tabs',
35 mountOnEnter: false,
36 unmountOnExit: false
37};
38
39function getDefaultActiveKey(children) {
40 var defaultActiveKey;
41 (0, _ElementChildren.forEach)(children, function (child) {
42 if (defaultActiveKey == null) {
43 defaultActiveKey = child.props.eventKey;
44 }
45 });
46 return defaultActiveKey;
47}
48
49function renderTab(child) {
50 var _child$props = child.props,
51 title = _child$props.title,
52 eventKey = _child$props.eventKey,
53 disabled = _child$props.disabled,
54 tabClassName = _child$props.tabClassName,
55 id = _child$props.id;
56
57 if (title == null) {
58 return null;
59 }
60
61 return /*#__PURE__*/_react.default.createElement(_NavItem.default, {
62 as: _NavLink.default,
63 eventKey: eventKey,
64 disabled: disabled,
65 id: id,
66 className: tabClassName
67 }, title);
68}
69
70var Tabs = function Tabs(props) {
71 var _useUncontrolled = (0, _uncontrollable.useUncontrolled)(props, {
72 activeKey: 'onSelect'
73 }),
74 id = _useUncontrolled.id,
75 onSelect = _useUncontrolled.onSelect,
76 transition = _useUncontrolled.transition,
77 mountOnEnter = _useUncontrolled.mountOnEnter,
78 unmountOnExit = _useUncontrolled.unmountOnExit,
79 children = _useUncontrolled.children,
80 _useUncontrolled$acti = _useUncontrolled.activeKey,
81 activeKey = _useUncontrolled$acti === void 0 ? getDefaultActiveKey(children) : _useUncontrolled$acti,
82 controlledProps = (0, _objectWithoutPropertiesLoose2.default)(_useUncontrolled, _excluded);
83
84 return /*#__PURE__*/_react.default.createElement(_TabContainer.default, {
85 id: id,
86 activeKey: activeKey,
87 onSelect: onSelect,
88 transition: transition,
89 mountOnEnter: mountOnEnter,
90 unmountOnExit: unmountOnExit
91 }, /*#__PURE__*/_react.default.createElement(_Nav.default, (0, _extends2.default)({}, controlledProps, {
92 role: "tablist",
93 as: "nav"
94 }), (0, _ElementChildren.map)(children, renderTab)), /*#__PURE__*/_react.default.createElement(_TabContent.default, null, (0, _ElementChildren.map)(children, function (child) {
95 var childProps = (0, _extends2.default)({}, child.props);
96 delete childProps.title;
97 delete childProps.disabled;
98 delete childProps.tabClassName;
99 return /*#__PURE__*/_react.default.createElement(_TabPane.default, childProps);
100 })));
101};
102
103Tabs.defaultProps = defaultProps;
104Tabs.displayName = 'Tabs';
105var _default = Tabs;
106exports.default = _default;
107module.exports = exports["default"];
\No newline at end of file