UNPKG

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