@televet/kibble-ui 1.12.14 → 1.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (24) hide show
  1. package/build/components/Forms/FormControl/formControl.argTypes.d.ts +13 -165
  2. package/build/components/Forms/Select/select.component.d.ts +5 -4
  3. package/build/components/Overlay/Menu/components/MenuButton/menuButton.argTypes.d.ts +9 -0
  4. package/build/components/Overlay/Menu/{Components → components}/MenuButton/menuButton.component.d.ts +2 -2
  5. package/build/components/Overlay/Menu/components/MenuContainer/menuContainer.argTypes.d.ts +14 -0
  6. package/build/components/Overlay/Menu/components/MenuContainer/menuContainer.component.d.ts +9 -0
  7. package/build/components/Overlay/Menu/components/MenuItem/menuItem.argTypes.d.ts +12 -0
  8. package/build/components/Overlay/Menu/{Components → components}/MenuItem/menuItem.component.d.ts +4 -2
  9. package/build/components/Overlay/Menu/components/MenuList/menuList.argTypes.d.ts +16 -0
  10. package/build/components/Overlay/Menu/components/MenuList/menuList.component.d.ts +21 -0
  11. package/build/components/Overlay/Menu/{Components → components}/MenuSearchBar/menuSearchBar.component.d.ts +1 -1
  12. package/build/components/Overlay/Menu/index.d.ts +5 -5
  13. package/build/components/Overlay/Menu/menu.argTypes.d.ts +78 -0
  14. package/build/components/Overlay/Menu/menu.component.d.ts +8 -9
  15. package/build/components/Overlay/Menu/menu.context.d.ts +7 -5
  16. package/build/components/Overlay/Menu/menu.storiesData.d.ts +4 -0
  17. package/build/index.js +111 -85
  18. package/build/index.js.map +1 -1
  19. package/build/utils/stories.d.ts +8 -2
  20. package/package.json +2 -2
  21. package/build/components/Overlay/Menu/Components/MenuContainer/menuContainer.component.d.ts +0 -8
  22. package/build/components/Overlay/Menu/Components/MenuList/menuList.component.d.ts +0 -19
  23. /package/build/components/Overlay/Menu/{Components → components}/MenuOptionGroup/menuOptionGroup.component.d.ts +0 -0
  24. /package/build/components/Overlay/Menu/{Components → components}/MenuSelectAllButtons/menuSelectAllButtons.component.d.ts +0 -0
package/build/index.js CHANGED
@@ -4183,19 +4183,24 @@ var MenuContext = React.createContext({
4183
4183
  });
4184
4184
  var useMenuContext = function () { return React.useContext(MenuContext); };
4185
4185
  var MenuProvider = function (_a) {
4186
- var menuItems = _a.menuItems, onMenuClose = _a.onMenuClose, children = _a.children;
4186
+ var menuItems = _a.menuItems, onClose = _a.onClose, children = _a.children;
4187
4187
  var _b = __read(React.useState(menuItems || []), 2), filteredMenuItems = _b[0], setFilteredMenuItems = _b[1];
4188
4188
  var _c = __read(React.useState(null), 2), groups = _c[0], setGroups = _c[1];
4189
4189
  var _d = __read(React.useState(-1), 2), focusedItemIndex = _d[0], setFocusedItemIndex = _d[1];
4190
4190
  var searchInputRef = React.useRef(null);
4191
4191
  var menuItemRefs = React.useRef([]);
4192
4192
  var handleOnClose = React.useCallback(function () {
4193
- var selectedItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.isSelected === true; }).map(function (item) { return item.value; });
4193
+ var selectedItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.isSelected === true; });
4194
4194
  setFocusedItemIndex(-1);
4195
- if (onMenuClose) {
4196
- onMenuClose(selectedItems);
4195
+ if (onClose) {
4196
+ onClose(selectedItems);
4197
4197
  }
4198
- }, [filteredMenuItems, onMenuClose]);
4198
+ }, [filteredMenuItems, onClose]);
4199
+ React.useEffect(function () {
4200
+ if (menuItems === null || menuItems === void 0 ? void 0 : menuItems.length) {
4201
+ setFilteredMenuItems(menuItems);
4202
+ }
4203
+ }, [menuItems]);
4199
4204
  return (React__default["default"].createElement(MenuContext.Provider, { value: {
4200
4205
  allMenuItems: menuItems,
4201
4206
  filteredMenuItems: filteredMenuItems,
@@ -4211,7 +4216,7 @@ var MenuProvider = function (_a) {
4211
4216
  };
4212
4217
 
4213
4218
  var MenuContainer = function (_a) {
4214
- var children = _a.children; _a.onMenuClose; var rest = __rest(_a, ["children", "onMenuClose"]);
4219
+ var children = _a.children; _a.onClose; var rest = __rest(_a, ["children", "onClose"]);
4215
4220
  var handleOnClose = useMenuContext().handleOnClose;
4216
4221
  return (React__default["default"].createElement(react.Menu, __assign({ onClose: handleOnClose }, rest), children));
4217
4222
  };
@@ -4257,31 +4262,33 @@ var MenuConfig = {
4257
4262
  };
4258
4263
 
4259
4264
  var MenuItem = function (_a) {
4260
- var isMultiSelect = _a.isMultiSelect, canSelectAll = _a.canSelectAll, children = _a.children, _b = _a.closeOnSelect, closeOnSelect = _b === void 0 ? !isMultiSelect : _b; _a.groupLabel; var _c = _a.handleKeyboardNavigation, handleKeyboardNavigation = _c === void 0 ? function () { } : _c, isDisabled = _a.isDisabled, isSelected = _a.isSelected, _d = _a.itemIndex, itemIndex = _d === void 0 ? '0' : _d, label = _a.label, leftElement = _a.leftElement, menuItemRefs = _a.menuItemRefs, onSelectItem = _a.onSelectItem, value = _a.value, rest = __rest(_a, ["isMultiSelect", "canSelectAll", "children", "closeOnSelect", "groupLabel", "handleKeyboardNavigation", "isDisabled", "isSelected", "itemIndex", "label", "leftElement", "menuItemRefs", "onSelectItem", "value"]);
4261
- // TODO: Add truncated text functionality with tooltip on hover
4265
+ var isMultiSelect = _a.isMultiSelect, canSelectAll = _a.canSelectAll, children = _a.children, _b = _a.closeOnSelect, closeOnSelect = _b === void 0 ? !isMultiSelect : _b; _a.groupLabel; var _c = _a.handleKeyboardNavigation, handleKeyboardNavigation = _c === void 0 ? function () { } : _c, isDisabled = _a.isDisabled, isSelected = _a.isSelected, _d = _a.itemIndex, itemIndex = _d === void 0 ? '0' : _d, label = _a.label, leftElement = _a.leftElement, menuItemRefs = _a.menuItemRefs, onSelect = _a.onSelect, shouldRetainSelection = _a.shouldRetainSelection, shouldTruncateText = _a.shouldTruncateText, value = _a.value, rest = __rest(_a, ["isMultiSelect", "canSelectAll", "children", "closeOnSelect", "groupLabel", "handleKeyboardNavigation", "isDisabled", "isSelected", "itemIndex", "label", "leftElement", "menuItemRefs", "onSelect", "shouldRetainSelection", "shouldTruncateText", "value"]);
4262
4266
  var colors = useTheme().colors;
4263
4267
  var onClose = react.useMenuState().onClose;
4264
4268
  var handleSelect = React.useCallback(function () {
4265
4269
  if (isDisabled)
4266
4270
  return;
4267
- if (value && onSelectItem) {
4268
- onSelectItem(value);
4271
+ if (value && onSelect) {
4272
+ onSelect({
4273
+ label: label,
4274
+ leftElement: leftElement,
4275
+ value: value,
4276
+ });
4269
4277
  }
4270
4278
  if (closeOnSelect) {
4271
4279
  onClose();
4272
4280
  }
4273
- }, [value, onSelectItem, onClose, closeOnSelect, isDisabled]);
4274
- return (React__default["default"].createElement(react.Box, __assign({}, MenuItemConfig, { className: "menu-list__item", onClick: handleSelect, onKeyDown: function (e) { return handleKeyboardNavigation(e, false); }, tabIndex: parseInt(canSelectAll ? (itemIndex += 2) : itemIndex), ref: function (el) {
4281
+ }, [value, onSelect, onClose, closeOnSelect, isDisabled, label, leftElement]);
4282
+ return (React__default["default"].createElement(react.Box, __assign({}, MenuItemConfig, { className: "MenuList__Item", onClick: handleSelect, onKeyDown: function (e) { return handleKeyboardNavigation(e, false); }, tabIndex: parseInt(canSelectAll ? (itemIndex += 2) : itemIndex), ref: function (el) {
4275
4283
  return menuItemRefs && itemIndex ? (menuItemRefs.current[parseInt(itemIndex)] = el) : null;
4276
4284
  },
4277
4285
  // @ts-ignore
4278
- disabled: isDisabled }, rest), children ? (children) : (React__default["default"].createElement(react.HStack, { spacing: "12px", minH: "21px" },
4279
- isMultiSelect && (React__default["default"].createElement(react.Box, { width: "12px", height: "12px", borderRadius: "12px", position: "relative", background: colors.background.grayDark, className: "menu-list__item-checkbox" },
4280
- React__default["default"].createElement(react.Box, { position: "absolute", top: "-2px", left: "-2px" }, isSelected && React__default["default"].createElement(Icon, { name: "checkmarkCircle", color: "success", size: "sm" })))),
4281
- React__default["default"].createElement(react.HStack, { color: isSelected && !isMultiSelect ? colors.text.light.link : colors.text.light.default },
4282
- leftElement && React__default["default"].createElement(react.Box, { className: "menu-list__item-leftElement" }, leftElement),
4283
- React__default["default"].createElement(react.Box, { className: "menu-list__item-label" },
4284
- React__default["default"].createElement(TruncatedText, { textContent: label || '', noOfLines: 1 })))))));
4286
+ disabled: isDisabled }, rest), children ? (children) : (React__default["default"].createElement(react.HStack, { alignItems: "center", spacing: "12px", minH: "21px" },
4287
+ isMultiSelect && (React__default["default"].createElement(react.Box, { className: "MenuList__ItemCheckbox" },
4288
+ React__default["default"].createElement(Checkbox, { variant: "round", isChecked: isSelected, size: "sm" }))),
4289
+ React__default["default"].createElement(react.HStack, { color: isSelected && shouldRetainSelection && !isMultiSelect ? colors.text.light.link : colors.text.light.default },
4290
+ leftElement && React__default["default"].createElement(react.Box, { className: "MenuList__ItemLeftElement" }, leftElement),
4291
+ React__default["default"].createElement(react.Box, { className: "MenuList__ItemLabel" }, shouldTruncateText ? React__default["default"].createElement(TruncatedText, { textContent: label || '', noOfLines: 1 }) : React__default["default"].createElement(Text, null, label)))))));
4285
4292
  };
4286
4293
 
4287
4294
  var MenuSearchBar = function (_a) {
@@ -4299,23 +4306,23 @@ var MenuSearchBar = function (_a) {
4299
4306
  onSearchCallback(e);
4300
4307
  }
4301
4308
  }, [menuItems, onSearchCallback, setFilteredMenuItems]);
4302
- return (React__default["default"].createElement(WrappedTextInput, { className: "menu-list__searchbar", placeholder: placeholder, onChange: handleSearch, mt: 1, onKeyDown: function (e) { return handleKeyboardNavigation(e, true); }, size: "sm", ref: searchInputRef }));
4309
+ return (React__default["default"].createElement(WrappedTextInput, { className: "MenuList__SearchBar", placeholder: placeholder, onChange: handleSearch, mt: 1, onKeyDown: function (e) { return handleKeyboardNavigation(e, true); }, size: "sm", ref: searchInputRef }));
4303
4310
  };
4304
4311
 
4305
4312
  var MenuSelectAllButtons = function (_a) {
4306
4313
  var groupName = _a.groupName, handleToggleAllItems = _a.handleToggleAllItems, hasSelectedItems = _a.hasSelectedItems, isGrouped = _a.isGrouped;
4307
4314
  if (isGrouped) {
4308
- return (React__default["default"].createElement(react.Box, { textAlign: "right", w: "50%", className: "menu-list-item__select-all-button" }, hasSelectedItems ? (React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all")) : (React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: false }); } }, "Select all"))));
4315
+ return (React__default["default"].createElement(react.Box, { textAlign: "right", w: "50%", className: "MenuListItem__SelectAllButton" }, hasSelectedItems ? (React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all")) : (React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ groupName: groupName, clear: false }); } }, "Select all"))));
4309
4316
  }
4310
- return (React__default["default"].createElement(react.Box, { mt: "8px", className: "menu-list__select-all-buttons" },
4317
+ return (React__default["default"].createElement(react.Box, { mt: "8px", className: "MenuList__SelectAllButtons" },
4311
4318
  React__default["default"].createElement(react.Flex, { justifyContent: "space-between" },
4312
4319
  React__default["default"].createElement(Button, { variant: "ghost", size: "xs", onClick: function () { return handleToggleAllItems({ clear: false }); } }, "Select all"),
4313
4320
  React__default["default"].createElement(Button, { variant: "ghostNeutral", iconName: "arrowCircle", size: "xs", onClick: function () { return handleToggleAllItems({ clear: true }); }, isDisabled: !hasSelectedItems }, "Clear all"))));
4314
4321
  };
4315
4322
 
4316
4323
  var MenuList = function (_a) {
4317
- var _b = _a.canSelectAll, canSelectAll = _b === void 0 ? false : _b, _c = _a.canSelectGroups, canSelectGroups = _c === void 0 ? false : _c, children = _a.children, _d = _a.isGrouped, isGrouped = _d === void 0 ? false : _d, isMatchWidthSet = _a.isMatchWidthSet, _e = _a.isMultiSelect, isMultiSelect = _e === void 0 ? false : _e, _f = _a.isSearchable, isSearchable = _f === void 0 ? false : _f, menuItems = _a.menuItems, onMenuItemSelect = _a.onMenuItemSelect, onMenuItemSelectAll = _a.onMenuItemSelectAll, searchPlaceholder = _a.searchPlaceholder, _g = _a.minW, minW = _g === void 0 ? '240px' : _g, maxW = _a.maxW, _h = _a.maxH, maxH = _h === void 0 ? '480px' : _h, rest = __rest(_a, ["canSelectAll", "canSelectGroups", "children", "isGrouped", "isMatchWidthSet", "isMultiSelect", "isSearchable", "menuItems", "onMenuItemSelect", "onMenuItemSelectAll", "searchPlaceholder", "minW", "maxW", "maxH"]);
4318
- var _j = useMenuContext(), filteredMenuItems = _j.filteredMenuItems, setFilteredMenuItems = _j.setFilteredMenuItems, groups = _j.groups, setGroups = _j.setGroups, focusedItemIndex = _j.focusedItemIndex, setFocusedItemIndex = _j.setFocusedItemIndex, searchInputRef = _j.searchInputRef, menuItemRefs = _j.menuItemRefs;
4324
+ var _b = _a.canSelectAll, canSelectAll = _b === void 0 ? false : _b, _c = _a.canSelectGroups, canSelectGroups = _c === void 0 ? false : _c, children = _a.children, _d = _a.isGrouped, isGrouped = _d === void 0 ? false : _d, isMatchWidthSet = _a.isMatchWidthSet, _e = _a.isMultiSelect, isMultiSelect = _e === void 0 ? false : _e, _f = _a.isSearchable, isSearchable = _f === void 0 ? false : _f, menuItems = _a.menuItems, onSelect = _a.onSelect, onSelectAll = _a.onSelectAll, searchPlaceholder = _a.searchPlaceholder, shouldRetainSelection = _a.shouldRetainSelection, _g = _a.shouldTruncateText, shouldTruncateText = _g === void 0 ? true : _g, _h = _a.minW, minW = _h === void 0 ? '240px' : _h, maxW = _a.maxW, _j = _a.maxH, maxH = _j === void 0 ? '480px' : _j, rest = __rest(_a, ["canSelectAll", "canSelectGroups", "children", "isGrouped", "isMatchWidthSet", "isMultiSelect", "isSearchable", "menuItems", "onSelect", "onSelectAll", "searchPlaceholder", "shouldRetainSelection", "shouldTruncateText", "minW", "maxW", "maxH"]);
4325
+ var _k = useMenuContext(), filteredMenuItems = _k.filteredMenuItems, setFilteredMenuItems = _k.setFilteredMenuItems, groups = _k.groups, setGroups = _k.setGroups, focusedItemIndex = _k.focusedItemIndex, setFocusedItemIndex = _k.setFocusedItemIndex, searchInputRef = _k.searchInputRef, menuItemRefs = _k.menuItemRefs;
4319
4326
  var focusNextListItem = React.useCallback(function (direction) {
4320
4327
  var _a, _b;
4321
4328
  if (!(menuItemRefs === null || menuItemRefs === void 0 ? void 0 : menuItemRefs.current))
@@ -4373,10 +4380,10 @@ var MenuList = function (_a) {
4373
4380
  e.target.click();
4374
4381
  }
4375
4382
  }, [focusNextListItem, menuItemRefs]);
4376
- var handleToggleSingleItem = React.useCallback(function (selectedValue) {
4383
+ var handleToggleSingleItem = React.useCallback(function (selectedValue, itemOnSelect) {
4377
4384
  if (filteredMenuItems) {
4378
4385
  var _filteredMenuItemsCopy = __spreadArray([], __read(filteredMenuItems), false);
4379
- var selectedItem = _filteredMenuItemsCopy.find(function (item) { return item.value === selectedValue; });
4386
+ var selectedItem = _filteredMenuItemsCopy.find(function (item) { return item.value === selectedValue.value; });
4380
4387
  if (!isMultiSelect) {
4381
4388
  _filteredMenuItemsCopy.filter(function (item) { return item.isSelected === true; }).map(function (item) { return (item.isSelected = false); });
4382
4389
  }
@@ -4384,11 +4391,15 @@ var MenuList = function (_a) {
4384
4391
  selectedItem.isSelected = !selectedItem.isSelected;
4385
4392
  }
4386
4393
  setFilteredMenuItems(_filteredMenuItemsCopy);
4387
- if (onMenuItemSelect && selectedItem) {
4388
- onMenuItemSelect(selectedItem);
4394
+ var allSelectedItems = _filteredMenuItemsCopy.filter(function (item) { return item.isSelected; });
4395
+ if (onSelect && selectedItem) {
4396
+ onSelect(selectedItem, allSelectedItems);
4397
+ }
4398
+ if (itemOnSelect && selectedItem) {
4399
+ itemOnSelect(selectedItem, allSelectedItems);
4389
4400
  }
4390
4401
  }
4391
- }, [filteredMenuItems, isMultiSelect, onMenuItemSelect, setFilteredMenuItems]);
4402
+ }, [filteredMenuItems, isMultiSelect, onSelect, setFilteredMenuItems]);
4392
4403
  var handleToggleAllItems = React.useCallback(function (_a) {
4393
4404
  var groupName = _a.groupName, _b = _a.clear, clear = _b === void 0 ? false : _b;
4394
4405
  if (filteredMenuItems) {
@@ -4411,11 +4422,11 @@ var MenuList = function (_a) {
4411
4422
  }
4412
4423
  });
4413
4424
  setFilteredMenuItems(_filteredMenuItemsCopy);
4414
- if (onMenuItemSelectAll) {
4415
- onMenuItemSelectAll(_filteredMenuItemsCopy.filter(function (item) { return item.isSelected; }));
4425
+ if (onSelectAll) {
4426
+ onSelectAll(_filteredMenuItemsCopy.filter(function (item) { return item.isSelected; }));
4416
4427
  }
4417
4428
  }
4418
- }, [filteredMenuItems, onMenuItemSelectAll, setFilteredMenuItems]);
4429
+ }, [filteredMenuItems, onSelectAll, setFilteredMenuItems]);
4419
4430
  React.useEffect(function () {
4420
4431
  if (isGrouped) {
4421
4432
  var groupNames = __spreadArray([], __read(new Set(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item) { return item.groupLabel; }))), false);
@@ -4424,44 +4435,50 @@ var MenuList = function (_a) {
4424
4435
  }
4425
4436
  }
4426
4437
  }, [filteredMenuItems, isGrouped, setGroups]);
4438
+ var getMenuItem = React.useCallback(function (item, index) { return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelect: function (selectedItem) { return handleToggleSingleItem(selectedItem, item.onSelect); }, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect, shouldRetainSelection: shouldRetainSelection, shouldTruncateText: shouldTruncateText })); }, [
4439
+ handleKeyboardNavigation,
4440
+ handleToggleSingleItem,
4441
+ isMultiSelect,
4442
+ menuItemRefs,
4443
+ shouldRetainSelection,
4444
+ shouldTruncateText,
4445
+ ]);
4446
+ if (!isMatchWidthSet) {
4447
+ maxW = '320px';
4448
+ }
4427
4449
  // Return default Chakra menu if user passes in custom child elements
4428
4450
  if (children) {
4429
4451
  return React__default["default"].createElement(react.MenuList, __assign({}, rest), children);
4430
4452
  }
4431
- if (!isMatchWidthSet) {
4432
- maxW = '320px';
4433
- }
4434
- return (React__default["default"].createElement(react.MenuList, __assign({}, rest, { maxW: maxW, maxH: maxH, minW: minW, overflow: "hidden auto" }),
4435
- (isSearchable || (canSelectAll && isMultiSelect)) && (React__default["default"].createElement(react.Box, { className: "menu-list__header", m: "0 12px 8px" },
4453
+ return (React__default["default"].createElement(react.MenuList, __assign({ className: "MeuList" }, rest, { maxW: maxW, maxH: maxH, minW: minW, overflow: "hidden auto" }),
4454
+ (isSearchable || (canSelectAll && isMultiSelect)) && (React__default["default"].createElement(react.Box, { className: "MenuList__Header", m: "0 12px 8px" },
4436
4455
  isSearchable && (React__default["default"].createElement(MenuSearchBar, { handleKeyboardNavigation: handleKeyboardNavigation, menuItems: menuItems || [], searchInputRef: searchInputRef, setFilteredMenuItems: setFilteredMenuItems, placeholder: searchPlaceholder })),
4437
4456
  canSelectAll && isMultiSelect && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.find(function (item) { return item.isSelected; })), isGrouped: false })))),
4438
- React__default["default"].createElement(react.Box, { className: "menu-list__body" }, isGrouped
4439
- ? groups === null || groups === void 0 ? void 0 : groups.map(function (groupName) {
4440
- var menuItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.groupLabel === groupName; });
4441
- return (React__default["default"].createElement(react.MenuOptionGroup, { key: groupName, className: "menu-list__group" },
4442
- React__default["default"].createElement(react.HStack, { minH: "32px", p: "4px 12px 4px 20px", justifyContent: "space-between" },
4443
- React__default["default"].createElement(react.Box, { textAlign: "left", className: "menu-list__group-title" },
4444
- React__default["default"].createElement(Heading, { size: "xs" }, groupName)),
4445
- isMultiSelect && canSelectGroups && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(menuItems === null || menuItems === void 0 ? void 0 : menuItems.find(function (item) { return item.isSelected; })), isGrouped: true, groupName: groupName }))), menuItems === null || menuItems === void 0 ? void 0 :
4446
- menuItems.map(function (item, index) {
4447
- return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelectItem: handleToggleSingleItem, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect }));
4448
- })));
4449
- })
4450
- : filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item, index) {
4451
- return (React__default["default"].createElement(MenuItem, { handleKeyboardNavigation: handleKeyboardNavigation, isMultiSelect: isMultiSelect, isSelected: item.isSelected, itemIndex: index.toString(), key: item.value, label: item.label, leftElement: item.leftElement, menuItemRefs: menuItemRefs, onSelectItem: handleToggleSingleItem, value: item.value, children: item.children, closeOnSelect: item.closeOnSelect }));
4452
- }))));
4457
+ React__default["default"].createElement(react.Box, { className: "MenuList__Body" }, !(filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.length) ? (React__default["default"].createElement(react.Box, { textAlign: "center", display: "block", p: "12px" },
4458
+ React__default["default"].createElement(Text, { size: "sm", colorToken: "subtle" }, "No results found"))) : isGrouped ? (groups === null || groups === void 0 ? void 0 : groups.map(function (groupName) {
4459
+ var menuItems = filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.filter(function (item) { return item.groupLabel === groupName; });
4460
+ return (React__default["default"].createElement(react.MenuOptionGroup, { key: groupName, className: "MenuList__Group" },
4461
+ React__default["default"].createElement(react.HStack, { minH: "32px", p: "4px 12px 4px 20px", justifyContent: "space-between" },
4462
+ React__default["default"].createElement(react.Box, { textAlign: "left", className: "MenuList__GroupTitle" },
4463
+ React__default["default"].createElement(Heading, { size: "xs" }, groupName)),
4464
+ isMultiSelect && canSelectGroups && (React__default["default"].createElement(MenuSelectAllButtons, { handleToggleAllItems: handleToggleAllItems, hasSelectedItems: Boolean(menuItems === null || menuItems === void 0 ? void 0 : menuItems.find(function (item) { return item.isSelected; })), isGrouped: true, groupName: groupName }))), menuItems === null || menuItems === void 0 ? void 0 :
4465
+ menuItems.map(function (item, index) {
4466
+ return getMenuItem(item, index);
4467
+ })));
4468
+ })) : (filteredMenuItems === null || filteredMenuItems === void 0 ? void 0 : filteredMenuItems.map(function (item, index) {
4469
+ return getMenuItem(item, index);
4470
+ })))));
4453
4471
  };
4454
4472
 
4455
- var Select = function (props) {
4456
- var _a;
4473
+ var Select = function (_a) {
4474
+ var options = _a.options; _a.isFieldInline; var useBrowserDefaultMenu = _a.useBrowserDefaultMenu, placeholder = _a.placeholder, listProps = _a.listProps, value = _a.value, _b = _a.shouldTruncateText, shouldTruncateText = _b === void 0 ? true : _b; _a.maxW; var size = _a.size, domProps = __rest(_a, ["options", "isFieldInline", "useBrowserDefaultMenu", "placeholder", "listProps", "value", "shouldTruncateText", "maxW", "size"]);
4457
4475
  var colors = useTheme().colors;
4458
4476
  var selectRef = React.useRef(null);
4459
- var options = props.options; props.isFieldInline; var useBrowserDefaultMenu = props.useBrowserDefaultMenu, placeholder = props.placeholder, listConfig = props.listConfig, value = props.value, domProps = __rest(props, ["options", "isFieldInline", "useBrowserDefaultMenu", "placeholder", "listConfig", "value"]);
4460
- var _b = __read(React.useState({
4477
+ var _c = __read(React.useState({
4461
4478
  label: placeholder,
4462
4479
  value: '',
4463
4480
  leftElement: null,
4464
- }), 2), selectedOption = _b[0], setSelectedOption = _b[1];
4481
+ }), 2), selectedOption = _c[0], setSelectedOption = _c[1];
4465
4482
  React.useEffect(function () {
4466
4483
  if (value) {
4467
4484
  var defaultValue = options.find(function (option) { return option.value === value; });
@@ -4470,39 +4487,48 @@ var Select = function (props) {
4470
4487
  }
4471
4488
  }
4472
4489
  }, [value, options]);
4490
+ var selectWidth = React.useMemo(function () {
4491
+ var _a;
4492
+ if (!selectRef.current) {
4493
+ return '320px';
4494
+ }
4495
+ return "".concat((_a = selectRef === null || selectRef === void 0 ? void 0 : selectRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth, "px");
4496
+ // Disables the warning for not including unused dependency in the hook array. This dependency is needed to rerender the menu list with the correct width
4497
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4498
+ }, [selectRef === null || selectRef === void 0 ? void 0 : selectRef.current]);
4473
4499
  var focusStyle = {
4474
4500
  borderWidth: '2px',
4475
4501
  borderColor: colors.border.light.focus,
4476
4502
  };
4477
4503
  if (useBrowserDefaultMenu) {
4478
- return (React__default["default"].createElement(react.Select, __assign({ value: value, placeholder: placeholder }, domProps, { _focus: __assign({}, focusStyle) }), options.map(function (option, index) { return (React__default["default"].createElement("option", { key: "options-".concat(index), value: option.value }, option.label)); })));
4504
+ return (React__default["default"].createElement(react.Select, __assign({ value: value, placeholder: placeholder }, domProps, { _focus: __assign({}, focusStyle), className: "Select" }), options.map(function (option, index) { return (React__default["default"].createElement("option", { key: "options-".concat(index), value: option.value }, option.label)); })));
4479
4505
  }
4480
4506
  var handleSelectOption = function (selectedOption) {
4481
4507
  setSelectedOption(selectedOption);
4482
- if (listConfig === null || listConfig === void 0 ? void 0 : listConfig.onSelectOption) {
4483
- listConfig === null || listConfig === void 0 ? void 0 : listConfig.onSelectOption(selectedOption);
4508
+ if (listProps === null || listProps === void 0 ? void 0 : listProps.onSelect) {
4509
+ listProps.onSelect(selectedOption);
4484
4510
  }
4485
4511
  };
4486
4512
  var handleMenuClose = function (selectedOption) {
4487
- if (listConfig === null || listConfig === void 0 ? void 0 : listConfig.onMenuClose) {
4488
- listConfig === null || listConfig === void 0 ? void 0 : listConfig.onMenuClose(selectedOption);
4513
+ if (listProps === null || listProps === void 0 ? void 0 : listProps.onClose) {
4514
+ listProps.onClose(selectedOption);
4489
4515
  }
4490
4516
  };
4491
- return (React__default["default"].createElement(MenuProvider, { menuItems: options, onMenuClose: handleMenuClose },
4517
+ var flexibleHeightProps = !shouldTruncateText ? { height: 'max-content', minH: '40px' } : {};
4518
+ return (React__default["default"].createElement(MenuProvider, { menuItems: options, onClose: handleMenuClose },
4492
4519
  React__default["default"].createElement(MenuContainer, { matchWidth: true, isLazy: true },
4493
- React__default["default"].createElement(react.Select, __assign({ as: react.MenuButton }, domProps, { _focus: __assign({}, focusStyle), ref: selectRef, onClick: function (event) { return event.stopPropagation(); } }),
4494
- React__default["default"].createElement(react.HStack, null,
4495
- (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.leftElement)
4520
+ React__default["default"].createElement(react.Select, __assign({ as: react.MenuButton, _focus: __assign({}, focusStyle), onClick: function (event) { return event.stopPropagation(); }, type: "button", className: "Select__MenuButton", ref: selectRef, size: size }, flexibleHeightProps, domProps),
4521
+ React__default["default"].createElement(react.HStack, { className: "Select__Container", justifyContent: "flex-start", alignItems: "center", textAlign: "left" },
4522
+ React__default["default"].createElement(react.Box, { className: "Select__LeftElement" }, (selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.leftElement)
4496
4523
  ? selectedOption === null || selectedOption === void 0 ? void 0 : selectedOption.leftElement
4497
- : (listConfig === null || listConfig === void 0 ? void 0 : listConfig.defaultLeftElement)
4498
- ? listConfig === null || listConfig === void 0 ? void 0 : listConfig.defaultLeftElement
4499
- : null,
4500
- React__default["default"].createElement(TruncatedText, { textContent: selectedOption.label || '', noOfLines: 1 }))),
4501
- React__default["default"].createElement(react.Portal, null,
4502
- React__default["default"].createElement(MenuList, { maxW: "".concat((_a = selectRef === null || selectRef === void 0 ? void 0 : selectRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth, "px") || '0px', isGrouped: listConfig === null || listConfig === void 0 ? void 0 : listConfig.isGrouped, isSearchable: listConfig === null || listConfig === void 0 ? void 0 : listConfig.isSearchable, menuItems: options.map(function (option) {
4503
- option.isSelected = option.value === selectedOption.value;
4504
- return option;
4505
- }), onMenuItemSelect: handleSelectOption, isMatchWidthSet: true })))));
4524
+ : (listProps === null || listProps === void 0 ? void 0 : listProps.defaultLeftElement)
4525
+ ? listProps === null || listProps === void 0 ? void 0 : listProps.defaultLeftElement
4526
+ : null),
4527
+ shouldTruncateText ? (React__default["default"].createElement(TruncatedText, { className: "Select__Text", textContent: selectedOption.label || '', noOfLines: 1 })) : (React__default["default"].createElement(Text, { className: "Select__Text" }, selectedOption.label)))),
4528
+ React__default["default"].createElement(MenuList, { maxW: selectWidth, shouldTruncateText: shouldTruncateText, isGrouped: listProps === null || listProps === void 0 ? void 0 : listProps.isGrouped, isSearchable: listProps === null || listProps === void 0 ? void 0 : listProps.isSearchable, shouldRetainSelection: true, menuItems: options.map(function (option) {
4529
+ option.isSelected = option.value === selectedOption.value;
4530
+ return option;
4531
+ }), onSelect: handleSelectOption, isMatchWidthSet: true }))));
4506
4532
  };
4507
4533
  Select.displayName = 'Select';
4508
4534
  var WrappedSelect = withFormControl(Select);
@@ -6794,24 +6820,24 @@ var MenuButton = function (_a) {
6794
6820
  return '8px';
6795
6821
  }
6796
6822
  }, [isIconButton, size]);
6797
- return (React__default["default"].createElement(react.MenuButton, __assign({ as: Button, variant: variant, size: size, position: "relative" }, rest, { p: buttonPadding, lineHeight: 0, _active: { transform: 'none' } }),
6798
- React__default["default"].createElement(react.HStack, { spacing: textSpacing, className: "menu-button__content-container" },
6823
+ return (React__default["default"].createElement(react.MenuButton, __assign({ as: Button, variant: variant, size: size, position: "relative" }, rest, { className: "MenuButton", p: buttonPadding, lineHeight: 0, _active: { transform: 'none' } }),
6824
+ React__default["default"].createElement(react.HStack, { spacing: textSpacing, className: "MenuButton__ContentContainer" },
6799
6825
  leftElement && leftElement,
6800
- leftIconName && (React__default["default"].createElement(react.Box, { p: isIconButton ? '2px' : 0, className: "menu-button__leftIcon" },
6826
+ leftIconName && (React__default["default"].createElement(react.Box, { className: "MenuButton__LeftIcon" },
6801
6827
  React__default["default"].createElement(Icon, { name: leftIconName, size: iconSize }))),
6802
- text && React__default["default"].createElement(react.Box, { className: "menu-button__text" }, text),
6803
- showRightIcon && (React__default["default"].createElement(react.Box, { className: "menu-button__rightIcon" },
6828
+ text && React__default["default"].createElement(react.Box, { className: "MenuButton__Text" }, text),
6829
+ showRightIcon && (React__default["default"].createElement(react.Box, { className: "MenuButton__RightIcon" },
6804
6830
  React__default["default"].createElement(Icon, { name: rightIconName, size: size === 'lg' ? 'sm' : 'xs' }))))));
6805
6831
  };
6806
6832
 
6807
6833
  var BetaMenu = function (_a) {
6808
- var buttonConfig = _a.buttonConfig, CustomTriggerElement = _a.CustomTriggerElement, listConfig = _a.listConfig, menuItems = _a.menuItems, onMenuClose = _a.onMenuClose, _b = _a.isLazy, isLazy = _b === void 0 ? true : _b, props = __rest(_a, ["buttonConfig", "CustomTriggerElement", "listConfig", "menuItems", "onMenuClose", "isLazy"]);
6809
- return (React__default["default"].createElement(MenuProvider, { menuItems: menuItems, onMenuClose: onMenuClose },
6810
- React__default["default"].createElement(MenuContainer, __assign({ isLazy: isLazy }, props),
6834
+ var buttonProps = _a.buttonProps, CustomTriggerElement = _a.CustomTriggerElement, listProps = _a.listProps, containerProps = _a.containerProps, props = __rest(_a, ["buttonProps", "CustomTriggerElement", "listProps", "containerProps"]);
6835
+ return (React__default["default"].createElement(MenuProvider, { menuItems: listProps === null || listProps === void 0 ? void 0 : listProps.menuItems, isMultiSelect: listProps === null || listProps === void 0 ? void 0 : listProps.isMultiSelect, onClose: containerProps === null || containerProps === void 0 ? void 0 : containerProps.onClose },
6836
+ React__default["default"].createElement(MenuContainer, __assign({ isLazy: containerProps === null || containerProps === void 0 ? void 0 : containerProps.isLazy }, containerProps, props),
6811
6837
  CustomTriggerElement ? (
6812
6838
  // @ts-ignore
6813
- React__default["default"].createElement(CustomTriggerElement, { as: react.MenuButton })) : (React__default["default"].createElement(MenuButton, __assign({}, buttonConfig))),
6814
- React__default["default"].createElement(MenuList, __assign({}, listConfig, { isMatchWidthSet: props.matchWidth, menuItems: menuItems })))));
6839
+ React__default["default"].createElement(CustomTriggerElement, { as: react.MenuButton })) : (React__default["default"].createElement(MenuButton, __assign({}, buttonProps))),
6840
+ React__default["default"].createElement(MenuList, __assign({}, listProps, { isMatchWidthSet: props.matchWidth, menuItems: listProps === null || listProps === void 0 ? void 0 : listProps.menuItems })))));
6815
6841
  };
6816
6842
 
6817
6843
  var withDarkMode$1 = function (children, darkMode) {