@jobber/components 4.27.0 → 4.28.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/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,22 +52,37 @@ 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
|
-
|
|
61
|
-
return
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
+
if (loading) {
|
|
70
|
+
return React__default["default"].createElement(BodyLoading, { table: table });
|
|
71
|
+
}
|
|
72
|
+
return (React__default["default"].createElement(React__default["default"].Fragment, null,
|
|
73
|
+
"table.getRowModel().rows.length ? (",
|
|
74
|
+
React__default["default"].createElement("tbody", null, table.getRowModel().rows.map(row => {
|
|
75
|
+
return (React__default["default"].createElement("tr", { key: row.id, onClick: handleRowClick(row), className: bodyRowClasses }, row.getVisibleCells().map(cell => {
|
|
76
|
+
return (React__default["default"].createElement("td", { key: cell.id, style: {
|
|
77
|
+
width: cell.column.getSize(),
|
|
78
|
+
minWidth: cell.column.columnDef.minSize,
|
|
79
|
+
maxWidth: cell.column.columnDef.maxSize,
|
|
80
|
+
} }, reactTable.flexRender(cell.column.columnDef.cell, cell.getContext())));
|
|
81
|
+
})));
|
|
82
|
+
})),
|
|
83
|
+
") : (",
|
|
84
|
+
React__default["default"].createElement("div", { className: classnames__default["default"](styles$3.emptyState) }, emptyState),
|
|
85
|
+
")"));
|
|
69
86
|
}
|
|
70
87
|
|
|
71
88
|
function createTableSettings(data, columns, options) {
|
|
@@ -126,15 +143,14 @@ var styles$2 = {"pagination":"zn0VRVhObt0-","paginationInfo":"_1d4uh90gfSI-","pa
|
|
|
126
143
|
styleInject_es.styleInject(css_248z$2);
|
|
127
144
|
|
|
128
145
|
const defaultItemsPerPageOptions = ["10", "20", "30", "40", "50"];
|
|
129
|
-
function Pagination({ table, itemsPerPage, totalItems, }) {
|
|
146
|
+
function Pagination({ table, itemsPerPage, totalItems, loading, }) {
|
|
130
147
|
const { pageIndex, pageSize } = table.getState().pagination;
|
|
131
148
|
const totalRows = totalItems;
|
|
132
149
|
const firstPosition = pageIndex * pageSize + 1;
|
|
133
150
|
const secondPosition = Math.min(totalRows, pageSize * (pageIndex + 1));
|
|
134
151
|
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
152
|
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 },
|
|
153
|
+
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
154
|
React__default["default"].createElement("div", { className: styles$2.paginationInfo }, `Showing ${firstPosition}-${secondPosition} of ${totalRows} items`),
|
|
139
155
|
React__default["default"].createElement("div", { className: styles$2.paginationNav },
|
|
140
156
|
React__default["default"].createElement("div", { className: styles$2.paginationSelect },
|
|
@@ -233,7 +249,7 @@ function Header({ table, stickyHeader, sorting, onRowClick, }) {
|
|
|
233
249
|
}))))));
|
|
234
250
|
}
|
|
235
251
|
|
|
236
|
-
function DataTable({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, }) {
|
|
252
|
+
function DataTable({ data, columns, pagination, sorting, height, stickyHeader, pinFirstColumn, onRowClick, emptyState, loading = false, }) {
|
|
237
253
|
const [ref, { exactWidth }] = jobberHooks.useResizeObserver();
|
|
238
254
|
const tableSettings = createTableSettings(data, columns, {
|
|
239
255
|
pagination,
|
|
@@ -247,7 +263,7 @@ function DataTable({ data, columns, pagination, sorting, height, stickyHeader, p
|
|
|
247
263
|
React__default["default"].createElement("div", { className: styles$3.tableContainer, style: { height }, ref: ref },
|
|
248
264
|
React__default["default"].createElement("table", { className: tableClasses },
|
|
249
265
|
React__default["default"].createElement(Header, { table: table, sorting: sorting, onRowClick: onRowClick, stickyHeader: stickyHeader }),
|
|
250
|
-
React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick,
|
|
266
|
+
React__default["default"].createElement(Body, { table: table, onRowClick: onRowClick, emptyState: emptyState, loading: loading }),
|
|
251
267
|
table.getRowModel().rows.length &&
|
|
252
268
|
exactWidth &&
|
|
253
269
|
exactWidth > jobberHooks.Breakpoints.small ? (React__default["default"].createElement(Footer, { table: table, viewType: "desktop" })) : null)),
|
|
@@ -256,7 +272,7 @@ function DataTable({ data, columns, pagination, sorting, height, stickyHeader, p
|
|
|
256
272
|
exactWidth <= jobberHooks.Breakpoints.small ? (React__default["default"].createElement(Footer, { table: table })) : null,
|
|
257
273
|
pagination && (React__default["default"].createElement(Pagination, { table: table, itemsPerPage: pagination.itemsPerPage, totalItems: pagination.manualPagination
|
|
258
274
|
? pagination.totalItems
|
|
259
|
-
: table.getCoreRowModel().rows.length }))));
|
|
275
|
+
: table.getCoreRowModel().rows.length, loading: loading }))));
|
|
260
276
|
}
|
|
261
277
|
|
|
262
278
|
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.0",
|
|
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": "d1f65a97649c0cebfb21f03d195d7f94d0afe46f"
|
|
88
88
|
}
|