You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.9 KiB
69 lines
1.9 KiB
import classNames from 'classnames';
|
|
import all from 'prop-types-extra/lib/all';
|
|
import * as React from 'react';
|
|
import { useContext } from 'react';
|
|
import { useUncontrolled } from 'uncontrollable';
|
|
import BaseNav from '@restart/ui/Nav';
|
|
import { useBootstrapPrefix } from './ThemeProvider';
|
|
import NavbarContext from './NavbarContext';
|
|
import CardHeaderContext from './CardHeaderContext';
|
|
import NavItem from './NavItem';
|
|
import NavLink from './NavLink';
|
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
const defaultProps = {
|
|
justify: false,
|
|
fill: false
|
|
};
|
|
const Nav = /*#__PURE__*/React.forwardRef((uncontrolledProps, ref) => {
|
|
const {
|
|
as = 'div',
|
|
bsPrefix: initialBsPrefix,
|
|
variant,
|
|
fill,
|
|
justify,
|
|
navbar,
|
|
navbarScroll,
|
|
className,
|
|
activeKey,
|
|
...props
|
|
} = useUncontrolled(uncontrolledProps, {
|
|
activeKey: 'onSelect'
|
|
});
|
|
const bsPrefix = useBootstrapPrefix(initialBsPrefix, 'nav');
|
|
let navbarBsPrefix;
|
|
let cardHeaderBsPrefix;
|
|
let isNavbar = false;
|
|
const navbarContext = useContext(NavbarContext);
|
|
const cardHeaderContext = useContext(CardHeaderContext);
|
|
|
|
if (navbarContext) {
|
|
navbarBsPrefix = navbarContext.bsPrefix;
|
|
isNavbar = navbar == null ? true : navbar;
|
|
} else if (cardHeaderContext) {
|
|
({
|
|
cardHeaderBsPrefix
|
|
} = cardHeaderContext);
|
|
}
|
|
|
|
return /*#__PURE__*/_jsx(BaseNav, {
|
|
as: as,
|
|
ref: ref,
|
|
activeKey: activeKey,
|
|
className: classNames(className, {
|
|
[bsPrefix]: !isNavbar,
|
|
[`${navbarBsPrefix}-nav`]: isNavbar,
|
|
[`${navbarBsPrefix}-nav-scroll`]: isNavbar && navbarScroll,
|
|
[`${cardHeaderBsPrefix}-${variant}`]: !!cardHeaderBsPrefix,
|
|
[`${bsPrefix}-${variant}`]: !!variant,
|
|
[`${bsPrefix}-fill`]: fill,
|
|
[`${bsPrefix}-justified`]: justify
|
|
}),
|
|
...props
|
|
});
|
|
});
|
|
Nav.displayName = 'Nav';
|
|
Nav.defaultProps = defaultProps;
|
|
export default Object.assign(Nav, {
|
|
Item: NavItem,
|
|
Link: NavLink
|
|
}); |