@jobber/components 4.27.0 → 4.28.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/DataTable/Body.d.ts
CHANGED
|
@@ -3,8 +3,8 @@ import { ReactNode } from "react";
|
|
|
3
3
|
interface BodyProps<T> {
|
|
4
4
|
table: Table<T>;
|
|
5
5
|
onRowClick?: (row: Row<T>) => void;
|
|
6
|
-
height?: number;
|
|
7
6
|
emptyState?: ReactNode | ReactNode[];
|
|
7
|
+
loading: boolean;
|
|
8
8
|
}
|
|
9
|
-
export declare function Body<T extends object>({ table, onRowClick, emptyState, }: BodyProps<T>): JSX.Element;
|
|
9
|
+
export declare function Body<T extends object>({ table, onRowClick, emptyState, loading, }: BodyProps<T>): JSX.Element;
|
|
10
10
|
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-cfa92a88.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-2ca1ffe1.js');
|
|
14
16
|
require('../FormField-0f880b07.js');
|
|
15
17
|
require('uuid');
|
|
16
18
|
require('react-hook-form');
|
|
@@ -50,14 +52,24 @@ 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
|
|
55
|
+
function BodyLoading({ table }) {
|
|
56
|
+
const loaderRows = table.getState().pagination.pageSize;
|
|
57
|
+
const loaderColumns = table.getAllColumns().length;
|
|
58
|
+
return (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 },
|
|
59
|
+
React__default["default"].createElement(Glimmer.Glimmer, null)))))))));
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function Body({ table, onRowClick, emptyState, loading, }) {
|
|
54
63
|
const bodyRowClasses = classnames__default["default"]({ [styles$3.clickableRow]: !!onRowClick });
|
|
55
64
|
const handleRowClick = React.useCallback((row) => () => {
|
|
56
65
|
if (onRowClick == undefined)
|
|
57
66
|
return;
|
|
58
67
|
onRowClick(row);
|
|
59
68
|
}, [onRowClick]);
|
|
60
|
-
|
|
69
|
+
if (loading) {
|
|
70
|
+
return React__default["default"].createElement(BodyLoading, { table: table });
|
|
71
|
+
}
|
|
72
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null, table.getRowModel().rows.length ? (React__default["default"].createElement("tbody", null, table.getRowModel().rows.map(row => {
|
|
61
73
|
return (React__default["default"].createElement("tr", { key: row.id, onClick: handleRowClick(row), className: bodyRowClasses }, row.getVisibleCells().map(cell => {
|
|
62
74
|
return (React__default["default"].createElement("td", { key: cell.id, style: {
|
|
63
75
|
width: cell.column.getSize(),
|
|
@@ -65,7 +77,7 @@ function Body({ table, onRowClick, emptyState, }) {
|
|
|
65
77
|
maxWidth: cell.column.columnDef.maxSize,
|
|
66
78
|
} }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())));
|
|
67
79
|
})));
|
|
68
|
-
}))) : (React__default["default"].createElement("div", { className: classnames__default["default"](styles$3.emptyState) }, emptyState));
|
|
80
|
+
}))) : (React__default["default"].createElement("div", { className: classnames__default["default"](styles$3.emptyState) }, emptyState))));
|
|
69
81
|
}
|
|
70
82
|
|
|
71
83
|
function createTableSettings(data, columns, options) {
|
|
@@ -126,15 +138,14 @@ var styles$2 = {"pagination":"zn0VRVhObt0-","paginationInfo":"_1d4uh90gfSI-","pa
|
|
|
126
138
|
styleInject_es.styleInject(css_248z$2);
|
|
127
139
|
|
|
128
140
|
const defaultItemsPerPageOptions = ["10", "20", "30", "40", "50"];
|
|
129
|
-
function Pagination({ table, itemsPerPage, totalItems, }) {
|
|
141
|
+
function Pagination({ table, itemsPerPage, totalItems, loading, }) {
|
|
130
142
|
const { pageIndex, pageSize } = table.getState().pagination;
|
|
131
143
|
const totalRows = totalItems;
|
|
132
144
|
const firstPosition = pageIndex * pageSize + 1;
|
|
133
145
|
const secondPosition = Math.min(totalRows, pageSize * (pageIndex + 1));
|
|
134
146
|
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
147
|
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 },
|
|
148
|
+
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
149
|
React__default["default"].createElement("div", { className: styles$2.paginationInfo }, `Showing ${firstPosition}-${secondPosition} of ${totalRows} items`),
|
|
139
150
|
React__default["default"].createElement("div", { className: styles$2.paginationNav },
|
|
140
151
|
React__default["default"].createElement("div", { className: styles$2.paginationSelect },
|
|
@@ -233,7 +244,7 @@ function Header({ table, stickyHeader, sorting, onRowClick, }) {
|
|
|
233
244
|
}))))));
|
|
234
245
|
}
|
|
235
246
|
|
|
236
|
-
function DataTable({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, }) {
|
|
247
|
+
function DataTable({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, loading = false, }) {
|
|
237
248
|
const [ref, { exactWidth }] = jobberHooks.useResizeObserver();
|
|
238
249
|
const tableSettings = createTableSettings(data, columns, {
|
|
239
250
|
pagination,
|
|
@@ -247,7 +258,7 @@ function DataTable({ data, columns, pagination, sorting, height, stickyHeader, p
|
|
|
247
258
|
React__default["default"].createElement("div", { className: styles$3.tableContainer, style: { height }, ref: ref },
|
|
248
259
|
React__default["default"].createElement("table", { className: tableClasses },
|
|
249
260
|
React__default["default"].createElement(Header, { table: table, sorting: sorting, onRowClick: onRowClick, stickyHeader: stickyHeader }),
|
|
250
|
-
React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick,
|
|
261
|
+
React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick, emptyState: emptyState, loading: loading }),
|
|
251
262
|
table.getRowModel().rows.length &&
|
|
252
263
|
exactWidth &&
|
|
253
264
|
exactWidth > jobberHooks.Breakpoints.small ? (React__default["default"].createElement(Footer, { table: table, viewType: "desktop" })) : null)),
|
|
@@ -256,7 +267,7 @@ function DataTable({ data, columns, pagination, sorting, height, stickyHeader, p
|
|
|
256
267
|
exactWidth <= jobberHooks.Breakpoints.small ? (React__default["default"].createElement(Footer, { table: table })) : null,
|
|
257
268
|
pagination && (React__default["default"].createElement(Pagination, { table: table, itemsPerPage: pagination.itemsPerPage, totalItems: pagination.manualPagination
|
|
258
269
|
? pagination.totalItems
|
|
259
|
-
: table.getCoreRowModel().rows.length }))));
|
|
270
|
+
: table.getCoreRowModel().rows.length, loading: loading }))));
|
|
260
271
|
}
|
|
261
272
|
|
|
262
273
|
const mockContainerWidth = (exactWidth) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jobber/components",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.28.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -84,5 +84,5 @@
|
|
|
84
84
|
"> 1%",
|
|
85
85
|
"IE 10"
|
|
86
86
|
],
|
|
87
|
-
"gitHead": "
|
|
87
|
+
"gitHead": "cd6117790dbde6fa5ed9882a5e3eb0a82c235f7f"
|
|
88
88
|
}
|