@commercetools-uikit/dropdown-menu 20.2.3 → 20.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -18,6 +18,7 @@ var react = require('react');
|
|
|
18
18
|
var utils = require('@commercetools-uikit/utils');
|
|
19
19
|
var hooks = require('@commercetools-uikit/hooks');
|
|
20
20
|
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
21
|
+
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
21
22
|
var _setTimeout = require('@babel/runtime-corejs3/core-js-stable/set-timeout');
|
|
22
23
|
var react$1 = require('@emotion/react');
|
|
23
24
|
var designSystem = require('@commercetools-uikit/design-system');
|
|
@@ -36,6 +37,7 @@ var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_O
|
|
|
36
37
|
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
37
38
|
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
38
39
|
var _styled__default = /*#__PURE__*/_interopDefault(_styled);
|
|
40
|
+
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
39
41
|
var _setTimeout__default = /*#__PURE__*/_interopDefault(_setTimeout);
|
|
40
42
|
var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
|
|
41
43
|
var SpacingsStack__default = /*#__PURE__*/_interopDefault(SpacingsStack);
|
|
@@ -67,7 +69,7 @@ DropDownTrigger.displayName = 'DropDownTrigger';
|
|
|
67
69
|
var DropdownTrigger = DropDownTrigger;
|
|
68
70
|
|
|
69
71
|
function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
70
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
72
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context0, _context1; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context0 = ownKeys$2(Object(t), !0)).call(_context0, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context1 = ownKeys$2(Object(t))).call(_context1, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
71
73
|
const boxShadowBottomSize = '5px';
|
|
72
74
|
const outerMargin = designSystem.designTokens.spacing20;
|
|
73
75
|
function getDropdownMenuBaseStyles(params) {
|
|
@@ -88,9 +90,10 @@ function DropdownBaseMenu(props) {
|
|
|
88
90
|
// By default, the menu is not exceeding the viewport, this can change though
|
|
89
91
|
let menuIsExceedingViewport = false;
|
|
90
92
|
if (menuDOMRect.width >= document.body.scrollWidth) {
|
|
93
|
+
var _context;
|
|
91
94
|
// If the menu width is greater than the body width, we need to set the width of the menu to the body width
|
|
92
95
|
// to prevent the menu from overflowing, this happens usually when the horizontalConstraint is set to 'auto'
|
|
93
|
-
menuEl.style.width =
|
|
96
|
+
menuEl.style.width = _concatInstanceProperty__default["default"](_context = "calc(".concat(document.body.scrollWidth, "px - 2 * ")).call(_context, outerMargin, ")");
|
|
94
97
|
menuIsExceedingViewport = true;
|
|
95
98
|
}
|
|
96
99
|
|
|
@@ -129,36 +132,40 @@ function DropdownBaseMenu(props) {
|
|
|
129
132
|
// the trigger
|
|
130
133
|
const scrollWidthDiff = (document.body.scrollWidth - scrollWidthBefore) * 0.5;
|
|
131
134
|
if (menuIsExceedingViewport) {
|
|
132
|
-
|
|
135
|
+
var _context2;
|
|
136
|
+
menuEl.style.left = _concatInstanceProperty__default["default"](_context2 = "calc( ".concat(outerMargin, " + ")).call(_context2, scrollWidthDiff, "px)");
|
|
133
137
|
} else if (menuXPosition === 'left') {
|
|
134
|
-
menuEl.style.left =
|
|
138
|
+
menuEl.style.left = "".concat(triggerDOMRect.left + scrollWidthDiff, "px");
|
|
135
139
|
menuEl.style.removeProperty('right');
|
|
136
140
|
} else {
|
|
137
|
-
menuEl.style.right =
|
|
141
|
+
menuEl.style.right = "".concat(window.innerWidth - triggerDOMRect.right - scrollWidthDiff, "px");
|
|
138
142
|
menuEl.style.removeProperty('left');
|
|
139
143
|
}
|
|
140
144
|
if (menuYPosition === 'below') {
|
|
141
|
-
|
|
145
|
+
var _context3;
|
|
146
|
+
menuEl.style.top = _concatInstanceProperty__default["default"](_context3 = "calc(".concat(triggerDOMRect.top + triggerDOMRect.height, "px + ")).call(_context3, outerMargin, ")");
|
|
142
147
|
} else {
|
|
148
|
+
var _context4;
|
|
143
149
|
// Need to re-request getBoundingClientRect() because the menu height
|
|
144
150
|
// might have changed when the dropdown is in 'auto' mode;
|
|
145
151
|
let desiredMenuHeight = menuMaxHeight || menuEl.getBoundingClientRect().height;
|
|
146
|
-
menuEl.style.top =
|
|
152
|
+
menuEl.style.top = _concatInstanceProperty__default["default"](_context4 = "calc(".concat(triggerDOMRect.top - desiredMenuHeight, "px - ")).call(_context4, outerMargin, ")");
|
|
147
153
|
}
|
|
148
154
|
if (menuMaxHeight) {
|
|
149
155
|
// Apply the manual max-width
|
|
150
156
|
menuEl.style.maxHeight = menuMaxHeight + 'px';
|
|
151
157
|
} else {
|
|
158
|
+
var _context5, _context6, _context7, _context8;
|
|
152
159
|
// Make sure max-height does not exceed the available top- or bottom-space
|
|
153
|
-
menuEl.style.maxHeight = menuYPosition === 'below' ?
|
|
160
|
+
menuEl.style.maxHeight = menuYPosition === 'below' ? _concatInstanceProperty__default["default"](_context5 = _concatInstanceProperty__default["default"](_context6 = "calc(".concat(window.innerHeight - triggerDOMRect.bottom, "px - ")).call(_context6, outerMargin, " - ")).call(_context5, boxShadowBottomSize, ")") : _concatInstanceProperty__default["default"](_context7 = _concatInstanceProperty__default["default"](_context8 = "calc(".concat(triggerDOMRect.top, "px - ")).call(_context8, outerMargin, " - ")).call(_context7, boxShadowBottomSize, ")");
|
|
154
161
|
}
|
|
155
162
|
|
|
156
163
|
// All positioning operations done, make menu visible again
|
|
157
164
|
menuEl.style.visibility = 'visible';
|
|
158
165
|
}, 0);
|
|
159
166
|
return () => {
|
|
160
|
-
var
|
|
161
|
-
_forEachInstanceProperty__default["default"](
|
|
167
|
+
var _context9;
|
|
168
|
+
_forEachInstanceProperty__default["default"](_context9 = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context9, prop => {
|
|
162
169
|
menuEl.style.removeProperty(prop);
|
|
163
170
|
});
|
|
164
171
|
};
|
|
@@ -211,8 +218,9 @@ function DropdownListMenuItem(props) {
|
|
|
211
218
|
return jsxRuntime.jsx(AccessibleButton__default["default"], _objectSpread$1(_objectSpread$1({
|
|
212
219
|
label: props.children,
|
|
213
220
|
onClick: () => {
|
|
221
|
+
var _props$onClick;
|
|
214
222
|
toggle();
|
|
215
|
-
props.onClick
|
|
223
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props);
|
|
216
224
|
},
|
|
217
225
|
isDisabled: props.isDisabled,
|
|
218
226
|
css: getDropdownListMenuItemStyles(props)
|
|
@@ -295,8 +303,9 @@ function DropdownMenu(_ref) {
|
|
|
295
303
|
|
|
296
304
|
// Close the dropdown when clicking outside of it
|
|
297
305
|
const handleGlobalClick = react.useCallback(event => {
|
|
306
|
+
var _triggerElement$paren;
|
|
298
307
|
const triggerElement = triggerRef.current;
|
|
299
|
-
if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !triggerElement.parentElement
|
|
308
|
+
if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !((_triggerElement$paren = triggerElement.parentElement) !== null && _triggerElement$paren !== void 0 && _triggerElement$paren.contains(event.target))) {
|
|
300
309
|
toggle(false);
|
|
301
310
|
}
|
|
302
311
|
}, [triggerRef, toggle, isOpen]);
|
|
@@ -336,7 +345,7 @@ function DropdownMenu(_ref) {
|
|
|
336
345
|
DropdownMenu.ListMenuItem = DropdownListMenuItem;
|
|
337
346
|
|
|
338
347
|
// NOTE: This string will be replaced on build time with the package version.
|
|
339
|
-
var version = "20.
|
|
348
|
+
var version = "20.3.0";
|
|
340
349
|
|
|
341
350
|
exports["default"] = DropdownMenu;
|
|
342
351
|
exports.useDropdownMenuContext = useDropdownMenuContext;
|
|
@@ -18,6 +18,7 @@ var react = require('react');
|
|
|
18
18
|
var utils = require('@commercetools-uikit/utils');
|
|
19
19
|
var hooks = require('@commercetools-uikit/hooks');
|
|
20
20
|
var jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
21
|
+
var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
|
|
21
22
|
var _setTimeout = require('@babel/runtime-corejs3/core-js-stable/set-timeout');
|
|
22
23
|
var react$1 = require('@emotion/react');
|
|
23
24
|
var designSystem = require('@commercetools-uikit/design-system');
|
|
@@ -36,6 +37,7 @@ var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_O
|
|
|
36
37
|
var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
|
|
37
38
|
var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
|
|
38
39
|
var _styled__default = /*#__PURE__*/_interopDefault(_styled);
|
|
40
|
+
var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
|
|
39
41
|
var _setTimeout__default = /*#__PURE__*/_interopDefault(_setTimeout);
|
|
40
42
|
var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
|
|
41
43
|
var SpacingsStack__default = /*#__PURE__*/_interopDefault(SpacingsStack);
|
|
@@ -67,7 +69,7 @@ DropDownTrigger.displayName = 'DropDownTrigger';
|
|
|
67
69
|
var DropdownTrigger = DropDownTrigger;
|
|
68
70
|
|
|
69
71
|
function ownKeys$2(e, r) { var t = _Object$keys__default["default"](e); if (_Object$getOwnPropertySymbols__default["default"]) { var o = _Object$getOwnPropertySymbols__default["default"](e); r && (o = _filterInstanceProperty__default["default"](o).call(o, function (r) { return _Object$getOwnPropertyDescriptor__default["default"](e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
70
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
72
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context0, _context1; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context0 = ownKeys$2(Object(t), !0)).call(_context0, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context1 = ownKeys$2(Object(t))).call(_context1, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
|
|
71
73
|
const boxShadowBottomSize = '5px';
|
|
72
74
|
const outerMargin = designSystem.designTokens.spacing20;
|
|
73
75
|
function getDropdownMenuBaseStyles(params) {
|
|
@@ -88,9 +90,10 @@ function DropdownBaseMenu(props) {
|
|
|
88
90
|
// By default, the menu is not exceeding the viewport, this can change though
|
|
89
91
|
let menuIsExceedingViewport = false;
|
|
90
92
|
if (menuDOMRect.width >= document.body.scrollWidth) {
|
|
93
|
+
var _context;
|
|
91
94
|
// If the menu width is greater than the body width, we need to set the width of the menu to the body width
|
|
92
95
|
// to prevent the menu from overflowing, this happens usually when the horizontalConstraint is set to 'auto'
|
|
93
|
-
menuEl.style.width =
|
|
96
|
+
menuEl.style.width = _concatInstanceProperty__default["default"](_context = "calc(".concat(document.body.scrollWidth, "px - 2 * ")).call(_context, outerMargin, ")");
|
|
94
97
|
menuIsExceedingViewport = true;
|
|
95
98
|
}
|
|
96
99
|
|
|
@@ -129,36 +132,40 @@ function DropdownBaseMenu(props) {
|
|
|
129
132
|
// the trigger
|
|
130
133
|
const scrollWidthDiff = (document.body.scrollWidth - scrollWidthBefore) * 0.5;
|
|
131
134
|
if (menuIsExceedingViewport) {
|
|
132
|
-
|
|
135
|
+
var _context2;
|
|
136
|
+
menuEl.style.left = _concatInstanceProperty__default["default"](_context2 = "calc( ".concat(outerMargin, " + ")).call(_context2, scrollWidthDiff, "px)");
|
|
133
137
|
} else if (menuXPosition === 'left') {
|
|
134
|
-
menuEl.style.left =
|
|
138
|
+
menuEl.style.left = "".concat(triggerDOMRect.left + scrollWidthDiff, "px");
|
|
135
139
|
menuEl.style.removeProperty('right');
|
|
136
140
|
} else {
|
|
137
|
-
menuEl.style.right =
|
|
141
|
+
menuEl.style.right = "".concat(window.innerWidth - triggerDOMRect.right - scrollWidthDiff, "px");
|
|
138
142
|
menuEl.style.removeProperty('left');
|
|
139
143
|
}
|
|
140
144
|
if (menuYPosition === 'below') {
|
|
141
|
-
|
|
145
|
+
var _context3;
|
|
146
|
+
menuEl.style.top = _concatInstanceProperty__default["default"](_context3 = "calc(".concat(triggerDOMRect.top + triggerDOMRect.height, "px + ")).call(_context3, outerMargin, ")");
|
|
142
147
|
} else {
|
|
148
|
+
var _context4;
|
|
143
149
|
// Need to re-request getBoundingClientRect() because the menu height
|
|
144
150
|
// might have changed when the dropdown is in 'auto' mode;
|
|
145
151
|
let desiredMenuHeight = menuMaxHeight || menuEl.getBoundingClientRect().height;
|
|
146
|
-
menuEl.style.top =
|
|
152
|
+
menuEl.style.top = _concatInstanceProperty__default["default"](_context4 = "calc(".concat(triggerDOMRect.top - desiredMenuHeight, "px - ")).call(_context4, outerMargin, ")");
|
|
147
153
|
}
|
|
148
154
|
if (menuMaxHeight) {
|
|
149
155
|
// Apply the manual max-width
|
|
150
156
|
menuEl.style.maxHeight = menuMaxHeight + 'px';
|
|
151
157
|
} else {
|
|
158
|
+
var _context5, _context6, _context7, _context8;
|
|
152
159
|
// Make sure max-height does not exceed the available top- or bottom-space
|
|
153
|
-
menuEl.style.maxHeight = menuYPosition === 'below' ?
|
|
160
|
+
menuEl.style.maxHeight = menuYPosition === 'below' ? _concatInstanceProperty__default["default"](_context5 = _concatInstanceProperty__default["default"](_context6 = "calc(".concat(window.innerHeight - triggerDOMRect.bottom, "px - ")).call(_context6, outerMargin, " - ")).call(_context5, boxShadowBottomSize, ")") : _concatInstanceProperty__default["default"](_context7 = _concatInstanceProperty__default["default"](_context8 = "calc(".concat(triggerDOMRect.top, "px - ")).call(_context8, outerMargin, " - ")).call(_context7, boxShadowBottomSize, ")");
|
|
154
161
|
}
|
|
155
162
|
|
|
156
163
|
// All positioning operations done, make menu visible again
|
|
157
164
|
menuEl.style.visibility = 'visible';
|
|
158
165
|
}, 0);
|
|
159
166
|
return () => {
|
|
160
|
-
var
|
|
161
|
-
_forEachInstanceProperty__default["default"](
|
|
167
|
+
var _context9;
|
|
168
|
+
_forEachInstanceProperty__default["default"](_context9 = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context9, prop => {
|
|
162
169
|
menuEl.style.removeProperty(prop);
|
|
163
170
|
});
|
|
164
171
|
};
|
|
@@ -211,8 +218,9 @@ function DropdownListMenuItem(props) {
|
|
|
211
218
|
return jsxRuntime.jsx(AccessibleButton__default["default"], _objectSpread$1(_objectSpread$1({
|
|
212
219
|
label: props.children,
|
|
213
220
|
onClick: () => {
|
|
221
|
+
var _props$onClick;
|
|
214
222
|
toggle();
|
|
215
|
-
props.onClick
|
|
223
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props);
|
|
216
224
|
},
|
|
217
225
|
isDisabled: props.isDisabled,
|
|
218
226
|
css: getDropdownListMenuItemStyles(props)
|
|
@@ -287,8 +295,9 @@ function DropdownMenu(_ref) {
|
|
|
287
295
|
|
|
288
296
|
// Close the dropdown when clicking outside of it
|
|
289
297
|
const handleGlobalClick = react.useCallback(event => {
|
|
298
|
+
var _triggerElement$paren;
|
|
290
299
|
const triggerElement = triggerRef.current;
|
|
291
|
-
if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !triggerElement.parentElement
|
|
300
|
+
if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !((_triggerElement$paren = triggerElement.parentElement) !== null && _triggerElement$paren !== void 0 && _triggerElement$paren.contains(event.target))) {
|
|
292
301
|
toggle(false);
|
|
293
302
|
}
|
|
294
303
|
}, [triggerRef, toggle, isOpen]);
|
|
@@ -328,7 +337,7 @@ function DropdownMenu(_ref) {
|
|
|
328
337
|
DropdownMenu.ListMenuItem = DropdownListMenuItem;
|
|
329
338
|
|
|
330
339
|
// NOTE: This string will be replaced on build time with the package version.
|
|
331
|
-
var version = "20.
|
|
340
|
+
var version = "20.3.0";
|
|
332
341
|
|
|
333
342
|
exports["default"] = DropdownMenu;
|
|
334
343
|
exports.useDropdownMenuContext = useDropdownMenuContext;
|
|
@@ -14,6 +14,7 @@ import { useContext, createContext, forwardRef, useRef, useLayoutEffect, useMemo
|
|
|
14
14
|
import { filterDataAttributes } from '@commercetools-uikit/utils';
|
|
15
15
|
import { useToggleState } from '@commercetools-uikit/hooks';
|
|
16
16
|
import { jsx, jsxs } from '@emotion/react/jsx-runtime';
|
|
17
|
+
import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
|
|
17
18
|
import _setTimeout from '@babel/runtime-corejs3/core-js-stable/set-timeout';
|
|
18
19
|
import { css } from '@emotion/react';
|
|
19
20
|
import { designTokens } from '@commercetools-uikit/design-system';
|
|
@@ -47,7 +48,7 @@ DropDownTrigger.displayName = 'DropDownTrigger';
|
|
|
47
48
|
var DropdownTrigger = DropDownTrigger;
|
|
48
49
|
|
|
49
50
|
function ownKeys$2(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
50
|
-
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var
|
|
51
|
+
function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context0, _context1; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context0 = ownKeys$2(Object(t), !0)).call(_context0, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context1 = ownKeys$2(Object(t))).call(_context1, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
51
52
|
const boxShadowBottomSize = '5px';
|
|
52
53
|
const outerMargin = designTokens.spacing20;
|
|
53
54
|
function getDropdownMenuBaseStyles(params) {
|
|
@@ -68,9 +69,10 @@ function DropdownBaseMenu(props) {
|
|
|
68
69
|
// By default, the menu is not exceeding the viewport, this can change though
|
|
69
70
|
let menuIsExceedingViewport = false;
|
|
70
71
|
if (menuDOMRect.width >= document.body.scrollWidth) {
|
|
72
|
+
var _context;
|
|
71
73
|
// If the menu width is greater than the body width, we need to set the width of the menu to the body width
|
|
72
74
|
// to prevent the menu from overflowing, this happens usually when the horizontalConstraint is set to 'auto'
|
|
73
|
-
menuEl.style.width =
|
|
75
|
+
menuEl.style.width = _concatInstanceProperty(_context = "calc(".concat(document.body.scrollWidth, "px - 2 * ")).call(_context, outerMargin, ")");
|
|
74
76
|
menuIsExceedingViewport = true;
|
|
75
77
|
}
|
|
76
78
|
|
|
@@ -109,36 +111,40 @@ function DropdownBaseMenu(props) {
|
|
|
109
111
|
// the trigger
|
|
110
112
|
const scrollWidthDiff = (document.body.scrollWidth - scrollWidthBefore) * 0.5;
|
|
111
113
|
if (menuIsExceedingViewport) {
|
|
112
|
-
|
|
114
|
+
var _context2;
|
|
115
|
+
menuEl.style.left = _concatInstanceProperty(_context2 = "calc( ".concat(outerMargin, " + ")).call(_context2, scrollWidthDiff, "px)");
|
|
113
116
|
} else if (menuXPosition === 'left') {
|
|
114
|
-
menuEl.style.left =
|
|
117
|
+
menuEl.style.left = "".concat(triggerDOMRect.left + scrollWidthDiff, "px");
|
|
115
118
|
menuEl.style.removeProperty('right');
|
|
116
119
|
} else {
|
|
117
|
-
menuEl.style.right =
|
|
120
|
+
menuEl.style.right = "".concat(window.innerWidth - triggerDOMRect.right - scrollWidthDiff, "px");
|
|
118
121
|
menuEl.style.removeProperty('left');
|
|
119
122
|
}
|
|
120
123
|
if (menuYPosition === 'below') {
|
|
121
|
-
|
|
124
|
+
var _context3;
|
|
125
|
+
menuEl.style.top = _concatInstanceProperty(_context3 = "calc(".concat(triggerDOMRect.top + triggerDOMRect.height, "px + ")).call(_context3, outerMargin, ")");
|
|
122
126
|
} else {
|
|
127
|
+
var _context4;
|
|
123
128
|
// Need to re-request getBoundingClientRect() because the menu height
|
|
124
129
|
// might have changed when the dropdown is in 'auto' mode;
|
|
125
130
|
let desiredMenuHeight = menuMaxHeight || menuEl.getBoundingClientRect().height;
|
|
126
|
-
menuEl.style.top =
|
|
131
|
+
menuEl.style.top = _concatInstanceProperty(_context4 = "calc(".concat(triggerDOMRect.top - desiredMenuHeight, "px - ")).call(_context4, outerMargin, ")");
|
|
127
132
|
}
|
|
128
133
|
if (menuMaxHeight) {
|
|
129
134
|
// Apply the manual max-width
|
|
130
135
|
menuEl.style.maxHeight = menuMaxHeight + 'px';
|
|
131
136
|
} else {
|
|
137
|
+
var _context5, _context6, _context7, _context8;
|
|
132
138
|
// Make sure max-height does not exceed the available top- or bottom-space
|
|
133
|
-
menuEl.style.maxHeight = menuYPosition === 'below' ?
|
|
139
|
+
menuEl.style.maxHeight = menuYPosition === 'below' ? _concatInstanceProperty(_context5 = _concatInstanceProperty(_context6 = "calc(".concat(window.innerHeight - triggerDOMRect.bottom, "px - ")).call(_context6, outerMargin, " - ")).call(_context5, boxShadowBottomSize, ")") : _concatInstanceProperty(_context7 = _concatInstanceProperty(_context8 = "calc(".concat(triggerDOMRect.top, "px - ")).call(_context8, outerMargin, " - ")).call(_context7, boxShadowBottomSize, ")");
|
|
134
140
|
}
|
|
135
141
|
|
|
136
142
|
// All positioning operations done, make menu visible again
|
|
137
143
|
menuEl.style.visibility = 'visible';
|
|
138
144
|
}, 0);
|
|
139
145
|
return () => {
|
|
140
|
-
var
|
|
141
|
-
_forEachInstanceProperty(
|
|
146
|
+
var _context9;
|
|
147
|
+
_forEachInstanceProperty(_context9 = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context9, prop => {
|
|
142
148
|
menuEl.style.removeProperty(prop);
|
|
143
149
|
});
|
|
144
150
|
};
|
|
@@ -191,8 +197,9 @@ function DropdownListMenuItem(props) {
|
|
|
191
197
|
return jsx(AccessibleButton, _objectSpread$1(_objectSpread$1({
|
|
192
198
|
label: props.children,
|
|
193
199
|
onClick: () => {
|
|
200
|
+
var _props$onClick;
|
|
194
201
|
toggle();
|
|
195
|
-
props.onClick
|
|
202
|
+
(_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props);
|
|
196
203
|
},
|
|
197
204
|
isDisabled: props.isDisabled,
|
|
198
205
|
css: getDropdownListMenuItemStyles(props)
|
|
@@ -275,8 +282,9 @@ function DropdownMenu(_ref) {
|
|
|
275
282
|
|
|
276
283
|
// Close the dropdown when clicking outside of it
|
|
277
284
|
const handleGlobalClick = useCallback(event => {
|
|
285
|
+
var _triggerElement$paren;
|
|
278
286
|
const triggerElement = triggerRef.current;
|
|
279
|
-
if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !triggerElement.parentElement
|
|
287
|
+
if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !((_triggerElement$paren = triggerElement.parentElement) !== null && _triggerElement$paren !== void 0 && _triggerElement$paren.contains(event.target))) {
|
|
280
288
|
toggle(false);
|
|
281
289
|
}
|
|
282
290
|
}, [triggerRef, toggle, isOpen]);
|
|
@@ -316,6 +324,6 @@ function DropdownMenu(_ref) {
|
|
|
316
324
|
DropdownMenu.ListMenuItem = DropdownListMenuItem;
|
|
317
325
|
|
|
318
326
|
// NOTE: This string will be replaced on build time with the package version.
|
|
319
|
-
var version = "20.
|
|
327
|
+
var version = "20.3.0";
|
|
320
328
|
|
|
321
329
|
export { DropdownMenu as default, useDropdownMenuContext, version };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commercetools-uikit/dropdown-menu",
|
|
3
3
|
"description": "The Dropdown Menu component represents a component that triggers the rendering of a floating menu.",
|
|
4
|
-
"version": "20.
|
|
4
|
+
"version": "20.3.0",
|
|
5
5
|
"bugs": "https://github.com/commercetools/ui-kit/issues",
|
|
6
6
|
"repository": {
|
|
7
7
|
"type": "git",
|
|
@@ -21,20 +21,20 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@babel/runtime": "^7.20.13",
|
|
23
23
|
"@babel/runtime-corejs3": "^7.20.13",
|
|
24
|
-
"@commercetools-uikit/accessible-button": "20.
|
|
25
|
-
"@commercetools-uikit/constraints": "20.
|
|
26
|
-
"@commercetools-uikit/design-system": "20.
|
|
27
|
-
"@commercetools-uikit/hooks": "20.
|
|
28
|
-
"@commercetools-uikit/secondary-button": "20.
|
|
29
|
-
"@commercetools-uikit/spacings-inline": "20.
|
|
30
|
-
"@commercetools-uikit/spacings-stack": "20.
|
|
31
|
-
"@commercetools-uikit/utils": "20.
|
|
24
|
+
"@commercetools-uikit/accessible-button": "20.3.0",
|
|
25
|
+
"@commercetools-uikit/constraints": "20.3.0",
|
|
26
|
+
"@commercetools-uikit/design-system": "20.3.0",
|
|
27
|
+
"@commercetools-uikit/hooks": "20.3.0",
|
|
28
|
+
"@commercetools-uikit/secondary-button": "20.3.0",
|
|
29
|
+
"@commercetools-uikit/spacings-inline": "20.3.0",
|
|
30
|
+
"@commercetools-uikit/spacings-stack": "20.3.0",
|
|
31
|
+
"@commercetools-uikit/utils": "20.3.0",
|
|
32
32
|
"@emotion/react": "^11.10.5",
|
|
33
33
|
"@emotion/styled": "^11.10.5",
|
|
34
34
|
"react-intl": "^7.1.4"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
|
-
"react": "19.
|
|
37
|
+
"react": "19.2.0"
|
|
38
38
|
},
|
|
39
39
|
"peerDependencies": {
|
|
40
40
|
"react": "19.x"
|