@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.
Files changed (34) hide show
  1. package/dist/cjs/components/DynamicTable/DynamicTableRow.d.ts.map +1 -1
  2. package/dist/cjs/components/DynamicTable/DynamicTableRow.js +4 -2
  3. package/dist/cjs/components/DynamicTable/DynamicTableRow.js.map +1 -1
  4. package/dist/cjs/components/DynamicTable/Table.d.ts.map +1 -1
  5. package/dist/cjs/components/DynamicTable/Table.js +42 -3
  6. package/dist/cjs/components/DynamicTable/Table.js.map +1 -1
  7. package/dist/cjs/components/Table/Table.d.ts +1 -1
  8. package/dist/cjs/components/Table/Table.d.ts.map +1 -1
  9. package/dist/cjs/components/Table/Table.js +46 -3
  10. package/dist/cjs/components/Table/Table.js.map +1 -1
  11. package/dist/cjs/components/Table/TableRow.d.ts.map +1 -1
  12. package/dist/cjs/components/Table/TableRow.js +6 -2
  13. package/dist/cjs/components/Table/TableRow.js.map +1 -1
  14. package/dist/docs.json +40 -40
  15. package/dist/esm/components/DynamicTable/DynamicTableRow.d.ts.map +1 -1
  16. package/dist/esm/components/DynamicTable/DynamicTableRow.js +4 -2
  17. package/dist/esm/components/DynamicTable/DynamicTableRow.js.map +1 -1
  18. package/dist/esm/components/DynamicTable/Table.d.ts.map +1 -1
  19. package/dist/esm/components/DynamicTable/Table.js +43 -4
  20. package/dist/esm/components/DynamicTable/Table.js.map +1 -1
  21. package/dist/esm/components/Table/Table.d.ts +1 -1
  22. package/dist/esm/components/Table/Table.d.ts.map +1 -1
  23. package/dist/esm/components/Table/Table.js +47 -4
  24. package/dist/esm/components/Table/Table.js.map +1 -1
  25. package/dist/esm/components/Table/TableRow.d.ts.map +1 -1
  26. package/dist/esm/components/Table/TableRow.js +7 -3
  27. package/dist/esm/components/Table/TableRow.js.map +1 -1
  28. package/package.json +12 -12
  29. package/src/components/DynamicTable/DynamicTable.stories.tsx +21 -1
  30. package/src/components/DynamicTable/DynamicTableRow.tsx +7 -4
  31. package/src/components/DynamicTable/Table.tsx +104 -4
  32. package/src/components/Table/Table.stories.tsx +35 -1
  33. package/src/components/Table/Table.tsx +95 -4
  34. 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 }) : null;
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" })) }, "valid"));
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":"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"}
1
+ {"version":3,"file":"DynamicTableRow.js","sourceRoot":"","sources":["../../../../src/components/DynamicTable/DynamicTableRow.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Table.d.ts","sourceRoot":"","sources":["../../../../src/components/DynamicTable/Table.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAiD,UAAU,EAAwB,MAAM,eAAe,CAAA;AAE/G,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAIpE,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;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAwDlE,CAAA"}
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 { Alert, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@mui/material';
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
- return breakPoint ? (_jsxs(Table, { ...props, stickyHeader: true, children: [_jsx(TableHead, { children: _jsx(TableRow, { children: columns[breakPoint]?.map((column, index) => {
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] })] })) : null;
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,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAc,QAAQ,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC/G,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAE3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,EAAmC,uCAAuC,EAAE,MAAM,mCAAmC,CAAA;AAU5H,MAAM,CAAC,MAAM,mBAAmB,GAAuC,CAAC,EACtE,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,uCAAuC,EAAE,EACnD,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,UAAU,CAAC,CAAC,CAAC,CAClB,MAAC,KAAK,OAAK,KAAK,EAAE,YAAY,mBAC5B,KAAC,SAAS,cACR,KAAC,QAAQ,cACN,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBAC1C,OAAO,CACL,KAAC,SAAS,IAAa,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,YAC3E,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAC/B,MAAM,CAAC,IAAI,GACD,IAHC,KAAK,CAIT,CACb,CAAA;oBACH,CAAC,CAAC,GACO,GACD,EACZ,MAAC,SAAS,eACP,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;wBAChC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;wBAC9C,OAAO,CACL,KAAC,yBAAyB,IAExB,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,KAAK,IAAC,QAAQ,EAAC,OAAO,wCACE,KAAC,UAAU,IAAC,UAAU,EAAC,MAAM,YAAE,CAAC,CAAC,OAAO,GAAc,IACvE,CACT,YAED,KAAC,sBAAsB,IACrB,OAAO,EAAE,OAAO,EAChB,OAAO,EACL,UAAU;oCACR,CAAC,CAAC,GAAG,EAAE;wCACH,UAAU,CAAC,OAAO,CAAC,CAAA;oCACrB,CAAC;oCACH,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,GAChB,IAlBG,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAmBL,CAC7B,CAAA;oBACH,CAAC,CAAC,EACD,QAAQ,IACC,IACN,CACT,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA"}
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":";AAAA,OAAO,EAAiD,UAAU,EAAwB,MAAM,eAAe,CAAA;AAE/G,OAAO,EAAE,UAAU,EAAqB,MAAM,sBAAsB,CAAA;AAGpE,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;AAED,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CAwDpD,CAAA"}
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 { Alert, Table, TableBody, TableCell, TableHead, TableRow, Typography } from '@mui/material';
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
- return breakPoint ? (_jsxs(Table, { ...props, children: [_jsx(TableHead, { children: _jsx(TableRow, { children: columns[breakPoint]?.map((column, index) => {
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] })] })) : null;
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/G,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAc,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACpE,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAA;AAE3E,OAAO,EAAE,kBAAkB,EAA4B,gCAAgC,EAAE,MAAM,4BAA4B,CAAA;AAC3H,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAU5C,MAAM,CAAC,MAAM,YAAY,GAAgC,CAAC,EACxD,aAAa,EACb,OAAO,EACP,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,GAAG,gCAAgC,EAAE,EAC5C,GAAG,KAAK,EACT,EAAE,EAAE;IACH,MAAM,UAAU,GAAG,aAAa,EAAE,CAAA;IAClC,OAAO,UAAU,CAAC,CAAC,CAAC,CAClB,MAAC,KAAK,OAAK,KAAK,aACd,KAAC,SAAS,cACR,KAAC,QAAQ,cACN,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;wBAC1C,OAAO,CACL,KAAC,SAAS,IAAa,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,YACpG,KAAC,UAAU,IAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBAC/B,kBAAkB,CAAC,MAAM,CAAC,GAChB,IAHC,KAAK,CAIT,CACb,CAAA;oBACH,CAAC,CAAC,GACO,GACD,EACZ,MAAC,SAAS,eACP,QAAQ,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;wBAChC,MAAM,OAAO,GAAG,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAA;wBAC9C,OAAO,CACL,KAAC,yBAAyB,IAExB,cAAc,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CACrB,MAAC,KAAK,IAAC,QAAQ,EAAC,OAAO,wCACE,KAAC,UAAU,IAAC,UAAU,EAAC,MAAM,YAAE,CAAC,CAAC,OAAO,GAAc,IACvE,CACT,YAED,KAAC,eAAe,IACd,OAAO,EAAE,OAAO,EAChB,OAAO,EACL,UAAU;oCACR,CAAC,CAAC,GAAG,EAAE;wCACH,UAAU,CAAC,OAAO,CAAC,CAAA;oCACrB,CAAC;oCACH,CAAC,CAAC,SAAS,EAEf,aAAa,EAAE,aAAa,EAC5B,OAAO,EAAE,OAAO,GAChB,IAlBG,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,EAAE,CAmBL,CAC7B,CAAA;oBACH,CAAC,CAAC,EACD,QAAQ,IACC,IACN,CACT,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,CAAA"}
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":";AAAA,OAAO,EAAuC,aAAa,EAAc,MAAM,eAAe,CAAA;AAE9F,OAAO,EAAE,UAAU,EAA0C,MAAM,sBAAsB,CAAA;AAKzF,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,CA8D1D,CAAA"}
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 { TableCell, TableRow, Typography } from '@mui/material';
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: _jsx(Typography, { fontFamily: "monospace", variant: "body2", noWrap: true, children: isValid === undefined ? (_jsx(MdDone, { fontSize: 18, color: "yellow" })) : isValid ? (_jsx(MdDone, { fontSize: 18, color: "green" })) : (_jsx(MdClear, { color: "red", fontSize: 18 })) }) }, "valid"));
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;AAC9F,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,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEhD,OAAO,EAA4B,gCAAgC,EAA0B,MAAM,4BAA4B,CAAA;AAU/H,MAAM,CAAC,MAAM,eAAe,GAAmC,CAAC,EAC9D,aAAa,EACb,OAAO,EAAE,WAAW,EACpB,OAAO,EACP,OAAO,EACP,OAAO,GAAG,gCAAgC,EAAE,EAC5C,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;IAEhC,MAAM,IAAI,GAA6B,CAAC,KAAK,EAAE,EAAE,CAAC,CAChD,KAAC,aAAa,IAEZ,OAAO,EAAE,OAAO,EAChB,KAAK,EAAC,MAAM,EACZ,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,QAAQ,KAAK,KAAK,YAChD,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,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,YAC7C,KAAC,UAAU,IAAC,UAAU,EAAC,WAAW,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,kBACtD,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,CACvB,KAAC,MAAM,IAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAC,QAAQ,GAAG,CACxC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CACZ,KAAC,MAAM,IAAC,QAAQ,EAAE,EAAE,EAAE,KAAK,EAAC,OAAO,GAAG,CACvC,CAAC,CAAC,CAAC,CACF,KAAC,OAAO,IAAC,KAAK,EAAC,KAAK,EAAC,QAAQ,EAAE,EAAE,GAAI,CACtC,GACU,IATA,OAAO,CAUV,CACb,CAAA;IAED,MAAM,UAAU,GAA6D;QAC3E,IAAI;QACJ,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,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAA;QAC/B,CAAC,CAAC,GACO,CACZ,CAAC,CAAC,CAAC,IAAI,CAAA;AACV,CAAC,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.0",
14
- "@emotion/styled": "^11.10.0",
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.14",
18
- "@xyo-network/payload": "^2.29.0",
19
- "@xyo-network/react-auth-service": "^2.31.4",
20
- "@xyo-network/react-crypto-market-uniswap-plugin": "^2.31.4",
21
- "@xyo-network/react-network": "^2.31.4",
22
- "@xyo-network/react-payload-plugin": "^2.31.4",
23
- "@xyo-network/react-shared": "^2.31.4",
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.163",
34
- "@xyo-network/react-storybook": "^2.31.4"
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.4"
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 = { payloads: [samplePayload, sampleUniswapPayload, sampleCoinGeckoPayload, samplePayload, sampleUniswapPayload] }
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} /> : null
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> &nbsp;</Typography>
96
99
  )}
97
100
  </TableCell>
98
101
  )
@@ -1,7 +1,26 @@
1
- import { Alert, Table, TableBody, TableCell, TableHead, TableProps, TableRow, Typography } from '@mui/material'
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} stickyHeader>
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 = { payloads: [samplePayload, samplePayload] }
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({})