@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
@@ -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 _MultiSelect = require("./MultiSelect");
19
21
 
20
22
  var _Popup = _interopRequireDefault(require("../Popup/Popup"));
@@ -151,9 +153,13 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
151
153
  needEffect = _this$props.needEffect,
152
154
  isLoading = _this$props.isLoading,
153
155
  keepSelectedOptions = _this$props.keepSelectedOptions,
154
- customProps = _this$props.customProps;
156
+ customProps = _this$props.customProps,
157
+ limit = _this$props.limit;
155
158
  var _customProps$Suggesti = customProps.SuggestionsProps,
156
159
  SuggestionsProps = _customProps$Suggesti === void 0 ? {} : _customProps$Suggesti;
160
+ var _i18nKeys = i18nKeys,
161
+ _i18nKeys$limitReache = _i18nKeys.limitReachedMessage,
162
+ limitReachedMessage = _i18nKeys$limitReache === void 0 ? _constants.MULTISELECT_I18N_KEYS.limitReachedMessage : _i18nKeys$limitReache;
157
163
  i18nKeys = Object.assign({}, _defaultProps2.defaultProps.i18nKeys, i18nKeys, {
158
164
  emptyText: i18nKeys.emptyText || emptyMessage,
159
165
  searchEmptyText: i18nKeys.searchEmptyText || searchEmptyMessage,
@@ -213,7 +219,7 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
213
219
  onClick: this.handlePopupClose
214
220
  }, /*#__PURE__*/_react["default"].createElement("div", {
215
221
  className: _MultiSelectModule["default"].effect
216
- }, this.getSelectionUI(true)))) : null, needSelectAll ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
222
+ }, this.getSelectionUI(true)))) : null, needSelectAll && !(limit >= 0) ? /*#__PURE__*/_react["default"].createElement(_Card.CardHeader, null, /*#__PURE__*/_react["default"].createElement(_MultiSelectHeader["default"], {
217
223
  onSelect: this.handleSelectAll,
218
224
  selectAllText: selectAllText,
219
225
  suggestions: suggestions,
@@ -238,7 +244,9 @@ var MultiSelectWithAvatarComponent = /*#__PURE__*/function (_MultiSelectComponen
238
244
  selectedOptions: selectedOptionIds,
239
245
  a11y: {
240
246
  role: 'option'
241
- }
247
+ },
248
+ limit: limit,
249
+ limitReachedMessage: limitReachedMessage
242
250
  }, SuggestionsProps)) : /*#__PURE__*/_react["default"].createElement(_EmptyState["default"], {
243
251
  isLoading: isFetchingOptions,
244
252
  options: options,
@@ -68,12 +68,10 @@ var SelectedOptions = /*#__PURE__*/function (_React$PureComponent) {
68
68
  size = _this$props.size,
69
69
  palette = _this$props.palette,
70
70
  dataId = _this$props.dataId,
71
- renderCustomSelectedValue = _this$props.renderCustomSelectedValue,
72
- isPopupOpen = _this$props.isPopupOpen,
73
- isPopupReady = _this$props.isPopupReady,
74
- isInputDisabled = _this$props.isDisabled;
71
+ limit = _this$props.limit;
75
72
  var isDarkPalette = palette === 'dark' ? 'dark' : 'danger';
76
- return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, selectedOptions.map(function (option) {
73
+ var selectedData = limit && limit > 0 ? selectedOptions.slice(0, limit) : selectedOptions;
74
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, selectedData.map(function (option) {
77
75
  var id = option.id,
78
76
  value = option.value,
79
77
  photoURL = option.photoURL,
@@ -113,25 +111,6 @@ var SelectedOptions = /*#__PURE__*/function (_React$PureComponent) {
113
111
  iconName: icon,
114
112
  iconSize: iconSize
115
113
  })));
116
- } else if (optionType === 'custom') {
117
- return /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
118
- className: "".concat(_SelectedOptionsModule["default"].tag, " ").concat(_SelectedOptionsModule["default"][size]),
119
- key: "".concat(id, "customTag"),
120
- dataId: dataId
121
- }, typeof renderCustomSelectedValue == 'function' ? renderCustomSelectedValue({
122
- onRemove: isDisabled || isReadOnly ? null : onRemove,
123
- palette: isDarkPalette,
124
- onSelectTag: isReadOnly ? null : onSelect,
125
- getRef: getRef,
126
- isReadOnly: isReadOnly,
127
- isPopupReady: isPopupReady,
128
- isPopupOpen: isPopupOpen,
129
- isDisabled: isInputDisabled,
130
- size: size,
131
- highLightedSelectOptions: highLightedSelectOptions,
132
- isActive: highLightedSelectOptions.indexOf(id) >= 0,
133
- option: option
134
- }) : renderCustomSelectedValue);
135
114
  }
136
115
 
137
116
  return /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
@@ -7,12 +7,14 @@ Object.defineProperty(exports, "__esModule", {
7
7
  });
8
8
  exports["default"] = void 0;
9
9
 
10
- var _react = _interopRequireDefault(require("react"));
10
+ var _react = _interopRequireWildcard(require("react"));
11
11
 
12
12
  var _propTypes = require("./props/propTypes");
13
13
 
14
14
  var _defaultProps = require("./props/defaultProps");
15
15
 
16
+ var _virtualizer = require("@zohodesk/virtualizer");
17
+
16
18
  var _ListItem = _interopRequireDefault(require("../ListItem/ListItem"));
17
19
 
18
20
  var _ListItemWithAvatar = _interopRequireDefault(require("../ListItem/ListItemWithAvatar"));
@@ -21,8 +23,14 @@ var _ListItemWithIcon = _interopRequireDefault(require("../ListItem/ListItemWith
21
23
 
22
24
  var _Layout = require("../Layout");
23
25
 
26
+ var _Common = require("../utils/Common");
27
+
24
28
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
25
29
 
30
+ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
31
+
32
+ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
33
+
26
34
  function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
27
35
 
28
36
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -51,22 +59,39 @@ function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Re
51
59
 
52
60
  function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
53
61
 
62
+ function SuggestionsVirtualizerContainer(_ref) {
63
+ var eleRef = _ref.eleRef,
64
+ children = _ref.children,
65
+ setVirtualizerContainerRefFunction = _ref.setVirtualizerContainerRefFunction;
66
+ (0, _react.useMemo)(function () {
67
+ typeof setVirtualizerContainerRefFunction === 'function' && setVirtualizerContainerRefFunction(eleRef);
68
+ }, [eleRef, setVirtualizerContainerRefFunction]);
69
+ return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, children);
70
+ }
71
+
54
72
  var Suggestions = /*#__PURE__*/function (_React$PureComponent) {
55
73
  _inherits(Suggestions, _React$PureComponent);
56
74
 
57
75
  var _super = _createSuper(Suggestions);
58
76
 
59
- function Suggestions() {
77
+ function Suggestions(props) {
78
+ var _this;
79
+
60
80
  _classCallCheck(this, Suggestions);
61
81
 
62
- return _super.apply(this, arguments);
82
+ _this = _super.call(this, props);
83
+ _this.renderSuggestionList = _this.renderSuggestionList.bind(_assertThisInitialized(_this));
84
+ _this.renderVirtualizerSuggestionListItem = _this.renderVirtualizerSuggestionListItem.bind(_assertThisInitialized(_this));
85
+ return _this;
63
86
  }
64
87
 
65
88
  _createClass(Suggestions, [{
66
- key: "render",
67
- value: function render() {
89
+ key: "renderSuggestionList",
90
+ value: function renderSuggestionList(_ref2) {
91
+ var suggestion = _ref2.suggestion,
92
+ index = _ref2.index,
93
+ ref = _ref2.ref;
68
94
  var _this$props = this.props,
69
- suggestions = _this$props.suggestions,
70
95
  getRef = _this$props.getRef,
71
96
  hoverOption = _this$props.hoverOption,
72
97
  onClick = _this$props.onClick,
@@ -74,123 +99,174 @@ var Suggestions = /*#__PURE__*/function (_React$PureComponent) {
74
99
  needTick = _this$props.needTick,
75
100
  needBorder = _this$props.needBorder,
76
101
  _this$props$selectedO = _this$props.selectedOptions,
77
- selectedOptions = _this$props$selectedO === void 0 ? [] : _this$props$selectedO,
78
- renderBeforeChildren = _this$props.renderBeforeChildren,
102
+ selectedOptions = _this$props$selectedO === void 0 ? _Common.DUMMY_ARRAY : _this$props$selectedO,
79
103
  activeId = _this$props.activeId,
80
104
  hoverId = _this$props.hoverId,
81
- dataId = _this$props.dataId,
82
105
  listItemSize = _this$props.listItemSize,
83
- className = _this$props.className,
84
106
  avatarPalette = _this$props.avatarPalette,
85
107
  palette = _this$props.palette,
86
- htmlId = _this$props.htmlId,
87
108
  a11y = _this$props.a11y,
88
- needMultiLineText = _this$props.needMultiLineText;
89
- var ariaParentRole = a11y.ariaParentRole,
90
- ariaMultiselectable = a11y.ariaMultiselectable;
91
- return /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
92
- isCover: false,
93
- role: ariaParentRole,
94
- id: htmlId,
95
- tabindex: "0",
96
- "aria-multiselectable": ariaMultiselectable
97
- }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
98
- dataId: "".concat(dataId),
99
- className: className ? className : ''
100
- }, suggestions.map(function (suggestion, index) {
101
- var id = suggestion.id,
102
- value = suggestion.value,
103
- secondaryValue = suggestion.secondaryValue,
104
- photoURL = suggestion.photoURL,
105
- icon = suggestion.icon,
106
- optionType = suggestion.optionType,
107
- iconSize = suggestion.iconSize,
108
- isDisabled = suggestion.isDisabled,
109
- listItemProps = suggestion.listItemProps,
110
- _suggestion$listItemC = suggestion.listItemCustomProps,
111
- listItemCustomProps = _suggestion$listItemC === void 0 ? {} : _suggestion$listItemC;
112
- var isActive = activeId === id || selectedOptions.indexOf(id) >= 0;
113
- var isHighlight = hoverOption === index || id === hoverId ? true : false;
114
- var list_a11y = Object.assign({}, a11y, {
115
- ariaSelected: isActive,
116
- ariaLabel: value,
117
- 'data-a11y-list-active': isHighlight
118
- });
119
-
120
- var commonProps = _objectSpread({
121
- isDisabled: isDisabled,
122
- needMultiLineText: needMultiLineText
123
- }, listItemCustomProps);
124
-
125
- if (listItemProps) {
126
- commonProps.customProps = {
127
- ListItemProps: _objectSpread({}, listItemProps)
128
- };
129
- }
130
-
131
- if (optionType === 'avatar') {
132
- return /*#__PURE__*/_react["default"].createElement(_ListItemWithAvatar["default"], _extends({}, commonProps, {
133
- autoHover: false,
134
- getRef: getRef,
135
- highlight: isHighlight,
136
- id: id,
137
- imgSrc: photoURL,
138
- key: "".concat(id, "avatarListItem"),
139
- name: value,
140
- onClick: onClick,
141
- onMouseEnter: onMouseEnter,
142
- value: value,
143
- title: value,
144
- needTick: needTick,
145
- needBorder: needBorder,
146
- active: isActive,
147
- size: listItemSize,
148
- avatarPalette: avatarPalette,
149
- palette: palette,
150
- a11y: list_a11y,
151
- secondaryValue: secondaryValue
152
- }));
153
- } else if (optionType === 'icon') {
154
- return /*#__PURE__*/_react["default"].createElement(_ListItemWithIcon["default"], _extends({}, commonProps, {
155
- autoHover: false,
156
- getRef: getRef,
157
- highlight: isHighlight,
158
- id: id,
159
- key: "".concat(id, "iconListItem"),
160
- onClick: onClick,
161
- onMouseEnter: onMouseEnter,
162
- value: value,
163
- title: value,
164
- iconName: icon,
165
- needTick: needTick,
166
- needBorder: needBorder,
167
- active: isActive,
168
- iconSize: iconSize,
169
- size: listItemSize,
170
- palette: palette,
171
- a11y: list_a11y,
172
- secondaryValue: secondaryValue
173
- }));
109
+ needMultiLineText = _this$props.needMultiLineText,
110
+ limit = _this$props.limit,
111
+ limitReachedMessage = _this$props.limitReachedMessage;
112
+ var id = suggestion.id,
113
+ value = suggestion.value,
114
+ secondaryValue = suggestion.secondaryValue,
115
+ photoURL = suggestion.photoURL,
116
+ icon = suggestion.icon,
117
+ optionType = suggestion.optionType,
118
+ iconSize = suggestion.iconSize,
119
+ isDisabled = suggestion.isDisabled,
120
+ listItemProps = suggestion.listItemProps,
121
+ _suggestion$listItemC = suggestion.listItemCustomProps,
122
+ listItemCustomProps = _suggestion$listItemC === void 0 ? _Common.DUMMY_OBJECT : _suggestion$listItemC;
123
+ var isActive = activeId === id || selectedOptions.indexOf(id) >= 0;
124
+ var isHighlight = hoverOption === index || id === hoverId ? true : false;
125
+ var selectedOptionsLength = selectedOptions.length;
126
+ var isLimitReached = selectedOptionsLength >= limit && !isActive;
127
+ var list_a11y = Object.assign({}, a11y, {
128
+ ariaSelected: isActive,
129
+ ariaLabel: value,
130
+ 'data-a11y-list-active': isHighlight
131
+ });
132
+
133
+ var commonProps = _objectSpread({
134
+ isDisabled: isDisabled ? isDisabled : isLimitReached,
135
+ needMultiLineText: needMultiLineText
136
+ }, listItemCustomProps);
137
+
138
+ if (listItemProps) {
139
+ commonProps.customProps = {
140
+ ListItemProps: _objectSpread({}, listItemProps)
141
+ };
142
+ }
143
+
144
+ if (isLimitReached) {
145
+ commonProps.disableTitle = limitReachedMessage;
146
+ }
147
+
148
+ function getListItemRef(ele, index, id) {
149
+ ref && ref(ele);
150
+
151
+ if (typeof getRef === 'function') {
152
+ getRef(ele, index, id);
174
153
  }
154
+ }
175
155
 
176
- return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], _extends({}, commonProps, {
156
+ if (optionType === 'avatar') {
157
+ return /*#__PURE__*/_react["default"].createElement(_ListItemWithAvatar["default"], _extends({}, commonProps, {
158
+ autoHover: false,
159
+ getRef: getListItemRef,
160
+ highlight: isHighlight,
161
+ id: id,
162
+ imgSrc: photoURL,
163
+ key: "".concat(id, "avatarListItem"),
164
+ name: value,
165
+ onClick: onClick,
166
+ onMouseEnter: onMouseEnter,
167
+ value: value,
168
+ title: value,
169
+ needTick: needTick,
170
+ needBorder: needBorder,
171
+ active: isActive,
172
+ size: listItemSize,
173
+ avatarPalette: avatarPalette,
174
+ palette: palette,
175
+ a11y: list_a11y,
176
+ secondaryValue: secondaryValue
177
+ }));
178
+ } else if (optionType === 'icon') {
179
+ return /*#__PURE__*/_react["default"].createElement(_ListItemWithIcon["default"], _extends({}, commonProps, {
177
180
  autoHover: false,
178
- getRef: getRef,
181
+ getRef: getListItemRef,
179
182
  highlight: isHighlight,
180
183
  id: id,
181
- key: "".concat(id, "listItem"),
184
+ key: "".concat(id, "iconListItem"),
182
185
  onClick: onClick,
183
186
  onMouseEnter: onMouseEnter,
184
187
  value: value,
185
188
  title: value,
189
+ iconName: icon,
186
190
  needTick: needTick,
187
191
  needBorder: needBorder,
188
192
  active: isActive,
193
+ iconSize: iconSize,
189
194
  size: listItemSize,
190
195
  palette: palette,
191
196
  a11y: list_a11y,
192
- renderBeforeChildren: renderBeforeChildren ? typeof renderBeforeChildren === 'function' ? renderBeforeChildren(suggestion) : renderBeforeChildren : null
197
+ secondaryValue: secondaryValue
193
198
  }));
199
+ }
200
+
201
+ return /*#__PURE__*/_react["default"].createElement(_ListItem["default"], _extends({}, commonProps, {
202
+ autoHover: false,
203
+ getRef: getListItemRef,
204
+ highlight: isHighlight,
205
+ id: id,
206
+ key: "".concat(id, "listItem"),
207
+ onClick: onClick,
208
+ onMouseEnter: onMouseEnter,
209
+ value: value,
210
+ title: value,
211
+ needTick: needTick,
212
+ needBorder: needBorder,
213
+ active: isActive,
214
+ size: listItemSize,
215
+ palette: palette,
216
+ a11y: list_a11y
217
+ }));
218
+ }
219
+ }, {
220
+ key: "renderVirtualizerSuggestionListItem",
221
+ value: function renderVirtualizerSuggestionListItem(_ref3) {
222
+ var index = _ref3.index,
223
+ ref = _ref3.ref;
224
+ var suggestions = this.props.suggestions;
225
+ var suggestion = suggestions[index];
226
+ return this.renderSuggestionList({
227
+ suggestion: suggestion,
228
+ index: index,
229
+ ref: ref
230
+ });
231
+ }
232
+ }, {
233
+ key: "render",
234
+ value: function render() {
235
+ var _this2 = this;
236
+
237
+ var _this$props2 = this.props,
238
+ suggestions = _this$props2.suggestions,
239
+ dataId = _this$props2.dataId,
240
+ className = _this$props2.className,
241
+ isVirtualizerEnabled = _this$props2.isVirtualizerEnabled,
242
+ htmlId = _this$props2.htmlId,
243
+ a11y = _this$props2.a11y,
244
+ getVirtualizerPublicMethods = _this$props2.getVirtualizerPublicMethods,
245
+ setVirtualizerContainerRefFunction = _this$props2.setVirtualizerContainerRefFunction;
246
+ var ariaParentRole = a11y.ariaParentRole,
247
+ ariaMultiselectable = a11y.ariaMultiselectable;
248
+ return /*#__PURE__*/_react["default"].createElement(_Layout.Container, {
249
+ isCover: false,
250
+ role: ariaParentRole,
251
+ id: htmlId,
252
+ tabindex: "0",
253
+ "aria-multiselectable": ariaMultiselectable
254
+ }, /*#__PURE__*/_react["default"].createElement(_Layout.Box, {
255
+ dataId: "".concat(dataId),
256
+ className: className ? className : ''
257
+ }, isVirtualizerEnabled ? /*#__PURE__*/_react["default"].createElement(_virtualizer.Virtualizer, {
258
+ containerType: SuggestionsVirtualizerContainer,
259
+ elementRenderer: this.renderVirtualizerSuggestionListItem,
260
+ getExposedPublicMethods: getVirtualizerPublicMethods,
261
+ elementsCount: suggestions.length,
262
+ isElementsFixedHeight: false,
263
+ dataId: "".concat(dataId, "_virtualizer"),
264
+ setVirtualizerContainerRefFunction: setVirtualizerContainerRefFunction
265
+ }) : suggestions.map(function (suggestion, index) {
266
+ return _this2.renderSuggestionList({
267
+ suggestion: suggestion,
268
+ index: index
269
+ });
194
270
  })));
195
271
  }
196
272
  }]);
@@ -8,35 +8,8 @@ var _MultiSelect = _interopRequireDefault(require("../MultiSelect"));
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
10
 
11
- var options = [{
12
- id: 1,
13
- text: 'custom 1',
14
- optionType: 'custom'
15
- }, {
16
- id: 2,
17
- text: 'custom 2',
18
- optionType: 'custom'
19
- }, {
20
- id: 3,
21
- text: 'custom 3',
22
- optionType: 'custom'
23
- }, {
24
- id: 4,
25
- text: 'custom 4',
26
- optionType: 'custom'
27
- }, {
28
- id: 5,
29
- text: 'custom 5',
30
- optionType: 'custom'
31
- }, {
32
- id: 6,
33
- text: 'custom 6',
34
- optionType: 'custom'
35
- }, {
36
- id: 7,
37
- text: 'custom 7',
38
- optionType: 'custom'
39
- }];
11
+ var testData = ['text1', 'text2', 'text3', 'text4', 'text5', 'text6', 'text7', 'text8', 'text9', 'text10'];
12
+ var testSelectedData = ['text1', 'text2', 'text3'];
40
13
  describe('MultiSelect', function () {
41
14
  test('rendering the defult props', function () {
42
15
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_MultiSelect["default"], null)),
@@ -44,12 +17,24 @@ describe('MultiSelect', function () {
44
17
 
45
18
  expect(asFragment()).toMatchSnapshot();
46
19
  });
47
- test('Should render with renderCustomSelectedValue', function () {
20
+ test('rendering with limit feature', function () {
48
21
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_MultiSelect["default"], {
49
- options: options,
50
- renderCustomSelectedValue: function renderCustomSelectedValue() {
51
- return /*#__PURE__*/_react["default"].createElement("span", null, "MultiSelect Custom Value");
52
- }
22
+ valueField: "id",
23
+ textField: "text",
24
+ options: testData,
25
+ selectedOptions: testSelectedData,
26
+ needSelectAll: true,
27
+ selectAllText: "Select All",
28
+ placeHolder: "Select Text",
29
+ i18nKeys: {
30
+ clearText: 'Clear Selected Items',
31
+ loadingText: 'Fetching...',
32
+ emptyText: 'No Options .',
33
+ noMoreText: 'No More Options .',
34
+ searchEmptyText: 'No Matches Found .'
35
+ },
36
+ needResponsive: true,
37
+ limit: 3
53
38
  })),
54
39
  asFragment = _render2.asFragment;
55
40
 
@@ -32,19 +32,4 @@ describe('SelectedOptions', function () {
32
32
 
33
33
  expect(asFragment()).toMatchSnapshot();
34
34
  });
35
- test('Should render with renderCustomSelectedValue', function () {
36
- var _render3 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_SelectedOptions["default"], {
37
- highLightedSelectOptions: [],
38
- selectedOptions: [{
39
- value: 'SelectedObject1',
40
- optionType: 'custom'
41
- }],
42
- renderCustomSelectedValue: function renderCustomSelectedValue() {
43
- return /*#__PURE__*/_react["default"].createElement("span", null, " SelectedOptions Custom Value");
44
- }
45
- })),
46
- asFragment = _render3.asFragment;
47
-
48
- expect(asFragment()).toMatchSnapshot();
49
- });
50
35
  });
@@ -8,6 +8,53 @@ var _Suggestions = _interopRequireDefault(require("../Suggestions"));
8
8
 
9
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
10
10
 
11
+ var sampleData = [{
12
+ "id": 2,
13
+ "value": "text2",
14
+ "optionType": "default",
15
+ "listItemProps": {
16
+ "style": {
17
+ "color": "red"
18
+ }
19
+ }
20
+ }, {
21
+ "id": 3,
22
+ "value": "text3",
23
+ "optionType": "default",
24
+ "listItemProps": {
25
+ "style": {
26
+ "color": "blue"
27
+ }
28
+ }
29
+ }, {
30
+ "id": 4,
31
+ "value": "text4",
32
+ "optionType": "default"
33
+ }, {
34
+ "id": 5,
35
+ "value": "text5",
36
+ "optionType": "default"
37
+ }, {
38
+ "id": 6,
39
+ "value": "text6",
40
+ "optionType": "default"
41
+ }, {
42
+ "id": 7,
43
+ "value": "text7",
44
+ "optionType": "default"
45
+ }, {
46
+ "id": 8,
47
+ "value": "text8",
48
+ "optionType": "default"
49
+ }, {
50
+ "id": 9,
51
+ "value": "text9",
52
+ "optionType": "default"
53
+ }, {
54
+ "id": 10,
55
+ "value": "text10",
56
+ "optionType": "default"
57
+ }];
11
58
  describe('Suggestions', function () {
12
59
  test('rendering the defult props', function () {
13
60
  var _render = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], {
@@ -17,15 +64,12 @@ describe('Suggestions', function () {
17
64
 
18
65
  expect(asFragment()).toMatchSnapshot();
19
66
  });
20
- test('Should render with renderBeforeChildren', function () {
67
+ test('rendering with limit props', function () {
21
68
  var _render2 = (0, _react2.render)( /*#__PURE__*/_react["default"].createElement(_Suggestions["default"], {
22
- suggestions: [{
23
- value: 'Suggestions Option 1',
24
- id: '1'
25
- }],
26
- renderBeforeChildren: function renderBeforeChildren() {
27
- return /*#__PURE__*/_react["default"].createElement("span", null, "Suggestions Before Children");
28
- }
69
+ selectedOptions: [1, 2, 3, 4],
70
+ suggestions: sampleData,
71
+ limit: 3,
72
+ limitReachedMessage: "Limit Reached"
29
73
  })),
30
74
  asFragment = _render2.asFragment;
31
75
 
@@ -25,10 +25,10 @@ exports[`AdvancedGroupMultiSelect rendering the defult props 1`] = `
25
25
  "
26
26
  />
27
27
  <div
28
- class="varClass customContainer effect container custmInputWrapper flex rowdir"
29
- data-id="multiSelect_textBox"
28
+ class="container effect custmInputWrapper flex rowdir"
29
+ data-id="containerComponent"
30
30
  data-selector-id="textBoxIcon"
31
- data-test-id="multiSelect_textBox"
31
+ data-test-id="containerComponent"
32
32
  >
33
33
  <div
34
34
  class="grow basis shrinkOff"
@@ -25,10 +25,10 @@ exports[`AdvancedMultiSelect rendering the defult props 1`] = `
25
25
  "
26
26
  />
27
27
  <div
28
- class="varClass customContainer effect container custmInputWrapper flex rowdir"
29
- data-id="textBoxIcon"
28
+ class="container effect custmInputWrapper flex rowdir"
29
+ data-id="containerComponent"
30
30
  data-selector-id="textBoxIcon"
31
- data-test-id="textBoxIcon"
31
+ data-test-id="containerComponent"
32
32
  >
33
33
  <div
34
34
  class="grow basis shrinkOff"
@@ -98,10 +98,10 @@ exports[`AdvancedMultiSelect rendering the options array with objects and string
98
98
  "
99
99
  />
100
100
  <div
101
- class="varClass customContainer effect container custmInputWrapper flex rowdir"
102
- data-id="textBoxIcon"
101
+ class="container effect custmInputWrapper flex rowdir"
102
+ data-id="containerComponent"
103
103
  data-selector-id="textBoxIcon"
104
- data-test-id="textBoxIcon"
104
+ data-test-id="containerComponent"
105
105
  >
106
106
  <div
107
107
  class="grow basis shrinkOff"
@@ -346,10 +346,10 @@ exports[`AdvancedMultiSelect rendering the options array with only objects using
346
346
  "
347
347
  />
348
348
  <div
349
- class="varClass customContainer effect container custmInputWrapper flex rowdir"
350
- data-id="textBoxIcon"
349
+ class="container effect custmInputWrapper flex rowdir"
350
+ data-id="containerComponent"
351
351
  data-selector-id="textBoxIcon"
352
- data-test-id="textBoxIcon"
352
+ data-test-id="containerComponent"
353
353
  >
354
354
  <div
355
355
  class="grow basis shrinkOff"