@pingux/astro 1.41.0-alpha.1 → 1.41.0-alpha.3

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 (89) hide show
  1. package/lib/Patterns/AttributeMappingDisplayViewPattern.stories.hidden.js +138 -0
  2. package/lib/Patterns/AttributeMappingEditViewPattern.stories.hidden.js +145 -0
  3. package/lib/Patterns/ListAndPanelPattern.stories.hidden.js +381 -0
  4. package/lib/Patterns/MessagesPattern.stories.hidden.js +69 -0
  5. package/lib/Patterns/SaveBarPattern.stories.hidden.js +80 -0
  6. package/lib/Patterns/UnsavedChangesPattern.stories.hidden.js +106 -0
  7. package/lib/cjs/Patterns/AttributeMappingDisplayViewPattern.stories.hidden.js +158 -0
  8. package/lib/cjs/Patterns/AttributeMappingEditViewPattern.stories.hidden.js +167 -0
  9. package/lib/cjs/Patterns/ListAndPanelPattern.stories.hidden.js +418 -0
  10. package/lib/cjs/Patterns/MessagesPattern.stories.hidden.js +99 -0
  11. package/lib/cjs/Patterns/SaveBarPattern.stories.hidden.js +109 -0
  12. package/lib/cjs/Patterns/UnsavedChangesPattern.stories.hidden.js +136 -0
  13. package/lib/cjs/components/Bracket/Bracket.stories.js +1 -3
  14. package/lib/cjs/components/Breadcrumbs/Breadcrumbs.js +1 -1
  15. package/lib/cjs/components/Breadcrumbs/Breadcrumbs.stories.js +2 -18
  16. package/lib/cjs/components/Card/Card.js +117 -6
  17. package/lib/cjs/components/Card/Card.stories.js +55 -16
  18. package/lib/cjs/components/Card/Card.test.js +50 -0
  19. package/lib/cjs/components/Chip/Badge.js +0 -5
  20. package/lib/cjs/components/Chip/Badge.stories.js +11 -0
  21. package/lib/cjs/components/Chip/Chip.js +0 -5
  22. package/lib/cjs/components/CodeView/CodeView.js +0 -4
  23. package/lib/cjs/components/CodeView/CodeView.stories.js +9 -0
  24. package/lib/cjs/components/CollapsiblePanel/CollapsiblePanel.js +0 -4
  25. package/lib/cjs/components/CollapsiblePanel/CollapsiblePanel.stories.js +7 -0
  26. package/lib/cjs/components/ComboBoxField/ComboBoxField.stories.js +13 -1
  27. package/lib/cjs/components/ComboBoxField/ComboBoxField.test.js +75 -4
  28. package/lib/cjs/components/CopyText/CopyText.js +0 -4
  29. package/lib/cjs/components/CopyText/CopyText.stories.js +11 -0
  30. package/lib/cjs/components/DataTable/DataTable.js +33 -15
  31. package/lib/cjs/components/DataTable/DataTable.stories.js +91 -17
  32. package/lib/cjs/components/DataTable/DataTable.test.js +38 -6
  33. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.js +1 -3
  34. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +25 -3
  35. package/lib/cjs/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.test.js +19 -5
  36. package/lib/cjs/components/HelpHint/HelpHint.js +0 -7
  37. package/lib/cjs/components/HelpHint/HelpHint.stories.js +11 -0
  38. package/lib/cjs/components/Icon/Icon.js +0 -12
  39. package/lib/cjs/components/Icon/Icon.stories.js +7 -0
  40. package/lib/cjs/components/Image/Image.stories.js +2 -2
  41. package/lib/cjs/components/ListBox/ListBoxSection.js +8 -1
  42. package/lib/cjs/components/ListView/ListView.stories.js +6 -4
  43. package/lib/cjs/components/OverlayPanel/OverlayPanel.stories.js +2 -1
  44. package/lib/cjs/components/SelectField/SelectField.stories.js +13 -1
  45. package/lib/cjs/components/SelectField/SelectField.test.js +75 -0
  46. package/lib/cjs/recipes/ConditionalFilter.stories.js +0 -1
  47. package/lib/cjs/recipes/ScrollableListView.stories.js +3 -2
  48. package/lib/cjs/recipes/TrialExperienceIndustryButtons.stories.js +4 -8
  49. package/lib/cjs/styles/variants/boxes.js +6 -6
  50. package/lib/cjs/utils/devUtils/constants/text.js +11 -0
  51. package/lib/components/Bracket/Bracket.stories.js +1 -3
  52. package/lib/components/Breadcrumbs/Breadcrumbs.js +1 -1
  53. package/lib/components/Breadcrumbs/Breadcrumbs.stories.js +0 -13
  54. package/lib/components/Card/Card.js +110 -7
  55. package/lib/components/Card/Card.stories.js +44 -10
  56. package/lib/components/Card/Card.test.js +36 -0
  57. package/lib/components/Chip/Badge.js +0 -6
  58. package/lib/components/Chip/Badge.stories.js +9 -0
  59. package/lib/components/Chip/Chip.js +0 -6
  60. package/lib/components/CodeView/CodeView.js +0 -5
  61. package/lib/components/CodeView/CodeView.stories.js +7 -0
  62. package/lib/components/CollapsiblePanel/CollapsiblePanel.js +0 -5
  63. package/lib/components/CollapsiblePanel/CollapsiblePanel.stories.js +5 -0
  64. package/lib/components/ComboBoxField/ComboBoxField.stories.js +13 -1
  65. package/lib/components/ComboBoxField/ComboBoxField.test.js +70 -5
  66. package/lib/components/CopyText/CopyText.js +0 -4
  67. package/lib/components/CopyText/CopyText.stories.js +9 -0
  68. package/lib/components/DataTable/DataTable.js +33 -15
  69. package/lib/components/DataTable/DataTable.stories.js +80 -17
  70. package/lib/components/DataTable/DataTable.test.js +36 -6
  71. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.js +1 -3
  72. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.stories.js +23 -3
  73. package/lib/components/EnvironmentBreadcrumb/EnvironmentBreadcrumb.test.js +16 -5
  74. package/lib/components/HelpHint/HelpHint.js +0 -7
  75. package/lib/components/HelpHint/HelpHint.stories.js +9 -0
  76. package/lib/components/Icon/Icon.js +0 -13
  77. package/lib/components/Icon/Icon.stories.js +5 -0
  78. package/lib/components/Image/Image.stories.js +2 -2
  79. package/lib/components/ListBox/ListBoxSection.js +7 -2
  80. package/lib/components/ListView/ListView.stories.js +6 -4
  81. package/lib/components/OverlayPanel/OverlayPanel.stories.js +2 -1
  82. package/lib/components/SelectField/SelectField.stories.js +13 -1
  83. package/lib/components/SelectField/SelectField.test.js +68 -1
  84. package/lib/recipes/ConditionalFilter.stories.js +0 -1
  85. package/lib/recipes/ScrollableListView.stories.js +3 -2
  86. package/lib/recipes/TrialExperienceIndustryButtons.stories.js +4 -8
  87. package/lib/styles/variants/boxes.js +6 -6
  88. package/lib/utils/devUtils/constants/text.js +1 -0
  89. package/package.json +1 -1
@@ -134,6 +134,7 @@ var animals = [{
134
134
  }];
135
135
  var withSection = [{
136
136
  name: 'Animals',
137
+ key: 'Animals',
137
138
  children: [{
138
139
  name: 'Raccoon'
139
140
  }, {
@@ -143,6 +144,7 @@ var withSection = [{
143
144
  }]
144
145
  }, {
145
146
  name: 'People',
147
+ key: 'People',
146
148
  children: [{
147
149
  name: 'Michael'
148
150
  }, {
@@ -150,6 +152,16 @@ var withSection = [{
150
152
  }, {
151
153
  name: 'Creed'
152
154
  }]
155
+ }, {
156
+ name: null,
157
+ key: 'fruit',
158
+ children: [{
159
+ name: 'Apple'
160
+ }, {
161
+ name: 'Orange'
162
+ }, {
163
+ name: 'Banana'
164
+ }]
153
165
  }];
154
166
  var actions = {
155
167
  onOpenChange: (0, _addonActions.action)('onOpenChange'),
@@ -243,7 +255,7 @@ var WithSections = function WithSections(args) {
243
255
  items: withSection
244
256
  }, args), function (section) {
245
257
  return (0, _react2.jsx)(_.Section, {
246
- key: section.name,
258
+ key: section.key,
247
259
  items: section.children,
248
260
  title: section.name
249
261
  }, function (item) {
@@ -82,6 +82,37 @@ var items = [{
82
82
  name: 'Snake',
83
83
  id: '3'
84
84
  }];
85
+ var withSection = [{
86
+ name: 'Animals',
87
+ key: 'Animals',
88
+ kids: [{
89
+ name: 'Raccoon'
90
+ }, {
91
+ name: 'Kangaroo'
92
+ }, {
93
+ name: 'Opossum'
94
+ }]
95
+ }, {
96
+ name: 'People',
97
+ key: 'People',
98
+ kids: [{
99
+ name: 'Michael'
100
+ }, {
101
+ name: 'Dwight'
102
+ }, {
103
+ name: 'Creed'
104
+ }]
105
+ }, {
106
+ name: null,
107
+ key: 'fruit',
108
+ kids: [{
109
+ name: 'Apple'
110
+ }, {
111
+ name: 'Orange'
112
+ }, {
113
+ name: 'Banana'
114
+ }]
115
+ }];
85
116
  var defaultProps = {
86
117
  defaultItems: items,
87
118
  label: 'Test Label'
@@ -102,6 +133,28 @@ var getComponent = function getComponent() {
102
133
  })));
103
134
  };
104
135
 
136
+ var getComponentWithSections = function getComponentWithSections() {
137
+ var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
138
+
139
+ var _ref2 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
140
+ _ref2$renderFn = _ref2.renderFn,
141
+ renderFn = _ref2$renderFn === void 0 ? _testWrapper.render : _ref2$renderFn;
142
+
143
+ return renderFn((0, _react3.jsx)(_index.OverlayProvider, null, (0, _react3.jsx)(_index.ComboBoxField, (0, _extends2["default"])({}, defaultProps, props, {
144
+ items: withSection
145
+ }), function (section) {
146
+ return (0, _react3.jsx)(_index.Section, {
147
+ key: section.key,
148
+ items: section.kids,
149
+ title: section.name
150
+ }, function (item) {
151
+ return (0, _react3.jsx)(_index.Item, {
152
+ key: item.name
153
+ }, item.name);
154
+ });
155
+ })));
156
+ };
157
+
105
158
  var ComboBoxWithCustomFilter = function ComboBoxWithCustomFilter() {
106
159
  var _useFilter = (0, _i18n.useFilter)({
107
160
  sensitivity: 'base'
@@ -118,8 +171,8 @@ var ComboBoxWithCustomFilter = function ComboBoxWithCustomFilter() {
118
171
  setFieldState = _useState2[1];
119
172
 
120
173
  var onSelectionChange = function onSelectionChange(key) {
121
- var selectedItem = (0, _filter["default"])(items).call(items, function (_ref2) {
122
- var id = _ref2.id;
174
+ var selectedItem = (0, _filter["default"])(items).call(items, function (_ref3) {
175
+ var id = _ref3.id;
123
176
  return id === key;
124
177
  });
125
178
  setFieldState({
@@ -189,8 +242,8 @@ var ComboBoxWithAddOption = function ComboBoxWithAddOption() {
189
242
  setSelectedKey = _useState8[1];
190
243
 
191
244
  var onSelectionChange = function onSelectionChange(key) {
192
- if (key && !(0, _find["default"])(options).call(options, function (_ref3) {
193
- var name = _ref3.name;
245
+ if (key && !(0, _find["default"])(options).call(options, function (_ref4) {
246
+ var name = _ref4.name;
194
247
  return name === key;
195
248
  })) {
196
249
  var _context;
@@ -1216,6 +1269,24 @@ test('popover closes on input blur', function () {
1216
1269
  expect(_testWrapper.screen.queryByRole('listbox')).not.toBeInTheDocument();
1217
1270
  expect(_testWrapper.screen.queryByRole('option')).not.toBeInTheDocument();
1218
1271
  });
1272
+ test('passing sections, renders separators', function () {
1273
+ getComponentWithSections();
1274
+
1275
+ var button = _testWrapper.screen.getByRole('button');
1276
+
1277
+ _userEvent["default"].click(button);
1278
+
1279
+ expect(_testWrapper.screen.queryAllByRole('separator')).toHaveLength(4);
1280
+ });
1281
+ test('a blank title does not render', function () {
1282
+ getComponentWithSections();
1283
+
1284
+ var button = _testWrapper.screen.getByRole('button');
1285
+
1286
+ _userEvent["default"].click(button);
1287
+
1288
+ expect(_testWrapper.screen.queryByText('Fruit')).not.toBeInTheDocument();
1289
+ });
1219
1290
  describe('when isReadOnly is true', function () {
1220
1291
  var testProp = {
1221
1292
  isReadOnly: true
@@ -67,10 +67,6 @@ TooltipWrapper.propTypes = {
67
67
  targetRef: _propTypes["default"].shape({}),
68
68
  tooltip: _propTypes["default"].string
69
69
  };
70
- /**
71
- * Allows copying some pieces of text by clicking on the text or by the button nearby.
72
- */
73
-
74
70
  var CopyText = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
75
71
  var children = props.children,
76
72
  textToCopy = props.textToCopy,
@@ -20,11 +20,22 @@ var _Text = _interopRequireDefault(require("../Text"));
20
20
 
21
21
  var _CopyText = _interopRequireDefault(require("./CopyText"));
22
22
 
23
+ var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
24
+
25
+ var _CopyText2 = _interopRequireDefault(require("./CopyText.mdx"));
26
+
23
27
  var _react2 = require("@emotion/react");
24
28
 
25
29
  var _default = {
26
30
  title: 'Components/CopyText',
27
31
  component: _CopyText["default"],
32
+ parameters: {
33
+ docs: {
34
+ page: function page() {
35
+ return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_CopyText2["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
36
+ }
37
+ }
38
+ },
28
39
  argTypes: {
29
40
  mode: {
30
41
  control: 'none'
@@ -96,13 +96,6 @@ var ROW_HEIGHTS = {
96
96
  large: 75
97
97
  }
98
98
  };
99
- /**
100
- * DataTable component using react aria Spectrum TableView
101
- * Primarily utilizes [TableView](https://react-spectrum.adobe.com/react-spectrum/TableView.html)
102
- * Cross platform state management react hook for DataTable
103
- * Primarily utilizes [useTableState](https://react-spectrum.adobe.com/react-stately/useTableState.html)
104
- */
105
-
106
99
  var DataTable = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
107
100
  var width = props.width,
108
101
  height = props.height,
@@ -256,12 +249,30 @@ var DataTable = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
256
249
  });
257
250
  DataTable.propTypes = {
258
251
  /**
259
- * Sets the amount of vertical padding within each cell.
260
- * density: 'compact' | 'regular' | 'spacious'
261
- * @default 'regular'
262
- */
252
+ * Sets the amount of vertical padding within each cell.
253
+ * density: 'compact' | 'regular' | 'spacious'
254
+ * @default 'regular'
255
+ */
263
256
  density: _propTypes["default"].string,
264
257
 
258
+ /** Sets the height of table. */
259
+ height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
260
+
261
+ /** Determine if the header should be hidden. */
262
+ hasHiddenHeader: _propTypes["default"].bool,
263
+
264
+ /** Bool that determines if the items are sortable. */
265
+ isSortable: _propTypes["default"].bool,
266
+
267
+ /** The list of DataTable items. */
268
+ items: _propTypes["default"].arrayOf(_propTypes["default"].shape({})),
269
+
270
+ /** Reflects current loading state. */
271
+ loadingState: _propTypes["default"].oneOf(['error', 'filtering', 'idle', 'loading', 'loadingMore', 'sorting']),
272
+
273
+ /** Handler that is called when a user performs an action on a row. */
274
+ onAction: _propTypes["default"].func,
275
+
265
276
  /**
266
277
  * Sets the overflow behavior for the cell contents.
267
278
  * overflowMode: 'wrap' | 'truncate'
@@ -269,10 +280,17 @@ DataTable.propTypes = {
269
280
  */
270
281
  overflowMode: _propTypes["default"].string,
271
282
 
272
- /** Handler that is called when a user performs an action on a row. */
273
- onAction: _propTypes["default"].func,
274
- width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number]),
275
- height: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
283
+ /** Callback function that fires when more data should be loaded on demand as user scrolls. */
284
+ onLoadMore: _propTypes["default"].func,
285
+
286
+ /** Callback function that fires when sortable column header is pressed. */
287
+ onSortChange: _propTypes["default"].func,
288
+
289
+ /** Defines the current column key to sort by and the sort direction. */
290
+ sortDescriptor: _propTypes["default"].oneOf(['ascending', 'descending']),
291
+
292
+ /** Sets the width of table. */
293
+ width: _propTypes["default"].oneOfType([_propTypes["default"].string, _propTypes["default"].number])
276
294
  };
277
295
  DataTable.defaultProps = {
278
296
  width: '100%',
@@ -1,5 +1,19 @@
1
1
  "use strict";
2
2
 
3
+ var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
4
+
5
+ var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
6
+
7
+ var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
8
+
9
+ var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
10
+
11
+ var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
12
+
13
+ var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
14
+
15
+ var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
16
+
3
17
  var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
4
18
 
5
19
  var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
@@ -12,6 +26,10 @@ exports["default"] = exports.Default = exports.CustomContent = void 0;
12
26
 
13
27
  var _regenerator = _interopRequireDefault(require("@babel/runtime-corejs3/regenerator"));
14
28
 
29
+ var _promise = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/promise"));
30
+
31
+ var _setTimeout2 = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set-timeout"));
32
+
15
33
  var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/map"));
16
34
 
17
35
  var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
@@ -30,6 +48,8 @@ var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/
30
48
 
31
49
  var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
32
50
 
51
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
52
+
33
53
  var _react = _interopRequireDefault(require("react"));
34
54
 
35
55
  var _data = require("@react-stately/data");
@@ -42,48 +62,95 @@ var _faker = require("@faker-js/faker");
42
62
 
43
63
  var _isChromatic = _interopRequireDefault(require("chromatic/isChromatic"));
44
64
 
65
+ var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
66
+
67
+ var _DataTable = _interopRequireDefault(require("./DataTable.mdx"));
68
+
69
+ var _ariaAttributes = require("../../utils/devUtils/props/ariaAttributes");
70
+
45
71
  var _index = require("../../index");
46
72
 
47
73
  var _react2 = require("@emotion/react");
48
74
 
75
+ 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; }
76
+
77
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var _context8, _context9; var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? _forEachInstanceProperty(_context8 = ownKeys(Object(source), !0)).call(_context8, function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(target, _Object$getOwnPropertyDescriptors(source)) : _forEachInstanceProperty(_context9 = ownKeys(Object(source))).call(_context9, function (key) { _Object$defineProperty(target, key, _Object$getOwnPropertyDescriptor(source, key)); }); } return target; }
78
+
49
79
  var _default = {
50
80
  title: 'Components/DataTable',
51
81
  component: _index.DataTable,
52
82
  parameters: {
53
83
  docs: {
84
+ page: function page() {
85
+ return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_DataTable["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
86
+ },
54
87
  source: {
55
88
  type: 'code'
56
89
  }
57
90
  }
58
91
  },
59
- argTypes: {
92
+ argTypes: _objectSpread({
60
93
  density: {
61
94
  control: {
62
- type: 'radio',
63
- options: ['compact', 'regular', 'spacious']
95
+ disable: true
64
96
  },
65
97
  defaultValue: 'spacious'
66
98
  },
67
99
  overflowMode: {
68
100
  control: {
69
- type: 'radio',
70
- options: ['truncate', 'wrap']
101
+ disable: true
71
102
  },
72
103
  defaultValue: 'truncate'
73
104
  },
74
105
  width: {
75
- defaultValue: '100%',
106
+ description: 'Sets the width of the data table.',
76
107
  control: {
77
- type: 'text'
108
+ disable: true
78
109
  }
79
110
  },
80
111
  height: {
81
- defaultValue: 565,
112
+ description: 'Sets the height of the data table.',
113
+ control: {
114
+ disable: true
115
+ }
116
+ },
117
+ sortDescriptor: {
118
+ description: 'Defines the current column key to sort by and the sort direction.',
82
119
  control: {
83
- type: 'number'
120
+ disable: true
84
121
  }
122
+ },
123
+ onSortChange: {
124
+ description: 'Callback function that fires when sortable column header is pressed.'
125
+ },
126
+ allowsSorting: {
127
+ description: 'Determine if the column supports sorting.',
128
+ control: {
129
+ disable: true
130
+ }
131
+ },
132
+ hideHeader: {
133
+ description: 'Determine if the header should be hidden.',
134
+ control: {
135
+ disable: true
136
+ }
137
+ },
138
+ loadingState: {
139
+ description: 'Reflects current loading state.',
140
+ control: {
141
+ disable: true
142
+ }
143
+ },
144
+ onLoadMore: {
145
+ description: 'Callback function that fires when more data should be loaded on demand as user scrolls.'
146
+ },
147
+ items: {
148
+ control: {
149
+ disable: true
150
+ },
151
+ description: 'The list of DataTable items.'
85
152
  }
86
- }
153
+ }, _ariaAttributes.ariaAttributeBaseArgTypes)
87
154
  };
88
155
  exports["default"] = _default;
89
156
 
@@ -120,7 +187,8 @@ var Default = function Default(args) {
120
187
  continent: 'Europe'
121
188
  }];
122
189
  return (0, _react2.jsx)(_index.DataTable, (0, _extends2["default"])({}, args, {
123
- "aria-label": "Static table"
190
+ "aria-label": "Static table",
191
+ height: "100%"
124
192
  }), (0, _react2.jsx)(_index.DataTableHeader, {
125
193
  columns: columns
126
194
  }, function (column) {
@@ -170,12 +238,17 @@ var CustomContent = function CustomContent(args) {
170
238
  key: 'menu',
171
239
  isSortable: false
172
240
  }];
241
+
242
+ var random = function random(items) {
243
+ return items[Math.floor(Math.random() * items.length)];
244
+ };
245
+
173
246
  var list = (0, _data.useAsyncList)({
174
247
  load: function load(_ref) {
175
248
  return (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
176
249
  var _context, _context2, _context3;
177
250
 
178
- var signal, cursor, res, json, random, fakeData, tableData;
251
+ var signal, cursor, res, json, fakeData, tableData;
179
252
  return _regenerator["default"].wrap(function _callee$(_context5) {
180
253
  while (1) {
181
254
  switch (_context5.prev = _context5.next) {
@@ -199,11 +272,12 @@ var CustomContent = function CustomContent(args) {
199
272
 
200
273
  case 7:
201
274
  json = _context5.sent;
275
+ _context5.next = 10;
276
+ return new _promise["default"](function (resolve) {
277
+ return (0, _setTimeout2["default"])(resolve, cursor ? 2000 : 3000);
278
+ });
202
279
 
203
- random = function random(items) {
204
- return items[Math.floor(Math.random() * items.length)];
205
- };
206
-
280
+ case 10:
207
281
  fakeData = (0, _map["default"])(_context = (0, _concat["default"])(_context2 = []).call(_context2, (0, _keys["default"])(_context3 = Array(json.results.length)).call(_context3))).call(_context, function (key) {
208
282
  var _context4;
209
283
 
@@ -233,7 +307,7 @@ var CustomContent = function CustomContent(args) {
233
307
  cursor: json.next
234
308
  });
235
309
 
236
- case 12:
310
+ case 13:
237
311
  case "end":
238
312
  return _context5.stop();
239
313
  }
@@ -936,7 +936,7 @@ describe('Sortable DataTable with useAsyncList', function () {
936
936
  var sortableDataTable = function sortableDataTable(_ref16) {
937
937
  var result = _ref16.result;
938
938
  return (0, _react2.render)((0, _react3.jsx)(_DataTable["default"], (0, _extends2["default"])({}, defaultProps, {
939
- sortDescriptor: result.current.sortDescriptor,
939
+ sortDescriptor: result.current.sortDescriptor.direction,
940
940
  onSortChange: (0, _sort2["default"])(result.current)
941
941
  }), (0, _react3.jsx)(_index.DataTableHeader, {
942
942
  columns: columns
@@ -1290,16 +1290,48 @@ describe('Sortable DataTable with useAsyncList', function () {
1290
1290
  })));
1291
1291
 
1292
1292
  case 31:
1293
- expect(result.current.items[0].country).toBe('USA');
1294
- expect(result.current.items[1].country).toBe('France');
1295
- expect(result.current.items[2].country).toBe('China');
1296
- expect(result.current.items[3].country).toBe('Canada');
1293
+ expect(result.current.items[0].country).toBe('Canada');
1294
+ expect(result.current.items[1].country).toBe('China');
1295
+ expect(result.current.items[2].country).toBe('France');
1296
+ expect(result.current.items[3].country).toBe('USA');
1297
+ expect(result.current.items[0].continent).toBe('North America');
1298
+ expect(result.current.items[1].continent).toBe('Asia');
1299
+ expect(result.current.items[2].continent).toBe('Europe');
1300
+ expect(result.current.items[3].continent).toBe('North America');
1301
+ expect(result.current.items[0].population).toBe(37000000);
1302
+ expect(result.current.items[1].population).toBe(1398000000);
1303
+ expect(result.current.items[2].population).toBe(67000000);
1304
+ expect(result.current.items[3].population).toBe(320000000);
1297
1305
 
1298
- case 35:
1306
+ case 43:
1299
1307
  case "end":
1300
1308
  return _context34.stop();
1301
1309
  }
1302
1310
  }
1303
1311
  }, _callee30);
1304
1312
  })));
1313
+ });
1314
+ describe('Empty DataTable', function () {
1315
+ var staticDataTable = function staticDataTable() {
1316
+ return (0, _react2.render)((0, _react3.jsx)(_DataTable["default"], {
1317
+ "aria-label": "Table"
1318
+ }, (0, _react3.jsx)(_index.DataTableHeader, {
1319
+ columns: columns
1320
+ }, function (column) {
1321
+ return (0, _react3.jsx)(_index.DataTableColumn, {
1322
+ align: "center"
1323
+ }, column.name);
1324
+ }), (0, _react3.jsx)(_index.DataTableBody, null, [])));
1325
+ };
1326
+
1327
+ it('should display header row only when there are no items', function () {
1328
+ staticDataTable();
1329
+
1330
+ var staticTable = _react2.screen.getByRole('grid');
1331
+
1332
+ var tRows = (0, _react2.within)(staticTable).getByRole('row');
1333
+ expect(staticTable).toBeInTheDocument();
1334
+ expect(staticTable).toBeVisible();
1335
+ expect(tRows).toBeInTheDocument();
1336
+ });
1305
1337
  });
@@ -91,8 +91,6 @@ var breadCrumbDataIds = {
91
91
  environmentButton: 'breadcrumb--environment-button',
92
92
  orgButton: 'breadcrumb--org-button'
93
93
  };
94
- /** The Environment Picker with Search and Sections support */
95
-
96
94
  exports.breadCrumbDataIds = breadCrumbDataIds;
97
95
  var EnvironmentBreadcrumb = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
98
96
  var children = props.children,
@@ -324,7 +322,7 @@ var EnvironmentBreadcrumb = /*#__PURE__*/(0, _react.forwardRef)(function (props,
324
322
  iconProps: {
325
323
  color: 'neutral.70',
326
324
  mx: 5,
327
- size: 16
325
+ size: 'xs'
328
326
  }
329
327
  }, others), (0, _react2.jsx)(_index.Item, {
330
328
  key: "name",
@@ -52,6 +52,10 @@ var _EnvironmentBreadcrumb = _interopRequireDefault(require("./EnvironmentBreadc
52
52
 
53
53
  var _index = require("../../index");
54
54
 
55
+ var _storybookDocsLayout = _interopRequireDefault(require("../../../.storybook/storybookDocsLayout"));
56
+
57
+ var _EnvironmentBreadcrumb2 = _interopRequireDefault(require("./EnvironmentBreadcrumb.mdx"));
58
+
55
59
  var _react2 = require("@emotion/react");
56
60
 
57
61
  function _getRequireWildcardCache(nodeInterop) { if (typeof _WeakMap !== "function") return null; var cacheBabelInterop = new _WeakMap(); var cacheNodeInterop = new _WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
@@ -67,6 +71,9 @@ var _default = {
67
71
  component: _EnvironmentBreadcrumb["default"],
68
72
  parameters: {
69
73
  docs: {
74
+ page: function page() {
75
+ return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_EnvironmentBreadcrumb2["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
76
+ },
70
77
  source: {
71
78
  type: 'code'
72
79
  }
@@ -108,6 +115,7 @@ var defaultEnvironments = [{
108
115
  }];
109
116
  var environmentsWithSections = [{
110
117
  name: 'Recent',
118
+ key: 'Recent',
111
119
  options: [{
112
120
  name: 'Default'
113
121
  }, {
@@ -117,6 +125,7 @@ var environmentsWithSections = [{
117
125
  }]
118
126
  }, {
119
127
  name: 'All',
128
+ key: 'All',
120
129
  options: [{
121
130
  name: 'Consumer Banking Prod'
122
131
  }, {
@@ -133,6 +142,17 @@ var environmentsWithSections = [{
133
142
  }, {
134
143
  name: 'Mine'
135
144
  }]
145
+ }, {
146
+ name: null,
147
+ key: 'Other',
148
+ options: [{
149
+ name: 'Default'
150
+ }, {
151
+ name: 'Auth test',
152
+ isSandbox: true
153
+ }, {
154
+ name: 'Mike’s Workforce'
155
+ }]
136
156
  }];
137
157
 
138
158
  var Default = function Default(args) {
@@ -270,12 +290,14 @@ var WithSections = function WithSections() {
270
290
  items: environments,
271
291
  name: "Globochem",
272
292
  selectedItem: envNode,
273
- onSelectionChange: handleEnvPress
293
+ onSelectionChange: handleEnvPress,
294
+ isDefaultOpen: true
274
295
  }, function (_ref3) {
275
296
  var sectionName = _ref3.name,
276
- sectionOptions = _ref3.options;
297
+ sectionOptions = _ref3.options,
298
+ sectionKey = _ref3.key;
277
299
  return (0, _react2.jsx)(_index.Section, {
278
- key: sectionName,
300
+ key: sectionKey,
279
301
  title: sectionName,
280
302
  items: sectionOptions
281
303
  }, function (_ref4) {
@@ -63,6 +63,7 @@ var items = [{
63
63
  }];
64
64
  var itemsWithSections = [{
65
65
  name: 'Heading 1',
66
+ key: 'Heading 1',
66
67
  options: [{
67
68
  name: 'Foo'
68
69
  }, {
@@ -72,12 +73,13 @@ var itemsWithSections = [{
72
73
  }]
73
74
  }, {
74
75
  name: 'Heading 2',
76
+ key: 'Heading 2',
75
77
  options: [{
76
- name: 'Foo'
78
+ name: 'Foo1'
77
79
  }, {
78
- name: 'Zod'
80
+ name: 'Bar1'
79
81
  }, {
80
- name: 'Zay'
82
+ name: 'Baz1'
81
83
  }]
82
84
  }];
83
85
  var defaultProps = {
@@ -118,7 +120,8 @@ var getSectionsComponent = function getSectionsComponent() {
118
120
  return (0, _testWrapper.render)((0, _react2.jsx)(_index.OverlayProvider, null, (0, _react2.jsx)(_index.EnvironmentBreadcrumb, (0, _extends2["default"])({}, defaultWithSectionsProps, props), function (section) {
119
121
  return (// eslint-disable-next-line testing-library/no-node-access
120
122
  (0, _react2.jsx)(_collections.Section, {
121
- key: section.name,
123
+ key: section.key,
124
+ name: section.name,
122
125
  title: section.name,
123
126
  items: section.options
124
127
  }, function (item) {
@@ -241,6 +244,17 @@ test('should render items with sections passed in props', function () {
241
244
 
242
245
  _userEvent["default"].click(_testWrapper.screen.getByText(testSelectedItem));
243
246
 
247
+ expect(_testWrapper.screen.getAllByRole('group')).toHaveLength(2);
248
+ expect(_testWrapper.screen.queryByRole('listbox')).toBeInTheDocument();
249
+ expect(_testWrapper.screen.queryAllByRole('option')).toHaveLength(6);
250
+ });
251
+ test('should render the separators', function () {
252
+ getSectionsComponent();
253
+
254
+ _userEvent["default"].click(_testWrapper.screen.getByText(testSelectedItem));
255
+
256
+ expect(_testWrapper.screen.queryAllByRole('separator')).toHaveLength(3);
257
+
244
258
  var groups = _testWrapper.screen.getAllByRole('group');
245
259
 
246
260
  expect(groups).toHaveLength(2);
@@ -409,7 +423,7 @@ test('should hide section title if no search results within it', function () {
409
423
  _userEvent["default"].click(_testWrapper.screen.getByText(testSelectedItem)); // Search for option exclusive to only one section
410
424
 
411
425
 
412
- _userEvent["default"].type(_testWrapper.screen.getByRole('searchbox'), 'Zod'); // 'Heading 1' should not be rendered, but 'Heading 2' should be
426
+ _userEvent["default"].type(_testWrapper.screen.getByRole('searchbox'), 'Bar1'); // 'Heading 1' should not be rendered, but 'Heading 2' should be
413
427
 
414
428
 
415
429
  expect(_testWrapper.screen.queryByText(itemsWithSections[0].name)).not.toBeInTheDocument();