UNPKG

3.49 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
55 if (title == null) {
56 return null;
57 }
58
59 return _react.default.createElement(_NavItem.default, {
60 as: _NavLink.default,
61 eventKey: eventKey,
62 disabled: disabled,
63 className: tabClassName
64 }, title);
65}
66
67var Tabs = _react.default.forwardRef(function (props, ref) {
68 var _useUncontrolled = (0, _uncontrollable.useUncontrolled)(props, {
69 activeKey: 'onSelect'
70 }),
71 id = _useUncontrolled.id,
72 onSelect = _useUncontrolled.onSelect,
73 transition = _useUncontrolled.transition,
74 mountOnEnter = _useUncontrolled.mountOnEnter,
75 unmountOnExit = _useUncontrolled.unmountOnExit,
76 children = _useUncontrolled.children,
77 _useUncontrolled$acti = _useUncontrolled.activeKey,
78 activeKey = _useUncontrolled$acti === void 0 ? getDefaultActiveKey(children) : _useUncontrolled$acti,
79 controlledProps = (0, _objectWithoutPropertiesLoose2.default)(_useUncontrolled, ["id", "onSelect", "transition", "mountOnEnter", "unmountOnExit", "children", "activeKey"]);
80
81 return _react.default.createElement(_TabContainer.default, {
82 ref: ref,
83 id: id,
84 activeKey: activeKey,
85 onSelect: onSelect,
86 transition: transition,
87 mountOnEnter: mountOnEnter,
88 unmountOnExit: unmountOnExit
89 }, _react.default.createElement(_Nav.default, (0, _extends2.default)({}, controlledProps, {
90 role: "tablist",
91 as: "nav"
92 }), (0, _ElementChildren.map)(children, renderTab)), _react.default.createElement(_TabContent.default, null, (0, _ElementChildren.map)(children, function (child) {
93 var childProps = (0, _extends2.default)({}, child.props);
94 delete childProps.title;
95 delete childProps.disabled;
96 delete childProps.tabClassName;
97 return _react.default.createElement(_TabPane.default, childProps);
98 })));
99});
100
101Tabs.defaultProps = defaultProps;
102Tabs.displayName = 'Tabs';
103var _default = Tabs;
104exports.default = _default;
105module.exports = exports["default"];
\No newline at end of file