@pingux/astro 1.4.1 → 1.5.0-alpha.1

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 (57) hide show
  1. package/lib/cjs/components/ListView/ListView.js +12 -13
  2. package/lib/cjs/components/ListView/ListView.test.js +8 -8
  3. package/lib/cjs/components/ListViewItem/ListViewItem.js +0 -2
  4. package/lib/cjs/components/MultiselectFilter/MultiselectFilter.js +143 -0
  5. package/lib/cjs/components/MultiselectFilter/MultiselectFilter.stories.js +283 -0
  6. package/lib/cjs/components/MultiselectFilter/MultiselectFilter.test.js +83 -0
  7. package/lib/cjs/components/MultiselectFilter/index.js +18 -0
  8. package/lib/cjs/components/MultiselectFilterItem/MultiselectFilterItem.js +55 -0
  9. package/lib/cjs/components/MultiselectFilterItem/MultiselectFilterItem.test.js +53 -0
  10. package/lib/cjs/components/MultiselectFilterItem/index.js +18 -0
  11. package/lib/cjs/components/MultiselectListContainer/MultiselectBadge.js +47 -0
  12. package/lib/cjs/components/MultiselectListContainer/MultiselectBadge.test.js +48 -0
  13. package/lib/cjs/components/MultiselectListContainer/MultiselectListContainer.js +157 -0
  14. package/lib/cjs/components/MultiselectListContainer/MultiselectListContainer.test.js +112 -0
  15. package/lib/cjs/components/MultiselectListContainer/index.js +18 -0
  16. package/lib/cjs/components/PopoverMenu/PopoverMenu.js +7 -2
  17. package/lib/cjs/components/Tab/Tab.js +22 -15
  18. package/lib/cjs/components/TabPicker/TabPicker.js +239 -0
  19. package/lib/cjs/components/TabPicker/index.js +18 -0
  20. package/lib/cjs/components/Tabs/Tabs.js +46 -13
  21. package/lib/cjs/components/Tabs/Tabs.stories.js +32 -2
  22. package/lib/cjs/components/Tabs/Tabs.test.js +183 -32
  23. package/lib/cjs/index.js +98 -32
  24. package/lib/cjs/styles/variants/buttons.js +38 -1
  25. package/lib/cjs/styles/variants/multiselectListContainer.js +73 -0
  26. package/lib/cjs/styles/variants/tabs.js +5 -1
  27. package/lib/cjs/styles/variants/text.js +29 -2
  28. package/lib/cjs/styles/variants/variants.js +3 -0
  29. package/lib/components/ListView/ListView.js +12 -13
  30. package/lib/components/ListView/ListView.test.js +8 -8
  31. package/lib/components/ListViewItem/ListViewItem.js +0 -2
  32. package/lib/components/MultiselectFilter/MultiselectFilter.js +118 -0
  33. package/lib/components/MultiselectFilter/MultiselectFilter.stories.js +251 -0
  34. package/lib/components/MultiselectFilter/MultiselectFilter.test.js +69 -0
  35. package/lib/components/MultiselectFilter/index.js +1 -0
  36. package/lib/components/MultiselectFilterItem/MultiselectFilterItem.js +36 -0
  37. package/lib/components/MultiselectFilterItem/MultiselectFilterItem.test.js +37 -0
  38. package/lib/components/MultiselectFilterItem/index.js +1 -0
  39. package/lib/components/MultiselectListContainer/MultiselectBadge.js +31 -0
  40. package/lib/components/MultiselectListContainer/MultiselectBadge.test.js +34 -0
  41. package/lib/components/MultiselectListContainer/MultiselectListContainer.js +123 -0
  42. package/lib/components/MultiselectListContainer/MultiselectListContainer.test.js +81 -0
  43. package/lib/components/MultiselectListContainer/index.js +1 -0
  44. package/lib/components/PopoverMenu/PopoverMenu.js +7 -2
  45. package/lib/components/Tab/Tab.js +14 -8
  46. package/lib/components/TabPicker/TabPicker.js +210 -0
  47. package/lib/components/TabPicker/index.js +1 -0
  48. package/lib/components/Tabs/Tabs.js +44 -11
  49. package/lib/components/Tabs/Tabs.stories.js +27 -0
  50. package/lib/components/Tabs/Tabs.test.js +165 -32
  51. package/lib/index.js +6 -0
  52. package/lib/styles/variants/buttons.js +38 -1
  53. package/lib/styles/variants/multiselectListContainer.js +63 -0
  54. package/lib/styles/variants/tabs.js +5 -1
  55. package/lib/styles/variants/text.js +29 -2
  56. package/lib/styles/variants/variants.js +2 -0
  57. package/package.json +1 -1
@@ -14,6 +14,8 @@ var _forEach = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-st
14
14
 
15
15
  var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
16
16
 
17
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
18
+
17
19
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
18
20
 
19
21
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
@@ -52,6 +54,21 @@ var defaultTabs = [{
52
54
  name: 'Tab 3',
53
55
  children: 'Tab 3 body'
54
56
  }];
57
+ var tabsWithList = [{
58
+ name: 'Tab 1',
59
+ children: 'Tab 1 body'
60
+ }, {
61
+ name: 'Tab 2',
62
+ list: [{
63
+ key: 'tab1list',
64
+ name: 'Tab 1 list',
65
+ children: 'Tab 1 from list'
66
+ }, {
67
+ key: 'tab2list',
68
+ name: 'Tab 2 list',
69
+ children: 'Tab 2 from list'
70
+ }]
71
+ }];
55
72
  var defaultProps = {
56
73
  'data-testid': testId,
57
74
  defaultSelectedKey: defaultTabs[0].name
@@ -79,6 +96,20 @@ var getComponent = function getComponent() {
79
96
  }))));
80
97
  };
81
98
 
99
+ var getComponentWithDynamicItems = function getComponentWithDynamicItems(props) {
100
+ return (0, _testWrapper.render)((0, _react2.jsx)(_react2.CacheProvider, {
101
+ value: emotionCache
102
+ }, (0, _react2.jsx)(_Tabs["default"], props, function (_ref3) {
103
+ var name = _ref3.name,
104
+ children = _ref3.children,
105
+ tabProps = (0, _objectWithoutProperties2["default"])(_ref3, ["name", "children"]);
106
+ return (0, _react2.jsx)(_Tab["default"], (0, _extends2["default"])({
107
+ key: name,
108
+ title: name
109
+ }, tabProps), children);
110
+ })));
111
+ };
112
+
82
113
  var getTabs = function getTabs() {
83
114
  var tabs = _testWrapper.screen.queryAllByRole('tab');
84
115
 
@@ -96,8 +127,8 @@ var getTabs = function getTabs() {
96
127
  };
97
128
 
98
129
  var testTabPanel = function testTabPanel(expectedTabIndex) {
99
- return (0, _forEach["default"])(defaultTabs).call(defaultTabs, function (_ref3, index) {
100
- var children = _ref3.children;
130
+ return (0, _forEach["default"])(defaultTabs).call(defaultTabs, function (_ref4, index) {
131
+ var children = _ref4.children;
101
132
  return index === expectedTabIndex ? expect(_testWrapper.screen.queryByText(children)).toBeInTheDocument() : expect(_testWrapper.screen.queryByText(children)).not.toBeInTheDocument();
102
133
  });
103
134
  };
@@ -163,7 +194,7 @@ test('interacting with tabs via click', function () {
163
194
  testSingleTab(tabs, tab0, 'toContainElement', [_testWrapper.screen.getByRole('presentation')]);
164
195
  testTabPanel(0);
165
196
  });
166
- test('interacting with tabs via focus -- horizontal', function () {
197
+ test('interacting with tabs with manual activation', function () {
167
198
  getComponent();
168
199
 
169
200
  var _getTabs2 = getTabs(),
@@ -185,6 +216,41 @@ test('interacting with tabs via focus -- horizontal', function () {
185
216
  code: 'ArrowRight'
186
217
  });
187
218
 
219
+ testSingleTab(tabs, tab1, 'toHaveFocus');
220
+ testTabPanel(0);
221
+
222
+ _testWrapper.fireEvent.keyDown(tab1, {
223
+ key: 'Enter',
224
+ code: 'Enter'
225
+ });
226
+
227
+ testSingleTab(tabs, tab1, 'toHaveFocus');
228
+ testTabPanel(1);
229
+ });
230
+ test('interacting with tabs via focus -- horizontal', function () {
231
+ getComponent({
232
+ keyboardActivation: 'automatic'
233
+ });
234
+
235
+ var _getTabs3 = getTabs(),
236
+ tabs = _getTabs3.tabs,
237
+ tab0 = _getTabs3.tab0,
238
+ tab1 = _getTabs3.tab1;
239
+
240
+ (0, _forEach["default"])(tabs).call(tabs, function (tab) {
241
+ return expect(tab).not.toHaveFocus();
242
+ });
243
+
244
+ _userEvent["default"].tab();
245
+
246
+ testSingleTab(tabs, tab0, 'toHaveFocus');
247
+ testTabPanel(0);
248
+
249
+ _testWrapper.fireEvent.keyDown(tab0, {
250
+ key: 'ArrowRight',
251
+ code: 'ArrowRight'
252
+ });
253
+
188
254
  testSingleTab(tabs, tab1, 'toHaveFocus');
189
255
  testTabPanel(1);
190
256
 
@@ -198,13 +264,14 @@ test('interacting with tabs via focus -- horizontal', function () {
198
264
  });
199
265
  test('interacting with tabs via focus -- vertical', function () {
200
266
  getComponent({
201
- orientation: 'vertical'
267
+ orientation: 'vertical',
268
+ keyboardActivation: 'automatic'
202
269
  });
203
270
 
204
- var _getTabs3 = getTabs(),
205
- tabs = _getTabs3.tabs,
206
- tab0 = _getTabs3.tab0,
207
- tab1 = _getTabs3.tab1;
271
+ var _getTabs4 = getTabs(),
272
+ tabs = _getTabs4.tabs,
273
+ tab0 = _getTabs4.tab0,
274
+ tab1 = _getTabs4.tab1;
208
275
 
209
276
  (0, _forEach["default"])(tabs).call(tabs, function (tab) {
210
277
  return expect(tab).not.toHaveFocus();
@@ -236,9 +303,9 @@ test('disabled all tabs', function () {
236
303
  isDisabled: true
237
304
  });
238
305
 
239
- var _getTabs4 = getTabs(),
240
- tab0 = _getTabs4.tab0,
241
- tab1 = _getTabs4.tab1;
306
+ var _getTabs5 = getTabs(),
307
+ tab0 = _getTabs5.tab0,
308
+ tab1 = _getTabs5.tab1;
242
309
 
243
310
  var tabLine = _testWrapper.screen.queryByRole('presentation'); // Tabs cannot be DOM disabled so must check visuals
244
311
 
@@ -259,15 +326,16 @@ test('disabled all tabs', function () {
259
326
  });
260
327
  test('disabled tab is not accessible on click or focus', function () {
261
328
  getComponent({
262
- disabledKeys: [defaultTabs[1].name]
329
+ disabledKeys: [defaultTabs[1].name],
330
+ keyboardActivation: 'automatic'
263
331
  });
264
332
  testTabPanel(0);
265
333
 
266
- var _getTabs5 = getTabs(),
267
- tabs = _getTabs5.tabs,
268
- tab0 = _getTabs5.tab0,
269
- tab1 = _getTabs5.tab1,
270
- tab2 = _getTabs5.tab2; // Ensure that clicking a disabled tab does nothing
334
+ var _getTabs6 = getTabs(),
335
+ tabs = _getTabs6.tabs,
336
+ tab0 = _getTabs6.tab0,
337
+ tab1 = _getTabs6.tab1,
338
+ tab2 = _getTabs6.tab2; // Ensure that clicking a disabled tab does nothing
271
339
 
272
340
 
273
341
  _userEvent["default"].click(tab1);
@@ -296,11 +364,11 @@ test('controlled tabs', function () {
296
364
  }),
297
365
  rerender = _getComponent.rerender;
298
366
 
299
- var _getTabs6 = getTabs(),
300
- tabs = _getTabs6.tabs,
301
- tab0 = _getTabs6.tab0,
302
- tab1 = _getTabs6.tab1,
303
- tab2 = _getTabs6.tab2; // Expect the second tab to be selected
367
+ var _getTabs7 = getTabs(),
368
+ tabs = _getTabs7.tabs,
369
+ tab0 = _getTabs7.tab0,
370
+ tab1 = _getTabs7.tab1,
371
+ tab2 = _getTabs7.tab2; // Expect the second tab to be selected
304
372
 
305
373
 
306
374
  expect(onSelectionChange).not.toHaveBeenCalled();
@@ -338,9 +406,9 @@ test('tab line props', function () {
338
406
  }),
339
407
  rerender = _getComponent2.rerender;
340
408
 
341
- var _getTabs7 = getTabs(),
342
- tabs = _getTabs7.tabs,
343
- tab0 = _getTabs7.tab0;
409
+ var _getTabs8 = getTabs(),
410
+ tabs = _getTabs8.tabs,
411
+ tab0 = _getTabs8.tab0;
344
412
 
345
413
  var tabLine = _testWrapper.screen.getByRole('presentation'); // Expect the tab line to have a red background
346
414
 
@@ -369,9 +437,9 @@ test('tab with icon', function () {
369
437
  tabs: newTabs
370
438
  });
371
439
 
372
- var _getTabs8 = getTabs(),
373
- tabs = _getTabs8.tabs,
374
- tab0 = _getTabs8.tab0;
440
+ var _getTabs9 = getTabs(),
441
+ tabs = _getTabs9.tabs,
442
+ tab0 = _getTabs9.tab0;
375
443
 
376
444
  var icon = _testWrapper.screen.getByTestId('icon'); // Expect the tab to have the given icon element
377
445
 
@@ -379,7 +447,7 @@ test('tab with icon', function () {
379
447
  testSingleTab(tabs, tab0, 'toContainElement', [icon]);
380
448
  });
381
449
  test('tooltip renders on tab\'s hover in `tooltip` mode', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
382
- var _getTabs9, tab0;
450
+ var _getTabs10, tab0;
383
451
 
384
452
  return _regenerator["default"].wrap(function _callee$(_context) {
385
453
  while (1) {
@@ -389,7 +457,7 @@ test('tooltip renders on tab\'s hover in `tooltip` mode', /*#__PURE__*/(0, _asyn
389
457
  mode: 'tooltip'
390
458
  });
391
459
  expect(_testWrapper.screen.queryByRole('tooltip')).not.toBeInTheDocument();
392
- _getTabs9 = getTabs(), tab0 = _getTabs9.tab0;
460
+ _getTabs10 = getTabs(), tab0 = _getTabs10.tab0;
393
461
 
394
462
  _testWrapper.fireEvent.mouseMove(tab0);
395
463
 
@@ -415,8 +483,8 @@ test('tabs without selected keys show null tab panel content', function () {
415
483
  test('hover tab style', function () {
416
484
  getComponent();
417
485
 
418
- var _getTabs10 = getTabs(),
419
- tab0 = _getTabs10.tab0;
486
+ var _getTabs11 = getTabs(),
487
+ tab0 = _getTabs11.tab0;
420
488
 
421
489
  expect(tab0).not.toHaveClass('is-hovered');
422
490
 
@@ -457,4 +525,87 @@ test('will render slots.afterTab if provided', function () {
457
525
  tabs: tabs
458
526
  });
459
527
  expect(_testWrapper.screen.getByText(testText)).toBeInTheDocument();
528
+ });
529
+ test('will render tab with list if provided', /*#__PURE__*/(0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
530
+ var _getTabs12, menuBtn, menuItems, firstListItemContent;
531
+
532
+ return _regenerator["default"].wrap(function _callee2$(_context2) {
533
+ while (1) {
534
+ switch (_context2.prev = _context2.next) {
535
+ case 0:
536
+ getComponentWithDynamicItems({
537
+ items: tabsWithList,
538
+ mode: 'list'
539
+ });
540
+ testTabPanel(0);
541
+ _getTabs12 = getTabs(), menuBtn = _getTabs12.tab1.parentElement;
542
+
543
+ _userEvent["default"].click(menuBtn);
544
+
545
+ expect(_testWrapper.screen.queryByRole('menu')).toBeInTheDocument();
546
+ testTabPanel(0);
547
+ menuItems = _testWrapper.screen.queryAllByRole('menuitemradio');
548
+ expect(menuItems).toHaveLength(tabsWithList[1].list.length);
549
+ expect(menuItems[0]).not.toHaveFocus();
550
+
551
+ _userEvent["default"].click(menuItems[0]);
552
+
553
+ firstListItemContent = tabsWithList[1].list[0].children;
554
+ expect(_testWrapper.screen.queryByRole('tabpanel')).toHaveTextContent(firstListItemContent);
555
+ expect(_testWrapper.screen.queryByRole('menu')).not.toBeInTheDocument();
556
+
557
+ case 13:
558
+ case "end":
559
+ return _context2.stop();
560
+ }
561
+ }
562
+ }, _callee2);
563
+ })));
564
+ test('tab list is accessible via keyboard', function () {
565
+ getComponentWithDynamicItems({
566
+ items: tabsWithList,
567
+ mode: 'list'
568
+ });
569
+
570
+ var _getTabs13 = getTabs(),
571
+ tabs = _getTabs13.tabs,
572
+ tab0 = _getTabs13.tab0,
573
+ tab1 = _getTabs13.tab1;
574
+
575
+ (0, _forEach["default"])(tabs).call(tabs, function (tab) {
576
+ return expect(tab).not.toHaveFocus();
577
+ });
578
+
579
+ _userEvent["default"].tab();
580
+
581
+ testTabPanel(0);
582
+
583
+ _testWrapper.fireEvent.keyDown(tab0, {
584
+ key: 'ArrowRight',
585
+ code: 'ArrowRight'
586
+ });
587
+
588
+ expect(tab1).toHaveFocus();
589
+
590
+ _testWrapper.fireEvent.keyDown(tab1, {
591
+ key: 'Enter',
592
+ code: 'Enter'
593
+ });
594
+
595
+ expect(_testWrapper.screen.queryByRole('menu')).toBeInTheDocument();
596
+ testTabPanel(0);
597
+
598
+ var menuItems = _testWrapper.screen.queryAllByRole('menuitemradio');
599
+
600
+ expect(menuItems).toHaveLength(tabsWithList[1].list.length);
601
+ expect(menuItems[0]).toHaveFocus();
602
+
603
+ _testWrapper.fireEvent.keyDown(menuItems[0], {
604
+ key: 'Enter',
605
+ code: 'Enter'
606
+ });
607
+
608
+ var firstListItemContent = tabsWithList[1].list[0].children;
609
+ expect(_testWrapper.screen.queryByRole('tabpanel')).toHaveTextContent(firstListItemContent);
610
+ expect(_testWrapper.screen.queryByRole('menu')).not.toBeInTheDocument();
460
611
  });