UNPKG

3.55 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("./utils/ElementChildren");
31
32var TabContainer = _TabContainer.default.ControlledComponent;
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
56 if (title == null) {
57 return null;
58 }
59
60 return _react.default.createElement(_NavItem.default, {
61 as: _NavLink.default,
62 eventKey: eventKey,
63 disabled: disabled,
64 className: tabClassName
65 }, title);
66}
67
68var Tabs = _react.default.forwardRef(function (props, ref) {
69 var _useUncontrolled = (0, _uncontrollable.useUncontrolled)(props, {
70 activeKey: 'onSelect'
71 }),
72 id = _useUncontrolled.id,
73 onSelect = _useUncontrolled.onSelect,
74 transition = _useUncontrolled.transition,
75 mountOnEnter = _useUncontrolled.mountOnEnter,
76 unmountOnExit = _useUncontrolled.unmountOnExit,
77 children = _useUncontrolled.children,
78 _useUncontrolled$acti = _useUncontrolled.activeKey,
79 activeKey = _useUncontrolled$acti === void 0 ? getDefaultActiveKey(children) : _useUncontrolled$acti,
80 controlledProps = (0, _objectWithoutPropertiesLoose2.default)(_useUncontrolled, ["id", "onSelect", "transition", "mountOnEnter", "unmountOnExit", "children", "activeKey"]);
81
82 return _react.default.createElement(TabContainer, {
83 ref: ref,
84 id: id,
85 activeKey: activeKey,
86 onSelect: onSelect,
87 transition: transition,
88 mountOnEnter: mountOnEnter,
89 unmountOnExit: unmountOnExit
90 }, _react.default.createElement(_Nav.default, (0, _extends2.default)({}, controlledProps, {
91 role: "tablist",
92 as: "nav"
93 }), (0, _ElementChildren.map)(children, renderTab)), _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 _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