UNPKG

4.03 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5exports.__esModule = true;
6exports.default = void 0;
7
8var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
10var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
11
12var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
13
14var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
15
16var _react = _interopRequireDefault(require("react"));
17
18var _propTypes = _interopRequireDefault(require("prop-types"));
19
20var _classnames = _interopRequireDefault(require("classnames"));
21
22var _reactPopper = require("react-popper");
23
24var _DropdownContext = require("./DropdownContext");
25
26var _utils = require("./utils");
27
28var propTypes = {
29 tag: _utils.tagPropType,
30 children: _propTypes.default.node.isRequired,
31 right: _propTypes.default.bool,
32 flip: _propTypes.default.bool,
33 modifiers: _propTypes.default.object,
34 className: _propTypes.default.string,
35 cssModule: _propTypes.default.object,
36 persist: _propTypes.default.bool,
37 positionFixed: _propTypes.default.bool
38};
39var defaultProps = {
40 tag: 'div',
41 flip: true
42};
43var noFlipModifier = {
44 flip: {
45 enabled: false
46 }
47};
48var directionPositionMap = {
49 up: 'top',
50 left: 'left',
51 right: 'right',
52 down: 'bottom'
53};
54
55var DropdownMenu =
56/*#__PURE__*/
57function (_React$Component) {
58 (0, _inheritsLoose2.default)(DropdownMenu, _React$Component);
59
60 function DropdownMenu() {
61 return _React$Component.apply(this, arguments) || this;
62 }
63
64 var _proto = DropdownMenu.prototype;
65
66 _proto.render = function render() {
67 var _this = this;
68
69 var _this$props = this.props,
70 className = _this$props.className,
71 cssModule = _this$props.cssModule,
72 right = _this$props.right,
73 tag = _this$props.tag,
74 flip = _this$props.flip,
75 modifiers = _this$props.modifiers,
76 persist = _this$props.persist,
77 positionFixed = _this$props.positionFixed,
78 attrs = (0, _objectWithoutPropertiesLoose2.default)(_this$props, ["className", "cssModule", "right", "tag", "flip", "modifiers", "persist", "positionFixed"]);
79 var classes = (0, _utils.mapToCssModules)((0, _classnames.default)(className, 'dropdown-menu', {
80 'dropdown-menu-right': right,
81 show: this.context.isOpen
82 }), cssModule);
83 var Tag = tag;
84
85 if (persist || this.context.isOpen && !this.context.inNavbar) {
86 var position1 = directionPositionMap[this.context.direction] || 'bottom';
87 var position2 = right ? 'end' : 'start';
88 var poperPlacement = position1 + "-" + position2;
89 var poperModifiers = !flip ? (0, _objectSpread2.default)({}, modifiers, noFlipModifier) : modifiers;
90 var popperPositionFixed = !!positionFixed;
91 return _react.default.createElement(_reactPopper.Popper, {
92 placement: poperPlacement,
93 modifiers: poperModifiers,
94 positionFixed: popperPositionFixed
95 }, function (_ref) {
96 var ref = _ref.ref,
97 style = _ref.style,
98 placement = _ref.placement;
99 return _react.default.createElement(Tag, (0, _extends2.default)({
100 tabIndex: "-1",
101 role: "menu",
102 ref: ref,
103 style: style
104 }, attrs, {
105 "aria-hidden": !_this.context.isOpen,
106 className: classes,
107 "x-placement": placement
108 }));
109 });
110 }
111
112 return _react.default.createElement(Tag, (0, _extends2.default)({
113 tabIndex: "-1",
114 role: "menu"
115 }, attrs, {
116 "aria-hidden": !this.context.isOpen,
117 className: classes,
118 "x-placement": attrs.placement
119 }));
120 };
121
122 return DropdownMenu;
123}(_react.default.Component);
124
125;
126DropdownMenu.propTypes = propTypes;
127DropdownMenu.defaultProps = defaultProps;
128DropdownMenu.contextType = _DropdownContext.DropdownContext;
129var _default = DropdownMenu;
130exports.default = _default;
\No newline at end of file