@jobber/components 4.26.8 → 4.26.9-JOB-75261.9
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/dist/DataTable/Body.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ interface BodyProps<T> {
|
|
|
5
5
|
onRowClick?: (row: Row<T>) => void;
|
|
6
6
|
height?: number;
|
|
7
7
|
emptyState?: ReactNode | ReactNode[];
|
|
8
|
+
loading: boolean;
|
|
8
9
|
}
|
|
9
|
-
export declare function Body<T extends object>({ table, onRowClick, emptyState, }: BodyProps<T>): JSX.Element;
|
|
10
|
+
export declare function Body<T extends object>({ table, onRowClick, emptyState, loading, }: BodyProps<T>): JSX.Element;
|
|
10
11
|
export {};
|
|
@@ -49,5 +49,9 @@ export interface DataTableProps<T> {
|
|
|
49
49
|
* The elements to display when the data table is empty
|
|
50
50
|
*/
|
|
51
51
|
emptyState?: ReactNode | ReactNode[];
|
|
52
|
+
/**
|
|
53
|
+
* When true, shows the loading state of the DataTable
|
|
54
|
+
*/
|
|
55
|
+
loading?: boolean;
|
|
52
56
|
}
|
|
53
|
-
export declare function DataTable<T extends object>({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, }: DataTableProps<T>): JSX.Element;
|
|
57
|
+
export declare function DataTable<T extends object>({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, loading, }: DataTableProps<T>): JSX.Element;
|
|
@@ -4,6 +4,7 @@ interface PaginationProps<T> {
|
|
|
4
4
|
table: Table<T>;
|
|
5
5
|
itemsPerPage?: number[];
|
|
6
6
|
totalItems: number;
|
|
7
|
+
loading: boolean;
|
|
7
8
|
}
|
|
8
|
-
export declare function Pagination<T extends object>({ table, itemsPerPage, totalItems, }: PaginationProps<T>): JSX.Element;
|
|
9
|
+
export declare function Pagination<T extends object>({ table, itemsPerPage, totalItems, loading, }: PaginationProps<T>): JSX.Element;
|
|
9
10
|
export {};
|
package/dist/DataTable/index.js
CHANGED
|
@@ -7,10 +7,12 @@ var classnames = require('classnames');
|
|
|
7
7
|
var React = require('react');
|
|
8
8
|
var jobberHooks = require('@jobber/hooks/useResizeObserver');
|
|
9
9
|
var styleInject_es = require('../style-inject.es-9d2f5f4e.js');
|
|
10
|
+
var Glimmer = require('../Glimmer-a14ad7fd.js');
|
|
10
11
|
var tslib_es6 = require('../tslib.es6-5b8768b7.js');
|
|
11
12
|
var Option = require('../Option-63267b27.js');
|
|
12
13
|
var Button = require('../Button-7698424c.js');
|
|
13
14
|
var Text = require('../Text-e7ed0974.js');
|
|
15
|
+
require('../Content-a6590328.js');
|
|
14
16
|
require('../FormField-0f880b07.js');
|
|
15
17
|
require('uuid');
|
|
16
18
|
require('react-hook-form');
|
|
@@ -50,14 +52,16 @@ var css_248z$3 = ".m5A5oeRFaMs- {\n position: relative;\n border: calc(16px /
|
|
|
50
52
|
var styles$3 = {"dataTableContainer":"m5A5oeRFaMs-","tableContainer":"cY-5BrIIUg8-","table":"y8xnHe7fwrI-","pinFirstColumn":"t8QYvdtkQXQ-","stickyHeader":"Y21JuHX6fhk-","pinFirstHeaderSortable":"PJEX8dlqCMA-","sortableColumn":"_9ps4aWGs8W0-","clickableRow":"_59XEEB8l5pI-","emptyState":"a2BGGBkY5J8-"};
|
|
51
53
|
styleInject_es.styleInject(css_248z$3);
|
|
52
54
|
|
|
53
|
-
function Body({ table, onRowClick, emptyState, }) {
|
|
55
|
+
function Body({ table, onRowClick, emptyState, loading, }) {
|
|
54
56
|
const bodyRowClasses = classnames__default["default"]({ [styles$3.clickableRow]: !!onRowClick });
|
|
55
57
|
const handleRowClick = React.useCallback((row) => () => {
|
|
56
58
|
if (onRowClick == undefined)
|
|
57
59
|
return;
|
|
58
60
|
onRowClick(row);
|
|
59
61
|
}, [onRowClick]);
|
|
60
|
-
|
|
62
|
+
const loaderRows = table.getState().pagination.pageSize;
|
|
63
|
+
const loaderColumns = table.getAllColumns().length;
|
|
64
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, !loading ? (table.getRowModel().rows.length ? (React__default["default"].createElement("tbody", null, table.getRowModel().rows.map(row => {
|
|
61
65
|
return (React__default["default"].createElement("tr", { key: row.id, onClick: handleRowClick(row), className: bodyRowClasses }, row.getVisibleCells().map(cell => {
|
|
62
66
|
return (React__default["default"].createElement("td", { key: cell.id, style: {
|
|
63
67
|
width: cell.column.getSize(),
|
|
@@ -65,7 +69,13 @@ function Body({ table, onRowClick, emptyState, }) {
|
|
|
65
69
|
maxWidth: cell.column.columnDef.maxSize,
|
|
66
70
|
} }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())));
|
|
67
71
|
})));
|
|
68
|
-
}))) : (React__default["default"].createElement("div", { className: classnames__default["default"](styles$3.emptyState) },
|
|
72
|
+
}))) : (React__default["default"].createElement("div", { className: classnames__default["default"](styles$3.emptyState) },
|
|
73
|
+
emptyState,
|
|
74
|
+
" ",
|
|
75
|
+
React__default["default"].createElement("div", null,
|
|
76
|
+
"is it loading? ",
|
|
77
|
+
loading)))) : (React__default["default"].createElement("tbody", null, Array.from(Array(loaderRows).keys()).map(row => (React__default["default"].createElement("tr", { key: row }, Array.from(Array(loaderColumns).keys()).map(arr => (React__default["default"].createElement("td", { key: arr },
|
|
78
|
+
React__default["default"].createElement(Glimmer.Glimmer, null)))))))))));
|
|
69
79
|
}
|
|
70
80
|
|
|
71
81
|
function createTableSettings(data, columns, options) {
|
|
@@ -126,15 +136,14 @@ var styles$2 = {"pagination":"zn0VRVhObt0-","paginationInfo":"_1d4uh90gfSI-","pa
|
|
|
126
136
|
styleInject_es.styleInject(css_248z$2);
|
|
127
137
|
|
|
128
138
|
const defaultItemsPerPageOptions = ["10", "20", "30", "40", "50"];
|
|
129
|
-
function Pagination({ table, itemsPerPage, totalItems, }) {
|
|
139
|
+
function Pagination({ table, itemsPerPage, totalItems, loading, }) {
|
|
130
140
|
const { pageIndex, pageSize } = table.getState().pagination;
|
|
131
141
|
const totalRows = totalItems;
|
|
132
142
|
const firstPosition = pageIndex * pageSize + 1;
|
|
133
143
|
const secondPosition = Math.min(totalRows, pageSize * (pageIndex + 1));
|
|
134
144
|
const itemsPerPageOptions = React.useMemo(() => { var _a; return (_a = itemsPerPage === null || itemsPerPage === void 0 ? void 0 : itemsPerPage.map(item => String(item))) !== null && _a !== void 0 ? _a : defaultItemsPerPageOptions; }, [itemsPerPage]);
|
|
135
145
|
return secondPosition <= 0 ? (React__default["default"].createElement("div", { className: styles$2.pagination },
|
|
136
|
-
React__default["default"].createElement("div", { className: styles$2.paginationInfo },
|
|
137
|
-
React__default["default"].createElement(Text.Text, null, "No items")))) : (React__default["default"].createElement("div", { className: styles$2.pagination },
|
|
146
|
+
React__default["default"].createElement("div", { className: styles$2.paginationInfo }, !loading ? React__default["default"].createElement(Text.Text, null, "No items") : React__default["default"].createElement(Glimmer.Glimmer, { width: 200 })))) : (React__default["default"].createElement("div", { className: styles$2.pagination },
|
|
138
147
|
React__default["default"].createElement("div", { className: styles$2.paginationInfo }, `Showing ${firstPosition}-${secondPosition} of ${totalRows} items`),
|
|
139
148
|
React__default["default"].createElement("div", { className: styles$2.paginationNav },
|
|
140
149
|
React__default["default"].createElement("div", { className: styles$2.paginationSelect },
|
|
@@ -233,7 +242,7 @@ function Header({ table, stickyHeader, sorting, onRowClick, }) {
|
|
|
233
242
|
}))))));
|
|
234
243
|
}
|
|
235
244
|
|
|
236
|
-
function DataTable({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, }) {
|
|
245
|
+
function DataTable({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, loading = false, }) {
|
|
237
246
|
const [ref, { exactWidth }] = jobberHooks.useResizeObserver();
|
|
238
247
|
const tableSettings = createTableSettings(data, columns, {
|
|
239
248
|
pagination,
|
|
@@ -247,7 +256,7 @@ function DataTable({ data, columns, pagination, sorting, height, stickyHeader, p
|
|
|
247
256
|
React__default["default"].createElement("div", { className: styles$3.tableContainer, style: { height }, ref: ref },
|
|
248
257
|
React__default["default"].createElement("table", { className: tableClasses },
|
|
249
258
|
React__default["default"].createElement(Header, { table: table, sorting: sorting, onRowClick: onRowClick, stickyHeader: stickyHeader }),
|
|
250
|
-
React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick, height: height ? height * 0.7 : undefined, emptyState: emptyState }),
|
|
259
|
+
React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick, height: height ? height * 0.7 : undefined, emptyState: emptyState, loading: loading }),
|
|
251
260
|
table.getRowModel().rows.length &&
|
|
252
261
|
exactWidth &&
|
|
253
262
|
exactWidth > jobberHooks.Breakpoints.small ? (React__default["default"].createElement(Footer, { table: table, viewType: "desktop" })) : null)),
|
|
@@ -256,7 +265,7 @@ function DataTable({ data, columns, pagination, sorting, height, stickyHeader, p
|
|
|
256
265
|
exactWidth <= jobberHooks.Breakpoints.small ? (React__default["default"].createElement(Footer, { table: table })) : null,
|
|
257
266
|
pagination && (React__default["default"].createElement(Pagination, { table: table, itemsPerPage: pagination.itemsPerPage, totalItems: pagination.manualPagination
|
|
258
267
|
? pagination.totalItems
|
|
259
|
-
: table.getCoreRowModel().rows.length }))));
|
|
268
|
+
: table.getCoreRowModel().rows.length, loading: loading }))));
|
|
260
269
|
}
|
|
261
270
|
|
|
262
271
|
const mockContainerWidth = (exactWidth) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "4.26.
|
|
3
|
+
"version": "4.26.9-JOB-75261.9+e2544f82",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
],
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@jobber/design": "^0.44.4",
|
|
23
|
-
"@jobber/formatters": "
|
|
23
|
+
"@jobber/formatters": "^0.2.2",
|
|
24
24
|
"@jobber/hooks": "^2.1.5",
|
|
25
25
|
"@popperjs/core": "^2.0.6",
|
|
26
26
|
"@std-proposal/temporal": "0.0.1",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"> 1%",
|
|
85
85
|
"IE 10"
|
|
86
86
|
],
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "e2544f821998f10cae184786edce75cad1b74c28"
|
|
88
88
|
}
|