@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
@@ -1,133 +1,114 @@
1
1
  /**** Libraries ****/
2
- import React from 'react';
2
+ import React, { useMemo } from 'react';
3
3
  import { Suggestions_propTypes } from "./props/propTypes";
4
4
  import { Suggestions_defaultProps } from "./props/defaultProps";
5
+ import { Virtualizer } from '@zohodesk/virtualizer';
5
6
  /**** Components ****/
6
7
 
7
8
  import ListItem from "../ListItem/ListItem";
8
9
  import ListItemWithAvatar from "../ListItem/ListItemWithAvatar";
9
10
  import ListItemWithIcon from "../ListItem/ListItemWithIcon";
10
11
  import { Container, Box } from "../Layout";
12
+ import { DUMMY_OBJECT, DUMMY_ARRAY } from "../utils/Common";
13
+
14
+ function SuggestionsVirtualizerContainer(_ref) {
15
+ let {
16
+ eleRef,
17
+ children,
18
+ setVirtualizerContainerRefFunction
19
+ } = _ref;
20
+ useMemo(() => {
21
+ typeof setVirtualizerContainerRefFunction === 'function' && setVirtualizerContainerRefFunction(eleRef);
22
+ }, [eleRef, setVirtualizerContainerRefFunction]);
23
+ return /*#__PURE__*/React.createElement(React.Fragment, null, children);
24
+ }
25
+
11
26
  export default class Suggestions extends React.PureComponent {
12
- render() {
27
+ constructor(props) {
28
+ super(props);
29
+ this.renderSuggestionList = this.renderSuggestionList.bind(this);
30
+ this.renderVirtualizerSuggestionListItem = this.renderVirtualizerSuggestionListItem.bind(this);
31
+ }
32
+
33
+ renderSuggestionList(_ref2) {
34
+ let {
35
+ suggestion,
36
+ index,
37
+ ref
38
+ } = _ref2;
13
39
  const {
14
- suggestions,
15
40
  getRef,
16
41
  hoverOption,
17
42
  onClick,
18
43
  onMouseEnter,
19
44
  needTick,
20
45
  needBorder,
21
- selectedOptions = [],
22
- renderBeforeChildren,
46
+ selectedOptions = DUMMY_ARRAY,
23
47
  activeId,
24
48
  hoverId,
25
- dataId,
26
49
  listItemSize,
27
- className,
28
50
  avatarPalette,
29
51
  palette,
30
- htmlId,
31
52
  a11y,
32
- needMultiLineText
53
+ needMultiLineText,
54
+ limit,
55
+ limitReachedMessage
33
56
  } = this.props;
34
57
  const {
35
- ariaParentRole,
36
- ariaMultiselectable
37
- } = a11y;
38
- return /*#__PURE__*/React.createElement(Container, {
39
- isCover: false,
40
- role: ariaParentRole,
41
- id: htmlId,
42
- tabindex: "0",
43
- "aria-multiselectable": ariaMultiselectable
44
- }, /*#__PURE__*/React.createElement(Box, {
45
- dataId: `${dataId}`,
46
- className: className ? className : ''
47
- }, suggestions.map((suggestion, index) => {
48
- const {
49
- id,
50
- value,
51
- secondaryValue,
52
- photoURL,
53
- icon,
54
- optionType,
55
- iconSize,
56
- isDisabled,
57
- listItemProps,
58
- listItemCustomProps = {}
59
- } = suggestion;
60
- const isActive = activeId === id || selectedOptions.indexOf(id) >= 0;
61
- const isHighlight = hoverOption === index || id === hoverId ? true : false;
62
- const list_a11y = Object.assign({}, a11y, {
63
- ariaSelected: isActive,
64
- ariaLabel: value,
65
- 'data-a11y-list-active': isHighlight
66
- });
67
- const commonProps = {
68
- isDisabled,
69
- needMultiLineText,
70
- ...listItemCustomProps
58
+ id,
59
+ value,
60
+ secondaryValue,
61
+ photoURL,
62
+ icon,
63
+ optionType,
64
+ iconSize,
65
+ isDisabled,
66
+ listItemProps,
67
+ listItemCustomProps = DUMMY_OBJECT
68
+ } = suggestion;
69
+ const isActive = activeId === id || selectedOptions.indexOf(id) >= 0;
70
+ const isHighlight = hoverOption === index || id === hoverId ? true : false;
71
+ const selectedOptionsLength = selectedOptions.length;
72
+ const isLimitReached = selectedOptionsLength >= limit && !isActive;
73
+ const list_a11y = Object.assign({}, a11y, {
74
+ ariaSelected: isActive,
75
+ ariaLabel: value,
76
+ 'data-a11y-list-active': isHighlight
77
+ });
78
+ const commonProps = {
79
+ isDisabled: isDisabled ? isDisabled : isLimitReached,
80
+ needMultiLineText,
81
+ ...listItemCustomProps
82
+ };
83
+
84
+ if (listItemProps) {
85
+ commonProps.customProps = {
86
+ ListItemProps: { ...listItemProps
87
+ }
71
88
  };
89
+ }
72
90
 
73
- if (listItemProps) {
74
- commonProps.customProps = {
75
- ListItemProps: { ...listItemProps
76
- }
77
- };
78
- }
91
+ if (isLimitReached) {
92
+ commonProps.disableTitle = limitReachedMessage;
93
+ }
79
94
 
80
- if (optionType === 'avatar') {
81
- return /*#__PURE__*/React.createElement(ListItemWithAvatar, { ...commonProps,
82
- autoHover: false,
83
- getRef: getRef,
84
- highlight: isHighlight,
85
- id: id,
86
- imgSrc: photoURL,
87
- key: `${id}avatarListItem`,
88
- name: value,
89
- onClick: onClick,
90
- onMouseEnter: onMouseEnter,
91
- value: value,
92
- title: value,
93
- needTick: needTick,
94
- needBorder: needBorder,
95
- active: isActive,
96
- size: listItemSize,
97
- avatarPalette: avatarPalette,
98
- palette: palette,
99
- a11y: list_a11y,
100
- secondaryValue: secondaryValue
101
- });
102
- } else if (optionType === 'icon') {
103
- return /*#__PURE__*/React.createElement(ListItemWithIcon, { ...commonProps,
104
- autoHover: false,
105
- getRef: getRef,
106
- highlight: isHighlight,
107
- id: id,
108
- key: `${id}iconListItem`,
109
- onClick: onClick,
110
- onMouseEnter: onMouseEnter,
111
- value: value,
112
- title: value,
113
- iconName: icon,
114
- needTick: needTick,
115
- needBorder: needBorder,
116
- active: isActive,
117
- iconSize: iconSize,
118
- size: listItemSize,
119
- palette: palette,
120
- a11y: list_a11y,
121
- secondaryValue: secondaryValue
122
- });
95
+ function getListItemRef(ele, index, id) {
96
+ ref && ref(ele);
97
+
98
+ if (typeof getRef === 'function') {
99
+ getRef(ele, index, id);
123
100
  }
101
+ }
124
102
 
125
- return /*#__PURE__*/React.createElement(ListItem, { ...commonProps,
103
+ if (optionType === 'avatar') {
104
+ return /*#__PURE__*/React.createElement(ListItemWithAvatar, { ...commonProps,
126
105
  autoHover: false,
127
- getRef: getRef,
106
+ getRef: getListItemRef,
128
107
  highlight: isHighlight,
129
108
  id: id,
130
- key: `${id}listItem`,
109
+ imgSrc: photoURL,
110
+ key: `${id}avatarListItem`,
111
+ name: value,
131
112
  onClick: onClick,
132
113
  onMouseEnter: onMouseEnter,
133
114
  value: value,
@@ -136,9 +117,105 @@ export default class Suggestions extends React.PureComponent {
136
117
  needBorder: needBorder,
137
118
  active: isActive,
138
119
  size: listItemSize,
120
+ avatarPalette: avatarPalette,
139
121
  palette: palette,
140
122
  a11y: list_a11y,
141
- renderBeforeChildren: renderBeforeChildren ? typeof renderBeforeChildren === 'function' ? renderBeforeChildren(suggestion) : renderBeforeChildren : null
123
+ secondaryValue: secondaryValue
124
+ });
125
+ } else if (optionType === 'icon') {
126
+ return /*#__PURE__*/React.createElement(ListItemWithIcon, { ...commonProps,
127
+ autoHover: false,
128
+ getRef: getListItemRef,
129
+ highlight: isHighlight,
130
+ id: id,
131
+ key: `${id}iconListItem`,
132
+ onClick: onClick,
133
+ onMouseEnter: onMouseEnter,
134
+ value: value,
135
+ title: value,
136
+ iconName: icon,
137
+ needTick: needTick,
138
+ needBorder: needBorder,
139
+ active: isActive,
140
+ iconSize: iconSize,
141
+ size: listItemSize,
142
+ palette: palette,
143
+ a11y: list_a11y,
144
+ secondaryValue: secondaryValue
145
+ });
146
+ }
147
+
148
+ return /*#__PURE__*/React.createElement(ListItem, { ...commonProps,
149
+ autoHover: false,
150
+ getRef: getListItemRef,
151
+ highlight: isHighlight,
152
+ id: id,
153
+ key: `${id}listItem`,
154
+ onClick: onClick,
155
+ onMouseEnter: onMouseEnter,
156
+ value: value,
157
+ title: value,
158
+ needTick: needTick,
159
+ needBorder: needBorder,
160
+ active: isActive,
161
+ size: listItemSize,
162
+ palette: palette,
163
+ a11y: list_a11y
164
+ });
165
+ }
166
+
167
+ renderVirtualizerSuggestionListItem(_ref3) {
168
+ let {
169
+ index,
170
+ ref
171
+ } = _ref3;
172
+ const {
173
+ suggestions
174
+ } = this.props;
175
+ const suggestion = suggestions[index];
176
+ return this.renderSuggestionList({
177
+ suggestion,
178
+ index,
179
+ ref
180
+ });
181
+ }
182
+
183
+ render() {
184
+ const {
185
+ suggestions,
186
+ dataId,
187
+ className,
188
+ isVirtualizerEnabled,
189
+ htmlId,
190
+ a11y,
191
+ getVirtualizerPublicMethods,
192
+ setVirtualizerContainerRefFunction
193
+ } = this.props;
194
+ const {
195
+ ariaParentRole,
196
+ ariaMultiselectable
197
+ } = a11y;
198
+ return /*#__PURE__*/React.createElement(Container, {
199
+ isCover: false,
200
+ role: ariaParentRole,
201
+ id: htmlId,
202
+ tabindex: "0",
203
+ "aria-multiselectable": ariaMultiselectable
204
+ }, /*#__PURE__*/React.createElement(Box, {
205
+ dataId: `${dataId}`,
206
+ className: className ? className : ''
207
+ }, isVirtualizerEnabled ? /*#__PURE__*/React.createElement(Virtualizer, {
208
+ containerType: SuggestionsVirtualizerContainer,
209
+ elementRenderer: this.renderVirtualizerSuggestionListItem,
210
+ getExposedPublicMethods: getVirtualizerPublicMethods,
211
+ elementsCount: suggestions.length,
212
+ isElementsFixedHeight: false,
213
+ dataId: `${dataId}_virtualizer`,
214
+ setVirtualizerContainerRefFunction: setVirtualizerContainerRefFunction
215
+ }) : suggestions.map((suggestion, index) => {
216
+ return this.renderSuggestionList({
217
+ suggestion,
218
+ index
142
219
  });
143
220
  })));
144
221
  }
@@ -1,35 +1,8 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
  import MultiSelect from "../MultiSelect";
4
- const options = [{
5
- id: 1,
6
- text: 'custom 1',
7
- optionType: 'custom'
8
- }, {
9
- id: 2,
10
- text: 'custom 2',
11
- optionType: 'custom'
12
- }, {
13
- id: 3,
14
- text: 'custom 3',
15
- optionType: 'custom'
16
- }, {
17
- id: 4,
18
- text: 'custom 4',
19
- optionType: 'custom'
20
- }, {
21
- id: 5,
22
- text: 'custom 5',
23
- optionType: 'custom'
24
- }, {
25
- id: 6,
26
- text: 'custom 6',
27
- optionType: 'custom'
28
- }, {
29
- id: 7,
30
- text: 'custom 7',
31
- optionType: 'custom'
32
- }];
4
+ const testData = ['text1', 'text2', 'text3', 'text4', 'text5', 'text6', 'text7', 'text8', 'text9', 'text10'];
5
+ const testSelectedData = ['text1', 'text2', 'text3'];
33
6
  describe('MultiSelect', () => {
34
7
  test('rendering the defult props', () => {
35
8
  const {
@@ -37,12 +10,26 @@ describe('MultiSelect', () => {
37
10
  } = render( /*#__PURE__*/React.createElement(MultiSelect, null));
38
11
  expect(asFragment()).toMatchSnapshot();
39
12
  });
40
- test('Should render with renderCustomSelectedValue', () => {
13
+ test('rendering with limit feature', () => {
41
14
  const {
42
15
  asFragment
43
16
  } = render( /*#__PURE__*/React.createElement(MultiSelect, {
44
- options: options,
45
- renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, "MultiSelect Custom Value")
17
+ valueField: "id",
18
+ textField: "text",
19
+ options: testData,
20
+ selectedOptions: testSelectedData,
21
+ needSelectAll: true,
22
+ selectAllText: "Select All",
23
+ placeHolder: "Select Text",
24
+ i18nKeys: {
25
+ clearText: 'Clear Selected Items',
26
+ loadingText: 'Fetching...',
27
+ emptyText: 'No Options .',
28
+ noMoreText: 'No More Options .',
29
+ searchEmptyText: 'No Matches Found .'
30
+ },
31
+ needResponsive: true,
32
+ limit: 3
46
33
  }));
47
34
  expect(asFragment()).toMatchSnapshot();
48
35
  });
@@ -25,17 +25,4 @@ describe('SelectedOptions', () => {
25
25
  }));
26
26
  expect(asFragment()).toMatchSnapshot();
27
27
  });
28
- test('Should render with renderCustomSelectedValue', () => {
29
- const {
30
- asFragment
31
- } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
32
- highLightedSelectOptions: [],
33
- selectedOptions: [{
34
- value: 'SelectedObject1',
35
- optionType: 'custom'
36
- }],
37
- renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, " SelectedOptions Custom Value")
38
- }));
39
- expect(asFragment()).toMatchSnapshot();
40
- });
41
28
  });
@@ -1,6 +1,53 @@
1
1
  import React from 'react';
2
2
  import { render } from '@testing-library/react';
3
3
  import Suggestions from "../Suggestions";
4
+ const sampleData = [{
5
+ "id": 2,
6
+ "value": "text2",
7
+ "optionType": "default",
8
+ "listItemProps": {
9
+ "style": {
10
+ "color": "red"
11
+ }
12
+ }
13
+ }, {
14
+ "id": 3,
15
+ "value": "text3",
16
+ "optionType": "default",
17
+ "listItemProps": {
18
+ "style": {
19
+ "color": "blue"
20
+ }
21
+ }
22
+ }, {
23
+ "id": 4,
24
+ "value": "text4",
25
+ "optionType": "default"
26
+ }, {
27
+ "id": 5,
28
+ "value": "text5",
29
+ "optionType": "default"
30
+ }, {
31
+ "id": 6,
32
+ "value": "text6",
33
+ "optionType": "default"
34
+ }, {
35
+ "id": 7,
36
+ "value": "text7",
37
+ "optionType": "default"
38
+ }, {
39
+ "id": 8,
40
+ "value": "text8",
41
+ "optionType": "default"
42
+ }, {
43
+ "id": 9,
44
+ "value": "text9",
45
+ "optionType": "default"
46
+ }, {
47
+ "id": 10,
48
+ "value": "text10",
49
+ "optionType": "default"
50
+ }];
4
51
  describe('Suggestions', () => {
5
52
  test('rendering the defult props', () => {
6
53
  const {
@@ -10,15 +57,14 @@ describe('Suggestions', () => {
10
57
  }));
11
58
  expect(asFragment()).toMatchSnapshot();
12
59
  });
13
- test('Should render with renderBeforeChildren', () => {
60
+ test('rendering with limit props', () => {
14
61
  const {
15
62
  asFragment
16
63
  } = render( /*#__PURE__*/React.createElement(Suggestions, {
17
- suggestions: [{
18
- value: 'Suggestions Option 1',
19
- id: '1'
20
- }],
21
- renderBeforeChildren: () => /*#__PURE__*/React.createElement("span", null, "Suggestions Before Children")
64
+ selectedOptions: [1, 2, 3, 4],
65
+ suggestions: sampleData,
66
+ limit: 3,
67
+ limitReachedMessage: "Limit Reached"
22
68
  }));
23
69
  expect(asFragment()).toMatchSnapshot();
24
70
  });
@@ -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"