UNPKG

3.19 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7exports.__esModule = true;
8exports.default = void 0;
9
10var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
11
12var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
14var _classnames = _interopRequireDefault(require("classnames"));
15
16var _react = _interopRequireWildcard(require("react"));
17
18var _DropdownMenu = require("react-overlays/DropdownMenu");
19
20var _useMergedRefs = _interopRequireDefault(require("@restart/hooks/useMergedRefs"));
21
22var _NavbarContext = _interopRequireDefault(require("./NavbarContext"));
23
24var _ThemeProvider = require("./ThemeProvider");
25
26var _useWrappedRefWithWarning = _interopRequireDefault(require("./useWrappedRefWithWarning"));
27
28var defaultProps = {
29 alignRight: false,
30 flip: true
31};
32
33var DropdownMenu = _react.default.forwardRef(function (_ref, ref) {
34 var bsPrefix = _ref.bsPrefix,
35 className = _ref.className,
36 alignRight = _ref.alignRight,
37 rootCloseEvent = _ref.rootCloseEvent,
38 flip = _ref.flip,
39 popperConfig = _ref.popperConfig,
40 showProps = _ref.show,
41 _ref$as = _ref.as,
42 Component = _ref$as === void 0 ? 'div' : _ref$as,
43 props = (0, _objectWithoutPropertiesLoose2.default)(_ref, ["bsPrefix", "className", "alignRight", "rootCloseEvent", "flip", "popperConfig", "show", "as"]);
44 var isNavbar = (0, _react.useContext)(_NavbarContext.default);
45 var prefix = (0, _ThemeProvider.useBootstrapPrefix)(bsPrefix, 'dropdown-menu');
46
47 var _useDropdownMenu = (0, _DropdownMenu.useDropdownMenu)({
48 flip: flip,
49 popperConfig: popperConfig,
50 rootCloseEvent: rootCloseEvent,
51 show: showProps,
52 alignEnd: alignRight,
53 usePopper: !isNavbar
54 }),
55 hasShown = _useDropdownMenu.hasShown,
56 placement = _useDropdownMenu.placement,
57 show = _useDropdownMenu.show,
58 alignEnd = _useDropdownMenu.alignEnd,
59 close = _useDropdownMenu.close,
60 menuProps = _useDropdownMenu.props;
61
62 menuProps.ref = (0, _useMergedRefs.default)(menuProps.ref, (0, _useWrappedRefWithWarning.default)(ref, 'DropdownMenu'));
63 if (!hasShown) return null; // For custom components provide additional, non-DOM, props;
64
65 if (typeof Component !== 'string') {
66 menuProps.show = show;
67 menuProps.close = close;
68 menuProps.alignRight = alignEnd;
69 }
70
71 var style = props.style;
72
73 if (placement) {
74 // we don't need the default popper style,
75 // menus are display: none when not shown.
76 style = (0, _extends2.default)({}, style, {}, menuProps.style);
77 props['x-placement'] = placement;
78 }
79
80 return _react.default.createElement(Component, (0, _extends2.default)({}, props, menuProps, {
81 style: style,
82 className: (0, _classnames.default)(className, prefix, show && 'show', alignEnd && prefix + "-right")
83 }));
84});
85
86DropdownMenu.displayName = 'DropdownMenu';
87DropdownMenu.defaultProps = defaultProps;
88var _default = DropdownMenu;
89exports.default = _default;
90module.exports = exports["default"];
\No newline at end of file