@zohodesk/components 1.6.32 → 1.6.34

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 (162) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/es/Accordion/__tests__/Accordion.spec.js +117 -3
  3. package/es/Accordion/__tests__/AccordionItem.spec.js +118 -6
  4. package/es/Accordion/__tests__/__snapshots__/Accordion.spec.js.snap +344 -2
  5. package/es/Accordion/__tests__/__snapshots__/AccordionItem.spec.js.snap +155 -3
  6. package/es/Animation/__tests__/Animation.spec.js +28 -4
  7. package/es/Animation/__tests__/__snapshots__/Animation.spec.js.snap +92 -2
  8. package/es/Button/css/Button.module.css +2 -3
  9. package/es/CheckBox/CheckBox.js +1 -1
  10. package/es/CheckBox/__tests__/__snapshots__/CheckBox.spec.js.snap +1 -1
  11. package/es/DateTime/DateTime.module.css +2 -2
  12. package/es/DateTime/__tests__/CalendarView.spec.js +70 -3
  13. package/es/DateTime/__tests__/DateTime.spec.js +89 -6
  14. package/es/DateTime/__tests__/DateTimePopupFooter.spec.js +20 -2
  15. package/es/DateTime/__tests__/DateTimePopupHeader.spec.js +29 -2
  16. package/es/DateTime/__tests__/DateWidget.spec.js +34 -2
  17. package/es/DateTime/__tests__/DaysRow.spec.js +19 -3
  18. package/es/DateTime/__tests__/Time.spec.js +50 -3
  19. package/es/DateTime/__tests__/YearView.spec.js +60 -3
  20. package/es/DateTime/__tests__/__snapshots__/CalendarView.spec.js.snap +2907 -170
  21. package/es/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +4392 -108
  22. package/es/DateTime/__tests__/__snapshots__/DateTimePopupFooter.spec.js.snap +67 -1
  23. package/es/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +187 -1
  24. package/es/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +265 -1
  25. package/es/DateTime/__tests__/__snapshots__/DaysRow.spec.js.snap +155 -2
  26. package/es/DateTime/__tests__/__snapshots__/Time.spec.js.snap +522 -5
  27. package/es/DateTime/__tests__/__snapshots__/YearView.spec.js.snap +540 -0
  28. package/es/DropBox/DropBoxElement/css/DropBoxElement.module.css +1 -4
  29. package/es/Heading/Heading.module.css +1 -1
  30. package/es/Heading/__tests__/Heading.spec.js +57 -3
  31. package/es/Heading/__tests__/__snapshots__/Heading.spec.js.snap +87 -14
  32. package/es/ListItem/__tests__/ListContainer.spec.js +228 -1
  33. package/es/ListItem/__tests__/ListItem.spec.js +359 -1
  34. package/es/ListItem/__tests__/ListItemWithAvatar.spec.js +390 -1
  35. package/es/ListItem/__tests__/ListItemWithCheckBox.spec.js +214 -1
  36. package/es/ListItem/__tests__/ListItemWithIcon.spec.js +303 -1
  37. package/es/ListItem/__tests__/ListItemWithRadio.spec.js +230 -1
  38. package/es/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +602 -0
  39. package/es/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +1807 -0
  40. package/es/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +2703 -0
  41. package/es/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +2909 -0
  42. package/es/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +2009 -0
  43. package/es/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +3070 -0
  44. package/es/MultiSelect/MultiSelect.module.css +1 -2
  45. package/es/MultiSelect/__tests__/AdvancedGroupMultiSelect.spec.js +671 -1
  46. package/es/MultiSelect/__tests__/AdvancedMultiSelect.spec.js +730 -1
  47. package/es/MultiSelect/__tests__/EmptyState.spec.js +268 -1
  48. package/es/MultiSelect/__tests__/MultiSelect.spec.js +889 -2
  49. package/es/MultiSelect/__tests__/MultiSelectHeader.spec.js +50 -1
  50. package/es/MultiSelect/__tests__/MultiSelectWithAvatar.spec.js +487 -1
  51. package/es/MultiSelect/__tests__/SelectedOptions.spec.js +291 -1
  52. package/es/MultiSelect/__tests__/Suggestions.spec.js +370 -2
  53. package/es/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +11785 -0
  54. package/es/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +12083 -0
  55. package/es/MultiSelect/__tests__/__snapshots__/EmptyState.spec.js.snap +253 -0
  56. package/es/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +14052 -0
  57. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +136 -0
  58. package/es/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +11506 -0
  59. package/es/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +1382 -0
  60. package/es/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +3611 -0
  61. package/es/PopOver/__tests__/PopOver.spec.js +141 -2
  62. package/es/PopOver/__tests__/__snapshots__/PopOver.spec.js.snap +1260 -0
  63. package/es/ResponsiveDropBox/__tests__/ResponsiveDropBox.spec.js +212 -1
  64. package/es/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1802 -0
  65. package/es/Tab/Tabs.module.css +1 -2
  66. package/es/Tab/__tests__/Tab.spec.js +249 -1
  67. package/es/Tab/__tests__/TabContent.spec.js +34 -1
  68. package/es/Tab/__tests__/TabContentWrapper.spec.js +72 -1
  69. package/es/Tab/__tests__/TabWrapper.spec.js +163 -1
  70. package/es/Tab/__tests__/Tabs.spec.js +681 -1
  71. package/es/Tab/__tests__/__snapshots__/Tab.spec.js.snap +1049 -0
  72. package/es/Tab/__tests__/__snapshots__/TabContent.spec.js.snap +99 -0
  73. package/es/Tab/__tests__/__snapshots__/TabContentWrapper.spec.js.snap +121 -0
  74. package/es/Tab/__tests__/__snapshots__/TabWrapper.spec.js.snap +2002 -0
  75. package/es/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +11053 -0
  76. package/es/Textarea/Textarea.module.css +1 -1
  77. package/es/Tooltip/Tooltip.module.css +1 -2
  78. package/es/Tooltip/__tests__/Tooltip.spec.js +590 -0
  79. package/es/Tooltip/__tests__/__snapshots__/Tooltip.spec.js.snap +813 -0
  80. package/es/Typography/css/Typography.module.css +8 -7
  81. package/es/common/common.module.css +4 -4
  82. package/lib/Accordion/__tests__/Accordion.spec.js +122 -2
  83. package/lib/Accordion/__tests__/AccordionItem.spec.js +126 -4
  84. package/lib/Accordion/__tests__/__snapshots__/Accordion.spec.js.snap +344 -2
  85. package/lib/Accordion/__tests__/__snapshots__/AccordionItem.spec.js.snap +155 -3
  86. package/lib/Animation/__tests__/Animation.spec.js +31 -5
  87. package/lib/Animation/__tests__/__snapshots__/Animation.spec.js.snap +92 -2
  88. package/lib/Button/css/Button.module.css +2 -3
  89. package/lib/CheckBox/CheckBox.js +1 -1
  90. package/lib/CheckBox/__tests__/__snapshots__/CheckBox.spec.js.snap +1 -1
  91. package/lib/DateTime/DateTime.module.css +2 -2
  92. package/lib/DateTime/__tests__/CalendarView.spec.js +71 -2
  93. package/lib/DateTime/__tests__/DateTime.spec.js +92 -6
  94. package/lib/DateTime/__tests__/DateTimePopupFooter.spec.js +21 -1
  95. package/lib/DateTime/__tests__/DateTimePopupHeader.spec.js +30 -1
  96. package/lib/DateTime/__tests__/DateWidget.spec.js +35 -1
  97. package/lib/DateTime/__tests__/DaysRow.spec.js +20 -2
  98. package/lib/DateTime/__tests__/Time.spec.js +51 -2
  99. package/lib/DateTime/__tests__/YearView.spec.js +61 -2
  100. package/lib/DateTime/__tests__/__snapshots__/CalendarView.spec.js.snap +2907 -170
  101. package/lib/DateTime/__tests__/__snapshots__/DateTime.spec.js.snap +4392 -108
  102. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupFooter.spec.js.snap +67 -1
  103. package/lib/DateTime/__tests__/__snapshots__/DateTimePopupHeader.spec.js.snap +187 -1
  104. package/lib/DateTime/__tests__/__snapshots__/DateWidget.spec.js.snap +265 -1
  105. package/lib/DateTime/__tests__/__snapshots__/DaysRow.spec.js.snap +155 -2
  106. package/lib/DateTime/__tests__/__snapshots__/Time.spec.js.snap +522 -5
  107. package/lib/DateTime/__tests__/__snapshots__/YearView.spec.js.snap +540 -0
  108. package/lib/DropBox/DropBoxElement/css/DropBoxElement.module.css +1 -4
  109. package/lib/Heading/Heading.module.css +1 -1
  110. package/lib/Heading/__tests__/Heading.spec.js +60 -4
  111. package/lib/Heading/__tests__/__snapshots__/Heading.spec.js.snap +87 -14
  112. package/lib/ListItem/__tests__/ListContainer.spec.js +229 -0
  113. package/lib/ListItem/__tests__/ListItem.spec.js +362 -0
  114. package/lib/ListItem/__tests__/ListItemWithAvatar.spec.js +391 -0
  115. package/lib/ListItem/__tests__/ListItemWithCheckBox.spec.js +215 -0
  116. package/lib/ListItem/__tests__/ListItemWithIcon.spec.js +304 -0
  117. package/lib/ListItem/__tests__/ListItemWithRadio.spec.js +231 -0
  118. package/lib/ListItem/__tests__/__snapshots__/ListContainer.spec.js.snap +602 -0
  119. package/lib/ListItem/__tests__/__snapshots__/ListItem.spec.js.snap +1807 -0
  120. package/lib/ListItem/__tests__/__snapshots__/ListItemWithAvatar.spec.js.snap +2703 -0
  121. package/lib/ListItem/__tests__/__snapshots__/ListItemWithCheckBox.spec.js.snap +2909 -0
  122. package/lib/ListItem/__tests__/__snapshots__/ListItemWithIcon.spec.js.snap +2009 -0
  123. package/lib/ListItem/__tests__/__snapshots__/ListItemWithRadio.spec.js.snap +3070 -0
  124. package/lib/MultiSelect/MultiSelect.module.css +1 -2
  125. package/lib/MultiSelect/__tests__/AdvancedGroupMultiSelect.spec.js +692 -0
  126. package/lib/MultiSelect/__tests__/AdvancedMultiSelect.spec.js +741 -0
  127. package/lib/MultiSelect/__tests__/EmptyState.spec.js +273 -0
  128. package/lib/MultiSelect/__tests__/MultiSelect.spec.js +910 -0
  129. package/lib/MultiSelect/__tests__/MultiSelectHeader.spec.js +51 -0
  130. package/lib/MultiSelect/__tests__/MultiSelectWithAvatar.spec.js +497 -0
  131. package/lib/MultiSelect/__tests__/SelectedOptions.spec.js +305 -0
  132. package/lib/MultiSelect/__tests__/Suggestions.spec.js +375 -0
  133. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedGroupMultiSelect.spec.js.snap +11785 -0
  134. package/lib/MultiSelect/__tests__/__snapshots__/AdvancedMultiSelect.spec.js.snap +12083 -0
  135. package/lib/MultiSelect/__tests__/__snapshots__/EmptyState.spec.js.snap +253 -0
  136. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelect.spec.js.snap +14052 -0
  137. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectHeader.spec.js.snap +136 -0
  138. package/lib/MultiSelect/__tests__/__snapshots__/MultiSelectWithAvatar.spec.js.snap +11506 -0
  139. package/lib/MultiSelect/__tests__/__snapshots__/SelectedOptions.spec.js.snap +1382 -0
  140. package/lib/MultiSelect/__tests__/__snapshots__/Suggestions.spec.js.snap +3611 -0
  141. package/lib/PopOver/__tests__/PopOver.spec.js +150 -1
  142. package/lib/PopOver/__tests__/__snapshots__/PopOver.spec.js.snap +1260 -0
  143. package/lib/ResponsiveDropBox/__tests__/ResponsiveDropBox.spec.js +213 -0
  144. package/lib/ResponsiveDropBox/__tests__/__snapshots__/ResponsiveDropBox.spec.js.snap +1802 -0
  145. package/lib/Tab/Tabs.module.css +1 -2
  146. package/lib/Tab/__tests__/Tab.spec.js +250 -0
  147. package/lib/Tab/__tests__/TabContent.spec.js +35 -0
  148. package/lib/Tab/__tests__/TabContentWrapper.spec.js +76 -0
  149. package/lib/Tab/__tests__/TabWrapper.spec.js +174 -0
  150. package/lib/Tab/__tests__/Tabs.spec.js +741 -0
  151. package/lib/Tab/__tests__/__snapshots__/Tab.spec.js.snap +1049 -0
  152. package/lib/Tab/__tests__/__snapshots__/TabContent.spec.js.snap +99 -0
  153. package/lib/Tab/__tests__/__snapshots__/TabContentWrapper.spec.js.snap +121 -0
  154. package/lib/Tab/__tests__/__snapshots__/TabWrapper.spec.js.snap +2002 -0
  155. package/lib/Tab/__tests__/__snapshots__/Tabs.spec.js.snap +11053 -0
  156. package/lib/Textarea/Textarea.module.css +1 -1
  157. package/lib/Tooltip/Tooltip.module.css +1 -2
  158. package/lib/Tooltip/__tests__/Tooltip.spec.js +629 -0
  159. package/lib/Tooltip/__tests__/__snapshots__/Tooltip.spec.js.snap +813 -0
  160. package/lib/Typography/css/Typography.module.css +8 -7
  161. package/lib/common/common.module.css +4 -4
  162. package/package.json +6 -5
@@ -1,7 +1,8 @@
1
1
  import React from 'react';
2
- import { render } from '@testing-library/react';
2
+ import { render, cleanup } from '@testing-library/react';
3
3
  import SelectedOptions from "../SelectedOptions";
4
4
  describe('SelectedOptions', () => {
5
+ afterEach(() => cleanup());
5
6
  test('rendering the defult props', () => {
6
7
  const {
7
8
  asFragment
@@ -37,5 +38,294 @@ describe('SelectedOptions', () => {
37
38
  renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, " SelectedOptions Custom Value")
38
39
  }));
39
40
  expect(asFragment()).toMatchSnapshot();
41
+ }); // highLightedSelectOptions is read for every option, so each case below supplies it
42
+
43
+ const options = [{
44
+ id: 1,
45
+ value: 'Option 1'
46
+ }, {
47
+ id: 2,
48
+ value: 'Option 2'
49
+ }, {
50
+ id: 3,
51
+ value: 'Option 3'
52
+ }];
53
+ test('Render with selectedOptions', () => {
54
+ const {
55
+ asFragment
56
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
57
+ highLightedSelectOptions: [],
58
+ selectedOptions: options
59
+ }));
60
+ expect(asFragment()).toMatchSnapshot();
61
+ });
62
+ test('Render with highLightedSelectOptions', () => {
63
+ const {
64
+ asFragment
65
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
66
+ highLightedSelectOptions: [2],
67
+ selectedOptions: options
68
+ }));
69
+ expect(asFragment()).toMatchSnapshot();
70
+ });
71
+ test('Render with limit as 2', () => {
72
+ const {
73
+ asFragment
74
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
75
+ highLightedSelectOptions: [],
76
+ selectedOptions: options,
77
+ limit: 2
78
+ }));
79
+ expect(asFragment()).toMatchSnapshot();
80
+ });
81
+ test('Render with onRemove', () => {
82
+ const {
83
+ asFragment
84
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
85
+ highLightedSelectOptions: [],
86
+ selectedOptions: options,
87
+ onRemove: jest.fn()
88
+ }));
89
+ expect(asFragment()).toMatchSnapshot();
90
+ });
91
+ test('Render with onRemove and isReadOnly', () => {
92
+ const {
93
+ asFragment
94
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
95
+ highLightedSelectOptions: [],
96
+ selectedOptions: options,
97
+ onRemove: jest.fn(),
98
+ isReadOnly: true
99
+ }));
100
+ expect(asFragment()).toMatchSnapshot();
101
+ });
102
+ test('Render with onRemove and isDisabled', () => {
103
+ const {
104
+ asFragment
105
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
106
+ highLightedSelectOptions: [],
107
+ selectedOptions: options,
108
+ onRemove: jest.fn(),
109
+ isDisabled: true
110
+ }));
111
+ expect(asFragment()).toMatchSnapshot();
112
+ });
113
+ test('Render with onRemove and a disabled option', () => {
114
+ const {
115
+ asFragment
116
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
117
+ highLightedSelectOptions: [],
118
+ selectedOptions: [options[0], { ...options[1],
119
+ isDisabled: true
120
+ }, options[2]],
121
+ onRemove: jest.fn()
122
+ }));
123
+ expect(asFragment()).toMatchSnapshot();
124
+ });
125
+ test('Render with onSelect', () => {
126
+ const {
127
+ asFragment
128
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
129
+ highLightedSelectOptions: [],
130
+ selectedOptions: options,
131
+ onSelect: jest.fn()
132
+ }));
133
+ expect(asFragment()).toMatchSnapshot();
134
+ });
135
+ test('Render with size as xmedium', () => {
136
+ const {
137
+ asFragment
138
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
139
+ highLightedSelectOptions: [],
140
+ selectedOptions: options,
141
+ size: "xmedium"
142
+ }));
143
+ expect(asFragment()).toMatchSnapshot();
144
+ });
145
+ test('Render with palette as dark', () => {
146
+ const {
147
+ asFragment
148
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
149
+ highLightedSelectOptions: [],
150
+ selectedOptions: options,
151
+ palette: "dark"
152
+ }));
153
+ expect(asFragment()).toMatchSnapshot();
154
+ });
155
+ test('Render with dataId', () => {
156
+ const {
157
+ asFragment
158
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
159
+ highLightedSelectOptions: [],
160
+ selectedOptions: options,
161
+ dataId: "selected-options-dataId"
162
+ }));
163
+ expect(asFragment()).toMatchSnapshot();
164
+ });
165
+ test('Render with optionType as avatar', () => {
166
+ const {
167
+ asFragment
168
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
169
+ highLightedSelectOptions: [],
170
+ selectedOptions: [{
171
+ id: 1,
172
+ value: 'Option 1',
173
+ optionType: 'avatar',
174
+ photoURL: 'avatar.png'
175
+ }]
176
+ }));
177
+ expect(asFragment()).toMatchSnapshot();
178
+ });
179
+ test('Render with optionType as avatar and highLightedSelectOptions', () => {
180
+ const {
181
+ asFragment
182
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
183
+ highLightedSelectOptions: [1],
184
+ selectedOptions: [{
185
+ id: 1,
186
+ value: 'Option 1',
187
+ optionType: 'avatar',
188
+ photoURL: 'avatar.png'
189
+ }]
190
+ }));
191
+ expect(asFragment()).toMatchSnapshot();
192
+ });
193
+ test('Render with optionType as icon', () => {
194
+ const {
195
+ asFragment
196
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
197
+ highLightedSelectOptions: [],
198
+ selectedOptions: [{
199
+ id: 1,
200
+ value: 'Option 1',
201
+ optionType: 'icon',
202
+ icon: 'ZD-GN-info',
203
+ iconSize: '12'
204
+ }]
205
+ }));
206
+ expect(asFragment()).toMatchSnapshot();
207
+ });
208
+ test('Render with optionType as icon and highLightedSelectOptions', () => {
209
+ const {
210
+ asFragment
211
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
212
+ highLightedSelectOptions: [1],
213
+ selectedOptions: [{
214
+ id: 1,
215
+ value: 'Option 1',
216
+ optionType: 'icon',
217
+ icon: 'ZD-GN-agent'
218
+ }]
219
+ }));
220
+ expect(asFragment()).toMatchSnapshot();
221
+ });
222
+ test('Render with mixed option types', () => {
223
+ const {
224
+ asFragment
225
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
226
+ highLightedSelectOptions: [],
227
+ selectedOptions: [{
228
+ id: 1,
229
+ value: 'Option 1'
230
+ }, {
231
+ id: 2,
232
+ value: 'Option 2',
233
+ optionType: 'avatar',
234
+ photoURL: 'avatar.png'
235
+ }, {
236
+ id: 3,
237
+ value: 'Option 3',
238
+ optionType: 'icon',
239
+ icon: 'ZD-GN-info'
240
+ }]
241
+ }));
242
+ expect(asFragment()).toMatchSnapshot();
243
+ }); // the custom renderer receives the option state, so it prints values that would otherwise be invisible
244
+
245
+ test('Render with renderCustomSelectedValue as function receiving state', () => {
246
+ const {
247
+ asFragment
248
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
249
+ highLightedSelectOptions: [1],
250
+ selectedOptions: [{
251
+ id: 1,
252
+ value: 'Option 1',
253
+ optionType: 'custom'
254
+ }],
255
+ size: "xmedium",
256
+ palette: "dark",
257
+ renderCustomSelectedValue: ({
258
+ isActive,
259
+ isReadOnly,
260
+ isDisabled,
261
+ size,
262
+ palette,
263
+ option
264
+ }) => /*#__PURE__*/React.createElement("span", null, `${option.value} active:${isActive} readOnly:${isReadOnly} disabled:${isDisabled} size:${size} palette:${palette}`)
265
+ }));
266
+ expect(asFragment()).toMatchSnapshot();
267
+ });
268
+ test('Render with renderCustomSelectedValue as function, isReadOnly and onRemove', () => {
269
+ const {
270
+ asFragment
271
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
272
+ highLightedSelectOptions: [],
273
+ selectedOptions: [{
274
+ id: 1,
275
+ value: 'Option 1',
276
+ optionType: 'custom'
277
+ }],
278
+ isReadOnly: true,
279
+ onRemove: jest.fn(),
280
+ renderCustomSelectedValue: ({
281
+ isReadOnly,
282
+ onRemove
283
+ }) => /*#__PURE__*/React.createElement("span", null, `readOnly:${isReadOnly} onRemove:${typeof onRemove}`)
284
+ }));
285
+ expect(asFragment()).toMatchSnapshot();
286
+ });
287
+ test('Render with renderCustomSelectedValue as function, isPopupOpen and isPopupReady', () => {
288
+ const {
289
+ asFragment
290
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
291
+ highLightedSelectOptions: [],
292
+ selectedOptions: [{
293
+ id: 1,
294
+ value: 'Option 1',
295
+ optionType: 'custom'
296
+ }],
297
+ isPopupOpen: true,
298
+ isPopupReady: true,
299
+ renderCustomSelectedValue: ({
300
+ isPopupOpen,
301
+ isPopupReady
302
+ }) => /*#__PURE__*/React.createElement("span", null, `open:${isPopupOpen} ready:${isPopupReady}`)
303
+ }));
304
+ expect(asFragment()).toMatchSnapshot();
305
+ });
306
+ test('Render with renderCustomSelectedValue as node', () => {
307
+ const {
308
+ asFragment
309
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
310
+ highLightedSelectOptions: [],
311
+ selectedOptions: [{
312
+ id: 1,
313
+ value: 'Option 1',
314
+ optionType: 'custom'
315
+ }],
316
+ renderCustomSelectedValue: /*#__PURE__*/React.createElement("span", null, "Custom node")
317
+ }));
318
+ expect(asFragment()).toMatchSnapshot();
319
+ }); // the custom renderer applies only to options of type custom
320
+
321
+ test('Render with renderCustomSelectedValue and default option types', () => {
322
+ const {
323
+ asFragment
324
+ } = render( /*#__PURE__*/React.createElement(SelectedOptions, {
325
+ highLightedSelectOptions: [],
326
+ selectedOptions: options,
327
+ renderCustomSelectedValue: () => /*#__PURE__*/React.createElement("span", null, "Custom value")
328
+ }));
329
+ expect(asFragment()).toMatchSnapshot();
40
330
  });
41
331
  });
@@ -1,6 +1,33 @@
1
1
  import React from 'react';
2
- import { render } from '@testing-library/react';
3
- import Suggestions from "../Suggestions";
2
+ import { render, cleanup } from '@testing-library/react';
3
+ import Suggestions from "../Suggestions"; // the real Virtualizer measures the DOM (0 in jsdom); mocked to render the first rows synchronously
4
+
5
+ jest.mock('@zohodesk/virtualizer', () => {
6
+ const React = require('react');
7
+
8
+ return { ...jest.requireActual('@zohodesk/virtualizer'),
9
+ Virtualizer: function MockVirtualizer({
10
+ elementRenderer,
11
+ elementsCount,
12
+ dataId
13
+ }) {
14
+ const items = [];
15
+
16
+ for (let index = 0; index < Math.min(elementsCount, 3); index++) {
17
+ items.push( /*#__PURE__*/React.createElement(React.Fragment, {
18
+ key: index
19
+ }, elementRenderer({
20
+ index,
21
+ ref: () => {}
22
+ })));
23
+ }
24
+
25
+ return /*#__PURE__*/React.createElement("div", {
26
+ "data-id": dataId
27
+ }, items);
28
+ }
29
+ };
30
+ });
4
31
  const sampleData = [{
5
32
  "id": 2,
6
33
  "value": "text2",
@@ -49,6 +76,7 @@ const sampleData = [{
49
76
  "optionType": "default"
50
77
  }];
51
78
  describe('Suggestions', () => {
79
+ afterEach(() => cleanup());
52
80
  test('rendering the defult props', () => {
53
81
  const {
54
82
  asFragment
@@ -80,4 +108,344 @@ describe('Suggestions', () => {
80
108
  }));
81
109
  expect(asFragment()).toMatchSnapshot();
82
110
  });
111
+ const items = [{
112
+ id: 1,
113
+ value: 'Option 1'
114
+ }, {
115
+ id: 2,
116
+ value: 'Option 2'
117
+ }, {
118
+ id: 3,
119
+ value: 'Option 3'
120
+ }];
121
+ test('Render with suggestions', () => {
122
+ const {
123
+ asFragment
124
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
125
+ suggestions: items
126
+ }));
127
+ expect(asFragment()).toMatchSnapshot();
128
+ });
129
+ test('Render with activeId', () => {
130
+ const {
131
+ asFragment
132
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
133
+ suggestions: items,
134
+ activeId: 2
135
+ }));
136
+ expect(asFragment()).toMatchSnapshot();
137
+ });
138
+ test('Render with selectedOptions', () => {
139
+ const {
140
+ asFragment
141
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
142
+ suggestions: items,
143
+ selectedOptions: [1, 3]
144
+ }));
145
+ expect(asFragment()).toMatchSnapshot();
146
+ });
147
+ test('Render with selectedOptions and needTick', () => {
148
+ const {
149
+ asFragment
150
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
151
+ suggestions: items,
152
+ selectedOptions: [1, 3],
153
+ needTick: true
154
+ }));
155
+ expect(asFragment()).toMatchSnapshot();
156
+ });
157
+ test('Render with hoverOption', () => {
158
+ const {
159
+ asFragment
160
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
161
+ suggestions: items,
162
+ hoverOption: 1
163
+ }));
164
+ expect(asFragment()).toMatchSnapshot();
165
+ });
166
+ test('Render with hoverId', () => {
167
+ const {
168
+ asFragment
169
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
170
+ suggestions: items,
171
+ hoverId: 3
172
+ }));
173
+ expect(asFragment()).toMatchSnapshot();
174
+ });
175
+ test('Render with needBorder=false', () => {
176
+ const {
177
+ asFragment
178
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
179
+ suggestions: items,
180
+ needBorder: false
181
+ }));
182
+ expect(asFragment()).toMatchSnapshot();
183
+ });
184
+ test.each(['small', 'large'])('Render with listItemSize as %s', listItemSize => {
185
+ const {
186
+ asFragment
187
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
188
+ suggestions: items,
189
+ listItemSize: listItemSize
190
+ }));
191
+ expect(asFragment()).toMatchSnapshot();
192
+ });
193
+ test('Render with palette as dark', () => {
194
+ const {
195
+ asFragment
196
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
197
+ suggestions: items,
198
+ palette: "dark"
199
+ }));
200
+ expect(asFragment()).toMatchSnapshot();
201
+ });
202
+ test('Render with secondaryValue', () => {
203
+ const {
204
+ asFragment
205
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
206
+ suggestions: [{
207
+ id: 1,
208
+ value: 'Option 1',
209
+ secondaryValue: 'Secondary value'
210
+ }]
211
+ }));
212
+ expect(asFragment()).toMatchSnapshot();
213
+ });
214
+ test('Render with needMultiLineText and secondaryValue', () => {
215
+ const {
216
+ asFragment
217
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
218
+ suggestions: [{
219
+ id: 1,
220
+ value: 'Option 1',
221
+ secondaryValue: 'Secondary value'
222
+ }],
223
+ needMultiLineText: true
224
+ }));
225
+ expect(asFragment()).toMatchSnapshot();
226
+ });
227
+ test('Render with a disabled suggestion', () => {
228
+ const {
229
+ asFragment
230
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
231
+ suggestions: [items[0], { ...items[1],
232
+ isDisabled: true
233
+ }, items[2]]
234
+ }));
235
+ expect(asFragment()).toMatchSnapshot();
236
+ });
237
+ test('Render with listItemProps', () => {
238
+ const {
239
+ asFragment
240
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
241
+ suggestions: [{ ...items[0],
242
+ listItemProps: {
243
+ 'data-custom-attr': 'true'
244
+ }
245
+ }]
246
+ }));
247
+ expect(asFragment()).toMatchSnapshot();
248
+ });
249
+ test('Render with listItemCustomProps customClass', () => {
250
+ const {
251
+ asFragment
252
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
253
+ suggestions: [{ ...items[0],
254
+ listItemCustomProps: {
255
+ customClass: {
256
+ customListItem: 'custom-list-item'
257
+ }
258
+ }
259
+ }]
260
+ }));
261
+ expect(asFragment()).toMatchSnapshot();
262
+ });
263
+ test('Render with optionType as avatar', () => {
264
+ const {
265
+ asFragment
266
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
267
+ suggestions: [{
268
+ id: 1,
269
+ value: 'Option 1',
270
+ optionType: 'avatar',
271
+ photoURL: 'avatar.png'
272
+ }]
273
+ }));
274
+ expect(asFragment()).toMatchSnapshot();
275
+ });
276
+ test('Render with optionType as avatar and avatarPalette as secondary', () => {
277
+ const {
278
+ asFragment
279
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
280
+ suggestions: [{
281
+ id: 1,
282
+ value: 'Option 1',
283
+ optionType: 'avatar',
284
+ photoURL: 'avatar.png'
285
+ }],
286
+ avatarPalette: "secondary"
287
+ }));
288
+ expect(asFragment()).toMatchSnapshot();
289
+ });
290
+ test('Render with optionType as icon', () => {
291
+ const {
292
+ asFragment
293
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
294
+ suggestions: [{
295
+ id: 1,
296
+ value: 'Option 1',
297
+ optionType: 'icon',
298
+ icon: 'ZD-GN-info',
299
+ iconSize: '12'
300
+ }]
301
+ }));
302
+ expect(asFragment()).toMatchSnapshot();
303
+ });
304
+ test('Render with mixed option types', () => {
305
+ const {
306
+ asFragment
307
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
308
+ suggestions: [{
309
+ id: 1,
310
+ value: 'Option 1'
311
+ }, {
312
+ id: 2,
313
+ value: 'Option 2',
314
+ optionType: 'avatar',
315
+ photoURL: 'avatar.png'
316
+ }, {
317
+ id: 3,
318
+ value: 'Option 3',
319
+ optionType: 'icon',
320
+ icon: 'ZD-GN-agent'
321
+ }]
322
+ }));
323
+ expect(asFragment()).toMatchSnapshot();
324
+ });
325
+ test('Render with renderBeforeChildren as node', () => {
326
+ const {
327
+ asFragment
328
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
329
+ suggestions: [items[0]],
330
+ renderBeforeChildren: /*#__PURE__*/React.createElement("span", null, "Before children")
331
+ }));
332
+ expect(asFragment()).toMatchSnapshot();
333
+ }); // renderBeforeChildren reaches only the default list item, not the avatar item
334
+
335
+ test('Render with renderBeforeChildren and optionType as avatar', () => {
336
+ const {
337
+ asFragment
338
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
339
+ suggestions: [{
340
+ id: 1,
341
+ value: 'Option 1',
342
+ optionType: 'avatar',
343
+ photoURL: 'avatar.png'
344
+ }],
345
+ renderBeforeChildren: /*#__PURE__*/React.createElement("span", null, "Before children")
346
+ }));
347
+ expect(asFragment()).toMatchSnapshot();
348
+ });
349
+ test('Render with limit not reached', () => {
350
+ const {
351
+ asFragment
352
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
353
+ suggestions: items,
354
+ selectedOptions: [1],
355
+ limit: 3
356
+ }));
357
+ expect(asFragment()).toMatchSnapshot();
358
+ });
359
+ test('Render with limit reached', () => {
360
+ const {
361
+ asFragment
362
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
363
+ suggestions: items,
364
+ selectedOptions: [1, 2],
365
+ limit: 2
366
+ }));
367
+ expect(asFragment()).toMatchSnapshot();
368
+ });
369
+ test('Render with limit reached and limitReachedMessage', () => {
370
+ const {
371
+ asFragment
372
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
373
+ suggestions: items,
374
+ selectedOptions: [1, 2],
375
+ limit: 2,
376
+ limitReachedMessage: "You can select only two"
377
+ }));
378
+ expect(asFragment()).toMatchSnapshot();
379
+ });
380
+ test('Render with a11y ariaParentRole and ariaMultiselectable', () => {
381
+ const {
382
+ asFragment
383
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
384
+ suggestions: items,
385
+ a11y: {
386
+ ariaParentRole: 'listbox',
387
+ ariaMultiselectable: true
388
+ }
389
+ }));
390
+ expect(asFragment()).toMatchSnapshot();
391
+ });
392
+ test('Render with className', () => {
393
+ const {
394
+ asFragment
395
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
396
+ suggestions: items,
397
+ className: "custom-suggestions"
398
+ }));
399
+ expect(asFragment()).toMatchSnapshot();
400
+ });
401
+ test('Render with customClass containerClass', () => {
402
+ const {
403
+ asFragment
404
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
405
+ suggestions: items,
406
+ customClass: {
407
+ containerClass: 'custom-container'
408
+ }
409
+ }));
410
+ expect(asFragment()).toMatchSnapshot();
411
+ });
412
+ test('Render with dataId', () => {
413
+ const {
414
+ asFragment
415
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
416
+ suggestions: items,
417
+ dataId: "suggestions-dataId"
418
+ }));
419
+ expect(asFragment()).toMatchSnapshot();
420
+ });
421
+ test('Render with htmlId', () => {
422
+ const {
423
+ asFragment
424
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
425
+ suggestions: items,
426
+ htmlId: "suggestions-htmlId"
427
+ }));
428
+ expect(asFragment()).toMatchSnapshot();
429
+ });
430
+ test('Render with isVirtualizerEnabled', () => {
431
+ const {
432
+ asFragment
433
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
434
+ suggestions: items,
435
+ isVirtualizerEnabled: true,
436
+ dataId: "suggestions-dataId"
437
+ }));
438
+ expect(asFragment()).toMatchSnapshot();
439
+ });
440
+ test('Render with isVirtualizerEnabled and selectedOptions', () => {
441
+ const {
442
+ asFragment
443
+ } = render( /*#__PURE__*/React.createElement(Suggestions, {
444
+ suggestions: items,
445
+ isVirtualizerEnabled: true,
446
+ selectedOptions: [2],
447
+ dataId: "suggestions-dataId"
448
+ }));
449
+ expect(asFragment()).toMatchSnapshot();
450
+ });
83
451
  });