@commercetools-uikit/dropdown-menu 19.11.0 → 19.12.1

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.
package/README.md CHANGED
@@ -11,10 +11,7 @@ It allows to use any component as the element used to trigger the floating panel
11
11
 
12
12
  The panel can be customized to render whatever is needed. However, as a common use case would be to render a list of elements and select one of them, this component provides some helpers to easily implement such use case.
13
13
 
14
- Something to bear in mind:
15
-
16
- - when the panel is open, the document scroll is blocked
17
- - if there is limited screen estate, the `menuPosition` may be adjusted to ensure the menu is displayed properly
14
+ Something to bear in mind is that, when the panel is open, the document scroll is blocked.
18
15
 
19
16
  ## Installation
20
17
 
@@ -18,7 +18,6 @@ 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');
22
21
  var _setTimeout = require('@babel/runtime-corejs3/core-js-stable/set-timeout');
23
22
  var react$1 = require('@emotion/react');
24
23
  var designSystem = require('@commercetools-uikit/design-system');
@@ -38,7 +37,6 @@ var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$def
38
37
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
39
38
  var _styled__default = /*#__PURE__*/_interopDefault(_styled);
40
39
  var _pt__default = /*#__PURE__*/_interopDefault(_pt);
41
- var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
42
40
  var _setTimeout__default = /*#__PURE__*/_interopDefault(_setTimeout);
43
41
  var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
44
42
  var SpacingsStack__default = /*#__PURE__*/_interopDefault(SpacingsStack);
@@ -70,7 +68,7 @@ DropDownTrigger.displayName = 'DropDownTrigger';
70
68
  var DropdownTrigger = DropDownTrigger;
71
69
 
72
70
  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; }
73
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context10, _context11; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context10 = ownKeys$2(Object(t), !0)).call(_context10, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context11 = ownKeys$2(Object(t))).call(_context11, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
71
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
74
72
  const boxShadowBottomSize = '5px';
75
73
  const outerMargin = designSystem.designTokens.spacing20;
76
74
  function getDropdownMenuBaseStyles(params) {
@@ -91,10 +89,9 @@ function DropdownBaseMenu(props) {
91
89
  // By default, the menu is not exceeding the viewport, this can change though
92
90
  let menuIsExceedingViewport = false;
93
91
  if (menuDOMRect.width >= document.body.scrollWidth) {
94
- var _context;
95
92
  // If the menu width is greater than the body width, we need to set the width of the menu to the body width
96
93
  // to prevent the menu from overflowing, this happens usually when the horizontalConstraint is set to 'auto'
97
- menuEl.style.width = _concatInstanceProperty__default["default"](_context = "calc(".concat(document.body.scrollWidth, "px - 2 * ")).call(_context, outerMargin, ")");
94
+ menuEl.style.width = `calc(${document.body.scrollWidth}px - 2 * ${outerMargin})`;
98
95
  menuIsExceedingViewport = true;
99
96
  }
100
97
 
@@ -133,40 +130,36 @@ function DropdownBaseMenu(props) {
133
130
  // the trigger
134
131
  const scrollWidthDiff = (document.body.scrollWidth - scrollWidthBefore) * 0.5;
135
132
  if (menuIsExceedingViewport) {
136
- var _context2;
137
- menuEl.style.left = _concatInstanceProperty__default["default"](_context2 = "calc( ".concat(outerMargin, " + ")).call(_context2, scrollWidthDiff, "px)");
133
+ menuEl.style.left = `calc( ${outerMargin} + ${scrollWidthDiff}px)`;
138
134
  } else if (menuXPosition === 'left') {
139
- menuEl.style.left = "".concat(triggerDOMRect.left + scrollWidthDiff, "px");
135
+ menuEl.style.left = `${triggerDOMRect.left + scrollWidthDiff}px`;
140
136
  menuEl.style.removeProperty('right');
141
137
  } else {
142
- menuEl.style.right = "".concat(window.innerWidth - triggerDOMRect.right - scrollWidthDiff, "px");
138
+ menuEl.style.right = `${window.innerWidth - triggerDOMRect.right - scrollWidthDiff}px`;
143
139
  menuEl.style.removeProperty('left');
144
140
  }
145
141
  if (menuYPosition === 'below') {
146
- var _context3;
147
- menuEl.style.top = _concatInstanceProperty__default["default"](_context3 = "calc(".concat(triggerDOMRect.top + triggerDOMRect.height, "px + ")).call(_context3, outerMargin, ")");
142
+ menuEl.style.top = `calc(${triggerDOMRect.top + triggerDOMRect.height}px + ${outerMargin})`;
148
143
  } else {
149
- var _context4;
150
144
  // Need to re-request getBoundingClientRect() because the menu height
151
145
  // might have changed when the dropdown is in 'auto' mode;
152
146
  let desiredMenuHeight = menuMaxHeight || menuEl.getBoundingClientRect().height;
153
- menuEl.style.top = _concatInstanceProperty__default["default"](_context4 = "calc(".concat(triggerDOMRect.top - desiredMenuHeight, "px - ")).call(_context4, outerMargin, ")");
147
+ menuEl.style.top = `calc(${triggerDOMRect.top - desiredMenuHeight}px - ${outerMargin})`;
154
148
  }
155
149
  if (menuMaxHeight) {
156
150
  // Apply the manual max-width
157
151
  menuEl.style.maxHeight = menuMaxHeight + 'px';
158
152
  } else {
159
- var _context5, _context6, _context7, _context8;
160
153
  // Make sure max-height does not exceed the available top- or bottom-space
161
- 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
+ menuEl.style.maxHeight = menuYPosition === 'below' ? `calc(${window.innerHeight - triggerDOMRect.bottom}px - ${outerMargin} - ${boxShadowBottomSize})` : `calc(${triggerDOMRect.top}px - ${outerMargin} - ${boxShadowBottomSize})`;
162
155
  }
163
156
 
164
157
  // All positioning operations done, make menu visible again
165
158
  menuEl.style.visibility = 'visible';
166
159
  }, 0);
167
160
  return () => {
168
- var _context9;
169
- _forEachInstanceProperty__default["default"](_context9 = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context9, prop => {
161
+ var _context;
162
+ _forEachInstanceProperty__default["default"](_context = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context, prop => {
170
163
  menuEl.style.removeProperty(prop);
171
164
  });
172
165
  };
@@ -244,9 +237,8 @@ function DropdownListMenuItem(props) {
244
237
  return jsxRuntime.jsx(AccessibleButton__default["default"], _objectSpread$1(_objectSpread$1({
245
238
  label: props.children,
246
239
  onClick: () => {
247
- var _props$onClick;
248
240
  toggle();
249
- (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props);
241
+ props.onClick?.();
250
242
  },
251
243
  isDisabled: props.isDisabled,
252
244
  css: getDropdownListMenuItemStyles(props)
@@ -327,9 +319,8 @@ function DropdownMenu(props) {
327
319
 
328
320
  // Close the dropdown when clicking outside of it
329
321
  const handleGlobalClick = react.useCallback(event => {
330
- var _triggerElement$paren;
331
322
  const triggerElement = triggerRef.current;
332
- 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))) {
323
+ if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !triggerElement.parentElement?.contains(event.target)) {
333
324
  toggle(false);
334
325
  }
335
326
  }, [triggerRef, toggle, isOpen]);
@@ -374,7 +365,7 @@ DropdownMenu.defaultProps = defaultProps;
374
365
  DropdownMenu.ListMenuItem = DropdownListMenuItem;
375
366
 
376
367
  // NOTE: This string will be replaced on build time with the package version.
377
- var version = "19.11.0";
368
+ var version = "19.12.1";
378
369
 
379
370
  exports["default"] = DropdownMenu;
380
371
  exports.useDropdownMenuContext = useDropdownMenuContext;
@@ -18,7 +18,6 @@ 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');
22
21
  var _setTimeout = require('@babel/runtime-corejs3/core-js-stable/set-timeout');
23
22
  var react$1 = require('@emotion/react');
24
23
  var designSystem = require('@commercetools-uikit/design-system');
@@ -37,7 +36,6 @@ var _Object$getOwnPropertyDescriptors__default = /*#__PURE__*/_interopDefault(_O
37
36
  var _Object$defineProperties__default = /*#__PURE__*/_interopDefault(_Object$defineProperties);
38
37
  var _Object$defineProperty__default = /*#__PURE__*/_interopDefault(_Object$defineProperty);
39
38
  var _styled__default = /*#__PURE__*/_interopDefault(_styled);
40
- var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
41
39
  var _setTimeout__default = /*#__PURE__*/_interopDefault(_setTimeout);
42
40
  var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
43
41
  var SpacingsStack__default = /*#__PURE__*/_interopDefault(SpacingsStack);
@@ -69,7 +67,7 @@ DropDownTrigger.displayName = 'DropDownTrigger';
69
67
  var DropdownTrigger = DropDownTrigger;
70
68
 
71
69
  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; }
72
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context10, _context11; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context10 = ownKeys$2(Object(t), !0)).call(_context10, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context11 = ownKeys$2(Object(t))).call(_context11, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
70
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty__default["default"](_context2 = ownKeys$2(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors__default["default"] ? _Object$defineProperties__default["default"](e, _Object$getOwnPropertyDescriptors__default["default"](t)) : _forEachInstanceProperty__default["default"](_context3 = ownKeys$2(Object(t))).call(_context3, function (r) { _Object$defineProperty__default["default"](e, r, _Object$getOwnPropertyDescriptor__default["default"](t, r)); }); } return e; }
73
71
  const boxShadowBottomSize = '5px';
74
72
  const outerMargin = designSystem.designTokens.spacing20;
75
73
  function getDropdownMenuBaseStyles(params) {
@@ -90,10 +88,9 @@ function DropdownBaseMenu(props) {
90
88
  // By default, the menu is not exceeding the viewport, this can change though
91
89
  let menuIsExceedingViewport = false;
92
90
  if (menuDOMRect.width >= document.body.scrollWidth) {
93
- var _context;
94
91
  // If the menu width is greater than the body width, we need to set the width of the menu to the body width
95
92
  // to prevent the menu from overflowing, this happens usually when the horizontalConstraint is set to 'auto'
96
- menuEl.style.width = _concatInstanceProperty__default["default"](_context = "calc(".concat(document.body.scrollWidth, "px - 2 * ")).call(_context, outerMargin, ")");
93
+ menuEl.style.width = `calc(${document.body.scrollWidth}px - 2 * ${outerMargin})`;
97
94
  menuIsExceedingViewport = true;
98
95
  }
99
96
 
@@ -132,40 +129,36 @@ function DropdownBaseMenu(props) {
132
129
  // the trigger
133
130
  const scrollWidthDiff = (document.body.scrollWidth - scrollWidthBefore) * 0.5;
134
131
  if (menuIsExceedingViewport) {
135
- var _context2;
136
- menuEl.style.left = _concatInstanceProperty__default["default"](_context2 = "calc( ".concat(outerMargin, " + ")).call(_context2, scrollWidthDiff, "px)");
132
+ menuEl.style.left = `calc( ${outerMargin} + ${scrollWidthDiff}px)`;
137
133
  } else if (menuXPosition === 'left') {
138
- menuEl.style.left = "".concat(triggerDOMRect.left + scrollWidthDiff, "px");
134
+ menuEl.style.left = `${triggerDOMRect.left + scrollWidthDiff}px`;
139
135
  menuEl.style.removeProperty('right');
140
136
  } else {
141
- menuEl.style.right = "".concat(window.innerWidth - triggerDOMRect.right - scrollWidthDiff, "px");
137
+ menuEl.style.right = `${window.innerWidth - triggerDOMRect.right - scrollWidthDiff}px`;
142
138
  menuEl.style.removeProperty('left');
143
139
  }
144
140
  if (menuYPosition === 'below') {
145
- var _context3;
146
- menuEl.style.top = _concatInstanceProperty__default["default"](_context3 = "calc(".concat(triggerDOMRect.top + triggerDOMRect.height, "px + ")).call(_context3, outerMargin, ")");
141
+ menuEl.style.top = `calc(${triggerDOMRect.top + triggerDOMRect.height}px + ${outerMargin})`;
147
142
  } else {
148
- var _context4;
149
143
  // Need to re-request getBoundingClientRect() because the menu height
150
144
  // might have changed when the dropdown is in 'auto' mode;
151
145
  let desiredMenuHeight = menuMaxHeight || menuEl.getBoundingClientRect().height;
152
- menuEl.style.top = _concatInstanceProperty__default["default"](_context4 = "calc(".concat(triggerDOMRect.top - desiredMenuHeight, "px - ")).call(_context4, outerMargin, ")");
146
+ menuEl.style.top = `calc(${triggerDOMRect.top - desiredMenuHeight}px - ${outerMargin})`;
153
147
  }
154
148
  if (menuMaxHeight) {
155
149
  // Apply the manual max-width
156
150
  menuEl.style.maxHeight = menuMaxHeight + 'px';
157
151
  } else {
158
- var _context5, _context6, _context7, _context8;
159
152
  // Make sure max-height does not exceed the available top- or bottom-space
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, ")");
153
+ menuEl.style.maxHeight = menuYPosition === 'below' ? `calc(${window.innerHeight - triggerDOMRect.bottom}px - ${outerMargin} - ${boxShadowBottomSize})` : `calc(${triggerDOMRect.top}px - ${outerMargin} - ${boxShadowBottomSize})`;
161
154
  }
162
155
 
163
156
  // All positioning operations done, make menu visible again
164
157
  menuEl.style.visibility = 'visible';
165
158
  }, 0);
166
159
  return () => {
167
- var _context9;
168
- _forEachInstanceProperty__default["default"](_context9 = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context9, prop => {
160
+ var _context;
161
+ _forEachInstanceProperty__default["default"](_context = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context, prop => {
169
162
  menuEl.style.removeProperty(prop);
170
163
  });
171
164
  };
@@ -221,9 +214,8 @@ function DropdownListMenuItem(props) {
221
214
  return jsxRuntime.jsx(AccessibleButton__default["default"], _objectSpread$1(_objectSpread$1({
222
215
  label: props.children,
223
216
  onClick: () => {
224
- var _props$onClick;
225
217
  toggle();
226
- (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props);
218
+ props.onClick?.();
227
219
  },
228
220
  isDisabled: props.isDisabled,
229
221
  css: getDropdownListMenuItemStyles(props)
@@ -295,9 +287,8 @@ function DropdownMenu(props) {
295
287
 
296
288
  // Close the dropdown when clicking outside of it
297
289
  const handleGlobalClick = react.useCallback(event => {
298
- var _triggerElement$paren;
299
290
  const triggerElement = triggerRef.current;
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))) {
291
+ if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !triggerElement.parentElement?.contains(event.target)) {
301
292
  toggle(false);
302
293
  }
303
294
  }, [triggerRef, toggle, isOpen]);
@@ -335,7 +326,7 @@ DropdownMenu.defaultProps = defaultProps;
335
326
  DropdownMenu.ListMenuItem = DropdownListMenuItem;
336
327
 
337
328
  // NOTE: This string will be replaced on build time with the package version.
338
- var version = "19.11.0";
329
+ var version = "19.12.1";
339
330
 
340
331
  exports["default"] = DropdownMenu;
341
332
  exports.useDropdownMenuContext = useDropdownMenuContext;
@@ -14,7 +14,6 @@ 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';
18
17
  import _setTimeout from '@babel/runtime-corejs3/core-js-stable/set-timeout';
19
18
  import { css } from '@emotion/react';
20
19
  import { designTokens } from '@commercetools-uikit/design-system';
@@ -48,7 +47,7 @@ DropDownTrigger.displayName = 'DropDownTrigger';
48
47
  var DropdownTrigger = DropDownTrigger;
49
48
 
50
49
  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; }
51
- function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context10, _context11; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context10 = ownKeys$2(Object(t), !0)).call(_context10, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context11 = ownKeys$2(Object(t))).call(_context11, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
50
+ function _objectSpread$2(e) { for (var r = 1; r < arguments.length; r++) { var _context2, _context3; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context2 = ownKeys$2(Object(t), !0)).call(_context2, function (r) { _defineProperty(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context3 = ownKeys$2(Object(t))).call(_context3, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
52
51
  const boxShadowBottomSize = '5px';
53
52
  const outerMargin = designTokens.spacing20;
54
53
  function getDropdownMenuBaseStyles(params) {
@@ -69,10 +68,9 @@ function DropdownBaseMenu(props) {
69
68
  // By default, the menu is not exceeding the viewport, this can change though
70
69
  let menuIsExceedingViewport = false;
71
70
  if (menuDOMRect.width >= document.body.scrollWidth) {
72
- var _context;
73
71
  // If the menu width is greater than the body width, we need to set the width of the menu to the body width
74
72
  // to prevent the menu from overflowing, this happens usually when the horizontalConstraint is set to 'auto'
75
- menuEl.style.width = _concatInstanceProperty(_context = "calc(".concat(document.body.scrollWidth, "px - 2 * ")).call(_context, outerMargin, ")");
73
+ menuEl.style.width = `calc(${document.body.scrollWidth}px - 2 * ${outerMargin})`;
76
74
  menuIsExceedingViewport = true;
77
75
  }
78
76
 
@@ -111,40 +109,36 @@ function DropdownBaseMenu(props) {
111
109
  // the trigger
112
110
  const scrollWidthDiff = (document.body.scrollWidth - scrollWidthBefore) * 0.5;
113
111
  if (menuIsExceedingViewport) {
114
- var _context2;
115
- menuEl.style.left = _concatInstanceProperty(_context2 = "calc( ".concat(outerMargin, " + ")).call(_context2, scrollWidthDiff, "px)");
112
+ menuEl.style.left = `calc( ${outerMargin} + ${scrollWidthDiff}px)`;
116
113
  } else if (menuXPosition === 'left') {
117
- menuEl.style.left = "".concat(triggerDOMRect.left + scrollWidthDiff, "px");
114
+ menuEl.style.left = `${triggerDOMRect.left + scrollWidthDiff}px`;
118
115
  menuEl.style.removeProperty('right');
119
116
  } else {
120
- menuEl.style.right = "".concat(window.innerWidth - triggerDOMRect.right - scrollWidthDiff, "px");
117
+ menuEl.style.right = `${window.innerWidth - triggerDOMRect.right - scrollWidthDiff}px`;
121
118
  menuEl.style.removeProperty('left');
122
119
  }
123
120
  if (menuYPosition === 'below') {
124
- var _context3;
125
- menuEl.style.top = _concatInstanceProperty(_context3 = "calc(".concat(triggerDOMRect.top + triggerDOMRect.height, "px + ")).call(_context3, outerMargin, ")");
121
+ menuEl.style.top = `calc(${triggerDOMRect.top + triggerDOMRect.height}px + ${outerMargin})`;
126
122
  } else {
127
- var _context4;
128
123
  // Need to re-request getBoundingClientRect() because the menu height
129
124
  // might have changed when the dropdown is in 'auto' mode;
130
125
  let desiredMenuHeight = menuMaxHeight || menuEl.getBoundingClientRect().height;
131
- menuEl.style.top = _concatInstanceProperty(_context4 = "calc(".concat(triggerDOMRect.top - desiredMenuHeight, "px - ")).call(_context4, outerMargin, ")");
126
+ menuEl.style.top = `calc(${triggerDOMRect.top - desiredMenuHeight}px - ${outerMargin})`;
132
127
  }
133
128
  if (menuMaxHeight) {
134
129
  // Apply the manual max-width
135
130
  menuEl.style.maxHeight = menuMaxHeight + 'px';
136
131
  } else {
137
- var _context5, _context6, _context7, _context8;
138
132
  // Make sure max-height does not exceed the available top- or bottom-space
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, ")");
133
+ menuEl.style.maxHeight = menuYPosition === 'below' ? `calc(${window.innerHeight - triggerDOMRect.bottom}px - ${outerMargin} - ${boxShadowBottomSize})` : `calc(${triggerDOMRect.top}px - ${outerMargin} - ${boxShadowBottomSize})`;
140
134
  }
141
135
 
142
136
  // All positioning operations done, make menu visible again
143
137
  menuEl.style.visibility = 'visible';
144
138
  }, 0);
145
139
  return () => {
146
- var _context9;
147
- _forEachInstanceProperty(_context9 = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context9, prop => {
140
+ var _context;
141
+ _forEachInstanceProperty(_context = ['top', 'left', 'right', 'bottom', 'width', 'height', 'maxHeight', 'visibility']).call(_context, prop => {
148
142
  menuEl.style.removeProperty(prop);
149
143
  });
150
144
  };
@@ -222,9 +216,8 @@ function DropdownListMenuItem(props) {
222
216
  return jsx(AccessibleButton, _objectSpread$1(_objectSpread$1({
223
217
  label: props.children,
224
218
  onClick: () => {
225
- var _props$onClick;
226
219
  toggle();
227
- (_props$onClick = props.onClick) === null || _props$onClick === void 0 || _props$onClick.call(props);
220
+ props.onClick?.();
228
221
  },
229
222
  isDisabled: props.isDisabled,
230
223
  css: getDropdownListMenuItemStyles(props)
@@ -305,9 +298,8 @@ function DropdownMenu(props) {
305
298
 
306
299
  // Close the dropdown when clicking outside of it
307
300
  const handleGlobalClick = useCallback(event => {
308
- var _triggerElement$paren;
309
301
  const triggerElement = triggerRef.current;
310
- 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))) {
302
+ if (isOpen && triggerElement && event.target !== triggerElement && window.document.contains(event.target) && !triggerElement.parentElement?.contains(event.target)) {
311
303
  toggle(false);
312
304
  }
313
305
  }, [triggerRef, toggle, isOpen]);
@@ -352,6 +344,6 @@ DropdownMenu.defaultProps = defaultProps;
352
344
  DropdownMenu.ListMenuItem = DropdownListMenuItem;
353
345
 
354
346
  // NOTE: This string will be replaced on build time with the package version.
355
- var version = "19.11.0";
347
+ var version = "19.12.1";
356
348
 
357
349
  export { DropdownMenu as default, useDropdownMenuContext, version };
@@ -3,7 +3,7 @@ import { type TMaxProp } from '@commercetools-uikit/constraints';
3
3
  export declare function getDropdownMenuBaseStyles(params: {
4
4
  isOpen: boolean;
5
5
  horizontalConstraint: TMaxProp;
6
- }): import("@emotion/utils").SerializedStyles;
6
+ }): import("@emotion/react").SerializedStyles;
7
7
  export type TDropdownContentMenuProps = {
8
8
  children: ReactNode;
9
9
  horizontalConstraint: TMaxProp;
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": "19.11.0",
4
+ "version": "19.12.1",
5
5
  "bugs": "https://github.com/commercetools/ui-kit/issues",
6
6
  "repository": {
7
7
  "type": "git",
@@ -21,14 +21,14 @@
21
21
  "dependencies": {
22
22
  "@babel/runtime": "^7.20.13",
23
23
  "@babel/runtime-corejs3": "^7.20.13",
24
- "@commercetools-uikit/accessible-button": "19.11.0",
25
- "@commercetools-uikit/constraints": "19.11.0",
26
- "@commercetools-uikit/design-system": "19.11.0",
27
- "@commercetools-uikit/hooks": "19.11.0",
28
- "@commercetools-uikit/secondary-button": "19.11.0",
29
- "@commercetools-uikit/spacings-inline": "19.11.0",
30
- "@commercetools-uikit/spacings-stack": "19.11.0",
31
- "@commercetools-uikit/utils": "19.11.0",
24
+ "@commercetools-uikit/accessible-button": "19.12.1",
25
+ "@commercetools-uikit/constraints": "19.12.1",
26
+ "@commercetools-uikit/design-system": "19.12.1",
27
+ "@commercetools-uikit/hooks": "19.12.1",
28
+ "@commercetools-uikit/secondary-button": "19.12.1",
29
+ "@commercetools-uikit/spacings-inline": "19.12.1",
30
+ "@commercetools-uikit/spacings-stack": "19.12.1",
31
+ "@commercetools-uikit/utils": "19.12.1",
32
32
  "@emotion/react": "^11.10.5",
33
33
  "@emotion/styled": "^11.10.5",
34
34
  "prop-types": "15.8.1",