UNPKG

1.76 kBJavaScriptView Raw
1import _extends from "@babel/runtime/helpers/esm/extends";
2import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
3import classNames from 'classnames';
4import isRequiredForA11y from 'prop-types-extra/lib/isRequiredForA11y';
5import React from 'react';
6import { useDropdownToggle } from 'react-overlays/DropdownToggle';
7import useMergedRefs from '@restart/hooks/useMergedRefs';
8import Button from './Button';
9import { useBootstrapPrefix } from './ThemeProvider';
10import useWrappedRefWithWarning from './useWrappedRefWithWarning';
11var DropdownToggle = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
12 var bsPrefix = _ref.bsPrefix,
13 split = _ref.split,
14 className = _ref.className,
15 childBsPrefix = _ref.childBsPrefix,
16 _ref$as = _ref.as,
17 Component = _ref$as === void 0 ? Button : _ref$as,
18 props = _objectWithoutPropertiesLoose(_ref, ["bsPrefix", "split", "className", "childBsPrefix", "as"]);
19
20 var prefix = useBootstrapPrefix(bsPrefix, 'dropdown-toggle');
21
22 if (childBsPrefix !== undefined) {
23 props.bsPrefix = childBsPrefix;
24 }
25
26 var _useDropdownToggle = useDropdownToggle(),
27 toggleProps = _useDropdownToggle[0],
28 toggle = _useDropdownToggle[1].toggle;
29
30 toggleProps.ref = useMergedRefs(toggleProps.ref, useWrappedRefWithWarning(ref, 'DropdownToggle')); // This intentionally forwards size and variant (if set) to the
31 // underlying component, to allow it to render size and style variants.
32
33 return /*#__PURE__*/React.createElement(Component, _extends({
34 onClick: toggle,
35 className: classNames(className, prefix, split && prefix + "-split")
36 }, toggleProps, props));
37});
38DropdownToggle.displayName = 'DropdownToggle';
39export default DropdownToggle;
\No newline at end of file