@xyo-network/react-payload-table 2.31.4 → 2.31.5
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/cjs/components/DynamicTable/DynamicTableRow.d.ts.map +1 -1
- package/dist/cjs/components/DynamicTable/DynamicTableRow.js +4 -2
- package/dist/cjs/components/DynamicTable/DynamicTableRow.js.map +1 -1
- package/dist/cjs/components/DynamicTable/Table.d.ts.map +1 -1
- package/dist/cjs/components/DynamicTable/Table.js +42 -3
- package/dist/cjs/components/DynamicTable/Table.js.map +1 -1
- package/dist/cjs/components/Table/Table.d.ts +1 -1
- package/dist/cjs/components/Table/Table.d.ts.map +1 -1
- package/dist/cjs/components/Table/Table.js +46 -3
- package/dist/cjs/components/Table/Table.js.map +1 -1
- package/dist/cjs/components/Table/TableRow.d.ts.map +1 -1
- package/dist/cjs/components/Table/TableRow.js +6 -2
- package/dist/cjs/components/Table/TableRow.js.map +1 -1
- package/dist/docs.json +40 -40
- package/dist/esm/components/DynamicTable/DynamicTableRow.d.ts.map +1 -1
- package/dist/esm/components/DynamicTable/DynamicTableRow.js +4 -2
- package/dist/esm/components/DynamicTable/DynamicTableRow.js.map +1 -1
- package/dist/esm/components/DynamicTable/Table.d.ts.map +1 -1
- package/dist/esm/components/DynamicTable/Table.js +43 -4
- package/dist/esm/components/DynamicTable/Table.js.map +1 -1
- package/dist/esm/components/Table/Table.d.ts +1 -1
- package/dist/esm/components/Table/Table.d.ts.map +1 -1
- package/dist/esm/components/Table/Table.js +47 -4
- package/dist/esm/components/Table/Table.js.map +1 -1
- package/dist/esm/components/Table/TableRow.d.ts.map +1 -1
- package/dist/esm/components/Table/TableRow.js +7 -3
- package/dist/esm/components/Table/TableRow.js.map +1 -1
- package/package.json +12 -12
- package/src/components/DynamicTable/DynamicTable.stories.tsx +21 -1
- package/src/components/DynamicTable/DynamicTableRow.tsx +7 -4
- package/src/components/DynamicTable/Table.tsx +104 -4
- package/src/components/Table/Table.stories.tsx +35 -1
- package/src/components/Table/Table.tsx +95 -4
- package/src/components/Table/TableRow.tsx +14 -11
|
@@ -21,7 +21,7 @@ export const PayloadDynamicTableRow = ({ exploreDomain, network: networkProp, pa
|
|
|
21
21
|
const Render = payload
|
|
22
22
|
? resolver?.resolve(payload)?.components.table.cell
|
|
23
23
|
: undefined;
|
|
24
|
-
return Render ? _jsx(Render, { payload: payload, ...props }) :
|
|
24
|
+
return Render ? _jsx(Render, { payload: payload, ...props }) : _jsx(TableCell, { align: "left", ...props }, "payloads");
|
|
25
25
|
};
|
|
26
26
|
const icon = (props) => {
|
|
27
27
|
const Avatar = payload
|
|
@@ -30,7 +30,9 @@ export const PayloadDynamicTableRow = ({ exploreDomain, network: networkProp, pa
|
|
|
30
30
|
return (_jsx(TableCell, { align: "left", ...props, children: Avatar ? _jsx(Avatar, { payload: payload }) : null }, "payloads"));
|
|
31
31
|
};
|
|
32
32
|
const isValid = wrapper ? new XyoPayloadValidator(wrapper.body).validate().length === 0 : undefined;
|
|
33
|
-
const valid = (props) => (_jsx(TableCell, { align: "center", ...props, children: isValid === undefined ? (_jsx(WarningAmberRoundedIcon, { fontSize: "small", color: "warning" })) : isValid ? (_jsx(CheckCircleOutlineRoundedIcon, { fontSize: "small", color: "success" })) : (_jsx(ErrorOutlineRoundedIcon, { color: "error", fontSize: "small" }))
|
|
33
|
+
const valid = (props) => (_jsx(TableCell, { align: "center", ...props, children: isValid === undefined && payload != undefined ? (_jsx(WarningAmberRoundedIcon, { fontSize: "small", color: "warning" })) : isValid === true ? (_jsx(CheckCircleOutlineRoundedIcon, { fontSize: "small", color: "success" })) : isValid === false ? (_jsx(ErrorOutlineRoundedIcon, { color: "error", fontSize: "small" })) : (
|
|
34
|
+
//nbsp to keep row height consistent even when no data is provided for the row
|
|
35
|
+
_jsx(Typography, { children: " \u00A0" })) }, "valid"));
|
|
34
36
|
const tableCells = {
|
|
35
37
|
details,
|
|
36
38
|
hash,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicTableRow.js","sourceRoot":"","sources":["../../../../src/components/DynamicTable/DynamicTableRow.tsx"],"names":[],"mappings":";AAAA,OAAO,6BAA6B,MAAM,+CAA+C,CAAA;AACzF,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAC7E,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAe,SAAS,EAAkB,QAAQ,EAAiB,UAAU,EAAE,MAAM,eAAe,CAAA;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAc,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,8BAA8B,EAAyB,MAAM,mCAAmC,CAAA;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAGzD,OAAO,EAEL,uCAAuC,GAExC,MAAM,mCAAmC,CAAA;AAU1C,MAAM,CAAC,MAAM,sBAAsB,GAA0C,CAAC,EAC5E,aAAa,EACb,OAAO,EAAE,WAAW,EACpB,OAAO,EACP,OAAO,EACP,OAAO,GAAG,uCAAuC,EAAE,EACnD,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,8BAA8B,EAAE,CAAA;IACrD,MAAM,IAAI,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAChD,KAAC,aAAa,IAEZ,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EAAE,IAAI,EACpB,QAAQ,EAAC,SAAS,EAClB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,IAAI,KACjC,KAAK,IAPL,MAAM,CAQV,CACH,CAAA;IAED,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAClD,KAAC,SAAS,IAAgB,KAAK,EAAC,MAAM,KAAK,KAAK,YAC9C,KAAC,UAAU,IAAC,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBACtD,OAAO,EAAE,MAAM,GACL,IAHA,UAAU,CAIb,CACb,CAAA;IAED,MAAM,OAAO,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CACnD,KAAC,SAAS,IAAgB,KAAK,EAAC,MAAM,KAAK,KAAK,YAC9C,KAAC,UAAU,IAAC,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBACtD,OAAO,EAAE,OAAO,GACN,IAHA,UAAU,CAIb,CACb,CAAA;IAED,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE;QACjD,MAAM,MAAM,GAAsE,OAAO;YACvF,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;YACnD,CAAC,CAAC,SAAS,CAAA;QACb,OAAO,MAAM,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,KAAM,KAAK,GAAI,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"DynamicTableRow.js","sourceRoot":"","sources":["../../../../src/components/DynamicTable/DynamicTableRow.tsx"],"names":[],"mappings":";AAAA,OAAO,6BAA6B,MAAM,+CAA+C,CAAA;AACzF,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAC7E,OAAO,uBAAuB,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAe,SAAS,EAAkB,QAAQ,EAAiB,UAAU,EAAE,MAAM,eAAe,CAAA;AAC3G,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAc,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACzF,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,OAAO,EAAE,8BAA8B,EAAyB,MAAM,mCAAmC,CAAA;AACzG,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AAGzD,OAAO,EAEL,uCAAuC,GAExC,MAAM,mCAAmC,CAAA;AAU1C,MAAM,CAAC,MAAM,sBAAsB,GAA0C,CAAC,EAC5E,aAAa,EACb,OAAO,EAAE,WAAW,EACpB,OAAO,EACP,OAAO,EACP,OAAO,GAAG,uCAAuC,EAAE,EACnD,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IACpE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAA;IAChC,MAAM,EAAE,QAAQ,EAAE,GAAG,8BAA8B,EAAE,CAAA;IACrD,MAAM,IAAI,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAChD,KAAC,aAAa,IAEZ,KAAK,EAAC,MAAM,EACZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,OAAO,EAAE,IAAI,EACpB,QAAQ,EAAC,SAAS,EAClB,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,WAAW,IAAI,OAAO,EAAE,IAAI,KACjC,KAAK,IAPL,MAAM,CAQV,CACH,CAAA;IAED,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAClD,KAAC,SAAS,IAAgB,KAAK,EAAC,MAAM,KAAK,KAAK,YAC9C,KAAC,UAAU,IAAC,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBACtD,OAAO,EAAE,MAAM,GACL,IAHA,UAAU,CAIb,CACb,CAAA;IAED,MAAM,OAAO,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CACnD,KAAC,SAAS,IAAgB,KAAK,EAAC,MAAM,KAAK,KAAK,YAC9C,KAAC,UAAU,IAAC,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBACtD,OAAO,EAAE,OAAO,GACN,IAHA,UAAU,CAIb,CACb,CAAA;IAED,MAAM,MAAM,GAA6B,CAAC,KAAK,EAAE,EAAE;QACjD,MAAM,MAAM,GAAsE,OAAO;YACvF,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI;YACnD,CAAC,CAAC,SAAS,CAAA;QACb,OAAO,MAAM,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,KAAM,KAAK,GAAI,CAAC,CAAC,CAAC,KAAC,SAAS,IAAgB,KAAK,EAAC,MAAM,KAAK,KAAK,IAAjC,UAAU,CAAqC,CAAA;IAC1H,CAAC,CAAA;IAED,MAAM,IAAI,GAA6B,CAAC,KAAK,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAmE,OAAO;YACpF,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK;YACrD,CAAC,CAAC,SAAS,CAAA;QAEb,OAAO,CACL,KAAC,SAAS,IAAgB,KAAK,EAAC,MAAM,KAAK,KAAK,YAC7C,MAAM,CAAC,CAAC,CAAC,KAAC,MAAM,IAAC,OAAO,EAAE,OAAO,GAAI,CAAC,CAAC,CAAC,IAAI,IADhC,UAAU,CAEb,CACb,CAAA;IACH,CAAC,CAAA;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAEnG,MAAM,KAAK,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CACjD,KAAC,SAAS,IAAa,KAAK,EAAC,QAAQ,KAAK,KAAK,YAC5C,OAAO,KAAK,SAAS,IAAI,OAAO,IAAI,SAAS,CAAC,CAAC,CAAC,CAC/C,KAAC,uBAAuB,IAAC,QAAQ,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG,CAC7D,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CACrB,KAAC,6BAA6B,IAAC,QAAQ,EAAC,OAAO,EAAC,KAAK,EAAC,SAAS,GAAG,CACnE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CACtB,KAAC,uBAAuB,IAAC,KAAK,EAAC,OAAO,EAAC,QAAQ,EAAC,OAAO,GAAG,CAC3D,CAAC,CAAC,CAAC;QACF,8EAA8E;QAC9E,KAAC,UAAU,0BAAqB,CACjC,IAVY,OAAO,CAWV,CACb,CAAA;IAED,MAAM,UAAU,GAAoE;QAClF,OAAO;QACP,IAAI;QACJ,IAAI;QACJ,MAAM;QACN,MAAM;QACN,KAAK;KACN,CAAA;IAED,OAAO,UAAU,CAAC,CAAC,CAAC,CAClB,KAAC,QAAQ,IAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAM,KAAK,YAC9C,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACnC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACzD,CAAC,CAAC,GACO,CACZ,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/DynamicTable/Table.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/DynamicTable/Table.tsx"],"names":[],"mappings":";AAIA,OAAO,EAUL,UAAU,EAIX,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAKpE,OAAO,EAAE,+BAA+B,EAA2C,MAAM,mCAAmC,CAAA;AAE5H,MAAM,WAAW,wBAAyB,SAAQ,UAAU;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAC9B,OAAO,CAAC,EAAE,+BAA+B,CAAA;CAC1C;AA+CD,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CA4FlE,CAAA"}
|
|
@@ -1,21 +1,60 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import FirstPageIcon from '@mui/icons-material/FirstPage';
|
|
3
|
+
import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';
|
|
4
|
+
import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';
|
|
5
|
+
import LastPageIcon from '@mui/icons-material/LastPage';
|
|
6
|
+
import { Alert, Box, IconButton, Table, TableBody, TableCell, TableFooter, TableHead, TablePagination, TableRow, Typography, useTheme, } from '@mui/material';
|
|
3
7
|
import { useBreakpoint } from '@xylabs/react-shared';
|
|
4
8
|
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
5
9
|
import { XyoApiThrownErrorBoundary } from '@xyo-network/react-auth-service';
|
|
10
|
+
import { useState } from 'react';
|
|
6
11
|
import { PayloadDynamicTableRow } from './DynamicTableRow';
|
|
7
12
|
import { payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig';
|
|
13
|
+
function TablePaginationActions(props) {
|
|
14
|
+
const theme = useTheme();
|
|
15
|
+
const { count, page, rowsPerPage, onPageChange } = props;
|
|
16
|
+
const handleFirstPageButtonClick = (event) => {
|
|
17
|
+
onPageChange(event, 0);
|
|
18
|
+
};
|
|
19
|
+
const handleBackButtonClick = (event) => {
|
|
20
|
+
onPageChange(event, page - 1);
|
|
21
|
+
};
|
|
22
|
+
const handleNextButtonClick = (event) => {
|
|
23
|
+
onPageChange(event, page + 1);
|
|
24
|
+
};
|
|
25
|
+
const handleLastPageButtonClick = (event) => {
|
|
26
|
+
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
|
27
|
+
};
|
|
28
|
+
return (_jsxs(Box, { sx: { flexShrink: 0, ml: 2.5 }, children: [_jsx(IconButton, { onClick: handleFirstPageButtonClick, disabled: page === 0, "aria-label": "first page", children: theme.direction === 'rtl' ? _jsx(LastPageIcon, {}) : _jsx(FirstPageIcon, {}) }), _jsx(IconButton, { onClick: handleBackButtonClick, disabled: page === 0, "aria-label": "previous page", children: theme.direction === 'rtl' ? _jsx(KeyboardArrowRight, {}) : _jsx(KeyboardArrowLeft, {}) }), _jsx(IconButton, { onClick: handleNextButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "next page", children: theme.direction === 'rtl' ? _jsx(KeyboardArrowLeft, {}) : _jsx(KeyboardArrowRight, {}) }), _jsx(IconButton, { onClick: handleLastPageButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "last page", children: theme.direction === 'rtl' ? _jsx(FirstPageIcon, {}) : _jsx(LastPageIcon, {}) })] }));
|
|
29
|
+
}
|
|
8
30
|
export const PayloadDynamicTable = ({ exploreDomain, archive, onRowClick, payloads, children, columns = payloadDynamicTableColumnConfigDefaults(), ...props }) => {
|
|
9
31
|
const breakPoint = useBreakpoint();
|
|
10
|
-
|
|
32
|
+
const [page, setPage] = useState(0);
|
|
33
|
+
const [rowsPerPage, setRowsPerPage] = useState(5);
|
|
34
|
+
const payloadCount = payloads ? payloads.length : 0;
|
|
35
|
+
// Avoid a layout jump when reaching the last page with empty rows.
|
|
36
|
+
const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0;
|
|
37
|
+
const handleChangePage = (event, newPage) => {
|
|
38
|
+
setPage(newPage);
|
|
39
|
+
};
|
|
40
|
+
const handleChangeRowsPerPage = (event) => {
|
|
41
|
+
setRowsPerPage(parseInt(event.target.value, 10));
|
|
42
|
+
setPage(0);
|
|
43
|
+
};
|
|
44
|
+
return breakPoint ? (_jsxs(Table, { stickyHeader: true, ...props, children: [_jsx(TableHead, { children: _jsx(TableRow, { children: columns[breakPoint]?.map((column, index) => {
|
|
11
45
|
return (_jsx(TableCell, { align: column.alignment ?? 'left', width: column.width, children: _jsx(Typography, { variant: "body2", noWrap: true, children: column.name }) }, index));
|
|
12
|
-
}) }) }), _jsxs(TableBody, { children: [payloads?.map((payload, index) => {
|
|
46
|
+
}) }) }), _jsxs(TableBody, { sx: { overflowY: 'scroll ' }, children: [payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((payload, index) => {
|
|
13
47
|
const wrapper = new XyoPayloadWrapper(payload);
|
|
14
48
|
return (_jsx(XyoApiThrownErrorBoundary, { errorComponent: (e) => (_jsxs(Alert, { severity: "error", children: ["Error Loading Payload: ", _jsx(Typography, { fontWeight: "bold", children: e.message })] })), children: _jsx(PayloadDynamicTableRow, { archive: archive, onClick: onRowClick
|
|
15
49
|
? () => {
|
|
16
50
|
onRowClick(payload);
|
|
17
51
|
}
|
|
18
52
|
: undefined, exploreDomain: exploreDomain, payload: payload }) }, `${wrapper.hash}-${index}`));
|
|
19
|
-
}), children
|
|
53
|
+
}), children, emptyRows > 0 && Array(emptyRows).fill(_jsx(PayloadDynamicTableRow, {}))] }), _jsx(TableFooter, { children: _jsx(TableRow, { children: _jsx(TablePagination, { rowsPerPageOptions: [5, 10, 25, { label: 'All', value: -1 }], colSpan: 5, count: payloadCount, rowsPerPage: rowsPerPage, page: page, SelectProps: {
|
|
54
|
+
inputProps: {
|
|
55
|
+
'aria-label': 'rows per page',
|
|
56
|
+
},
|
|
57
|
+
native: true,
|
|
58
|
+
}, onPageChange: handleChangePage, onRowsPerPageChange: handleChangeRowsPerPage, ActionsComponent: TablePaginationActions }) }) })] })) : null;
|
|
20
59
|
};
|
|
21
60
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../../src/components/DynamicTable/Table.tsx"],"names":[],"mappings":";AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../../src/components/DynamicTable/Table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { TableProps } from '@mui/material';
|
|
3
2
|
import { XyoPayload } from '@xyo-network/payload';
|
|
3
|
+
import * as React from 'react';
|
|
4
4
|
import { PayloadTableColumnConfig } from './PayloadTableColumnConfig';
|
|
5
5
|
export interface PayloadTableProps extends TableProps {
|
|
6
6
|
exploreDomain?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"AAIA,OAAO,EAA+E,UAAU,EAAwB,MAAM,eAAe,CAAA;AAK7I,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAEpE,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAG9B,OAAO,EAAsB,wBAAwB,EAAoC,MAAM,4BAA4B,CAAA;AAG3H,MAAM,WAAW,iBAAkB,SAAQ,UAAU;IACnD,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;IACxC,QAAQ,CAAC,EAAE,UAAU,EAAE,GAAG,IAAI,CAAA;IAC9B,OAAO,CAAC,EAAE,wBAAwB,CAAA;CACnC;AA+CD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA6FpD,CAAA"}
|
|
@@ -1,21 +1,64 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import FirstPageIcon from '@mui/icons-material/FirstPage';
|
|
3
|
+
import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft';
|
|
4
|
+
import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight';
|
|
5
|
+
import LastPageIcon from '@mui/icons-material/LastPage';
|
|
6
|
+
import { Alert, Table, TableBody, TableCell, TableFooter, TableHead, TablePagination, TableRow, Typography } from '@mui/material';
|
|
7
|
+
import Box from '@mui/material/Box';
|
|
8
|
+
import IconButton from '@mui/material/IconButton';
|
|
9
|
+
import { useTheme } from '@mui/material/styles';
|
|
3
10
|
import { useBreakpoint } from '@xylabs/react-shared';
|
|
4
11
|
import { XyoPayloadWrapper } from '@xyo-network/payload';
|
|
5
12
|
import { XyoApiThrownErrorBoundary } from '@xyo-network/react-auth-service';
|
|
13
|
+
import { useState } from 'react';
|
|
6
14
|
import { payloadColumnNames, payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig';
|
|
7
15
|
import { PayloadTableRow } from './TableRow';
|
|
16
|
+
function TablePaginationActions(props) {
|
|
17
|
+
const theme = useTheme();
|
|
18
|
+
const { count, page, rowsPerPage, onPageChange } = props;
|
|
19
|
+
const handleFirstPageButtonClick = (event) => {
|
|
20
|
+
onPageChange(event, 0);
|
|
21
|
+
};
|
|
22
|
+
const handleBackButtonClick = (event) => {
|
|
23
|
+
onPageChange(event, page - 1);
|
|
24
|
+
};
|
|
25
|
+
const handleNextButtonClick = (event) => {
|
|
26
|
+
onPageChange(event, page + 1);
|
|
27
|
+
};
|
|
28
|
+
const handleLastPageButtonClick = (event) => {
|
|
29
|
+
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1));
|
|
30
|
+
};
|
|
31
|
+
return (_jsxs(Box, { sx: { flexShrink: 0, ml: 2.5 }, children: [_jsx(IconButton, { onClick: handleFirstPageButtonClick, disabled: page === 0, "aria-label": "first page", children: theme.direction === 'rtl' ? _jsx(LastPageIcon, {}) : _jsx(FirstPageIcon, {}) }), _jsx(IconButton, { onClick: handleBackButtonClick, disabled: page === 0, "aria-label": "previous page", children: theme.direction === 'rtl' ? _jsx(KeyboardArrowRight, {}) : _jsx(KeyboardArrowLeft, {}) }), _jsx(IconButton, { onClick: handleNextButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "next page", children: theme.direction === 'rtl' ? _jsx(KeyboardArrowLeft, {}) : _jsx(KeyboardArrowRight, {}) }), _jsx(IconButton, { onClick: handleLastPageButtonClick, disabled: page >= Math.ceil(count / rowsPerPage) - 1, "aria-label": "last page", children: theme.direction === 'rtl' ? _jsx(FirstPageIcon, {}) : _jsx(LastPageIcon, {}) })] }));
|
|
32
|
+
}
|
|
8
33
|
export const PayloadTable = ({ exploreDomain, archive, onRowClick, payloads, children, columns = payloadTableColumnConfigDefaults(), ...props }) => {
|
|
9
34
|
const breakPoint = useBreakpoint();
|
|
10
|
-
|
|
35
|
+
const [page, setPage] = useState(0);
|
|
36
|
+
const [rowsPerPage, setRowsPerPage] = useState(5);
|
|
37
|
+
const payloadCount = payloads ? payloads.length : 0;
|
|
38
|
+
// Avoid a layout jump when reaching the last page with empty rows.
|
|
39
|
+
const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0;
|
|
40
|
+
const handleChangePage = (event, newPage) => {
|
|
41
|
+
setPage(newPage);
|
|
42
|
+
};
|
|
43
|
+
const handleChangeRowsPerPage = (event) => {
|
|
44
|
+
setRowsPerPage(parseInt(event.target.value, 10));
|
|
45
|
+
setPage(0);
|
|
46
|
+
};
|
|
47
|
+
return breakPoint ? (_jsxs(Table, { stickyHeader: true, ...props, children: [_jsx(TableHead, { children: _jsx(TableRow, { children: columns[breakPoint]?.map((column, index) => {
|
|
11
48
|
return (_jsx(TableCell, { width: index === 0 ? '100%' : undefined, align: index === 0 ? 'left' : 'center', children: _jsx(Typography, { variant: "body2", noWrap: true, children: payloadColumnNames[column] }) }, index));
|
|
12
|
-
}) }) }), _jsxs(TableBody, { children: [payloads?.map((payload, index) => {
|
|
49
|
+
}) }) }), _jsxs(TableBody, { sx: { overflowY: 'scroll ' }, children: [payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((payload, index) => {
|
|
50
|
+
// {payloads?.map((payload, index) => {
|
|
13
51
|
const wrapper = new XyoPayloadWrapper(payload);
|
|
14
52
|
return (_jsx(XyoApiThrownErrorBoundary, { errorComponent: (e) => (_jsxs(Alert, { severity: "error", children: ["Error Loading Payload: ", _jsx(Typography, { fontWeight: "bold", children: e.message })] })), children: _jsx(PayloadTableRow, { archive: archive, onClick: onRowClick
|
|
15
53
|
? () => {
|
|
16
54
|
onRowClick(payload);
|
|
17
55
|
}
|
|
18
56
|
: undefined, exploreDomain: exploreDomain, payload: payload }) }, `${wrapper.hash}-${index}`));
|
|
19
|
-
}), children
|
|
57
|
+
}), children, emptyRows > 0 && Array(emptyRows).fill(_jsx(PayloadTableRow, {}))] }), _jsx(TableFooter, { children: _jsx(TableRow, { children: _jsx(TablePagination, { rowsPerPageOptions: [5, 10, 25, { label: 'All', value: -1 }], colSpan: 3, count: payloadCount, rowsPerPage: rowsPerPage, page: page, SelectProps: {
|
|
58
|
+
inputProps: {
|
|
59
|
+
'aria-label': 'rows per page',
|
|
60
|
+
},
|
|
61
|
+
native: true,
|
|
62
|
+
}, onPageChange: handleChangePage, onRowsPerPageChange: handleChangeRowsPerPage, ActionsComponent: TablePaginationActions }) }) })] })) : null;
|
|
20
63
|
};
|
|
21
64
|
//# sourceMappingURL=Table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../../src/components/Table/Table.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAc,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/
|
|
1
|
+
{"version":3,"file":"Table.js","sourceRoot":"","sources":["../../../../src/components/Table/Table.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/TableRow.tsx"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"TableRow.d.ts","sourceRoot":"","sources":["../../../../src/components/Table/TableRow.tsx"],"names":[],"mappings":";AAGA,OAAO,EAA8C,aAAa,EAAc,MAAM,eAAe,CAAA;AAErG,OAAO,EAAE,UAAU,EAA0C,MAAM,sBAAsB,CAAA;AAIzF,OAAO,EAAE,wBAAwB,EAA4D,MAAM,4BAA4B,CAAA;AAE/H,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,OAAO,CAAC,EAAE,UAAU,CAAA;IACpB,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,OAAO,CAAC,EAAE,wBAAwB,CAAA;IAClC,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,EAAE,CAAC,oBAAoB,CA+D1D,CAAA"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
-
import
|
|
2
|
+
import CheckCircleOutlineRoundedIcon from '@mui/icons-material/CheckCircleOutlineRounded';
|
|
3
|
+
import ErrorOutlineRoundedIcon from '@mui/icons-material/ErrorOutlineRounded';
|
|
4
|
+
import WarningAmberRoundedIcon from '@mui/icons-material/WarningAmberRounded';
|
|
5
|
+
import { alpha, TableCell, TableRow, Typography } from '@mui/material';
|
|
3
6
|
import { useBreakpoint } from '@xylabs/react-shared';
|
|
4
7
|
import { XyoPayloadValidator, XyoPayloadWrapper } from '@xyo-network/payload';
|
|
5
8
|
import { useNetwork } from '@xyo-network/react-network';
|
|
6
9
|
import { HashTableCell } from '@xyo-network/react-shared';
|
|
7
|
-
import { MdClear, MdDone } from 'react-icons/md';
|
|
8
10
|
import { payloadTableColumnConfigDefaults } from './PayloadTableColumnConfig';
|
|
9
11
|
export const PayloadTableRow = ({ exploreDomain, network: networkProp, payload, archive, columns = payloadTableColumnConfigDefaults(), ...props }) => {
|
|
10
12
|
const breakPoint = useBreakpoint();
|
|
@@ -13,7 +15,9 @@ export const PayloadTableRow = ({ exploreDomain, network: networkProp, payload,
|
|
|
13
15
|
const hash = (props) => (_jsx(HashTableCell, { archive: archive, width: "100%", value: wrapper?.hash, dataType: "payload", exploreDomain: exploreDomain, network: networkProp ?? network?.slug, ...props }, "hash"));
|
|
14
16
|
const schema = (props) => (_jsx(TableCell, { align: "center", ...props, children: _jsx(Typography, { fontFamily: "monospace", variant: "body2", noWrap: true, children: payload?.schema }) }, "payloads"));
|
|
15
17
|
const isValid = wrapper ? new XyoPayloadValidator(wrapper.body).validate().length === 0 : undefined;
|
|
16
|
-
const valid = (props) => (_jsx(TableCell, { align: "center", ...props, children:
|
|
18
|
+
const valid = (props) => (_jsx(TableCell, { align: "center", ...props, children: isValid === undefined && payload != undefined ? (_jsx(WarningAmberRoundedIcon, { fontSize: "small", color: "warning" })) : isValid === true ? (_jsx(CheckCircleOutlineRoundedIcon, { fontSize: "small", color: "success" })) : isValid === false ? (_jsx(ErrorOutlineRoundedIcon, { color: "error", fontSize: "small" })) : (
|
|
19
|
+
//to keep row height consistent when no data provided, may need fix later
|
|
20
|
+
_jsx(ErrorOutlineRoundedIcon, { sx: { color: alpha('#fff', 0) }, fontSize: "small" })) }, "valid"));
|
|
17
21
|
const tableCells = {
|
|
18
22
|
hash,
|
|
19
23
|
schema,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../../src/components/Table/TableRow.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAkB,QAAQ,EAAiB,UAAU,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"TableRow.js","sourceRoot":"","sources":["../../../../src/components/Table/TableRow.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -10,17 +10,17 @@
|
|
|
10
10
|
"url": "https://github.com/XYOracleNetwork/sdk-xyo-react-js/issues"
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
|
-
"@emotion/react": "^11.10.
|
|
14
|
-
"@emotion/styled": "^11.10.
|
|
13
|
+
"@emotion/react": "^11.10.4",
|
|
14
|
+
"@emotion/styled": "^11.10.4",
|
|
15
15
|
"@mui/icons-material": "^5.10.3",
|
|
16
16
|
"@mui/material": "^5.10.3",
|
|
17
|
-
"@xylabs/react-shared": "^2.14.
|
|
18
|
-
"@xyo-network/payload": "^2.29.
|
|
19
|
-
"@xyo-network/react-auth-service": "^2.31.
|
|
20
|
-
"@xyo-network/react-crypto-market-uniswap-plugin": "^2.31.
|
|
21
|
-
"@xyo-network/react-network": "^2.31.
|
|
22
|
-
"@xyo-network/react-payload-plugin": "^2.31.
|
|
23
|
-
"@xyo-network/react-shared": "^2.31.
|
|
17
|
+
"@xylabs/react-shared": "^2.14.16",
|
|
18
|
+
"@xyo-network/payload": "^2.29.2",
|
|
19
|
+
"@xyo-network/react-auth-service": "^2.31.5",
|
|
20
|
+
"@xyo-network/react-crypto-market-uniswap-plugin": "^2.31.5",
|
|
21
|
+
"@xyo-network/react-network": "^2.31.5",
|
|
22
|
+
"@xyo-network/react-payload-plugin": "^2.31.5",
|
|
23
|
+
"@xyo-network/react-shared": "^2.31.5",
|
|
24
24
|
"react": "^18.2.0",
|
|
25
25
|
"react-dom": "^18.2.0",
|
|
26
26
|
"react-icons": "^4.4.0",
|
|
@@ -30,8 +30,8 @@
|
|
|
30
30
|
"description": "Common React library for all XYO projects that use React",
|
|
31
31
|
"devDependencies": {
|
|
32
32
|
"@storybook/react": "^6.5.10",
|
|
33
|
-
"@xylabs/tsconfig-dom": "^2.5.
|
|
34
|
-
"@xyo-network/react-storybook": "^2.31.
|
|
33
|
+
"@xylabs/tsconfig-dom": "^2.5.167",
|
|
34
|
+
"@xyo-network/react-storybook": "^2.31.5"
|
|
35
35
|
},
|
|
36
36
|
"browser": "dist/esm/index.js",
|
|
37
37
|
"docs": "dist/docs.json",
|
|
@@ -75,5 +75,5 @@
|
|
|
75
75
|
},
|
|
76
76
|
"sideEffects": false,
|
|
77
77
|
"types": "dist/esm/index.d.ts",
|
|
78
|
-
"version": "2.31.
|
|
78
|
+
"version": "2.31.5"
|
|
79
79
|
}
|
|
@@ -32,7 +32,27 @@ Default.args = {}
|
|
|
32
32
|
Default.decorators = [useAppThemeDecorator]
|
|
33
33
|
|
|
34
34
|
const WithData = Template.bind({})
|
|
35
|
-
WithData.args = {
|
|
35
|
+
WithData.args = {
|
|
36
|
+
payloads: [
|
|
37
|
+
samplePayload,
|
|
38
|
+
sampleUniswapPayload,
|
|
39
|
+
sampleCoinGeckoPayload,
|
|
40
|
+
samplePayload,
|
|
41
|
+
sampleUniswapPayload,
|
|
42
|
+
samplePayload,
|
|
43
|
+
sampleUniswapPayload,
|
|
44
|
+
sampleCoinGeckoPayload,
|
|
45
|
+
samplePayload,
|
|
46
|
+
sampleUniswapPayload,
|
|
47
|
+
samplePayload,
|
|
48
|
+
sampleUniswapPayload,
|
|
49
|
+
sampleCoinGeckoPayload,
|
|
50
|
+
samplePayload,
|
|
51
|
+
sampleUniswapPayload,
|
|
52
|
+
samplePayload,
|
|
53
|
+
sampleUniswapPayload,
|
|
54
|
+
],
|
|
55
|
+
}
|
|
36
56
|
WithData.decorators = [useAppThemeDecorator]
|
|
37
57
|
|
|
38
58
|
const WithError = Template.bind({})
|
|
@@ -68,7 +68,7 @@ export const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({
|
|
|
68
68
|
const Render: ComponentType<XyoPayloadRenderProps & TableCellProps> | undefined = payload
|
|
69
69
|
? resolver?.resolve(payload)?.components.table.cell
|
|
70
70
|
: undefined
|
|
71
|
-
return Render ? <Render payload={payload} {...props} /> :
|
|
71
|
+
return Render ? <Render payload={payload} {...props} /> : <TableCell key="payloads" align="left" {...props}></TableCell>
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
const icon: React.FC<TableCellProps> = (props) => {
|
|
@@ -87,12 +87,15 @@ export const PayloadDynamicTableRow: React.FC<PayloadDynamicTableRowProps> = ({
|
|
|
87
87
|
|
|
88
88
|
const valid: React.FC<TableCellProps> = (props) => (
|
|
89
89
|
<TableCell key="valid" align="center" {...props}>
|
|
90
|
-
{isValid === undefined ? (
|
|
90
|
+
{isValid === undefined && payload != undefined ? (
|
|
91
91
|
<WarningAmberRoundedIcon fontSize="small" color="warning" />
|
|
92
|
-
) : isValid ? (
|
|
92
|
+
) : isValid === true ? (
|
|
93
93
|
<CheckCircleOutlineRoundedIcon fontSize="small" color="success" />
|
|
94
|
-
) : (
|
|
94
|
+
) : isValid === false ? (
|
|
95
95
|
<ErrorOutlineRoundedIcon color="error" fontSize="small" />
|
|
96
|
+
) : (
|
|
97
|
+
//nbsp to keep row height consistent even when no data is provided for the row
|
|
98
|
+
<Typography> </Typography>
|
|
96
99
|
)}
|
|
97
100
|
</TableCell>
|
|
98
101
|
)
|
|
@@ -1,7 +1,26 @@
|
|
|
1
|
-
import
|
|
1
|
+
import FirstPageIcon from '@mui/icons-material/FirstPage'
|
|
2
|
+
import KeyboardArrowLeft from '@mui/icons-material/KeyboardArrowLeft'
|
|
3
|
+
import KeyboardArrowRight from '@mui/icons-material/KeyboardArrowRight'
|
|
4
|
+
import LastPageIcon from '@mui/icons-material/LastPage'
|
|
5
|
+
import {
|
|
6
|
+
Alert,
|
|
7
|
+
Box,
|
|
8
|
+
IconButton,
|
|
9
|
+
Table,
|
|
10
|
+
TableBody,
|
|
11
|
+
TableCell,
|
|
12
|
+
TableFooter,
|
|
13
|
+
TableHead,
|
|
14
|
+
TablePagination,
|
|
15
|
+
TableProps,
|
|
16
|
+
TableRow,
|
|
17
|
+
Typography,
|
|
18
|
+
useTheme,
|
|
19
|
+
} from '@mui/material'
|
|
2
20
|
import { useBreakpoint } from '@xylabs/react-shared'
|
|
3
21
|
import { XyoPayload, XyoPayloadWrapper } from '@xyo-network/payload'
|
|
4
22
|
import { XyoApiThrownErrorBoundary } from '@xyo-network/react-auth-service'
|
|
23
|
+
import { useState } from 'react'
|
|
5
24
|
|
|
6
25
|
import { PayloadDynamicTableRow } from './DynamicTableRow'
|
|
7
26
|
import { PayloadDynamicTableColumnConfig, payloadDynamicTableColumnConfigDefaults } from './PayloadDynamicTableColumnConfig'
|
|
@@ -14,6 +33,51 @@ export interface PayloadDynamicTableProps extends TableProps {
|
|
|
14
33
|
columns?: PayloadDynamicTableColumnConfig
|
|
15
34
|
}
|
|
16
35
|
|
|
36
|
+
interface TablePaginationActionsProps {
|
|
37
|
+
count: number
|
|
38
|
+
page: number
|
|
39
|
+
rowsPerPage: number
|
|
40
|
+
onPageChange: (event: React.MouseEvent<HTMLButtonElement>, newPage: number) => void
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
function TablePaginationActions(props: TablePaginationActionsProps) {
|
|
44
|
+
const theme = useTheme()
|
|
45
|
+
const { count, page, rowsPerPage, onPageChange } = props
|
|
46
|
+
|
|
47
|
+
const handleFirstPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
48
|
+
onPageChange(event, 0)
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const handleBackButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
52
|
+
onPageChange(event, page - 1)
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const handleNextButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
56
|
+
onPageChange(event, page + 1)
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const handleLastPageButtonClick = (event: React.MouseEvent<HTMLButtonElement>) => {
|
|
60
|
+
onPageChange(event, Math.max(0, Math.ceil(count / rowsPerPage) - 1))
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
return (
|
|
64
|
+
<Box sx={{ flexShrink: 0, ml: 2.5 }}>
|
|
65
|
+
<IconButton onClick={handleFirstPageButtonClick} disabled={page === 0} aria-label="first page">
|
|
66
|
+
{theme.direction === 'rtl' ? <LastPageIcon /> : <FirstPageIcon />}
|
|
67
|
+
</IconButton>
|
|
68
|
+
<IconButton onClick={handleBackButtonClick} disabled={page === 0} aria-label="previous page">
|
|
69
|
+
{theme.direction === 'rtl' ? <KeyboardArrowRight /> : <KeyboardArrowLeft />}
|
|
70
|
+
</IconButton>
|
|
71
|
+
<IconButton onClick={handleNextButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label="next page">
|
|
72
|
+
{theme.direction === 'rtl' ? <KeyboardArrowLeft /> : <KeyboardArrowRight />}
|
|
73
|
+
</IconButton>
|
|
74
|
+
<IconButton onClick={handleLastPageButtonClick} disabled={page >= Math.ceil(count / rowsPerPage) - 1} aria-label="last page">
|
|
75
|
+
{theme.direction === 'rtl' ? <FirstPageIcon /> : <LastPageIcon />}
|
|
76
|
+
</IconButton>
|
|
77
|
+
</Box>
|
|
78
|
+
)
|
|
79
|
+
}
|
|
80
|
+
|
|
17
81
|
export const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({
|
|
18
82
|
exploreDomain,
|
|
19
83
|
archive,
|
|
@@ -24,8 +88,23 @@ export const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({
|
|
|
24
88
|
...props
|
|
25
89
|
}) => {
|
|
26
90
|
const breakPoint = useBreakpoint()
|
|
91
|
+
const [page, setPage] = useState(0)
|
|
92
|
+
const [rowsPerPage, setRowsPerPage] = useState(5)
|
|
93
|
+
const payloadCount = payloads ? payloads.length : 0
|
|
94
|
+
// Avoid a layout jump when reaching the last page with empty rows.
|
|
95
|
+
const emptyRows = page > 0 ? Math.max(0, (1 + page) * rowsPerPage - payloadCount) : 0
|
|
96
|
+
|
|
97
|
+
const handleChangePage = (event: React.MouseEvent<HTMLButtonElement> | null, newPage: number) => {
|
|
98
|
+
setPage(newPage)
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
const handleChangeRowsPerPage = (event: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement>) => {
|
|
102
|
+
setRowsPerPage(parseInt(event.target.value, 10))
|
|
103
|
+
setPage(0)
|
|
104
|
+
}
|
|
105
|
+
|
|
27
106
|
return breakPoint ? (
|
|
28
|
-
<Table {...props}
|
|
107
|
+
<Table stickyHeader {...props}>
|
|
29
108
|
<TableHead>
|
|
30
109
|
<TableRow>
|
|
31
110
|
{columns[breakPoint]?.map((column, index) => {
|
|
@@ -39,8 +118,8 @@ export const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({
|
|
|
39
118
|
})}
|
|
40
119
|
</TableRow>
|
|
41
120
|
</TableHead>
|
|
42
|
-
<TableBody>
|
|
43
|
-
{payloads?.map((payload, index) => {
|
|
121
|
+
<TableBody sx={{ overflowY: 'scroll ' }}>
|
|
122
|
+
{payloads?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage).map((payload, index) => {
|
|
44
123
|
const wrapper = new XyoPayloadWrapper(payload)
|
|
45
124
|
return (
|
|
46
125
|
<XyoApiThrownErrorBoundary
|
|
@@ -67,7 +146,28 @@ export const PayloadDynamicTable: React.FC<PayloadDynamicTableProps> = ({
|
|
|
67
146
|
)
|
|
68
147
|
})}
|
|
69
148
|
{children}
|
|
149
|
+
{emptyRows > 0 && Array(emptyRows).fill(<PayloadDynamicTableRow />)}
|
|
70
150
|
</TableBody>
|
|
151
|
+
<TableFooter>
|
|
152
|
+
<TableRow>
|
|
153
|
+
<TablePagination
|
|
154
|
+
rowsPerPageOptions={[5, 10, 25, { label: 'All', value: -1 }]}
|
|
155
|
+
colSpan={5}
|
|
156
|
+
count={payloadCount}
|
|
157
|
+
rowsPerPage={rowsPerPage}
|
|
158
|
+
page={page}
|
|
159
|
+
SelectProps={{
|
|
160
|
+
inputProps: {
|
|
161
|
+
'aria-label': 'rows per page',
|
|
162
|
+
},
|
|
163
|
+
native: true,
|
|
164
|
+
}}
|
|
165
|
+
onPageChange={handleChangePage}
|
|
166
|
+
onRowsPerPageChange={handleChangeRowsPerPage}
|
|
167
|
+
ActionsComponent={TablePaginationActions}
|
|
168
|
+
/>
|
|
169
|
+
</TableRow>
|
|
170
|
+
</TableFooter>
|
|
71
171
|
</Table>
|
|
72
172
|
) : null
|
|
73
173
|
}
|
|
@@ -26,7 +26,41 @@ Default.args = {}
|
|
|
26
26
|
Default.decorators = [useAppThemeDecorator]
|
|
27
27
|
|
|
28
28
|
const WithData = Template.bind({})
|
|
29
|
-
WithData.args = {
|
|
29
|
+
WithData.args = {
|
|
30
|
+
payloads: [
|
|
31
|
+
samplePayload,
|
|
32
|
+
samplePayload,
|
|
33
|
+
samplePayload,
|
|
34
|
+
samplePayload,
|
|
35
|
+
samplePayload,
|
|
36
|
+
samplePayload,
|
|
37
|
+
samplePayload,
|
|
38
|
+
samplePayload,
|
|
39
|
+
samplePayload,
|
|
40
|
+
samplePayload,
|
|
41
|
+
samplePayload,
|
|
42
|
+
samplePayload,
|
|
43
|
+
samplePayload,
|
|
44
|
+
samplePayload,
|
|
45
|
+
samplePayload,
|
|
46
|
+
samplePayload,
|
|
47
|
+
samplePayload,
|
|
48
|
+
samplePayload,
|
|
49
|
+
samplePayload,
|
|
50
|
+
samplePayload,
|
|
51
|
+
samplePayload,
|
|
52
|
+
samplePayload,
|
|
53
|
+
samplePayload,
|
|
54
|
+
samplePayload,
|
|
55
|
+
samplePayload,
|
|
56
|
+
samplePayload,
|
|
57
|
+
samplePayload,
|
|
58
|
+
samplePayload,
|
|
59
|
+
samplePayload,
|
|
60
|
+
samplePayload,
|
|
61
|
+
samplePayload,
|
|
62
|
+
],
|
|
63
|
+
}
|
|
30
64
|
WithData.decorators = [useAppThemeDecorator]
|
|
31
65
|
|
|
32
66
|
const WithError = Template.bind({})
|