UNPKG

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