@innovaccer/design-system 2.28.3 → 2.29.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.
Files changed (62) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/css/dist/index.css +245 -0
  3. package/css/dist/index.css.map +1 -1
  4. package/css/src/components/avatarSelection.css +111 -0
  5. package/css/src/components/select.css +127 -0
  6. package/dist/.lib/tsconfig.type.tsbuildinfo +669 -22
  7. package/dist/core/common.type.d.ts +7 -0
  8. package/dist/core/components/atoms/avatar/Avatar.d.ts +1 -0
  9. package/dist/core/components/atoms/avatar/avatarIcon/AvatarIcon.d.ts +0 -4
  10. package/dist/core/components/atoms/avatarSelection/AvatarSelection.d.ts +59 -0
  11. package/dist/core/components/atoms/avatarSelection/AvatarSelectionContext.d.ts +19 -0
  12. package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionEmptyState.d.ts +8 -0
  13. package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionInput.d.ts +3 -0
  14. package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionList.d.ts +20 -0
  15. package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionOption.d.ts +15 -0
  16. package/dist/core/components/atoms/avatarSelection/avatarPopover/AvatarSelectionPopover.d.ts +15 -0
  17. package/dist/core/components/atoms/avatarSelection/avatarPopover/index.d.ts +5 -0
  18. package/dist/core/components/atoms/avatarSelection/avatarPopover/utils.d.ts +3 -0
  19. package/dist/core/components/atoms/avatarSelection/avatarsSelection/AvatarSelectionCount.d.ts +13 -0
  20. package/dist/core/components/atoms/avatarSelection/avatarsSelection/SelectionAvatar.d.ts +15 -0
  21. package/dist/core/components/atoms/avatarSelection/avatarsSelection/SelectionAvatarsWrapper.d.ts +15 -0
  22. package/dist/core/components/atoms/avatarSelection/avatarsSelection/index.d.ts +2 -0
  23. package/dist/core/components/atoms/avatarSelection/avatarsSelection/utils.d.ts +3 -0
  24. package/dist/core/components/atoms/avatarSelection/index.d.ts +2 -0
  25. package/dist/core/components/atoms/popperWrapper/PopperWrapper.d.ts +19 -19
  26. package/dist/core/components/molecules/popover/Popover.d.ts +1 -1
  27. package/dist/core/components/molecules/tooltip/Tooltip.d.ts +2 -0
  28. package/dist/core/components/organisms/combobox/Combobox.d.ts +45 -0
  29. package/dist/core/components/organisms/combobox/ComboboxContext.d.ts +23 -0
  30. package/dist/core/components/organisms/combobox/ComboboxList.d.ts +20 -0
  31. package/dist/core/components/organisms/combobox/ComboboxOption.d.ts +18 -0
  32. package/dist/core/components/organisms/combobox/index.d.ts +2 -0
  33. package/dist/core/components/organisms/combobox/trigger/ChipInputBox.d.ts +3 -0
  34. package/dist/core/components/organisms/combobox/trigger/ComboboxTrigger.d.ts +20 -0
  35. package/dist/core/components/organisms/combobox/trigger/InputBox.d.ts +3 -0
  36. package/dist/core/components/organisms/combobox/trigger/MultiselectTrigger.d.ts +40 -0
  37. package/dist/core/components/organisms/combobox/trigger/index.d.ts +1 -0
  38. package/dist/core/components/organisms/combobox/trigger/utils.d.ts +3 -0
  39. package/dist/core/components/organisms/combobox/utils.d.ts +2 -0
  40. package/dist/core/components/organisms/listbox/Listbox.d.ts +2 -2
  41. package/dist/core/components/organisms/listbox/listboxItem/ListboxItem.d.ts +2 -1
  42. package/dist/core/components/organisms/select/SearchInput.d.ts +8 -0
  43. package/dist/core/components/organisms/select/Select.d.ts +35 -0
  44. package/dist/core/components/organisms/select/SelectContext.d.ts +24 -0
  45. package/dist/core/components/organisms/select/SelectEmptyTemplate.d.ts +9 -0
  46. package/dist/core/components/organisms/select/SelectFooter.d.ts +7 -0
  47. package/dist/core/components/organisms/select/SelectList.d.ts +20 -0
  48. package/dist/core/components/organisms/select/SelectOption.d.ts +19 -0
  49. package/dist/core/components/organisms/select/SelectTrigger.d.ts +24 -0
  50. package/dist/core/components/organisms/select/__test__/Select.test.d.ts +1 -0
  51. package/dist/core/components/organisms/select/__test__/utils.test.d.ts +1 -0
  52. package/dist/core/components/organisms/select/index.d.ts +2 -0
  53. package/dist/core/components/organisms/select/utils.d.ts +12 -0
  54. package/dist/core/index.d.ts +3 -0
  55. package/dist/core/index.type.d.ts +5 -0
  56. package/dist/index.esm.js +2146 -107
  57. package/dist/index.js +2010 -16
  58. package/dist/index.js.map +1 -1
  59. package/dist/index.umd.js +1 -1
  60. package/dist/index.umd.js.br +0 -0
  61. package/dist/index.umd.js.gz +0 -0
  62. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
 
2
2
  /**
3
- * Generated on: 1709299646293
3
+ * Generated on: 1710344054873
4
4
  * Package: @innovaccer/design-system
5
- * Version: v2.28.3
5
+ * Version: v2.29.0
6
6
  * License: MIT
7
7
  * Docs: https://innovaccer.github.io/design-system
8
8
  */
@@ -547,7 +547,9 @@
547
547
  lastName = props.lastName,
548
548
  className = props.className,
549
549
  appearance = props.appearance,
550
- shape = props.shape;
550
+ shape = props.shape,
551
+ _e = props.role,
552
+ role = _e === void 0 ? 'presentation' : _e;
551
553
  var baseProps = extractBaseProps(props);
552
554
  var initials = children && typeof children === 'string' ? children.trim().slice(0, initialsLength) : "" + (firstName ? firstName.trim()[0] : '') + (lastName ? lastName.trim()[0] : '');
553
555
  var tooltip = children && typeof children === 'string' ? children : (firstName || '') + " " + (lastName || '') || '';
@@ -569,7 +571,8 @@
569
571
  if (children && typeof children !== 'string') {
570
572
  return /*#__PURE__*/React__namespace.createElement("span", {
571
573
  "data-test": "DesignSystem-AvatarWrapper",
572
- className: AvatarWrapperClassNames
574
+ className: AvatarWrapperClassNames,
575
+ role: role
573
576
  }, /*#__PURE__*/React__namespace.createElement(AvatarProvider, {
574
577
  value: sharedProp
575
578
  }, /*#__PURE__*/React__namespace.createElement("span", __assign({
@@ -581,7 +584,8 @@
581
584
 
582
585
  return /*#__PURE__*/React__namespace.createElement("span", {
583
586
  "data-test": "DesignSystem-AvatarWrapper",
584
- className: AvatarWrapperClassNames
587
+ className: AvatarWrapperClassNames,
588
+ role: role
585
589
  }, /*#__PURE__*/React__namespace.createElement("span", __assign({
586
590
  "data-test": "DesignSystem-Avatar"
587
591
  }, baseProps, {
@@ -1871,7 +1875,9 @@
1871
1875
  var prevYear = yearNavVal;
1872
1876
  var prevMonthDayRange = getDaysInMonth(prevYear, prevMonth);
1873
1877
  var dayRange = getDaysInMonth(yearNavVal, monthNavVal);
1874
- var dayDiff = getFirstDayOfMonth(yearNavVal, monthNavVal) - getIndexOfDay(firstDayOfWeek);
1878
+ var firstDayIndex = getFirstDayOfMonth(yearNavVal, monthNavVal);
1879
+ var desiredFirstDayIndex = getIndexOfDay(firstDayOfWeek);
1880
+ var dayDiff = (firstDayIndex - desiredFirstDayIndex + 7) % 7;
1875
1881
  var dummyDays = Math.abs(dayDiff);
1876
1882
  var noOfRows = Math.ceil((dayRange + dummyDays) / daysInRow);
1877
1883
 
@@ -8786,7 +8792,7 @@
8786
8792
  customStyle: {}
8787
8793
  });
8788
8794
 
8789
- var keyCodes = {
8795
+ var keyCodes$1 = {
8790
8796
  BACKSPACE: 'Backspace',
8791
8797
  DELETE: 'Delete',
8792
8798
  ENTER: 'Enter'
@@ -8873,15 +8879,15 @@
8873
8879
  var chipsLength = chips.length;
8874
8880
 
8875
8881
  switch (event.key) {
8876
- case keyCodes.DELETE:
8877
- case keyCodes.BACKSPACE:
8882
+ case keyCodes$1.DELETE:
8883
+ case keyCodes$1.BACKSPACE:
8878
8884
  if (inputValue === '' && chipsLength > 0) {
8879
8885
  onChipDeleteHandler(chipsLength - 1);
8880
8886
  }
8881
8887
 
8882
8888
  break;
8883
8889
 
8884
- case keyCodes.ENTER:
8890
+ case keyCodes$1.ENTER:
8885
8891
  event.preventDefault();
8886
8892
  onChipAddHandler();
8887
8893
  break;
@@ -17497,7 +17503,8 @@
17497
17503
  className = props.className,
17498
17504
  disabled = props.disabled,
17499
17505
  selected = props.selected,
17500
- activated = props.activated;
17506
+ activated = props.activated,
17507
+ tabIndex = props.tabIndex;
17501
17508
  var contextProp = React__namespace.useContext(ListboxContext);
17502
17509
  var size = contextProp.size,
17503
17510
  type = contextProp.type,
@@ -17508,7 +17515,7 @@
17508
17515
  return /*#__PURE__*/React__namespace.createElement("div", {
17509
17516
  "data-disabled": disabled,
17510
17517
  "data-test": "DesignSystem-Listbox-ItemWrapper",
17511
- tabIndex: draggable ? -1 : 0,
17518
+ tabIndex: draggable ? -1 : tabIndex || 0,
17512
17519
  className: itemClass,
17513
17520
  onKeyDown: onKeyDown,
17514
17521
  role: "tablist"
@@ -17619,13 +17626,13 @@
17619
17626
  var tagClass = classNames__default["default"]((_a = {}, _a['Listbox-item-wrapper'] = !draggable, _a));
17620
17627
  return /*#__PURE__*/React__namespace.createElement(Tag, __assign({
17621
17628
  id: id,
17622
- key: id
17629
+ key: id,
17630
+ "data-test": "DesignSystem-Listbox-Item"
17623
17631
  }, rest, {
17624
- "data-test": "DesignSystem-Listbox-Item",
17625
17632
  onClick: onClickHandler,
17626
17633
  "data-value": value,
17627
17634
  className: tagClass
17628
- }), /*#__PURE__*/React__namespace.createElement(ListBody, __assign({}, props)), nestedBody && /*#__PURE__*/React__namespace.createElement(NestedList, {
17635
+ }, rest), /*#__PURE__*/React__namespace.createElement(ListBody, __assign({}, props)), nestedBody && /*#__PURE__*/React__namespace.createElement(NestedList, {
17629
17636
  expanded: expanded,
17630
17637
  nestedBody: nestedBody
17631
17638
  }), showDivider && /*#__PURE__*/React__namespace.createElement(Divider, {
@@ -17842,11 +17849,1996 @@
17842
17849
  };
17843
17850
  TextField.displayName = 'TextField';
17844
17851
 
17845
- var version = "2.28.3";
17852
+ var SelectionAvatar = function SelectionAvatar(props) {
17853
+ var icon = props.icon,
17854
+ image = props.image,
17855
+ rest = __rest(props, ["icon", "image"]);
17856
+
17857
+ return /*#__PURE__*/React__namespace.createElement(Avatar, __assign({
17858
+ role: "checkbox"
17859
+ }, rest, {
17860
+ withTooltip: true,
17861
+ className: "cursor-pointer"
17862
+ }), image || icon);
17863
+ };
17864
+
17865
+ var AvatarSelectionContext = /*#__PURE__*/React__namespace.createContext({});
17866
+
17867
+ var SelectionAvatarsWrapper = function SelectionAvatarsWrapper(props) {
17868
+ var avatarList = props.avatarList,
17869
+ avatarStyle = props.avatarStyle,
17870
+ tooltipPosition = props.tooltipPosition,
17871
+ size = props.size,
17872
+ avatarRenderer = props.avatarRenderer;
17873
+ var contextProp = React__namespace.useContext(AvatarSelectionContext);
17874
+ var setSelectedItems = contextProp.setSelectedItems,
17875
+ selectedItems = contextProp.selectedItems,
17876
+ onSelect = contextProp.onSelect;
17877
+
17878
+ var onClickHandler = function onClickHandler(item) {
17879
+ var list = selectedItems;
17880
+
17881
+ if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(item)) {
17882
+ list = selectedItems.filter(function (selectedItem) {
17883
+ return selectedItem !== item;
17884
+ });
17885
+ } else {
17886
+ list === null || list === void 0 ? void 0 : list.push(item);
17887
+ }
17888
+
17889
+ list && (setSelectedItems === null || setSelectedItems === void 0 ? void 0 : setSelectedItems(__spreadArrays(list)));
17890
+ onSelect && onSelect(list);
17891
+ };
17892
+
17893
+ var handleKeyDown = function handleKeyDown(event, item) {
17894
+ switch (event.key) {
17895
+ case 'Enter':
17896
+ onClickHandler(item);
17897
+ break;
17898
+ }
17899
+ };
17900
+
17901
+ return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, avatarList.map(function (avatarItem, index) {
17902
+ var _a;
17903
+
17904
+ var appearance = avatarItem.appearance,
17905
+ firstName = avatarItem.firstName,
17906
+ lastName = avatarItem.lastName,
17907
+ icon = avatarItem.icon,
17908
+ image = avatarItem.image;
17909
+ var GroupClass = classNames__default["default"]((_a = {}, _a["SelectionAvatarGroup-item"] = true, _a["SelectionAvatarGroup-item--selected"] = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(avatarItem), _a));
17910
+
17911
+ if (avatarRenderer) {
17912
+ return avatarRenderer(avatarItem);
17913
+ }
17914
+
17915
+ return /*#__PURE__*/React__namespace.createElement("span", {
17916
+ key: index,
17917
+ className: "SelectionAvatarGroup-wrapper"
17918
+ }, /*#__PURE__*/React__namespace.createElement("div", {
17919
+ tabIndex: 0,
17920
+ role: "checkbox",
17921
+ style: avatarStyle,
17922
+ className: GroupClass,
17923
+ "data-test": "DesignSystem-AvatarSelection--Avatar",
17924
+ "aria-checked": selectedItems && selectedItems.includes(avatarItem),
17925
+ onClick: function onClick() {
17926
+ return onClickHandler(avatarItem);
17927
+ },
17928
+ onKeyDown: function onKeyDown(event) {
17929
+ return handleKeyDown(event, avatarItem);
17930
+ }
17931
+ }, /*#__PURE__*/React__namespace.createElement(SelectionAvatar, {
17932
+ size: size,
17933
+ appearance: appearance,
17934
+ firstName: firstName,
17935
+ lastName: lastName,
17936
+ withTooltip: true,
17937
+ tooltipPosition: tooltipPosition,
17938
+ icon: icon,
17939
+ image: image
17940
+ })));
17941
+ }));
17942
+ };
17943
+
17944
+ var handleKeyDown$4 = function handleKeyDown(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem) {
17945
+ switch (event.key) {
17946
+ case 'Enter':
17947
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
17948
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
17949
+ break;
17950
+
17951
+ case 'ArrowDown':
17952
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
17953
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
17954
+ break;
17955
+
17956
+ case 'ArrowUp':
17957
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
17958
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(true);
17959
+ break;
17960
+ }
17961
+ };
17962
+ var focusListItem$2 = function focusListItem(position, setFocusedOption, listRef, withSearch) {
17963
+ var _a, _b, _c, _d, _e;
17964
+
17965
+ if (withSearch && position === 'down') {
17966
+ var searchInput = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-AvatarSelection--Input"]');
17967
+ searchInput && ((_b = searchInput[0]) === null || _b === void 0 ? void 0 : _b.focus());
17968
+ setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(searchInput);
17969
+ return;
17970
+ }
17971
+
17972
+ var listItems = (_c = listRef.current) === null || _c === void 0 ? void 0 : _c.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
17973
+ var targetOption;
17974
+
17975
+ if (position === 'down') {
17976
+ targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[0];
17977
+ } else {
17978
+ targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[listItems.length - 1];
17979
+ }
17980
+
17981
+ (_d = targetOption) === null || _d === void 0 ? void 0 : _d.focus();
17982
+ (_e = targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView) === null || _e === void 0 ? void 0 : _e.call(targetOption, {
17983
+ block: 'center'
17984
+ });
17985
+ setFocusedOption && setFocusedOption(targetOption);
17986
+ };
17987
+
17988
+ var AvatarSelectionCount = function AvatarSelectionCount(props) {
17989
+ var _a;
17990
+
17991
+ var hiddenAvatarCount = props.hiddenAvatarCount,
17992
+ avatarStyle = props.avatarStyle,
17993
+ size = props.size,
17994
+ hiddenAvatarList = props.hiddenAvatarList;
17995
+ var contextProp = React__namespace.useContext(AvatarSelectionContext);
17996
+ var selectedItems = contextProp.selectedItems,
17997
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
17998
+ setHighlightLastItem = contextProp.setHighlightLastItem,
17999
+ triggerRef = contextProp.triggerRef,
18000
+ setOpenPopover = contextProp.setOpenPopover,
18001
+ openPopover = contextProp.openPopover,
18002
+ popoverId = contextProp.popoverId;
18003
+
18004
+ var _b = React__namespace.useState(0),
18005
+ selectedItemCount = _b[0],
18006
+ setSelectedItemCount = _b[1];
18007
+
18008
+ var wrapperClassName = classNames__default["default"]((_a = {}, _a['SelectionAvatarCount-wrapper'] = true, _a['SelectionAvatarCount--selected'] = selectedItemCount > 0, _a));
18009
+ React__namespace.useEffect(function () {
18010
+ var selectedList = hiddenAvatarList.filter(function (data1) {
18011
+ return selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.some(function (data2) {
18012
+ return data2 === data1;
18013
+ });
18014
+ });
18015
+ setSelectedItemCount(selectedList.length);
18016
+ }, [selectedItems]);
18017
+ return /*#__PURE__*/React__namespace.createElement("div", {
18018
+ "data-test": "DesignSystem-AvatarSelection--TriggerAvatar",
18019
+ className: wrapperClassName,
18020
+ onKeyDown: function onKeyDown(event) {
18021
+ return handleKeyDown$4(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
18022
+ },
18023
+ style: avatarStyle,
18024
+ tabIndex: 0,
18025
+ role: "button",
18026
+ "aria-haspopup": "listbox",
18027
+ "aria-expanded": openPopover,
18028
+ "aria-controls": popoverId,
18029
+ ref: triggerRef
18030
+ }, /*#__PURE__*/React__namespace.createElement(Avatar, {
18031
+ size: size,
18032
+ appearance: "secondary",
18033
+ className: "SelectionAvatarCount cursor-pointer"
18034
+ }, /*#__PURE__*/React__namespace.createElement(Text, {
18035
+ className: "overflow-hidden"
18036
+ }, "+" + hiddenAvatarCount)));
18037
+ };
18038
+
18039
+ var handleKeyDown$3 = function handleKeyDown(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef) {
18040
+ switch (event.key) {
18041
+ case 'ArrowUp':
18042
+ event.preventDefault();
18043
+ navigateOptions$2('up', focusedOption, setFocusedOption, listRef, withSearch);
18044
+ break;
18045
+
18046
+ case 'ArrowDown':
18047
+ event.preventDefault();
18048
+ navigateOptions$2('down', focusedOption, setFocusedOption, listRef, withSearch);
18049
+ break;
18050
+
18051
+ case 'Enter':
18052
+ handleEnterKey$2(focusedOption);
18053
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
18054
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
18055
+ break;
18056
+
18057
+ case 'Escape':
18058
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
18059
+ triggerRef.current.focus();
18060
+ setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
18061
+ break;
18062
+ }
18063
+ };
18064
+
18065
+ var handleEnterKey$2 = function handleEnterKey(focusedOption) {
18066
+ var _a;
18067
+
18068
+ (_a = focusedOption) === null || _a === void 0 ? void 0 : _a.click();
18069
+ };
18070
+
18071
+ var navigateOptions$2 = function navigateOptions(direction, focusedOption, setFocusedOption, listRef, withSearch) {
18072
+ var listItems = listRef === null || listRef === void 0 ? void 0 : listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
18073
+ var index = Array.from(listItems).findIndex(function (item) {
18074
+ return item == focusedOption;
18075
+ });
18076
+
18077
+ if (index === -1) {
18078
+ index = direction === 'up' ? listItems.length - 1 : 0;
18079
+ } else if (withSearch && index === 0 && direction === 'up' || withSearch && index === listItems.length - 1 && direction === 'down') {
18080
+ var searchInput = listRef.current.querySelector('[data-test="DesignSystem-AvatarSelection--Input"]');
18081
+ searchInput.focus();
18082
+ setFocusedOption && setFocusedOption(searchInput);
18083
+ } else {
18084
+ index = direction === 'up' ? (index - 1 + listItems.length) % listItems.length : (index + 1) % listItems.length;
18085
+ var targetOption = listItems[index];
18086
+ targetOption.focus();
18087
+ setFocusedOption && setFocusedOption(targetOption);
18088
+ targetOption.scrollIntoView({
18089
+ block: 'center'
18090
+ });
18091
+ }
18092
+ };
18093
+
18094
+ var handleInputKeyDown$1 = function handleInputKeyDown(event, listRef, setFocusedOption, setOpenPopover, triggerRef) {
18095
+ var _a, _b, _c;
18096
+
18097
+ var listItems = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
18098
+ var targetOption;
18099
+
18100
+ switch (event.key) {
18101
+ case 'ArrowUp':
18102
+ event.preventDefault();
18103
+ targetOption = listItems[listItems.length - 1];
18104
+ break;
18105
+
18106
+ case 'ArrowDown':
18107
+ event.preventDefault();
18108
+ targetOption = listItems[0];
18109
+ break;
18110
+
18111
+ case 'Escape':
18112
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
18113
+ triggerRef.current.focus();
18114
+ setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
18115
+ break;
18116
+ }
18117
+
18118
+ (_b = targetOption) === null || _b === void 0 ? void 0 : _b.focus();
18119
+ (_c = targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView) === null || _c === void 0 ? void 0 : _c.call(targetOption, {
18120
+ block: 'center'
18121
+ });
18122
+ setFocusedOption && setFocusedOption(targetOption);
18123
+ };
18124
+
18125
+ var AvatarSelectionInput = function AvatarSelectionInput(props) {
18126
+ var contextProp = React__namespace.useContext(AvatarSelectionContext);
18127
+ var listRef = contextProp.listRef,
18128
+ setFocusedOption = contextProp.setFocusedOption,
18129
+ setOpenPopover = contextProp.setOpenPopover,
18130
+ triggerRef = contextProp.triggerRef;
18131
+ return /*#__PURE__*/React__namespace.createElement("div", {
18132
+ className: "SelectionAvatar-inputWrapper"
18133
+ }, /*#__PURE__*/React__namespace.createElement(Input, __assign({
18134
+ icon: "search",
18135
+ onKeyDown: function onKeyDown(event) {
18136
+ return handleInputKeyDown$1(event, listRef, setFocusedOption, setOpenPopover, triggerRef);
18137
+ },
18138
+ className: "w-100 SelectionAvatar-input",
18139
+ "data-test": "DesignSystem-AvatarSelection--Input"
18140
+ }, props)));
18141
+ };
18142
+
18143
+ var AvatarSelectionList = function AvatarSelectionList(props) {
18144
+ return /*#__PURE__*/React__namespace.createElement(Listbox, __assign({}, props), props.children);
18145
+ };
18146
+ AvatarSelectionList.defaultProps = {
18147
+ type: 'option',
18148
+ showDivider: false,
18149
+ size: 'compressed',
18150
+ tagName: 'ul'
18151
+ };
18152
+
18153
+ var AvatarSelectionOption = function AvatarSelectionOption(props) {
18154
+ var children = props.children,
18155
+ value = props.value,
18156
+ rest = __rest(props, ["children", "value"]);
18157
+
18158
+ var contextProp = React__namespace.useContext(AvatarSelectionContext);
18159
+ var setSelectedItems = contextProp.setSelectedItems,
18160
+ selectedItems = contextProp.selectedItems,
18161
+ onSelect = contextProp.onSelect,
18162
+ focusedOption = contextProp.focusedOption,
18163
+ setFocusedOption = contextProp.setFocusedOption,
18164
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
18165
+ setHighlightLastItem = contextProp.setHighlightLastItem,
18166
+ listRef = contextProp.listRef,
18167
+ withSearch = contextProp.withSearch,
18168
+ setOpenPopover = contextProp.setOpenPopover,
18169
+ triggerRef = contextProp.triggerRef;
18170
+
18171
+ var onSelectHandler = function onSelectHandler(event, avatarData) {
18172
+ event.preventDefault();
18173
+ var list = selectedItems ? __spreadArrays(selectedItems) : [];
18174
+
18175
+ if (selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(avatarData)) {
18176
+ list = selectedItems.filter(function (selectedItem) {
18177
+ return selectedItem !== avatarData;
18178
+ });
18179
+ } else {
18180
+ list.push(avatarData);
18181
+ }
18182
+
18183
+ setSelectedItems === null || setSelectedItems === void 0 ? void 0 : setSelectedItems(__spreadArrays(list));
18184
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18185
+ onSelect && onSelect(list);
18186
+ };
18187
+
18188
+ var onKeyDownHandler = function onKeyDownHandler(event) {
18189
+ handleKeyDown$3(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef);
18190
+ };
18191
+
18192
+ return /*#__PURE__*/React__namespace.createElement(Listbox.Item, __assign({
18193
+ onClick: function onClick(event) {
18194
+ return onSelectHandler(event, value);
18195
+ },
18196
+ onKeyDown: function onKeyDown(event) {
18197
+ return onKeyDownHandler(event);
18198
+ },
18199
+ selected: selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(value),
18200
+ "data-test": "DesignSystem-AvatarSelection--Option",
18201
+ tabIndex: -1
18202
+ }, rest), children);
18203
+ };
18204
+ AvatarSelectionOption.defaultProps = {
18205
+ tagName: 'li'
18206
+ };
18207
+
18208
+ var AvatarSelectionEmptyState = function AvatarSelectionEmptyState(props) {
18209
+ var height = props.height,
18210
+ title = props.title,
18211
+ description = props.description;
18212
+ return /*#__PURE__*/React__namespace.createElement("div", {
18213
+ className: "d-flex flex-column justify-content-center align-items-center",
18214
+ style: {
18215
+ height: height ? height - 4 : ''
18216
+ },
18217
+ "data-test": "DesignSystem-AvatarSelection--EmptyState"
18218
+ }, title && /*#__PURE__*/React__namespace.createElement(Text, {
18219
+ className: "text-align-center mb-3",
18220
+ weight: "strong"
18221
+ }, title), description && /*#__PURE__*/React__namespace.createElement(Text, {
18222
+ className: "text-align-center mb-6",
18223
+ weight: "medium",
18224
+ size: "small",
18225
+ appearance: "subtle"
18226
+ }, description));
18227
+ };
18228
+
18229
+ var AvatarSelectionPopover = function AvatarSelectionPopover(props) {
18230
+ var _a;
18231
+
18232
+ var hiddenAvatarList = props.hiddenAvatarList,
18233
+ customStyle = props.customStyle,
18234
+ searchPlaceholder = props.searchPlaceholder,
18235
+ searchComparator = props.searchComparator,
18236
+ children = props.children;
18237
+
18238
+ var _b = React__namespace.useState(hiddenAvatarList),
18239
+ searchList = _b[0],
18240
+ setSearchList = _b[1];
18241
+
18242
+ var _c = React__namespace.useState(''),
18243
+ searchValue = _c[0],
18244
+ setSearchValue = _c[1];
18245
+
18246
+ var contextProp = React__namespace.useContext(AvatarSelectionContext);
18247
+ var selectedItems = contextProp.selectedItems,
18248
+ listRef = contextProp.listRef,
18249
+ withSearch = contextProp.withSearch,
18250
+ popoverId = contextProp.popoverId;
18251
+
18252
+ if (children) {
18253
+ return /*#__PURE__*/React__namespace.createElement(React__namespace.Fragment, null, children);
18254
+ }
18255
+
18256
+ var onSearchHandler = function onSearchHandler(event) {
18257
+ var searchValue = event.target.value;
18258
+ var list = hiddenAvatarList === null || hiddenAvatarList === void 0 ? void 0 : hiddenAvatarList.filter(function (avatarData) {
18259
+ var _a, _b;
18260
+
18261
+ var firstName = avatarData.firstName,
18262
+ lastName = avatarData.lastName;
18263
+
18264
+ if (searchComparator) {
18265
+ return searchComparator(searchValue, avatarData);
18266
+ }
18267
+
18268
+ return ((_a = firstName === null || firstName === void 0 ? void 0 : firstName.toLowerCase()) === null || _a === void 0 ? void 0 : _a.startsWith(searchValue.toLowerCase())) || ((_b = lastName === null || lastName === void 0 ? void 0 : lastName.toLowerCase()) === null || _b === void 0 ? void 0 : _b.startsWith(searchValue.toLowerCase()));
18269
+ });
18270
+ setSearchValue(searchValue);
18271
+ setSearchList(list);
18272
+ };
18273
+
18274
+ var onClearHandler = function onClearHandler() {
18275
+ setSearchValue('');
18276
+ setSearchList(hiddenAvatarList);
18277
+ };
18278
+
18279
+ var popperClassName = classNames__default["default"]((_a = {}, _a['py-3'] = !withSearch, _a['pb-3'] = withSearch, _a['SelectionAvatarGroup-popper'] = true, _a['overflow-hidden'] = true, _a));
18280
+ return /*#__PURE__*/React__namespace.createElement("div", {
18281
+ style: {
18282
+ width: customStyle.width
18283
+ },
18284
+ ref: listRef,
18285
+ "data-test": "DesignSystem-AvatarSelection--Popover",
18286
+ id: popoverId
18287
+ }, withSearch && /*#__PURE__*/React__namespace.createElement(AvatarSelectionInput, {
18288
+ placeholder: searchPlaceholder,
18289
+ onChange: onSearchHandler,
18290
+ value: searchValue,
18291
+ onClear: onClearHandler
18292
+ }), /*#__PURE__*/React__namespace.createElement("div", {
18293
+ style: customStyle,
18294
+ className: popperClassName
18295
+ }, searchList.length === 0 && /*#__PURE__*/React__namespace.createElement(AvatarSelectionEmptyState, {
18296
+ height: customStyle.maxHeight,
18297
+ title: "No users found",
18298
+ description: "Try modifying your search to find what you are looking for."
18299
+ }), /*#__PURE__*/React__namespace.createElement(AvatarSelectionList, null, searchList.map(function (avatarData, index) {
18300
+ var _a = avatarData.firstName,
18301
+ firstName = _a === void 0 ? '' : _a,
18302
+ _b = avatarData.lastName,
18303
+ lastName = _b === void 0 ? '' : _b;
18304
+ var name = firstName + " " + lastName;
18305
+ var isSelected = selectedItems === null || selectedItems === void 0 ? void 0 : selectedItems.includes(avatarData);
18306
+ return /*#__PURE__*/React__namespace.createElement(AvatarSelectionOption, {
18307
+ key: index,
18308
+ value: avatarData
18309
+ }, /*#__PURE__*/React__namespace.createElement(Checkbox, {
18310
+ defaultChecked: isSelected,
18311
+ checked: isSelected,
18312
+ label: name,
18313
+ size: "regular",
18314
+ tabIndex: -1,
18315
+ className: "ellipsis--noWrap",
18316
+ "data-test": "DesignSystem-AvatarSelection--Checkbox"
18317
+ }));
18318
+ }))));
18319
+ };
18320
+
18321
+ var AvatarSelection = function AvatarSelection(props) {
18322
+ var _a;
18323
+
18324
+ var max = props.max,
18325
+ borderColor = props.borderColor,
18326
+ tooltipPosition = props.tooltipPosition,
18327
+ list = props.list,
18328
+ className = props.className,
18329
+ size = props.size,
18330
+ avatarRenderer = props.avatarRenderer,
18331
+ onSelect = props.onSelect,
18332
+ width = props.width,
18333
+ maxHeight = props.maxHeight,
18334
+ minHeight = props.minHeight,
18335
+ searchPlaceholder = props.searchPlaceholder,
18336
+ withSearch = props.withSearch,
18337
+ searchComparator = props.searchComparator,
18338
+ children = props.children;
18339
+
18340
+ var _b = React__namespace.useState([]),
18341
+ selectedItems = _b[0],
18342
+ setSelectedItems = _b[1];
18343
+
18344
+ var _c = React__namespace.useState(false),
18345
+ openPopover = _c[0],
18346
+ setOpenPopover = _c[1];
18347
+
18348
+ var _d = React__namespace.useState(),
18349
+ focusedOption = _d[0],
18350
+ setFocusedOption = _d[1];
18351
+
18352
+ var _e = React__namespace.useState(false),
18353
+ highlightFirstItem = _e[0],
18354
+ setHighlightFirstItem = _e[1];
18355
+
18356
+ var _f = React__namespace.useState(false),
18357
+ highlightLastItem = _f[0],
18358
+ setHighlightLastItem = _f[1];
18359
+
18360
+ var listRef = /*#__PURE__*/React__namespace.createRef();
18361
+ var triggerRef = /*#__PURE__*/React__namespace.createRef();
18362
+ React__namespace.useEffect(function () {
18363
+ var selectedList = [];
18364
+ list.forEach(function (avatarItem) {
18365
+ if (avatarItem.selected) {
18366
+ selectedList.push(avatarItem);
18367
+ }
18368
+ });
18369
+ setSelectedItems(selectedList);
18370
+ }, []);
18371
+ React__namespace.useEffect(function () {
18372
+ if (!openPopover) {
18373
+ setHighlightFirstItem(false);
18374
+ setHighlightLastItem(false);
18375
+ } else {
18376
+ setHighlightFirstItem(true);
18377
+ }
18378
+ }, [openPopover]);
18379
+ React__namespace.useEffect(function () {
18380
+ if (highlightFirstItem && openPopover) {
18381
+ requestAnimationFrame(function () {
18382
+ return focusListItem$2('down', setFocusedOption, listRef, withSearch);
18383
+ });
18384
+ }
18385
+ }, [highlightFirstItem]);
18386
+ React__namespace.useEffect(function () {
18387
+ if (highlightLastItem && openPopover) {
18388
+ requestAnimationFrame(function () {
18389
+ return focusListItem$2('up', setFocusedOption, listRef, withSearch);
18390
+ });
18391
+ }
18392
+ }, [highlightLastItem]);
18393
+ var baseProps = extractBaseProps(props);
18394
+ var hiddenAvatarCount = list.length - max;
18395
+ var avatarStyle = {
18396
+ backgroundColor: "" + borderColor,
18397
+ boxShadow: "0 0 0 calc(var(--spacing-xs) + var(--spacing-s)) " + borderColor
18398
+ };
18399
+ var AvatarSelectionClass = classNames__default["default"]((_a = {}, _a['SelectionAvatarGroup'] = true, _a), className);
18400
+ var searchInputHeight = 36;
18401
+ var searchBorder = 1;
18402
+ var customStyle = {
18403
+ width: width,
18404
+ minHeight: minHeight,
18405
+ maxHeight: withSearch ? maxHeight - searchInputHeight - searchBorder : maxHeight
18406
+ };
18407
+ var hiddenAvatarList = list.slice(max, list.length);
18408
+ var popoverId = "DesignSystem-AvatarSelection-Popover-" + uidGenerator();
18409
+ var popoverProps = {
18410
+ hiddenAvatarList: hiddenAvatarList,
18411
+ customStyle: customStyle,
18412
+ searchPlaceholder: searchPlaceholder,
18413
+ searchComparator: searchComparator,
18414
+ children: children
18415
+ };
18416
+ var triggerProps = {
18417
+ size: size,
18418
+ avatarStyle: avatarStyle,
18419
+ hiddenAvatarCount: hiddenAvatarCount,
18420
+ hiddenAvatarList: hiddenAvatarList
18421
+ };
18422
+
18423
+ var onToggleHandler = function onToggleHandler(open) {
18424
+ open ? setOpenPopover(true) : setOpenPopover(false);
18425
+ };
18426
+
18427
+ var contextProp = {
18428
+ listRef: listRef,
18429
+ onSelect: onSelect,
18430
+ withSearch: withSearch,
18431
+ triggerRef: triggerRef,
18432
+ selectedItems: selectedItems,
18433
+ focusedOption: focusedOption,
18434
+ openPopover: openPopover,
18435
+ setSelectedItems: setSelectedItems,
18436
+ setFocusedOption: setFocusedOption,
18437
+ setHighlightFirstItem: setHighlightFirstItem,
18438
+ setHighlightLastItem: setHighlightLastItem,
18439
+ setOpenPopover: setOpenPopover,
18440
+ popoverId: popoverId
18441
+ };
18442
+ return /*#__PURE__*/React__namespace.createElement(AvatarSelectionContext.Provider, {
18443
+ value: contextProp
18444
+ }, /*#__PURE__*/React__namespace.createElement("div", __assign({
18445
+ "data-test": "DesignSystem-AvatarSelection"
18446
+ }, baseProps, {
18447
+ className: AvatarSelectionClass
18448
+ }), /*#__PURE__*/React__namespace.createElement(SelectionAvatarsWrapper, {
18449
+ size: size,
18450
+ avatarStyle: avatarStyle,
18451
+ avatarList: list.slice(0, max),
18452
+ avatarRenderer: avatarRenderer,
18453
+ tooltipPosition: tooltipPosition
18454
+ }), (hiddenAvatarCount > 0 || children && hiddenAvatarCount > 0) && /*#__PURE__*/React__namespace.createElement(Popover, {
18455
+ open: openPopover,
18456
+ position: "bottom-end",
18457
+ trigger: /*#__PURE__*/React__namespace.createElement(AvatarSelectionCount, __assign({}, triggerProps)),
18458
+ triggerClass: "flex-grow-0",
18459
+ onToggle: onToggleHandler
18460
+ }, /*#__PURE__*/React__namespace.createElement(AvatarSelectionPopover, __assign({}, popoverProps)))));
18461
+ };
18462
+ AvatarSelection.displayName = 'AvatarSelection';
18463
+ AvatarSelection.defaultProps = {
18464
+ max: 5,
18465
+ tooltipPosition: 'bottom',
18466
+ borderColor: 'white',
18467
+ size: 'regular',
18468
+ width: 176,
18469
+ maxHeight: 256
18470
+ };
18471
+ AvatarSelection.Input = AvatarSelectionInput;
18472
+ AvatarSelection.List = AvatarSelectionList;
18473
+ AvatarSelection.Option = AvatarSelectionOption;
18474
+ AvatarSelection.EmptyState = AvatarSelectionEmptyState;
18475
+
18476
+ var ComboboxList = function ComboboxList(props) {
18477
+ return /*#__PURE__*/React__namespace.createElement(Listbox, __assign({
18478
+ className: "py-3"
18479
+ }, props, {
18480
+ role: "listbox"
18481
+ }), props.children);
18482
+ };
18483
+ ComboboxList.defaultProps = {
18484
+ type: 'option',
18485
+ showDivider: false,
18486
+ tagName: 'ul',
18487
+ size: 'compressed'
18488
+ };
18489
+
18490
+ var ComboboxContext = /*#__PURE__*/React__namespace.createContext({});
18491
+
18492
+ var handleKeyDown$2 = function handleKeyDown(event, focusedOption, setFocusedOption, setOpenPopover, inputTriggerRef, setHighlightFirstItem, setHighlightLastItem, multiSelect, listRef) {
18493
+ switch (event.key) {
18494
+ case 'ArrowUp':
18495
+ event.preventDefault();
18496
+ navigateOptions$1('up', focusedOption, setFocusedOption, listRef);
18497
+ break;
18498
+
18499
+ case 'ArrowDown':
18500
+ event.preventDefault();
18501
+ navigateOptions$1('down', focusedOption, setFocusedOption, listRef);
18502
+ break;
18503
+
18504
+ case 'Enter':
18505
+ handleEnterKey$1(focusedOption, multiSelect, inputTriggerRef, listRef, setFocusedOption);
18506
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
18507
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
18508
+ break;
18509
+
18510
+ case 'Escape':
18511
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
18512
+ inputTriggerRef.current.focus();
18513
+ setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
18514
+ break;
18515
+ }
18516
+ };
18517
+
18518
+ var handleEnterKey$1 = function handleEnterKey(focusedOption, multiSelect, inputTriggerRef, listRef, setFocusedOption) {
18519
+ var _a;
18520
+
18521
+ (_a = focusedOption) === null || _a === void 0 ? void 0 : _a.click();
18522
+
18523
+ if (!multiSelect) {
18524
+ inputTriggerRef.current.focus();
18525
+ } else {
18526
+ var listItems = listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
18527
+ var listArr = Array.from(listItems);
18528
+ var index = listArr.findIndex(function (item) {
18529
+ return item == focusedOption;
18530
+ });
18531
+
18532
+ if (index === listArr.length - 1) {
18533
+ listItems[0].focus();
18534
+ setFocusedOption && setFocusedOption(listItems[0]);
18535
+ listItems[0].scrollIntoView({
18536
+ block: 'center'
18537
+ });
18538
+ }
18539
+ }
18540
+ };
18541
+
18542
+ var navigateOptions$1 = function navigateOptions(direction, focusedOption, setFocusedOption, listRef) {
18543
+ var _a;
18544
+
18545
+ var listItems = listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
18546
+ var index = Array.from(listItems).findIndex(function (item) {
18547
+ return item == focusedOption;
18548
+ });
18549
+
18550
+ if (index === -1) {
18551
+ index = direction === 'up' ? listItems.length - 1 : 0;
18552
+ } else {
18553
+ index = direction === 'up' ? (index - 1 + listItems.length) % listItems.length : (index + 1) % listItems.length;
18554
+ }
18555
+
18556
+ var targetOption = listItems[index];
18557
+ targetOption.focus();
18558
+ setFocusedOption && setFocusedOption(targetOption);
18559
+ (_a = targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView) === null || _a === void 0 ? void 0 : _a.call(targetOption, {
18560
+ block: 'center'
18561
+ });
18562
+ };
18563
+
18564
+ var ComboboxOption = function ComboboxOption(props) {
18565
+ var children = props.children,
18566
+ option = props.option,
18567
+ onClick = props.onClick,
18568
+ rest = __rest(props, ["children", "option", "onClick"]);
18569
+
18570
+ var contextProp = React__namespace.useContext(ComboboxContext);
18571
+ var onOptionClick = contextProp.onOptionClick,
18572
+ inputValue = contextProp.inputValue,
18573
+ focusedOption = contextProp.focusedOption,
18574
+ setFocusedOption = contextProp.setFocusedOption,
18575
+ setOpenPopover = contextProp.setOpenPopover,
18576
+ inputTriggerRef = contextProp.inputTriggerRef,
18577
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
18578
+ setHighlightLastItem = contextProp.setHighlightLastItem,
18579
+ multiSelect = contextProp.multiSelect,
18580
+ listRef = contextProp.listRef;
18581
+
18582
+ var onClickHandler = function onClickHandler() {
18583
+ if (onClick) {
18584
+ return onClick(option);
18585
+ }
18586
+
18587
+ return onOptionClick && onOptionClick(__assign(__assign({}, option), {
18588
+ isSelectedOption: true
18589
+ }));
18590
+ };
18591
+
18592
+ var onKeyDownHandler = function onKeyDownHandler(event) {
18593
+ handleKeyDown$2(event, focusedOption, setFocusedOption, setOpenPopover, inputTriggerRef, setHighlightFirstItem, setHighlightLastItem, multiSelect, listRef);
18594
+ };
18595
+
18596
+ return /*#__PURE__*/React__namespace.createElement(Listbox.Item, __assign({
18597
+ onClick: onClickHandler,
18598
+ selected: option.label === (inputValue === null || inputValue === void 0 ? void 0 : inputValue.label),
18599
+ onKeyDown: onKeyDownHandler,
18600
+ tabIndex: -1,
18601
+ role: "option",
18602
+ "data-test": "DesignSystem-Combobox-Option"
18603
+ }, rest), children);
18604
+ };
18605
+ ComboboxOption.defaultProps = {
18606
+ tagName: 'li'
18607
+ };
18608
+
18609
+ var handleKeyDown$1 = function handleKeyDown(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem) {
18610
+ switch (event.key) {
18611
+ case 'ArrowUp':
18612
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18613
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(true);
18614
+ break;
18615
+
18616
+ case 'ArrowDown':
18617
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18618
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
18619
+ break;
18620
+
18621
+ case 'Escape':
18622
+ case 'Tab':
18623
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
18624
+ break;
18625
+ }
18626
+ };
18627
+ var focusListItem$1 = function focusListItem(position, setFocusedOption, listRef) {
18628
+ var _a, _b, _c;
18629
+
18630
+ var listItems = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
18631
+ var targetOption;
18632
+
18633
+ if (position === 'down') {
18634
+ targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[0];
18635
+ } else {
18636
+ targetOption = listItems[listItems.length - 1];
18637
+ }
18638
+
18639
+ (_b = targetOption) === null || _b === void 0 ? void 0 : _b.focus();
18640
+
18641
+ if (targetOption && typeof targetOption.scrollIntoView === 'function') {
18642
+ (_c = targetOption) === null || _c === void 0 ? void 0 : _c.scrollIntoView({
18643
+ block: 'center',
18644
+ behavior: 'smooth'
18645
+ });
18646
+ }
18647
+
18648
+ setFocusedOption && setFocusedOption(targetOption);
18649
+ };
18650
+
18651
+ var InputBox = function InputBox(props) {
18652
+ var contextProp = React__namespace.useContext(ComboboxContext);
18653
+ var inputValue = contextProp.inputValue,
18654
+ setInputValue = contextProp.setInputValue,
18655
+ setFocusedOption = contextProp.setFocusedOption,
18656
+ setOpenPopover = contextProp.setOpenPopover,
18657
+ inputTriggerRef = contextProp.inputTriggerRef,
18658
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
18659
+ setHighlightLastItem = contextProp.setHighlightLastItem,
18660
+ openPopover = contextProp.openPopover,
18661
+ popoverId = contextProp.popoverId;
18662
+
18663
+ var onChangeHandler = function onChangeHandler(event) {
18664
+ var value = event.target.value;
18665
+ setFocusedOption && setFocusedOption(undefined);
18666
+ var newValue = {
18667
+ label: value,
18668
+ value: value,
18669
+ isSelectedOption: false
18670
+ };
18671
+ setInputValue && setInputValue(newValue);
18672
+
18673
+ if (value !== '') {
18674
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18675
+ }
18676
+ };
18677
+
18678
+ var onClearHandler = function onClearHandler(event) {
18679
+ var _a;
18680
+
18681
+ event.stopPropagation();
18682
+ var newValue = {
18683
+ label: '',
18684
+ value: '',
18685
+ isSelectedOption: false
18686
+ };
18687
+ setInputValue && setInputValue(newValue);
18688
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18689
+ (_a = props.onClear) === null || _a === void 0 ? void 0 : _a.call(props, event);
18690
+ };
18691
+
18692
+ var onKeyDownHandler = function onKeyDownHandler(event) {
18693
+ handleKeyDown$1(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
18694
+ };
18695
+
18696
+ return /*#__PURE__*/React__namespace.createElement(Input, __assign({}, props, {
18697
+ ref: inputTriggerRef,
18698
+ value: inputValue === null || inputValue === void 0 ? void 0 : inputValue.label,
18699
+ onChange: onChangeHandler,
18700
+ onKeyDown: onKeyDownHandler,
18701
+ onClear: onClearHandler,
18702
+ role: "combobox",
18703
+ "aria-haspopup": "listbox",
18704
+ "aria-controls": popoverId,
18705
+ "aria-label": props.placeholder || 'Combobox-Input-Trigger',
18706
+ "aria-expanded": openPopover,
18707
+ "data-test": "DesignSystem-Combobox-Input"
18708
+ }));
18709
+ };
18710
+
18711
+ var keyCodes = {
18712
+ BACKSPACE: 'Backspace',
18713
+ DELETE: 'Delete',
18714
+ ENTER: 'Enter'
18715
+ };
18716
+ var MultiSelectTrigger = function MultiSelectTrigger(props) {
18717
+ var _a, _b;
18718
+
18719
+ var chipOptions = props.chipOptions,
18720
+ allowDuplicates = props.allowDuplicates,
18721
+ disabled = props.disabled,
18722
+ error = props.error,
18723
+ placeholder = props.placeholder,
18724
+ defaultValue = props.defaultValue,
18725
+ value = props.value,
18726
+ className = props.className,
18727
+ autoFocus = props.autoFocus,
18728
+ onChange = props.onChange,
18729
+ onBlur = props.onBlur,
18730
+ onFocus = props.onFocus,
18731
+ onKeyDown = props.onKeyDown,
18732
+ onInputChange = props.onInputChange,
18733
+ tabIndex = props.tabIndex,
18734
+ role = props.role,
18735
+ rest = __rest(props, ["chipOptions", "allowDuplicates", "disabled", "error", "placeholder", "defaultValue", "value", "className", "autoFocus", "onChange", "onBlur", "onFocus", "onKeyDown", "onInputChange", "tabIndex", "role"]);
18736
+
18737
+ var inputRef = /*#__PURE__*/React__namespace.createRef();
18738
+
18739
+ var _c = React__namespace.useState(value || defaultValue),
18740
+ chips = _c[0],
18741
+ setChips = _c[1];
18742
+
18743
+ var _d = React__namespace.useState(''),
18744
+ inputValue = _d[0],
18745
+ setInputValue = _d[1];
18746
+
18747
+ var baseProps = extractBaseProps(props);
18748
+ React__namespace.useEffect(function () {
18749
+ if (value !== undefined) {
18750
+ setChips(value);
18751
+ setInputValue('');
18752
+ }
18753
+ }, [value]);
18754
+ var ChipInputBorderClass = classNames__default["default"]((_a = {}, _a['ChipInput-border'] = true, _a['ChipInput-border--error'] = error, _a));
18755
+ var ChipInputClass = classNames__default["default"]((_b = {
18756
+ ChipInput: true
18757
+ }, _b['ChipInput--disabled'] = disabled, _b['ChipInput--withChips'] = chips && chips.length > 0, _b['ChipInput--error'] = error, _b), className);
18758
+
18759
+ var onUpdateChips = function onUpdateChips(updatedChips) {
18760
+ if (onChange) onChange(updatedChips);
18761
+ };
18762
+
18763
+ var onChipDeleteHandler = function onChipDeleteHandler(index) {
18764
+ var updatedChips = __spreadArrays(chips);
18765
+
18766
+ updatedChips.splice(index, 1);
18767
+
18768
+ if (!value) {
18769
+ setChips(updatedChips);
18770
+ }
18771
+
18772
+ onUpdateChips(updatedChips);
18773
+ };
18774
+
18775
+ var onChipAddHandler = function onChipAddHandler() {
18776
+ if (!inputValue) return;
18777
+ var chip = inputValue.trim();
18778
+ var isChipExist = chips.filter(function (item) {
18779
+ return item.label === chip;
18780
+ }).length > 0;
18781
+
18782
+ if ((allowDuplicates || !isChipExist) && chip) {
18783
+ var updatedChips = __spreadArrays(chips, [{
18784
+ label: chip,
18785
+ value: chip,
18786
+ isSelectedOption: false
18787
+ }]);
18788
+
18789
+ if (!value) {
18790
+ setChips(updatedChips);
18791
+ }
18792
+
18793
+ onUpdateChips(updatedChips);
18794
+ setInputValue('');
18795
+ }
18796
+ };
18797
+
18798
+ var onDeleteAllHandler = function onDeleteAllHandler(e) {
18799
+ e.stopPropagation();
18800
+ var updatedChips = [];
18801
+
18802
+ if (!value) {
18803
+ setChips(updatedChips);
18804
+ }
18805
+
18806
+ onUpdateChips(updatedChips);
18807
+ setInputValue('');
18808
+ onInputChange && onInputChange();
18809
+ };
18810
+
18811
+ var onKeyDownHandler = function onKeyDownHandler(event) {
18812
+ var chipsLength = chips.length;
18813
+
18814
+ switch (event.key) {
18815
+ case keyCodes.DELETE:
18816
+ case keyCodes.BACKSPACE:
18817
+ if (inputValue === '' && chipsLength > 0) {
18818
+ onChipDeleteHandler(chipsLength - 1);
18819
+ }
18820
+
18821
+ break;
18822
+
18823
+ case keyCodes.ENTER:
18824
+ event.preventDefault();
18825
+ onChipAddHandler();
18826
+ break;
18827
+ }
18828
+
18829
+ onKeyDown && onKeyDown(event);
18830
+ };
18831
+
18832
+ var onInputChangeHandler = function onInputChangeHandler(event) {
18833
+ setInputValue(event.target.value);
18834
+ onInputChange && onInputChange(event);
18835
+ };
18836
+
18837
+ var onClickHandler = function onClickHandler() {
18838
+ var _a;
18839
+
18840
+ (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.focus();
18841
+ };
18842
+
18843
+ var chipComponents = chips.map(function (chip, index) {
18844
+ var _a = chipOptions.type,
18845
+ type = _a === void 0 ? 'input' : _a,
18846
+ _onClick = chipOptions.onClick,
18847
+ rest = __rest(chipOptions, ["type", "onClick"]);
18848
+
18849
+ var chipLabel = typeof chip === 'string' ? chip : chip === null || chip === void 0 ? void 0 : chip.label;
18850
+ return /*#__PURE__*/React__namespace.createElement(Chip, __assign({
18851
+ "data-test": "DesignSystem-MultiSelectTrigger--Chip",
18852
+ label: chipLabel,
18853
+ name: chip,
18854
+ type: type,
18855
+ disabled: disabled,
18856
+ key: index,
18857
+ className: "my-3 mx-2",
18858
+ onClick: function onClick() {
18859
+ return _onClick && _onClick(chip, index);
18860
+ },
18861
+ onClose: function onClose() {
18862
+ return onChipDeleteHandler(index);
18863
+ }
18864
+ }, rest));
18865
+ });
18866
+ return /*#__PURE__*/React__namespace.createElement("div", {
18867
+ "data-test": "DesignSystem-MultiSelectTrigger--Border",
18868
+ className: ChipInputBorderClass
18869
+ }, /*#__PURE__*/React__namespace.createElement("div", __assign({
18870
+ "data-test": "DesignSystem-MultiSelectTrigger"
18871
+ }, baseProps, {
18872
+ className: ChipInputClass,
18873
+ onClick: onClickHandler,
18874
+ tabIndex: disabled ? -1 : tabIndex || 0
18875
+ }), /*#__PURE__*/React__namespace.createElement("div", {
18876
+ className: "ChipInput-wrapper"
18877
+ }, chips && chips.length > 0 && chipComponents, /*#__PURE__*/React__namespace.createElement("input", __assign({}, rest, {
18878
+ "data-test": "DesignSystem-MultiSelectTrigger--Input",
18879
+ ref: props.forwardedRef || inputRef,
18880
+ className: "ChipInput-input",
18881
+ autoFocus: autoFocus,
18882
+ placeholder: chips && chips.length > 0 ? '' : placeholder,
18883
+ disabled: disabled,
18884
+ value: inputValue,
18885
+ onBlur: onBlur,
18886
+ onFocus: onFocus,
18887
+ onChange: onInputChangeHandler,
18888
+ onKeyDown: onKeyDownHandler,
18889
+ role: role
18890
+ }))), (chips.length > 0 || inputValue.length > 0) && /*#__PURE__*/React__namespace.createElement(Icon, {
18891
+ "data-test": "DesignSystem-MultiSelectTrigger--Icon",
18892
+ name: "close",
18893
+ appearance: disabled ? 'disabled' : 'subtle',
18894
+ className: "ChipInput-icon",
18895
+ onClick: onDeleteAllHandler,
18896
+ tabIndex: disabled ? -1 : 0
18897
+ })));
18898
+ };
18899
+ MultiSelectTrigger.displayName = 'MultiSelectTrigger';
18900
+ MultiSelectTrigger.defaultProps = {
18901
+ chipOptions: {},
18902
+ defaultValue: [],
18903
+ allowDuplicates: false,
18904
+ autoFocus: false
18905
+ };
18906
+
18907
+ var ChipInputBox = function ChipInputBox(props) {
18908
+ var contextProp = React__default["default"].useContext(ComboboxContext);
18909
+ var chipInputValue = contextProp.chipInputValue,
18910
+ setChipInputValue = contextProp.setChipInputValue,
18911
+ setOpenPopover = contextProp.setOpenPopover,
18912
+ setFocusedOption = contextProp.setFocusedOption,
18913
+ setChipInputText = contextProp.setChipInputText,
18914
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
18915
+ setHighlightLastItem = contextProp.setHighlightLastItem,
18916
+ inputTriggerRef = contextProp.inputTriggerRef,
18917
+ openPopover = contextProp.openPopover,
18918
+ popoverId = contextProp.popoverId;
18919
+
18920
+ var onChangeHandler = function onChangeHandler(chips) {
18921
+ setFocusedOption && setFocusedOption(undefined);
18922
+ setChipInputValue && setChipInputValue(chips);
18923
+
18924
+ if (chips.length === 0) {
18925
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18926
+ }
18927
+ };
18928
+
18929
+ var onUpdateHandler = function onUpdateHandler(event) {
18930
+ var _a;
18931
+
18932
+ var value = (_a = event === null || event === void 0 ? void 0 : event.target) === null || _a === void 0 ? void 0 : _a.value;
18933
+
18934
+ if (!value) {
18935
+ setChipInputText === null || setChipInputText === void 0 ? void 0 : setChipInputText('');
18936
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18937
+ inputTriggerRef === null || inputTriggerRef === void 0 ? void 0 : inputTriggerRef.current.focus();
18938
+ return;
18939
+ }
18940
+
18941
+ setChipInputText && setChipInputText(value);
18942
+
18943
+ if (value !== '') {
18944
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
18945
+ }
18946
+ };
18947
+
18948
+ var onKeyDownHandler = function onKeyDownHandler(event) {
18949
+ handleKeyDown$1(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
18950
+ };
18951
+
18952
+ return /*#__PURE__*/React__default["default"].createElement(MultiSelectTrigger, __assign({}, props, {
18953
+ value: chipInputValue,
18954
+ onChange: onChangeHandler,
18955
+ onInputChange: onUpdateHandler,
18956
+ onKeyDown: onKeyDownHandler,
18957
+ tabIndex: -1,
18958
+ forwardedRef: inputTriggerRef,
18959
+ role: "combobox",
18960
+ "aria-haspopup": "listbox",
18961
+ "aria-controls": popoverId,
18962
+ "aria-label": props.placeholder || 'Combobox-ChipInput-Trigger',
18963
+ "aria-expanded": openPopover,
18964
+ "data-test": "DesignSystem-Combobox-ChipInput"
18965
+ }));
18966
+ };
18967
+
18968
+ var ComboboxTrigger = function ComboboxTrigger(props) {
18969
+ var multiSelect = props.multiSelect,
18970
+ chipValue = props.chipValue,
18971
+ value = props.value,
18972
+ rest = __rest(props, ["multiSelect", "chipValue", "value"]);
18973
+
18974
+ if (multiSelect) {
18975
+ var icon = props.icon,
18976
+ clearButton = props.clearButton,
18977
+ iconType = props.iconType;
18978
+ var chipInputOptions = {
18979
+ icon: icon,
18980
+ clearButton: clearButton,
18981
+ iconType: iconType
18982
+ };
18983
+ return /*#__PURE__*/React__namespace.createElement(ChipInputBox, __assign({
18984
+ defaultValue: [],
18985
+ chipOptions: __assign({}, chipInputOptions)
18986
+ }, rest, {
18987
+ value: chipValue
18988
+ }));
18989
+ }
18990
+
18991
+ return /*#__PURE__*/React__namespace.createElement(InputBox, __assign({}, props, {
18992
+ value: value === null || value === void 0 ? void 0 : value.label
18993
+ }));
18994
+ };
18995
+
18996
+ var Combobox = function Combobox(props) {
18997
+ var children = props.children,
18998
+ onChange = props.onChange,
18999
+ multiSelect = props.multiSelect,
19000
+ className = props.className,
19001
+ maxHeight = props.maxHeight,
19002
+ width = props.width,
19003
+ value = props.value,
19004
+ placeholder = props.placeholder,
19005
+ disabled = props.disabled,
19006
+ error = props.error,
19007
+ onBlur = props.onBlur,
19008
+ onFocus = props.onFocus,
19009
+ onClear = props.onClear,
19010
+ icon = props.icon,
19011
+ iconType = props.iconType,
19012
+ size = props.size,
19013
+ chipValue = props.chipValue,
19014
+ clearButton = props.clearButton,
19015
+ onSearch = props.onSearch;
19016
+
19017
+ var _a = React__namespace.useState(),
19018
+ popoverStyle = _a[0],
19019
+ setPopoverStyle = _a[1];
19020
+
19021
+ var _b = React__namespace.useState({}),
19022
+ wrapperStyle = _b[0],
19023
+ setWrapperStyle = _b[1];
19024
+
19025
+ var triggerRef = /*#__PURE__*/React__namespace.createRef();
19026
+ var listRef = /*#__PURE__*/React__namespace.createRef();
19027
+
19028
+ var _c = React__namespace.useState(false),
19029
+ openPopover = _c[0],
19030
+ setOpenPopover = _c[1];
19031
+
19032
+ var _d = React__namespace.useState(false),
19033
+ isOptionSelected = _d[0],
19034
+ setIsOptionSelected = _d[1];
19035
+
19036
+ var _e = React__namespace.useState(),
19037
+ focusedOption = _e[0],
19038
+ setFocusedOption = _e[1];
19039
+
19040
+ var _f = React__namespace.useState(value || {
19041
+ label: '',
19042
+ value: ''
19043
+ }),
19044
+ inputValue = _f[0],
19045
+ setInputValue = _f[1];
19046
+
19047
+ var _g = React__namespace.useState(chipValue),
19048
+ chipInputValue = _g[0],
19049
+ setChipInputValue = _g[1];
19050
+
19051
+ var _h = React__namespace.useState(''),
19052
+ chipInputText = _h[0],
19053
+ setChipInputText = _h[1];
19054
+
19055
+ var _j = React__namespace.useState(false),
19056
+ highlightFirstItem = _j[0],
19057
+ setHighlightFirstItem = _j[1];
19058
+
19059
+ var _k = React__namespace.useState(false),
19060
+ highlightLastItem = _k[0],
19061
+ setHighlightLastItem = _k[1];
19062
+
19063
+ var inputTriggerRef = React__namespace.useRef();
19064
+ var popoverId = "DesignSystem-Combobox--Popover-" + uidGenerator();
19065
+ React__namespace.useEffect(function () {
19066
+ var _a;
19067
+
19068
+ var popperWidth = (_a = triggerRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth;
19069
+ var popperWrapperStyle = {
19070
+ width: width || popperWidth
19071
+ };
19072
+ var wrapperStyle = {
19073
+ maxHeight: maxHeight || 'var(--spacing-9)',
19074
+ overflowY: 'auto',
19075
+ boxSizing: 'border-box'
19076
+ };
19077
+ setWrapperStyle(wrapperStyle);
19078
+ setPopoverStyle(popperWrapperStyle);
19079
+ }, []);
19080
+ React__namespace.useEffect(function () {
19081
+ if (isOptionSelected) {
19082
+ multiSelect ? setOpenPopover(true) : setOpenPopover(false);
19083
+ setIsOptionSelected(false);
19084
+ }
19085
+
19086
+ var value = multiSelect ? chipInputValue : inputValue;
19087
+ onChange && !isOptionSelected && onChange(value);
19088
+ }, [inputValue, chipInputValue]);
19089
+ React__namespace.useEffect(function () {
19090
+ if (highlightFirstItem && openPopover) {
19091
+ requestAnimationFrame(function () {
19092
+ return focusListItem$1('down', setFocusedOption, listRef);
19093
+ });
19094
+ }
19095
+ }, [highlightFirstItem]);
19096
+ React__namespace.useEffect(function () {
19097
+ if (highlightLastItem && openPopover) {
19098
+ requestAnimationFrame(function () {
19099
+ return focusListItem$1('up', setFocusedOption, listRef);
19100
+ });
19101
+ }
19102
+ }, [highlightLastItem]);
19103
+ React__namespace.useEffect(function () {
19104
+ if (!openPopover) {
19105
+ setHighlightFirstItem(false);
19106
+ setHighlightLastItem(false);
19107
+ }
19108
+ }, [openPopover]);
19109
+ React__namespace.useEffect(function () {
19110
+ onSearch && onSearch(chipInputText);
19111
+ }, [chipInputText]);
19112
+
19113
+ var onOptionClick = function onOptionClick(option) {
19114
+ setIsOptionSelected(true);
19115
+
19116
+ if (!multiSelect) {
19117
+ setInputValue(option);
19118
+ onChange && onChange(option);
19119
+ } else {
19120
+ var chipList = chipInputValue ? __spreadArrays(chipInputValue, [option]) : [option];
19121
+ setChipInputValue(chipList);
19122
+ onChange && onChange(chipList);
19123
+ }
19124
+ };
19125
+
19126
+ var outsideClickHandler = function outsideClickHandler() {
19127
+ !multiSelect && setOpenPopover(false);
19128
+ };
19129
+
19130
+ var onToggleHandler = function onToggleHandler(open) {
19131
+ open ? setOpenPopover(true) : setOpenPopover(false);
19132
+ };
19133
+
19134
+ var triggerProps = {
19135
+ value: value,
19136
+ placeholder: placeholder,
19137
+ disabled: disabled,
19138
+ error: error,
19139
+ onBlur: onBlur,
19140
+ onFocus: onFocus,
19141
+ onClear: onClear,
19142
+ icon: icon,
19143
+ iconType: iconType,
19144
+ size: size,
19145
+ multiSelect: multiSelect,
19146
+ chipValue: chipValue,
19147
+ clearButton: clearButton
19148
+ };
19149
+ var contextProp = {
19150
+ inputValue: inputValue,
19151
+ setInputValue: setInputValue,
19152
+ onOptionClick: onOptionClick,
19153
+ openPopover: openPopover,
19154
+ setOpenPopover: setOpenPopover,
19155
+ isOptionSelected: isOptionSelected,
19156
+ setIsOptionSelected: setIsOptionSelected,
19157
+ chipInputValue: chipInputValue,
19158
+ setChipInputValue: setChipInputValue,
19159
+ focusedOption: focusedOption,
19160
+ setFocusedOption: setFocusedOption,
19161
+ chipInputText: chipInputText,
19162
+ setChipInputText: setChipInputText,
19163
+ inputTriggerRef: inputTriggerRef,
19164
+ setHighlightFirstItem: setHighlightFirstItem,
19165
+ setHighlightLastItem: setHighlightLastItem,
19166
+ multiSelect: multiSelect,
19167
+ listRef: listRef,
19168
+ onSearch: onSearch,
19169
+ popoverId: popoverId
19170
+ };
19171
+ return /*#__PURE__*/React__namespace.createElement(ComboboxContext.Provider, {
19172
+ value: contextProp
19173
+ }, /*#__PURE__*/React__namespace.createElement("div", {
19174
+ ref: triggerRef,
19175
+ className: className
19176
+ }, /*#__PURE__*/React__namespace.createElement(OutsideClick, {
19177
+ onOutsideClick: outsideClickHandler
19178
+ }, /*#__PURE__*/React__namespace.createElement(Popover, {
19179
+ open: openPopover && !disabled,
19180
+ triggerClass: "d-block",
19181
+ customStyle: popoverStyle,
19182
+ onToggle: onToggleHandler,
19183
+ trigger: /*#__PURE__*/React__namespace.createElement(ComboboxTrigger, __assign({}, triggerProps))
19184
+ }, /*#__PURE__*/React__namespace.createElement("div", {
19185
+ style: wrapperStyle,
19186
+ ref: listRef,
19187
+ id: popoverId
19188
+ }, children && typeof children === 'function' ? children(contextProp) : children)))));
19189
+ };
19190
+ Combobox.List = ComboboxList;
19191
+ Combobox.Option = ComboboxOption;
19192
+
19193
+ var SelectContext = /*#__PURE__*/React__namespace.createContext({});
19194
+
19195
+ var SelectList = function SelectList(props) {
19196
+ var contextProp = React__namespace.useContext(SelectContext);
19197
+ var withSearch = contextProp.withSearch,
19198
+ minHeight = contextProp.minHeight,
19199
+ maxHeight = contextProp.maxHeight,
19200
+ multiSelect = contextProp.multiSelect;
19201
+
19202
+ var children = props.children,
19203
+ rest = __rest(props, ["children"]);
19204
+
19205
+ var searchInputHeight = 33;
19206
+ var wrapperStyle = {
19207
+ maxHeight: withSearch ? maxHeight - searchInputHeight : maxHeight,
19208
+ overflowY: 'auto',
19209
+ minHeight: minHeight
19210
+ };
19211
+ return /*#__PURE__*/React__namespace.createElement(Listbox, __assign({
19212
+ "aria-label": "Options item list",
19213
+ "aria-multiselectable": multiSelect,
19214
+ className: "my-3"
19215
+ }, rest), /*#__PURE__*/React__namespace.createElement("div", {
19216
+ style: wrapperStyle
19217
+ }, children));
19218
+ };
19219
+ SelectList.defaultProps = {
19220
+ type: 'option',
19221
+ showDivider: false,
19222
+ size: 'compressed',
19223
+ tagName: 'ul'
19224
+ };
19225
+
19226
+ var mapInitialValue = function mapInitialValue(multiSelect, selectedValue) {
19227
+ if (multiSelect) {
19228
+ return selectedValue && !Array.isArray(selectedValue) ? [selectedValue] : selectedValue || [];
19229
+ } else {
19230
+ return selectedValue || {
19231
+ label: '',
19232
+ value: ''
19233
+ };
19234
+ }
19235
+ };
19236
+ var elementExist = function elementExist(targetObject, mainList) {
19237
+ if (!Array.isArray(mainList)) {
19238
+ return targetObject.value === (mainList === null || mainList === void 0 ? void 0 : mainList.value) ? 0 : -1;
19239
+ }
19240
+
19241
+ return mainList.findIndex(function (item) {
19242
+ return item.value === targetObject.value;
19243
+ });
19244
+ };
19245
+ var removeOrAddToList = function removeOrAddToList(targetObject, prevList) {
19246
+ var newList = __spreadArrays(prevList);
19247
+
19248
+ var existingIndex = elementExist(targetObject, newList);
19249
+
19250
+ if (existingIndex !== -1) {
19251
+ newList.splice(existingIndex, 1);
19252
+ } else {
19253
+ newList.push(targetObject);
19254
+ }
19255
+
19256
+ return newList;
19257
+ };
19258
+ var computeValue = function computeValue(multiSelect, selectValue, setLabel) {
19259
+ if (!multiSelect) {
19260
+ return (selectValue === null || selectValue === void 0 ? void 0 : selectValue.label.trim()) || '';
19261
+ }
19262
+
19263
+ var label = setLabel === null || setLabel === void 0 ? void 0 : setLabel(selectValue.length);
19264
+
19265
+ if (label) {
19266
+ return label;
19267
+ }
19268
+
19269
+ if (selectValue.length <= 2) {
19270
+ return selectValue.map(function (pair) {
19271
+ return "" + pair.label;
19272
+ }).join(', ');
19273
+ } else {
19274
+ return selectValue.length + " Selected";
19275
+ }
19276
+ };
19277
+ var handleKeyDownTrigger = function handleKeyDownTrigger(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem) {
19278
+ switch (event.key) {
19279
+ case 'Enter':
19280
+ event.preventDefault();
19281
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
19282
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
19283
+ break;
19284
+
19285
+ case 'ArrowDown':
19286
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
19287
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(true);
19288
+ break;
19289
+
19290
+ case 'ArrowUp':
19291
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(true);
19292
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(true);
19293
+ break;
19294
+ }
19295
+ };
19296
+ var focusListItem = function focusListItem(position, setFocusedOption, listRef) {
19297
+ var _a, _b, _c;
19298
+
19299
+ var searchInput = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Select--Input"]');
19300
+ var listItems = (_b = listRef.current) === null || _b === void 0 ? void 0 : _b.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
19301
+ var targetOption;
19302
+
19303
+ if (position === 'down') {
19304
+ targetOption = (searchInput === null || searchInput === void 0 ? void 0 : searchInput[0]) || (listItems === null || listItems === void 0 ? void 0 : listItems[0]);
19305
+ } else {
19306
+ targetOption = listItems === null || listItems === void 0 ? void 0 : listItems[listItems.length - 1];
19307
+ }
19308
+
19309
+ (_c = targetOption) === null || _c === void 0 ? void 0 : _c.focus();
19310
+ targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView({
19311
+ block: 'center'
19312
+ });
19313
+ setFocusedOption && setFocusedOption(targetOption);
19314
+ };
19315
+ var handleKeyDown = function handleKeyDown(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef) {
19316
+ switch (event.key) {
19317
+ case 'ArrowUp':
19318
+ event.preventDefault();
19319
+ navigateOptions('up', focusedOption, setFocusedOption, listRef, withSearch);
19320
+ break;
19321
+
19322
+ case 'ArrowDown':
19323
+ event.preventDefault();
19324
+ navigateOptions('down', focusedOption, setFocusedOption, listRef, withSearch);
19325
+ break;
19326
+
19327
+ case 'Enter':
19328
+ handleEnterKey(focusedOption);
19329
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
19330
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
19331
+ break;
19332
+
19333
+ case 'Tab':
19334
+ setHighlightLastItem === null || setHighlightLastItem === void 0 ? void 0 : setHighlightLastItem(false);
19335
+ setHighlightFirstItem === null || setHighlightFirstItem === void 0 ? void 0 : setHighlightFirstItem(false);
19336
+ break;
19337
+
19338
+ case 'Escape':
19339
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
19340
+ triggerRef.current.focus();
19341
+ setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
19342
+ break;
19343
+ }
19344
+ };
19345
+ var handleEnterKey = function handleEnterKey(focusedOption) {
19346
+ var _a;
19347
+
19348
+ (_a = focusedOption) === null || _a === void 0 ? void 0 : _a.click();
19349
+ };
19350
+ var navigateOptions = function navigateOptions(direction, focusedOption, setFocusedOption, listRef, withSearch) {
19351
+ var listItems = listRef.current.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
19352
+ var index = Array.from(listItems).findIndex(function (item) {
19353
+ return item == focusedOption;
19354
+ });
19355
+
19356
+ if (index === -1) {
19357
+ index = direction === 'up' ? listItems.length - 1 : 0;
19358
+ } else if (withSearch && index === 0 && direction === 'up' || withSearch && index === listItems.length - 1 && direction === 'down') {
19359
+ var searchInput = listRef.current.querySelector('[data-test="DesignSystem-Select--Input"]');
19360
+ searchInput.focus();
19361
+ setFocusedOption && setFocusedOption(searchInput);
19362
+ } else {
19363
+ index = direction === 'up' ? (index - 1 + listItems.length) % listItems.length : (index + 1) % listItems.length;
19364
+ var targetOption = listItems[index];
19365
+ targetOption.focus();
19366
+ setFocusedOption && setFocusedOption(targetOption);
19367
+ targetOption.scrollIntoView({
19368
+ block: 'center'
19369
+ });
19370
+ }
19371
+ };
19372
+ var handleInputKeyDown = function handleInputKeyDown(event, listRef, setFocusedOption, setOpenPopover, triggerRef) {
19373
+ var _a, _b;
19374
+
19375
+ var listItems = (_a = listRef.current) === null || _a === void 0 ? void 0 : _a.querySelectorAll('[data-test="DesignSystem-Listbox-ItemWrapper"]');
19376
+ var targetOption;
19377
+
19378
+ switch (event.key) {
19379
+ case 'ArrowUp':
19380
+ event.preventDefault();
19381
+ targetOption = listItems[listItems.length - 1];
19382
+ break;
19383
+
19384
+ case 'ArrowDown':
19385
+ event.preventDefault();
19386
+ targetOption = listItems[0];
19387
+ break;
19388
+
19389
+ case 'Escape':
19390
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(false);
19391
+ triggerRef.current.focus();
19392
+ setFocusedOption === null || setFocusedOption === void 0 ? void 0 : setFocusedOption(undefined);
19393
+ break;
19394
+ }
19395
+
19396
+ (_b = targetOption) === null || _b === void 0 ? void 0 : _b.focus();
19397
+ targetOption === null || targetOption === void 0 ? void 0 : targetOption.scrollIntoView({
19398
+ block: 'center'
19399
+ });
19400
+ setFocusedOption && setFocusedOption(targetOption);
19401
+ };
19402
+
19403
+ var SelectOption = function SelectOption(props) {
19404
+ var children = props.children,
19405
+ option = props.option,
19406
+ checkedState = props.checkedState,
19407
+ onClick = props.onClick,
19408
+ _a = props.withCheckbox,
19409
+ withCheckbox = _a === void 0 ? true : _a,
19410
+ disabled = props.disabled,
19411
+ rest = __rest(props, ["children", "option", "checkedState", "onClick", "withCheckbox", "disabled"]);
19412
+
19413
+ var contextProp = React__namespace.useContext(SelectContext);
19414
+ var onOptionClick = contextProp.onOptionClick,
19415
+ selectValue = contextProp.selectValue,
19416
+ setSelectValue = contextProp.setSelectValue,
19417
+ multiSelect = contextProp.multiSelect,
19418
+ setIsOptionSelected = contextProp.setIsOptionSelected,
19419
+ focusedOption = contextProp.focusedOption,
19420
+ setFocusedOption = contextProp.setFocusedOption,
19421
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
19422
+ setHighlightLastItem = contextProp.setHighlightLastItem,
19423
+ listRef = contextProp.listRef,
19424
+ withSearch = contextProp.withSearch,
19425
+ setOpenPopover = contextProp.setOpenPopover,
19426
+ triggerRef = contextProp.triggerRef;
19427
+
19428
+ var onClickHandler = function onClickHandler() {
19429
+ if (disabled) return;
19430
+
19431
+ if (onClick) {
19432
+ onClick(option);
19433
+ return;
19434
+ }
19435
+
19436
+ var newList = multiSelect && Array.isArray(selectValue) ? removeOrAddToList(option, selectValue) : option;
19437
+ setIsOptionSelected === null || setIsOptionSelected === void 0 ? void 0 : setIsOptionSelected(Array.isArray(newList) ? newList.length !== 0 : true);
19438
+ setSelectValue === null || setSelectValue === void 0 ? void 0 : setSelectValue(newList);
19439
+ onOptionClick === null || onOptionClick === void 0 ? void 0 : onOptionClick(newList);
19440
+ };
19441
+
19442
+ var checked = checkedState === 'checked' || elementExist(option, selectValue) !== -1;
19443
+ var indeterminate = checkedState === 'indeterminate';
19444
+
19445
+ var onKeyDownHandler = function onKeyDownHandler(event) {
19446
+ handleKeyDown(event, focusedOption, setFocusedOption, setHighlightFirstItem, setHighlightLastItem, listRef, withSearch, setOpenPopover, triggerRef);
19447
+ };
19448
+
19449
+ return /*#__PURE__*/React__namespace.createElement(Listbox.Item, __assign({
19450
+ role: "option",
19451
+ onClick: onClickHandler,
19452
+ "aria-selected": checked,
19453
+ "aria-label": "option item",
19454
+ onKeyDown: function onKeyDown(event) {
19455
+ return onKeyDownHandler(event);
19456
+ },
19457
+ selected: checked,
19458
+ tabIndex: -1,
19459
+ disabled: disabled,
19460
+ "data-test": "DesignSystem-Select-Option"
19461
+ }, rest), /*#__PURE__*/React__namespace.createElement("div", {
19462
+ className: "d-flex align-items-center"
19463
+ }, multiSelect && withCheckbox && /*#__PURE__*/React__namespace.createElement(Checkbox, {
19464
+ tabIndex: -1,
19465
+ "aria-checked": indeterminate ? 'mixed' : checked,
19466
+ checked: checked,
19467
+ indeterminate: indeterminate
19468
+ }), /*#__PURE__*/React__namespace.createElement("div", {
19469
+ className: multiSelect ? 'Select-trigger-text pt-2' : 'Select-trigger-text'
19470
+ }, children)));
19471
+ };
19472
+ SelectOption.defaultProps = {
19473
+ withCheckbox: true
19474
+ };
19475
+
19476
+ var SelectTrigger = function SelectTrigger(props) {
19477
+ var _a, _b;
19478
+
19479
+ var triggerSize = props.triggerSize,
19480
+ placeholder = props.placeholder,
19481
+ withClearButton = props.withClearButton,
19482
+ icon = props.icon,
19483
+ disabled = props.disabled,
19484
+ inlineLabel = props.inlineLabel,
19485
+ iconType = props.iconType,
19486
+ onClear = props.onClear,
19487
+ setLabel = props.setLabel,
19488
+ rest = __rest(props, ["triggerSize", "placeholder", "withClearButton", "icon", "disabled", "inlineLabel", "iconType", "onClear", "setLabel"]);
19489
+
19490
+ var contextProp = React__namespace.useContext(SelectContext);
19491
+ var openPopover = contextProp.openPopover,
19492
+ selectValue = contextProp.selectValue,
19493
+ setSelectValue = contextProp.setSelectValue,
19494
+ isOptionSelected = contextProp.isOptionSelected,
19495
+ setIsOptionSelected = contextProp.setIsOptionSelected,
19496
+ multiSelect = contextProp.multiSelect,
19497
+ setOpenPopover = contextProp.setOpenPopover,
19498
+ setHighlightFirstItem = contextProp.setHighlightFirstItem,
19499
+ setHighlightLastItem = contextProp.setHighlightLastItem,
19500
+ triggerRef = contextProp.triggerRef;
19501
+ var buttonDisabled = disabled ? 'disabled' : 'default';
19502
+ var trimmedPlaceholder = placeholder === null || placeholder === void 0 ? void 0 : placeholder.trim();
19503
+ var displayValue = computeValue(multiSelect, selectValue, setLabel);
19504
+ var value = isOptionSelected && displayValue.length > 0 ? displayValue : trimmedPlaceholder;
19505
+ var iconName = openPopover ? 'keyboard_arrow_up' : 'keyboard_arrow_down';
19506
+
19507
+ var onClearHandler = function onClearHandler(event) {
19508
+ event.stopPropagation();
19509
+ var emptyValue = multiSelect ? [] : {
19510
+ label: '',
19511
+ value: ''
19512
+ };
19513
+ setSelectValue === null || setSelectValue === void 0 ? void 0 : setSelectValue(emptyValue);
19514
+ setIsOptionSelected === null || setIsOptionSelected === void 0 ? void 0 : setIsOptionSelected(false);
19515
+
19516
+ if (onClear) {
19517
+ onClear(event);
19518
+ }
19519
+ };
19520
+
19521
+ var buttonClass = classNames__default["default"]((_a = {}, _a['Button'] = true, _a['Select-trigger'] = true, _a["Select-trigger--" + triggerSize] = triggerSize, _a['Select-trigger--placeholder'] = !isOptionSelected, _a['Select-trigger--icon'] = icon, _a['Select-trigger--open'] = openPopover, _a));
19522
+ var textClass = classNames__default["default"]((_b = {}, _b['Text'] = true, _b['Text--regular'] = true, _b['Select-trigger-text'] = true, _b));
19523
+ return /*#__PURE__*/React__namespace.createElement("button", __assign({
19524
+ ref: triggerRef,
19525
+ onKeyDown: function onKeyDown(event) {
19526
+ return handleKeyDownTrigger(event, setOpenPopover, setHighlightFirstItem, setHighlightLastItem);
19527
+ },
19528
+ type: "button",
19529
+ className: buttonClass,
19530
+ disabled: disabled,
19531
+ tabIndex: 0,
19532
+ "aria-haspopup": "listbox",
19533
+ "aria-expanded": openPopover,
19534
+ "aria-label": "trigger",
19535
+ "data-test": "DesignSystem-Select-trigger"
19536
+ }, rest), /*#__PURE__*/React__namespace.createElement("div", {
19537
+ className: "Select-trigger-wrapper"
19538
+ }, inlineLabel && /*#__PURE__*/React__namespace.createElement(Text, {
19539
+ appearance: "subtle",
19540
+ className: "mr-4 white-space-nowrap"
19541
+ }, "" + inlineLabel.trim().charAt(0).toUpperCase() + inlineLabel.trim().slice(1)), icon && !inlineLabel && /*#__PURE__*/React__namespace.createElement(Icon, {
19542
+ appearance: buttonDisabled,
19543
+ className: "d-flex align-items-center mr-4",
19544
+ name: icon,
19545
+ type: iconType
19546
+ }), value && /*#__PURE__*/React__namespace.createElement("span", {
19547
+ className: textClass
19548
+ }, value)), isOptionSelected && withClearButton && /*#__PURE__*/React__namespace.createElement(Icon, {
19549
+ appearance: buttonDisabled,
19550
+ onClick: onClearHandler,
19551
+ className: "align-items-center mr-2 ml-3 Select-crossButton",
19552
+ size: 12,
19553
+ name: "close",
19554
+ "aria-label": "clear selected",
19555
+ type: iconType,
19556
+ "data-test": "DesignSystem-Select--closeIcon"
19557
+ }), /*#__PURE__*/React__namespace.createElement(Icon, {
19558
+ appearance: buttonDisabled,
19559
+ name: iconName,
19560
+ type: iconType
19561
+ }));
19562
+ };
19563
+
19564
+ SelectTrigger.defaultProps = {
19565
+ triggerSize: 'regular',
19566
+ placeholder: 'Select',
19567
+ withClearButton: true
19568
+ };
19569
+
19570
+ var SearchInput = function SearchInput(props) {
19571
+ var contextProp = React__namespace.useContext(SelectContext);
19572
+ var setWithSearch = contextProp.setWithSearch,
19573
+ maxHeight = contextProp.maxHeight,
19574
+ listRef = contextProp.listRef,
19575
+ setFocusedOption = contextProp.setFocusedOption,
19576
+ setOpenPopover = contextProp.setOpenPopover,
19577
+ triggerRef = contextProp.triggerRef;
19578
+
19579
+ var onChange = props.onChange,
19580
+ onClear = props.onClear,
19581
+ rest = __rest(props, ["onChange", "onClear"]);
19582
+
19583
+ React__namespace.useEffect(function () {
19584
+ setWithSearch === null || setWithSearch === void 0 ? void 0 : setWithSearch(true);
19585
+ }, [maxHeight]);
19586
+
19587
+ var searchHandler = function searchHandler(event) {
19588
+ if (onChange) onChange(event.target.value);
19589
+ };
19590
+
19591
+ var searchClearHandler = function searchClearHandler(event) {
19592
+ if (onClear) onClear(event);
19593
+ };
19594
+
19595
+ return /*#__PURE__*/React__namespace.createElement("div", {
19596
+ className: "Select-inputWrapper"
19597
+ }, /*#__PURE__*/React__namespace.createElement(Input, __assign({}, rest, {
19598
+ icon: 'search',
19599
+ onKeyDown: function onKeyDown(event) {
19600
+ return handleInputKeyDown(event, listRef, setFocusedOption, setOpenPopover, triggerRef);
19601
+ },
19602
+ autoFocus: true,
19603
+ onChange: searchHandler,
19604
+ onClear: searchClearHandler,
19605
+ autoComplete: 'off',
19606
+ "aria-label": "Search",
19607
+ "aria-haspopup": "listbox",
19608
+ className: "Select-input",
19609
+ "data-test": "DesignSystem-Select--Input"
19610
+ })));
19611
+ };
19612
+
19613
+ var SelectEmptyTemplate = function SelectEmptyTemplate(props) {
19614
+ var contextProp = React__namespace.useContext(SelectContext);
19615
+ var maxHeight = contextProp.maxHeight,
19616
+ withSearch = contextProp.withSearch;
19617
+
19618
+ var title = props.title,
19619
+ description = props.description,
19620
+ children = props.children,
19621
+ rest = __rest(props, ["title", "description", "children"]);
19622
+
19623
+ var searchInputHeight = 33;
19624
+ var wrapperStyle = {
19625
+ minHeight: withSearch ? maxHeight - searchInputHeight : maxHeight
19626
+ };
19627
+ return /*#__PURE__*/React__namespace.createElement("div", __assign({
19628
+ className: "px-7 d-flex justify-content-center align-items-center",
19629
+ style: wrapperStyle,
19630
+ "data-test": "DesignSystem-Select-EmptyState--wrapper",
19631
+ "aria-live": "polite",
19632
+ role: "alert"
19633
+ }, rest), /*#__PURE__*/React__namespace.createElement("div", {
19634
+ "aria-labelledby": title,
19635
+ "aria-describedby": description,
19636
+ className: "d-flex flex-column justify-content-center align-items-center"
19637
+ }, title && /*#__PURE__*/React__namespace.createElement(Text, {
19638
+ id: title,
19639
+ role: "heading",
19640
+ className: "text-align-center mb-3",
19641
+ weight: "strong"
19642
+ }, title), description && /*#__PURE__*/React__namespace.createElement(Text, {
19643
+ id: description,
19644
+ className: "text-align-center mb-6",
19645
+ weight: "medium",
19646
+ size: "small",
19647
+ appearance: "subtle"
19648
+ }, description), children && children));
19649
+ };
19650
+
19651
+ var SelectFooter = function SelectFooter(props) {
19652
+ var children = props.children,
19653
+ rest = __rest(props, ["children"]);
19654
+
19655
+ return /*#__PURE__*/React__namespace.createElement("div", __assign({
19656
+ className: "Select-buttonWrapper"
19657
+ }, rest), children);
19658
+ };
19659
+
19660
+ var Select = /*#__PURE__*/React__namespace.forwardRef(function (props, ref) {
19661
+ var children = props.children,
19662
+ onSelect = props.onSelect,
19663
+ width = props.width,
19664
+ maxHeight = props.maxHeight,
19665
+ minHeight = props.minHeight,
19666
+ value = props.value,
19667
+ _a = props.multiSelect,
19668
+ multiSelect = _a === void 0 ? false : _a,
19669
+ onOutsideClick = props.onOutsideClick,
19670
+ triggerOptions = props.triggerOptions,
19671
+ popoverWidth = props.popoverWidth;
19672
+
19673
+ var _b = React__namespace.useState(false),
19674
+ openPopover = _b[0],
19675
+ setOpenPopover = _b[1];
19676
+
19677
+ var mapValue = mapInitialValue(multiSelect, value);
19678
+
19679
+ var _c = React__namespace.useState(mapValue),
19680
+ selectValue = _c[0],
19681
+ setSelectValue = _c[1];
19682
+
19683
+ var _d = React__namespace.useState(false),
19684
+ isOptionSelected = _d[0],
19685
+ setIsOptionSelected = _d[1];
19686
+
19687
+ var triggerRef = /*#__PURE__*/React__namespace.createRef();
19688
+ var listRef = React__namespace.useRef(null);
19689
+
19690
+ var _e = React__namespace.useState(false),
19691
+ withSearch = _e[0],
19692
+ setWithSearch = _e[1];
19693
+
19694
+ var _f = React__namespace.useState(),
19695
+ focusedOption = _f[0],
19696
+ setFocusedOption = _f[1];
19697
+
19698
+ var _g = React__namespace.useState(false),
19699
+ highlightFirstItem = _g[0],
19700
+ setHighlightFirstItem = _g[1];
19701
+
19702
+ var _h = React__namespace.useState(false),
19703
+ highlightLastItem = _h[0],
19704
+ setHighlightLastItem = _h[1];
19705
+
19706
+ var triggerStyle = {
19707
+ width: width
19708
+ };
19709
+ var popoverStyle = {
19710
+ width: popoverWidth ? popoverWidth : width
19711
+ };
19712
+ React__namespace.useImperativeHandle(ref, function () {
19713
+ return {
19714
+ setOpen: function setOpen(open) {
19715
+ setOpenPopover === null || setOpenPopover === void 0 ? void 0 : setOpenPopover(open);
19716
+ },
19717
+ setFocusFirstItem: function setFocusFirstItem() {
19718
+ if (openPopover) {
19719
+ requestAnimationFrame(function () {
19720
+ return focusListItem('down', setFocusedOption, listRef);
19721
+ });
19722
+ setHighlightFirstItem(true);
19723
+ }
19724
+ },
19725
+ setFocusLastItem: function setFocusLastItem() {
19726
+ if (openPopover) {
19727
+ requestAnimationFrame(function () {
19728
+ return focusListItem('up', setFocusedOption, listRef);
19729
+ });
19730
+ setHighlightLastItem(true);
19731
+ }
19732
+ }
19733
+ };
19734
+ });
19735
+ React__namespace.useEffect(function () {
19736
+ if (!openPopover) {
19737
+ setHighlightFirstItem(false);
19738
+ setHighlightLastItem(false);
19739
+ }
19740
+ }, [openPopover]);
19741
+ React__namespace.useEffect(function () {
19742
+ if (highlightFirstItem && openPopover) {
19743
+ requestAnimationFrame(function () {
19744
+ return focusListItem('down', setFocusedOption, listRef);
19745
+ });
19746
+ }
19747
+ }, [highlightFirstItem]);
19748
+ React__namespace.useEffect(function () {
19749
+ if (highlightLastItem && openPopover) {
19750
+ requestAnimationFrame(function () {
19751
+ return focusListItem('up', setFocusedOption, listRef);
19752
+ });
19753
+ }
19754
+ }, [highlightLastItem]);
19755
+ React__namespace.useEffect(function () {
19756
+ if (value) {
19757
+ setSelectValue(value);
19758
+ setIsOptionSelected(Array.isArray(value) ? value.length > 0 : value.value.trim().length > 0);
19759
+ }
19760
+ }, [value]);
19761
+
19762
+ var onToggleHandler = function onToggleHandler(open) {
19763
+ if (triggerOptions && triggerOptions.disabled) {
19764
+ setOpenPopover(false);
19765
+ } else {
19766
+ setHighlightFirstItem(open);
19767
+ setOpenPopover(open);
19768
+ }
19769
+ };
19770
+
19771
+ var onOptionClick = function onOptionClick(option) {
19772
+ onSelect === null || onSelect === void 0 ? void 0 : onSelect(option);
19773
+ !multiSelect && setOpenPopover(false);
19774
+ };
19775
+
19776
+ var onOutsideClickHandler = function onOutsideClickHandler() {
19777
+ onOutsideClick === null || onOutsideClick === void 0 ? void 0 : onOutsideClick();
19778
+ };
19779
+
19780
+ var contextProp = {
19781
+ openPopover: openPopover,
19782
+ setOpenPopover: setOpenPopover,
19783
+ selectValue: selectValue,
19784
+ setSelectValue: setSelectValue,
19785
+ isOptionSelected: isOptionSelected,
19786
+ setIsOptionSelected: setIsOptionSelected,
19787
+ onOptionClick: onOptionClick,
19788
+ maxHeight: maxHeight,
19789
+ minHeight: minHeight,
19790
+ withSearch: withSearch,
19791
+ setWithSearch: setWithSearch,
19792
+ multiSelect: multiSelect,
19793
+ listRef: listRef,
19794
+ triggerRef: triggerRef,
19795
+ focusedOption: focusedOption,
19796
+ setFocusedOption: setFocusedOption,
19797
+ setHighlightFirstItem: setHighlightFirstItem,
19798
+ setHighlightLastItem: setHighlightLastItem
19799
+ };
19800
+ return /*#__PURE__*/React__namespace.createElement(SelectContext.Provider, {
19801
+ value: contextProp
19802
+ }, /*#__PURE__*/React__namespace.createElement("div", {
19803
+ "data-test": "DesignSystem-Select",
19804
+ "aria-haspopup": "listbox",
19805
+ "aria-expanded": openPopover,
19806
+ style: triggerStyle
19807
+ }, /*#__PURE__*/React__namespace.createElement(Popover, {
19808
+ open: openPopover,
19809
+ onToggle: onToggleHandler,
19810
+ className: "mt-3",
19811
+ triggerClass: "d-block",
19812
+ customStyle: popoverStyle,
19813
+ trigger: /*#__PURE__*/React__namespace.createElement(SelectTrigger, __assign({
19814
+ "aria-controls": "select-listbox"
19815
+ }, triggerOptions))
19816
+ }, /*#__PURE__*/React__namespace.createElement(OutsideClick, {
19817
+ onOutsideClick: onOutsideClickHandler
19818
+ }, /*#__PURE__*/React__namespace.createElement("div", {
19819
+ role: "listbox",
19820
+ id: "select-listbox",
19821
+ tabIndex: 0,
19822
+ ref: listRef
19823
+ }, children)))));
19824
+ });
19825
+ Select.displayName = 'Select';
19826
+ Select.defaultProps = {
19827
+ maxHeight: 256,
19828
+ width: 176
19829
+ };
19830
+ Select.Option = SelectOption;
19831
+ Select.List = SelectList;
19832
+ Select.SearchInput = SearchInput;
19833
+ Select.EmptyTemplate = SelectEmptyTemplate;
19834
+ Select.Footer = SelectFooter;
19835
+
19836
+ var version = "2.29.0";
17846
19837
 
17847
19838
  exports.ActionCard = ActionCard;
17848
19839
  exports.Avatar = Avatar;
17849
19840
  exports.AvatarGroup = AvatarGroup;
19841
+ exports.AvatarSelection = AvatarSelection;
17850
19842
  exports.Backdrop = Backdrop;
17851
19843
  exports.Badge = Badge;
17852
19844
  exports.Breadcrumbs = Breadcrumbs;
@@ -17866,6 +19858,7 @@
17866
19858
  exports.ChoiceList = ChoiceList;
17867
19859
  exports.Collapsible = Collapsible;
17868
19860
  exports.Column = Column;
19861
+ exports.Combobox = Combobox;
17869
19862
  exports.DatePicker = DatePicker;
17870
19863
  exports.DateRangePicker = DateRangePicker;
17871
19864
  exports.Dialog = Dialog;
@@ -17919,6 +19912,7 @@
17919
19912
  exports.Radio = Radio;
17920
19913
  exports.RangeSlider = RangeSlider;
17921
19914
  exports.Row = Row;
19915
+ exports.Select = Select;
17922
19916
  exports.SelectionCard = SelectionCard;
17923
19917
  exports.Sidesheet = Sidesheet;
17924
19918
  exports.Slider = Slider;