1 | "use strict";
|
2 |
|
3 | var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
4 |
|
5 | exports.__esModule = true;
|
6 | exports.default = void 0;
|
7 |
|
8 | var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9 |
|
10 | var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
|
11 |
|
12 | var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
13 |
|
14 | var _inheritsLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/inheritsLoose"));
|
15 |
|
16 | var _react = _interopRequireDefault(require("react"));
|
17 |
|
18 | var _propTypes = _interopRequireDefault(require("prop-types"));
|
19 |
|
20 | var _classnames = _interopRequireDefault(require("classnames"));
|
21 |
|
22 | var _reactPopper = require("react-popper");
|
23 |
|
24 | var _DropdownContext = require("./DropdownContext");
|
25 |
|
26 | var _utils = require("./utils");
|
27 |
|
28 | var 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 | };
|
39 | var defaultProps = {
|
40 | tag: 'div',
|
41 | flip: true
|
42 | };
|
43 | var noFlipModifier = {
|
44 | flip: {
|
45 | enabled: false
|
46 | }
|
47 | };
|
48 | var directionPositionMap = {
|
49 | up: 'top',
|
50 | left: 'left',
|
51 | right: 'right',
|
52 | down: 'bottom'
|
53 | };
|
54 |
|
55 | var DropdownMenu =
|
56 |
|
57 | function (_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 | ;
|
126 | DropdownMenu.propTypes = propTypes;
|
127 | DropdownMenu.defaultProps = defaultProps;
|
128 | DropdownMenu.contextType = _DropdownContext.DropdownContext;
|
129 | var _default = DropdownMenu;
|
130 | exports.default = _default; |
\ | No newline at end of file |