@zohodesk/components 1.0.0-temp-230.1 → 1.0.0-temp-234

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 (176) hide show
  1. package/.cli/propValidation_report.html +1 -1
  2. package/README.md +41 -11
  3. package/assets/Appearance/dark/mode/Component_DarkMode.module.css +0 -8
  4. package/assets/Appearance/light/mode/Component_LightMode.module.css +0 -8
  5. package/assets/Appearance/pureDark/mode/Component_PureDarkMode.module.css +0 -8
  6. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +18 -9
  7. package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +6 -3
  8. package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +18 -9
  9. package/es/ListItem/ListItem.js +7 -8
  10. package/es/ListItem/ListItem.module.css +0 -6
  11. package/es/ListItem/ListItemWithAvatar.js +12 -6
  12. package/es/ListItem/ListItemWithCheckBox.js +12 -6
  13. package/es/ListItem/ListItemWithIcon.js +11 -5
  14. package/es/ListItem/ListItemWithRadio.js +12 -6
  15. package/es/ListItem/__tests__/ListItem.spec.js +14 -3
  16. package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +19 -0
  17. package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +19 -0
  18. package/es/ListItem/__tests__/ListItemWithIcon.spec.js +17 -0
  19. package/es/ListItem/__tests__/ListItemWithRadio.spec.js +19 -0
  20. package/es/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +38 -7
  21. package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +140 -46
  22. package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +251 -49
  23. package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +144 -50
  24. package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +252 -52
  25. package/es/ListItem/props/propTypes.js +14 -5
  26. package/es/MultiSelect/AdvancedGroupMultiSelect.js +16 -8
  27. package/es/MultiSelect/AdvancedMultiSelect.js +13 -6
  28. package/es/MultiSelect/EmptyState.js +2 -1
  29. package/es/MultiSelect/MultiSelect.js +67 -35
  30. package/es/MultiSelect/MultiSelectWithAvatar.js +9 -2
  31. package/es/MultiSelect/SelectedOptions.js +3 -24
  32. package/es/MultiSelect/Suggestions.js +175 -98
  33. package/es/MultiSelect/__tests__/MultiSelect.spec.js +19 -32
  34. package/es/MultiSelect/__tests__/SelectedOptions.spec.js +0 -13
  35. package/es/MultiSelect/__tests__/Suggestions.spec.js +52 -6
  36. package/es/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +3 -3
  37. package/es/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +9 -9
  38. package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +178 -10
  39. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +3 -3
  40. package/es/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +0 -15
  41. package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +308 -31
  42. package/es/MultiSelect/constants.js +6 -0
  43. package/es/MultiSelect/props/defaultProps.js +2 -0
  44. package/es/MultiSelect/props/propTypes.js +16 -58
  45. package/es/Select/GroupSelect.js +4 -2
  46. package/es/Select/Select.js +50 -44
  47. package/es/Select/SelectWithAvatar.js +14 -3
  48. package/es/Select/SelectWithIcon.js +7 -3
  49. package/es/Select/__tests__/Select.spec.js +0 -10
  50. package/es/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +6 -3
  51. package/es/Select/__tests__/__snapshots__/Select.spec.js.snap +429 -245
  52. package/es/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +6 -3
  53. package/es/Select/props/defaultProps.js +2 -0
  54. package/es/Select/props/propTypes.js +7 -2
  55. package/es/TextBoxIcon/TextBoxIcon.js +12 -17
  56. package/es/TextBoxIcon/TextBoxIcon.module.css +38 -3
  57. package/es/TextBoxIcon/__tests__/TextBoxIcon.spec.js +2 -1
  58. package/es/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +225 -116
  59. package/es/TextBoxIcon/props/propTypes.js +2 -1
  60. package/es/utils/Common.js +3 -4
  61. package/es/utils/dropDownUtils.js +40 -16
  62. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +18 -9
  63. package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +6 -3
  64. package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +18 -9
  65. package/lib/ListItem/ListItem.js +8 -8
  66. package/lib/ListItem/ListItem.module.css +0 -6
  67. package/lib/ListItem/ListItemWithAvatar.js +13 -6
  68. package/lib/ListItem/ListItemWithCheckBox.js +13 -6
  69. package/lib/ListItem/ListItemWithIcon.js +11 -5
  70. package/lib/ListItem/ListItemWithRadio.js +13 -6
  71. package/lib/ListItem/__tests__/ListItem.spec.js +18 -3
  72. package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +23 -0
  73. package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +23 -0
  74. package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +21 -0
  75. package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +23 -0
  76. package/lib/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +38 -7
  77. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +140 -46
  78. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +251 -49
  79. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +144 -50
  80. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +252 -52
  81. package/lib/ListItem/props/propTypes.js +14 -6
  82. package/lib/MultiSelect/AdvancedGroupMultiSelect.js +94 -83
  83. package/lib/MultiSelect/AdvancedMultiSelect.js +16 -7
  84. package/lib/MultiSelect/EmptyState.js +3 -1
  85. package/lib/MultiSelect/MultiSelect.js +68 -33
  86. package/lib/MultiSelect/MultiSelectWithAvatar.js +11 -3
  87. package/lib/MultiSelect/SelectedOptions.js +3 -24
  88. package/lib/MultiSelect/Suggestions.js +177 -101
  89. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +19 -34
  90. package/lib/MultiSelect/__tests__/SelectedOptions.spec.js +0 -15
  91. package/lib/MultiSelect/__tests__/Suggestions.spec.js +52 -8
  92. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +3 -3
  93. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +9 -9
  94. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +178 -10
  95. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +3 -3
  96. package/lib/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +0 -15
  97. package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +308 -31
  98. package/lib/MultiSelect/constants.js +13 -0
  99. package/lib/MultiSelect/props/defaultProps.js +2 -0
  100. package/lib/MultiSelect/props/propTypes.js +15 -58
  101. package/lib/Select/GroupSelect.js +4 -3
  102. package/lib/Select/Select.js +48 -41
  103. package/lib/Select/SelectWithAvatar.js +14 -6
  104. package/lib/Select/SelectWithIcon.js +7 -4
  105. package/lib/Select/__tests__/Select.spec.js +0 -12
  106. package/lib/Select/__tests__/__snapshots__/GroupSelect.spec.js.snap +6 -3
  107. package/lib/Select/__tests__/__snapshots__/Select.spec.js.snap +429 -245
  108. package/lib/Select/__tests__/__snapshots__/SelectWithIcon.spec.js.snap +6 -3
  109. package/lib/Select/props/defaultProps.js +2 -0
  110. package/lib/Select/props/propTypes.js +7 -2
  111. package/lib/TextBoxIcon/TextBoxIcon.js +13 -18
  112. package/lib/TextBoxIcon/TextBoxIcon.module.css +38 -3
  113. package/lib/TextBoxIcon/__tests__/TextBoxIcon.spec.js +2 -1
  114. package/lib/TextBoxIcon/__tests__/__snapshots__/TextBoxIcon.spec.js.snap +225 -116
  115. package/lib/TextBoxIcon/props/propTypes.js +2 -1
  116. package/lib/utils/Common.js +5 -9
  117. package/lib/utils/dropDownUtils.js +40 -15
  118. package/package.json +10 -10
  119. package/es/ColorSelect/ColorMultiSelect.js +0 -36
  120. package/es/ColorSelect/ColorSingleSelect.js +0 -50
  121. package/es/ColorSelect/__tests__/ColorMultiSelect.spec.js +0 -59
  122. package/es/ColorSelect/__tests__/ColorSingleSelect.spec.js +0 -59
  123. package/es/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +0 -547
  124. package/es/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +0 -178
  125. package/es/ColorSelect/common/ColorIndicator/ColorIndicator.js +0 -27
  126. package/es/ColorSelect/common/ColorIndicator/ColorIndicator.module.css +0 -18
  127. package/es/ColorSelect/common/ColorIndicator/__tests__/ColorSingleSelect.spec.js +0 -60
  128. package/es/ColorSelect/common/ColorIndicator/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +0 -95
  129. package/es/ColorSelect/common/ColorIndicator/props/defaultProps.js +0 -7
  130. package/es/ColorSelect/common/ColorIndicator/props/propTypes.js +0 -9
  131. package/es/ColorSelect/common/ColoredTag/ColoredTag.js +0 -33
  132. package/es/ColorSelect/common/ColoredTag/__tests__/ColoredTag.spec.js +0 -50
  133. package/es/ColorSelect/common/ColoredTag/__tests__/__snapshots__/ColoredTag.spec.js.snap +0 -101
  134. package/es/ColorSelect/common/ColoredTag/props/propTypes.js +0 -9
  135. package/es/ColorSelect/common/helpers.js +0 -35
  136. package/es/ColorSelect/props/defaultProps.js +0 -13
  137. package/es/ColorSelect/props/propTypes.js +0 -14
  138. package/es/shared/ArrowIcon/ArrowIcon.js +0 -36
  139. package/es/shared/ArrowIcon/ArrowIcon.module.css +0 -22
  140. package/es/shared/ArrowIcon/props/defaultProps.js +0 -6
  141. package/es/shared/ArrowIcon/props/propTypes.js +0 -10
  142. package/es/shared/InputFieldLine/InputFieldLine.js +0 -39
  143. package/es/shared/InputFieldLine/InputFieldLine.module.css +0 -90
  144. package/es/shared/InputFieldLine/__tests__/InputFieldLine.spec.js +0 -114
  145. package/es/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +0 -194
  146. package/es/shared/InputFieldLine/props/defaultProps.js +0 -14
  147. package/es/shared/InputFieldLine/props/propTypes.js +0 -19
  148. package/lib/ColorSelect/ColorMultiSelect.js +0 -65
  149. package/lib/ColorSelect/ColorSingleSelect.js +0 -78
  150. package/lib/ColorSelect/__tests__/ColorMultiSelect.spec.js +0 -70
  151. package/lib/ColorSelect/__tests__/ColorSingleSelect.spec.js +0 -70
  152. package/lib/ColorSelect/__tests__/__snapshots__/ColorMultiSelect.spec.js.snap +0 -547
  153. package/lib/ColorSelect/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +0 -178
  154. package/lib/ColorSelect/common/ColorIndicator/ColorIndicator.js +0 -40
  155. package/lib/ColorSelect/common/ColorIndicator/ColorIndicator.module.css +0 -18
  156. package/lib/ColorSelect/common/ColorIndicator/__tests__/ColorSingleSelect.spec.js +0 -67
  157. package/lib/ColorSelect/common/ColorIndicator/__tests__/__snapshots__/ColorSingleSelect.spec.js.snap +0 -95
  158. package/lib/ColorSelect/common/ColorIndicator/props/defaultProps.js +0 -14
  159. package/lib/ColorSelect/common/ColorIndicator/props/propTypes.js +0 -20
  160. package/lib/ColorSelect/common/ColoredTag/ColoredTag.js +0 -61
  161. package/lib/ColorSelect/common/ColoredTag/__tests__/ColoredTag.spec.js +0 -58
  162. package/lib/ColorSelect/common/ColoredTag/__tests__/__snapshots__/ColoredTag.spec.js.snap +0 -101
  163. package/lib/ColorSelect/common/ColoredTag/props/propTypes.js +0 -28
  164. package/lib/ColorSelect/common/helpers.js +0 -53
  165. package/lib/ColorSelect/props/defaultProps.js +0 -31
  166. package/lib/ColorSelect/props/propTypes.js +0 -35
  167. package/lib/shared/ArrowIcon/ArrowIcon.js +0 -51
  168. package/lib/shared/ArrowIcon/ArrowIcon.module.css +0 -22
  169. package/lib/shared/ArrowIcon/props/defaultProps.js +0 -13
  170. package/lib/shared/ArrowIcon/props/propTypes.js +0 -21
  171. package/lib/shared/InputFieldLine/InputFieldLine.js +0 -53
  172. package/lib/shared/InputFieldLine/InputFieldLine.module.css +0 -90
  173. package/lib/shared/InputFieldLine/__tests__/InputFieldLine.spec.js +0 -122
  174. package/lib/shared/InputFieldLine/__tests__/__snapshots__/InputFieldLine.spec.js.snap +0 -194
  175. package/lib/shared/InputFieldLine/props/defaultProps.js +0 -21
  176. package/lib/shared/InputFieldLine/props/propTypes.js +0 -36
@@ -13,6 +13,8 @@ var _propTypes = require("./props/propTypes");
13
13
 
14
14
  var _defaultProps = require("./props/defaultProps");
15
15
 
16
+ var _constants = require("./constants");
17
+
16
18
  var _Loader = _interopRequireDefault(require("@zohodesk/svg/lib/Loader/Loader"));
17
19
 
18
20
  var _Popup = _interopRequireDefault(require("../Popup/Popup"));
@@ -266,7 +268,9 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
266
268
  }, {
267
269
  key: "handleSelectedOptionIdChange",
268
270
  value: function handleSelectedOptionIdChange(selectedGroupOptions, normalizedFormatOptions, normalizedSelectedOptions) {
269
- var allowValueFallback = this.props.allowValueFallback;
271
+ var _this$props = this.props,
272
+ allowValueFallback = _this$props.allowValueFallback,
273
+ limit = _this$props.limit;
270
274
  var newSelectedOptions = selectedGroupOptions.map(function (option) {
271
275
  return (0, _dropDownUtils.optionIdGrouping)(option.id, option.groupId);
272
276
  });
@@ -279,16 +283,17 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
279
283
  selectedOptions: newSelectedOptions,
280
284
  normalizedFormatOptions: formatOptions,
281
285
  selectedOptionsLength: selectedOptionsLength,
282
- allowValueFallback: allowValueFallback
286
+ allowValueFallback: allowValueFallback,
287
+ limit: limit
283
288
  });
284
289
  }
285
290
  }, {
286
291
  key: "togglePopup",
287
292
  value: function togglePopup(e) {
288
- var _this$props = this.props,
289
- togglePopup = _this$props.togglePopup,
290
- defaultDropBoxPosition = _this$props.defaultDropBoxPosition,
291
- isReadOnly = _this$props.isReadOnly;
293
+ var _this$props2 = this.props,
294
+ togglePopup = _this$props2.togglePopup,
295
+ defaultDropBoxPosition = _this$props2.defaultDropBoxPosition,
296
+ isReadOnly = _this$props2.isReadOnly;
292
297
  !isReadOnly && togglePopup(e, defaultDropBoxPosition ? "".concat(defaultDropBoxPosition, "Center") : null);
293
298
  }
294
299
  }, {
@@ -463,12 +468,13 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
463
468
  lastHighLightedSelectOption = _this$state5.lastHighLightedSelectOption,
464
469
  shiftKeyPressHighLighted = _this$state5.shiftKeyPressHighLighted,
465
470
  selectedOptions = _this$state5.selectedOptionIds;
466
- var _this$props2 = this.props,
467
- isNextOptions = _this$props2.isNextOptions,
468
- getNextOptions = _this$props2.getNextOptions,
469
- isPopupOpen = _this$props2.isPopupOpen,
470
- isPopupOpenOnEnter = _this$props2.isPopupOpenOnEnter,
471
- onKeyDown = _this$props2.onKeyDown;
471
+ var _this$props3 = this.props,
472
+ isNextOptions = _this$props3.isNextOptions,
473
+ getNextOptions = _this$props3.getNextOptions,
474
+ isPopupOpen = _this$props3.isPopupOpen,
475
+ isPopupOpenOnEnter = _this$props3.isPopupOpenOnEnter,
476
+ onKeyDown = _this$props3.onKeyDown,
477
+ limit = _this$props3.limit;
472
478
  var highLightedSelectOptionsLen = highLightedSelectOptions.length;
473
479
 
474
480
  if (isPopupOpen && (keyCode === 38 || keyCode === 40 || keyCode === 13 || keyCode === 27)) {
@@ -519,7 +525,7 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
519
525
  hoverIndex: hoverIndex + 1
520
526
  });
521
527
  }
522
- } else if (keyCode === 13) {
528
+ } else if (keyCode === 13 && selectedOptions.length < limit) {
523
529
  //enter key
524
530
  var id = suggestions[hoverIndex] || {};
525
531
  isPopupOpen && !(0, _Common.getIsEmptyValue)(id) && this.handleSelectOption(id, null, null, e);
@@ -678,9 +684,9 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
678
684
  value: function handleSearch(value, e) {
679
685
  var _this4 = this;
680
686
 
681
- var _this$props3 = this.props,
682
- onSearch = _this$props3.onSearch,
683
- isPopupOpen = _this$props3.isPopupOpen;
687
+ var _this$props4 = this.props,
688
+ onSearch = _this$props4.onSearch,
689
+ isPopupOpen = _this$props4.isPopupOpen;
684
690
  !isPopupOpen && e && this.togglePopup(e);
685
691
  var _this$state$searchStr = this.state.searchStr,
686
692
  searchStr = _this$state$searchStr === void 0 ? '' : _this$state$searchStr;
@@ -747,11 +753,11 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
747
753
  value: function handleChange() {
748
754
  var selectedOptions = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
749
755
  var e = arguments.length > 1 ? arguments[1] : undefined;
750
- var _this$props4 = this.props,
751
- onChange = _this$props4.onChange,
752
- needToCloseOnSelect = _this$props4.needToCloseOnSelect,
753
- togglePopup = _this$props4.togglePopup,
754
- isSearchClearOnSelect = _this$props4.isSearchClearOnSelect;
756
+ var _this$props5 = this.props,
757
+ onChange = _this$props5.onChange,
758
+ needToCloseOnSelect = _this$props5.needToCloseOnSelect,
759
+ togglePopup = _this$props5.togglePopup,
760
+ isSearchClearOnSelect = _this$props5.isSearchClearOnSelect;
755
761
  var searchStr = this.state.searchStr;
756
762
  var newSelectedOptions = selectedOptions.map(function (option) {
757
763
  return (0, _dropDownUtils.extractOptionId)(option);
@@ -816,9 +822,9 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
816
822
  }, {
817
823
  key: "handleInputFocus",
818
824
  value: function handleInputFocus() {
819
- var _this$props5 = this.props,
820
- isDisabled = _this$props5.isDisabled,
821
- isReadOnly = _this$props5.isReadOnly;
825
+ var _this$props6 = this.props,
826
+ isDisabled = _this$props6.isDisabled,
827
+ isReadOnly = _this$props6.isReadOnly;
822
828
  this.searchInput && !isDisabled && !isReadOnly && this.searchInput.focus({
823
829
  preventScroll: true
824
830
  });
@@ -836,13 +842,13 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
836
842
  }, {
837
843
  key: "componentDidUpdate",
838
844
  value: function componentDidUpdate(prevProps) {
839
- var _this$props6 = this.props,
840
- groupedOptions = _this$props6.groupedOptions,
841
- selectedGroupOptions = _this$props6.selectedGroupOptions,
842
- isPopupOpen = _this$props6.isPopupOpen,
843
- selectedOptionDetails = _this$props6.selectedOptionDetails,
844
- searchStr = _this$props6.searchStr,
845
- notifyPopupToggle = _this$props6.notifyPopupToggle;
845
+ var _this$props7 = this.props,
846
+ groupedOptions = _this$props7.groupedOptions,
847
+ selectedGroupOptions = _this$props7.selectedGroupOptions,
848
+ isPopupOpen = _this$props7.isPopupOpen,
849
+ selectedOptionDetails = _this$props7.selectedOptionDetails,
850
+ searchStr = _this$props7.searchStr,
851
+ notifyPopupToggle = _this$props7.notifyPopupToggle;
846
852
  var _this$state8 = this.state,
847
853
  normalizedFormatOptions = _this$state8.normalizedFormatOptions,
848
854
  hoverIndex = _this$state8.hoverIndex;
@@ -895,10 +901,10 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
895
901
  var selSuggestion = this["suggestion_".concat(hoverId)];
896
902
  isPopupOpen && (0, _Common.scrollTo)(this.suggestionContainer, selSuggestion); //When suggestions length less than 5, getNextOptions function call
897
903
 
898
- var _this$props7 = this.props,
899
- isNextOptions = _this$props7.isNextOptions,
900
- getNextOptions = _this$props7.getNextOptions,
901
- needLocalSearch = _this$props7.needLocalSearch;
904
+ var _this$props8 = this.props,
905
+ isNextOptions = _this$props8.isNextOptions,
906
+ getNextOptions = _this$props8.getNextOptions,
907
+ needLocalSearch = _this$props8.needLocalSearch;
902
908
 
903
909
  var _this$handleFilterSug3 = this.handleFilterSuggestions(),
904
910
  suggestions = _this$handleFilterSug3.suggestionOptionIds;
@@ -928,56 +934,59 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
928
934
  value: function render() {
929
935
  var _this5 = this;
930
936
 
931
- var _this$props8 = this.props,
932
- size = _this$props8.size,
933
- textBoxSize = _this$props8.textBoxSize,
934
- selectedGroupOptions = _this$props8.selectedGroupOptions,
935
- placeHolder = _this$props8.placeHolder,
936
- dataId = _this$props8.dataId,
937
- dataSelectorId = _this$props8.dataSelectorId,
938
- isReadOnly = _this$props8.isReadOnly,
939
- isDisabled = _this$props8.isDisabled,
940
- isPopupOpen = _this$props8.isPopupOpen,
941
- isPopupReady = _this$props8.isPopupReady,
942
- defaultDropBoxPosition = _this$props8.defaultDropBoxPosition,
943
- removeClose = _this$props8.removeClose,
944
- needResponsive = _this$props8.needResponsive,
945
- animationStyle = _this$props8.animationStyle,
946
- needSelectAll = _this$props8.needSelectAll,
947
- selectAllText = _this$props8.selectAllText,
948
- dropBoxSize = _this$props8.dropBoxSize,
949
- position = _this$props8.position,
950
- getContainerRef = _this$props8.getContainerRef,
951
- isAbsolutePositioningNeeded = _this$props8.isAbsolutePositioningNeeded,
952
- positionsOffset = _this$props8.positionsOffset,
953
- targetOffset = _this$props8.targetOffset,
954
- isRestrictScroll = _this$props8.isRestrictScroll,
955
- emptyMessage = _this$props8.emptyMessage,
956
- searchEmptyMessage = _this$props8.searchEmptyMessage,
957
- title = _this$props8.title,
958
- variant = _this$props8.variant,
959
- children = _this$props8.children,
960
- listItemSize = _this$props8.listItemSize,
961
- isDataLoaded = _this$props8.isDataLoaded,
962
- needBorder = _this$props8.needBorder,
963
- isNextOptions = _this$props8.isNextOptions,
964
- getFooter = _this$props8.getFooter,
965
- customClass = _this$props8.customClass,
966
- borderColor = _this$props8.borderColor,
967
- isPadding = _this$props8.isPadding,
968
- htmlId = _this$props8.htmlId,
969
- i18nKeys = _this$props8.i18nKeys,
970
- a11y = _this$props8.a11y,
971
- palette = _this$props8.palette,
972
- needEffect = _this$props8.needEffect,
973
- autoComplete = _this$props8.autoComplete,
974
- getTargetRef = _this$props8.getTargetRef,
975
- isFocus = _this$props8.isFocus;
937
+ var _this$props9 = this.props,
938
+ size = _this$props9.size,
939
+ textBoxSize = _this$props9.textBoxSize,
940
+ selectedGroupOptions = _this$props9.selectedGroupOptions,
941
+ placeHolder = _this$props9.placeHolder,
942
+ dataId = _this$props9.dataId,
943
+ dataSelectorId = _this$props9.dataSelectorId,
944
+ isReadOnly = _this$props9.isReadOnly,
945
+ isDisabled = _this$props9.isDisabled,
946
+ isPopupOpen = _this$props9.isPopupOpen,
947
+ isPopupReady = _this$props9.isPopupReady,
948
+ defaultDropBoxPosition = _this$props9.defaultDropBoxPosition,
949
+ removeClose = _this$props9.removeClose,
950
+ needResponsive = _this$props9.needResponsive,
951
+ animationStyle = _this$props9.animationStyle,
952
+ needSelectAll = _this$props9.needSelectAll,
953
+ selectAllText = _this$props9.selectAllText,
954
+ dropBoxSize = _this$props9.dropBoxSize,
955
+ position = _this$props9.position,
956
+ getContainerRef = _this$props9.getContainerRef,
957
+ isAbsolutePositioningNeeded = _this$props9.isAbsolutePositioningNeeded,
958
+ positionsOffset = _this$props9.positionsOffset,
959
+ targetOffset = _this$props9.targetOffset,
960
+ isRestrictScroll = _this$props9.isRestrictScroll,
961
+ emptyMessage = _this$props9.emptyMessage,
962
+ searchEmptyMessage = _this$props9.searchEmptyMessage,
963
+ title = _this$props9.title,
964
+ variant = _this$props9.variant,
965
+ children = _this$props9.children,
966
+ listItemSize = _this$props9.listItemSize,
967
+ isDataLoaded = _this$props9.isDataLoaded,
968
+ needBorder = _this$props9.needBorder,
969
+ isNextOptions = _this$props9.isNextOptions,
970
+ getFooter = _this$props9.getFooter,
971
+ customClass = _this$props9.customClass,
972
+ borderColor = _this$props9.borderColor,
973
+ isPadding = _this$props9.isPadding,
974
+ htmlId = _this$props9.htmlId,
975
+ i18nKeys = _this$props9.i18nKeys,
976
+ a11y = _this$props9.a11y,
977
+ palette = _this$props9.palette,
978
+ needEffect = _this$props9.needEffect,
979
+ autoComplete = _this$props9.autoComplete,
980
+ getTargetRef = _this$props9.getTargetRef,
981
+ isFocus = _this$props9.isFocus,
982
+ limit = _this$props9.limit;
976
983
  var _i18nKeys = i18nKeys,
977
984
  _i18nKeys$clearText = _i18nKeys.clearText,
978
- clearText = _i18nKeys$clearText === void 0 ? 'Clear all' : _i18nKeys$clearText;
985
+ clearText = _i18nKeys$clearText === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _i18nKeys$clearText,
986
+ _i18nKeys$limitReache = _i18nKeys.limitReachedMessage,
987
+ limitReachedMessage = _i18nKeys$limitReache === void 0 ? _constants.MULTISELECT_I18N_KEYS.limitReachedMessage : _i18nKeys$limitReache;
979
988
  var _a11y$clearLabel = a11y.clearLabel,
980
- clearLabel = _a11y$clearLabel === void 0 ? 'Clear all' : _a11y$clearLabel;
989
+ clearLabel = _a11y$clearLabel === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _a11y$clearLabel;
981
990
  i18nKeys = Object.assign({}, i18nKeys, {
982
991
  emptyText: i18nKeys.emptyText || emptyMessage,
983
992
  searchEmptyText: i18nKeys.searchEmptyText || searchEmptyMessage
@@ -1110,7 +1119,7 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
1110
1119
  }, /*#__PURE__*/_react["default"].createElement(_Card["default"], {
1111
1120
  customClass: "".concat(_MultiSelectModule["default"].box, " ").concat(_MultiSelectModule["default"]["".concat(palette, "Box")]),
1112
1121
  onScroll: _this5.handleScroll
1113
- }, needSelectAll ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
1122
+ }, needSelectAll && !(limit >= 0) ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
1114
1123
  onSelect: _this5.handleSelectAll,
1115
1124
  selectAllText: selectAllText,
1116
1125
  suggestions: suggestionOptionIds,
@@ -1148,6 +1157,8 @@ var AdvancedGroupMultiSelect = /*#__PURE__*/function (_React$Component) {
1148
1157
  a11y: {
1149
1158
  role: 'option'
1150
1159
  },
1160
+ limit: limit,
1161
+ limitReachedMessage: limitReachedMessage,
1151
1162
  dataId: "".concat(dataId, "_Options")
1152
1163
  }));
1153
1164
  }) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
@@ -13,6 +13,8 @@ var _propTypes = require("./props/propTypes");
13
13
 
14
14
  var _defaultProps = require("./props/defaultProps");
15
15
 
16
+ var _constants = require("./constants");
17
+
16
18
  var _MultiSelect = require("./MultiSelect");
17
19
 
18
20
  var _SelectedOptions = _interopRequireDefault(require("./SelectedOptions"));
@@ -249,7 +251,8 @@ var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent)
249
251
 
250
252
  var selectedOptionsLimit = props.selectedOptionsLimit,
251
253
  selectedOptionDetails = props.selectedOptionDetails,
252
- allowValueFallback = props.allowValueFallback;
254
+ allowValueFallback = props.allowValueFallback,
255
+ limit = props.limit;
253
256
  showedSelectedOptionsCount = (0, _Common.getIsEmptyValue)(showedSelectedOptionsCount) ? selectedOptionsLimit : showedSelectedOptionsCount;
254
257
 
255
258
  var _this$handleFormatSel = this.handleFormatSelectedOptions(selectedOptionDetails, props),
@@ -263,7 +266,8 @@ var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent)
263
266
  selectedOptions: selectedOptions,
264
267
  normalizedFormatOptions: formatOptions,
265
268
  selectedOptionsLength: showedSelectedOptionsCount,
266
- allowValueFallback: allowValueFallback
269
+ allowValueFallback: allowValueFallback,
270
+ limit: limit
267
271
  });
268
272
  }
269
273
  }, {
@@ -454,7 +458,8 @@ var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent)
454
458
  positionsOffset = _this$props6.positionsOffset,
455
459
  targetOffset = _this$props6.targetOffset,
456
460
  isRestrictScroll = _this$props6.isRestrictScroll,
457
- isFocus = _this$props6.isFocus;
461
+ isFocus = _this$props6.isFocus,
462
+ limit = _this$props6.limit;
458
463
  var _customProps$Suggesti = customProps.SuggestionsProps,
459
464
  SuggestionsProps = _customProps$Suggesti === void 0 ? {} : _customProps$Suggesti,
460
465
  _customProps$DropBoxP = customProps.DropBoxProps,
@@ -463,9 +468,11 @@ var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent)
463
468
  containerClass = _customClass$containe === void 0 ? '' : _customClass$containe;
464
469
  var _i18nKeys = i18nKeys,
465
470
  _i18nKeys$clearText = _i18nKeys.clearText,
466
- clearText = _i18nKeys$clearText === void 0 ? 'Clear all' : _i18nKeys$clearText;
471
+ clearText = _i18nKeys$clearText === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _i18nKeys$clearText,
472
+ _i18nKeys$limitReache = _i18nKeys.limitReachedMessage,
473
+ limitReachedMessage = _i18nKeys$limitReache === void 0 ? _constants.MULTISELECT_I18N_KEYS.limitReachedMessage : _i18nKeys$limitReache;
467
474
  var _a11y$clearLabel = a11y.clearLabel,
468
- clearLabel = _a11y$clearLabel === void 0 ? 'Clear all' : _a11y$clearLabel;
475
+ clearLabel = _a11y$clearLabel === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _a11y$clearLabel;
469
476
  i18nKeys = Object.assign({}, i18nKeys, {
470
477
  emptyText: i18nKeys.emptyText || emptyMessage,
471
478
  noMoreText: i18nKeys.noMoreText || noMoreOptionsMessage,
@@ -604,7 +611,7 @@ var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent)
604
611
  }, /*#__PURE__*/_react["default"].createElement(_Card["default"], {
605
612
  customClass: _MultiSelectModule["default"].box,
606
613
  onScroll: _this4.handleScroll
607
- }, needSelectAll ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
614
+ }, needSelectAll && !(limit >= 0) ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
608
615
  onSelect: _this4.handleSelectAll,
609
616
  selectAllText: selectAllText,
610
617
  suggestions: suggestions,
@@ -625,7 +632,9 @@ var AdvancedMultiSelectComponent = /*#__PURE__*/function (_MultiSelectComponent)
625
632
  a11y: {
626
633
  role: 'option'
627
634
  },
628
- dataId: "".concat(dataIdMultiSelectComp, "_Options")
635
+ dataId: "".concat(dataIdMultiSelectComp, "_Options"),
636
+ limit: limit,
637
+ limitReachedMessage: limitReachedMessage
629
638
  }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
630
639
  isLoading: isFetchingOptions,
631
640
  options: options,
@@ -13,6 +13,8 @@ var _propTypes = require("./props/propTypes");
13
13
 
14
14
  var _defaultProps = require("./props/defaultProps");
15
15
 
16
+ var _constants = require("./constants");
17
+
16
18
  var _MultiSelectModule = _interopRequireDefault(require("./MultiSelect.module.css"));
17
19
 
18
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
@@ -66,7 +68,7 @@ var EmptyState = /*#__PURE__*/function (_React$PureComponent) {
66
68
  htmlId = _this$props.htmlId,
67
69
  a11y = _this$props.a11y;
68
70
  var _i18nKeys$loadingText = i18nKeys.loadingText,
69
- loadingText = _i18nKeys$loadingText === void 0 ? 'Loading' : _i18nKeys$loadingText,
71
+ loadingText = _i18nKeys$loadingText === void 0 ? _constants.MULTISELECT_I18N_KEYS.loadingText : _i18nKeys$loadingText,
70
72
  _i18nKeys$emptyText = i18nKeys.emptyText,
71
73
  emptyText = _i18nKeys$emptyText === void 0 ? emptyMessage : _i18nKeys$emptyText,
72
74
  _i18nKeys$noMoreText = i18nKeys.noMoreText,
@@ -15,6 +15,8 @@ var _defaultProps = require("./props/defaultProps");
15
15
 
16
16
  var _defaultProps2 = require("./MobileHeader/props/defaultProps");
17
17
 
18
+ var _constants = require("./constants");
19
+
18
20
  var _Popup = _interopRequireDefault(require("../Popup/Popup"));
19
21
 
20
22
  var _TextBoxIcon = _interopRequireDefault(require("../TextBoxIcon/TextBoxIcon"));
@@ -160,6 +162,8 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
160
162
  _this.handleSearchOptions = (0, _Common.debounce)(_this.handleSearchOptions.bind(_assertThisInitialized(_this)), searchDebounceTime);
161
163
  _this.handleScroll = _this.handleScroll.bind(_assertThisInitialized(_this));
162
164
  _this.handleScrollFuncCall = (0, _Common.debounce)(_this.handleScrollFuncCall.bind(_assertThisInitialized(_this)), 500);
165
+ _this.getVirtualizerPublicMethods = _this.getVirtualizerPublicMethods.bind(_assertThisInitialized(_this));
166
+ _this.setSuggestionsVirtualizerContainerRefFunction = _this.setSuggestionsVirtualizerContainerRefFunction.bind(_assertThisInitialized(_this));
163
167
  return _this;
164
168
  }
165
169
 
@@ -225,9 +229,6 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
225
229
  }, {
226
230
  key: "componentDidUpdate",
227
231
  value: function componentDidUpdate(prevProps, prevState) {
228
- var suggestionContainer = this.suggestionContainer,
229
- selectedOptionContainer = this.selectedOptionContainer,
230
- suggestionsOrder = this.suggestionsOrder;
231
232
  var _this$state = this.state,
232
233
  hoverOption = _this$state.hoverOption,
233
234
  highLightedSelectOptions = _this$state.highLightedSelectOptions,
@@ -238,7 +239,8 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
238
239
  isPopupOpen = _this$props2.isPopupOpen,
239
240
  onDropBoxClose = _this$props2.onDropBoxClose,
240
241
  onDropBoxOpen = _this$props2.onDropBoxOpen,
241
- isSearchClearOnClose = _this$props2.isSearchClearOnClose; //handle dropbox open & close
242
+ isSearchClearOnClose = _this$props2.isSearchClearOnClose,
243
+ isVirtualizerEnabled = _this$props2.isVirtualizerEnabled; //handle dropbox open & close
242
244
 
243
245
  if (prevProps.isPopupOpen !== isPopupOpen) {
244
246
  isPopupOpen && onDropBoxOpen && this.handleFetchOptions(onDropBoxOpen, searchStr);
@@ -253,12 +255,21 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
253
255
  } //scrollTo handling
254
256
 
255
257
 
256
- var hoverId = suggestionsOrder[hoverOption] || '';
257
- var selectedSuggestion = this["suggestion_".concat(hoverId)];
258
- var lastHighLightedSelectOption = highLightedSelectOptions.slice(-1).length ? highLightedSelectOptions.slice(-1)[0] : null;
259
- var selectedOption = this["selectedOption_".concat(lastHighLightedSelectOption)];
260
- isPopupOpen && (0, _Common.scrollTo)(suggestionContainer, selectedSuggestion);
261
- selectedOptions.length && selectedOption && (0, _Common.scrollTo)(selectedOptionContainer, selectedOption); //When suggestions length less than 5, getNextOptions function call
258
+ if (isVirtualizerEnabled && !!this.virtualizerMethods) {
259
+ var position = prevState.hoverOption > hoverOption ? 'top' : 'bottom';
260
+ this.virtualizerMethods.getElementVisiblePercentage(hoverOption) < 50 && this.virtualizerMethods.scrollToIndex(hoverOption, position);
261
+ } else {
262
+ var suggestionContainer = this.suggestionContainer,
263
+ selectedOptionContainer = this.selectedOptionContainer,
264
+ suggestionsOrder = this.suggestionsOrder;
265
+ var hoverId = suggestionsOrder[hoverOption] || '';
266
+ var selectedSuggestion = this["suggestion_".concat(hoverId)];
267
+ var lastHighLightedSelectOption = highLightedSelectOptions.slice(-1).length ? highLightedSelectOptions.slice(-1)[0] : null;
268
+ var selectedOption = this["selectedOption_".concat(lastHighLightedSelectOption)];
269
+ isPopupOpen && (0, _Common.scrollTo)(suggestionContainer, selectedSuggestion);
270
+ selectedOptions.length && selectedOption && (0, _Common.scrollTo)(selectedOptionContainer, selectedOption);
271
+ } //When suggestions length less than 5, getNextOptions function call
272
+
262
273
 
263
274
  var _this$props3 = this.props,
264
275
  isNextOptions = _this$props3.isNextOptions,
@@ -298,6 +309,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
298
309
  var options = props.options,
299
310
  valueField = props.valueField,
300
311
  textField = props.textField,
312
+ secondaryField = props.secondaryField,
301
313
  prefixText = props.prefixText,
302
314
  disabledOptions = props.disabledOptions,
303
315
  allowValueFallback = props.allowValueFallback,
@@ -310,17 +322,20 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
310
322
  optionType: 'default',
311
323
  disabledOptions: disabledOptions,
312
324
  allowValueFallback: allowValueFallback,
325
+ secondaryField: secondaryField,
313
326
  searchFields: searchFields
314
327
  });
315
328
  }
316
329
  }, {
317
330
  key: "handleGetSelectedOptions",
318
331
  value: function handleGetSelectedOptions(selectedOptions, normalizedFormatOptions, props) {
319
- var allowValueFallback = props.allowValueFallback;
332
+ var allowValueFallback = props.allowValueFallback,
333
+ limit = props.limit;
320
334
  return this.getSelectedOptions({
321
335
  selectedOptions: selectedOptions,
322
336
  normalizedFormatOptions: normalizedFormatOptions,
323
- allowValueFallback: allowValueFallback
337
+ allowValueFallback: allowValueFallback,
338
+ limit: limit
324
339
  });
325
340
  }
326
341
  }, {
@@ -393,7 +408,9 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
393
408
  getNextOptions = _this$props5.getNextOptions,
394
409
  isPopupOpen = _this$props5.isPopupOpen,
395
410
  isPopupOpenOnEnter = _this$props5.isPopupOpenOnEnter,
396
- onKeyDown = _this$props5.onKeyDown;
411
+ onKeyDown = _this$props5.onKeyDown,
412
+ limit = _this$props5.limit;
413
+ var allowKeyboardActions = !limit || limit && selectedOptions.length < limit;
397
414
  var highLightedSelectOptionsLen = highLightedSelectOptions.length;
398
415
 
399
416
  if (isPopupOpen && (keyCode === 38 || keyCode === 40 || keyCode === 13 || keyCode === 27 || keyCode === 9)) {
@@ -413,7 +430,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
413
430
 
414
431
  var suggestionsLen = suggestions.length;
415
432
 
416
- if (suggestionsLen && isPopupOpen && keyCode === 38) {
433
+ if (suggestionsLen && isPopupOpen && keyCode === 38 && allowKeyboardActions) {
417
434
  //up arrow
418
435
 
419
436
  /*if (hoverOption === 0) { //disable first to last option higlight
@@ -424,7 +441,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
424
441
  hoverOption: hoverOption - 1
425
442
  });
426
443
  }
427
- } else if (suggestionsLen && isPopupOpen && keyCode === 40) {
444
+ } else if (suggestionsLen && isPopupOpen && keyCode === 40 && allowKeyboardActions) {
428
445
  //down arrow
429
446
 
430
447
  /*else if (hoverOption === suggestionsLen - 1 || hoverOption === null) {
@@ -441,8 +458,8 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
441
458
  hoverOption: hoverOption + 1
442
459
  });
443
460
  }
444
- } else if (keyCode === 13) {
445
- //enter key
461
+ } else if (keyCode === 13 && allowKeyboardActions) {
462
+ //enter ke
446
463
  var selectedOption = suggestions[hoverOption] || {};
447
464
  var id = selectedOption.id;
448
465
  isPopupOpen && !(0, _Common.getIsEmptyValue)(id) && this.handleSelectOption(id, e);
@@ -809,12 +826,14 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
809
826
  togglePopup = _this$props10.togglePopup,
810
827
  propSelectedOptions = _this$props10.selectedOptions,
811
828
  _this$props10$disable = _this$props10.disabledOptions,
812
- disabledOptions = _this$props10$disable === void 0 ? dummyArray : _this$props10$disable;
829
+ disabledOptions = _this$props10$disable === void 0 ? dummyArray : _this$props10$disable,
830
+ limit = _this$props10.limit;
813
831
 
814
832
  var _filterSelectedOption = (0, _dropDownUtils.filterSelectedOptions)({
815
833
  selectedOptions: selectedOptions,
816
834
  propSelectedOptions: propSelectedOptions,
817
- disabledOptions: disabledOptions
835
+ disabledOptions: disabledOptions,
836
+ limit: limit
818
837
  }),
819
838
  newSelectedOptions = _filterSelectedOption.newSelectedOptions;
820
839
 
@@ -872,6 +891,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
872
891
  key: "suggestionContainerRef",
873
892
  value: function suggestionContainerRef(el) {
874
893
  this.suggestionContainer = el;
894
+ typeof this.setSuggestionsVirtualizerRef === 'function' && this.setSuggestionsVirtualizerRef(el);
875
895
  }
876
896
  }, {
877
897
  key: "suggestionItemRef",
@@ -934,6 +954,17 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
934
954
  openPopupOnly: openPopupOnly
935
955
  });
936
956
  }
957
+ }, {
958
+ key: "getVirtualizerPublicMethods",
959
+ value: function getVirtualizerPublicMethods(methods) {
960
+ this.virtualizerMethods = methods;
961
+ }
962
+ }, {
963
+ key: "setSuggestionsVirtualizerContainerRefFunction",
964
+ value: function setSuggestionsVirtualizerContainerRefFunction(refFunc) {
965
+ this.setSuggestionsVirtualizerRef = refFunc;
966
+ this.suggestionContainer && refFunc(this.suggestionContainer);
967
+ }
937
968
  }, {
938
969
  key: "getSelectionUI",
939
970
  value: function getSelectionUI() {
@@ -963,7 +994,6 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
963
994
  isPopupOpen = _this$props14.isPopupOpen,
964
995
  ariaErrorId = _this$props14.ariaErrorId,
965
996
  customProps = _this$props14.customProps,
966
- renderCustomSelectedValue = _this$props14.renderCustomSelectedValue,
967
997
  isFocus = _this$props14.isFocus,
968
998
  isPopupReady = _this$props14.isPopupReady,
969
999
  renderCustomClearComponent = _this$props14.renderCustomClearComponent,
@@ -974,9 +1004,9 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
974
1004
  highLightedSelectOptions = _this$state8.highLightedSelectOptions,
975
1005
  searchStr = _this$state8.searchStr;
976
1006
  var _i18nKeys$clearText = i18nKeys.clearText,
977
- clearText = _i18nKeys$clearText === void 0 ? 'Clear all' : _i18nKeys$clearText;
1007
+ clearText = _i18nKeys$clearText === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearText : _i18nKeys$clearText;
978
1008
  var _a11y$clearLabel = a11y.clearLabel,
979
- clearLabel = _a11y$clearLabel === void 0 ? 'Clear all' : _a11y$clearLabel,
1009
+ clearLabel = _a11y$clearLabel === void 0 ? _constants.MULTISELECT_I18N_KEYS.clearLabel : _a11y$clearLabel,
980
1010
  ariaLabelledby = a11y.ariaLabelledby;
981
1011
 
982
1012
  var _this$getIsShowClearI = this.getIsShowClearIcon({
@@ -1004,11 +1034,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1004
1034
  onSelect: this.handleClickSelectedOption,
1005
1035
  size: size,
1006
1036
  palette: palette,
1007
- dataId: "".concat(dataId, "_selectedOptions"),
1008
- renderCustomSelectedValue: renderCustomSelectedValue,
1009
- isPopupReady: isPopupReady,
1010
- isPopupOpen: isPopupOpen,
1011
- isDisabled: isDisabled
1037
+ dataId: "".concat(dataId, "_selectedOptions")
1012
1038
  }), /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
1013
1039
  flexible: true,
1014
1040
  className: _MultiSelectModule["default"].wrapper,
@@ -1116,9 +1142,9 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1116
1142
  isLoading = _this$props15.isLoading,
1117
1143
  selectAllText = _this$props15.selectAllText,
1118
1144
  needSelectAll = _this$props15.needSelectAll,
1119
- customProps = _this$props15.customProps;
1120
- var _customProps$Suggesti = customProps.SuggestionsProps,
1121
- SuggestionsProps = _customProps$Suggesti === void 0 ? {} : _customProps$Suggesti;
1145
+ customProps = _this$props15.customProps,
1146
+ isVirtualizerEnabled = _this$props15.isVirtualizerEnabled,
1147
+ limit = _this$props15.limit;
1122
1148
  var _this$state9 = this.state,
1123
1149
  selectedOptions = _this$state9.selectedOptions,
1124
1150
  searchStr = _this$state9.searchStr,
@@ -1128,7 +1154,9 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1128
1154
  selectedOptionIds = _this$state9.selectedOptionIds;
1129
1155
  var _i18nKeys = i18nKeys,
1130
1156
  _i18nKeys$searchText = _i18nKeys.searchText,
1131
- searchText = _i18nKeys$searchText === void 0 ? 'Searching...' : _i18nKeys$searchText;
1157
+ searchText = _i18nKeys$searchText === void 0 ? _constants.MULTISELECT_I18N_KEYS.searchText : _i18nKeys$searchText,
1158
+ _i18nKeys$limitReache = _i18nKeys.limitReachedMessage,
1159
+ limitReachedMessage = _i18nKeys$limitReache === void 0 ? _constants.MULTISELECT_I18N_KEYS.limitReachedMessage : _i18nKeys$limitReache;
1132
1160
  var suggestions = this.handleFilterSuggestions();
1133
1161
  var setAriaId = this.getNextAriaId();
1134
1162
  var ariaErrorId = this.getNextAriaId();
@@ -1138,6 +1166,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1138
1166
  noMoreText: i18nKeys.noMoreText || noMoreOptionsMessage
1139
1167
  });
1140
1168
  var isModel = (0, _isMobilePopover["default"])(needResponsive);
1169
+ var SuggestionsProps = customProps.SuggestionsProps;
1141
1170
  return /*#__PURE__*/_react["default"].createElement("div", {
1142
1171
  className: "".concat(_MultiSelectModule["default"].wrapper, " ").concat(isDisabled ? _MultiSelectModule["default"].disabled : '', " ").concat(isReadOnly ? _MultiSelectModule["default"].readOnly : '', " ").concat(disableAction ? (0, _CssProvider["default"])('isBlock') : '', " ").concat(borderColor === 'transparent' ? _MultiSelectModule["default"].transparentContainer : '', " ").concat(needEffect && !(isDisabled || isReadOnly) ? _MultiSelectModule["default"].effect : ''),
1143
1172
  "data-id": "".concat(isDisabled ? "".concat(dataId, "_disabled") : isReadOnly ? "".concat(dataId, "_readOnly") : dataId),
@@ -1181,7 +1210,7 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1181
1210
  onClick: this.handlePopupClose
1182
1211
  }, /*#__PURE__*/_react["default"].createElement("div", {
1183
1212
  className: _MultiSelectModule["default"].effect
1184
- }, this.getSelectionUI(true))) : null, needSelectAll ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
1213
+ }, this.getSelectionUI(true))) : null, needSelectAll && !(limit >= 0) ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
1185
1214
  onSelect: this.handleSelectAll,
1186
1215
  selectAllText: selectAllText,
1187
1216
  suggestions: suggestions,
@@ -1196,7 +1225,11 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1196
1225
  }, isSearching ? /*#__PURE__*/_react["default"].createElement("div", {
1197
1226
  className: _MultiSelectModule["default"][palette]
1198
1227
  }, searchText) : suggestions.length ? /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], _extends({
1228
+ key: searchStr.trim(),
1199
1229
  suggestions: suggestions,
1230
+ isVirtualizerEnabled: isVirtualizerEnabled,
1231
+ getVirtualizerPublicMethods: this.getVirtualizerPublicMethods,
1232
+ setVirtualizerContainerRefFunction: this.setSuggestionsVirtualizerContainerRefFunction,
1200
1233
  getRef: this.suggestionItemRef,
1201
1234
  hoverOption: hoverOption,
1202
1235
  onClick: this.handleSelectOption,
@@ -1207,7 +1240,9 @@ var MultiSelectComponent = /*#__PURE__*/function (_React$Component) {
1207
1240
  selectedOptions: selectedOptionIds,
1208
1241
  a11y: {
1209
1242
  role: 'option'
1210
- }
1243
+ },
1244
+ limit: limit,
1245
+ limitReachedMessage: limitReachedMessage
1211
1246
  }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
1212
1247
  isLoading: isFetchingOptions,
1213
1248
  options: options,