tabler-react-2 0.1.153-alpha.0 → 0.1.153-alpha.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/table/index.js +30 -18
- package/docs/package.json +1 -1
- package/docs/src/docs/components/tables.mdx +12 -10
- package/package.json +1 -1
package/dist/table/index.js
CHANGED
|
@@ -122,9 +122,12 @@ var Table = exports.Table = function Table(_ref4) {
|
|
|
122
122
|
defaultRowsPerPage = _ref4$defaultRowsPerP === void 0 ? 10 : _ref4$defaultRowsPerP,
|
|
123
123
|
page = _ref4.page,
|
|
124
124
|
rowsPerPage = _ref4.rowsPerPage,
|
|
125
|
+
size = _ref4.size,
|
|
125
126
|
totalRows = _ref4.totalRows,
|
|
126
127
|
onPageChange = _ref4.onPageChange,
|
|
127
128
|
onRowsPerPageChange = _ref4.onRowsPerPageChange,
|
|
129
|
+
onSetPage = _ref4.onSetPage,
|
|
130
|
+
onSetSize = _ref4.onSetSize,
|
|
128
131
|
_ref4$pageSizeOptions = _ref4.pageSizeOptions,
|
|
129
132
|
pageSizeOptions = _ref4$pageSizeOptions === void 0 ? [10, 25, 50, 100] : _ref4$pageSizeOptions,
|
|
130
133
|
_ref4$tableClassName = _ref4.tableClassName,
|
|
@@ -151,10 +154,10 @@ var Table = exports.Table = function Table(_ref4) {
|
|
|
151
154
|
|
|
152
155
|
// Determine controlled vs uncontrolled values
|
|
153
156
|
var isPageControlled = typeof page === "number" && page > 0;
|
|
154
|
-
var isPageSizeControlled = typeof rowsPerPage === "number" && rowsPerPage > 0;
|
|
155
|
-
var useExternalPagination = isPageControlled || isPageSizeControlled || typeof totalRows === "number" || typeof onPageChange === "function" || typeof onRowsPerPageChange === "function";
|
|
157
|
+
var isPageSizeControlled = typeof size === "number" && size > 0 || typeof rowsPerPage === "number" && rowsPerPage > 0;
|
|
158
|
+
var useExternalPagination = isPageControlled || isPageSizeControlled || typeof totalRows === "number" || typeof onSetPage === "function" || typeof onSetSize === "function" || typeof onPageChange === "function" || typeof onRowsPerPageChange === "function";
|
|
156
159
|
var effectivePage = isPageControlled ? page : currentPage;
|
|
157
|
-
var effectivePageSize = isPageSizeControlled ? rowsPerPage : pageSize;
|
|
160
|
+
var effectivePageSize = isPageSizeControlled ? typeof size === "number" && size > 0 ? size : rowsPerPage : pageSize;
|
|
158
161
|
var defaultSortFn = function defaultSortFn(a, b) {
|
|
159
162
|
if (a === b) return 0;
|
|
160
163
|
return a > b ? 1 : -1;
|
|
@@ -168,8 +171,14 @@ var Table = exports.Table = function Table(_ref4) {
|
|
|
168
171
|
key: accessor,
|
|
169
172
|
direction: direction
|
|
170
173
|
});
|
|
171
|
-
if (useExternalPagination
|
|
172
|
-
|
|
174
|
+
if (useExternalPagination) {
|
|
175
|
+
if (typeof onSetPage === "function") {
|
|
176
|
+
onSetPage(1);
|
|
177
|
+
} else if (typeof onPageChange === "function") {
|
|
178
|
+
onPageChange(1);
|
|
179
|
+
} else {
|
|
180
|
+
setCurrentPage(1);
|
|
181
|
+
}
|
|
173
182
|
} else {
|
|
174
183
|
setCurrentPage(1);
|
|
175
184
|
}
|
|
@@ -252,21 +261,21 @@ var Table = exports.Table = function Table(_ref4) {
|
|
|
252
261
|
}, /*#__PURE__*/_react["default"].createElement("div", null, /*#__PURE__*/_react["default"].createElement(_index.Button, {
|
|
253
262
|
onClick: function onClick() {
|
|
254
263
|
var prev = Math.max(effectivePage - 1, 1);
|
|
255
|
-
if (useExternalPagination
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
setCurrentPage(prev);
|
|
264
|
+
if (useExternalPagination) {
|
|
265
|
+
if (typeof onSetPage === "function") return onSetPage(prev);
|
|
266
|
+
if (typeof onPageChange === "function") return onPageChange(prev);
|
|
259
267
|
}
|
|
268
|
+
setCurrentPage(prev);
|
|
260
269
|
},
|
|
261
270
|
disabled: effectivePage === 1
|
|
262
271
|
}, "Previous"), /*#__PURE__*/_react["default"].createElement(_index.Button, {
|
|
263
272
|
onClick: function onClick() {
|
|
264
273
|
var next = Math.min(effectivePage + 1, totalPages);
|
|
265
|
-
if (useExternalPagination
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
setCurrentPage(next);
|
|
274
|
+
if (useExternalPagination) {
|
|
275
|
+
if (typeof onSetPage === "function") return onSetPage(next);
|
|
276
|
+
if (typeof onPageChange === "function") return onPageChange(next);
|
|
269
277
|
}
|
|
278
|
+
setCurrentPage(next);
|
|
270
279
|
},
|
|
271
280
|
disabled: effectivePage === totalPages,
|
|
272
281
|
style: {
|
|
@@ -295,12 +304,12 @@ var Table = exports.Table = function Table(_ref4) {
|
|
|
295
304
|
}),
|
|
296
305
|
value: effectivePageSize,
|
|
297
306
|
onChange: function onChange(selected) {
|
|
298
|
-
if (useExternalPagination
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
setPageSize(selected.id);
|
|
302
|
-
setCurrentPage(1);
|
|
307
|
+
if (useExternalPagination) {
|
|
308
|
+
if (typeof onSetSize === "function") return onSetSize(selected.id);
|
|
309
|
+
if (typeof onRowsPerPageChange === "function") return onRowsPerPageChange(selected.id);
|
|
303
310
|
}
|
|
311
|
+
setPageSize(selected.id);
|
|
312
|
+
setCurrentPage(1);
|
|
304
313
|
}
|
|
305
314
|
})));
|
|
306
315
|
};
|
|
@@ -323,8 +332,11 @@ Table.propTypes = {
|
|
|
323
332
|
// external pagination
|
|
324
333
|
page: _propTypes["default"].number,
|
|
325
334
|
rowsPerPage: _propTypes["default"].number,
|
|
335
|
+
size: _propTypes["default"].number,
|
|
326
336
|
totalRows: _propTypes["default"].number,
|
|
327
337
|
onPageChange: _propTypes["default"].func,
|
|
328
338
|
onRowsPerPageChange: _propTypes["default"].func,
|
|
339
|
+
onSetPage: _propTypes["default"].func,
|
|
340
|
+
onSetSize: _propTypes["default"].func,
|
|
329
341
|
pageSizeOptions: _propTypes["default"].arrayOf(_propTypes["default"].number)
|
|
330
342
|
};
|
package/docs/package.json
CHANGED
|
@@ -491,17 +491,19 @@ The `Table` supports built-in pagination UI. Enable it with `showPagination`.
|
|
|
491
491
|
You can also fully control pagination from the parent (e.g., server-side paging) while keeping the same UI. Provide the controlled props and callbacks below. When any controlled pagination prop is provided, the table does not slice your `data` and instead assumes `data` already contains the current page.
|
|
492
492
|
|
|
493
493
|
- page: current page (1-based)
|
|
494
|
-
-
|
|
494
|
+
- size: current page size
|
|
495
495
|
- totalRows: total available row count used for page count and the “Showing … of …” text
|
|
496
|
-
-
|
|
497
|
-
-
|
|
496
|
+
- onSetPage: called with next page (1-based)
|
|
497
|
+
- onSetSize: called with next page size
|
|
498
|
+
|
|
499
|
+
Aliases are supported for compatibility: `rowsPerPage`, `onPageChange`, `onRowsPerPageChange`.
|
|
498
500
|
|
|
499
501
|
<Excerpt>
|
|
500
502
|
{(() => {
|
|
501
503
|
// Simulated external pagination
|
|
502
504
|
const React = require("react");
|
|
503
505
|
const [page, setPage] = React.useState(1);
|
|
504
|
-
const [rpp, setRpp] = React.useState(
|
|
506
|
+
const [rpp, setRpp] = React.useState(4);
|
|
505
507
|
const total = congressPeople.length;
|
|
506
508
|
const start = (page - 1) * rpp;
|
|
507
509
|
const pageData = congressPeople.slice(start, start + rpp);
|
|
@@ -515,10 +517,10 @@ You can also fully control pagination from the parent (e.g., server-side paging)
|
|
|
515
517
|
data={pageData}
|
|
516
518
|
showPagination
|
|
517
519
|
page={page}
|
|
518
|
-
|
|
520
|
+
size={rpp}
|
|
519
521
|
totalRows={total}
|
|
520
|
-
|
|
521
|
-
|
|
522
|
+
onSetPage={setPage}
|
|
523
|
+
onSetSize={(n) => {
|
|
522
524
|
setPage(1);
|
|
523
525
|
setRpp(n);
|
|
524
526
|
}}
|
|
@@ -542,10 +544,10 @@ const currentData = allRows.slice(start, start + rowsPerPage);
|
|
|
542
544
|
data={currentData}
|
|
543
545
|
showPagination
|
|
544
546
|
page={page}
|
|
545
|
-
|
|
547
|
+
size={rowsPerPage}
|
|
546
548
|
totalRows={totalRows}
|
|
547
|
-
|
|
548
|
-
|
|
549
|
+
onSetPage={setPage}
|
|
550
|
+
onSetSize={(n) => { setPage(1); setRowsPerPage(n); }}
|
|
549
551
|
/>;
|
|
550
552
|
```
|
|
551
553
|
|