UNPKG

1.36 kBJavaScriptView Raw
1"use client";
2
3import classNames from 'classnames';
4import * as React from 'react';
5import { useContext } from 'react';
6import useEventCallback from '@restart/hooks/useEventCallback';
7import { useBootstrapPrefix } from './ThemeProvider';
8import NavbarContext from './NavbarContext';
9import { jsx as _jsx } from "react/jsx-runtime";
10const NavbarToggle = /*#__PURE__*/React.forwardRef(({
11 bsPrefix,
12 className,
13 children,
14 label = 'Toggle navigation',
15 // Need to define the default "as" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595
16 as: Component = 'button',
17 onClick,
18 ...props
19}, ref) => {
20 bsPrefix = useBootstrapPrefix(bsPrefix, 'navbar-toggler');
21 const {
22 onToggle,
23 expanded
24 } = useContext(NavbarContext) || {};
25 const handleClick = useEventCallback(e => {
26 if (onClick) onClick(e);
27 if (onToggle) onToggle();
28 });
29 if (Component === 'button') {
30 props.type = 'button';
31 }
32 return /*#__PURE__*/_jsx(Component, {
33 ...props,
34 ref: ref,
35 onClick: handleClick,
36 "aria-label": label,
37 className: classNames(className, bsPrefix, !expanded && 'collapsed'),
38 children: children || /*#__PURE__*/_jsx("span", {
39 className: `${bsPrefix}-icon`
40 })
41 });
42});
43NavbarToggle.displayName = 'NavbarToggle';
44export default NavbarToggle;
\No newline at end of file