@pingux/astro 2.215.0-alpha.0 → 2.217.0-alpha.0
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.
- package/lib/cjs/components/PanelHeader/PanelHeader.js +9 -2
- package/lib/cjs/components/PanelHeader/PanelHeader.stories.js +14 -2
- package/lib/cjs/components/PanelHeader/PanelHeader.test.js +115 -3
- package/lib/cjs/components/PanelHeader/stories/OnyxPanelHeaderComponent.js +8 -0
- package/lib/cjs/components/Table/Table.mdx +2 -3
- package/lib/cjs/components/TableBase/Convenience/TableBaseEmptyState.stories.js +73 -0
- package/lib/cjs/components/TableBase/Customization/CustomEmptyState.stories.js +62 -0
- package/lib/cjs/components/TableBase/TableBase.js +62 -19
- package/lib/cjs/components/TableBase/TableBase.stories.js +144 -26
- package/lib/cjs/components/TableBase/TableBase.test.js +95 -0
- package/lib/cjs/components/TableBase/TableBaseEmptyState.d.ts +4 -0
- package/lib/cjs/components/TableBase/TableBaseEmptyState.js +72 -0
- package/lib/cjs/components/TableBase/TableBaseEmptyState.test.js +54 -0
- package/lib/cjs/components/TableBase/index.d.ts +1 -0
- package/lib/cjs/components/TableBase/index.js +8 -1
- package/lib/cjs/components/TableBase/tableBaseAttributes.d.ts +20 -0
- package/lib/cjs/components/TableBase/tableBaseAttributes.js +21 -1
- package/lib/cjs/index.d.ts +2 -0
- package/lib/cjs/index.js +16 -0
- package/lib/cjs/types/tableBase.d.ts +10 -1
- package/lib/components/PanelHeader/PanelHeader.js +10 -3
- package/lib/components/PanelHeader/PanelHeader.stories.js +13 -1
- package/lib/components/PanelHeader/PanelHeader.test.js +113 -2
- package/lib/components/PanelHeader/stories/OnyxPanelHeaderComponent.js +8 -0
- package/lib/components/Table/Table.mdx +2 -3
- package/lib/components/TableBase/Convenience/TableBaseEmptyState.stories.js +65 -0
- package/lib/components/TableBase/Customization/CustomEmptyState.stories.js +54 -0
- package/lib/components/TableBase/TableBase.js +64 -19
- package/lib/components/TableBase/TableBase.stories.js +145 -26
- package/lib/components/TableBase/TableBase.test.js +95 -0
- package/lib/components/TableBase/TableBaseEmptyState.js +60 -0
- package/lib/components/TableBase/TableBaseEmptyState.test.js +51 -0
- package/lib/components/TableBase/index.js +2 -1
- package/lib/components/TableBase/tableBaseAttributes.js +20 -0
- package/lib/index.js +2 -0
- package/package.json +1 -1
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
+
var _Object$keys = require("@babel/runtime-corejs3/core-js-stable/object/keys");
|
|
5
|
+
var _Object$getOwnPropertySymbols = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-symbols");
|
|
6
|
+
var _filterInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/filter");
|
|
7
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
8
|
+
var _forEachInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/for-each");
|
|
9
|
+
var _Object$getOwnPropertyDescriptors = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptors");
|
|
10
|
+
var _Object$defineProperties = require("@babel/runtime-corejs3/core-js-stable/object/define-properties");
|
|
4
11
|
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
5
12
|
var _Symbol = require("@babel/runtime-corejs3/core-js-stable/symbol");
|
|
6
13
|
var _Object$create = require("@babel/runtime-corejs3/core-js-stable/object/create");
|
|
@@ -12,12 +19,11 @@ var _Promise = require("@babel/runtime-corejs3/core-js-stable/promise");
|
|
|
12
19
|
var _Symbol$iterator = require("@babel/runtime-corejs3/core-js-stable/symbol/iterator");
|
|
13
20
|
var _reverseInstanceProperty = require("@babel/runtime-corejs3/core-js-stable/instance/reverse");
|
|
14
21
|
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
15
|
-
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
16
22
|
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
17
23
|
_Object$defineProperty(exports, "__esModule", {
|
|
18
24
|
value: true
|
|
19
25
|
});
|
|
20
|
-
exports["default"] = exports.WithStickyHeader = exports.WithResizableColumns = exports.WithPagination = exports.WithMinMaxColumnWidth = exports.WithLastColumnSticky = exports.RowActions = exports.MultiSelection = exports.DynamicWithSorting = exports.Default = void 0;
|
|
26
|
+
exports["default"] = exports.WithStickyHeader = exports.WithResizableColumns = exports.WithPagination = exports.WithMinMaxColumnWidth = exports.WithLoadingState = exports.WithLastColumnSticky = exports.WithEmptyState = exports.RowActions = exports.MultiSelection = exports.DynamicWithSorting = exports.DefaultEmptyStateWithButton = exports.DefaultEmptyState = exports.Default = void 0;
|
|
21
27
|
var _set = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/set"));
|
|
22
28
|
var _concat = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/concat"));
|
|
23
29
|
var _slice = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/slice"));
|
|
@@ -27,6 +33,7 @@ var _sort = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stabl
|
|
|
27
33
|
var _find = _interopRequireDefault(require("@babel/runtime-corejs3/core-js-stable/instance/find"));
|
|
28
34
|
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/asyncToGenerator"));
|
|
29
35
|
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/slicedToArray"));
|
|
36
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
30
37
|
var _react = _interopRequireWildcard(require("react"));
|
|
31
38
|
var _i18n = require("@react-aria/i18n");
|
|
32
39
|
var _data = require("@react-stately/data");
|
|
@@ -47,17 +54,20 @@ function _regeneratorAsyncIterator(t, e) { function n(r, o, i, f) { try { var c
|
|
|
47
54
|
function _regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof _Symbol ? _Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = _Object$create(c.prototype); return _regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: _bindInstanceProperty(d).call(d, e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i["return"]) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = _Object$getPrototypeOf; var c = [][n] ? t(t([][n]())) : (_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = _Object$create(c); function f(e) { return _Object$setPrototypeOf ? _Object$setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, _regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = _Object$create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, _regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), _regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", _regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), _regeneratorDefine2(u), _regeneratorDefine2(u, o, "Generator"), _regeneratorDefine2(u, n, function () { return this; }), _regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
48
55
|
function _regeneratorDefine2(e, r, n, t) { var i = _Object$defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } _regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { _regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, _regeneratorDefine2(e, r, n, t); }
|
|
49
56
|
function _OverloadYield(e, d) { this.v = e, this.k = d; }
|
|
57
|
+
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
58
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var _context5, _context6; var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? _forEachInstanceProperty(_context5 = ownKeys(Object(t), !0)).call(_context5, function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : _Object$getOwnPropertyDescriptors ? _Object$defineProperties(e, _Object$getOwnPropertyDescriptors(t)) : _forEachInstanceProperty(_context6 = ownKeys(Object(t))).call(_context6, function (r) { _Object$defineProperty(e, r, _Object$getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
50
59
|
var _default = exports["default"] = {
|
|
51
60
|
title: 'Components/TableBase',
|
|
52
61
|
component: _.TableBase,
|
|
62
|
+
argTypes: _tableBaseAttributes.tableBaseArgTypes,
|
|
63
|
+
args: _objectSpread({}, _tableBaseAttributes.tableBaseArgs),
|
|
53
64
|
parameters: {
|
|
54
65
|
docs: {
|
|
55
66
|
page: function page() {
|
|
56
67
|
return (0, _react2.jsx)(_react["default"].Fragment, null, (0, _react2.jsx)(_TableBase["default"], null), (0, _react2.jsx)(_storybookDocsLayout["default"], null));
|
|
57
68
|
}
|
|
58
69
|
}
|
|
59
|
-
}
|
|
60
|
-
argTypes: _tableBaseAttributes.tableBaseArgTypes
|
|
70
|
+
}
|
|
61
71
|
};
|
|
62
72
|
var headers = [{
|
|
63
73
|
key: 'type',
|
|
@@ -98,28 +108,28 @@ var statusVariant = {
|
|
|
98
108
|
Active: 'tableBaseBadge.healthy',
|
|
99
109
|
Inactive: 'tableBaseBadge.secondary'
|
|
100
110
|
};
|
|
101
|
-
var Default = exports.Default =
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
},
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
});
|
|
122
|
-
}
|
|
111
|
+
var Default = exports.Default = {
|
|
112
|
+
render: function render(args) {
|
|
113
|
+
var isEmpty = args.loadingState === 'loading' || args.loadingState === 'sorting';
|
|
114
|
+
return (0, _react2.jsx)(_.Card, {
|
|
115
|
+
variant: "cards.tableWrapper"
|
|
116
|
+
}, (0, _react2.jsx)(_.TableBase, args, (0, _react2.jsx)(_.THead, {
|
|
117
|
+
columns: headers
|
|
118
|
+
}, function (column) {
|
|
119
|
+
return (0, _react2.jsx)(_.Column, {
|
|
120
|
+
key: column.key,
|
|
121
|
+
minWidth: 200
|
|
122
|
+
}, column.name);
|
|
123
|
+
}), (0, _react2.jsx)(_.TBody, {
|
|
124
|
+
items: isEmpty ? [] : objects
|
|
125
|
+
}, function (item) {
|
|
126
|
+
return (0, _react2.jsx)(_.Row, {
|
|
127
|
+
key: item.id
|
|
128
|
+
}, function (columnKey) {
|
|
129
|
+
return (0, _react2.jsx)(_.Cell, null, item[columnKey]);
|
|
130
|
+
});
|
|
131
|
+
})));
|
|
132
|
+
}
|
|
123
133
|
};
|
|
124
134
|
var MultiSelection = exports.MultiSelection = function MultiSelection() {
|
|
125
135
|
var _React$useState = _react["default"].useState(new _set["default"](['1', '3'])),
|
|
@@ -471,6 +481,114 @@ var WithLastColumnSticky = exports.WithLastColumnSticky = function WithLastColum
|
|
|
471
481
|
});
|
|
472
482
|
})));
|
|
473
483
|
};
|
|
484
|
+
var WithLoadingState = exports.WithLoadingState = function WithLoadingState() {
|
|
485
|
+
return (0, _react2.jsx)(_.Card, {
|
|
486
|
+
variant: "cards.tableWrapper"
|
|
487
|
+
}, (0, _react2.jsx)(_.TableBase, {
|
|
488
|
+
caption: "Lorem ipsum",
|
|
489
|
+
"aria-label": "table",
|
|
490
|
+
loadingState: "loading"
|
|
491
|
+
}, (0, _react2.jsx)(_.THead, {
|
|
492
|
+
columns: headers
|
|
493
|
+
}, function (column) {
|
|
494
|
+
return (0, _react2.jsx)(_.Column, {
|
|
495
|
+
key: column.key,
|
|
496
|
+
minWidth: 200
|
|
497
|
+
}, column.name);
|
|
498
|
+
}), (0, _react2.jsx)(_.TBody, {
|
|
499
|
+
items: []
|
|
500
|
+
}, function () {
|
|
501
|
+
return (0, _react2.jsx)(_.Row, {
|
|
502
|
+
key: "unused"
|
|
503
|
+
}, function () {
|
|
504
|
+
return (0, _react2.jsx)(_.Cell, null, "Hello 0");
|
|
505
|
+
});
|
|
506
|
+
})));
|
|
507
|
+
};
|
|
508
|
+
var WithEmptyState = exports.WithEmptyState = function WithEmptyState() {
|
|
509
|
+
return (0, _react2.jsx)(_.Card, {
|
|
510
|
+
variant: "cards.tableWrapper"
|
|
511
|
+
}, (0, _react2.jsx)(_.TableBase, {
|
|
512
|
+
caption: "Custom empty state",
|
|
513
|
+
"aria-label": "table with custom empty state",
|
|
514
|
+
renderEmptyState: function renderEmptyState() {
|
|
515
|
+
return (0, _react2.jsx)("div", null, "No data available");
|
|
516
|
+
}
|
|
517
|
+
}, (0, _react2.jsx)(_.THead, {
|
|
518
|
+
columns: headers
|
|
519
|
+
}, function (column) {
|
|
520
|
+
return (0, _react2.jsx)(_.Column, {
|
|
521
|
+
key: column.key,
|
|
522
|
+
minWidth: 200
|
|
523
|
+
}, column.name);
|
|
524
|
+
}), (0, _react2.jsx)(_.TBody, {
|
|
525
|
+
items: []
|
|
526
|
+
}, function () {
|
|
527
|
+
return (0, _react2.jsx)(_.Row, {
|
|
528
|
+
key: "unused"
|
|
529
|
+
}, function () {
|
|
530
|
+
return (0, _react2.jsx)(_.Cell, null, "Hello 2");
|
|
531
|
+
});
|
|
532
|
+
})));
|
|
533
|
+
};
|
|
534
|
+
var DefaultEmptyState = exports.DefaultEmptyState = function DefaultEmptyState() {
|
|
535
|
+
return (0, _react2.jsx)(_.Card, {
|
|
536
|
+
variant: "cards.tableWrapper"
|
|
537
|
+
}, (0, _react2.jsx)(_.TableBase, {
|
|
538
|
+
caption: "Default empty state",
|
|
539
|
+
"aria-label": "table with default empty state"
|
|
540
|
+
}, (0, _react2.jsx)(_.THead, {
|
|
541
|
+
columns: headers
|
|
542
|
+
}, function (column) {
|
|
543
|
+
return (0, _react2.jsx)(_.Column, {
|
|
544
|
+
key: column.key,
|
|
545
|
+
minWidth: 200
|
|
546
|
+
}, column.name);
|
|
547
|
+
}), (0, _react2.jsx)(_.TBody, {
|
|
548
|
+
items: []
|
|
549
|
+
}, function () {
|
|
550
|
+
return (0, _react2.jsx)(_.Row, {
|
|
551
|
+
key: "unused"
|
|
552
|
+
}, function () {
|
|
553
|
+
return (0, _react2.jsx)(_.Cell, null, "Hello 1");
|
|
554
|
+
});
|
|
555
|
+
})));
|
|
556
|
+
};
|
|
557
|
+
var DefaultEmptyStateWithButton = exports.DefaultEmptyStateWithButton = function DefaultEmptyStateWithButton() {
|
|
558
|
+
var handleAddItem = function handleAddItem() {
|
|
559
|
+
// eslint-disable-next-line no-console
|
|
560
|
+
console.log('Add button clicked!');
|
|
561
|
+
};
|
|
562
|
+
return (0, _react2.jsx)(_.Card, {
|
|
563
|
+
variant: "cards.tableWrapper"
|
|
564
|
+
}, (0, _react2.jsx)(_.TableBase, {
|
|
565
|
+
caption: "Empty state with action button",
|
|
566
|
+
"aria-label": "table with empty state and action button",
|
|
567
|
+
renderEmptyState: function renderEmptyState() {
|
|
568
|
+
return (0, _react2.jsx)(_.TableBaseEmptyState, {
|
|
569
|
+
headerLabel: "No items available",
|
|
570
|
+
descriptionLabel: "Click the button below to add a new item",
|
|
571
|
+
addButtonLabel: "Add Item",
|
|
572
|
+
onAddButtonPress: handleAddItem
|
|
573
|
+
});
|
|
574
|
+
}
|
|
575
|
+
}, (0, _react2.jsx)(_.THead, {
|
|
576
|
+
columns: headers
|
|
577
|
+
}, function (column) {
|
|
578
|
+
return (0, _react2.jsx)(_.Column, {
|
|
579
|
+
key: column.key,
|
|
580
|
+
minWidth: 200
|
|
581
|
+
}, column.name);
|
|
582
|
+
}), (0, _react2.jsx)(_.TBody, {
|
|
583
|
+
items: []
|
|
584
|
+
}, function () {
|
|
585
|
+
return (0, _react2.jsx)(_.Row, {
|
|
586
|
+
key: "unused"
|
|
587
|
+
}, function () {
|
|
588
|
+
return (0, _react2.jsx)(_.Cell, null, "Hello 3");
|
|
589
|
+
});
|
|
590
|
+
})));
|
|
591
|
+
};
|
|
474
592
|
var RowActions = exports.RowActions = function RowActions() {
|
|
475
593
|
var _useState3 = (0, _react.useState)(null),
|
|
476
594
|
_useState4 = (0, _slicedToArray2["default"])(_useState3, 2),
|
|
@@ -560,6 +560,101 @@ test('Arrow Left move the focus to next cell', /*#__PURE__*/(0, _asyncToGenerato
|
|
|
560
560
|
}
|
|
561
561
|
}, _callee10);
|
|
562
562
|
})));
|
|
563
|
+
var renderWithLoadingState = function renderWithLoadingState(loadingState) {
|
|
564
|
+
return (0, _react2.render)((0, _react3.jsx)(_TableBase["default"], {
|
|
565
|
+
"aria-label": "table",
|
|
566
|
+
loadingState: loadingState
|
|
567
|
+
}, (0, _react3.jsx)(_index.THead, {
|
|
568
|
+
columns: headers
|
|
569
|
+
}, function (head) {
|
|
570
|
+
return (0, _react3.jsx)(_index.Column, {
|
|
571
|
+
key: head.key
|
|
572
|
+
}, head.name);
|
|
573
|
+
}), (0, _react3.jsx)(_index.TBody, {
|
|
574
|
+
items: []
|
|
575
|
+
}, function () {
|
|
576
|
+
return (0, _react3.jsx)(_index.Row, null, (0, _react3.jsx)(_index.Cell, null, "A"), (0, _react3.jsx)(_index.Cell, null, "B"), (0, _react3.jsx)(_index.Cell, null, "C"));
|
|
577
|
+
})));
|
|
578
|
+
};
|
|
579
|
+
describe('Loading state', function () {
|
|
580
|
+
test('renders Loader when loadingState is "loading"', function () {
|
|
581
|
+
renderWithLoadingState('loading');
|
|
582
|
+
expect(_react2.screen.getByRole('alert')).toBeInTheDocument();
|
|
583
|
+
});
|
|
584
|
+
test('renders Loader when loadingState is "sorting"', function () {
|
|
585
|
+
renderWithLoadingState('sorting');
|
|
586
|
+
expect(_react2.screen.getByRole('alert')).toBeInTheDocument();
|
|
587
|
+
});
|
|
588
|
+
test('does not render Loader when loadingState is absent', function () {
|
|
589
|
+
renderWithLoadingState();
|
|
590
|
+
expect(_react2.screen.queryByRole('alert')).not.toBeInTheDocument();
|
|
591
|
+
});
|
|
592
|
+
test('does not render Loader when loadingState is "loadingMore", renders empty state instead (Constraint #6)', function () {
|
|
593
|
+
renderWithLoadingState('loadingMore');
|
|
594
|
+
expect(_react2.screen.queryByRole('alert')).not.toBeInTheDocument();
|
|
595
|
+
expect(_react2.screen.getByText('No items exist')).toBeInTheDocument();
|
|
596
|
+
});
|
|
597
|
+
});
|
|
598
|
+
describe('Empty state', function () {
|
|
599
|
+
test('renders default empty state when items is empty and no loadingState', function () {
|
|
600
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBase["default"], {
|
|
601
|
+
"aria-label": "table"
|
|
602
|
+
}, (0, _react3.jsx)(_index.THead, {
|
|
603
|
+
columns: headers
|
|
604
|
+
}, function (head) {
|
|
605
|
+
return (0, _react3.jsx)(_index.Column, {
|
|
606
|
+
key: head.key
|
|
607
|
+
}, head.name);
|
|
608
|
+
}), (0, _react3.jsx)(_index.TBody, {
|
|
609
|
+
items: []
|
|
610
|
+
}, function () {
|
|
611
|
+
return (0, _react3.jsx)(_index.Row, null, (0, _react3.jsx)(_index.Cell, null), (0, _react3.jsx)(_index.Cell, null), (0, _react3.jsx)(_index.Cell, null));
|
|
612
|
+
})));
|
|
613
|
+
expect(_react2.screen.getByText('No items exist')).toBeInTheDocument();
|
|
614
|
+
});
|
|
615
|
+
test('renders custom renderEmptyState and not default empty state', function () {
|
|
616
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBase["default"], {
|
|
617
|
+
"aria-label": "table",
|
|
618
|
+
renderEmptyState: function renderEmptyState() {
|
|
619
|
+
return (0, _react3.jsx)("div", null, "Custom");
|
|
620
|
+
}
|
|
621
|
+
}, (0, _react3.jsx)(_index.THead, {
|
|
622
|
+
columns: headers
|
|
623
|
+
}, function (head) {
|
|
624
|
+
return (0, _react3.jsx)(_index.Column, {
|
|
625
|
+
key: head.key
|
|
626
|
+
}, head.name);
|
|
627
|
+
}), (0, _react3.jsx)(_index.TBody, {
|
|
628
|
+
items: []
|
|
629
|
+
}, function () {
|
|
630
|
+
return (0, _react3.jsx)(_index.Row, null, (0, _react3.jsx)(_index.Cell, null), (0, _react3.jsx)(_index.Cell, null), (0, _react3.jsx)(_index.Cell, null));
|
|
631
|
+
})));
|
|
632
|
+
expect(_react2.screen.getByText('Custom')).toBeInTheDocument();
|
|
633
|
+
expect(_react2.screen.queryByText('No items exist')).not.toBeInTheDocument();
|
|
634
|
+
});
|
|
635
|
+
test('renders Loader and not empty state when loadingState is "loading" and items is empty', function () {
|
|
636
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBase["default"], {
|
|
637
|
+
"aria-label": "table",
|
|
638
|
+
loadingState: "loading",
|
|
639
|
+
renderEmptyState: function renderEmptyState() {
|
|
640
|
+
return (0, _react3.jsx)("div", null, "Custom");
|
|
641
|
+
}
|
|
642
|
+
}, (0, _react3.jsx)(_index.THead, {
|
|
643
|
+
columns: headers
|
|
644
|
+
}, function (head) {
|
|
645
|
+
return (0, _react3.jsx)(_index.Column, {
|
|
646
|
+
key: head.key
|
|
647
|
+
}, head.name);
|
|
648
|
+
}), (0, _react3.jsx)(_index.TBody, {
|
|
649
|
+
items: []
|
|
650
|
+
}, function () {
|
|
651
|
+
return (0, _react3.jsx)(_index.Row, null, (0, _react3.jsx)(_index.Cell, null), (0, _react3.jsx)(_index.Cell, null), (0, _react3.jsx)(_index.Cell, null));
|
|
652
|
+
})));
|
|
653
|
+
expect(_react2.screen.getByRole('alert')).toBeInTheDocument();
|
|
654
|
+
expect(_react2.screen.queryByText('Custom')).not.toBeInTheDocument();
|
|
655
|
+
expect(_react2.screen.queryByText('No items exist')).not.toBeInTheDocument();
|
|
656
|
+
});
|
|
657
|
+
});
|
|
563
658
|
describe('Resizable columns', function () {
|
|
564
659
|
var resizableHeaders = [{
|
|
565
660
|
key: 'name',
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _typeof = require("@babel/runtime-corejs3/helpers/typeof");
|
|
4
|
+
var _WeakMap = require("@babel/runtime-corejs3/core-js-stable/weak-map");
|
|
5
|
+
var _Object$defineProperty = require("@babel/runtime-corejs3/core-js-stable/object/define-property");
|
|
6
|
+
var _Object$getOwnPropertyDescriptor = require("@babel/runtime-corejs3/core-js-stable/object/get-own-property-descriptor");
|
|
7
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
8
|
+
_Object$defineProperty(exports, "__esModule", {
|
|
9
|
+
value: true
|
|
10
|
+
});
|
|
11
|
+
exports["default"] = void 0;
|
|
12
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/extends"));
|
|
13
|
+
var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/objectWithoutProperties"));
|
|
14
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
15
|
+
var _ControlPointDuplicateIcon = _interopRequireDefault(require("@pingux/mdi-react/ControlPointDuplicateIcon"));
|
|
16
|
+
var _ = require("../..");
|
|
17
|
+
var _react2 = require("@emotion/react");
|
|
18
|
+
var _excluded = ["defaultIcon", "headerLabel", "descriptionLabel", "addButtonLabel", "onAddButtonPress"];
|
|
19
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof _WeakMap) var r = new _WeakMap(), n = new _WeakMap(); return (_interopRequireWildcard = function _interopRequireWildcard(e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, "default": e }; if (null === e || "object" != _typeof(e) && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (var _t in e) "default" !== _t && {}.hasOwnProperty.call(e, _t) && ((i = (o = _Object$defineProperty) && _Object$getOwnPropertyDescriptor(e, _t)) && (i.get || i.set) ? o(f, _t, i) : f[_t] = e[_t]); return f; })(e, t); }
|
|
20
|
+
var TableBaseEmptyState = /*#__PURE__*/(0, _react.forwardRef)(function (props, ref) {
|
|
21
|
+
var _props$defaultIcon = props.defaultIcon,
|
|
22
|
+
defaultIcon = _props$defaultIcon === void 0 ? _ControlPointDuplicateIcon["default"] : _props$defaultIcon,
|
|
23
|
+
_props$headerLabel = props.headerLabel,
|
|
24
|
+
headerLabel = _props$headerLabel === void 0 ? 'No items exist' : _props$headerLabel,
|
|
25
|
+
_props$descriptionLab = props.descriptionLabel,
|
|
26
|
+
descriptionLabel = _props$descriptionLab === void 0 ? 'Take action by doing x, y, z' : _props$descriptionLab,
|
|
27
|
+
addButtonLabel = props.addButtonLabel,
|
|
28
|
+
onAddButtonPress = props.onAddButtonPress,
|
|
29
|
+
others = (0, _objectWithoutProperties2["default"])(props, _excluded);
|
|
30
|
+
return (0, _react2.jsx)(_.Box, (0, _extends2["default"])({
|
|
31
|
+
ref: ref,
|
|
32
|
+
isRow: false,
|
|
33
|
+
alignItems: "center",
|
|
34
|
+
justifyContent: "center",
|
|
35
|
+
gap: "sm",
|
|
36
|
+
py: "lg"
|
|
37
|
+
}, others), (0, _react2.jsx)(_.Icon, {
|
|
38
|
+
icon: defaultIcon,
|
|
39
|
+
color: "text.secondary",
|
|
40
|
+
size: 60,
|
|
41
|
+
title: {
|
|
42
|
+
name: 'Empty state icon'
|
|
43
|
+
},
|
|
44
|
+
sx: {
|
|
45
|
+
opacity: 0.2
|
|
46
|
+
}
|
|
47
|
+
}), (0, _react2.jsx)(_.Text, {
|
|
48
|
+
variant: "H4",
|
|
49
|
+
as: "h4",
|
|
50
|
+
textAlign: "center"
|
|
51
|
+
}, headerLabel), (0, _react2.jsx)(_.Text, {
|
|
52
|
+
textAlign: "center",
|
|
53
|
+
color: "font.base"
|
|
54
|
+
}, descriptionLabel), addButtonLabel && onAddButtonPress && (0, _react2.jsx)(_.Button, {
|
|
55
|
+
variant: "primaryWithIcon",
|
|
56
|
+
mt: "sm",
|
|
57
|
+
sx: {
|
|
58
|
+
borderRadius: '50px'
|
|
59
|
+
},
|
|
60
|
+
onPress: onAddButtonPress
|
|
61
|
+
}, (0, _react2.jsx)(_.Icon, {
|
|
62
|
+
icon: "add",
|
|
63
|
+
color: "white",
|
|
64
|
+
size: "sm",
|
|
65
|
+
title: {
|
|
66
|
+
name: 'Plus Icon'
|
|
67
|
+
},
|
|
68
|
+
mr: "xs"
|
|
69
|
+
}), addButtonLabel));
|
|
70
|
+
});
|
|
71
|
+
TableBaseEmptyState.displayName = 'TableBaseEmptyState';
|
|
72
|
+
var _default = exports["default"] = TableBaseEmptyState;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault");
|
|
4
|
+
var _react = _interopRequireDefault(require("react"));
|
|
5
|
+
var _react2 = require("@testing-library/react");
|
|
6
|
+
var _universalComponentTest = require("../../utils/testUtils/universalComponentTest");
|
|
7
|
+
var _TableBaseEmptyState = _interopRequireDefault(require("./TableBaseEmptyState"));
|
|
8
|
+
var _react3 = require("@emotion/react");
|
|
9
|
+
(0, _universalComponentTest.universalComponentTests)({
|
|
10
|
+
renderComponent: function renderComponent(props) {
|
|
11
|
+
return (0, _react3.jsx)(_TableBaseEmptyState["default"], props);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
test('renders default headerLabel', function () {
|
|
15
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], null));
|
|
16
|
+
expect(_react2.screen.getByText('No items exist')).toBeInTheDocument();
|
|
17
|
+
});
|
|
18
|
+
test('renders default descriptionLabel', function () {
|
|
19
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], null));
|
|
20
|
+
expect(_react2.screen.getByText('Take action by doing x, y, z')).toBeInTheDocument();
|
|
21
|
+
});
|
|
22
|
+
test('renders custom headerLabel', function () {
|
|
23
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], {
|
|
24
|
+
headerLabel: "No results found"
|
|
25
|
+
}));
|
|
26
|
+
expect(_react2.screen.getByText('No results found')).toBeInTheDocument();
|
|
27
|
+
});
|
|
28
|
+
test('renders custom descriptionLabel', function () {
|
|
29
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], {
|
|
30
|
+
descriptionLabel: "Try adjusting your filters."
|
|
31
|
+
}));
|
|
32
|
+
expect(_react2.screen.getByText('Try adjusting your filters.')).toBeInTheDocument();
|
|
33
|
+
});
|
|
34
|
+
test('does not render add button when addButtonLabel is not provided', function () {
|
|
35
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], null));
|
|
36
|
+
expect(_react2.screen.queryByRole('button')).not.toBeInTheDocument();
|
|
37
|
+
});
|
|
38
|
+
test('does not render add button when action is not provided', function () {
|
|
39
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], {
|
|
40
|
+
addButtonLabel: "Add Item"
|
|
41
|
+
}));
|
|
42
|
+
expect(_react2.screen.queryByRole('button', {
|
|
43
|
+
name: /Add Item/i
|
|
44
|
+
})).not.toBeInTheDocument();
|
|
45
|
+
});
|
|
46
|
+
test('renders add button when addButtonLabel and action are provided', function () {
|
|
47
|
+
(0, _react2.render)((0, _react3.jsx)(_TableBaseEmptyState["default"], {
|
|
48
|
+
addButtonLabel: "Add Item",
|
|
49
|
+
onAddButtonPress: jest.fn()
|
|
50
|
+
}));
|
|
51
|
+
expect(_react2.screen.getByRole('button', {
|
|
52
|
+
name: /Add Item/i
|
|
53
|
+
})).toBeInTheDocument();
|
|
54
|
+
});
|
|
@@ -5,10 +5,17 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
5
5
|
_Object$defineProperty(exports, "__esModule", {
|
|
6
6
|
value: true
|
|
7
7
|
});
|
|
8
|
+
_Object$defineProperty(exports, "TableBaseEmptyState", {
|
|
9
|
+
enumerable: true,
|
|
10
|
+
get: function get() {
|
|
11
|
+
return _TableBaseEmptyState["default"];
|
|
12
|
+
}
|
|
13
|
+
});
|
|
8
14
|
_Object$defineProperty(exports, "default", {
|
|
9
15
|
enumerable: true,
|
|
10
16
|
get: function get() {
|
|
11
17
|
return _TableBase["default"];
|
|
12
18
|
}
|
|
13
19
|
});
|
|
14
|
-
var _TableBase = _interopRequireDefault(require("./TableBase"));
|
|
20
|
+
var _TableBase = _interopRequireDefault(require("./TableBase"));
|
|
21
|
+
var _TableBaseEmptyState = _interopRequireDefault(require("./TableBaseEmptyState"));
|
|
@@ -28,7 +28,27 @@ export declare const tableBaseArgTypes: {
|
|
|
28
28
|
type: string;
|
|
29
29
|
};
|
|
30
30
|
};
|
|
31
|
+
loadingState: {
|
|
32
|
+
control: {
|
|
33
|
+
type: string;
|
|
34
|
+
};
|
|
35
|
+
options: string[];
|
|
36
|
+
};
|
|
37
|
+
renderEmptyState: {
|
|
38
|
+
control: boolean;
|
|
39
|
+
};
|
|
40
|
+
children: {
|
|
41
|
+
control: boolean;
|
|
42
|
+
};
|
|
31
43
|
onSortChange: any;
|
|
32
44
|
onSelectionChange: any;
|
|
33
45
|
onRowAction: any;
|
|
34
46
|
};
|
|
47
|
+
export declare const tableBaseArgs: {
|
|
48
|
+
'aria-label': string;
|
|
49
|
+
caption: string;
|
|
50
|
+
selectionMode: string;
|
|
51
|
+
isStickyHeader: boolean;
|
|
52
|
+
isLastColumnSticky: boolean;
|
|
53
|
+
hasSelectionCheckboxes: boolean;
|
|
54
|
+
};
|
|
@@ -12,7 +12,7 @@ var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequ
|
|
|
12
12
|
_Object$defineProperty(exports, "__esModule", {
|
|
13
13
|
value: true
|
|
14
14
|
});
|
|
15
|
-
exports.tableBaseArgTypes = void 0;
|
|
15
|
+
exports.tableBaseArgs = exports.tableBaseArgTypes = void 0;
|
|
16
16
|
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty"));
|
|
17
17
|
var _docArgTypes = require("../../utils/docUtils/docArgTypes");
|
|
18
18
|
function ownKeys(e, r) { var t = _Object$keys(e); if (_Object$getOwnPropertySymbols) { var o = _Object$getOwnPropertySymbols(e); r && (o = _filterInstanceProperty(o).call(o, function (r) { return _Object$getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
@@ -53,6 +53,18 @@ var tableBaseArgTypes = exports.tableBaseArgTypes = {
|
|
|
53
53
|
type: 'text'
|
|
54
54
|
}
|
|
55
55
|
},
|
|
56
|
+
loadingState: {
|
|
57
|
+
control: {
|
|
58
|
+
type: 'select'
|
|
59
|
+
},
|
|
60
|
+
options: ['error', 'filtering', 'idle', 'loading', 'loadingMore', 'sorting']
|
|
61
|
+
},
|
|
62
|
+
renderEmptyState: {
|
|
63
|
+
control: false
|
|
64
|
+
},
|
|
65
|
+
children: {
|
|
66
|
+
control: false
|
|
67
|
+
},
|
|
56
68
|
onSortChange: _objectSpread(_objectSpread({}, _docArgTypes.funcArg), {}, {
|
|
57
69
|
description: 'Callback invoked when the sort descriptor changes.'
|
|
58
70
|
}),
|
|
@@ -62,4 +74,12 @@ var tableBaseArgTypes = exports.tableBaseArgTypes = {
|
|
|
62
74
|
onRowAction: _objectSpread(_objectSpread({}, _docArgTypes.funcArg), {}, {
|
|
63
75
|
description: 'Callback fired when a row is pressed (pointer or Enter key), receiving the key of the pressed row.'
|
|
64
76
|
})
|
|
77
|
+
};
|
|
78
|
+
var tableBaseArgs = exports.tableBaseArgs = {
|
|
79
|
+
'aria-label': 'table',
|
|
80
|
+
caption: 'Lorem ipsum',
|
|
81
|
+
selectionMode: 'none',
|
|
82
|
+
isStickyHeader: false,
|
|
83
|
+
isLastColumnSticky: false,
|
|
84
|
+
hasSelectionCheckboxes: false
|
|
65
85
|
};
|
package/lib/cjs/index.d.ts
CHANGED
|
@@ -70,6 +70,7 @@ export * from './components/CollapsiblePanelItem';
|
|
|
70
70
|
export { default as ColorField } from './components/ColorField';
|
|
71
71
|
export { default as ComboBoxField } from './components/ComboBoxField';
|
|
72
72
|
export { default as CopyText } from './components/CopyText';
|
|
73
|
+
export { default as CopyButton } from './components/CopyText/CopyButton';
|
|
73
74
|
export { default as DataTable } from './components/DataTable';
|
|
74
75
|
export * from './components/DataTable';
|
|
75
76
|
export { default as DatePicker } from './components/DatePicker';
|
|
@@ -199,6 +200,7 @@ export { default as Table } from './components/Table';
|
|
|
199
200
|
export * from './components/Table';
|
|
200
201
|
export * from './components/TableBase';
|
|
201
202
|
export { default as TableBase } from './components/TableBase';
|
|
203
|
+
export { default as TableBaseEmptyState } from './components/TableBase/TableBaseEmptyState';
|
|
202
204
|
export { default as TableBody } from './components/TableBody';
|
|
203
205
|
export * from './components/TableBody';
|
|
204
206
|
export { default as TableCaption } from './components/TableCaption';
|
package/lib/cjs/index.js
CHANGED
|
@@ -62,6 +62,7 @@ var _exportNames = {
|
|
|
62
62
|
ColorField: true,
|
|
63
63
|
ComboBoxField: true,
|
|
64
64
|
CopyText: true,
|
|
65
|
+
CopyButton: true,
|
|
65
66
|
DataTable: true,
|
|
66
67
|
DatePicker: true,
|
|
67
68
|
DateField: true,
|
|
@@ -142,6 +143,7 @@ var _exportNames = {
|
|
|
142
143
|
Tab: true,
|
|
143
144
|
Table: true,
|
|
144
145
|
TableBase: true,
|
|
146
|
+
TableBaseEmptyState: true,
|
|
145
147
|
TableBody: true,
|
|
146
148
|
TableCaption: true,
|
|
147
149
|
TableCell: true,
|
|
@@ -394,6 +396,12 @@ _Object$defineProperty(exports, "ComboBoxField", {
|
|
|
394
396
|
return _ComboBoxField["default"];
|
|
395
397
|
}
|
|
396
398
|
});
|
|
399
|
+
_Object$defineProperty(exports, "CopyButton", {
|
|
400
|
+
enumerable: true,
|
|
401
|
+
get: function get() {
|
|
402
|
+
return _CopyButton["default"];
|
|
403
|
+
}
|
|
404
|
+
});
|
|
397
405
|
_Object$defineProperty(exports, "CopyText", {
|
|
398
406
|
enumerable: true,
|
|
399
407
|
get: function get() {
|
|
@@ -1090,6 +1098,12 @@ _Object$defineProperty(exports, "TableBase", {
|
|
|
1090
1098
|
return _TableBase["default"];
|
|
1091
1099
|
}
|
|
1092
1100
|
});
|
|
1101
|
+
_Object$defineProperty(exports, "TableBaseEmptyState", {
|
|
1102
|
+
enumerable: true,
|
|
1103
|
+
get: function get() {
|
|
1104
|
+
return _TableBaseEmptyState["default"];
|
|
1105
|
+
}
|
|
1106
|
+
});
|
|
1093
1107
|
_Object$defineProperty(exports, "TableBody", {
|
|
1094
1108
|
enumerable: true,
|
|
1095
1109
|
get: function get() {
|
|
@@ -1500,6 +1514,7 @@ _forEachInstanceProperty(_context20 = _Object$keys(_CollapsiblePanelItem)).call(
|
|
|
1500
1514
|
var _ColorField = _interopRequireDefault(require("./components/ColorField"));
|
|
1501
1515
|
var _ComboBoxField = _interopRequireDefault(require("./components/ComboBoxField"));
|
|
1502
1516
|
var _CopyText = _interopRequireDefault(require("./components/CopyText"));
|
|
1517
|
+
var _CopyButton = _interopRequireDefault(require("./components/CopyText/CopyButton"));
|
|
1503
1518
|
var _DataTable = _interopRequireWildcard(require("./components/DataTable"));
|
|
1504
1519
|
_forEachInstanceProperty(_context21 = _Object$keys(_DataTable)).call(_context21, function (key) {
|
|
1505
1520
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -2138,6 +2153,7 @@ _forEachInstanceProperty(_context71 = _Object$keys(_TableBase)).call(_context71,
|
|
|
2138
2153
|
}
|
|
2139
2154
|
});
|
|
2140
2155
|
});
|
|
2156
|
+
var _TableBaseEmptyState = _interopRequireDefault(require("./components/TableBase/TableBaseEmptyState"));
|
|
2141
2157
|
var _TableBody = _interopRequireWildcard(require("./components/TableBody"));
|
|
2142
2158
|
_forEachInstanceProperty(_context72 = _Object$keys(_TableBody)).call(_context72, function (key) {
|
|
2143
2159
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -6,7 +6,7 @@ import type { FocusableElement, Key, Node } from '@react-types/shared';
|
|
|
6
6
|
import type { ColumnSize, TableProps } from '@react-types/table';
|
|
7
7
|
import { TestingAttributes } from './shared/test';
|
|
8
8
|
import { BoxProps } from './box';
|
|
9
|
-
import { DOMAttributes } from './shared';
|
|
9
|
+
import { DOMAttributes, loadingState } from './shared';
|
|
10
10
|
export type ResizeHandler = (widths: Map<Key, ColumnSize>) => void;
|
|
11
11
|
export interface BaseProp extends BoxProps, TestingAttributes, DOMAttributes {
|
|
12
12
|
}
|
|
@@ -19,6 +19,8 @@ export interface TableBaseProps<T extends object> extends TableProps<T>, Omit<Ba
|
|
|
19
19
|
caption?: ReactNode | string;
|
|
20
20
|
isStickyHeader?: boolean;
|
|
21
21
|
isLastColumnSticky?: boolean;
|
|
22
|
+
loadingState?: loadingState;
|
|
23
|
+
renderEmptyState?: () => ReactNode;
|
|
22
24
|
onResizeStart?: ResizeHandler;
|
|
23
25
|
onResize?: ResizeHandler;
|
|
24
26
|
onResizeEnd?: ResizeHandler;
|
|
@@ -83,3 +85,10 @@ export interface TableSelectAllCellProps<T> extends BaseProp {
|
|
|
83
85
|
export interface TableCaptionProps {
|
|
84
86
|
caption: string | React.ReactNode;
|
|
85
87
|
}
|
|
88
|
+
export interface TableBaseEmptyStateProps extends BoxProps {
|
|
89
|
+
defaultIcon?: React.ElementType;
|
|
90
|
+
headerLabel?: string;
|
|
91
|
+
descriptionLabel?: string;
|
|
92
|
+
addButtonLabel?: string;
|
|
93
|
+
onAddButtonPress?: () => void;
|
|
94
|
+
}
|