UNPKG

3.56 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 defaultProps = {
33 variant: 'tabs',
34 mountOnEnter: false,
35 unmountOnExit: false
36};
37
38function getDefaultActiveKey(children) {
39 var defaultActiveKey;
40 (0, _ElementChildren.forEach)(children, function (child) {
41 if (defaultActiveKey == null) {
42 defaultActiveKey = child.props.eventKey;
43 }
44 });
45 return defaultActiveKey;
46}
47
48function renderTab(child) {
49 var _child$props = child.props,
50 title = _child$props.title,
51 eventKey = _child$props.eventKey,
52 disabled = _child$props.disabled,
53 tabClassName = _child$props.tabClassName,
54 id = _child$props.id;
55
56 if (title == null) {
57 return null;
58 }
59
60 return /*#__PURE__*/_react.default.createElement(_NavItem.default, {
61 as: _NavLink.default,
62 eventKey: eventKey,
63 disabled: disabled,
64 id: id,
65 className: tabClassName
66 }, title);
67}
68
69var Tabs = function Tabs(props) {
70 var _useUncontrolled = (0, _uncontrollable.useUncontrolled)(props, {
71 activeKey: 'onSelect'
72 }),
73 id = _useUncontrolled.id,
74 onSelect = _useUncontrolled.onSelect,
75 transition = _useUncontrolled.transition,
76 mountOnEnter = _useUncontrolled.mountOnEnter,
77 unmountOnExit = _useUncontrolled.unmountOnExit,
78 children = _useUncontrolled.children,
79 _useUncontrolled$acti = _useUncontrolled.activeKey,
80 activeKey = _useUncontrolled$acti === void 0 ? getDefaultActiveKey(children) : _useUncontrolled$acti,
81 controlledProps = (0, _objectWithoutPropertiesLoose2.default)(_useUncontrolled, ["id", "onSelect", "transition", "mountOnEnter", "unmountOnExit", "children", "activeKey"]);
82
83 return /*#__PURE__*/_react.default.createElement(_TabContainer.default, {
84 id: id,
85 activeKey: activeKey,
86 onSelect: onSelect,
87 transition: transition,
88 mountOnEnter: mountOnEnter,
89 unmountOnExit: unmountOnExit
90 }, /*#__PURE__*/_react.default.createElement(_Nav.default, (0, _extends2.default)({}, controlledProps, {
91 role: "tablist",
92 as: "nav"
93 }), (0, _ElementChildren.map)(children, renderTab)), /*#__PURE__*/_react.default.createElement(_TabContent.default, null, (0, _ElementChildren.map)(children, function (child) {
94 var childProps = (0, _extends2.default)({}, child.props);
95 delete childProps.title;
96 delete childProps.disabled;
97 delete childProps.tabClassName;
98 return /*#__PURE__*/_react.default.createElement(_TabPane.default, childProps);
99 })));
100};
101
102Tabs.defaultProps = defaultProps;
103Tabs.displayName = 'Tabs';
104var _default = Tabs;
105exports.default = _default;
106module.exports = exports["default"];
\No newline at end of file