UNPKG

1.66 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import classNames from 'classnames';
4import React, { useContext } from 'react';
5import useEventCallback from '@restart/hooks/useEventCallback';
6import { useBootstrapPrefix } from './ThemeProvider';
7import NavbarContext from './NavbarContext';
8var defaultProps = {
9 label: 'Toggle navigation'
10};
11var NavbarToggle = React.forwardRef(function (_ref, ref) {
12 var bsPrefix = _ref.bsPrefix,
13 className = _ref.className,
14 children = _ref.children,
15 label = _ref.label,
16 _ref$as = _ref.as,
17 Component = _ref$as === void 0 ? 'button' : _ref$as,
18 onClick = _ref.onClick,
19 props = _objectWithoutPropertiesLoose(_ref, ["bsPrefix", "className", "children", "label", "as", "onClick"]);
20
21 bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');
22
23 var _ref2 = useContext(NavbarContext) || {},
24 onToggle = _ref2.onToggle,
25 expanded = _ref2.expanded;
26
27 var handleClick = useEventCallback(function (e) {
28 if (onClick) onClick(e);
29 if (onToggle) onToggle();
30 });
31
32 if (Component === 'button') {
33 props.type = 'button';
34 }
35
36 return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
37 ref: ref,
38 onClick: handleClick,
39 "aria-label": label,
40 className: classNames(className, bsPrefix, !expanded && 'collapsed')
41 }), children || /*#__PURE__*/React.createElement("span", {
42 className: bsPrefix + "-icon"
43 }));
44});
45NavbarToggle.displayName = 'NavbarToggle';
46NavbarToggle.defaultProps = defaultProps;
47export default NavbarToggle;
\No newline at end of file