@commercetools-uikit/dropdown-menu 19.1.0 → 19.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.
package/README.md CHANGED
@@ -90,6 +90,7 @@ export const CustomDropdownExample = () => {
90
90
  | Props | Type | Required | Default | Description |
91
91
  | -------------------------- | ----------------------------------------------------- | :------: | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
92
92
  | `menuPosition` | `union`<br/>Possible values:<br/>`'left' , 'right'` | | `'left'` | The position of the menu relative to the trigger element. |
93
+ | `menuMaxHeight` | `number` | | | The maximum height for the menu in pixels.&#xA;By default, the max height will be the available space between the trigger element and the bottom of the viewport. |
93
94
  | `triggerElement` | `ReactElement` | ✅ | | The element that triggers the dropdown. |
94
95
  | `menuType` | `union`<br/>Possible values:<br/>`'default' , 'list'` | | `'default'` | The type of the menu.&#xA;The 'default' type just renders a dropdown container but the 'list' type is intended to be used with the DropdownMenu.ListMenuItem component. |
95
96
  | `menuHorizontalConstraint` | `TMaxProp` | | `'auto'` | The horizontal constraint of the menu. |
@@ -5,10 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
6
6
  var _styled = require('@emotion/styled/base');
7
7
  var _pt = require('prop-types');
8
- var React = require('react');
8
+ var react = require('react');
9
9
  var hooks = require('@commercetools-uikit/hooks');
10
10
  var jsxRuntime = require('@emotion/react/jsx-runtime');
11
- var react = require('@emotion/react');
11
+ var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
12
+ var react$1 = require('@emotion/react');
12
13
  var designSystem = require('@commercetools-uikit/design-system');
13
14
  var Constraints = require('@commercetools-uikit/constraints');
14
15
  var SpacingsStack = require('@commercetools-uikit/spacings-stack');
@@ -18,17 +19,17 @@ function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e };
18
19
 
19
20
  var _styled__default = /*#__PURE__*/_interopDefault(_styled);
20
21
  var _pt__default = /*#__PURE__*/_interopDefault(_pt);
21
- var React__default = /*#__PURE__*/_interopDefault(React);
22
+ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
22
23
  var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
23
24
  var SpacingsStack__default = /*#__PURE__*/_interopDefault(SpacingsStack);
24
25
  var AccessibleButton__default = /*#__PURE__*/_interopDefault(AccessibleButton);
25
26
 
26
- const DropdownMenuContext = /*#__PURE__*/React.createContext({
27
+ const DropdownMenuContext = /*#__PURE__*/react.createContext({
27
28
  isOpen: false,
28
29
  toggle: () => {}
29
30
  });
30
31
  function useDropdownMenuContext() {
31
- const context = React.useContext(DropdownMenuContext);
32
+ const context = react.useContext(DropdownMenuContext);
32
33
  if (!context) {
33
34
  throw new Error('[ui-kit] DropdownMenu context can only be used in DropdownMenu children components.');
34
35
  }
@@ -38,7 +39,7 @@ function useDropdownMenuContext() {
38
39
  };
39
40
  }
40
41
 
41
- const DropDownTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
42
+ const DropDownTrigger = /*#__PURE__*/react.forwardRef((props, ref) => {
42
43
  return jsxRuntime.jsx("div", {
43
44
  onClick: props.onClick,
44
45
  ref: ref,
@@ -48,20 +49,24 @@ const DropDownTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
48
49
  DropDownTrigger.displayName = 'DropDownTrigger';
49
50
  var DropdownTrigger = DropDownTrigger;
50
51
 
52
+ const boxShadowBottomSize = '5px';
53
+ const marginTop = designSystem.designTokens.spacing20;
51
54
  function getDropdownMenuBaseStyles(params) {
52
- return /*#__PURE__*/react.css("background-color:", designSystem.designTokens.colorSurface, ";border:1px solid ", designSystem.designTokens.colorSurface, ";border-radius:", designSystem.designTokens.borderRadius4, ";box-shadow:0 2px 5px 0px rgba(0, 0, 0, 0.15);display:", params.isOpen ? 'block' : 'none', ";margin-top:", designSystem.designTokens.spacing20, ";max-width:", Constraints__default["default"].getMaxPropTokenValue(params.horizontalConstraint), ";position:fixed;width:", params.horizontalConstraint === 'auto' ? 'auto' : '100%', ";z-index:5;" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownMenuBaseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbWVudS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JZIiwiZmlsZSI6ImRyb3Bkb3duLW1lbnUtbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDU1NQcm9wZXJ0aWVzLFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IENvbnN0cmFpbnRzLCB7IHR5cGUgVE1heFByb3AgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgU3BhY2luZ3NTdGFjayBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncy1zdGFjayc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bk1lbnVCYXNlU3R5bGVzKHBhcmFtczoge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGhvcml6b250YWxDb25zdHJhaW50OiBUTWF4UHJvcDtcbn0pIHtcbiAgcmV0dXJuIGNzc2BcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2Rlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7ZGVzaWduVG9rZW5zLmNvbG9yU3VyZmFjZX07XG4gICAgYm9yZGVyLXJhZGl1czogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNH07XG4gICAgYm94LXNoYWRvdzogMCAycHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIGRpc3BsYXk6ICR7cGFyYW1zLmlzT3BlbiA/ICdibG9jaycgOiAnbm9uZSd9O1xuICAgIG1hcmdpbi10b3A6ICR7ZGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgbWF4LXdpZHRoOiAke0NvbnN0cmFpbnRzLmdldE1heFByb3BUb2tlblZhbHVlKHBhcmFtcy5ob3Jpem9udGFsQ29uc3RyYWludCl9O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogJHtwYXJhbXMuaG9yaXpvbnRhbENvbnN0cmFpbnQgPT09ICdhdXRvJyA/ICdhdXRvJyA6ICcxMDAlJ307XG4gICAgei1pbmRleDogNTtcbiAgYDtcbn1cblxudHlwZSBURHJvcGRvd25CYXNlTWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjdXN0b21TdHlsZXM/OiBDU1NQcm9wZXJ0aWVzO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICB0cmlnZ2VyRWxlbWVudFJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn07XG5mdW5jdGlvbiBEcm9wZG93bkJhc2VNZW51KHByb3BzOiBURHJvcGRvd25CYXNlTWVudVByb3BzKSB7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSB3aGVuIGl0IGlzIG9wZW5cbiAgICBpZiAocHJvcHMuaXNPcGVuICYmIHByb3BzLnRyaWdnZXJFbGVtZW50UmVmLmN1cnJlbnQgJiYgbWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzID1cbiAgICAgICAgcHJvcHMudHJpZ2dlckVsZW1lbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50Q29vcmRpbmF0ZXMgPSBtZW51UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgdHJpZ2dlckVsZW1lbnRDb29yZGluYXRlcy50b3AgKyB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmhlaWdodFxuICAgICAgfXB4YDtcbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS5sZWZ0ID1cbiAgICAgICAgcHJvcHMubWVudVBvc2l0aW9uID09PSAnbGVmdCdcbiAgICAgICAgICA/IGAke3RyaWdnZXJFbGVtZW50Q29vcmRpbmF0ZXMubGVmdH1weGBcbiAgICAgICAgICA6IGAke1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmxlZnQgK1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLndpZHRoIC1cbiAgICAgICAgICAgICAgbWVudUVsZW1lbnRDb29yZGluYXRlcy53aWR0aFxuICAgICAgICAgICAgfXB4YDtcbiAgICB9XG4gIH0sIFtwcm9wcy5pc09wZW4sIHByb3BzLm1lbnVQb3NpdGlvbiwgcHJvcHMudHJpZ2dlckVsZW1lbnRSZWZdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Z2V0RHJvcGRvd25NZW51QmFzZVN0eWxlcyhwcm9wcyl9XG4gICAgICBzdHlsZT17cHJvcHMuY3VzdG9tU3R5bGVzfVxuICAgICAgcmVmPXttZW51UmVmfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duQ29udGVudE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6IFRNYXhQcm9wO1xuICBtZW51UG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgdHJpZ2dlckVsZW1lbnRSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59O1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duQ29udGVudE1lbnUgPSAocHJvcHM6IFREcm9wZG93bkNvbnRlbnRNZW51UHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25CYXNlTWVudVxuICAgICAgY3VzdG9tU3R5bGVzPXt7XG4gICAgICAgIHBhZGRpbmc6IGRlc2lnblRva2Vucy5zcGFjaW5nMzAsXG4gICAgICB9fVxuICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLmhvcml6b250YWxDb25zdHJhaW50fVxuICAgICAgaXNPcGVuPXtwcm9wcy5pc09wZW59XG4gICAgICBtZW51UG9zaXRpb249e3Byb3BzLm1lbnVQb3NpdGlvbn1cbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmPXtwcm9wcy50cmlnZ2VyRWxlbWVudFJlZn1cbiAgICA+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9Ecm9wZG93bkJhc2VNZW51PlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTGlzdE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6IFRNYXhQcm9wO1xuICBtZW51UG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgdHJpZ2dlckVsZW1lbnRSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59O1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duTGlzdE1lbnUgPSAocHJvcHM6IFREcm9wZG93bkxpc3RNZW51UHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25CYXNlTWVudVxuICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLmhvcml6b250YWxDb25zdHJhaW50fVxuICAgICAgaXNPcGVuPXtwcm9wcy5pc09wZW59XG4gICAgICBtZW51UG9zaXRpb249e3Byb3BzLm1lbnVQb3NpdGlvbn1cbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmPXtwcm9wcy50cmlnZ2VyRWxlbWVudFJlZn1cbiAgICA+XG4gICAgICA8U3BhY2luZ3NTdGFjayBzY2FsZT1cInhzXCI+e3Byb3BzLmNoaWxkcmVufTwvU3BhY2luZ3NTdGFjaz5cbiAgICA8L0Ryb3Bkb3duQmFzZU1lbnU+XG4gICk7XG59O1xuIl19 */");
55
+ return /*#__PURE__*/react$1.css("background-color:", designSystem.designTokens.colorSurface, ";border:1px solid ", designSystem.designTokens.colorSurface, ";border-radius:", designSystem.designTokens.borderRadius4, ";box-shadow:0 2px ", boxShadowBottomSize, " 0px rgba(0, 0, 0, 0.15);display:", params.isOpen ? 'block' : 'none', ";margin-top:", marginTop, ";max-width:", Constraints__default["default"].getMaxPropTokenValue(params.horizontalConstraint), ";overflow-y:auto;position:fixed;width:", params.horizontalConstraint === 'auto' ? 'auto' : '100%', ";z-index:5;" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownMenuBaseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbWVudS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JZIiwiZmlsZSI6ImRyb3Bkb3duLW1lbnUtbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDU1NQcm9wZXJ0aWVzLFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IENvbnN0cmFpbnRzLCB7IHR5cGUgVE1heFByb3AgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgU3BhY2luZ3NTdGFjayBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncy1zdGFjayc7XG5cbi8vIFdlIGRlY2xhcmUgdGhpcyBzdHlsZSBwcm9wZXJ0aWVzIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHRoZW0gYm90aCBmb3IgaW5pdGlhbCBjb21wb25lbnQgc3R5bGluZ1xuLy8gYnV0IGFsc28gZm9yIGNhbGN1bGF0aW5nIHRoZSBkZWZhdWx0IG1heCBoZWlnaHQgb2YgdGhlIGRyb3Bkb3duIG1lbnUgc28gd2UgbWFrZSBzdXJlIGl0IGZpdHNcbi8vIHdpdGhpbiB0aGUgdmlld3BvcnQuXG5jb25zdCBib3hTaGFkb3dCb3R0b21TaXplID0gJzVweCc7XG5jb25zdCBtYXJnaW5Ub3AgPSBkZXNpZ25Ub2tlbnMuc3BhY2luZzIwO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHJvcGRvd25NZW51QmFzZVN0eWxlcyhwYXJhbXM6IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG59KSB7XG4gIHJldHVybiBjc3NgXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke2Rlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgIGJvcmRlci1yYWRpdXM6ICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czR9O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4ICR7Ym94U2hhZG93Qm90dG9tU2l6ZX0gMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgZGlzcGxheTogJHtwYXJhbXMuaXNPcGVuID8gJ2Jsb2NrJyA6ICdub25lJ307XG4gICAgbWFyZ2luLXRvcDogJHttYXJnaW5Ub3B9O1xuICAgIG1heC13aWR0aDogJHtDb25zdHJhaW50cy5nZXRNYXhQcm9wVG9rZW5WYWx1ZShwYXJhbXMuaG9yaXpvbnRhbENvbnN0cmFpbnQpfTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogJHtwYXJhbXMuaG9yaXpvbnRhbENvbnN0cmFpbnQgPT09ICdhdXRvJyA/ICdhdXRvJyA6ICcxMDAlJ307XG4gICAgei1pbmRleDogNTtcbiAgYDtcbn1cblxudHlwZSBURHJvcGRvd25CYXNlTWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjdXN0b21TdHlsZXM/OiBDU1NQcm9wZXJ0aWVzO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICBtZW51TWF4SGVpZ2h0PzogbnVtYmVyO1xuICB0cmlnZ2VyRWxlbWVudFJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn07XG5mdW5jdGlvbiBEcm9wZG93bkJhc2VNZW51KHByb3BzOiBURHJvcGRvd25CYXNlTWVudVByb3BzKSB7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSB3aGVuIGl0IGlzIG9wZW5cbiAgICBpZiAocHJvcHMuaXNPcGVuICYmIHByb3BzLnRyaWdnZXJFbGVtZW50UmVmLmN1cnJlbnQgJiYgbWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzID1cbiAgICAgICAgcHJvcHMudHJpZ2dlckVsZW1lbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50Q29vcmRpbmF0ZXMgPSBtZW51UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgdHJpZ2dlckVsZW1lbnRDb29yZGluYXRlcy50b3AgKyB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmhlaWdodFxuICAgICAgfXB4YDtcbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS5sZWZ0ID1cbiAgICAgICAgcHJvcHMubWVudVBvc2l0aW9uID09PSAnbGVmdCdcbiAgICAgICAgICA/IGAke3RyaWdnZXJFbGVtZW50Q29vcmRpbmF0ZXMubGVmdH1weGBcbiAgICAgICAgICA6IGAke1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmxlZnQgK1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLndpZHRoIC1cbiAgICAgICAgICAgICAgbWVudUVsZW1lbnRDb29yZGluYXRlcy53aWR0aFxuICAgICAgICAgICAgfXB4YDtcbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS5tYXhIZWlnaHQgPSBwcm9wcy5tZW51TWF4SGVpZ2h0XG4gICAgICAgID8gYCR7cHJvcHMubWVudU1heEhlaWdodH1weGBcbiAgICAgICAgOiBgY2FsYygke1xuICAgICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0IC1cbiAgICAgICAgICAgICh0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLnRvcCArIHRyaWdnZXJFbGVtZW50Q29vcmRpbmF0ZXMuaGVpZ2h0KVxuICAgICAgICAgIH1weCAtICR7bWFyZ2luVG9wfSAtICR7Ym94U2hhZG93Qm90dG9tU2l6ZX0pYDtcbiAgICB9XG4gIH0sIFtcbiAgICBwcm9wcy5pc09wZW4sXG4gICAgcHJvcHMubWVudVBvc2l0aW9uLFxuICAgIHByb3BzLnRyaWdnZXJFbGVtZW50UmVmLFxuICAgIHByb3BzLm1lbnVNYXhIZWlnaHQsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXREcm9wZG93bk1lbnVCYXNlU3R5bGVzKHByb3BzKX1cbiAgICAgIHN0eWxlPXtwcm9wcy5jdXN0b21TdHlsZXN9XG4gICAgICByZWY9e21lbnVSZWZ9XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgdHlwZSBURHJvcGRvd25Db250ZW50TWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG4gIG1lbnVQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgbWVudU1heEhlaWdodD86IG51bWJlcjtcbiAgaXNPcGVuOiBib29sZWFuO1xuICB0cmlnZ2VyRWxlbWVudFJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn07XG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZW50TWVudSA9IChwcm9wczogVERyb3Bkb3duQ29udGVudE1lbnVQcm9wcykgPT4ge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bkJhc2VNZW51XG4gICAgICBjdXN0b21TdHlsZXM9e3tcbiAgICAgICAgcGFkZGluZzogZGVzaWduVG9rZW5zLnNwYWNpbmczMCxcbiAgICAgIH19XG4gICAgICBob3Jpem9udGFsQ29uc3RyYWludD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9XG4gICAgICBpc09wZW49e3Byb3BzLmlzT3Blbn1cbiAgICAgIG1lbnVQb3NpdGlvbj17cHJvcHMubWVudVBvc2l0aW9ufVxuICAgICAgbWVudU1heEhlaWdodD17cHJvcHMubWVudU1heEhlaWdodH1cbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmPXtwcm9wcy50cmlnZ2VyRWxlbWVudFJlZn1cbiAgICA+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9Ecm9wZG93bkJhc2VNZW51PlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTGlzdE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6IFRNYXhQcm9wO1xuICBtZW51UG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gIG1lbnVNYXhIZWlnaHQ/OiBudW1iZXI7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgdHJpZ2dlckVsZW1lbnRSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59O1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duTGlzdE1lbnUgPSAocHJvcHM6IFREcm9wZG93bkxpc3RNZW51UHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25CYXNlTWVudVxuICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLmhvcml6b250YWxDb25zdHJhaW50fVxuICAgICAgaXNPcGVuPXtwcm9wcy5pc09wZW59XG4gICAgICBtZW51UG9zaXRpb249e3Byb3BzLm1lbnVQb3NpdGlvbn1cbiAgICAgIG1lbnVNYXhIZWlnaHQ9e3Byb3BzLm1lbnVNYXhIZWlnaHR9XG4gICAgICB0cmlnZ2VyRWxlbWVudFJlZj17cHJvcHMudHJpZ2dlckVsZW1lbnRSZWZ9XG4gICAgPlxuICAgICAgPFNwYWNpbmdzU3RhY2sgc2NhbGU9XCJ4c1wiPntwcm9wcy5jaGlsZHJlbn08L1NwYWNpbmdzU3RhY2s+XG4gICAgPC9Ecm9wZG93bkJhc2VNZW51PlxuICApO1xufTtcbiJdfQ== */");
53
56
  }
54
57
  function DropdownBaseMenu(props) {
55
- const menuRef = React.useRef(null);
56
- React.useLayoutEffect(() => {
58
+ const menuRef = react.useRef(null);
59
+ react.useLayoutEffect(() => {
57
60
  // Update the position of the menu when it is open
58
61
  if (props.isOpen && props.triggerElementRef.current && menuRef.current) {
62
+ var _context, _context2;
59
63
  const triggerElementCoordinates = props.triggerElementRef.current.getBoundingClientRect();
60
64
  const menuElementCoordinates = menuRef.current.getBoundingClientRect();
61
65
  menuRef.current.style.top = "".concat(triggerElementCoordinates.top + triggerElementCoordinates.height, "px");
62
66
  menuRef.current.style.left = props.menuPosition === 'left' ? "".concat(triggerElementCoordinates.left, "px") : "".concat(triggerElementCoordinates.left + triggerElementCoordinates.width - menuElementCoordinates.width, "px");
67
+ menuRef.current.style.maxHeight = props.menuMaxHeight ? "".concat(props.menuMaxHeight, "px") : _concatInstanceProperty__default["default"](_context = _concatInstanceProperty__default["default"](_context2 = "calc(".concat(window.innerHeight - (triggerElementCoordinates.top + triggerElementCoordinates.height), "px - ")).call(_context2, marginTop, " - ")).call(_context, boxShadowBottomSize, ")");
63
68
  }
64
- }, [props.isOpen, props.menuPosition, props.triggerElementRef]);
69
+ }, [props.isOpen, props.menuPosition, props.triggerElementRef, props.menuMaxHeight]);
65
70
  return jsxRuntime.jsx("div", {
66
71
  css: getDropdownMenuBaseStyles(props),
67
72
  style: props.customStyles,
@@ -75,6 +80,7 @@ DropdownBaseMenu.propTypes = process.env.NODE_ENV !== "production" ? {
75
80
  horizontalConstraint: _pt__default["default"].any.isRequired,
76
81
  isOpen: _pt__default["default"].bool.isRequired,
77
82
  menuPosition: _pt__default["default"].oneOf(['left', 'right']).isRequired,
83
+ menuMaxHeight: _pt__default["default"].number,
78
84
  triggerElementRef: _pt__default["default"].any.isRequired
79
85
  } : {};
80
86
  const DropdownContentMenu = props => {
@@ -85,6 +91,7 @@ const DropdownContentMenu = props => {
85
91
  horizontalConstraint: props.horizontalConstraint,
86
92
  isOpen: props.isOpen,
87
93
  menuPosition: props.menuPosition,
94
+ menuMaxHeight: props.menuMaxHeight,
88
95
  triggerElementRef: props.triggerElementRef,
89
96
  children: props.children
90
97
  });
@@ -93,6 +100,7 @@ DropdownContentMenu.propTypes = process.env.NODE_ENV !== "production" ? {
93
100
  children: _pt__default["default"].node.isRequired,
94
101
  horizontalConstraint: _pt__default["default"].any.isRequired,
95
102
  menuPosition: _pt__default["default"].oneOf(['left', 'right']).isRequired,
103
+ menuMaxHeight: _pt__default["default"].number,
96
104
  isOpen: _pt__default["default"].bool.isRequired,
97
105
  triggerElementRef: _pt__default["default"].any.isRequired
98
106
  } : {};
@@ -101,6 +109,7 @@ const DropdownListMenu = props => {
101
109
  horizontalConstraint: props.horizontalConstraint,
102
110
  isOpen: props.isOpen,
103
111
  menuPosition: props.menuPosition,
112
+ menuMaxHeight: props.menuMaxHeight,
104
113
  triggerElementRef: props.triggerElementRef,
105
114
  children: jsxRuntime.jsx(SpacingsStack__default["default"], {
106
115
  scale: "xs",
@@ -112,12 +121,13 @@ DropdownListMenu.propTypes = process.env.NODE_ENV !== "production" ? {
112
121
  children: _pt__default["default"].node.isRequired,
113
122
  horizontalConstraint: _pt__default["default"].any.isRequired,
114
123
  menuPosition: _pt__default["default"].oneOf(['left', 'right']).isRequired,
124
+ menuMaxHeight: _pt__default["default"].number,
115
125
  isOpen: _pt__default["default"].bool.isRequired,
116
126
  triggerElementRef: _pt__default["default"].any.isRequired
117
127
  } : {};
118
128
 
119
129
  function getDropdownListMenuItemStyles(props) {
120
- return [/*#__PURE__*/react.css("display:block;text-align:left;text-wrap:wrap;width:100%;padding:", designSystem.designTokens.spacing20, " ", designSystem.designTokens.spacing30, ";background-color:", designSystem.designTokens.colorSurface, ";&:first-of-type{border-radius:", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, " 0 0;}&:last-of-type{border-radius:0 0 ", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, ";}&:hover{background-color:", designSystem.designTokens.colorPrimary98, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownListMenuItemStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbGlzdC1pdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPTyIsImZpbGUiOiJkcm9wZG93bi1tZW51LWxpc3QtaXRlbS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9hY2Nlc3NpYmxlLWJ1dHRvbic7XG5pbXBvcnQgeyBkZXNpZ25Ub2tlbnMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcbmltcG9ydCB7IHVzZURyb3Bkb3duTWVudUNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2Ryb3Bkb3duLW1lbnUtY29udGV4dCc7XG5cbmZ1bmN0aW9uIGdldERyb3Bkb3duTGlzdE1lbnVJdGVtU3R5bGVzKHByb3BzOiBURHJvcGRvd25MaXN0TWVudUl0ZW1Qcm9wcykge1xuICByZXR1cm4gW1xuICAgIGNzc2BcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHRleHQtd3JhcDogd3JhcDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogJHtkZXNpZ25Ub2tlbnMuc3BhY2luZzIwfSAke2Rlc2lnblRva2Vucy5zcGFjaW5nMzB9O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czZ9XG4gICAgICAgICAgJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNn0gMCAwO1xuICAgICAgfVxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNn1cbiAgICAgICAgICAke2Rlc2lnblRva2Vucy5ib3JkZXJSYWRpdXM2fTtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2Rlc2lnblRva2Vucy5jb2xvclByaW1hcnk5OH07XG4gICAgICB9XG4gICAgYCxcbiAgICBwcm9wcy5pc0Rpc2FibGVkICYmXG4gICAgICBjc3NgXG4gICAgICAgIGNvbG9yOiAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWx9O1xuICAgICAgYCxcbiAgXTtcbn1cblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTGlzdE1lbnVJdGVtUHJvcHMgPSB7XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW46IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIERyb3Bkb3duTGlzdE1lbnVJdGVtKHByb3BzOiBURHJvcGRvd25MaXN0TWVudUl0ZW1Qcm9wcykge1xuICBjb25zdCB7IHRvZ2dsZSB9ID0gdXNlRHJvcGRvd25NZW51Q29udGV4dCgpO1xuICByZXR1cm4gKFxuICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICBsYWJlbD17cHJvcHMuY2hpbGRyZW59XG4gICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICBwcm9wcy5vbkNsaWNrPy4oKTtcbiAgICAgIH19XG4gICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgY3NzPXtnZXREcm9wZG93bkxpc3RNZW51SXRlbVN0eWxlcyhwcm9wcyl9XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25MaXN0TWVudUl0ZW07XG4iXX0= */"), props.isDisabled && /*#__PURE__*/react.css("color:", designSystem.designTokens.colorNeutral, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownListMenuItemStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbGlzdC1pdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyQlMiLCJmaWxlIjoiZHJvcGRvd24tbWVudS1saXN0LWl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvYWNjZXNzaWJsZS1idXR0b24nO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bk1lbnVDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9kcm9wZG93bi1tZW51LWNvbnRleHQnO1xuXG5mdW5jdGlvbiBnZXREcm9wZG93bkxpc3RNZW51SXRlbVN0eWxlcyhwcm9wczogVERyb3Bkb3duTGlzdE1lbnVJdGVtUHJvcHMpIHtcbiAgcmV0dXJuIFtcbiAgICBjc3NgXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB0ZXh0LXdyYXA6IHdyYXA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6ICR7ZGVzaWduVG9rZW5zLnNwYWNpbmcyMH0gJHtkZXNpZ25Ub2tlbnMuc3BhY2luZzMwfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7ZGVzaWduVG9rZW5zLmNvbG9yU3VyZmFjZX07XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2Rlc2lnblRva2Vucy5ib3JkZXJSYWRpdXM2fVxuICAgICAgICAgICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czZ9IDAgMDtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czZ9XG4gICAgICAgICAgJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNn07XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JQcmltYXJ5OTh9O1xuICAgICAgfVxuICAgIGAsXG4gICAgcHJvcHMuaXNEaXNhYmxlZCAmJlxuICAgICAgY3NzYFxuICAgICAgICBjb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JOZXV0cmFsfTtcbiAgICAgIGAsXG4gIF07XG59XG5cbmV4cG9ydCB0eXBlIFREcm9wZG93bkxpc3RNZW51SXRlbVByb3BzID0ge1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBEcm9wZG93bkxpc3RNZW51SXRlbShwcm9wczogVERyb3Bkb3duTGlzdE1lbnVJdGVtUHJvcHMpIHtcbiAgY29uc3QgeyB0b2dnbGUgfSA9IHVzZURyb3Bkb3duTWVudUNvbnRleHQoKTtcbiAgcmV0dXJuIChcbiAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgbGFiZWw9e3Byb3BzLmNoaWxkcmVufVxuICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgcHJvcHMub25DbGljaz8uKCk7XG4gICAgICB9fVxuICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgIGNzcz17Z2V0RHJvcGRvd25MaXN0TWVudUl0ZW1TdHlsZXMocHJvcHMpfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTGlzdE1lbnVJdGVtO1xuIl19 */")];
130
+ return [/*#__PURE__*/react$1.css("display:block;text-align:left;text-wrap:wrap;width:100%;padding:", designSystem.designTokens.spacing20, " ", designSystem.designTokens.spacing30, ";background-color:", designSystem.designTokens.colorSurface, ";&:first-of-type{border-radius:", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, " 0 0;}&:last-of-type{border-radius:0 0 ", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, ";}&:hover{background-color:", designSystem.designTokens.colorPrimary98, ";}" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownListMenuItemStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbGlzdC1pdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPTyIsImZpbGUiOiJkcm9wZG93bi1tZW51LWxpc3QtaXRlbS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjc3MgfSBmcm9tICdAZW1vdGlvbi9yZWFjdCc7XG5pbXBvcnQgQWNjZXNzaWJsZUJ1dHRvbiBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9hY2Nlc3NpYmxlLWJ1dHRvbic7XG5pbXBvcnQgeyBkZXNpZ25Ub2tlbnMgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9kZXNpZ24tc3lzdGVtJztcbmltcG9ydCB7IHVzZURyb3Bkb3duTWVudUNvbnRleHQgfSBmcm9tICcuLi9jb250ZXh0L2Ryb3Bkb3duLW1lbnUtY29udGV4dCc7XG5cbmZ1bmN0aW9uIGdldERyb3Bkb3duTGlzdE1lbnVJdGVtU3R5bGVzKHByb3BzOiBURHJvcGRvd25MaXN0TWVudUl0ZW1Qcm9wcykge1xuICByZXR1cm4gW1xuICAgIGNzc2BcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgdGV4dC1hbGlnbjogbGVmdDtcbiAgICAgIHRleHQtd3JhcDogd3JhcDtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgcGFkZGluZzogJHtkZXNpZ25Ub2tlbnMuc3BhY2luZzIwfSAke2Rlc2lnblRva2Vucy5zcGFjaW5nMzB9O1xuICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICAgICY6Zmlyc3Qtb2YtdHlwZSB7XG4gICAgICAgIGJvcmRlci1yYWRpdXM6ICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czZ9XG4gICAgICAgICAgJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNn0gMCAwO1xuICAgICAgfVxuICAgICAgJjpsYXN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAwIDAgJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNn1cbiAgICAgICAgICAke2Rlc2lnblRva2Vucy5ib3JkZXJSYWRpdXM2fTtcbiAgICAgIH1cbiAgICAgICY6aG92ZXIge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2Rlc2lnblRva2Vucy5jb2xvclByaW1hcnk5OH07XG4gICAgICB9XG4gICAgYCxcbiAgICBwcm9wcy5pc0Rpc2FibGVkICYmXG4gICAgICBjc3NgXG4gICAgICAgIGNvbG9yOiAke2Rlc2lnblRva2Vucy5jb2xvck5ldXRyYWx9O1xuICAgICAgYCxcbiAgXTtcbn1cblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTGlzdE1lbnVJdGVtUHJvcHMgPSB7XG4gIG9uQ2xpY2s/OiAoKSA9PiB2b2lkO1xuICBpc0Rpc2FibGVkPzogYm9vbGVhbjtcbiAgY2hpbGRyZW46IHN0cmluZztcbn07XG5cbmZ1bmN0aW9uIERyb3Bkb3duTGlzdE1lbnVJdGVtKHByb3BzOiBURHJvcGRvd25MaXN0TWVudUl0ZW1Qcm9wcykge1xuICBjb25zdCB7IHRvZ2dsZSB9ID0gdXNlRHJvcGRvd25NZW51Q29udGV4dCgpO1xuICByZXR1cm4gKFxuICAgIDxBY2Nlc3NpYmxlQnV0dG9uXG4gICAgICBsYWJlbD17cHJvcHMuY2hpbGRyZW59XG4gICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIHRvZ2dsZSgpO1xuICAgICAgICBwcm9wcy5vbkNsaWNrPy4oKTtcbiAgICAgIH19XG4gICAgICBpc0Rpc2FibGVkPXtwcm9wcy5pc0Rpc2FibGVkfVxuICAgICAgY3NzPXtnZXREcm9wZG93bkxpc3RNZW51SXRlbVN0eWxlcyhwcm9wcyl9XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvQWNjZXNzaWJsZUJ1dHRvbj5cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25MaXN0TWVudUl0ZW07XG4iXX0= */"), props.isDisabled && /*#__PURE__*/react$1.css("color:", designSystem.designTokens.colorNeutral, ";" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownListMenuItemStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbGlzdC1pdGVtLnRzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUEyQlMiLCJmaWxlIjoiZHJvcGRvd24tbWVudS1saXN0LWl0ZW0udHN4Iiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3NzIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnO1xuaW1wb3J0IEFjY2Vzc2libGVCdXR0b24gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvYWNjZXNzaWJsZS1idXR0b24nO1xuaW1wb3J0IHsgZGVzaWduVG9rZW5zIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvZGVzaWduLXN5c3RlbSc7XG5pbXBvcnQgeyB1c2VEcm9wZG93bk1lbnVDb250ZXh0IH0gZnJvbSAnLi4vY29udGV4dC9kcm9wZG93bi1tZW51LWNvbnRleHQnO1xuXG5mdW5jdGlvbiBnZXREcm9wZG93bkxpc3RNZW51SXRlbVN0eWxlcyhwcm9wczogVERyb3Bkb3duTGlzdE1lbnVJdGVtUHJvcHMpIHtcbiAgcmV0dXJuIFtcbiAgICBjc3NgXG4gICAgICBkaXNwbGF5OiBibG9jaztcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgICB0ZXh0LXdyYXA6IHdyYXA7XG4gICAgICB3aWR0aDogMTAwJTtcbiAgICAgIHBhZGRpbmc6ICR7ZGVzaWduVG9rZW5zLnNwYWNpbmcyMH0gJHtkZXNpZ25Ub2tlbnMuc3BhY2luZzMwfTtcbiAgICAgIGJhY2tncm91bmQtY29sb3I6ICR7ZGVzaWduVG9rZW5zLmNvbG9yU3VyZmFjZX07XG4gICAgICAmOmZpcnN0LW9mLXR5cGUge1xuICAgICAgICBib3JkZXItcmFkaXVzOiAke2Rlc2lnblRva2Vucy5ib3JkZXJSYWRpdXM2fVxuICAgICAgICAgICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czZ9IDAgMDtcbiAgICAgIH1cbiAgICAgICY6bGFzdC1vZi10eXBlIHtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMCAwICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czZ9XG4gICAgICAgICAgJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNn07XG4gICAgICB9XG4gICAgICAmOmhvdmVyIHtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JQcmltYXJ5OTh9O1xuICAgICAgfVxuICAgIGAsXG4gICAgcHJvcHMuaXNEaXNhYmxlZCAmJlxuICAgICAgY3NzYFxuICAgICAgICBjb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JOZXV0cmFsfTtcbiAgICAgIGAsXG4gIF07XG59XG5cbmV4cG9ydCB0eXBlIFREcm9wZG93bkxpc3RNZW51SXRlbVByb3BzID0ge1xuICBvbkNsaWNrPzogKCkgPT4gdm9pZDtcbiAgaXNEaXNhYmxlZD86IGJvb2xlYW47XG4gIGNoaWxkcmVuOiBzdHJpbmc7XG59O1xuXG5mdW5jdGlvbiBEcm9wZG93bkxpc3RNZW51SXRlbShwcm9wczogVERyb3Bkb3duTGlzdE1lbnVJdGVtUHJvcHMpIHtcbiAgY29uc3QgeyB0b2dnbGUgfSA9IHVzZURyb3Bkb3duTWVudUNvbnRleHQoKTtcbiAgcmV0dXJuIChcbiAgICA8QWNjZXNzaWJsZUJ1dHRvblxuICAgICAgbGFiZWw9e3Byb3BzLmNoaWxkcmVufVxuICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgcHJvcHMub25DbGljaz8uKCk7XG4gICAgICB9fVxuICAgICAgaXNEaXNhYmxlZD17cHJvcHMuaXNEaXNhYmxlZH1cbiAgICAgIGNzcz17Z2V0RHJvcGRvd25MaXN0TWVudUl0ZW1TdHlsZXMocHJvcHMpfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L0FjY2Vzc2libGVCdXR0b24+XG4gICk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IERyb3Bkb3duTGlzdE1lbnVJdGVtO1xuIl19 */")];
121
131
  }
122
132
  function DropdownListMenuItem(props) {
123
133
  const _useDropdownMenuConte = useDropdownMenuContext(),
@@ -136,6 +146,40 @@ function DropdownListMenuItem(props) {
136
146
  }
137
147
 
138
148
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
149
+ function getScrollableParent(element) {
150
+ if (!element) {
151
+ return null;
152
+ }
153
+ const overflowY = window.getComputedStyle(element).overflowY;
154
+ const isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
155
+ if (isScrollable && element.scrollHeight >= element.clientHeight) {
156
+ return element;
157
+ }
158
+ return getScrollableParent(element.parentElement);
159
+ }
160
+ function useScrollBlock(isOpen, triggerRef) {
161
+ const scrollableParentRef = react.useRef();
162
+ react.useEffect(() => {
163
+ if (!scrollableParentRef.current) {
164
+ scrollableParentRef.current = getScrollableParent(triggerRef.current);
165
+ }
166
+ const scrollableParent = scrollableParentRef.current;
167
+ if (scrollableParent && isOpen) {
168
+ scrollableParent.setAttribute('data-prev-scroll', scrollableParent.style.overflowY);
169
+ scrollableParent.style.overflowY = 'hidden';
170
+ }
171
+ return () => {
172
+ // The cleanup effect runs after the component is unmounted but also everytime
173
+ // the dependency array changes. We need to manage both to manage opening/closing
174
+ // the dropdown but also to manage the the dropdown is opened and the component
175
+ // is unmounted. For instance, when navigating to another page client-side.
176
+ if (scrollableParent && isOpen) {
177
+ const prevScroll = scrollableParent.getAttribute('data-prev-scroll');
178
+ scrollableParent.style.overflowY = prevScroll || '';
179
+ }
180
+ };
181
+ }, [isOpen, scrollableParentRef, triggerRef]);
182
+ }
139
183
  const defaultProps = {
140
184
  menuHorizontalConstraint: 'auto',
141
185
  menuPosition: 'left',
@@ -152,7 +196,7 @@ const Container = /*#__PURE__*/_styled__default["default"]("div", process.env.NO
152
196
  } : {
153
197
  name: "1nrevy2",
154
198
  styles: "position:relative;display:inline-block",
155
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1ENEIiLCJmaWxlIjoiZHJvcGRvd24tbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdHlwZSBSZWFjdEVsZW1lbnQsXG4gIHR5cGUgUmVhY3ROb2RlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCB7IHR5cGUgVE1heFByb3AgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgRHJvcGRvd25NZW51Q29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IERyb3Bkb3duVHJpZ2dlciBmcm9tICcuL3RyaWdnZXInO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25Db250ZW50TWVudSxcbiAgRHJvcGRvd25MaXN0TWVudSxcbiAgRHJvcGRvd25MaXN0TWVudUl0ZW0sXG59IGZyb20gJy4vbWVudSc7XG5cbmV4cG9ydCB0eXBlIFREcm9wZG93bk1lbnVQcm9wcyA9IHtcbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKi9cbiAgbWVudVBvc2l0aW9uPzogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcnMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IFJlYWN0RWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBtZW51LlxuICAgKiBUaGUgJ2RlZmF1bHQnIHR5cGUganVzdCByZW5kZXJzIGEgZHJvcGRvd24gY29udGFpbmVyIGJ1dCB0aGUgJ2xpc3QnIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBEcm9wZG93bk1lbnUuTGlzdE1lbnVJdGVtIGNvbXBvbmVudC5cbiAgICovXG4gIG1lbnVUeXBlPzogJ2RlZmF1bHQnIHwgJ2xpc3QnO1xuICAvKipcbiAgICogVGhlIGhvcml6b250YWwgY29uc3RyYWludCBvZiB0aGUgbWVudS5cbiAgICovXG4gIG1lbnVIb3Jpem9udGFsQ29uc3RyYWludD86IFRNYXhQcm9wO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogUGljazxcbiAgVERyb3Bkb3duTWVudVByb3BzLFxuICAnbWVudVBvc2l0aW9uJyB8ICdtZW51VHlwZScgfCAnbWVudUhvcml6b250YWxDb25zdHJhaW50J1xuPiA9IHtcbiAgbWVudUhvcml6b250YWxDb25zdHJhaW50OiAnYXV0bycsXG4gIG1lbnVQb3NpdGlvbjogJ2xlZnQnLFxuICBtZW51VHlwZTogJ2RlZmF1bHQnLFxufTtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gO1xuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnUocHJvcHM6IFREcm9wZG93bk1lbnVQcm9wcykge1xuICBjb25zdCBbaXNPcGVuLCB0b2dnbGVdID0gdXNlVG9nZ2xlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICAvLyBXZSB1c2UgdGhlIGNvbnRleHQgc28gY2hpbGRyZW4gY2FuIHRvZ2dsZSB0aGUgZHJvcGRvd25cbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGlzT3BlbixcbiAgICAgIHRvZ2dsZSxcbiAgICB9KSxcbiAgICBbaXNPcGVuLCB0b2dnbGVdXG4gICk7XG4gIGNvbnN0IE1lbnUgPVxuICAgIHByb3BzLm1lbnVUeXBlID09PSAnZGVmYXVsdCcgPyBEcm9wZG93bkNvbnRlbnRNZW51IDogRHJvcGRvd25MaXN0TWVudTtcblxuICAvLyBDbG9zZSB0aGUgZHJvcGRvd24gd2hlbiBjbGlja2luZyBvdXRzaWRlIG9mIGl0XG4gIGNvbnN0IGhhbmRsZUdsb2JhbENsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXJSZWYuY3VycmVudDtcbiAgICAgIGlmIChcbiAgICAgICAgaXNPcGVuICYmXG4gICAgICAgIHRyaWdnZXJFbGVtZW50ICYmXG4gICAgICAgIGV2ZW50LnRhcmdldCAhPT0gdHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgIXRyaWdnZXJFbGVtZW50LnBhcmVudEVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICkge1xuICAgICAgICB0b2dnbGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3RyaWdnZXJSZWYsIHRvZ2dsZSwgaXNPcGVuXVxuICApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUdsb2JhbENsaWNrKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlR2xvYmFsQ2xpY2spO1xuICAgIH07XG4gIH0sIFtoYW5kbGVHbG9iYWxDbGlja10pO1xuICAvLyBCbG9jayBzY3JvbGxpbmcgd2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2luaXRpYWwnO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaW5pdGlhbCc7XG4gICAgfTtcbiAgfSwgW2lzT3Blbl0pO1xuXG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAgPENvbnRhaW5lcj5cbiAgICAgICAgPERyb3Bkb3duVHJpZ2dlciBvbkNsaWNrPXt0b2dnbGV9IHJlZj17dHJpZ2dlclJlZn0+XG4gICAgICAgICAge3Byb3BzLnRyaWdnZXJFbGVtZW50fVxuICAgICAgICA8L0Ryb3Bkb3duVHJpZ2dlcj5cblxuICAgICAgICA8TWVudVxuICAgICAgICAgIGhvcml6b250YWxDb25zdHJhaW50PXtwcm9wcy5tZW51SG9yaXpvbnRhbENvbnN0cmFpbnQhfVxuICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgIG1lbnVQb3NpdGlvbj17cHJvcHMubWVudVBvc2l0aW9uIX1cbiAgICAgICAgICB0cmlnZ2VyRWxlbWVudFJlZj17dHJpZ2dlclJlZn1cbiAgICAgICAgPlxuICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9NZW51PlxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9Ecm9wZG93bk1lbnVDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuRHJvcGRvd25NZW51LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuRHJvcGRvd25NZW51Lkxpc3RNZW51SXRlbSA9IERyb3Bkb3duTGlzdE1lbnVJdGVtO1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7XG4iXX0= */",
199
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9HNEIiLCJmaWxlIjoiZHJvcGRvd24tbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHR5cGUgUmVhY3RFbGVtZW50LFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRvZ2dsZVN0YXRlIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaG9va3MnO1xuaW1wb3J0IHsgdHlwZSBUTWF4UHJvcCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2NvbnN0cmFpbnRzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBEcm9wZG93bk1lbnVDb250ZXh0IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgRHJvcGRvd25UcmlnZ2VyIGZyb20gJy4vdHJpZ2dlcic7XG5pbXBvcnQge1xuICBEcm9wZG93bkNvbnRlbnRNZW51LFxuICBEcm9wZG93bkxpc3RNZW51LFxuICBEcm9wZG93bkxpc3RNZW51SXRlbSxcbn0gZnJvbSAnLi9tZW51JztcblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTWVudVByb3BzID0ge1xuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBtZW51IHJlbGF0aXZlIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBtZW51UG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gaGVpZ2h0IGZvciB0aGUgbWVudSBpbiBwaXhlbHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBtYXggaGVpZ2h0IHdpbGwgYmUgdGhlIGF2YWlsYWJsZSBzcGFjZSBiZXR3ZWVuIHRoZSB0cmlnZ2VyIGVsZW1lbnQgYW5kIHRoZSBib3R0b20gb2YgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgbWVudU1heEhlaWdodD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcnMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IFJlYWN0RWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBtZW51LlxuICAgKiBUaGUgJ2RlZmF1bHQnIHR5cGUganVzdCByZW5kZXJzIGEgZHJvcGRvd24gY29udGFpbmVyIGJ1dCB0aGUgJ2xpc3QnIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBEcm9wZG93bk1lbnUuTGlzdE1lbnVJdGVtIGNvbXBvbmVudC5cbiAgICovXG4gIG1lbnVUeXBlPzogJ2RlZmF1bHQnIHwgJ2xpc3QnO1xuICAvKipcbiAgICogVGhlIGhvcml6b250YWwgY29uc3RyYWludCBvZiB0aGUgbWVudS5cbiAgICovXG4gIG1lbnVIb3Jpem9udGFsQ29uc3RyYWludD86IFRNYXhQcm9wO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5cbmZ1bmN0aW9uIGdldFNjcm9sbGFibGVQYXJlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgb3ZlcmZsb3dZID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkub3ZlcmZsb3dZO1xuICBjb25zdCBpc1Njcm9sbGFibGUgPSBvdmVyZmxvd1kgIT09ICd2aXNpYmxlJyAmJiBvdmVyZmxvd1kgIT09ICdoaWRkZW4nO1xuICBpZiAoaXNTY3JvbGxhYmxlICYmIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID49IGVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsYWJsZVBhcmVudChlbGVtZW50LnBhcmVudEVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiB1c2VTY3JvbGxCbG9jayhpc09wZW46IGJvb2xlYW4sIHRyaWdnZXJSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4pIHtcbiAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNjcm9sbGFibGVQYXJlbnRSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsYWJsZVBhcmVudFJlZi5jdXJyZW50ID0gZ2V0U2Nyb2xsYWJsZVBhcmVudCh0cmlnZ2VyUmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY3VycmVudDogc2Nyb2xsYWJsZVBhcmVudCB9ID0gc2Nyb2xsYWJsZVBhcmVudFJlZjtcbiAgICBpZiAoc2Nyb2xsYWJsZVBhcmVudCAmJiBpc09wZW4pIHtcbiAgICAgIHNjcm9sbGFibGVQYXJlbnQuc2V0QXR0cmlidXRlKFxuICAgICAgICAnZGF0YS1wcmV2LXNjcm9sbCcsXG4gICAgICAgIHNjcm9sbGFibGVQYXJlbnQuc3R5bGUub3ZlcmZsb3dZXG4gICAgICApO1xuICAgICAgc2Nyb2xsYWJsZVBhcmVudC5zdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIFRoZSBjbGVhbnVwIGVmZmVjdCBydW5zIGFmdGVyIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJ1dCBhbHNvIGV2ZXJ5dGltZVxuICAgICAgLy8gdGhlIGRlcGVuZGVuY3kgYXJyYXkgY2hhbmdlcy4gV2UgbmVlZCB0byBtYW5hZ2UgYm90aCB0byBtYW5hZ2Ugb3BlbmluZy9jbG9zaW5nXG4gICAgICAvLyB0aGUgZHJvcGRvd24gYnV0IGFsc28gdG8gbWFuYWdlIHRoZSB0aGUgZHJvcGRvd24gaXMgb3BlbmVkIGFuZCB0aGUgY29tcG9uZW50XG4gICAgICAvLyBpcyB1bm1vdW50ZWQuIEZvciBpbnN0YW5jZSwgd2hlbiBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgcGFnZSBjbGllbnQtc2lkZS5cbiAgICAgIGlmIChzY3JvbGxhYmxlUGFyZW50ICYmIGlzT3Blbikge1xuICAgICAgICBjb25zdCBwcmV2U2Nyb2xsID0gc2Nyb2xsYWJsZVBhcmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJldi1zY3JvbGwnKTtcbiAgICAgICAgc2Nyb2xsYWJsZVBhcmVudC5zdHlsZS5vdmVyZmxvd1kgPSBwcmV2U2Nyb2xsIHx8ICcnO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtpc09wZW4sIHNjcm9sbGFibGVQYXJlbnRSZWYsIHRyaWdnZXJSZWZdKTtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBQaWNrPFxuICBURHJvcGRvd25NZW51UHJvcHMsXG4gICdtZW51UG9zaXRpb24nIHwgJ21lbnVUeXBlJyB8ICdtZW51SG9yaXpvbnRhbENvbnN0cmFpbnQnXG4+ID0ge1xuICBtZW51SG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdhdXRvJyxcbiAgbWVudVBvc2l0aW9uOiAnbGVmdCcsXG4gIG1lbnVUeXBlOiAnZGVmYXVsdCcsXG59O1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbmA7XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudShwcm9wczogVERyb3Bkb3duTWVudVByb3BzKSB7XG4gIGNvbnN0IFtpc09wZW4sIHRvZ2dsZV0gPSB1c2VUb2dnbGVTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIC8vIFdlIHVzZSB0aGUgY29udGV4dCBzbyBjaGlsZHJlbiBjYW4gdG9nZ2xlIHRoZSBkcm9wZG93blxuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgaXNPcGVuLFxuICAgICAgdG9nZ2xlLFxuICAgIH0pLFxuICAgIFtpc09wZW4sIHRvZ2dsZV1cbiAgKTtcbiAgY29uc3QgTWVudSA9XG4gICAgcHJvcHMubWVudVR5cGUgPT09ICdkZWZhdWx0JyA/IERyb3Bkb3duQ29udGVudE1lbnUgOiBEcm9wZG93bkxpc3RNZW51O1xuXG4gIC8vIENsb3NlIHRoZSBkcm9wZG93biB3aGVuIGNsaWNraW5nIG91dHNpZGUgb2YgaXRcbiAgY29uc3QgaGFuZGxlR2xvYmFsQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gdHJpZ2dlclJlZi5jdXJyZW50O1xuICAgICAgaWYgKFxuICAgICAgICBpc09wZW4gJiZcbiAgICAgICAgdHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSB0cmlnZ2VyRWxlbWVudCAmJlxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAhdHJpZ2dlckVsZW1lbnQucGFyZW50RWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICAgKSB7XG4gICAgICAgIHRvZ2dsZShmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbdHJpZ2dlclJlZiwgdG9nZ2xlLCBpc09wZW5dXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlR2xvYmFsQ2xpY2spO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVHbG9iYWxDbGljayk7XG4gICAgfTtcbiAgfSwgW2hhbmRsZUdsb2JhbENsaWNrXSk7XG5cbiAgLy8gQmxvY2sgc2Nyb2xsaW5nIHdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4uXG4gIC8vIFdlIGRvIHRoaXMgdG8gYXZvaWQgcmVxdWlyaW5nIGRyb3Bkb3duIHJlcmVuZGVyaW5nIHdoaWxlIHRoZSB1c2VyIHNjcm9sbHMuXG4gIHVzZVNjcm9sbEJsb2NrKGlzT3BlbiwgdHJpZ2dlclJlZik7XG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dH0+XG4gICAgICA8Q29udGFpbmVyPlxuICAgICAgICA8RHJvcGRvd25UcmlnZ2VyIG9uQ2xpY2s9e3RvZ2dsZX0gcmVmPXt0cmlnZ2VyUmVmfT5cbiAgICAgICAgICB7cHJvcHMudHJpZ2dlckVsZW1lbnR9XG4gICAgICAgIDwvRHJvcGRvd25UcmlnZ2VyPlxuXG4gICAgICAgIDxNZW51XG4gICAgICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLm1lbnVIb3Jpem9udGFsQ29uc3RyYWludCF9XG4gICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgbWVudVBvc2l0aW9uPXtwcm9wcy5tZW51UG9zaXRpb24hfVxuICAgICAgICAgIG1lbnVNYXhIZWlnaHQ9e3Byb3BzLm1lbnVNYXhIZWlnaHR9XG4gICAgICAgICAgdHJpZ2dlckVsZW1lbnRSZWY9e3RyaWdnZXJSZWZ9XG4gICAgICAgID5cbiAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgIDwvTWVudT5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgIDwvRHJvcGRvd25NZW51Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cbkRyb3Bkb3duTWVudS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbkRyb3Bkb3duTWVudS5MaXN0TWVudUl0ZW0gPSBEcm9wZG93bkxpc3RNZW51SXRlbTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51O1xuIl19 */",
156
200
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
157
201
  });
158
202
  function DropdownMenu(props) {
@@ -160,40 +204,33 @@ function DropdownMenu(props) {
160
204
  _useToggleState2 = _slicedToArray(_useToggleState, 2),
161
205
  isOpen = _useToggleState2[0],
162
206
  toggle = _useToggleState2[1];
163
- const triggerRef = React__default["default"].useRef(null);
207
+ const triggerRef = react.useRef(null);
164
208
 
165
209
  // We use the context so children can toggle the dropdown
166
- const context = React.useMemo(() => ({
210
+ const context = react.useMemo(() => ({
167
211
  isOpen,
168
212
  toggle
169
213
  }), [isOpen, toggle]);
170
214
  const Menu = props.menuType === 'default' ? DropdownContentMenu : DropdownListMenu;
171
215
 
172
216
  // Close the dropdown when clicking outside of it
173
- const handleGlobalClick = React.useCallback(event => {
217
+ const handleGlobalClick = react.useCallback(event => {
174
218
  var _triggerElement$paren;
175
219
  const triggerElement = triggerRef.current;
176
220
  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))) {
177
221
  toggle(false);
178
222
  }
179
223
  }, [triggerRef, toggle, isOpen]);
180
- React.useEffect(() => {
224
+ react.useEffect(() => {
181
225
  window.addEventListener('click', handleGlobalClick);
182
226
  return () => {
183
227
  window.removeEventListener('click', handleGlobalClick);
184
228
  };
185
229
  }, [handleGlobalClick]);
186
- // Block scrolling when the dropdown is open
187
- React.useEffect(() => {
188
- if (isOpen) {
189
- window.document.body.style.overflow = 'hidden';
190
- } else {
191
- window.document.body.style.overflow = 'initial';
192
- }
193
- return () => {
194
- window.document.body.style.overflow = 'initial';
195
- };
196
- }, [isOpen]);
230
+
231
+ // Block scrolling when the dropdown is open.
232
+ // We do this to avoid requiring dropdown rerendering while the user scrolls.
233
+ useScrollBlock(isOpen, triggerRef);
197
234
  return jsxRuntime.jsx(DropdownMenuContext.Provider, {
198
235
  value: context,
199
236
  children: jsxRuntime.jsxs(Container, {
@@ -205,6 +242,7 @@ function DropdownMenu(props) {
205
242
  horizontalConstraint: props.menuHorizontalConstraint,
206
243
  isOpen: isOpen,
207
244
  menuPosition: props.menuPosition,
245
+ menuMaxHeight: props.menuMaxHeight,
208
246
  triggerElementRef: triggerRef,
209
247
  children: props.children
210
248
  })]
@@ -213,6 +251,7 @@ function DropdownMenu(props) {
213
251
  }
214
252
  DropdownMenu.propTypes = process.env.NODE_ENV !== "production" ? {
215
253
  menuPosition: _pt__default["default"].oneOf(['left', 'right']),
254
+ menuMaxHeight: _pt__default["default"].number,
216
255
  triggerElement: _pt__default["default"].element.isRequired,
217
256
  menuType: _pt__default["default"].oneOf(['default', 'list']),
218
257
  menuHorizontalConstraint: _pt__default["default"].any,
@@ -222,7 +261,7 @@ DropdownMenu.defaultProps = defaultProps;
222
261
  DropdownMenu.ListMenuItem = DropdownListMenuItem;
223
262
 
224
263
  // NOTE: This string will be replaced on build time with the package version.
225
- var version = "19.1.0";
264
+ var version = "19.3.0";
226
265
 
227
266
  exports["default"] = DropdownMenu;
228
267
  exports.useDropdownMenuContext = useDropdownMenuContext;
@@ -5,10 +5,11 @@ Object.defineProperty(exports, '__esModule', { value: true });
5
5
  var _slicedToArray = require('@babel/runtime-corejs3/helpers/slicedToArray');
6
6
  var _styled = require('@emotion/styled/base');
7
7
  require('prop-types');
8
- var React = require('react');
8
+ var react = require('react');
9
9
  var hooks = require('@commercetools-uikit/hooks');
10
10
  var jsxRuntime = require('@emotion/react/jsx-runtime');
11
- var react = require('@emotion/react');
11
+ var _concatInstanceProperty = require('@babel/runtime-corejs3/core-js-stable/instance/concat');
12
+ var react$1 = require('@emotion/react');
12
13
  var designSystem = require('@commercetools-uikit/design-system');
13
14
  var Constraints = require('@commercetools-uikit/constraints');
14
15
  var SpacingsStack = require('@commercetools-uikit/spacings-stack');
@@ -17,17 +18,17 @@ var AccessibleButton = require('@commercetools-uikit/accessible-button');
17
18
  function _interopDefault (e) { return e && e.__esModule ? e : { 'default': e }; }
18
19
 
19
20
  var _styled__default = /*#__PURE__*/_interopDefault(_styled);
20
- var React__default = /*#__PURE__*/_interopDefault(React);
21
+ var _concatInstanceProperty__default = /*#__PURE__*/_interopDefault(_concatInstanceProperty);
21
22
  var Constraints__default = /*#__PURE__*/_interopDefault(Constraints);
22
23
  var SpacingsStack__default = /*#__PURE__*/_interopDefault(SpacingsStack);
23
24
  var AccessibleButton__default = /*#__PURE__*/_interopDefault(AccessibleButton);
24
25
 
25
- const DropdownMenuContext = /*#__PURE__*/React.createContext({
26
+ const DropdownMenuContext = /*#__PURE__*/react.createContext({
26
27
  isOpen: false,
27
28
  toggle: () => {}
28
29
  });
29
30
  function useDropdownMenuContext() {
30
- const context = React.useContext(DropdownMenuContext);
31
+ const context = react.useContext(DropdownMenuContext);
31
32
  if (!context) {
32
33
  throw new Error('[ui-kit] DropdownMenu context can only be used in DropdownMenu children components.');
33
34
  }
@@ -37,7 +38,7 @@ function useDropdownMenuContext() {
37
38
  };
38
39
  }
39
40
 
40
- const DropDownTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
41
+ const DropDownTrigger = /*#__PURE__*/react.forwardRef((props, ref) => {
41
42
  return jsxRuntime.jsx("div", {
42
43
  onClick: props.onClick,
43
44
  ref: ref,
@@ -47,20 +48,24 @@ const DropDownTrigger = /*#__PURE__*/React.forwardRef((props, ref) => {
47
48
  DropDownTrigger.displayName = 'DropDownTrigger';
48
49
  var DropdownTrigger = DropDownTrigger;
49
50
 
51
+ const boxShadowBottomSize = '5px';
52
+ const marginTop = designSystem.designTokens.spacing20;
50
53
  function getDropdownMenuBaseStyles(params) {
51
- return /*#__PURE__*/react.css("background-color:", designSystem.designTokens.colorSurface, ";border:1px solid ", designSystem.designTokens.colorSurface, ";border-radius:", designSystem.designTokens.borderRadius4, ";box-shadow:0 2px 5px 0px rgba(0, 0, 0, 0.15);display:", params.isOpen ? 'block' : 'none', ";margin-top:", designSystem.designTokens.spacing20, ";max-width:", Constraints__default["default"].getMaxPropTokenValue(params.horizontalConstraint), ";position:fixed;width:", params.horizontalConstraint === 'auto' ? 'auto' : '100%', ";z-index:5;" + ("" ), "" );
54
+ return /*#__PURE__*/react$1.css("background-color:", designSystem.designTokens.colorSurface, ";border:1px solid ", designSystem.designTokens.colorSurface, ";border-radius:", designSystem.designTokens.borderRadius4, ";box-shadow:0 2px ", boxShadowBottomSize, " 0px rgba(0, 0, 0, 0.15);display:", params.isOpen ? 'block' : 'none', ";margin-top:", marginTop, ";max-width:", Constraints__default["default"].getMaxPropTokenValue(params.horizontalConstraint), ";overflow-y:auto;position:fixed;width:", params.horizontalConstraint === 'auto' ? 'auto' : '100%', ";z-index:5;" + ("" ), "" );
52
55
  }
53
56
  function DropdownBaseMenu(props) {
54
- const menuRef = React.useRef(null);
55
- React.useLayoutEffect(() => {
57
+ const menuRef = react.useRef(null);
58
+ react.useLayoutEffect(() => {
56
59
  // Update the position of the menu when it is open
57
60
  if (props.isOpen && props.triggerElementRef.current && menuRef.current) {
61
+ var _context, _context2;
58
62
  const triggerElementCoordinates = props.triggerElementRef.current.getBoundingClientRect();
59
63
  const menuElementCoordinates = menuRef.current.getBoundingClientRect();
60
64
  menuRef.current.style.top = "".concat(triggerElementCoordinates.top + triggerElementCoordinates.height, "px");
61
65
  menuRef.current.style.left = props.menuPosition === 'left' ? "".concat(triggerElementCoordinates.left, "px") : "".concat(triggerElementCoordinates.left + triggerElementCoordinates.width - menuElementCoordinates.width, "px");
66
+ menuRef.current.style.maxHeight = props.menuMaxHeight ? "".concat(props.menuMaxHeight, "px") : _concatInstanceProperty__default["default"](_context = _concatInstanceProperty__default["default"](_context2 = "calc(".concat(window.innerHeight - (triggerElementCoordinates.top + triggerElementCoordinates.height), "px - ")).call(_context2, marginTop, " - ")).call(_context, boxShadowBottomSize, ")");
62
67
  }
63
- }, [props.isOpen, props.menuPosition, props.triggerElementRef]);
68
+ }, [props.isOpen, props.menuPosition, props.triggerElementRef, props.menuMaxHeight]);
64
69
  return jsxRuntime.jsx("div", {
65
70
  css: getDropdownMenuBaseStyles(props),
66
71
  style: props.customStyles,
@@ -77,6 +82,7 @@ const DropdownContentMenu = props => {
77
82
  horizontalConstraint: props.horizontalConstraint,
78
83
  isOpen: props.isOpen,
79
84
  menuPosition: props.menuPosition,
85
+ menuMaxHeight: props.menuMaxHeight,
80
86
  triggerElementRef: props.triggerElementRef,
81
87
  children: props.children
82
88
  });
@@ -87,6 +93,7 @@ const DropdownListMenu = props => {
87
93
  horizontalConstraint: props.horizontalConstraint,
88
94
  isOpen: props.isOpen,
89
95
  menuPosition: props.menuPosition,
96
+ menuMaxHeight: props.menuMaxHeight,
90
97
  triggerElementRef: props.triggerElementRef,
91
98
  children: jsxRuntime.jsx(SpacingsStack__default["default"], {
92
99
  scale: "xs",
@@ -97,7 +104,7 @@ const DropdownListMenu = props => {
97
104
  DropdownListMenu.propTypes = {};
98
105
 
99
106
  function getDropdownListMenuItemStyles(props) {
100
- return [/*#__PURE__*/react.css("display:block;text-align:left;text-wrap:wrap;width:100%;padding:", designSystem.designTokens.spacing20, " ", designSystem.designTokens.spacing30, ";background-color:", designSystem.designTokens.colorSurface, ";&:first-of-type{border-radius:", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, " 0 0;}&:last-of-type{border-radius:0 0 ", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, ";}&:hover{background-color:", designSystem.designTokens.colorPrimary98, ";}" + ("" ), "" ), props.isDisabled && /*#__PURE__*/react.css("color:", designSystem.designTokens.colorNeutral, ";" + ("" ), "" )];
107
+ return [/*#__PURE__*/react$1.css("display:block;text-align:left;text-wrap:wrap;width:100%;padding:", designSystem.designTokens.spacing20, " ", designSystem.designTokens.spacing30, ";background-color:", designSystem.designTokens.colorSurface, ";&:first-of-type{border-radius:", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, " 0 0;}&:last-of-type{border-radius:0 0 ", designSystem.designTokens.borderRadius6, " ", designSystem.designTokens.borderRadius6, ";}&:hover{background-color:", designSystem.designTokens.colorPrimary98, ";}" + ("" ), "" ), props.isDisabled && /*#__PURE__*/react$1.css("color:", designSystem.designTokens.colorNeutral, ";" + ("" ), "" )];
101
108
  }
102
109
  function DropdownListMenuItem(props) {
103
110
  const _useDropdownMenuConte = useDropdownMenuContext(),
@@ -115,6 +122,40 @@ function DropdownListMenuItem(props) {
115
122
  });
116
123
  }
117
124
 
125
+ function getScrollableParent(element) {
126
+ if (!element) {
127
+ return null;
128
+ }
129
+ const overflowY = window.getComputedStyle(element).overflowY;
130
+ const isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
131
+ if (isScrollable && element.scrollHeight >= element.clientHeight) {
132
+ return element;
133
+ }
134
+ return getScrollableParent(element.parentElement);
135
+ }
136
+ function useScrollBlock(isOpen, triggerRef) {
137
+ const scrollableParentRef = react.useRef();
138
+ react.useEffect(() => {
139
+ if (!scrollableParentRef.current) {
140
+ scrollableParentRef.current = getScrollableParent(triggerRef.current);
141
+ }
142
+ const scrollableParent = scrollableParentRef.current;
143
+ if (scrollableParent && isOpen) {
144
+ scrollableParent.setAttribute('data-prev-scroll', scrollableParent.style.overflowY);
145
+ scrollableParent.style.overflowY = 'hidden';
146
+ }
147
+ return () => {
148
+ // The cleanup effect runs after the component is unmounted but also everytime
149
+ // the dependency array changes. We need to manage both to manage opening/closing
150
+ // the dropdown but also to manage the the dropdown is opened and the component
151
+ // is unmounted. For instance, when navigating to another page client-side.
152
+ if (scrollableParent && isOpen) {
153
+ const prevScroll = scrollableParent.getAttribute('data-prev-scroll');
154
+ scrollableParent.style.overflowY = prevScroll || '';
155
+ }
156
+ };
157
+ }, [isOpen, scrollableParentRef, triggerRef]);
158
+ }
118
159
  const defaultProps = {
119
160
  menuHorizontalConstraint: 'auto',
120
161
  menuPosition: 'left',
@@ -131,40 +172,33 @@ function DropdownMenu(props) {
131
172
  _useToggleState2 = _slicedToArray(_useToggleState, 2),
132
173
  isOpen = _useToggleState2[0],
133
174
  toggle = _useToggleState2[1];
134
- const triggerRef = React__default["default"].useRef(null);
175
+ const triggerRef = react.useRef(null);
135
176
 
136
177
  // We use the context so children can toggle the dropdown
137
- const context = React.useMemo(() => ({
178
+ const context = react.useMemo(() => ({
138
179
  isOpen,
139
180
  toggle
140
181
  }), [isOpen, toggle]);
141
182
  const Menu = props.menuType === 'default' ? DropdownContentMenu : DropdownListMenu;
142
183
 
143
184
  // Close the dropdown when clicking outside of it
144
- const handleGlobalClick = React.useCallback(event => {
185
+ const handleGlobalClick = react.useCallback(event => {
145
186
  var _triggerElement$paren;
146
187
  const triggerElement = triggerRef.current;
147
188
  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))) {
148
189
  toggle(false);
149
190
  }
150
191
  }, [triggerRef, toggle, isOpen]);
151
- React.useEffect(() => {
192
+ react.useEffect(() => {
152
193
  window.addEventListener('click', handleGlobalClick);
153
194
  return () => {
154
195
  window.removeEventListener('click', handleGlobalClick);
155
196
  };
156
197
  }, [handleGlobalClick]);
157
- // Block scrolling when the dropdown is open
158
- React.useEffect(() => {
159
- if (isOpen) {
160
- window.document.body.style.overflow = 'hidden';
161
- } else {
162
- window.document.body.style.overflow = 'initial';
163
- }
164
- return () => {
165
- window.document.body.style.overflow = 'initial';
166
- };
167
- }, [isOpen]);
198
+
199
+ // Block scrolling when the dropdown is open.
200
+ // We do this to avoid requiring dropdown rerendering while the user scrolls.
201
+ useScrollBlock(isOpen, triggerRef);
168
202
  return jsxRuntime.jsx(DropdownMenuContext.Provider, {
169
203
  value: context,
170
204
  children: jsxRuntime.jsxs(Container, {
@@ -176,6 +210,7 @@ function DropdownMenu(props) {
176
210
  horizontalConstraint: props.menuHorizontalConstraint,
177
211
  isOpen: isOpen,
178
212
  menuPosition: props.menuPosition,
213
+ menuMaxHeight: props.menuMaxHeight,
179
214
  triggerElementRef: triggerRef,
180
215
  children: props.children
181
216
  })]
@@ -187,7 +222,7 @@ DropdownMenu.defaultProps = defaultProps;
187
222
  DropdownMenu.ListMenuItem = DropdownListMenuItem;
188
223
 
189
224
  // NOTE: This string will be replaced on build time with the package version.
190
- var version = "19.1.0";
225
+ var version = "19.3.0";
191
226
 
192
227
  exports["default"] = DropdownMenu;
193
228
  exports.useDropdownMenuContext = useDropdownMenuContext;
@@ -1,9 +1,10 @@
1
1
  import _slicedToArray from '@babel/runtime-corejs3/helpers/esm/slicedToArray';
2
2
  import _styled from '@emotion/styled/base';
3
3
  import _pt from 'prop-types';
4
- import React, { useContext, createContext, forwardRef, useRef, useLayoutEffect, useMemo, useCallback, useEffect } from 'react';
4
+ import { useContext, createContext, forwardRef, useRef, useLayoutEffect, useMemo, useCallback, useEffect } from 'react';
5
5
  import { useToggleState } from '@commercetools-uikit/hooks';
6
6
  import { jsx, jsxs } from '@emotion/react/jsx-runtime';
7
+ import _concatInstanceProperty from '@babel/runtime-corejs3/core-js-stable/instance/concat';
7
8
  import { css } from '@emotion/react';
8
9
  import { designTokens } from '@commercetools-uikit/design-system';
9
10
  import Constraints from '@commercetools-uikit/constraints';
@@ -35,20 +36,24 @@ const DropDownTrigger = /*#__PURE__*/forwardRef((props, ref) => {
35
36
  DropDownTrigger.displayName = 'DropDownTrigger';
36
37
  var DropdownTrigger = DropDownTrigger;
37
38
 
39
+ const boxShadowBottomSize = '5px';
40
+ const marginTop = designTokens.spacing20;
38
41
  function getDropdownMenuBaseStyles(params) {
39
- return /*#__PURE__*/css("background-color:", designTokens.colorSurface, ";border:1px solid ", designTokens.colorSurface, ";border-radius:", designTokens.borderRadius4, ";box-shadow:0 2px 5px 0px rgba(0, 0, 0, 0.15);display:", params.isOpen ? 'block' : 'none', ";margin-top:", designTokens.spacing20, ";max-width:", Constraints.getMaxPropTokenValue(params.horizontalConstraint), ";position:fixed;width:", params.horizontalConstraint === 'auto' ? 'auto' : '100%', ";z-index:5;" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownMenuBaseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbWVudS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBZ0JZIiwiZmlsZSI6ImRyb3Bkb3duLW1lbnUtbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDU1NQcm9wZXJ0aWVzLFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IENvbnN0cmFpbnRzLCB7IHR5cGUgVE1heFByb3AgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgU3BhY2luZ3NTdGFjayBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncy1zdGFjayc7XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXREcm9wZG93bk1lbnVCYXNlU3R5bGVzKHBhcmFtczoge1xuICBpc09wZW46IGJvb2xlYW47XG4gIGhvcml6b250YWxDb25zdHJhaW50OiBUTWF4UHJvcDtcbn0pIHtcbiAgcmV0dXJuIGNzc2BcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAke2Rlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgIGJvcmRlcjogMXB4IHNvbGlkICR7ZGVzaWduVG9rZW5zLmNvbG9yU3VyZmFjZX07XG4gICAgYm9yZGVyLXJhZGl1czogJHtkZXNpZ25Ub2tlbnMuYm9yZGVyUmFkaXVzNH07XG4gICAgYm94LXNoYWRvdzogMCAycHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTUpO1xuICAgIGRpc3BsYXk6ICR7cGFyYW1zLmlzT3BlbiA/ICdibG9jaycgOiAnbm9uZSd9O1xuICAgIG1hcmdpbi10b3A6ICR7ZGVzaWduVG9rZW5zLnNwYWNpbmcyMH07XG4gICAgbWF4LXdpZHRoOiAke0NvbnN0cmFpbnRzLmdldE1heFByb3BUb2tlblZhbHVlKHBhcmFtcy5ob3Jpem9udGFsQ29uc3RyYWludCl9O1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogJHtwYXJhbXMuaG9yaXpvbnRhbENvbnN0cmFpbnQgPT09ICdhdXRvJyA/ICdhdXRvJyA6ICcxMDAlJ307XG4gICAgei1pbmRleDogNTtcbiAgYDtcbn1cblxudHlwZSBURHJvcGRvd25CYXNlTWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjdXN0b21TdHlsZXM/OiBDU1NQcm9wZXJ0aWVzO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICB0cmlnZ2VyRWxlbWVudFJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn07XG5mdW5jdGlvbiBEcm9wZG93bkJhc2VNZW51KHByb3BzOiBURHJvcGRvd25CYXNlTWVudVByb3BzKSB7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSB3aGVuIGl0IGlzIG9wZW5cbiAgICBpZiAocHJvcHMuaXNPcGVuICYmIHByb3BzLnRyaWdnZXJFbGVtZW50UmVmLmN1cnJlbnQgJiYgbWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzID1cbiAgICAgICAgcHJvcHMudHJpZ2dlckVsZW1lbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50Q29vcmRpbmF0ZXMgPSBtZW51UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgdHJpZ2dlckVsZW1lbnRDb29yZGluYXRlcy50b3AgKyB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmhlaWdodFxuICAgICAgfXB4YDtcbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS5sZWZ0ID1cbiAgICAgICAgcHJvcHMubWVudVBvc2l0aW9uID09PSAnbGVmdCdcbiAgICAgICAgICA/IGAke3RyaWdnZXJFbGVtZW50Q29vcmRpbmF0ZXMubGVmdH1weGBcbiAgICAgICAgICA6IGAke1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmxlZnQgK1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLndpZHRoIC1cbiAgICAgICAgICAgICAgbWVudUVsZW1lbnRDb29yZGluYXRlcy53aWR0aFxuICAgICAgICAgICAgfXB4YDtcbiAgICB9XG4gIH0sIFtwcm9wcy5pc09wZW4sIHByb3BzLm1lbnVQb3NpdGlvbiwgcHJvcHMudHJpZ2dlckVsZW1lbnRSZWZdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNzcz17Z2V0RHJvcGRvd25NZW51QmFzZVN0eWxlcyhwcm9wcyl9XG4gICAgICBzdHlsZT17cHJvcHMuY3VzdG9tU3R5bGVzfVxuICAgICAgcmVmPXttZW51UmVmfVxuICAgID5cbiAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duQ29udGVudE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6IFRNYXhQcm9wO1xuICBtZW51UG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgdHJpZ2dlckVsZW1lbnRSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59O1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duQ29udGVudE1lbnUgPSAocHJvcHM6IFREcm9wZG93bkNvbnRlbnRNZW51UHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25CYXNlTWVudVxuICAgICAgY3VzdG9tU3R5bGVzPXt7XG4gICAgICAgIHBhZGRpbmc6IGRlc2lnblRva2Vucy5zcGFjaW5nMzAsXG4gICAgICB9fVxuICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLmhvcml6b250YWxDb25zdHJhaW50fVxuICAgICAgaXNPcGVuPXtwcm9wcy5pc09wZW59XG4gICAgICBtZW51UG9zaXRpb249e3Byb3BzLm1lbnVQb3NpdGlvbn1cbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmPXtwcm9wcy50cmlnZ2VyRWxlbWVudFJlZn1cbiAgICA+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9Ecm9wZG93bkJhc2VNZW51PlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTGlzdE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6IFRNYXhQcm9wO1xuICBtZW51UG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgdHJpZ2dlckVsZW1lbnRSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59O1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duTGlzdE1lbnUgPSAocHJvcHM6IFREcm9wZG93bkxpc3RNZW51UHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25CYXNlTWVudVxuICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLmhvcml6b250YWxDb25zdHJhaW50fVxuICAgICAgaXNPcGVuPXtwcm9wcy5pc09wZW59XG4gICAgICBtZW51UG9zaXRpb249e3Byb3BzLm1lbnVQb3NpdGlvbn1cbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmPXtwcm9wcy50cmlnZ2VyRWxlbWVudFJlZn1cbiAgICA+XG4gICAgICA8U3BhY2luZ3NTdGFjayBzY2FsZT1cInhzXCI+e3Byb3BzLmNoaWxkcmVufTwvU3BhY2luZ3NTdGFjaz5cbiAgICA8L0Ryb3Bkb3duQmFzZU1lbnU+XG4gICk7XG59O1xuIl19 */");
42
+ return /*#__PURE__*/css("background-color:", designTokens.colorSurface, ";border:1px solid ", designTokens.colorSurface, ";border-radius:", designTokens.borderRadius4, ";box-shadow:0 2px ", boxShadowBottomSize, " 0px rgba(0, 0, 0, 0.15);display:", params.isOpen ? 'block' : 'none', ";margin-top:", marginTop, ";max-width:", Constraints.getMaxPropTokenValue(params.horizontalConstraint), ";overflow-y:auto;position:fixed;width:", params.horizontalConstraint === 'auto' ? 'auto' : '100%', ";z-index:5;" + (process.env.NODE_ENV === "production" ? "" : ";label:getDropdownMenuBaseStyles;"), process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUtbWVudS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JZIiwiZmlsZSI6ImRyb3Bkb3duLW1lbnUtbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDU1NQcm9wZXJ0aWVzLFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0LFxuICB1c2VSZWYsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNzcyB9IGZyb20gJ0BlbW90aW9uL3JlYWN0JztcbmltcG9ydCB7IGRlc2lnblRva2VucyB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2Rlc2lnbi1zeXN0ZW0nO1xuaW1wb3J0IENvbnN0cmFpbnRzLCB7IHR5cGUgVE1heFByb3AgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgU3BhY2luZ3NTdGFjayBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9zcGFjaW5ncy1zdGFjayc7XG5cbi8vIFdlIGRlY2xhcmUgdGhpcyBzdHlsZSBwcm9wZXJ0aWVzIGhlcmUgYmVjYXVzZSB3ZSBuZWVkIHRoZW0gYm90aCBmb3IgaW5pdGlhbCBjb21wb25lbnQgc3R5bGluZ1xuLy8gYnV0IGFsc28gZm9yIGNhbGN1bGF0aW5nIHRoZSBkZWZhdWx0IG1heCBoZWlnaHQgb2YgdGhlIGRyb3Bkb3duIG1lbnUgc28gd2UgbWFrZSBzdXJlIGl0IGZpdHNcbi8vIHdpdGhpbiB0aGUgdmlld3BvcnQuXG5jb25zdCBib3hTaGFkb3dCb3R0b21TaXplID0gJzVweCc7XG5jb25zdCBtYXJnaW5Ub3AgPSBkZXNpZ25Ub2tlbnMuc3BhY2luZzIwO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0RHJvcGRvd25NZW51QmFzZVN0eWxlcyhwYXJhbXM6IHtcbiAgaXNPcGVuOiBib29sZWFuO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG59KSB7XG4gIHJldHVybiBjc3NgXG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHtkZXNpZ25Ub2tlbnMuY29sb3JTdXJmYWNlfTtcbiAgICBib3JkZXI6IDFweCBzb2xpZCAke2Rlc2lnblRva2Vucy5jb2xvclN1cmZhY2V9O1xuICAgIGJvcmRlci1yYWRpdXM6ICR7ZGVzaWduVG9rZW5zLmJvcmRlclJhZGl1czR9O1xuICAgIGJveC1zaGFkb3c6IDAgMnB4ICR7Ym94U2hhZG93Qm90dG9tU2l6ZX0gMHB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7XG4gICAgZGlzcGxheTogJHtwYXJhbXMuaXNPcGVuID8gJ2Jsb2NrJyA6ICdub25lJ307XG4gICAgbWFyZ2luLXRvcDogJHttYXJnaW5Ub3B9O1xuICAgIG1heC13aWR0aDogJHtDb25zdHJhaW50cy5nZXRNYXhQcm9wVG9rZW5WYWx1ZShwYXJhbXMuaG9yaXpvbnRhbENvbnN0cmFpbnQpfTtcbiAgICBvdmVyZmxvdy15OiBhdXRvO1xuICAgIHBvc2l0aW9uOiBmaXhlZDtcbiAgICB3aWR0aDogJHtwYXJhbXMuaG9yaXpvbnRhbENvbnN0cmFpbnQgPT09ICdhdXRvJyA/ICdhdXRvJyA6ICcxMDAlJ307XG4gICAgei1pbmRleDogNTtcbiAgYDtcbn1cblxudHlwZSBURHJvcGRvd25CYXNlTWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBjdXN0b21TdHlsZXM/OiBDU1NQcm9wZXJ0aWVzO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgbWVudVBvc2l0aW9uOiAnbGVmdCcgfCAncmlnaHQnO1xuICBtZW51TWF4SGVpZ2h0PzogbnVtYmVyO1xuICB0cmlnZ2VyRWxlbWVudFJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn07XG5mdW5jdGlvbiBEcm9wZG93bkJhc2VNZW51KHByb3BzOiBURHJvcGRvd25CYXNlTWVudVByb3BzKSB7XG4gIGNvbnN0IG1lbnVSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgLy8gVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSB3aGVuIGl0IGlzIG9wZW5cbiAgICBpZiAocHJvcHMuaXNPcGVuICYmIHByb3BzLnRyaWdnZXJFbGVtZW50UmVmLmN1cnJlbnQgJiYgbWVudVJlZi5jdXJyZW50KSB7XG4gICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzID1cbiAgICAgICAgcHJvcHMudHJpZ2dlckVsZW1lbnRSZWYuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IG1lbnVFbGVtZW50Q29vcmRpbmF0ZXMgPSBtZW51UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG5cbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS50b3AgPSBgJHtcbiAgICAgICAgdHJpZ2dlckVsZW1lbnRDb29yZGluYXRlcy50b3AgKyB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmhlaWdodFxuICAgICAgfXB4YDtcbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS5sZWZ0ID1cbiAgICAgICAgcHJvcHMubWVudVBvc2l0aW9uID09PSAnbGVmdCdcbiAgICAgICAgICA/IGAke3RyaWdnZXJFbGVtZW50Q29vcmRpbmF0ZXMubGVmdH1weGBcbiAgICAgICAgICA6IGAke1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLmxlZnQgK1xuICAgICAgICAgICAgICB0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLndpZHRoIC1cbiAgICAgICAgICAgICAgbWVudUVsZW1lbnRDb29yZGluYXRlcy53aWR0aFxuICAgICAgICAgICAgfXB4YDtcbiAgICAgIG1lbnVSZWYuY3VycmVudC5zdHlsZS5tYXhIZWlnaHQgPSBwcm9wcy5tZW51TWF4SGVpZ2h0XG4gICAgICAgID8gYCR7cHJvcHMubWVudU1heEhlaWdodH1weGBcbiAgICAgICAgOiBgY2FsYygke1xuICAgICAgICAgICAgd2luZG93LmlubmVySGVpZ2h0IC1cbiAgICAgICAgICAgICh0cmlnZ2VyRWxlbWVudENvb3JkaW5hdGVzLnRvcCArIHRyaWdnZXJFbGVtZW50Q29vcmRpbmF0ZXMuaGVpZ2h0KVxuICAgICAgICAgIH1weCAtICR7bWFyZ2luVG9wfSAtICR7Ym94U2hhZG93Qm90dG9tU2l6ZX0pYDtcbiAgICB9XG4gIH0sIFtcbiAgICBwcm9wcy5pc09wZW4sXG4gICAgcHJvcHMubWVudVBvc2l0aW9uLFxuICAgIHByb3BzLnRyaWdnZXJFbGVtZW50UmVmLFxuICAgIHByb3BzLm1lbnVNYXhIZWlnaHQsXG4gIF0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdlxuICAgICAgY3NzPXtnZXREcm9wZG93bk1lbnVCYXNlU3R5bGVzKHByb3BzKX1cbiAgICAgIHN0eWxlPXtwcm9wcy5jdXN0b21TdHlsZXN9XG4gICAgICByZWY9e21lbnVSZWZ9XG4gICAgPlxuICAgICAge3Byb3BzLmNoaWxkcmVufVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5leHBvcnQgdHlwZSBURHJvcGRvd25Db250ZW50TWVudVByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3ROb2RlO1xuICBob3Jpem9udGFsQ29uc3RyYWludDogVE1heFByb3A7XG4gIG1lbnVQb3NpdGlvbjogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgbWVudU1heEhlaWdodD86IG51bWJlcjtcbiAgaXNPcGVuOiBib29sZWFuO1xuICB0cmlnZ2VyRWxlbWVudFJlZjogUmVmT2JqZWN0PEhUTUxFbGVtZW50Pjtcbn07XG5leHBvcnQgY29uc3QgRHJvcGRvd25Db250ZW50TWVudSA9IChwcm9wczogVERyb3Bkb3duQ29udGVudE1lbnVQcm9wcykgPT4ge1xuICByZXR1cm4gKFxuICAgIDxEcm9wZG93bkJhc2VNZW51XG4gICAgICBjdXN0b21TdHlsZXM9e3tcbiAgICAgICAgcGFkZGluZzogZGVzaWduVG9rZW5zLnNwYWNpbmczMCxcbiAgICAgIH19XG4gICAgICBob3Jpem9udGFsQ29uc3RyYWludD17cHJvcHMuaG9yaXpvbnRhbENvbnN0cmFpbnR9XG4gICAgICBpc09wZW49e3Byb3BzLmlzT3Blbn1cbiAgICAgIG1lbnVQb3NpdGlvbj17cHJvcHMubWVudVBvc2l0aW9ufVxuICAgICAgbWVudU1heEhlaWdodD17cHJvcHMubWVudU1heEhlaWdodH1cbiAgICAgIHRyaWdnZXJFbGVtZW50UmVmPXtwcm9wcy50cmlnZ2VyRWxlbWVudFJlZn1cbiAgICA+XG4gICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgPC9Ecm9wZG93bkJhc2VNZW51PlxuICApO1xufTtcblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTGlzdE1lbnVQcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbiAgaG9yaXpvbnRhbENvbnN0cmFpbnQ6IFRNYXhQcm9wO1xuICBtZW51UG9zaXRpb246ICdsZWZ0JyB8ICdyaWdodCc7XG4gIG1lbnVNYXhIZWlnaHQ/OiBudW1iZXI7XG4gIGlzT3BlbjogYm9vbGVhbjtcbiAgdHJpZ2dlckVsZW1lbnRSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD47XG59O1xuZXhwb3J0IGNvbnN0IERyb3Bkb3duTGlzdE1lbnUgPSAocHJvcHM6IFREcm9wZG93bkxpc3RNZW51UHJvcHMpID0+IHtcbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25CYXNlTWVudVxuICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLmhvcml6b250YWxDb25zdHJhaW50fVxuICAgICAgaXNPcGVuPXtwcm9wcy5pc09wZW59XG4gICAgICBtZW51UG9zaXRpb249e3Byb3BzLm1lbnVQb3NpdGlvbn1cbiAgICAgIG1lbnVNYXhIZWlnaHQ9e3Byb3BzLm1lbnVNYXhIZWlnaHR9XG4gICAgICB0cmlnZ2VyRWxlbWVudFJlZj17cHJvcHMudHJpZ2dlckVsZW1lbnRSZWZ9XG4gICAgPlxuICAgICAgPFNwYWNpbmdzU3RhY2sgc2NhbGU9XCJ4c1wiPntwcm9wcy5jaGlsZHJlbn08L1NwYWNpbmdzU3RhY2s+XG4gICAgPC9Ecm9wZG93bkJhc2VNZW51PlxuICApO1xufTtcbiJdfQ== */");
40
43
  }
41
44
  function DropdownBaseMenu(props) {
42
45
  const menuRef = useRef(null);
43
46
  useLayoutEffect(() => {
44
47
  // Update the position of the menu when it is open
45
48
  if (props.isOpen && props.triggerElementRef.current && menuRef.current) {
49
+ var _context, _context2;
46
50
  const triggerElementCoordinates = props.triggerElementRef.current.getBoundingClientRect();
47
51
  const menuElementCoordinates = menuRef.current.getBoundingClientRect();
48
52
  menuRef.current.style.top = "".concat(triggerElementCoordinates.top + triggerElementCoordinates.height, "px");
49
53
  menuRef.current.style.left = props.menuPosition === 'left' ? "".concat(triggerElementCoordinates.left, "px") : "".concat(triggerElementCoordinates.left + triggerElementCoordinates.width - menuElementCoordinates.width, "px");
54
+ menuRef.current.style.maxHeight = props.menuMaxHeight ? "".concat(props.menuMaxHeight, "px") : _concatInstanceProperty(_context = _concatInstanceProperty(_context2 = "calc(".concat(window.innerHeight - (triggerElementCoordinates.top + triggerElementCoordinates.height), "px - ")).call(_context2, marginTop, " - ")).call(_context, boxShadowBottomSize, ")");
50
55
  }
51
- }, [props.isOpen, props.menuPosition, props.triggerElementRef]);
56
+ }, [props.isOpen, props.menuPosition, props.triggerElementRef, props.menuMaxHeight]);
52
57
  return jsx("div", {
53
58
  css: getDropdownMenuBaseStyles(props),
54
59
  style: props.customStyles,
@@ -62,6 +67,7 @@ DropdownBaseMenu.propTypes = process.env.NODE_ENV !== "production" ? {
62
67
  horizontalConstraint: _pt.any.isRequired,
63
68
  isOpen: _pt.bool.isRequired,
64
69
  menuPosition: _pt.oneOf(['left', 'right']).isRequired,
70
+ menuMaxHeight: _pt.number,
65
71
  triggerElementRef: _pt.any.isRequired
66
72
  } : {};
67
73
  const DropdownContentMenu = props => {
@@ -72,6 +78,7 @@ const DropdownContentMenu = props => {
72
78
  horizontalConstraint: props.horizontalConstraint,
73
79
  isOpen: props.isOpen,
74
80
  menuPosition: props.menuPosition,
81
+ menuMaxHeight: props.menuMaxHeight,
75
82
  triggerElementRef: props.triggerElementRef,
76
83
  children: props.children
77
84
  });
@@ -80,6 +87,7 @@ DropdownContentMenu.propTypes = process.env.NODE_ENV !== "production" ? {
80
87
  children: _pt.node.isRequired,
81
88
  horizontalConstraint: _pt.any.isRequired,
82
89
  menuPosition: _pt.oneOf(['left', 'right']).isRequired,
90
+ menuMaxHeight: _pt.number,
83
91
  isOpen: _pt.bool.isRequired,
84
92
  triggerElementRef: _pt.any.isRequired
85
93
  } : {};
@@ -88,6 +96,7 @@ const DropdownListMenu = props => {
88
96
  horizontalConstraint: props.horizontalConstraint,
89
97
  isOpen: props.isOpen,
90
98
  menuPosition: props.menuPosition,
99
+ menuMaxHeight: props.menuMaxHeight,
91
100
  triggerElementRef: props.triggerElementRef,
92
101
  children: jsx(SpacingsStack, {
93
102
  scale: "xs",
@@ -99,6 +108,7 @@ DropdownListMenu.propTypes = process.env.NODE_ENV !== "production" ? {
99
108
  children: _pt.node.isRequired,
100
109
  horizontalConstraint: _pt.any.isRequired,
101
110
  menuPosition: _pt.oneOf(['left', 'right']).isRequired,
111
+ menuMaxHeight: _pt.number,
102
112
  isOpen: _pt.bool.isRequired,
103
113
  triggerElementRef: _pt.any.isRequired
104
114
  } : {};
@@ -123,6 +133,40 @@ function DropdownListMenuItem(props) {
123
133
  }
124
134
 
125
135
  function _EMOTION_STRINGIFIED_CSS_ERROR__() { return "You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop)."; }
136
+ function getScrollableParent(element) {
137
+ if (!element) {
138
+ return null;
139
+ }
140
+ const overflowY = window.getComputedStyle(element).overflowY;
141
+ const isScrollable = overflowY !== 'visible' && overflowY !== 'hidden';
142
+ if (isScrollable && element.scrollHeight >= element.clientHeight) {
143
+ return element;
144
+ }
145
+ return getScrollableParent(element.parentElement);
146
+ }
147
+ function useScrollBlock(isOpen, triggerRef) {
148
+ const scrollableParentRef = useRef();
149
+ useEffect(() => {
150
+ if (!scrollableParentRef.current) {
151
+ scrollableParentRef.current = getScrollableParent(triggerRef.current);
152
+ }
153
+ const scrollableParent = scrollableParentRef.current;
154
+ if (scrollableParent && isOpen) {
155
+ scrollableParent.setAttribute('data-prev-scroll', scrollableParent.style.overflowY);
156
+ scrollableParent.style.overflowY = 'hidden';
157
+ }
158
+ return () => {
159
+ // The cleanup effect runs after the component is unmounted but also everytime
160
+ // the dependency array changes. We need to manage both to manage opening/closing
161
+ // the dropdown but also to manage the the dropdown is opened and the component
162
+ // is unmounted. For instance, when navigating to another page client-side.
163
+ if (scrollableParent && isOpen) {
164
+ const prevScroll = scrollableParent.getAttribute('data-prev-scroll');
165
+ scrollableParent.style.overflowY = prevScroll || '';
166
+ }
167
+ };
168
+ }, [isOpen, scrollableParentRef, triggerRef]);
169
+ }
126
170
  const defaultProps = {
127
171
  menuHorizontalConstraint: 'auto',
128
172
  menuPosition: 'left',
@@ -139,7 +183,7 @@ const Container = /*#__PURE__*/_styled("div", process.env.NODE_ENV === "producti
139
183
  } : {
140
184
  name: "1nrevy2",
141
185
  styles: "position:relative;display:inline-block",
142
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW1ENEIiLCJmaWxlIjoiZHJvcGRvd24tbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHtcbiAgdXNlQ2FsbGJhY2ssXG4gIHVzZUVmZmVjdCxcbiAgdXNlTWVtbyxcbiAgdHlwZSBSZWFjdEVsZW1lbnQsXG4gIHR5cGUgUmVhY3ROb2RlLFxufSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VUb2dnbGVTdGF0ZSB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2hvb2tzJztcbmltcG9ydCB7IHR5cGUgVE1heFByb3AgfSBmcm9tICdAY29tbWVyY2V0b29scy11aWtpdC9jb25zdHJhaW50cyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCc7XG5pbXBvcnQgRHJvcGRvd25NZW51Q29udGV4dCBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IERyb3Bkb3duVHJpZ2dlciBmcm9tICcuL3RyaWdnZXInO1xuaW1wb3J0IHtcbiAgRHJvcGRvd25Db250ZW50TWVudSxcbiAgRHJvcGRvd25MaXN0TWVudSxcbiAgRHJvcGRvd25MaXN0TWVudUl0ZW0sXG59IGZyb20gJy4vbWVudSc7XG5cbmV4cG9ydCB0eXBlIFREcm9wZG93bk1lbnVQcm9wcyA9IHtcbiAgLyoqXG4gICAqIFRoZSBwb3NpdGlvbiBvZiB0aGUgbWVudSByZWxhdGl2ZSB0byB0aGUgdHJpZ2dlciBlbGVtZW50LlxuICAgKi9cbiAgbWVudVBvc2l0aW9uPzogJ2xlZnQnIHwgJ3JpZ2h0JztcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcnMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IFJlYWN0RWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBtZW51LlxuICAgKiBUaGUgJ2RlZmF1bHQnIHR5cGUganVzdCByZW5kZXJzIGEgZHJvcGRvd24gY29udGFpbmVyIGJ1dCB0aGUgJ2xpc3QnIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBEcm9wZG93bk1lbnUuTGlzdE1lbnVJdGVtIGNvbXBvbmVudC5cbiAgICovXG4gIG1lbnVUeXBlPzogJ2RlZmF1bHQnIHwgJ2xpc3QnO1xuICAvKipcbiAgICogVGhlIGhvcml6b250YWwgY29uc3RyYWludCBvZiB0aGUgbWVudS5cbiAgICovXG4gIG1lbnVIb3Jpem9udGFsQ29uc3RyYWludD86IFRNYXhQcm9wO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5cbmNvbnN0IGRlZmF1bHRQcm9wczogUGljazxcbiAgVERyb3Bkb3duTWVudVByb3BzLFxuICAnbWVudVBvc2l0aW9uJyB8ICdtZW51VHlwZScgfCAnbWVudUhvcml6b250YWxDb25zdHJhaW50J1xuPiA9IHtcbiAgbWVudUhvcml6b250YWxDb25zdHJhaW50OiAnYXV0bycsXG4gIG1lbnVQb3NpdGlvbjogJ2xlZnQnLFxuICBtZW51VHlwZTogJ2RlZmF1bHQnLFxufTtcblxuY29uc3QgQ29udGFpbmVyID0gc3R5bGVkLmRpdmBcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG5gO1xuXG5mdW5jdGlvbiBEcm9wZG93bk1lbnUocHJvcHM6IFREcm9wZG93bk1lbnVQcm9wcykge1xuICBjb25zdCBbaXNPcGVuLCB0b2dnbGVdID0gdXNlVG9nZ2xlU3RhdGUoZmFsc2UpO1xuICBjb25zdCB0cmlnZ2VyUmVmID0gUmVhY3QudXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcblxuICAvLyBXZSB1c2UgdGhlIGNvbnRleHQgc28gY2hpbGRyZW4gY2FuIHRvZ2dsZSB0aGUgZHJvcGRvd25cbiAgY29uc3QgY29udGV4dCA9IHVzZU1lbW8oXG4gICAgKCkgPT4gKHtcbiAgICAgIGlzT3BlbixcbiAgICAgIHRvZ2dsZSxcbiAgICB9KSxcbiAgICBbaXNPcGVuLCB0b2dnbGVdXG4gICk7XG4gIGNvbnN0IE1lbnUgPVxuICAgIHByb3BzLm1lbnVUeXBlID09PSAnZGVmYXVsdCcgPyBEcm9wZG93bkNvbnRlbnRNZW51IDogRHJvcGRvd25MaXN0TWVudTtcblxuICAvLyBDbG9zZSB0aGUgZHJvcGRvd24gd2hlbiBjbGlja2luZyBvdXRzaWRlIG9mIGl0XG4gIGNvbnN0IGhhbmRsZUdsb2JhbENsaWNrID0gdXNlQ2FsbGJhY2soXG4gICAgKGV2ZW50KSA9PiB7XG4gICAgICBjb25zdCB0cmlnZ2VyRWxlbWVudCA9IHRyaWdnZXJSZWYuY3VycmVudDtcbiAgICAgIGlmIChcbiAgICAgICAgaXNPcGVuICYmXG4gICAgICAgIHRyaWdnZXJFbGVtZW50ICYmXG4gICAgICAgIGV2ZW50LnRhcmdldCAhPT0gdHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgICAgd2luZG93LmRvY3VtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCkgJiZcbiAgICAgICAgIXRyaWdnZXJFbGVtZW50LnBhcmVudEVsZW1lbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldClcbiAgICAgICkge1xuICAgICAgICB0b2dnbGUoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3RyaWdnZXJSZWYsIHRvZ2dsZSwgaXNPcGVuXVxuICApO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGhhbmRsZUdsb2JhbENsaWNrKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlR2xvYmFsQ2xpY2spO1xuICAgIH07XG4gIH0sIFtoYW5kbGVHbG9iYWxDbGlja10pO1xuICAvLyBCbG9jayBzY3JvbGxpbmcgd2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChpc09wZW4pIHtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5kb2N1bWVudC5ib2R5LnN0eWxlLm92ZXJmbG93ID0gJ2luaXRpYWwnO1xuICAgIH1cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LmRvY3VtZW50LmJvZHkuc3R5bGUub3ZlcmZsb3cgPSAnaW5pdGlhbCc7XG4gICAgfTtcbiAgfSwgW2lzT3Blbl0pO1xuXG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duTWVudUNvbnRleHQuUHJvdmlkZXIgdmFsdWU9e2NvbnRleHR9PlxuICAgICAgPENvbnRhaW5lcj5cbiAgICAgICAgPERyb3Bkb3duVHJpZ2dlciBvbkNsaWNrPXt0b2dnbGV9IHJlZj17dHJpZ2dlclJlZn0+XG4gICAgICAgICAge3Byb3BzLnRyaWdnZXJFbGVtZW50fVxuICAgICAgICA8L0Ryb3Bkb3duVHJpZ2dlcj5cblxuICAgICAgICA8TWVudVxuICAgICAgICAgIGhvcml6b250YWxDb25zdHJhaW50PXtwcm9wcy5tZW51SG9yaXpvbnRhbENvbnN0cmFpbnQhfVxuICAgICAgICAgIGlzT3Blbj17aXNPcGVufVxuICAgICAgICAgIG1lbnVQb3NpdGlvbj17cHJvcHMubWVudVBvc2l0aW9uIX1cbiAgICAgICAgICB0cmlnZ2VyRWxlbWVudFJlZj17dHJpZ2dlclJlZn1cbiAgICAgICAgPlxuICAgICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9NZW51PlxuICAgICAgPC9Db250YWluZXI+XG4gICAgPC9Ecm9wZG93bk1lbnVDb250ZXh0LlByb3ZpZGVyPlxuICApO1xufVxuRHJvcGRvd25NZW51LmRlZmF1bHRQcm9wcyA9IGRlZmF1bHRQcm9wcztcblxuRHJvcGRvd25NZW51Lkxpc3RNZW51SXRlbSA9IERyb3Bkb3duTGlzdE1lbnVJdGVtO1xuXG5leHBvcnQgZGVmYXVsdCBEcm9wZG93bk1lbnU7XG4iXX0= */",
186
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImRyb3Bkb3duLW1lbnUudHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQW9HNEIiLCJmaWxlIjoiZHJvcGRvd24tbWVudS50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB1c2VDYWxsYmFjayxcbiAgdXNlRWZmZWN0LFxuICB1c2VNZW1vLFxuICB1c2VSZWYsXG4gIHR5cGUgUmVhY3RFbGVtZW50LFxuICB0eXBlIFJlYWN0Tm9kZSxcbiAgdHlwZSBSZWZPYmplY3QsXG59IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHVzZVRvZ2dsZVN0YXRlIH0gZnJvbSAnQGNvbW1lcmNldG9vbHMtdWlraXQvaG9va3MnO1xuaW1wb3J0IHsgdHlwZSBUTWF4UHJvcCB9IGZyb20gJ0Bjb21tZXJjZXRvb2xzLXVpa2l0L2NvbnN0cmFpbnRzJztcbmltcG9ydCBzdHlsZWQgZnJvbSAnQGVtb3Rpb24vc3R5bGVkJztcbmltcG9ydCBEcm9wZG93bk1lbnVDb250ZXh0IGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgRHJvcGRvd25UcmlnZ2VyIGZyb20gJy4vdHJpZ2dlcic7XG5pbXBvcnQge1xuICBEcm9wZG93bkNvbnRlbnRNZW51LFxuICBEcm9wZG93bkxpc3RNZW51LFxuICBEcm9wZG93bkxpc3RNZW51SXRlbSxcbn0gZnJvbSAnLi9tZW51JztcblxuZXhwb3J0IHR5cGUgVERyb3Bkb3duTWVudVByb3BzID0ge1xuICAvKipcbiAgICogVGhlIHBvc2l0aW9uIG9mIHRoZSBtZW51IHJlbGF0aXZlIHRvIHRoZSB0cmlnZ2VyIGVsZW1lbnQuXG4gICAqL1xuICBtZW51UG9zaXRpb24/OiAnbGVmdCcgfCAncmlnaHQnO1xuICAvKipcbiAgICogVGhlIG1heGltdW0gaGVpZ2h0IGZvciB0aGUgbWVudSBpbiBwaXhlbHMuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBtYXggaGVpZ2h0IHdpbGwgYmUgdGhlIGF2YWlsYWJsZSBzcGFjZSBiZXR3ZWVuIHRoZSB0cmlnZ2VyIGVsZW1lbnQgYW5kIHRoZSBib3R0b20gb2YgdGhlIHZpZXdwb3J0LlxuICAgKi9cbiAgbWVudU1heEhlaWdodD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBlbGVtZW50IHRoYXQgdHJpZ2dlcnMgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgdHJpZ2dlckVsZW1lbnQ6IFJlYWN0RWxlbWVudDtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHRoZSBtZW51LlxuICAgKiBUaGUgJ2RlZmF1bHQnIHR5cGUganVzdCByZW5kZXJzIGEgZHJvcGRvd24gY29udGFpbmVyIGJ1dCB0aGUgJ2xpc3QnIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB3aXRoIHRoZSBEcm9wZG93bk1lbnUuTGlzdE1lbnVJdGVtIGNvbXBvbmVudC5cbiAgICovXG4gIG1lbnVUeXBlPzogJ2RlZmF1bHQnIHwgJ2xpc3QnO1xuICAvKipcbiAgICogVGhlIGhvcml6b250YWwgY29uc3RyYWludCBvZiB0aGUgbWVudS5cbiAgICovXG4gIG1lbnVIb3Jpem9udGFsQ29uc3RyYWludD86IFRNYXhQcm9wO1xuICAvKipcbiAgICogVGhlIGNvbnRlbnQgb2YgdGhlIGRyb3Bkb3duLlxuICAgKi9cbiAgY2hpbGRyZW46IFJlYWN0Tm9kZTtcbn07XG5cbmZ1bmN0aW9uIGdldFNjcm9sbGFibGVQYXJlbnQoZWxlbWVudDogSFRNTEVsZW1lbnQgfCBudWxsKTogSFRNTEVsZW1lbnQgfCBudWxsIHtcbiAgaWYgKCFlbGVtZW50KSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgY29uc3Qgb3ZlcmZsb3dZID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkub3ZlcmZsb3dZO1xuICBjb25zdCBpc1Njcm9sbGFibGUgPSBvdmVyZmxvd1kgIT09ICd2aXNpYmxlJyAmJiBvdmVyZmxvd1kgIT09ICdoaWRkZW4nO1xuICBpZiAoaXNTY3JvbGxhYmxlICYmIGVsZW1lbnQuc2Nyb2xsSGVpZ2h0ID49IGVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQ7XG4gIH1cblxuICByZXR1cm4gZ2V0U2Nyb2xsYWJsZVBhcmVudChlbGVtZW50LnBhcmVudEVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiB1c2VTY3JvbGxCbG9jayhpc09wZW46IGJvb2xlYW4sIHRyaWdnZXJSZWY6IFJlZk9iamVjdDxIVE1MRWxlbWVudD4pIHtcbiAgY29uc3Qgc2Nyb2xsYWJsZVBhcmVudFJlZiA9IHVzZVJlZjxIVE1MRWxlbWVudCB8IG51bGw+KCk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNjcm9sbGFibGVQYXJlbnRSZWYuY3VycmVudCkge1xuICAgICAgc2Nyb2xsYWJsZVBhcmVudFJlZi5jdXJyZW50ID0gZ2V0U2Nyb2xsYWJsZVBhcmVudCh0cmlnZ2VyUmVmLmN1cnJlbnQpO1xuICAgIH1cblxuICAgIGNvbnN0IHsgY3VycmVudDogc2Nyb2xsYWJsZVBhcmVudCB9ID0gc2Nyb2xsYWJsZVBhcmVudFJlZjtcbiAgICBpZiAoc2Nyb2xsYWJsZVBhcmVudCAmJiBpc09wZW4pIHtcbiAgICAgIHNjcm9sbGFibGVQYXJlbnQuc2V0QXR0cmlidXRlKFxuICAgICAgICAnZGF0YS1wcmV2LXNjcm9sbCcsXG4gICAgICAgIHNjcm9sbGFibGVQYXJlbnQuc3R5bGUub3ZlcmZsb3dZXG4gICAgICApO1xuICAgICAgc2Nyb2xsYWJsZVBhcmVudC5zdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcbiAgICB9XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIC8vIFRoZSBjbGVhbnVwIGVmZmVjdCBydW5zIGFmdGVyIHRoZSBjb21wb25lbnQgaXMgdW5tb3VudGVkIGJ1dCBhbHNvIGV2ZXJ5dGltZVxuICAgICAgLy8gdGhlIGRlcGVuZGVuY3kgYXJyYXkgY2hhbmdlcy4gV2UgbmVlZCB0byBtYW5hZ2UgYm90aCB0byBtYW5hZ2Ugb3BlbmluZy9jbG9zaW5nXG4gICAgICAvLyB0aGUgZHJvcGRvd24gYnV0IGFsc28gdG8gbWFuYWdlIHRoZSB0aGUgZHJvcGRvd24gaXMgb3BlbmVkIGFuZCB0aGUgY29tcG9uZW50XG4gICAgICAvLyBpcyB1bm1vdW50ZWQuIEZvciBpbnN0YW5jZSwgd2hlbiBuYXZpZ2F0aW5nIHRvIGFub3RoZXIgcGFnZSBjbGllbnQtc2lkZS5cbiAgICAgIGlmIChzY3JvbGxhYmxlUGFyZW50ICYmIGlzT3Blbikge1xuICAgICAgICBjb25zdCBwcmV2U2Nyb2xsID0gc2Nyb2xsYWJsZVBhcmVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtcHJldi1zY3JvbGwnKTtcbiAgICAgICAgc2Nyb2xsYWJsZVBhcmVudC5zdHlsZS5vdmVyZmxvd1kgPSBwcmV2U2Nyb2xsIHx8ICcnO1xuICAgICAgfVxuICAgIH07XG4gIH0sIFtpc09wZW4sIHNjcm9sbGFibGVQYXJlbnRSZWYsIHRyaWdnZXJSZWZdKTtcbn1cblxuY29uc3QgZGVmYXVsdFByb3BzOiBQaWNrPFxuICBURHJvcGRvd25NZW51UHJvcHMsXG4gICdtZW51UG9zaXRpb24nIHwgJ21lbnVUeXBlJyB8ICdtZW51SG9yaXpvbnRhbENvbnN0cmFpbnQnXG4+ID0ge1xuICBtZW51SG9yaXpvbnRhbENvbnN0cmFpbnQ6ICdhdXRvJyxcbiAgbWVudVBvc2l0aW9uOiAnbGVmdCcsXG4gIG1lbnVUeXBlOiAnZGVmYXVsdCcsXG59O1xuXG5jb25zdCBDb250YWluZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbmA7XG5cbmZ1bmN0aW9uIERyb3Bkb3duTWVudShwcm9wczogVERyb3Bkb3duTWVudVByb3BzKSB7XG4gIGNvbnN0IFtpc09wZW4sIHRvZ2dsZV0gPSB1c2VUb2dnbGVTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRyaWdnZXJSZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpO1xuXG4gIC8vIFdlIHVzZSB0aGUgY29udGV4dCBzbyBjaGlsZHJlbiBjYW4gdG9nZ2xlIHRoZSBkcm9wZG93blxuICBjb25zdCBjb250ZXh0ID0gdXNlTWVtbyhcbiAgICAoKSA9PiAoe1xuICAgICAgaXNPcGVuLFxuICAgICAgdG9nZ2xlLFxuICAgIH0pLFxuICAgIFtpc09wZW4sIHRvZ2dsZV1cbiAgKTtcbiAgY29uc3QgTWVudSA9XG4gICAgcHJvcHMubWVudVR5cGUgPT09ICdkZWZhdWx0JyA/IERyb3Bkb3duQ29udGVudE1lbnUgOiBEcm9wZG93bkxpc3RNZW51O1xuXG4gIC8vIENsb3NlIHRoZSBkcm9wZG93biB3aGVuIGNsaWNraW5nIG91dHNpZGUgb2YgaXRcbiAgY29uc3QgaGFuZGxlR2xvYmFsQ2xpY2sgPSB1c2VDYWxsYmFjayhcbiAgICAoZXZlbnQpID0+IHtcbiAgICAgIGNvbnN0IHRyaWdnZXJFbGVtZW50ID0gdHJpZ2dlclJlZi5jdXJyZW50O1xuICAgICAgaWYgKFxuICAgICAgICBpc09wZW4gJiZcbiAgICAgICAgdHJpZ2dlckVsZW1lbnQgJiZcbiAgICAgICAgZXZlbnQudGFyZ2V0ICE9PSB0cmlnZ2VyRWxlbWVudCAmJlxuICAgICAgICB3aW5kb3cuZG9jdW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSAmJlxuICAgICAgICAhdHJpZ2dlckVsZW1lbnQucGFyZW50RWxlbWVudD8uY29udGFpbnMoZXZlbnQudGFyZ2V0KVxuICAgICAgKSB7XG4gICAgICAgIHRvZ2dsZShmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbdHJpZ2dlclJlZiwgdG9nZ2xlLCBpc09wZW5dXG4gICk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlR2xvYmFsQ2xpY2spO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignY2xpY2snLCBoYW5kbGVHbG9iYWxDbGljayk7XG4gICAgfTtcbiAgfSwgW2hhbmRsZUdsb2JhbENsaWNrXSk7XG5cbiAgLy8gQmxvY2sgc2Nyb2xsaW5nIHdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4uXG4gIC8vIFdlIGRvIHRoaXMgdG8gYXZvaWQgcmVxdWlyaW5nIGRyb3Bkb3duIHJlcmVuZGVyaW5nIHdoaWxlIHRoZSB1c2VyIHNjcm9sbHMuXG4gIHVzZVNjcm9sbEJsb2NrKGlzT3BlbiwgdHJpZ2dlclJlZik7XG5cbiAgcmV0dXJuIChcbiAgICA8RHJvcGRvd25NZW51Q29udGV4dC5Qcm92aWRlciB2YWx1ZT17Y29udGV4dH0+XG4gICAgICA8Q29udGFpbmVyPlxuICAgICAgICA8RHJvcGRvd25UcmlnZ2VyIG9uQ2xpY2s9e3RvZ2dsZX0gcmVmPXt0cmlnZ2VyUmVmfT5cbiAgICAgICAgICB7cHJvcHMudHJpZ2dlckVsZW1lbnR9XG4gICAgICAgIDwvRHJvcGRvd25UcmlnZ2VyPlxuXG4gICAgICAgIDxNZW51XG4gICAgICAgICAgaG9yaXpvbnRhbENvbnN0cmFpbnQ9e3Byb3BzLm1lbnVIb3Jpem9udGFsQ29uc3RyYWludCF9XG4gICAgICAgICAgaXNPcGVuPXtpc09wZW59XG4gICAgICAgICAgbWVudVBvc2l0aW9uPXtwcm9wcy5tZW51UG9zaXRpb24hfVxuICAgICAgICAgIG1lbnVNYXhIZWlnaHQ9e3Byb3BzLm1lbnVNYXhIZWlnaHR9XG4gICAgICAgICAgdHJpZ2dlckVsZW1lbnRSZWY9e3RyaWdnZXJSZWZ9XG4gICAgICAgID5cbiAgICAgICAgICB7cHJvcHMuY2hpbGRyZW59XG4gICAgICAgIDwvTWVudT5cbiAgICAgIDwvQ29udGFpbmVyPlxuICAgIDwvRHJvcGRvd25NZW51Q29udGV4dC5Qcm92aWRlcj5cbiAgKTtcbn1cbkRyb3Bkb3duTWVudS5kZWZhdWx0UHJvcHMgPSBkZWZhdWx0UHJvcHM7XG5cbkRyb3Bkb3duTWVudS5MaXN0TWVudUl0ZW0gPSBEcm9wZG93bkxpc3RNZW51SXRlbTtcblxuZXhwb3J0IGRlZmF1bHQgRHJvcGRvd25NZW51O1xuIl19 */",
143
187
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
144
188
  });
145
189
  function DropdownMenu(props) {
@@ -147,7 +191,7 @@ function DropdownMenu(props) {
147
191
  _useToggleState2 = _slicedToArray(_useToggleState, 2),
148
192
  isOpen = _useToggleState2[0],
149
193
  toggle = _useToggleState2[1];
150
- const triggerRef = React.useRef(null);
194
+ const triggerRef = useRef(null);
151
195
 
152
196
  // We use the context so children can toggle the dropdown
153
197
  const context = useMemo(() => ({
@@ -170,17 +214,10 @@ function DropdownMenu(props) {
170
214
  window.removeEventListener('click', handleGlobalClick);
171
215
  };
172
216
  }, [handleGlobalClick]);
173
- // Block scrolling when the dropdown is open
174
- useEffect(() => {
175
- if (isOpen) {
176
- window.document.body.style.overflow = 'hidden';
177
- } else {
178
- window.document.body.style.overflow = 'initial';
179
- }
180
- return () => {
181
- window.document.body.style.overflow = 'initial';
182
- };
183
- }, [isOpen]);
217
+
218
+ // Block scrolling when the dropdown is open.
219
+ // We do this to avoid requiring dropdown rerendering while the user scrolls.
220
+ useScrollBlock(isOpen, triggerRef);
184
221
  return jsx(DropdownMenuContext.Provider, {
185
222
  value: context,
186
223
  children: jsxs(Container, {
@@ -192,6 +229,7 @@ function DropdownMenu(props) {
192
229
  horizontalConstraint: props.menuHorizontalConstraint,
193
230
  isOpen: isOpen,
194
231
  menuPosition: props.menuPosition,
232
+ menuMaxHeight: props.menuMaxHeight,
195
233
  triggerElementRef: triggerRef,
196
234
  children: props.children
197
235
  })]
@@ -200,6 +238,7 @@ function DropdownMenu(props) {
200
238
  }
201
239
  DropdownMenu.propTypes = process.env.NODE_ENV !== "production" ? {
202
240
  menuPosition: _pt.oneOf(['left', 'right']),
241
+ menuMaxHeight: _pt.number,
203
242
  triggerElement: _pt.element.isRequired,
204
243
  menuType: _pt.oneOf(['default', 'list']),
205
244
  menuHorizontalConstraint: _pt.any,
@@ -209,6 +248,6 @@ DropdownMenu.defaultProps = defaultProps;
209
248
  DropdownMenu.ListMenuItem = DropdownListMenuItem;
210
249
 
211
250
  // NOTE: This string will be replaced on build time with the package version.
212
- var version = "19.1.0";
251
+ var version = "19.3.0";
213
252
 
214
253
  export { DropdownMenu as default, useDropdownMenuContext, version };
@@ -3,6 +3,7 @@ import { type TMaxProp } from '@commercetools-uikit/constraints';
3
3
  import { DropdownListMenuItem } from "./menu/index.js";
4
4
  export type TDropdownMenuProps = {
5
5
  menuPosition?: 'left' | 'right';
6
+ menuMaxHeight?: number;
6
7
  triggerElement: ReactElement;
7
8
  menuType?: 'default' | 'list';
8
9
  menuHorizontalConstraint?: TMaxProp;
@@ -8,6 +8,7 @@ export type TDropdownContentMenuProps = {
8
8
  children: ReactNode;
9
9
  horizontalConstraint: TMaxProp;
10
10
  menuPosition: 'left' | 'right';
11
+ menuMaxHeight?: number;
11
12
  isOpen: boolean;
12
13
  triggerElementRef: RefObject<HTMLElement>;
13
14
  };
@@ -16,6 +17,7 @@ export type TDropdownListMenuProps = {
16
17
  children: ReactNode;
17
18
  horizontalConstraint: TMaxProp;
18
19
  menuPosition: 'left' | 'right';
20
+ menuMaxHeight?: number;
19
21
  isOpen: boolean;
20
22
  triggerElementRef: RefObject<HTMLElement>;
21
23
  };
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.1.0",
4
+ "version": "19.3.0",
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.1.0",
25
- "@commercetools-uikit/constraints": "19.1.0",
26
- "@commercetools-uikit/design-system": "19.1.0",
27
- "@commercetools-uikit/hooks": "19.1.0",
28
- "@commercetools-uikit/secondary-button": "19.1.0",
29
- "@commercetools-uikit/spacings-inline": "19.1.0",
30
- "@commercetools-uikit/spacings-stack": "19.1.0",
31
- "@commercetools-uikit/utils": "19.1.0",
24
+ "@commercetools-uikit/accessible-button": "19.3.0",
25
+ "@commercetools-uikit/constraints": "19.3.0",
26
+ "@commercetools-uikit/design-system": "19.3.0",
27
+ "@commercetools-uikit/hooks": "19.3.0",
28
+ "@commercetools-uikit/secondary-button": "19.3.0",
29
+ "@commercetools-uikit/spacings-inline": "19.3.0",
30
+ "@commercetools-uikit/spacings-stack": "19.3.0",
31
+ "@commercetools-uikit/utils": "19.3.0",
32
32
  "@emotion/react": "^11.10.5",
33
33
  "@emotion/styled": "^11.10.5",
34
34
  "prop-types": "15.8.1",