@pingux/astro 1.31.0-alpha.1 → 1.31.0-alpha.11

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 (47) hide show
  1. package/lib/cjs/components/Card/Card.stories.js +29 -2
  2. package/lib/cjs/components/Chip/Chip.js +37 -7
  3. package/lib/cjs/components/Chip/Chip.test.js +8 -0
  4. package/lib/cjs/components/DataTable/DataTable.test.js +0 -2
  5. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +84 -2
  6. package/lib/cjs/components/ListView/ListView.stories.js +2 -1
  7. package/lib/cjs/components/ListViewItem/ListViewItem.js +5 -2
  8. package/lib/cjs/components/MenuItem/MenuItem.js +2 -1
  9. package/lib/cjs/components/OverlayPanel/OverlayPanel.stories.js +14 -7
  10. package/lib/cjs/components/RequirementsList/RequirementsList.js +5 -1
  11. package/lib/cjs/components/RequirementsList/RequirementsList.test.js +2 -2
  12. package/lib/cjs/components/SearchField/SearchField.js +10 -0
  13. package/lib/cjs/components/SearchField/SearchField.test.js +27 -0
  14. package/lib/cjs/components/TabPicker/TabPicker.js +1 -0
  15. package/lib/cjs/components/Table/Table.stories.js +9 -27
  16. package/lib/cjs/components/Table/Table.test.js +9 -1
  17. package/lib/cjs/components/TableCaption/TableCaption.js +43 -0
  18. package/lib/cjs/components/TableCaption/index.js +18 -0
  19. package/lib/cjs/components/Tabs/Tabs.stories.js +4 -2
  20. package/lib/cjs/components/Tabs/Tabs.test.js +6 -4
  21. package/lib/cjs/recipes/LinkedListView.stories.js +424 -0
  22. package/lib/cjs/styles/variants/boxes.js +19 -1
  23. package/lib/cjs/styles/variants/table.js +6 -0
  24. package/lib/components/Card/Card.stories.js +29 -2
  25. package/lib/components/Chip/Chip.js +30 -4
  26. package/lib/components/Chip/Chip.test.js +8 -0
  27. package/lib/components/DataTable/DataTable.test.js +0 -2
  28. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +79 -0
  29. package/lib/components/ListView/ListView.stories.js +2 -1
  30. package/lib/components/ListViewItem/ListViewItem.js +5 -2
  31. package/lib/components/MenuItem/MenuItem.js +2 -1
  32. package/lib/components/OverlayPanel/OverlayPanel.stories.js +14 -7
  33. package/lib/components/RequirementsList/RequirementsList.js +5 -1
  34. package/lib/components/RequirementsList/RequirementsList.test.js +2 -2
  35. package/lib/components/SearchField/SearchField.js +10 -0
  36. package/lib/components/SearchField/SearchField.test.js +20 -1
  37. package/lib/components/TabPicker/TabPicker.js +1 -0
  38. package/lib/components/Table/Table.stories.js +7 -27
  39. package/lib/components/Table/Table.test.js +7 -1
  40. package/lib/components/TableCaption/TableCaption.js +27 -0
  41. package/lib/components/TableCaption/index.js +1 -0
  42. package/lib/components/Tabs/Tabs.stories.js +4 -2
  43. package/lib/components/Tabs/Tabs.test.js +6 -4
  44. package/lib/recipes/LinkedListView.stories.js +393 -0
  45. package/lib/styles/variants/boxes.js +19 -1
  46. package/lib/styles/variants/table.js +6 -0
  47. package/package.json +1 -1
@@ -43,10 +43,37 @@ var Default = function Default(args) {
43
43
  exports.Default = Default;
44
44
 
45
45
  var CardRow = function CardRow() {
46
+ var sx = {
47
+ li: {
48
+ display: 'inline',
49
+ flexGrow: 1,
50
+ flexBasis: '0%'
51
+ },
52
+ card: {
53
+ display: 'block'
54
+ }
55
+ };
46
56
  return (0, _react2.jsx)(_Box["default"], {
47
57
  isRow: true,
48
- gap: "md"
49
- }, (0, _react2.jsx)(_Card["default"], null, "First"), (0, _react2.jsx)(_Card["default"], null, "Second"), (0, _react2.jsx)(_Card["default"], null, "Third"));
58
+ gap: "md",
59
+ as: "ul",
60
+ pl: "0px"
61
+ }, (0, _react2.jsx)(_Box["default"], {
62
+ as: "li",
63
+ sx: sx.li
64
+ }, (0, _react2.jsx)(_Card["default"], {
65
+ sx: sx.card
66
+ }, "First")), (0, _react2.jsx)(_Box["default"], {
67
+ as: "li",
68
+ sx: sx.li
69
+ }, (0, _react2.jsx)(_Card["default"], {
70
+ sx: sx.card
71
+ }, "Second")), (0, _react2.jsx)(_Box["default"], {
72
+ as: "li",
73
+ sx: sx.li
74
+ }, (0, _react2.jsx)(_Card["default"], {
75
+ sx: sx.card
76
+ }, "Third")));
50
77
  };
51
78
 
52
79
  exports.CardRow = CardRow;
@@ -2,13 +2,25 @@
2
2
 
3
3
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
4
 
5
- var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
5
+ var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
6
+
7
+ var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
6
8
 
7
9
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
8
10
 
9
- var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
11
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
10
12
 
11
- var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
13
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
14
+
15
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
16
+
17
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
18
+
19
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
20
+
21
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
22
+
23
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
12
24
 
13
25
  _Object$defineProperty(exports, "__esModule", {
14
26
  value: true
@@ -18,6 +30,8 @@ exports["default"] = void 0;
18
30
 
19
31
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
20
32
 
33
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
34
+
21
35
  var _react = _interopRequireDefault(require("react"));
22
36
 
23
37
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -36,6 +50,10 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "functi
36
50
 
37
51
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = _Object$defineProperty && _Object$getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? _Object$getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { _Object$defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
38
52
 
53
+ function ownKeys(object, enumerableOnly) { var keys = _Object$keys(object); if (_Object$getOwnPropertySymbols) { var symbols = _Object$getOwnPropertySymbols(object); enumerableOnly && (symbols = _filterInstanceProperty(symbols).call(symbols, function (sym) { return _Object$getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
54
+
55
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context, _context2; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context = ownKeys(Object(source), !0)).call(_context, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context2 = ownKeys(Object(source))).call(_context2, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
56
+
39
57
  /**
40
58
  * Chip component.
41
59
  * Built on top of the [Box from Theme-UI](https://theme-ui.com/components/box/) and uses the
@@ -47,7 +65,18 @@ var Chip = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
47
65
  textColor = props.textColor,
48
66
  textProps = props.textProps,
49
67
  label = props.label,
68
+ align = props.align,
50
69
  isUppercase = props.isUppercase;
70
+
71
+ var sx = _objectSpread({}, isUppercase && {
72
+ paddingBottom: '3px'
73
+ });
74
+
75
+ if (align) {
76
+ sx.position = 'absolute';
77
+ sx[align] = '15px';
78
+ }
79
+
51
80
  return (0, _react2.jsx)(_ChipContext.ChipContext.Provider, {
52
81
  value: {
53
82
  bg: bg
@@ -55,9 +84,7 @@ var Chip = /*#__PURE__*/_react["default"].forwardRef(function (props, ref) {
55
84
  }, (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
56
85
  isRow: true,
57
86
  variant: "boxes.chip",
58
- sx: isUppercase && {
59
- paddingBottom: '3px'
60
- },
87
+ sx: sx,
61
88
  ref: ref
62
89
  }, props), (0, _react2.jsx)(_Text["default"], (0, _extends2["default"])({
63
90
  variant: "label",
@@ -83,7 +110,10 @@ Chip.propTypes = {
83
110
  textProps: _propTypes["default"].shape({}),
84
111
 
85
112
  /** When true, display chip label as uppercase. */
86
- isUppercase: _propTypes["default"].bool
113
+ isUppercase: _propTypes["default"].bool,
114
+
115
+ /** Alignment of chip relative to parent container. */
116
+ align: _propTypes["default"].oneOf(['top', 'right', 'bottom', 'left'])
87
117
  };
88
118
  Chip.defaultProps = {
89
119
  textColor: 'white',
@@ -54,4 +54,12 @@ test('renders Chip component with uppercase', function () {
54
54
  isUppercase: isUppercase
55
55
  });
56
56
  expect(_react2.screen.queryByText('uppercase')).toHaveStyleRule('text-transform', 'uppercase');
57
+ });
58
+ test('renders Chip component with custom alignment', function () {
59
+ var align = 'right';
60
+ getComponent({
61
+ align: align
62
+ });
63
+ expect(_react2.screen.getByTestId(testId)).toHaveStyleRule('position', 'absolute');
64
+ expect(_react2.screen.getByTestId(testId)).toHaveStyleRule('right', '15px');
57
65
  });
@@ -994,7 +994,6 @@ describe('Sortable DataTable with useAsyncList', function () {
994
994
  var first = a[sortDescriptor.column];
995
995
  var second = b[sortDescriptor.column]; // eslint-disable-next-line radix
996
996
 
997
- // eslint-disable-next-line radix
998
997
  var cmp = ((0, _parseInt2["default"])(first) || first) < ((0, _parseInt2["default"])(second) || second) ? -1 : 1;
999
998
 
1000
999
  if (sortDescriptor.direction === 'descending') {
@@ -1190,7 +1189,6 @@ describe('Sortable DataTable with useAsyncList', function () {
1190
1189
  var first = a[sortDescriptor.column];
1191
1190
  var second = b[sortDescriptor.column]; // eslint-disable-next-line radix
1192
1191
 
1193
- // eslint-disable-next-line radix
1194
1192
  var cmp = ((0, _parseInt2["default"])(first) || first) < ((0, _parseInt2["default"])(second) || second) ? -1 : 1;
1195
1193
 
1196
1194
  if (sortDescriptor.direction === 'descending') {
@@ -26,7 +26,7 @@ _Object$defineProperty(exports, "__esModule", {
26
26
  value: true
27
27
  });
28
28
 
29
- exports["default"] = exports.WithSections = exports.OrgLevel = exports.DefaultOpen = exports.Default = exports.ControlledMenu = void 0;
29
+ exports["default"] = exports.WithSections = exports.RightAlignedChips = exports.OrgLevel = exports.DefaultOpen = exports.Default = exports.ControlledMenu = void 0;
30
30
 
31
31
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
32
32
 
@@ -410,4 +410,86 @@ var ControlledMenu = function ControlledMenu() {
410
410
  });
411
411
  };
412
412
 
413
- exports.ControlledMenu = ControlledMenu;
413
+ exports.ControlledMenu = ControlledMenu;
414
+
415
+ var RightAlignedChips = function RightAlignedChips(args) {
416
+ var _useState13 = (0, _react.useState)({
417
+ name: 'Snail',
418
+ isSandbox: true
419
+ }),
420
+ _useState14 = (0, _slicedToArray2["default"])(_useState13, 2),
421
+ selectedEnvironment = _useState14[0],
422
+ setSelectedEnvironment = _useState14[1];
423
+
424
+ var envNode = (0, _react2.jsx)(_index.Box, {
425
+ isRow: true
426
+ }, (0, _react2.jsx)(_index.Text, {
427
+ color: "inherit"
428
+ }, selectedEnvironment.name), selectedEnvironment.isSandbox ? (0, _react2.jsx)(_index.Chip, {
429
+ label: "SANDBOX",
430
+ variant: "boxes.environmentChip",
431
+ bg: "neutral.40"
432
+ }) : null);
433
+
434
+ var findEnvObj = function findEnvObj(envName) {
435
+ return (0, _find["default"])(defaultEnvironments).call(defaultEnvironments, function (_ref9) {
436
+ var name = _ref9.name;
437
+ return name === envName;
438
+ });
439
+ };
440
+
441
+ var handleSelectionChange = function handleSelectionChange(newEnvName) {
442
+ var envObj = findEnvObj(newEnvName);
443
+ setSelectedEnvironment(_objectSpread({}, envObj));
444
+ };
445
+
446
+ var items = [{
447
+ name: 'Default'
448
+ }, {
449
+ name: 'Kangaroo',
450
+ isSandbox: true
451
+ }, {
452
+ name: 'Snake',
453
+ isSandbox: true
454
+ }, {
455
+ name: 'Snail'
456
+ }, {
457
+ name: 'Slug',
458
+ isSandbox: true
459
+ }, {
460
+ name: 'Crow'
461
+ }, {
462
+ name: 'Dog'
463
+ }, {
464
+ name: 'Crab',
465
+ isSandbox: true
466
+ }, {
467
+ name: 'Fish',
468
+ isSandbox: true
469
+ }, {
470
+ name: 'Turtle',
471
+ isSandbox: true
472
+ }, {
473
+ name: 'Mouse'
474
+ }];
475
+ return (0, _react2.jsx)(_EnvironmentBreadcrumb["default"], (0, _extends2["default"])({}, args, {
476
+ items: items,
477
+ name: "Globochem",
478
+ selectedItem: envNode,
479
+ onSelectionChange: handleSelectionChange
480
+ }), function (_ref10) {
481
+ var name = _ref10.name,
482
+ isSandbox = _ref10.isSandbox;
483
+ return (0, _react2.jsx)(_index.Item, {
484
+ key: name,
485
+ textValue: name
486
+ }, name, isSandbox ? (0, _react2.jsx)(_index.Chip, {
487
+ label: "SANDBOX",
488
+ variant: "boxes.environmentChip",
489
+ bg: "neutral.40",
490
+ align: "right"
491
+ }) : null);
492
+ });
493
+ };
494
+
495
+ exports.RightAlignedChips = RightAlignedChips;
@@ -85,7 +85,8 @@ exports["default"] = _default;
85
85
  var items = [{
86
86
  key: 'Aardvark',
87
87
  name: 'Aardvark',
88
- id: '1'
88
+ id: '1',
89
+ hasSeparator: false
89
90
  }, {
90
91
  key: 'Kangaroo',
91
92
  name: 'Kangaroo',
@@ -49,6 +49,7 @@ var ListViewItem = function ListViewItem(props) {
49
49
  rowProps = _props$item$props.rowProps,
50
50
  _props$item$props$has = _props$item$props.hasSeparator,
51
51
  hasSeparator = _props$item$props$has === void 0 ? true : _props$item$props$has,
52
+ hasInsetSeparator = _props$item$props.hasInsetSeparator,
52
53
  className = props.className;
53
54
  var dataId = item.props['data-id'];
54
55
 
@@ -88,7 +89,8 @@ var ListViewItem = function ListViewItem(props) {
88
89
  isHovered: isSelectable && isHovered,
89
90
  isSelected: isSelected,
90
91
  isFocused: isDisabled ? false : isFocusVisible || isFocusVisibleWithin,
91
- hasSeparator: hasSeparator
92
+ hasSeparator: hasSeparator,
93
+ hasInsetSeparator: hasInsetSeparator
92
94
  }),
93
95
  classNames = _useStatusClasses.classNames;
94
96
 
@@ -120,7 +122,8 @@ ListViewItem.propTypes = {
120
122
  'data-id': _propTypes["default"].string,
121
123
  listItemProps: _propTypes["default"].shape({}),
122
124
  rowProps: _propTypes["default"].shape({}),
123
- hasSeparator: _propTypes["default"].bool
125
+ hasSeparator: _propTypes["default"].bool,
126
+ hasInsetSeparator: _propTypes["default"].bool
124
127
  })
125
128
  })
126
129
  };
@@ -136,7 +136,8 @@ var MenuItem = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
136
136
  className: classNames,
137
137
  ref: menuItemRef,
138
138
  variant: isSeparator ? 'menuItem.separator' : 'menuItem.item',
139
- "data-id": dataId
139
+ "data-id": dataId,
140
+ "aria-disabled": isDisabled
140
141
  }, (0, _utils.mergeProps)(pressProps, hoverProps, focusProps, menuItemProps, others)), rendered);
141
142
  });
142
143
  MenuItem.displayName = 'MenuItem';
@@ -79,7 +79,8 @@ var Default = function Default(_ref) {
79
79
  // readers when an overlay is open.
80
80
  (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Text, null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
81
81
  ref: triggerRef,
82
- onPress: state.open
82
+ onPress: state.open,
83
+ "aria-expanded": state.isOpen
83
84
  }, "Open Panel"), state.isOpen && (0, _react2.jsx)(_OverlayPanel["default"], (0, _extends2["default"])({
84
85
  isOpen: state.isOpen,
85
86
  state: state
@@ -88,7 +89,8 @@ var Default = function Default(_ref) {
88
89
  }), (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Button, {
89
90
  onPress: function onPress() {
90
91
  onClose(state, triggerRef);
91
- }
92
+ },
93
+ "aria-expanded": state.isOpen
92
94
  }, "Close Panel"), (0, _react2.jsx)(_index.Text, {
93
95
  pt: "md"
94
96
  }, "Children render here."))))
@@ -158,7 +160,8 @@ var InnerPanel = function InnerPanel(_ref2) {
158
160
  p: '12px'
159
161
  }
160
162
  }, (0, _react2.jsx)(_index.Button, {
161
- onPress: closeOuterPanel
163
+ onPress: closeOuterPanel,
164
+ "aria-expanded": state.isOpen
162
165
  }, "Close Panel"), (0, _react2.jsx)(_index.Text, {
163
166
  pt: "md",
164
167
  mb: "24px"
@@ -180,13 +183,15 @@ var InnerPanel = function InnerPanel(_ref2) {
180
183
  onPress: toggleMessagesOpen
181
184
  }, "Toggle Messages"), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
182
185
  ref: innerTriggerRef,
183
- onPress: innerState.open
186
+ onPress: innerState.open,
187
+ "aria-expanded": innerState.isOpen
184
188
  }, "Open Inner Panel"), inner)));
185
189
  return (// Application must be wrapped in an OverlayProvider so that it can be hidden from screen
186
190
  // readers when an overlay opens.
187
191
  (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Button, {
188
192
  ref: outerTriggerRef,
189
- onPress: state.open
193
+ onPress: state.open,
194
+ "aria-expanded": state.isOpen
190
195
  }, "Open Panel"), outer), messagesOpen && (0, _react2.jsx)(_index.Messages, {
191
196
  sx: {
192
197
  zIndex: 11
@@ -210,7 +215,8 @@ var CustomWidth = function CustomWidth() {
210
215
  // readers when an overlay opens.
211
216
  (0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.Text, null, "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur."), (0, _react2.jsx)("br", null), (0, _react2.jsx)(_index.Button, {
212
217
  ref: triggerRef,
213
- onPress: state.open
218
+ onPress: state.open,
219
+ "aria-expanded": state.isOpen
214
220
  }, "Open Panel"), state.isOpen && (0, _react2.jsx)(_OverlayPanel["default"], {
215
221
  isOpen: state.isOpen,
216
222
  state: state,
@@ -221,7 +227,8 @@ var CustomWidth = function CustomWidth() {
221
227
  }, (0, _react2.jsx)(_index.Box, null, (0, _react2.jsx)(_index.Button, {
222
228
  onPress: function onPress() {
223
229
  onClose(state, triggerRef);
224
- }
230
+ },
231
+ "aria-expanded": state.isOpen
225
232
  }, "Close Panel"), (0, _react2.jsx)(_index.Text, {
226
233
  pt: "md"
227
234
  }, "Children render here."))))
@@ -98,18 +98,22 @@ var RequirementsList = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref)
98
98
 
99
99
  var buildRequirementsLine = function buildRequirementsLine(req) {
100
100
  return (0, _react2.jsx)(_Box["default"], {
101
+ role: "listitem",
101
102
  isRow: true,
102
103
  key: req.name,
103
104
  alignItems: "center",
104
- width: "100%"
105
+ width: "100%",
106
+ as: "li"
105
107
  }, statusIconRender(req.status), (0, _react2.jsx)(_Text["default"], {
106
108
  variant: "bodyWeak"
107
109
  }, req.name));
108
110
  };
109
111
 
110
112
  return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
113
+ role: "list",
111
114
  p: "lg",
112
115
  gap: "md",
116
+ as: "ul",
113
117
  ref: ref
114
118
  }, others), (0, _map["default"])(requirements).call(requirements, function (req) {
115
119
  return buildRequirementsLine(req);
@@ -63,7 +63,7 @@ test('base case requirements list', function () {
63
63
 
64
64
  var requirementsList = _react2.screen.getByTestId(testId);
65
65
 
66
- expect(requirementsList).toBeInstanceOf(HTMLDivElement);
66
+ expect(requirementsList).toBeInstanceOf(HTMLUListElement);
67
67
  expect(requirementsList).toBeInTheDocument();
68
68
  });
69
69
  test('empty variables requirements list', function () {
@@ -73,7 +73,7 @@ test('empty variables requirements list', function () {
73
73
 
74
74
  var requirementsList = _react2.screen.getByTestId(testId);
75
75
 
76
- expect(requirementsList).toBeInstanceOf(HTMLDivElement);
76
+ expect(requirementsList).toBeInstanceOf(HTMLUListElement);
77
77
  expect(requirementsList).toBeInTheDocument();
78
78
  });
79
79
  test('should render default status icon if such passed in props', function () {
@@ -105,6 +105,14 @@ var SearchField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
105
105
  fieldControlProps = _useField.fieldControlProps,
106
106
  fieldLabelProps = _useField.fieldLabelProps;
107
107
 
108
+ var handleKeyDownEvent = function handleKeyDownEvent(e) {
109
+ var key = e.key;
110
+
111
+ if (key === 'Enter' || key === ' ') {
112
+ state.setValue('');
113
+ }
114
+ };
115
+
108
116
  return (0, _react2.jsx)(_.Box, fieldContainerProps, label && (0, _react2.jsx)(_.Label, fieldLabelProps), (0, _react2.jsx)(_.Box, {
109
117
  variant: "forms.search.container"
110
118
  }, (0, _react2.jsx)(_.Input, (0, _extends2["default"])({
@@ -116,6 +124,8 @@ var SearchField = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
116
124
  variant: "forms.search.icon",
117
125
  size: 22
118
126
  }, iconProps)), !hasNoClearButton && state.value !== '' && (0, _react2.jsx)(_.IconButton, (0, _extends2["default"])({
127
+ tabIndex: 0,
128
+ onKeyDown: handleKeyDownEvent,
119
129
  sx: {
120
130
  position: 'absolute',
121
131
  top: 8,
@@ -242,6 +242,33 @@ test('clear button should be present by default ', function () {
242
242
  });
243
243
  expect(_testWrapper.screen.getByRole('button')).toBeInTheDocument();
244
244
  });
245
+ test('clear button should be keyboard accessible', function () {
246
+ getComponent();
247
+
248
+ var search = _testWrapper.screen.getByLabelText(testLabel);
249
+
250
+ _userEvent["default"].type(search, 'clear');
251
+
252
+ expect(search).toHaveValue('clear');
253
+
254
+ var clearButton = _testWrapper.screen.getByRole('button');
255
+
256
+ expect(clearButton).toHaveAttribute('tabindex', '0');
257
+ (0, _testWrapper.act)(function () {
258
+ clearButton.focus();
259
+ });
260
+ expect(clearButton).toHaveFocus();
261
+
262
+ _testWrapper.fireEvent.keyDown(clearButton, {
263
+ key: 'Enter'
264
+ });
265
+
266
+ _testWrapper.fireEvent.keyUp(clearButton, {
267
+ key: 'Enter'
268
+ });
269
+
270
+ expect(search).toHaveValue('');
271
+ });
245
272
  test('clear button should not be present is hasNoClearButton=true ', function () {
246
273
  getComponent({
247
274
  value: 'test-value',
@@ -229,6 +229,7 @@ var TabPicker = /*#__PURE__*/(0, _react.forwardRef)(function (_ref, ref) {
229
229
  ref: menuRef
230
230
  }, (0, _map["default"])(items).call(items, function (tab) {
231
231
  return (0, _react2.jsx)(_collections.Item, {
232
+ role: tab.role,
232
233
  key: tab.key
233
234
  }, tab.name);
234
235
  })));
@@ -26,6 +26,10 @@ var _TableCell = _interopRequireDefault(require("../TableCell"));
26
26
 
27
27
  var _TableHead = _interopRequireDefault(require("../TableHead"));
28
28
 
29
+ var _TableCaption = _interopRequireDefault(require("../TableCaption"));
30
+
31
+ var _index = require("../../index");
32
+
29
33
  var _react2 = require("@emotion/react");
30
34
 
31
35
  var _default = {
@@ -33,6 +37,7 @@ var _default = {
33
37
  component: _Table["default"]
34
38
  };
35
39
  exports["default"] = _default;
40
+ var caption = 'Populations of Countries';
36
41
  var headers = ['Country', 'Population', 'Continent'];
37
42
  var objects = [{
38
43
  country: 'USA',
@@ -53,33 +58,10 @@ var objects = [{
53
58
  }];
54
59
 
55
60
  var Default = function Default() {
56
- // const headers = [
57
- // 'Country', 'Population', 'Continent',
58
- // ];
59
- //
60
- // const objects = [
61
- // {
62
- // country: 'USA',
63
- // population: '320,000,000',
64
- // continent: 'North America',
65
- // },
66
- // {
67
- // country: 'Canada',
68
- // population: '37,000,000',
69
- // continent: 'North America',
70
- // },
71
- // {
72
- // country: 'China',
73
- // population: '1,398,000,000',
74
- // continent: 'Asia',
75
- // },
76
- // {
77
- // country: 'France',
78
- // population: '67,000,000',
79
- // continent: 'Europe',
80
- // },
81
- // ];
82
- return (0, _react2.jsx)(_Table["default"], null, (0, _react2.jsx)(_TableHead["default"], null, (0, _react2.jsx)(_TableRow["default"], {
61
+ return (0, _react2.jsx)(_Table["default"], null, (0, _react2.jsx)(_TableCaption["default"], null, (0, _react2.jsx)(_index.Text, {
62
+ fontWeight: 3,
63
+ fontSize: "lg"
64
+ }, caption)), (0, _react2.jsx)(_TableHead["default"], null, (0, _react2.jsx)(_TableRow["default"], {
83
65
  key: "head"
84
66
  }, (0, _map["default"])(headers).call(headers, function (head) {
85
67
  return (0, _react2.jsx)(_TableCell["default"], {
@@ -20,6 +20,10 @@ var _TableCell = _interopRequireDefault(require("../TableCell"));
20
20
 
21
21
  var _TableHead = _interopRequireDefault(require("../TableHead"));
22
22
 
23
+ var _TableCaption = _interopRequireDefault(require("../TableCaption"));
24
+
25
+ var _index = require("../../index");
26
+
23
27
  var _testAxe = _interopRequireDefault(require("../../utils/testUtils/testAxe"));
24
28
 
25
29
  var _react3 = require("@emotion/react");
@@ -28,6 +32,7 @@ var testId = 'test-table';
28
32
  var defaultProps = {
29
33
  'data-testid': testId
30
34
  };
35
+ var caption = 'Populations of Countries';
31
36
  var headers = ['Country', 'Population', 'Continent'];
32
37
  var objects = [{
33
38
  country: 'USA',
@@ -48,7 +53,10 @@ var objects = [{
48
53
  }];
49
54
 
50
55
  var getComponent = function getComponent() {
51
- return (0, _react2.render)((0, _react3.jsx)(_Table["default"], defaultProps, (0, _react3.jsx)(_TableHead["default"], null, (0, _react3.jsx)(_TableRow["default"], {
56
+ return (0, _react2.render)((0, _react3.jsx)(_Table["default"], defaultProps, (0, _react3.jsx)(_TableCaption["default"], null, (0, _react3.jsx)(_index.Text, {
57
+ fontWeight: 3,
58
+ fontSize: "lg"
59
+ }, caption)), (0, _react3.jsx)(_TableHead["default"], null, (0, _react3.jsx)(_TableRow["default"], {
52
60
  key: "head"
53
61
  }, (0, _map["default"])(headers).call(headers, function (head) {
54
62
  return (0, _react3.jsx)(_TableCell["default"], {
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+
7
+ _Object$defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ exports["default"] = void 0;
12
+
13
+ var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
14
+
15
+ var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
16
+
17
+ var _react = _interopRequireDefault(require("react"));
18
+
19
+ var _Box = _interopRequireDefault(require("../Box"));
20
+
21
+ var _react2 = require("@emotion/react");
22
+
23
+ var _excluded = ["children"];
24
+
25
+ /**
26
+ * Basic TableCaption component.
27
+ *
28
+ * Renders HTML `<caption>`
29
+ *
30
+ * Needs to be a child of the `<Table>` component. Accepts text as children.
31
+ *
32
+ */
33
+ var TableCaption = function TableCaption(props) {
34
+ var children = props.children,
35
+ others = (0, _objectWithoutProperties2["default"])(props, _excluded);
36
+ return (0, _react2.jsx)(_Box["default"], (0, _extends2["default"])({
37
+ variant: "table.tableCaption",
38
+ as: "caption"
39
+ }, others), children);
40
+ };
41
+
42
+ var _default = TableCaption;
43
+ exports["default"] = _default;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+
3
+ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
4
+
5
+ var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
6
+
7
+ _Object$defineProperty(exports, "__esModule", {
8
+ value: true
9
+ });
10
+
11
+ _Object$defineProperty(exports, "default", {
12
+ enumerable: true,
13
+ get: function get() {
14
+ return _TableCaption["default"];
15
+ }
16
+ });
17
+
18
+ var _TableCaption = _interopRequireDefault(require("./TableCaption"));
@@ -298,11 +298,13 @@ var WithList = function WithList() {
298
298
  list: [{
299
299
  key: 'tab1list',
300
300
  name: 'Tab 1 list',
301
- children: 'Tab 1 from list'
301
+ children: 'Tab 1 from list',
302
+ role: 'listitem'
302
303
  }, {
303
304
  key: 'tab2list',
304
305
  name: 'Tab 2 list',
305
- children: 'Tab 2 from list'
306
+ children: 'Tab 2 from list',
307
+ role: 'listitem'
306
308
  }]
307
309
  }]);
308
310
  return (0, _react2.jsx)(_Tabs["default"], {