|
- import _extends from "@babel/runtime/helpers/esm/extends";
- import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
- import React from 'react';
- import PropTypes from 'prop-types';
- import classNames from 'classnames';
- import { mapToCssModules, deprecated, tagPropType } from './utils';
- var propTypes = {
- light: PropTypes.bool,
- dark: PropTypes.bool,
- inverse: deprecated(PropTypes.bool, 'Please use the prop "dark"'),
- full: PropTypes.bool,
- fixed: PropTypes.string,
- sticky: PropTypes.string,
- color: PropTypes.string,
- role: PropTypes.string,
- tag: tagPropType,
- className: PropTypes.string,
- cssModule: PropTypes.object,
- toggleable: deprecated(PropTypes.oneOfType([PropTypes.bool, PropTypes.string]), 'Please use the prop "expand"'),
- expand: PropTypes.oneOfType([PropTypes.bool, PropTypes.string])
- };
- var defaultProps = {
- tag: 'nav',
- expand: false
- };
-
- var getExpandClass = function getExpandClass(expand) {
- if (expand === false) {
- return false;
- } else if (expand === true || expand === 'xs') {
- return 'navbar-expand';
- }
-
- return "navbar-expand-" + expand;
- }; // To better maintain backwards compatibility while toggleable is deprecated.
- // We must map breakpoints to the next breakpoint so that toggleable and expand do the same things at the same breakpoint.
-
-
- var toggleableToExpand = {
- xs: 'sm',
- sm: 'md',
- md: 'lg',
- lg: 'xl'
- };
-
- var getToggleableClass = function getToggleableClass(toggleable) {
- if (toggleable === undefined || toggleable === 'xl') {
- return false;
- } else if (toggleable === false) {
- return 'navbar-expand';
- }
-
- return "navbar-expand-" + (toggleable === true ? 'sm' : toggleableToExpand[toggleable] || toggleable);
- };
-
- var Navbar = function Navbar(props) {
- var _classNames;
-
- var toggleable = props.toggleable,
- expand = props.expand,
- className = props.className,
- cssModule = props.cssModule,
- light = props.light,
- dark = props.dark,
- inverse = props.inverse,
- fixed = props.fixed,
- sticky = props.sticky,
- color = props.color,
- Tag = props.tag,
- attributes = _objectWithoutPropertiesLoose(props, ["toggleable", "expand", "className", "cssModule", "light", "dark", "inverse", "fixed", "sticky", "color", "tag"]);
-
- var classes = mapToCssModules(classNames(className, 'navbar', getExpandClass(expand) || getToggleableClass(toggleable), (_classNames = {
- 'navbar-light': light,
- 'navbar-dark': inverse || dark
- }, _classNames["bg-" + color] = color, _classNames["fixed-" + fixed] = fixed, _classNames["sticky-" + sticky] = sticky, _classNames)), cssModule);
- return React.createElement(Tag, _extends({}, attributes, {
- className: classes
- }));
- };
-
- Navbar.propTypes = propTypes;
- Navbar.defaultProps = defaultProps;
- export default Navbar;
|