@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,11 +1,691 @@
1
+ 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); }
2
+
1
3
  import React from 'react';
2
- import { render } from '@testing-library/react';
4
+ import { render, cleanup, fireEvent } from '@testing-library/react';
3
5
  import Tabs from "../Tabs";
6
+ import Tab from "../Tab";
7
+ import { getTotalDimension } from "../../utils/Common"; // Tabs splits tabs between the bar and the more menu using measured sizes, which are 0 in jsdom;
8
+ // the mock delegates to the real helper unless a case sets fixed sizes
9
+
10
+ jest.mock("../../utils/Common", () => {
11
+ const actual = jest.requireActual("../../utils/Common");
12
+ return {
13
+ __esModule: true,
14
+ ...actual,
15
+ getTotalDimension: jest.fn(actual.getTotalDimension)
16
+ };
17
+ });
18
+ const {
19
+ getTotalDimension: actualGetTotalDimension
20
+ } = jest.requireActual("../../utils/Common"); // every Tab carries data-key, so it is measured as a tab; anything else is the tab bar
21
+
22
+ const setDimensions = (bar, tab) => {
23
+ getTotalDimension.mockImplementation(element => element && element.dataset && element.dataset.key ? tab : bar);
24
+ };
25
+
26
+ const makeTabs = count => Array.from({
27
+ length: count
28
+ }, (_, index) => /*#__PURE__*/React.createElement(Tab, {
29
+ key: `t${index + 1}`,
30
+ id: `t${index + 1}`,
31
+ text: `Tab ${index + 1}`
32
+ })); // isResponsive is off so tabs stay in the bar; a 0-width jsdom bar would otherwise collapse them into the more menu
33
+
34
+
35
+ const renderTabs = (props, tabs = makeTabs(4)) => render( /*#__PURE__*/React.createElement(Tabs, _extends({
36
+ isResponsive: false
37
+ }, props), tabs)); // a 100 bar with 30 tabs keeps two tabs visible and moves the rest into the more menu
38
+
39
+
40
+ const renderResponsiveTabs = (props, tabs = makeTabs(4), bar = 100, tab = 30) => {
41
+ setDimensions(bar, tab);
42
+ return render( /*#__PURE__*/React.createElement(Tabs, props, tabs));
43
+ };
44
+
4
45
  describe('Tabs', () => {
46
+ afterEach(() => {
47
+ cleanup();
48
+ getTotalDimension.mockImplementation(actualGetTotalDimension);
49
+ }); // the open more menu renders a FocusScope that needs IntersectionObserver, which jsdom lacks
50
+
51
+ beforeAll(() => {
52
+ window.IntersectionObserver = class {
53
+ observe() {}
54
+
55
+ unobserve() {}
56
+
57
+ disconnect() {}
58
+
59
+ };
60
+ });
61
+ afterAll(() => {
62
+ delete window.IntersectionObserver;
63
+ });
5
64
  test('rendering the defult props', () => {
6
65
  const {
7
66
  asFragment
8
67
  } = render( /*#__PURE__*/React.createElement(Tabs, null));
9
68
  expect(asFragment()).toMatchSnapshot();
10
69
  });
70
+ const types = ['alpha', 'beta', 'delta'];
71
+ const iconNames = ['ZD-GN-info', 'ZD-GN-agent'];
72
+
73
+ const CustomTab = props => /*#__PURE__*/React.createElement(Tab, props);
74
+
75
+ test('Render with tabs', () => {
76
+ const {
77
+ asFragment
78
+ } = renderTabs();
79
+ expect(asFragment()).toMatchSnapshot();
80
+ });
81
+ test.each(types)('Render with selectedTab, needAppearance and type as %s', type => {
82
+ const {
83
+ asFragment
84
+ } = renderTabs({
85
+ selectedTab: 't1',
86
+ needAppearance: true,
87
+ type
88
+ });
89
+ expect(asFragment()).toMatchSnapshot();
90
+ });
91
+ test.each(['beta', 'delta'])('Render with needAppearance, needBorder, needPadding and type as %s', type => {
92
+ const {
93
+ asFragment
94
+ } = renderTabs({
95
+ needAppearance: true,
96
+ needBorder: true,
97
+ needPadding: true,
98
+ type
99
+ });
100
+ expect(asFragment()).toMatchSnapshot();
101
+ });
102
+ test('Render with selectedTab', () => {
103
+ const {
104
+ asFragment
105
+ } = renderTabs({
106
+ selectedTab: 't2'
107
+ });
108
+ expect(asFragment()).toMatchSnapshot();
109
+ });
110
+ test('Render with needAppearance', () => {
111
+ const {
112
+ asFragment
113
+ } = renderTabs({
114
+ needAppearance: true
115
+ });
116
+ expect(asFragment()).toMatchSnapshot();
117
+ });
118
+ test('Render with needAppearance and needBorder', () => {
119
+ const {
120
+ asFragment
121
+ } = renderTabs({
122
+ needAppearance: true,
123
+ needBorder: true
124
+ });
125
+ expect(asFragment()).toMatchSnapshot();
126
+ });
127
+ test('Render with needAppearance and needPadding', () => {
128
+ const {
129
+ asFragment
130
+ } = renderTabs({
131
+ needAppearance: true,
132
+ needPadding: true
133
+ });
134
+ expect(asFragment()).toMatchSnapshot();
135
+ });
136
+ test('Render with needAppearance, needBorder and needPadding', () => {
137
+ const {
138
+ asFragment
139
+ } = renderTabs({
140
+ needAppearance: true,
141
+ needBorder: true,
142
+ needPadding: true
143
+ });
144
+ expect(asFragment()).toMatchSnapshot();
145
+ });
146
+ test('Render with needBorder and needPadding without needAppearance', () => {
147
+ const {
148
+ asFragment
149
+ } = renderTabs({
150
+ needBorder: true,
151
+ needPadding: true
152
+ });
153
+ expect(asFragment()).toMatchSnapshot();
154
+ });
155
+ test('Render with align as vertical', () => {
156
+ const {
157
+ asFragment
158
+ } = renderTabs({
159
+ align: 'vertical',
160
+ selectedTab: 't1',
161
+ needAppearance: true
162
+ });
163
+ expect(asFragment()).toMatchSnapshot();
164
+ });
165
+ test('Render with needAppearance and needTabBorder', () => {
166
+ const {
167
+ asFragment
168
+ } = renderTabs({
169
+ selectedTab: 't1',
170
+ needAppearance: true,
171
+ needTabBorder: true
172
+ });
173
+ expect(asFragment()).toMatchSnapshot();
174
+ });
175
+ test('Render with needAppearance, needTabBorder and isAnimate', () => {
176
+ const {
177
+ asFragment
178
+ } = renderTabs({
179
+ selectedTab: 't1',
180
+ needAppearance: true,
181
+ needTabBorder: true,
182
+ isAnimate: true
183
+ });
184
+ expect(asFragment()).toMatchSnapshot();
185
+ });
186
+ test('Render with needAppearance, needTabBorder, isAnimate, highlightClass and dataId', () => {
187
+ const {
188
+ asFragment
189
+ } = renderTabs({
190
+ selectedTab: 't1',
191
+ needAppearance: true,
192
+ needTabBorder: true,
193
+ isAnimate: true,
194
+ highlightClass: 'custom-highlight',
195
+ dataId: 'tabs-dataId'
196
+ });
197
+ expect(asFragment()).toMatchSnapshot();
198
+ });
199
+ test('Render with isAnimate and needTabBorder without needAppearance', () => {
200
+ const {
201
+ asFragment
202
+ } = renderTabs({
203
+ isAnimate: true,
204
+ needTabBorder: true
205
+ });
206
+ expect(asFragment()).toMatchSnapshot();
207
+ });
208
+ test('Render with highlightClass without isAnimate', () => {
209
+ const {
210
+ asFragment
211
+ } = renderTabs({
212
+ highlightClass: 'custom-highlight'
213
+ });
214
+ expect(asFragment()).toMatchSnapshot();
215
+ });
216
+ test('Render with className', () => {
217
+ const {
218
+ asFragment
219
+ } = renderTabs({
220
+ className: 'custom-tabs'
221
+ });
222
+ expect(asFragment()).toMatchSnapshot();
223
+ });
224
+ test('Render with containerClass', () => {
225
+ const {
226
+ asFragment
227
+ } = renderTabs({
228
+ containerClass: 'custom-container'
229
+ });
230
+ expect(asFragment()).toMatchSnapshot();
231
+ });
232
+ test('Render with style', () => {
233
+ const {
234
+ asFragment
235
+ } = renderTabs({
236
+ style: {
237
+ width: '100px'
238
+ }
239
+ });
240
+ expect(asFragment()).toMatchSnapshot();
241
+ });
242
+ test('Render with dataSelectorId', () => {
243
+ const {
244
+ asFragment
245
+ } = renderTabs({
246
+ dataSelectorId: 'tabs-dataSelectorId'
247
+ });
248
+ expect(asFragment()).toMatchSnapshot();
249
+ });
250
+ test('Render with itemClass', () => {
251
+ const {
252
+ asFragment
253
+ } = renderTabs({
254
+ itemClass: 'custom-item'
255
+ });
256
+ expect(asFragment()).toMatchSnapshot();
257
+ });
258
+ test('Render with selectedTab and itemActiveClass', () => {
259
+ const {
260
+ asFragment
261
+ } = renderTabs({
262
+ selectedTab: 't1',
263
+ itemActiveClass: 'custom-item-active'
264
+ });
265
+ expect(asFragment()).toMatchSnapshot();
266
+ });
267
+ test('Render with a non-Tab child', () => {
268
+ const {
269
+ asFragment
270
+ } = renderTabs({}, [...makeTabs(2), /*#__PURE__*/React.createElement("div", {
271
+ key: "other"
272
+ }, "Other content")]);
273
+ expect(asFragment()).toMatchSnapshot();
274
+ }); // only children whose type equals childType are treated as tabs
275
+
276
+ test('Render with childType', () => {
277
+ const {
278
+ asFragment
279
+ } = renderTabs({
280
+ childType: CustomTab
281
+ }, [/*#__PURE__*/React.createElement(CustomTab, {
282
+ key: "c1",
283
+ id: "c1",
284
+ text: "Custom 1"
285
+ }), /*#__PURE__*/React.createElement(Tab, {
286
+ key: "t1",
287
+ id: "t1",
288
+ text: "Tab 1"
289
+ })]);
290
+ expect(asFragment()).toMatchSnapshot();
291
+ }); // a 0-width bar leaves no room, so every tab moves into the more menu
292
+
293
+ test('Render with isResponsive and a 0-width bar', () => {
294
+ const {
295
+ asFragment
296
+ } = render( /*#__PURE__*/React.createElement(Tabs, null, makeTabs(4)));
297
+ expect(asFragment()).toMatchSnapshot();
298
+ });
299
+ test('Render with isResponsive and tabs fitting the bar', () => {
300
+ const {
301
+ asFragment
302
+ } = renderResponsiveTabs({
303
+ selectedTab: 't1'
304
+ }, makeTabs(4), 300);
305
+ expect(asFragment()).toMatchSnapshot();
306
+ });
307
+ test('Render with isResponsive and tabs overflowing the bar', () => {
308
+ const {
309
+ asFragment
310
+ } = renderResponsiveTabs({
311
+ selectedTab: 't1'
312
+ }, makeTabs(4), 100);
313
+ expect(asFragment()).toMatchSnapshot();
314
+ });
315
+ test('Render with isResponsive and a selectedTab that would overflow', () => {
316
+ const {
317
+ asFragment
318
+ } = renderResponsiveTabs({
319
+ selectedTab: 't3'
320
+ }, makeTabs(4), 100);
321
+ expect(asFragment()).toMatchSnapshot();
322
+ });
323
+ test('Render with isResponsive and maxTabsCount as 1', () => {
324
+ const {
325
+ asFragment
326
+ } = renderResponsiveTabs({
327
+ selectedTab: 't1',
328
+ maxTabsCount: 1
329
+ }, makeTabs(4), 300);
330
+ expect(asFragment()).toMatchSnapshot();
331
+ });
332
+ test('Render with isResponsive and minTabsCount as 3', () => {
333
+ const {
334
+ asFragment
335
+ } = renderResponsiveTabs({
336
+ selectedTab: 't1',
337
+ minTabsCount: 3
338
+ }, makeTabs(4), 40);
339
+ expect(asFragment()).toMatchSnapshot();
340
+ });
341
+ test('Render with isResponsive, tabs fitting the bar and a non-Tab child', () => {
342
+ const {
343
+ asFragment
344
+ } = renderResponsiveTabs({
345
+ selectedTab: 't1'
346
+ }, [...makeTabs(2), /*#__PURE__*/React.createElement("div", {
347
+ key: "other"
348
+ }, "Other content")], 300);
349
+ expect(asFragment()).toMatchSnapshot();
350
+ });
351
+ test('Render with isResponsive, overflowing tabs and moreButtonClass', () => {
352
+ const {
353
+ asFragment
354
+ } = renderResponsiveTabs({
355
+ selectedTab: 't1',
356
+ moreButtonClass: 'custom-more-button'
357
+ }, makeTabs(4), 100);
358
+ expect(asFragment()).toMatchSnapshot();
359
+ });
360
+ test('Render with isResponsive, overflowing tabs and moreButtonActiveClass without isPopupOpen', () => {
361
+ const {
362
+ asFragment
363
+ } = renderResponsiveTabs({
364
+ selectedTab: 't1',
365
+ moreButtonActiveClass: 'custom-more-button-active'
366
+ }, makeTabs(4), 100);
367
+ expect(asFragment()).toMatchSnapshot();
368
+ });
369
+ test('Render with isResponsive, overflowing tabs and iconSize', () => {
370
+ const {
371
+ asFragment
372
+ } = renderResponsiveTabs({
373
+ selectedTab: 't1',
374
+ iconSize: '12'
375
+ }, makeTabs(4), 100);
376
+ expect(asFragment()).toMatchSnapshot();
377
+ });
378
+ test('Render with isResponsive, overflowing tabs and dataSelectorId', () => {
379
+ const {
380
+ asFragment
381
+ } = renderResponsiveTabs({
382
+ selectedTab: 't1',
383
+ dataSelectorId: 'tabs-dataSelectorId'
384
+ }, makeTabs(4), 100);
385
+ expect(asFragment()).toMatchSnapshot();
386
+ });
387
+ test('Render with isResponsive, overflowing tabs and customProps MoreButtonProps', () => {
388
+ const {
389
+ asFragment
390
+ } = renderResponsiveTabs({
391
+ selectedTab: 't1',
392
+ customProps: {
393
+ MoreButtonProps: {
394
+ 'data-custom-attr': 'true'
395
+ }
396
+ }
397
+ }, makeTabs(4), 100);
398
+ expect(asFragment()).toMatchSnapshot();
399
+ });
400
+ test('Render with isResponsive=false and overflowing tabs', () => {
401
+ const {
402
+ asFragment
403
+ } = renderResponsiveTabs({
404
+ selectedTab: 't1',
405
+ isResponsive: false
406
+ }, makeTabs(4), 100);
407
+ expect(asFragment()).toMatchSnapshot();
408
+ });
409
+ test.each(iconNames)('Render with isResponsive, overflowing tabs and iconName as %s', iconName => {
410
+ const {
411
+ asFragment
412
+ } = renderResponsiveTabs({
413
+ selectedTab: 't1',
414
+ iconName
415
+ });
416
+ expect(asFragment()).toMatchSnapshot();
417
+ }); // the menu content depends on the tabs' own text, title, children and link props
418
+
419
+ const titledTabs = Array.from({
420
+ length: 4
421
+ }, (_, index) => /*#__PURE__*/React.createElement(Tab, {
422
+ key: `t${index + 1}`,
423
+ id: `t${index + 1}`,
424
+ title: `Title ${index + 1}`
425
+ }, /*#__PURE__*/React.createElement("span", null, "Child ", index + 1)));
426
+ const linkTabs = Array.from({
427
+ length: 4
428
+ }, (_, index) => /*#__PURE__*/React.createElement(Tab, {
429
+ key: `t${index + 1}`,
430
+ id: `t${index + 1}`,
431
+ text: `Tab ${index + 1}`,
432
+ isLink: true,
433
+ href: `/tab${index + 1}`
434
+ }));
435
+ test('Render with isPopupOpen', () => {
436
+ const {
437
+ asFragment
438
+ } = renderResponsiveTabs({
439
+ selectedTab: 't1',
440
+ isPopupOpen: true
441
+ });
442
+ expect(asFragment()).toMatchSnapshot();
443
+ });
444
+ test('Render with isPopupOpen, moreButtonClass and moreButtonActiveClass', () => {
445
+ const {
446
+ asFragment
447
+ } = renderResponsiveTabs({
448
+ selectedTab: 't1',
449
+ isPopupOpen: true,
450
+ moreButtonClass: 'custom-more-button',
451
+ moreButtonActiveClass: 'custom-more-button-active'
452
+ });
453
+ expect(asFragment()).toMatchSnapshot();
454
+ });
455
+ test('Render with isPopupOpen and menuItemClass', () => {
456
+ const {
457
+ asFragment
458
+ } = renderResponsiveTabs({
459
+ selectedTab: 't1',
460
+ isPopupOpen: true,
461
+ menuItemClass: 'custom-menu-item'
462
+ });
463
+ expect(asFragment()).toMatchSnapshot();
464
+ });
465
+ test('Render with isPopupOpen and moreBoxClass', () => {
466
+ const {
467
+ asFragment
468
+ } = renderResponsiveTabs({
469
+ selectedTab: 't1',
470
+ isPopupOpen: true,
471
+ moreBoxClass: 'custom-more-box'
472
+ });
473
+ expect(asFragment()).toMatchSnapshot();
474
+ });
475
+ test('Render with isPopupOpen and moreContainerClass', () => {
476
+ const {
477
+ asFragment
478
+ } = renderResponsiveTabs({
479
+ selectedTab: 't1',
480
+ isPopupOpen: true,
481
+ moreContainerClass: 'custom-more-container'
482
+ });
483
+ expect(asFragment()).toMatchSnapshot();
484
+ });
485
+ test('Render with isPopupOpen and dataId', () => {
486
+ const {
487
+ asFragment
488
+ } = renderResponsiveTabs({
489
+ selectedTab: 't1',
490
+ isPopupOpen: true,
491
+ dataId: 'tabs-dataId'
492
+ });
493
+ expect(asFragment()).toMatchSnapshot();
494
+ });
495
+ test('Render with isPopupOpen and align as vertical', () => {
496
+ const {
497
+ asFragment
498
+ } = renderResponsiveTabs({
499
+ selectedTab: 't1',
500
+ isPopupOpen: true,
501
+ align: 'vertical'
502
+ });
503
+ expect(asFragment()).toMatchSnapshot();
504
+ });
505
+ test('Render with isPopupOpen and getCustomDropBoxHeaderPlaceHolder', () => {
506
+ const {
507
+ asFragment
508
+ } = renderResponsiveTabs({
509
+ selectedTab: 't1',
510
+ isPopupOpen: true,
511
+ getCustomDropBoxHeaderPlaceHolder: () => /*#__PURE__*/React.createElement("div", null, "Custom header")
512
+ });
513
+ expect(asFragment()).toMatchSnapshot();
514
+ });
515
+ test('Render with isPopupOpen and customProps DropBoxProps', () => {
516
+ const {
517
+ asFragment
518
+ } = renderResponsiveTabs({
519
+ selectedTab: 't1',
520
+ isPopupOpen: true,
521
+ customProps: {
522
+ DropBoxProps: {
523
+ size: 'large'
524
+ }
525
+ }
526
+ });
527
+ expect(asFragment()).toMatchSnapshot();
528
+ });
529
+ test('Render with isPopupOpen and customProps ListItemProps', () => {
530
+ const {
531
+ asFragment
532
+ } = renderResponsiveTabs({
533
+ selectedTab: 't1',
534
+ isPopupOpen: true,
535
+ customProps: {
536
+ ListItemProps: {
537
+ palette: 'primary'
538
+ }
539
+ }
540
+ });
541
+ expect(asFragment()).toMatchSnapshot();
542
+ });
543
+ test('Render with isPopupOpen and itemClass', () => {
544
+ const {
545
+ asFragment
546
+ } = renderResponsiveTabs({
547
+ selectedTab: 't1',
548
+ isPopupOpen: true,
549
+ itemClass: 'custom-item'
550
+ });
551
+ expect(asFragment()).toMatchSnapshot();
552
+ });
553
+ test('Render with isPopupOpen and itemActiveClass', () => {
554
+ const {
555
+ asFragment
556
+ } = renderResponsiveTabs({
557
+ selectedTab: 't1',
558
+ isPopupOpen: true,
559
+ itemActiveClass: 'custom-item-active'
560
+ });
561
+ expect(asFragment()).toMatchSnapshot();
562
+ });
563
+ test('Render with isPopupOpen and tabs without text', () => {
564
+ const {
565
+ asFragment
566
+ } = renderResponsiveTabs({
567
+ selectedTab: 't1',
568
+ isPopupOpen: true
569
+ }, titledTabs);
570
+ expect(asFragment()).toMatchSnapshot();
571
+ });
572
+ test('Render with isPopupOpen, showTitleInMoreOptions and tabs without text', () => {
573
+ const {
574
+ asFragment
575
+ } = renderResponsiveTabs({
576
+ selectedTab: 't1',
577
+ isPopupOpen: true,
578
+ showTitleInMoreOptions: true
579
+ }, titledTabs);
580
+ expect(asFragment()).toMatchSnapshot();
581
+ });
582
+ test('Render with isPopupOpen and link tabs', () => {
583
+ const {
584
+ asFragment
585
+ } = renderResponsiveTabs({
586
+ selectedTab: 't1',
587
+ isPopupOpen: true
588
+ }, linkTabs);
589
+ expect(asFragment()).toMatchSnapshot();
590
+ }); // isPopupOpen has no menu to open when every tab fits in the bar
591
+
592
+ test('Render with isPopupOpen and tabs fitting the bar', () => {
593
+ const {
594
+ asFragment
595
+ } = renderResponsiveTabs({
596
+ selectedTab: 't1',
597
+ isPopupOpen: true
598
+ }, makeTabs(4), 300);
599
+ expect(asFragment()).toMatchSnapshot();
600
+ }); // the search box appears only when more than four tabs are in the menu
601
+
602
+ test('Render with isPopupOpen and more than four tabs in the menu', () => {
603
+ const {
604
+ asFragment
605
+ } = renderResponsiveTabs({
606
+ selectedTab: 't1',
607
+ isPopupOpen: true
608
+ }, makeTabs(7));
609
+ expect(asFragment()).toMatchSnapshot();
610
+ });
611
+ test('Render with isPopupOpen, more than four tabs and placeHolderText', () => {
612
+ const {
613
+ asFragment
614
+ } = renderResponsiveTabs({
615
+ selectedTab: 't1',
616
+ isPopupOpen: true,
617
+ placeHolderText: 'Find a tab'
618
+ }, makeTabs(7));
619
+ expect(asFragment()).toMatchSnapshot();
620
+ });
621
+ test('Render with isPopupOpen, more than four tabs and searchBoxSize as xmedium', () => {
622
+ const {
623
+ asFragment
624
+ } = renderResponsiveTabs({
625
+ selectedTab: 't1',
626
+ isPopupOpen: true,
627
+ searchBoxSize: 'xmedium'
628
+ }, makeTabs(7));
629
+ expect(asFragment()).toMatchSnapshot();
630
+ });
631
+ test('Render with isPopupOpen, more than four tabs and customProps TextBoxIconProps', () => {
632
+ const {
633
+ asFragment
634
+ } = renderResponsiveTabs({
635
+ selectedTab: 't1',
636
+ isPopupOpen: true,
637
+ customProps: {
638
+ TextBoxIconProps: {
639
+ needBorder: false
640
+ }
641
+ }
642
+ }, makeTabs(7));
643
+ expect(asFragment()).toMatchSnapshot();
644
+ });
645
+ test('Render with search text matching one tab', () => {
646
+ const {
647
+ asFragment,
648
+ getByPlaceholderText
649
+ } = renderResponsiveTabs({
650
+ selectedTab: 't1',
651
+ isPopupOpen: true
652
+ }, makeTabs(7));
653
+ fireEvent.change(getByPlaceholderText('Search'), {
654
+ target: {
655
+ value: 'Tab 5'
656
+ }
657
+ });
658
+ expect(asFragment()).toMatchSnapshot();
659
+ });
660
+ test('Render with search text matching no tab', () => {
661
+ const {
662
+ asFragment,
663
+ getByPlaceholderText
664
+ } = renderResponsiveTabs({
665
+ selectedTab: 't1',
666
+ isPopupOpen: true
667
+ }, makeTabs(7));
668
+ fireEvent.change(getByPlaceholderText('Search'), {
669
+ target: {
670
+ value: 'zzz'
671
+ }
672
+ });
673
+ expect(asFragment()).toMatchSnapshot();
674
+ });
675
+ test('Render with search text matching no tab and searchErrorText', () => {
676
+ const {
677
+ asFragment,
678
+ getByPlaceholderText
679
+ } = renderResponsiveTabs({
680
+ selectedTab: 't1',
681
+ isPopupOpen: true,
682
+ searchErrorText: 'Nothing found'
683
+ }, makeTabs(7));
684
+ fireEvent.change(getByPlaceholderText('Search'), {
685
+ target: {
686
+ value: 'zzz'
687
+ }
688
+ });
689
+ expect(asFragment()).toMatchSnapshot();
690
+ });
11
691
  });