UNPKG

2.52 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import classNames from 'classnames';
4import all from 'prop-types-extra/lib/all';
5import React, { useContext } from 'react';
6import { useUncontrolled } from 'uncontrollable';
7import { useBootstrapPrefix } from './ThemeProvider';
8import NavbarContext from './NavbarContext';
9import CardContext from './CardContext';
10import AbstractNav from './AbstractNav';
11import NavItem from './NavItem';
12import NavLink from './NavLink';
13var defaultProps = {
14 justify: false,
15 fill: false
16};
17var Nav = /*#__PURE__*/React.forwardRef(function (uncontrolledProps, ref) {
18 var _classNames;
19
20 var _useUncontrolled = useUncontrolled(uncontrolledProps, {
21 activeKey: 'onSelect'
22 }),
23 _useUncontrolled$as = _useUncontrolled.as,
24 as = _useUncontrolled$as === void 0 ? 'div' : _useUncontrolled$as,
25 initialBsPrefix = _useUncontrolled.bsPrefix,
26 variant = _useUncontrolled.variant,
27 fill = _useUncontrolled.fill,
28 justify = _useUncontrolled.justify,
29 navbar = _useUncontrolled.navbar,
30 className = _useUncontrolled.className,
31 children = _useUncontrolled.children,
32 activeKey = _useUncontrolled.activeKey,
33 props = _objectWithoutPropertiesLoose(_useUncontrolled, ["as", "bsPrefix", "variant", "fill", "justify", "navbar", "className", "children", "activeKey"]);
34
35 var bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');
36 var navbarBsPrefix;
37 var cardHeaderBsPrefix;
38 var isNavbar = false;
39 var navbarContext = useContext(NavbarContext);
40 var cardContext = useContext(CardContext);
41
42 if (navbarContext) {
43 navbarBsPrefix = navbarContext.bsPrefix;
44 isNavbar = navbar == null ? true : navbar;
45 } else if (cardContext) {
46 cardHeaderBsPrefix = cardContext.cardHeaderBsPrefix;
47 }
48
49 return /*#__PURE__*/React.createElement(AbstractNav, _extends({
50 as: as,
51 ref: ref,
52 activeKey: activeKey,
53 className: classNames(className, (_classNames = {}, _classNames[bsPrefix] = !isNavbar, _classNames[navbarBsPrefix + "-nav"] = isNavbar, _classNames[cardHeaderBsPrefix + "-" + variant] = !!cardHeaderBsPrefix, _classNames[bsPrefix + "-" + variant] = !!variant, _classNames[bsPrefix + "-fill"] = fill, _classNames[bsPrefix + "-justified"] = justify, _classNames))
54 }, props), children);
55});
56Nav.displayName = 'Nav';
57Nav.defaultProps = defaultProps;
58Nav.Item = NavItem;
59Nav.Link = NavLink;
60export default Nav;
\No newline at end of file