UNPKG

4.05 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7exports.__esModule = true;
8exports.default = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
14var _classnames = _interopRequireDefault(require("classnames"));
15
16var _react = _interopRequireWildcard(require("react"));
17
18var _ThemeProvider = require("./ThemeProvider");
19
20var _TabContext = _interopRequireDefault(require("./TabContext"));
21
22var _SelectableContext = _interopRequireWildcard(require("./SelectableContext"));
23
24var _Fade = _interopRequireDefault(require("./Fade"));
25
26function useTabContext(props) {
27 var context = (0, _react.useContext)(_TabContext.default);
28 if (!context) return props;
29 var activeKey = context.activeKey,
30 getControlledId = context.getControlledId,
31 getControllerId = context.getControllerId,
32 rest = (0, _objectWithoutPropertiesLoose2.default)(context, ["activeKey", "getControlledId", "getControllerId"]);
33 var shouldTransition = props.transition !== false && rest.transition !== false;
34 var key = (0, _SelectableContext.makeEventKey)(props.eventKey);
35 return (0, _extends2.default)({}, props, {
36 active: props.active == null && key != null ? (0, _SelectableContext.makeEventKey)(activeKey) === key : props.active,
37 id: getControlledId(props.eventKey),
38 'aria-labelledby': getControllerId(props.eventKey),
39 transition: shouldTransition && (props.transition || rest.transition || _Fade.default),
40 mountOnEnter: props.mountOnEnter != null ? props.mountOnEnter : rest.mountOnEnter,
41 unmountOnExit: props.unmountOnExit != null ? props.unmountOnExit : rest.unmountOnExit
42 });
43}
44
45var TabPane = _react.default.forwardRef(function (props, ref) {
46 var _useTabContext = useTabContext(props),
47 bsPrefix = _useTabContext.bsPrefix,
48 className = _useTabContext.className,
49 active = _useTabContext.active,
50 onEnter = _useTabContext.onEnter,
51 onEntering = _useTabContext.onEntering,
52 onEntered = _useTabContext.onEntered,
53 onExit = _useTabContext.onExit,
54 onExiting = _useTabContext.onExiting,
55 onExited = _useTabContext.onExited,
56 mountOnEnter = _useTabContext.mountOnEnter,
57 unmountOnExit = _useTabContext.unmountOnExit,
58 Transition = _useTabContext.transition,
59 _useTabContext$as = _useTabContext.as,
60 Component = _useTabContext$as === void 0 ? 'div' : _useTabContext$as,
61 _ = _useTabContext.eventKey,
62 rest = (0, _objectWithoutPropertiesLoose2.default)(_useTabContext, ["bsPrefix", "className", "active", "onEnter", "onEntering", "onEntered", "onExit", "onExiting", "onExited", "mountOnEnter", "unmountOnExit", "transition", "as", "eventKey"]);
63
64 var prefix = (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'tab-pane');
65 if (!active && unmountOnExit) return null;
66
67 var pane = _react.default.createElement(Component, (0, _extends2.default)({}, rest, {
68 ref: ref,
69 role: "tabpanel",
70 "aria-hidden": !active,
71 className: (0, _classnames.default)(className, prefix, {
72 active: active
73 })
74 }));
75
76 if (Transition) pane = _react.default.createElement(Transition, {
77 in: active,
78 onEnter: onEnter,
79 onEntering: onEntering,
80 onEntered: onEntered,
81 onExit: onExit,
82 onExiting: onExiting,
83 onExited: onExited,
84 mountOnEnter: mountOnEnter,
85 unmountOnExit: unmountOnExit
86 }, pane); // We provide an empty the TabContext so `<Nav>`s in `<TabPane>`s don't
87 // conflict with the top level one.
88
89 return _react.default.createElement(_TabContext.default.Provider, {
90 value: null
91 }, _react.default.createElement(_SelectableContext.default.Provider, {
92 value: null
93 }, pane));
94});
95
96TabPane.displayName = 'TabPane';
97var _default = TabPane;
98exports.default = _default;
99module.exports = exports["default"];
\No newline at end of file