@kaizen/components 1.78.2 → 1.78.4

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.
Files changed (36) hide show
  1. package/dist/cjs/src/Filter/FilterMultiSelect/FilterMultiSelect.cjs +11 -4
  2. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.cjs +1 -1
  3. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.css.cjs +9 -0
  4. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.cjs +1 -1
  5. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/{MenuPopup.module.scss.cjs → MenuPopup.module.css.cjs} +1 -1
  6. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/ResponsiveMenuPopup.cjs +91 -0
  7. package/dist/esm/src/Filter/FilterMultiSelect/FilterMultiSelect.mjs +12 -5
  8. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.mjs +1 -1
  9. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.css.mjs +7 -0
  10. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.mjs +1 -1
  11. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.module.css.mjs +4 -0
  12. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/ResponsiveMenuPopup.mjs +85 -0
  13. package/dist/styles.css +8652 -8646
  14. package/dist/types/Filter/FilterMultiSelect/FilterMultiSelect.d.ts +7 -1
  15. package/dist/types/Filter/FilterMultiSelect/_docs/MockData.d.ts +1 -0
  16. package/dist/types/Filter/FilterMultiSelect/subcomponents/MenuPopup/ResponsiveMenuPopup.d.ts +22 -0
  17. package/dist/types/Filter/FilterMultiSelect/subcomponents/MenuPopup/index.d.ts +1 -0
  18. package/package.json +1 -1
  19. package/src/Filter/FilterBar/subcomponents/FilterBarMultiSelect/FilterBarMultiSelect.spec.tsx +1 -0
  20. package/src/Filter/FilterMultiSelect/FilterMultiSelect.tsx +10 -4
  21. package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.mdx +9 -1
  22. package/src/Filter/FilterMultiSelect/_docs/FilterMultiSelect.stories.tsx +113 -2
  23. package/src/Filter/FilterMultiSelect/_docs/MockData.ts +39 -0
  24. package/src/Filter/FilterMultiSelect/context/MenuTriggerProvider/MenuTriggerProvider.spec.tsx +2 -18
  25. package/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.css +20 -0
  26. package/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.tsx +1 -1
  27. package/src/Filter/FilterMultiSelect/subcomponents/ListBoxSection/ListBoxSection.module.scss +1 -0
  28. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.module.css +21 -0
  29. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.tsx +1 -1
  30. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/ResponsiveMenuPopup.tsx +115 -0
  31. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/index.ts +1 -0
  32. package/dist/cjs/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.scss.cjs +0 -9
  33. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.scss.mjs +0 -7
  34. package/dist/esm/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.module.scss.mjs +0 -4
  35. package/src/Filter/FilterMultiSelect/subcomponents/ListBox/ListBox.module.scss +0 -23
  36. package/src/Filter/FilterMultiSelect/subcomponents/MenuPopup/MenuPopup.module.scss +0 -22
@@ -10,6 +10,7 @@ var LoadMoreButton = require('./subcomponents/LoadMoreButton/LoadMoreButton.cjs'
10
10
  var MenuFooter = require('./subcomponents/MenuLayout/MenuFooter/MenuFooter.cjs');
11
11
  var MenuLoadingSkeleton = require('./subcomponents/MenuLayout/MenuLoadingSkeleton/MenuLoadingSkeleton.cjs');
12
12
  var MenuPopup = require('./subcomponents/MenuPopup/MenuPopup.cjs');
13
+ var ResponsiveMenuPopup = require('./subcomponents/MenuPopup/ResponsiveMenuPopup.cjs');
13
14
  var MultiSelectOption = require('./subcomponents/MultiSelectOption/MultiSelectOption.cjs');
14
15
  var NoResults = require('./subcomponents/NoResults/NoResults.cjs');
15
16
  var SearchInput = require('./subcomponents/SearchInput/SearchInput.cjs');
@@ -27,6 +28,7 @@ var React__default = /*#__PURE__*/_interopDefault(React);
27
28
  var FilterMultiSelect = function (_a) {
28
29
  var trigger = _a.trigger,
29
30
  children = _a.children,
31
+ customMenuPopup = _a.customMenuPopup,
30
32
  isOpen = _a.isOpen,
31
33
  defaultOpen = _a.defaultOpen,
32
34
  onOpenChange = _a.onOpenChange,
@@ -41,17 +43,19 @@ var FilterMultiSelect = function (_a) {
41
43
  selectionMode = _b === void 0 ? 'multiple' : _b,
42
44
  onSearchInputChange = _a.onSearchInputChange,
43
45
  triggerRef = _a.triggerRef,
44
- className = _a.className;
46
+ className = _a.className,
47
+ restProps = tslib.__rest(_a, ["trigger", "children", "customMenuPopup", "isOpen", "defaultOpen", "onOpenChange", "isLoading", "loadingSkeleton", "label", "items", "selectedKeys", "defaultSelectedKeys", "onSelectionChange", "selectionMode", "onSearchInputChange", "triggerRef", "className"]);
48
+ var MenuComponent = customMenuPopup !== null && customMenuPopup !== void 0 ? customMenuPopup : MenuPopup.MenuPopup;
45
49
  var menuTriggerProps = {
46
50
  isOpen: isOpen,
47
51
  defaultOpen: defaultOpen,
48
52
  onOpenChange: onOpenChange,
49
53
  triggerRef: triggerRef
50
54
  };
51
- var menuPopupProps = {
55
+ var menuPopupProps = tslib.__assign({
52
56
  isLoading: isLoading,
53
57
  loadingSkeleton: loadingSkeleton
54
- };
58
+ }, restProps);
55
59
  var disabledKeys = new Set(items === null || items === void 0 ? void 0 : items.filter(function (item) {
56
60
  return item.isDisabled === true;
57
61
  }).map(function (disabledItem) {
@@ -69,7 +73,9 @@ var FilterMultiSelect = function (_a) {
69
73
  };
70
74
  return React__default.default.createElement(MenuTriggerProvider.MenuTriggerProvider, tslib.__assign({}, menuTriggerProps), React__default.default.createElement("div", {
71
75
  className: className
72
- }, React__default.default.createElement(MenuTriggerProvider.MenuTriggerConsumer, null, trigger), React__default.default.createElement(MenuPopup.MenuPopup, tslib.__assign({}, menuPopupProps), React__default.default.createElement(SelectionProvider.SelectionProvider, tslib.__assign({}, selectionProps), React__default.default.createElement(SelectionProvider.SelectionConsumer, null, children)))));
76
+ }, React__default.default.createElement(MenuTriggerProvider.MenuTriggerConsumer, null, trigger), React__default.default.createElement(MenuComponent, tslib.__assign({
77
+ "aria-label": label
78
+ }, menuPopupProps), React__default.default.createElement(SelectionProvider.SelectionProvider, tslib.__assign({}, selectionProps), React__default.default.createElement(SelectionProvider.SelectionConsumer, null, children)))));
73
79
  };
74
80
  FilterMultiSelect.displayName = 'FilterMultiSelect';
75
81
  FilterMultiSelect.TriggerButton = FilterTriggerButton.FilterTriggerButton;
@@ -85,4 +91,5 @@ FilterMultiSelect.MenuFooter = MenuFooter.MenuFooter; // For layout
85
91
  FilterMultiSelect.MenuLoadingSkeleton = MenuLoadingSkeleton.MenuLoadingSkeleton; // Menu Loading Skeleton example
86
92
  FilterMultiSelect.LoadMoreButton = LoadMoreButton.LoadMoreButton;
87
93
  FilterMultiSelect.NoResults = NoResults.NoResults;
94
+ FilterMultiSelect.ResponsiveMenuPopup = ResponsiveMenuPopup.ResponsiveMenuPopup;
88
95
  exports.FilterMultiSelect = FilterMultiSelect;
@@ -4,7 +4,7 @@ var tslib = require('tslib');
4
4
  var React = require('react');
5
5
  var classnames = require('classnames');
6
6
  var SelectionProvider = require('../../context/SelectionProvider/SelectionProvider.cjs');
7
- var ListBox_module = require('./ListBox.module.scss.cjs');
7
+ var ListBox_module = require('./ListBox.module.css.cjs');
8
8
  function _interopDefault(e) {
9
9
  return e && e.__esModule ? e : {
10
10
  default: e
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var styles = {
4
+ "listBox": "ListBox-module_listBox__HBScm",
5
+ "overflown": "ListBox-module_overflown__PdKED",
6
+ "hidden": "ListBox-module_hidden__mO-oL",
7
+ "noResultsWrapper": "ListBox-module_noResultsWrapper__RnMj0"
8
+ };
9
+ module.exports = styles;
@@ -6,7 +6,7 @@ var focus = require('@react-aria/focus');
6
6
  var overlays = require('@react-aria/overlays');
7
7
  var MenuTriggerProvider = require('../../context/MenuTriggerProvider/MenuTriggerProvider.cjs');
8
8
  require('../../context/SelectionProvider/SelectionProvider.cjs');
9
- var MenuPopup_module = require('./MenuPopup.module.scss.cjs');
9
+ var MenuPopup_module = require('./MenuPopup.module.css.cjs');
10
10
  function _interopDefault(e) {
11
11
  return e && e.__esModule ? e : {
12
12
  default: e
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var styles = {
4
- "menuPopup": "MenuPopup-module_menuPopup__UVgnP"
4
+ "menuPopup": "MenuPopup-module_menuPopup__QgGEa"
5
5
  };
6
6
  module.exports = styles;
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+
3
+ var tslib = require('tslib');
4
+ var React = require('react');
5
+ var reactDom = require('@floating-ui/react-dom');
6
+ var classnames = require('classnames');
7
+ var reactFocusOn = require('react-focus-on');
8
+ var MenuTriggerProvider = require('../../context/MenuTriggerProvider/MenuTriggerProvider.cjs');
9
+ require('../../context/SelectionProvider/SelectionProvider.cjs');
10
+ var MenuPopup_module = require('./MenuPopup.module.css.cjs');
11
+ function _interopDefault(e) {
12
+ return e && e.__esModule ? e : {
13
+ default: e
14
+ };
15
+ }
16
+ var React__default = /*#__PURE__*/_interopDefault(React);
17
+ var classnames__default = /*#__PURE__*/_interopDefault(classnames);
18
+
19
+ /** This is a popup primitive that can be used with the FilterMultiSelect when there are overflow issues with the original implementation. This uses the floating-ui */
20
+ var ResponsiveMenuPopup = function (_a) {
21
+ var children = _a.children,
22
+ _b = _a.floatingConfig,
23
+ floatingConfig = _b === void 0 ? {
24
+ placement: 'bottom-start',
25
+ strategy: 'absolute',
26
+ whileElementsMounted: reactDom.autoUpdate,
27
+ shouldFlip: true,
28
+ shouldResize: true
29
+ } : _b,
30
+ classNameOverride = _a.classNameOverride,
31
+ isLoading = _a.isLoading,
32
+ loadingSkeleton = _a.loadingSkeleton,
33
+ restProps = tslib.__rest(_a, ["children", "floatingConfig", "classNameOverride", "isLoading", "loadingSkeleton"]);
34
+ var _c = React.useState(null),
35
+ floatingElement = _c[0],
36
+ setFloatingElement = _c[1];
37
+ var _d = MenuTriggerProvider.useMenuTriggerContext(),
38
+ menuTriggerState = _d.menuTriggerState,
39
+ buttonRef = _d.buttonRef;
40
+ var referenceElement = buttonRef.current;
41
+ var _e = reactDom.useFloating(tslib.__assign({
42
+ elements: {
43
+ reference: referenceElement,
44
+ floating: floatingElement
45
+ },
46
+ middleware: [reactDom.offset(6), floatingConfig.shouldFlip && reactDom.autoPlacement({
47
+ allowedPlacements: ['bottom-start', 'top-start']
48
+ }), floatingConfig.shouldResize && reactDom.size({
49
+ apply: function (_a) {
50
+ var availableHeight = _a.availableHeight,
51
+ elements = _a.elements;
52
+ Object.assign(elements.floating.style, {
53
+ maxHeight: Math.max(250, Math.min(availableHeight - 12, 500)) + 'px'
54
+ });
55
+ }
56
+ })]
57
+ }, floatingConfig)),
58
+ floatingStyles = _e.floatingStyles,
59
+ update = _e.update;
60
+ var handleReturnFocus = function () {
61
+ requestAnimationFrame(function () {
62
+ var _a;
63
+ (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
64
+ });
65
+ };
66
+ React.useEffect(function () {
67
+ var _a;
68
+ if (floatingElement && referenceElement) {
69
+ (_a = floatingElement.showPopover) === null || _a === void 0 ? void 0 : _a.call(floatingElement);
70
+ update();
71
+ }
72
+ }, [floatingElement, referenceElement, update]);
73
+ return menuTriggerState.isOpen ? React__default.default.createElement(reactFocusOn.FocusOn, {
74
+ enabled: menuTriggerState.isOpen,
75
+ scrollLock: true,
76
+ returnFocus: false,
77
+ onClickOutside: menuTriggerState.close,
78
+ onEscapeKey: menuTriggerState.close,
79
+ onDeactivation: handleReturnFocus
80
+ }, React__default.default.createElement("div", tslib.__assign({
81
+ ref: setFloatingElement,
82
+ style: floatingStyles,
83
+ className: classnames__default.default(MenuPopup_module.menuPopup, classNameOverride),
84
+ role: "dialog",
85
+ "aria-modal": "true",
86
+ // @ts-expect-error: popover is valid in supported browsers
87
+ popover: "manual"
88
+ }, restProps), isLoading && loadingSkeleton ? loadingSkeleton : children)) : React__default.default.createElement(React__default.default.Fragment, null);
89
+ };
90
+ ResponsiveMenuPopup.displayName = 'FilterMultiSelect.ResponsiveMenuPopup';
91
+ exports.ResponsiveMenuPopup = ResponsiveMenuPopup;
@@ -1,4 +1,4 @@
1
- import { __assign } from 'tslib';
1
+ import { __rest, __assign } from 'tslib';
2
2
  import React from 'react';
3
3
  import { MenuTriggerProvider, MenuTriggerConsumer } from './context/MenuTriggerProvider/MenuTriggerProvider.mjs';
4
4
  import { SelectionProvider, SelectionConsumer } from './context/SelectionProvider/SelectionProvider.mjs';
@@ -8,6 +8,7 @@ import { LoadMoreButton } from './subcomponents/LoadMoreButton/LoadMoreButton.mj
8
8
  import { MenuFooter } from './subcomponents/MenuLayout/MenuFooter/MenuFooter.mjs';
9
9
  import { MenuLoadingSkeleton } from './subcomponents/MenuLayout/MenuLoadingSkeleton/MenuLoadingSkeleton.mjs';
10
10
  import { MenuPopup } from './subcomponents/MenuPopup/MenuPopup.mjs';
11
+ import { ResponsiveMenuPopup } from './subcomponents/MenuPopup/ResponsiveMenuPopup.mjs';
11
12
  import { MultiSelectOption } from './subcomponents/MultiSelectOption/MultiSelectOption.mjs';
12
13
  import { NoResults } from './subcomponents/NoResults/NoResults.mjs';
13
14
  import { SearchInput } from './subcomponents/SearchInput/SearchInput.mjs';
@@ -20,6 +21,7 @@ const FilterMultiSelect = /*#__PURE__*/function () {
20
21
  const FilterMultiSelect = function (_a) {
21
22
  var trigger = _a.trigger,
22
23
  children = _a.children,
24
+ customMenuPopup = _a.customMenuPopup,
23
25
  isOpen = _a.isOpen,
24
26
  defaultOpen = _a.defaultOpen,
25
27
  onOpenChange = _a.onOpenChange,
@@ -34,17 +36,19 @@ const FilterMultiSelect = /*#__PURE__*/function () {
34
36
  selectionMode = _b === void 0 ? 'multiple' : _b,
35
37
  onSearchInputChange = _a.onSearchInputChange,
36
38
  triggerRef = _a.triggerRef,
37
- className = _a.className;
39
+ className = _a.className,
40
+ restProps = __rest(_a, ["trigger", "children", "customMenuPopup", "isOpen", "defaultOpen", "onOpenChange", "isLoading", "loadingSkeleton", "label", "items", "selectedKeys", "defaultSelectedKeys", "onSelectionChange", "selectionMode", "onSearchInputChange", "triggerRef", "className"]);
41
+ var MenuComponent = customMenuPopup !== null && customMenuPopup !== void 0 ? customMenuPopup : MenuPopup;
38
42
  var menuTriggerProps = {
39
43
  isOpen: isOpen,
40
44
  defaultOpen: defaultOpen,
41
45
  onOpenChange: onOpenChange,
42
46
  triggerRef: triggerRef
43
47
  };
44
- var menuPopupProps = {
48
+ var menuPopupProps = __assign({
45
49
  isLoading: isLoading,
46
50
  loadingSkeleton: loadingSkeleton
47
- };
51
+ }, restProps);
48
52
  var disabledKeys = new Set(items === null || items === void 0 ? void 0 : items.filter(function (item) {
49
53
  return item.isDisabled === true;
50
54
  }).map(function (disabledItem) {
@@ -62,7 +66,9 @@ const FilterMultiSelect = /*#__PURE__*/function () {
62
66
  };
63
67
  return /*#__PURE__*/React.createElement(MenuTriggerProvider, __assign({}, menuTriggerProps), /*#__PURE__*/React.createElement("div", {
64
68
  className: className
65
- }, /*#__PURE__*/React.createElement(MenuTriggerConsumer, null, trigger), /*#__PURE__*/React.createElement(MenuPopup, __assign({}, menuPopupProps), /*#__PURE__*/React.createElement(SelectionProvider, __assign({}, selectionProps), /*#__PURE__*/React.createElement(SelectionConsumer, null, children)))));
69
+ }, /*#__PURE__*/React.createElement(MenuTriggerConsumer, null, trigger), /*#__PURE__*/React.createElement(MenuComponent, __assign({
70
+ "aria-label": label
71
+ }, menuPopupProps), /*#__PURE__*/React.createElement(SelectionProvider, __assign({}, selectionProps), /*#__PURE__*/React.createElement(SelectionConsumer, null, children)))));
66
72
  };
67
73
  FilterMultiSelect.displayName = 'FilterMultiSelect';
68
74
  FilterMultiSelect.TriggerButton = FilterTriggerButton;
@@ -79,6 +85,7 @@ const FilterMultiSelect = /*#__PURE__*/function () {
79
85
  FilterMultiSelect.MenuLoadingSkeleton = MenuLoadingSkeleton;
80
86
  FilterMultiSelect.LoadMoreButton = LoadMoreButton;
81
87
  FilterMultiSelect.NoResults = NoResults;
88
+ FilterMultiSelect.ResponsiveMenuPopup = ResponsiveMenuPopup;
82
89
  return FilterMultiSelect;
83
90
  }();
84
91
  export { FilterMultiSelect };
@@ -2,7 +2,7 @@ import { __assign, __spreadArray } from 'tslib';
2
2
  import React, { useState, useEffect } from 'react';
3
3
  import classnames from 'classnames';
4
4
  import { useSelectionContext } from '../../context/SelectionProvider/SelectionProvider.mjs';
5
- import styles from './ListBox.module.scss.mjs';
5
+ import styles from './ListBox.module.css.mjs';
6
6
  var getItemsFromKeys = function (items, keys) {
7
7
  var itemKeys = Array.from(keys);
8
8
  return itemKeys.reduce(function (acc, itemKey) {
@@ -0,0 +1,7 @@
1
+ var styles = {
2
+ "listBox": "ListBox-module_listBox__HBScm",
3
+ "overflown": "ListBox-module_overflown__PdKED",
4
+ "hidden": "ListBox-module_hidden__mO-oL",
5
+ "noResultsWrapper": "ListBox-module_noResultsWrapper__RnMj0"
6
+ };
7
+ export { styles as default };
@@ -4,7 +4,7 @@ import { FocusScope } from '@react-aria/focus';
4
4
  import { useOverlay, DismissButton } from '@react-aria/overlays';
5
5
  import { useMenuTriggerContext } from '../../context/MenuTriggerProvider/MenuTriggerProvider.mjs';
6
6
  import '../../context/SelectionProvider/SelectionProvider.mjs';
7
- import styles from './MenuPopup.module.scss.mjs';
7
+ import styles from './MenuPopup.module.css.mjs';
8
8
  const MenuPopup = /*#__PURE__*/function () {
9
9
  const MenuPopup = function (_a) {
10
10
  var isLoading = _a.isLoading,
@@ -0,0 +1,4 @@
1
+ var styles = {
2
+ "menuPopup": "MenuPopup-module_menuPopup__QgGEa"
3
+ };
4
+ export { styles as default };
@@ -0,0 +1,85 @@
1
+ import { __rest, __assign } from 'tslib';
2
+ import React, { useState, useEffect } from 'react';
3
+ import { useFloating, offset, autoPlacement, size, autoUpdate } from '@floating-ui/react-dom';
4
+ import classnames from 'classnames';
5
+ import { FocusOn } from 'react-focus-on';
6
+ import { useMenuTriggerContext } from '../../context/MenuTriggerProvider/MenuTriggerProvider.mjs';
7
+ import '../../context/SelectionProvider/SelectionProvider.mjs';
8
+ import styles from './MenuPopup.module.css.mjs';
9
+
10
+ /** This is a popup primitive that can be used with the FilterMultiSelect when there are overflow issues with the original implementation. This uses the floating-ui */
11
+ const ResponsiveMenuPopup = /*#__PURE__*/function () {
12
+ const ResponsiveMenuPopup = function (_a) {
13
+ var children = _a.children,
14
+ _b = _a.floatingConfig,
15
+ floatingConfig = _b === void 0 ? {
16
+ placement: 'bottom-start',
17
+ strategy: 'absolute',
18
+ whileElementsMounted: autoUpdate,
19
+ shouldFlip: true,
20
+ shouldResize: true
21
+ } : _b,
22
+ classNameOverride = _a.classNameOverride,
23
+ isLoading = _a.isLoading,
24
+ loadingSkeleton = _a.loadingSkeleton,
25
+ restProps = __rest(_a, ["children", "floatingConfig", "classNameOverride", "isLoading", "loadingSkeleton"]);
26
+ var _c = useState(null),
27
+ floatingElement = _c[0],
28
+ setFloatingElement = _c[1];
29
+ var _d = useMenuTriggerContext(),
30
+ menuTriggerState = _d.menuTriggerState,
31
+ buttonRef = _d.buttonRef;
32
+ var referenceElement = buttonRef.current;
33
+ var _e = useFloating(__assign({
34
+ elements: {
35
+ reference: referenceElement,
36
+ floating: floatingElement
37
+ },
38
+ middleware: [offset(6), floatingConfig.shouldFlip && autoPlacement({
39
+ allowedPlacements: ['bottom-start', 'top-start']
40
+ }), floatingConfig.shouldResize && size({
41
+ apply: function (_a) {
42
+ var availableHeight = _a.availableHeight,
43
+ elements = _a.elements;
44
+ Object.assign(elements.floating.style, {
45
+ maxHeight: Math.max(250, Math.min(availableHeight - 12, 500)) + 'px'
46
+ });
47
+ }
48
+ })]
49
+ }, floatingConfig)),
50
+ floatingStyles = _e.floatingStyles,
51
+ update = _e.update;
52
+ var handleReturnFocus = function () {
53
+ requestAnimationFrame(function () {
54
+ var _a;
55
+ (_a = buttonRef.current) === null || _a === void 0 ? void 0 : _a.focus();
56
+ });
57
+ };
58
+ useEffect(function () {
59
+ var _a;
60
+ if (floatingElement && referenceElement) {
61
+ (_a = floatingElement.showPopover) === null || _a === void 0 ? void 0 : _a.call(floatingElement);
62
+ update();
63
+ }
64
+ }, [floatingElement, referenceElement, update]);
65
+ return menuTriggerState.isOpen ? (/*#__PURE__*/React.createElement(FocusOn, {
66
+ enabled: menuTriggerState.isOpen,
67
+ scrollLock: true,
68
+ returnFocus: false,
69
+ onClickOutside: menuTriggerState.close,
70
+ onEscapeKey: menuTriggerState.close,
71
+ onDeactivation: handleReturnFocus
72
+ }, /*#__PURE__*/React.createElement("div", __assign({
73
+ ref: setFloatingElement,
74
+ style: floatingStyles,
75
+ className: classnames(styles.menuPopup, classNameOverride),
76
+ role: "dialog",
77
+ "aria-modal": "true",
78
+ // @ts-expect-error: popover is valid in supported browsers
79
+ popover: "manual"
80
+ }, restProps), isLoading && loadingSkeleton ? loadingSkeleton : children))) : (/*#__PURE__*/React.createElement(React.Fragment, null));
81
+ };
82
+ ResponsiveMenuPopup.displayName = 'FilterMultiSelect.ResponsiveMenuPopup';
83
+ return ResponsiveMenuPopup;
84
+ }();
85
+ export { ResponsiveMenuPopup };