UNPKG

5.24 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 _classnames = _interopRequireDefault(require("classnames"));
13
14var _react = _interopRequireWildcard(require("react"));
15
16var _ThemeProvider = require("./ThemeProvider");
17
18var _TabContext = _interopRequireDefault(require("./TabContext"));
19
20var _SelectableContext = _interopRequireWildcard(require("./SelectableContext"));
21
22var _Fade = _interopRequireDefault(require("./Fade"));
23
24var _excluded = ["activeKey", "getControlledId", "getControllerId"],
25 _excluded2 = ["bsPrefix", "className", "active", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "mountOnEnter", "unmountOnExit", "transition", "as", "eventKey"];
26
27function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
28
29function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
30
31function useTabContext(props) {
32 var context = (0, _react.useContext)(_TabContext.default);
33 if (!context) return props;
34 var activeKey = context.activeKey,
35 getControlledId = context.getControlledId,
36 getControllerId = context.getControllerId,
37 rest = (0, _objectWithoutPropertiesLoose2.default)(context, _excluded);
38 var shouldTransition = props.transition !== false && rest.transition !== false;
39 var key = (0, _SelectableContext.makeEventKey)(props.eventKey);
40 return (0, _extends2.default)({}, props, {
41 active: props.active == null && key != null ? (0, _SelectableContext.makeEventKey)(activeKey) === key : props.active,
42 id: getControlledId(props.eventKey),
43 'aria-labelledby': getControllerId(props.eventKey),
44 transition: shouldTransition && (props.transition || rest.transition || _Fade.default),
45 mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,
46 unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit
47 });
48}
49
50var TabPane = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
51 var _useTabContext = useTabContext(props),
52 bsPrefix = _useTabContext.bsPrefix,
53 className = _useTabContext.className,
54 active = _useTabContext.active,
55 onEnter = _useTabContext.onEnter,
56 onEntering = _useTabContext.onEntering,
57 onEntered = _useTabContext.onEntered,
58 onExit = _useTabContext.onExit,
59 onExiting = _useTabContext.onExiting,
60 onExited = _useTabContext.onExited,
61 mountOnEnter = _useTabContext.mountOnEnter,
62 unmountOnExit = _useTabContext.unmountOnExit,
63 Transition = _useTabContext.transition,
64 _useTabContext$as = _useTabContext.as,
65 Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,
66 _ = _useTabContext.eventKey,
67 rest = (0, _objectWithoutPropertiesLoose2.default)(_useTabContext, _excluded2);
68
69 var prefix = (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'tab-pane');
70 if (!active && !Transition && unmountOnExit) return null;
71
72 var pane = /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, rest, {
73 ref: ref,
74 role: "tabpanel",
75 "aria-hidden": !active,
76 className: (0, _classnames.default)(className, prefix, {
77 active: active
78 })
79 }));
80
81 if (Transition) pane = /*#__PURE__*/_react.default.createElement(Transition, {
82 in: active,
83 onEnter: onEnter,
84 onEntering: onEntering,
85 onEntered: onEntered,
86 onExit: onExit,
87 onExiting: onExiting,
88 onExited: onExited,
89 mountOnEnter: mountOnEnter,
90 unmountOnExit: unmountOnExit
91 }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't
92 // conflict with the top level one.
93
94 return /*#__PURE__*/_react.default.createElement(_TabContext.default.Provider, {
95 value: null
96 }, /*#__PURE__*/_react.default.createElement(_SelectableContext.default.Provider, {
97 value: null
98 }, pane));
99});
100
101TabPane.displayName = 'TabPane';
102var _default = TabPane;
103exports.default = _default;
104module.exports = exports["default"];
\No newline at end of file