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.
40 lines
1.7 KiB
40 lines
1.7 KiB
import classNames from 'classnames';
|
|
import * as React from 'react';
|
|
import { useContext } from 'react';
|
|
import { useDropdownToggle } from '@restart/ui/DropdownToggle';
|
|
import DropdownContext from '@restart/ui/DropdownContext';
|
|
import useMergedRefs from '@restart/hooks/useMergedRefs';
|
|
import Button from './Button';
|
|
import InputGroupContext from './InputGroupContext';
|
|
import { useBootstrapPrefix } from './ThemeProvider';
|
|
import useWrappedRefWithWarning from './useWrappedRefWithWarning';
|
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
const DropdownToggle = /*#__PURE__*/React.forwardRef(({
|
|
bsPrefix,
|
|
split,
|
|
className,
|
|
childBsPrefix,
|
|
// Need to define the default "as" during prop destructuring to be compatible with styled-components github.com/react-bootstrap/react-bootstrap/issues/3595
|
|
as: Component = Button,
|
|
...props
|
|
}, ref) => {
|
|
const prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');
|
|
const dropdownContext = useContext(DropdownContext);
|
|
const isInputGroup = useContext(InputGroupContext);
|
|
|
|
if (childBsPrefix !== undefined) {
|
|
props.bsPrefix = childBsPrefix;
|
|
}
|
|
|
|
const [toggleProps] = useDropdownToggle();
|
|
toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the
|
|
// underlying component, to allow it to render size and style variants.
|
|
|
|
return /*#__PURE__*/_jsx(Component, {
|
|
className: classNames(className, prefix, split && `${prefix}-split`, !!isInputGroup && (dropdownContext == null ? void 0 : dropdownContext.show) && 'show'),
|
|
...toggleProps,
|
|
...props
|
|
});
|
|
});
|
|
DropdownToggle.displayName = 'DropdownToggle';
|
|
export default DropdownToggle; |