mui-universal-table 1.0.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/LICENSE +21 -0
- package/README.md +159 -0
- package/dist/index.esm.js +1134 -0
- package/dist/index.esm.js.map +1 -0
- package/dist/index.js +1139 -0
- package/dist/index.js.map +1 -0
- package/package.json +99 -0
- package/src/index.d.ts +75 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/components/LazyLoadingIndicator.jsx","../src/utils/tableUtils.js","../src/hooks/useSearchableRows.js","../src/hooks/useSelectableRows.js","../src/components/TableSelectionBanner.jsx","../src/components/TableTitle.jsx","../src/components/ReloadBtn.jsx","../src/components/FancySearch.jsx","../src/components/SearchArea.jsx","../src/components/TableToolbarContent.jsx","../src/hooks/useEnhancedTableState.js","../src/components/EnhancedTableHead.jsx","../src/components/SubTableRow.jsx","../src/components/DataRow.jsx","../src/components/TableLoader.jsx","../src/components/EnhancedTable.jsx","../src/UniversalTable.jsx"],"sourcesContent":["import React from \"react\";\r\nimport { Box, LinearProgress, Typography, Collapse } from \"@mui/material\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nconst LazyLoadingIndicator = ({ show, currentPage, totalPages }) => {\r\n return (\r\n <Collapse in={show} timeout=\"auto\" unmountOnExit>\r\n <Box sx={{ width: \"100%\", p: 2 }}>\r\n <Typography variant=\"body2\" color=\"text.secondary\" sx={{ mb: 1 }}>\r\n Loading page {currentPage} of {totalPages}...\r\n </Typography>\r\n <LinearProgress\r\n variant=\"determinate\"\r\n value={(currentPage / totalPages) * 100}\r\n />\r\n </Box>\r\n </Collapse>\r\n );\r\n};\r\n\r\nLazyLoadingIndicator.propTypes = {\r\n show: PropTypes.bool.isRequired,\r\n currentPage: PropTypes.number,\r\n totalPages: PropTypes.number,\r\n};\r\n\r\nexport default LazyLoadingIndicator;\r\n","/**\r\n * Standard visually-hidden style: content is accessible to screen readers\r\n * but invisible on screen. Defined locally to avoid importing from\r\n * @mui/utils which is not a declared peer dependency.\r\n */\r\nexport const visuallyHidden = {\r\n border: 0,\r\n clip: \"rect(0 0 0 0)\",\r\n height: \"1px\",\r\n margin: -1,\r\n overflow: \"hidden\",\r\n padding: 0,\r\n position: \"absolute\",\r\n whiteSpace: \"nowrap\",\r\n width: \"1px\",\r\n};\r\n\r\nexport function getSelectableRowId(row, index, selectID) {\r\n return selectID ? row[selectID] : index;\r\n}\r\n\r\nexport function getSearchableColumnIds(headers) {\r\n return headers\r\n .filter((column) => column.searchable)\r\n .map((column) => column.id);\r\n}\r\n\r\nexport function filterRows(data, searchTerm, filterOptions) {\r\n if (!searchTerm) {\r\n return data;\r\n }\r\n\r\n const term = searchTerm.toLocaleLowerCase();\r\n return data.filter((row) =>\r\n filterOptions.some((filterOption) =>\r\n String(row[filterOption]).toLocaleLowerCase().includes(term),\r\n ),\r\n );\r\n}\r\n\r\nexport function getPageOptions(rowCount) {\r\n if (rowCount <= 5) return [5];\r\n if (rowCount <= 10) return [5, rowCount];\r\n if (rowCount <= 25) return [5, 10, rowCount];\r\n if (rowCount < 50) return [5, 10, 25, rowCount];\r\n if (rowCount < 100) return [5, 10, 25, 50, rowCount];\r\n return [5, 10, 25, 50, 100, rowCount];\r\n}\r\n\r\nexport function splitHeaders(headers) {\r\n return headers.reduce(\r\n (groups, header) => {\r\n if (header.subRow) {\r\n groups.subTables.push(header);\r\n } else {\r\n groups.columns.push(header);\r\n }\r\n\r\n return groups;\r\n },\r\n { subTables: [], columns: [] },\r\n );\r\n}\r\n\r\nexport function descendingComparator(a, b, orderBy) {\r\n if (b[orderBy] < a[orderBy]) {\r\n return -1;\r\n }\r\n if (b[orderBy] > a[orderBy]) {\r\n return 1;\r\n }\r\n return 0;\r\n}\r\n\r\nexport function getComparator(order, orderBy) {\r\n return order === \"desc\"\r\n ? (a, b) => descendingComparator(a, b, orderBy)\r\n : (a, b) => -descendingComparator(a, b, orderBy);\r\n}\r\n\r\n/**\r\n * Format a cell value for display. Handles dates safely:\r\n * returns the raw value for non-date headers, and a formatted\r\n * date string for date headers (guards against invalid dates).\r\n *\r\n * Uses `new Date(raw)` directly rather than `Date.parse(raw)` to\r\n * handle epoch-millisecond numbers, Date objects, and string\r\n * formats that Date.parse may reject.\r\n */\r\nexport function formatCellValue(header, rowValues) {\r\n const raw = rowValues[header.id];\r\n if (!header.date) {\r\n return raw;\r\n }\r\n\r\n // null and undefined produce a valid epoch-0 Date, not Invalid Date\r\n if (raw === null || raw === undefined) {\r\n return raw;\r\n }\r\n\r\n const d = new Date(raw);\r\n if (Number.isNaN(d.getTime())) {\r\n return raw;\r\n }\r\n\r\n return d.toDateString() + \" \" + d.toLocaleTimeString(\"en-US\", {\r\n hour: \"numeric\",\r\n minute: \"2-digit\",\r\n hour12: true,\r\n });\r\n}\r\n\r\nexport function stableSort(array, comparator, headers) {\r\n const dateColumns = new Set(\r\n headers.filter((object) => object.date).map((value) => value.id),\r\n );\r\n\r\n // Build stable entries — compare pre-computed sort keys so we never\r\n // mutate the original data or its shallow copies.\r\n // Each entry is [originalRow, sortKey, index] so that the comparator\r\n // works on numeric-converted date values while the original rows are\r\n // returned unchanged (preserving the data seen by header.component).\r\n const stabilizedThis = array.map((el, index) => {\r\n const sortKey = { ...el };\r\n for (const property in sortKey) {\r\n if (dateColumns.has(property)) {\r\n const parsed = Number(new Date(sortKey[property]));\r\n // Preserve the original value for invalid dates so formatCellValue\r\n // can display the fallback instead of passing NaN to React children.\r\n if (!Number.isNaN(parsed)) {\r\n sortKey[property] = parsed;\r\n }\r\n }\r\n }\r\n return [el, sortKey, index];\r\n });\r\n\r\n stabilizedThis.sort((a, b) => {\r\n const order = comparator(a[1], b[1]);\r\n if (order !== 0) return order;\r\n return a[2] - b[2];\r\n });\r\n return stabilizedThis.map((el) => el[0]);\r\n}\r\n\r\n\r\n","import React from \"react\";\r\nimport { getSearchableColumnIds, filterRows } from \"../utils/tableUtils\";\r\n\r\nexport default function useSearchableRows(data, headers) {\r\n const [searchTerm, setSearchTerm] = React.useState(\"\");\r\n\r\n const filterOptions = React.useMemo(\r\n () => getSearchableColumnIds(headers),\r\n [headers],\r\n );\r\n\r\n const rows = React.useMemo(\r\n () => filterRows(data, searchTerm, filterOptions),\r\n [data, filterOptions, searchTerm],\r\n );\r\n\r\n return {\r\n rows,\r\n searchTerm,\r\n setSearchTerm,\r\n };\r\n}\r\n","import React from \"react\";\r\nimport { getSelectableRowId } from \"../utils/tableUtils\";\r\n\r\nexport default function useSelectableRows({ rows, selectRows, selectID }) {\r\n const [selected, setSelected] = React.useState([]);\r\n\r\n const clearSelection = React.useCallback(() => {\r\n setSelected([]);\r\n }, []);\r\n\r\n const handleSelectAllClick = React.useCallback(\r\n (event) => {\r\n if (!event.target.checked) {\r\n setSelected([]);\r\n return;\r\n }\r\n\r\n const newSelected = rows.map((row, index) =>\r\n getSelectableRowId(row, index, selectID),\r\n );\r\n setSelected(newSelected);\r\n },\r\n [rows, selectID],\r\n );\r\n\r\n const handleClick = React.useCallback(\r\n (event, id) => {\r\n if (!selectRows) {\r\n return;\r\n }\r\n\r\n setSelected((previous) =>\r\n previous.includes(id)\r\n ? previous.filter((selectedId) => selectedId !== id)\r\n : [...previous, id],\r\n );\r\n },\r\n [selectRows],\r\n );\r\n\r\n return {\r\n selected,\r\n clearSelection,\r\n handleSelectAllClick,\r\n handleClick,\r\n };\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Box, Collapse, IconButton, Typography } from \"@mui/material\";\r\nimport { alpha } from \"@mui/material/styles\";\r\nimport { Task } from \"@mui/icons-material\";\r\n\r\nfunction TableSelectionBanner({ selected, onSelection, selectIcon }) {\r\n return (\r\n <Collapse in={selected.length > 0} unmountOnExit>\r\n <Box\r\n sx={{\r\n p: 2,\r\n display: \"flex\",\r\n justifyContent: \"space-between\",\r\n bgcolor: (theme) =>\r\n alpha(\r\n theme.palette.primary.main,\r\n theme.palette.action.activatedOpacity,\r\n ),\r\n borderRadius: 1,\r\n borderBottomLeftRadius: 0,\r\n borderBottomRightRadius: 0,\r\n }}\r\n >\r\n <Typography variant=\"h6\" id=\"tableTitle\" component=\"div\">\r\n {selected.length} selected\r\n </Typography>\r\n\r\n <IconButton onClick={() => onSelection(selected)}>\r\n {selectIcon || <Task />}\r\n </IconButton>\r\n </Box>\r\n </Collapse>\r\n );\r\n}\r\n\r\nTableSelectionBanner.propTypes = {\r\n selected: PropTypes.array.isRequired,\r\n onSelection: PropTypes.func,\r\n selectIcon: PropTypes.element,\r\n};\r\n\r\nexport default TableSelectionBanner;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Typography } from \"@mui/material\";\r\n\r\nfunction TableTitle({ name, subTable }) {\r\n return (\r\n <Typography\r\n variant={subTable ? \"h6\" : \"h5\"}\r\n color={subTable ? \"secondary\" : \"primary\"}\r\n sx={{ p: 2 }}\r\n >\r\n {name}\r\n </Typography>\r\n );\r\n}\r\n\r\nTableTitle.propTypes = {\r\n name: PropTypes.string,\r\n subTable: PropTypes.bool,\r\n};\r\n\r\nexport default TableTitle;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Button, Tooltip } from \"@mui/material\";\r\nimport RefreshIcon from \"@mui/icons-material/Refresh\";\r\n\r\nfunction ReloadBtn({ setLoading, loading, onReload }) {\r\n const canReload = typeof onReload === \"function\" || typeof setLoading === \"function\";\r\n\r\n if (!canReload) {\r\n return null;\r\n }\r\n\r\n const handleClick = () => {\r\n if (typeof onReload === \"function\") {\r\n onReload();\r\n } else if (typeof setLoading === \"function\") {\r\n setLoading(true);\r\n }\r\n };\r\n\r\n return (\r\n <Tooltip title=\"Reload\">\r\n <Button\r\n variant=\"contained\"\r\n color=\"primary\"\r\n onClick={handleClick}\r\n disabled={loading}\r\n >\r\n <RefreshIcon />\r\n </Button>\r\n </Tooltip>\r\n );\r\n}\r\n\r\nReloadBtn.propTypes = {\r\n setLoading: PropTypes.func,\r\n loading: PropTypes.bool,\r\n /** Preferred callback — fires when the user clicks reload. */\r\n onReload: PropTypes.func,\r\n};\r\n\r\nexport default ReloadBtn;\r\n","import React from \"react\";\r\nimport {\r\n Collapse,\r\n Divider,\r\n IconButton,\r\n InputBase,\r\n Paper,\r\n Stack,\r\n} from \"@mui/material\";\r\nimport { Clear, Search } from \"@mui/icons-material\";\r\nimport PropTypes from \"prop-types\";\r\n\r\nexport default function FancySearch({ value, onSubmit }) {\r\n const [search, setSearch] = React.useState(value);\r\n const [hover, setHover] = React.useState(Boolean(search));\r\n const expanded = hover || Boolean(search);\r\n\r\n const handleSubmit = (e) => {\r\n e.preventDefault();\r\n onSubmit(search);\r\n };\r\n\r\n const handleEndHover = () => {\r\n setHover(false);\r\n };\r\n\r\n // Sync internal state when the parent clears/changes the search term.\r\n // A ref tracks whether this sync came from the user typing or from a parent\r\n // update, so the debounce only fires for genuine user input.\r\n const isUserType = React.useRef(false);\r\n\r\n React.useEffect(() => {\r\n if (isUserType.current) {\r\n // User is typing — debounce as normal\r\n isUserType.current = false;\r\n const timer = setTimeout(() => {\r\n onSubmit(search);\r\n }, 700);\r\n return () => clearTimeout(timer);\r\n }\r\n // External value change (parent reset, clear from clearSelection, etc.)\r\n // — sync state and do NOT fire a stale debounce.\r\n setSearch(value);\r\n return undefined;\r\n }, [search, value, onSubmit]);\r\n\r\n return (\r\n <form onSubmit={handleSubmit}>\r\n <Paper\r\n elevation={0}\r\n sx={{\r\n borderRadius: expanded ? \"24px\" : \"50px\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n transition: \"all 0.5s ease-in-out\",\r\n p: expanded ? 1 : 0.5,\r\n width: \"fit-content\",\r\n border: (theme) => `1px solid ${theme.palette.divider}`,\r\n mb: 1,\r\n }}\r\n onMouseEnter={() => setHover(true)}\r\n onMouseLeave={handleEndHover}\r\n onKeyDown={(e) => e.key === \"Enter\" && handleSubmit(e)}\r\n >\r\n <InputBase\r\n placeholder=\"Search\"\r\n value={search}\r\n onChange={(e) => {\r\n isUserType.current = true;\r\n setSearch(e.target.value);\r\n }}\r\n sx={{\r\n ml: 1,\r\n width: expanded ? \"100%\" : 0,\r\n transition: \"width 0.5s ease-in-out\",\r\n ...(expanded ? {} : { margin: 0 }),\r\n }}\r\n onBlur={handleEndHover}\r\n />\r\n\r\n <Collapse\r\n in={Boolean(search)}\r\n orientation=\"horizontal\"\r\n unmountOnExit\r\n >\r\n <Stack\r\n direction=\"row\"\r\n alignItems=\"center\"\r\n spacing={0}\r\n sx={{ mr: 3 }}\r\n >\r\n <IconButton\r\n onClick={() => {\r\n isUserType.current = false;\r\n setSearch(\"\");\r\n // Immediately clear instead of waiting for the debounce\r\n onSubmit(\"\");\r\n }}\r\n >\r\n <Clear />\r\n </IconButton>\r\n <Divider orientation=\"vertical\" flexItem />\r\n </Stack>\r\n </Collapse>\r\n\r\n <IconButton onClick={handleSubmit} type=\"submit\">\r\n <Search />\r\n </IconButton>\r\n </Paper>\r\n </form>\r\n );\r\n}\r\n\r\nFancySearch.propTypes = {\r\n value: PropTypes.string,\r\n onSubmit: PropTypes.func.isRequired,\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport FancySearch from \"./FancySearch\";\r\n\r\nfunction SearchArea(props) {\r\n const { current, setFinalVal, searchName, persistSearch } = props;\r\n\r\n const searchVal = React.useMemo(() => {\r\n if (current !== undefined && current !== null) return current;\r\n if (persistSearch && searchName) {\r\n return sessionStorage.getItem(`searchVal:${searchName}`) ?? \"\";\r\n }\r\n return \"\";\r\n }, [current, persistSearch, searchName]);\r\n\r\n return (\r\n <div key=\"SearchArea\">\r\n <FancySearch value={searchVal} onSubmit={setFinalVal} />\r\n </div>\r\n );\r\n}\r\n\r\nSearchArea.propTypes = {\r\n current: PropTypes.string,\r\n setFinalVal: PropTypes.func.isRequired,\r\n searchName: PropTypes.string,\r\n /** Persist search term to sessionStorage (requires searchName). Default: false */\r\n persistSearch: PropTypes.bool,\r\n};\r\n\r\nexport default SearchArea;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Box, Stack, Toolbar } from \"@mui/material\";\r\nimport ReloadBtn from \"./ReloadBtn\";\r\nimport SearchArea from \"./SearchArea\";\r\n\r\nfunction TableToolbarContent({\r\n setLoading,\r\n onReload,\r\n reloadBtnLoading,\r\n searchTerm,\r\n onSearchChange,\r\n name,\r\n persistSearch,\r\n}) {\r\n return (\r\n <Toolbar\r\n sx={{\r\n pl: { sm: 2 },\r\n pr: { xs: 1, sm: 1 },\r\n pt: 2,\r\n }}\r\n >\r\n <Stack\r\n spacing={2}\r\n direction={{ xs: \"column\", md: \"row\" }}\r\n sx={{\r\n width: \"100%\",\r\n alignItems: { xs: \"flex-start\", md: \"center\" },\r\n }}\r\n >\r\n <Box sx={{ flex: \"1 1 100%\" }} id=\"tableTitle\">\r\n <ReloadBtn setLoading={setLoading} onReload={onReload} loading={reloadBtnLoading} />\r\n </Box>\r\n <SearchArea\r\n current={searchTerm}\r\n setFinalVal={onSearchChange}\r\n searchName={name}\r\n persistSearch={persistSearch}\r\n />\r\n </Stack>\r\n </Toolbar>\r\n );\r\n}\r\n\r\nTableToolbarContent.propTypes = {\r\n setLoading: PropTypes.func,\r\n onReload: PropTypes.func,\r\n reloadBtnLoading: PropTypes.bool,\r\n searchTerm: PropTypes.string,\r\n onSearchChange: PropTypes.func.isRequired,\r\n name: PropTypes.string,\r\n persistSearch: PropTypes.bool,\r\n};\r\n\r\nexport default TableToolbarContent;\r\n","import React from \"react\";\r\n\r\nexport default function useEnhancedTableState({ rows, subTable, resetFlag }) {\r\n const [order, setOrder] = React.useState(\"asc\");\r\n const [orderBy, setOrderBy] = React.useState(\"\");\r\n const [pagination, setPagination] = React.useState(() => ({\r\n page: 0,\r\n rowsPerPage: subTable ? rows.length : 5,\r\n resetFlag,\r\n }));\r\n\r\n React.useEffect(() => {\r\n // eslint-disable-next-line react-hooks/set-state-in-effect\r\n setPagination((previous) => {\r\n if (previous.resetFlag === resetFlag) {\r\n return previous;\r\n }\r\n\r\n return {\r\n ...previous,\r\n page: 0,\r\n resetFlag,\r\n };\r\n });\r\n }, [resetFlag]);\r\n\r\n const page = pagination.page;\r\n const rowsPerPage = subTable ? rows.length : pagination.rowsPerPage;\r\n\r\n const handleRequestSort = React.useCallback(\r\n (event, property) => {\r\n const isAsc = orderBy === property && order === \"asc\";\r\n setOrder(isAsc ? \"desc\" : \"asc\");\r\n setOrderBy(property);\r\n },\r\n [order, orderBy],\r\n );\r\n\r\n const handleChangePage = React.useCallback(\r\n (event, newPage) => {\r\n setPagination((previous) => ({\r\n ...previous,\r\n page: newPage,\r\n }));\r\n },\r\n [],\r\n );\r\n\r\n const handleChangeRowsPerPage = React.useCallback(\r\n (event) => {\r\n setPagination((previous) => ({\r\n ...previous,\r\n page: 0,\r\n rowsPerPage: Number.parseInt(event.target.value, 10),\r\n }));\r\n },\r\n [],\r\n );\r\n\r\n return {\r\n order,\r\n orderBy,\r\n page,\r\n rowsPerPage,\r\n handleRequestSort,\r\n handleChangePage,\r\n handleChangeRowsPerPage,\r\n };\r\n}\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport { Box, Checkbox, TableCell, TableHead, TableRow, TableSortLabel } from \"@mui/material\";\r\nimport { visuallyHidden } from \"../utils/tableUtils\";\r\n\r\nfunction EnhancedTableHead(props) {\r\n const {\r\n order,\r\n orderBy,\r\n onRequestSort,\r\n selectRows,\r\n numSelected,\r\n rowCount,\r\n onSelectAllClick,\r\n } = props;\r\n\r\n const createSortHandler = (property) => (event) => {\r\n onRequestSort(event, property);\r\n };\r\n\r\n return (\r\n <TableHead>\r\n <TableRow>\r\n {selectRows && (\r\n <TableCell padding=\"checkbox\">\r\n <Checkbox\r\n color=\"primary\"\r\n indeterminate={numSelected > 0 && numSelected < rowCount}\r\n checked={rowCount > 0 && numSelected === rowCount}\r\n onChange={onSelectAllClick}\r\n />\r\n </TableCell>\r\n )}\r\n {props.headings.map((headCell) => (\r\n <TableCell\r\n key={headCell.id}\r\n align={headCell.numeric ? \"right\" : \"left\"}\r\n padding=\"normal\"\r\n sortDirection={orderBy === headCell.id ? order : false}\r\n >\r\n <TableSortLabel\r\n active={orderBy === headCell.id}\r\n direction={orderBy === headCell.id ? order : \"asc\"}\r\n onClick={createSortHandler(headCell.id)}\r\n >\r\n {headCell.label}\r\n {orderBy === headCell.id ? (\r\n <Box component=\"span\" sx={visuallyHidden}>\r\n {order === \"desc\" ? \"sorted descending\" : \"sorted ascending\"}\r\n </Box>\r\n ) : undefined}\r\n </TableSortLabel>\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n </TableHead>\r\n );\r\n}\r\n\r\nEnhancedTableHead.propTypes = {\r\n onRequestSort: PropTypes.func.isRequired,\r\n order: PropTypes.oneOf([\"asc\", \"desc\"]).isRequired,\r\n orderBy: PropTypes.string.isRequired,\r\n headings: PropTypes.array.isRequired,\r\n selectRows: PropTypes.bool,\r\n numSelected: PropTypes.number,\r\n rowCount: PropTypes.number,\r\n onSelectAllClick: PropTypes.func,\r\n};\r\n\r\nexport default EnhancedTableHead;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {\r\n Badge,\r\n Box,\r\n Collapse,\r\n IconButton,\r\n TableCell,\r\n TableRow,\r\n Tooltip,\r\n} from \"@mui/material\";\r\nimport { AddCircle, RemoveCircle } from \"@mui/icons-material\";\r\n\r\n/**\r\n * Lazily import UniversalTable to statically break the circular dependency:\r\n * UniversalTable → EnhancedTable → DataRow → SubTableRow → UniversalTable\r\n * React.lazy resolves the import at render time, so the module graph stays acyclic.\r\n */\r\nconst UniversalTable = React.lazy(() => import(\"../UniversalTable\"));\r\n\r\n// ---------------------------------------------------------------------------\r\n// SubRowToggleCell\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function SubRowToggleCell({ header, isOpen, onToggle, rowValues, hideBadge }) {\r\n return (\r\n <TableCell>\r\n <Tooltip title={isOpen ? `Hide ${header.id}` : `Show ${header.id}`}>\r\n <Box>\r\n <IconButton\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n onToggle();\r\n }}\r\n disabled={rowValues[header.id].length === 0}\r\n color={header.iconColor || \"secondary\"}\r\n >\r\n <Badge\r\n badgeContent={rowValues[header.id].length}\r\n invisible={hideBadge}\r\n anchorOrigin={{\r\n vertical: \"bottom\",\r\n horizontal: \"right\",\r\n }}\r\n sx={{\r\n \"& .MuiBadge-badge\": {\r\n color: (theme) => theme.palette.text.primary,\r\n },\r\n }}\r\n >\r\n {isOpen\r\n ? header?.closeIcon || <RemoveCircle />\r\n : header?.openIcon || <AddCircle />}\r\n </Badge>\r\n </IconButton>\r\n </Box>\r\n </Tooltip>\r\n </TableCell>\r\n );\r\n}\r\n\r\nSubRowToggleCell.propTypes = {\r\n header: PropTypes.object.isRequired,\r\n isOpen: PropTypes.bool.isRequired,\r\n onToggle: PropTypes.func.isRequired,\r\n rowValues: PropTypes.object.isRequired,\r\n hideBadge: PropTypes.bool,\r\n};\r\n\r\n// ---------------------------------------------------------------------------\r\n// SubTableRow\r\n// ---------------------------------------------------------------------------\r\n\r\nexport function SubTableRow({ table, isOpen, rowValues, colSpan }) {\r\n return (\r\n <TableRow>\r\n <TableCell colSpan={colSpan} style={{ paddingBottom: 0, paddingTop: 0 }}>\r\n <Collapse in={isOpen} timeout=\"auto\" unmountOnExit>\r\n <React.Suspense fallback={null}>\r\n <UniversalTable\r\n loading={table.loading}\r\n setLoading={table.setLoading}\r\n onReload={table.onReload}\r\n data={rowValues[table.id]}\r\n headers={table.headers}\r\n name={table.subTitle}\r\n subTable\r\n />\r\n </React.Suspense>\r\n </Collapse>\r\n </TableCell>\r\n </TableRow>\r\n );\r\n}\r\n\r\nSubTableRow.propTypes = {\r\n table: PropTypes.object.isRequired,\r\n isOpen: PropTypes.bool.isRequired,\r\n rowValues: PropTypes.object.isRequired,\r\n colSpan: PropTypes.number.isRequired,\r\n};\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {\r\n Checkbox,\r\n TableCell,\r\n TableRow,\r\n} from \"@mui/material\";\r\nimport { SubRowToggleCell, SubTableRow } from \"./SubTableRow\";\r\nimport { splitHeaders, formatCellValue } from \"../utils/tableUtils\";\r\n\r\nfunction renderDataCells(headers, rowValues) {\r\n return headers.map((header, index) => (\r\n <TableCell key={header.id || index} {...header.cellProps}>\r\n {header.component\r\n ? header.component(rowValues)\r\n : formatCellValue(header, rowValues)}\r\n </TableCell>\r\n ));\r\n}\r\n\r\nconst DataRow = React.memo(function DataRow(props) {\r\n const { rowValues, headers, selectRows, isSelected, handleClick } = props;\r\n const { subTables, columns } = React.useMemo(() => splitHeaders(headers), [\r\n headers,\r\n ]);\r\n const hideBadge = props.hideBadge || false;\r\n const isItemSelected = isSelected(props.rowID);\r\n const [reveal, setReveal] = React.useState(\r\n Array.from({ length: subTables.length }).fill(false),\r\n );\r\n\r\n const toggleSubRow = React.useCallback((index) => {\r\n setReveal((previous) => {\r\n const next = [...previous];\r\n next[index] = !next[index];\r\n return next;\r\n });\r\n }, []);\r\n\r\n const handleRowKeyDown = React.useCallback(\r\n (event) => {\r\n if (selectRows && (event.key === \" \" || event.key === \"Enter\")) {\r\n event.preventDefault();\r\n handleClick(event, props.rowID);\r\n }\r\n },\r\n [selectRows, handleClick, props.rowID],\r\n );\r\n\r\n return (\r\n <>\r\n <TableRow\r\n tabIndex={selectRows ? 0 : -1}\r\n hover={selectRows}\r\n role={selectRows ? \"checkbox\" : \"row\"}\r\n selected={isItemSelected}\r\n aria-checked={isItemSelected}\r\n onKeyDown={handleRowKeyDown}\r\n >\r\n {selectRows && (\r\n <TableCell padding=\"checkbox\">\r\n <Checkbox\r\n color=\"primary\"\r\n checked={isItemSelected}\r\n onClick={(event) => handleClick(event, props.rowID)}\r\n />\r\n </TableCell>\r\n )}\r\n {subTables.map((header, index) => (\r\n <SubRowToggleCell\r\n key={header.id || index}\r\n header={header}\r\n isOpen={reveal[index]}\r\n onToggle={() => toggleSubRow(index)}\r\n rowValues={rowValues}\r\n hideBadge={hideBadge}\r\n />\r\n ))}\r\n {renderDataCells(columns, rowValues)}\r\n </TableRow>\r\n {subTables.map((table, index) => (\r\n <SubTableRow\r\n key={table.id || index}\r\n table={table}\r\n isOpen={reveal[index]}\r\n rowValues={rowValues}\r\n colSpan={props.headers.length + 1}\r\n />\r\n ))}\r\n </>\r\n );\r\n});\r\n\r\nDataRow.propTypes = {\r\n rowValues: PropTypes.object.isRequired,\r\n headers: PropTypes.array.isRequired,\r\n selectRows: PropTypes.bool,\r\n isSelected: PropTypes.func.isRequired,\r\n handleClick: PropTypes.func,\r\n hideBadge: PropTypes.bool,\r\n rowID: PropTypes.oneOfType([PropTypes.string, PropTypes.number]).isRequired,\r\n};\r\n\r\nexport default DataRow;\r\n","import React from \"react\";\r\nimport {\r\n TableBody,\r\n TableCell,\r\n TableRow,\r\n Skeleton,\r\n TableHead,\r\n} from \"@mui/material\";\r\n\r\nconst TableLoader = () => {\r\n return (\r\n <>\r\n <TableHead />\r\n <TableBody>\r\n {Array.from({ length: 5 }).map((_, index) => (\r\n <TableRow key={index}>\r\n {Array.from({ length: 4 }).map((_, cellIndex) => (\r\n <TableCell key={cellIndex}>\r\n <Skeleton height={30} />\r\n </TableCell>\r\n ))}\r\n </TableRow>\r\n ))}\r\n </TableBody>\r\n </>\r\n );\r\n};\r\n\r\nexport default TableLoader;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport {\r\n Box,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TablePagination,\r\n TableRow,\r\n} from \"@mui/material\";\r\nimport useEnhancedTableState from \"../hooks/useEnhancedTableState\";\r\nimport {\r\n getComparator,\r\n getPageOptions,\r\n getSelectableRowId,\r\n stableSort,\r\n} from \"../utils/tableUtils\";\r\nimport EnhancedTableHead from \"./EnhancedTableHead\";\r\nimport DataRow from \"./DataRow\";\r\nimport TableLoader from \"./TableLoader\";\r\n\r\nfunction EnhancedTable(props) {\r\n const { headers, rows, subTable, selected, selectID } = props;\r\n const dense = true;\r\n const {\r\n order,\r\n orderBy,\r\n page,\r\n rowsPerPage,\r\n handleRequestSort,\r\n handleChangePage,\r\n handleChangeRowsPerPage,\r\n } = useEnhancedTableState({\r\n rows,\r\n subTable,\r\n resetFlag: props.resetFlag,\r\n });\r\n\r\n const emptyRows = Math.max(\r\n 0,\r\n rowsPerPage - Math.min(rowsPerPage, rows.length - page * rowsPerPage),\r\n );\r\n\r\n const isSelected = React.useCallback(\r\n (id) => selected.includes(id),\r\n [selected],\r\n );\r\n\r\n const visibleRows = React.useMemo(\r\n () =>\r\n stableSort(rows, getComparator(order, orderBy), headers).slice(\r\n page * rowsPerPage,\r\n page * rowsPerPage + rowsPerPage,\r\n ),\r\n [headers, order, orderBy, page, rows, rowsPerPage],\r\n );\r\n\r\n return (\r\n <TableContainer>\r\n <Table\r\n sx={{ minWidth: 750 }}\r\n size={dense ? \"small\" : \"medium\"}\r\n aria-label={props.name || \"data table\"}\r\n >\r\n {props.loading ? (\r\n <TableLoader />\r\n ) : (\r\n <>\r\n <EnhancedTableHead\r\n order={order}\r\n orderBy={orderBy}\r\n onRequestSort={handleRequestSort}\r\n headings={headers}\r\n selectRows={props.selectRows}\r\n numSelected={selected.length}\r\n rowCount={rows.length}\r\n onSelectAllClick={props.handleSelectAllClick}\r\n />\r\n\r\n <TableBody>\r\n {visibleRows.map((row, index) => {\r\n const rowKey = selectID\r\n ? row[selectID]\r\n : `row-${page * rowsPerPage + index}`;\r\n const rowID = getSelectableRowId(row, index, selectID);\r\n\r\n return (\r\n <DataRow\r\n key={rowKey}\r\n rowID={rowID}\r\n headers={headers}\r\n rowValues={row}\r\n hideBadge={props.hideBadge}\r\n selectRows={props.selectRows}\r\n handleClick={props.handleClick}\r\n isSelected={isSelected}\r\n />\r\n );\r\n })}\r\n {!subTable && emptyRows > 0 && (\r\n <TableRow style={{ height: (dense ? 33 : 53) * emptyRows }}>\r\n <TableCell colSpan={headers.length} />\r\n </TableRow>\r\n )}\r\n </TableBody>\r\n </>\r\n )}\r\n </Table>\r\n {subTable ? (\r\n <Box sx={{ mb: 3 }} />\r\n ) : (\r\n <TablePagination\r\n rowsPerPageOptions={props.pageSizeOptions || getPageOptions(rows.length)}\r\n component=\"div\"\r\n count={rows.length}\r\n rowsPerPage={rowsPerPage}\r\n page={page}\r\n onPageChange={handleChangePage}\r\n onRowsPerPageChange={handleChangeRowsPerPage}\r\n sx={{ overflow: \"visible\" }}\r\n showFirstButton\r\n showLastButton\r\n />\r\n )}\r\n </TableContainer>\r\n );\r\n}\r\n\r\nEnhancedTable.propTypes = {\r\n headers: PropTypes.array.isRequired,\r\n rows: PropTypes.array.isRequired,\r\n subTable: PropTypes.bool,\r\n hideBadge: PropTypes.bool,\r\n loading: PropTypes.bool,\r\n selectRows: PropTypes.bool,\r\n handleSelectAllClick: PropTypes.func,\r\n handleClick: PropTypes.func,\r\n selected: PropTypes.array,\r\n selectID: PropTypes.string,\r\n resetFlag: PropTypes.string,\r\n pageSizeOptions: PropTypes.arrayOf(PropTypes.number),\r\n name: PropTypes.string,\r\n};\r\n\r\nexport default EnhancedTable;\r\n","import React from \"react\";\r\nimport PropTypes from \"prop-types\";\r\nimport Paper from \"@mui/material/Paper\";\r\nimport LazyLoadingIndicator from \"./components/LazyLoadingIndicator\";\r\nimport useSearchableRows from \"./hooks/useSearchableRows\";\r\nimport useSelectableRows from \"./hooks/useSelectableRows\";\r\nimport TableSelectionBanner from \"./components/TableSelectionBanner\";\r\nimport TableTitle from \"./components/TableTitle\";\r\nimport TableToolbarContent from \"./components/TableToolbarContent\";\r\nimport EnhancedTable from \"./components/EnhancedTable\";\r\n\r\nexport default function UniversalTable({\r\n loading,\r\n setLoading,\r\n onReload,\r\n lazyloading = false,\r\n currentPage,\r\n totalPages,\r\n data,\r\n headers,\r\n name,\r\n reloadBtnLoading,\r\n subTable = false,\r\n hideBadge = false,\r\n selectRows = false,\r\n selectID,\r\n selectIcon,\r\n onSelection,\r\n pageSizeOptions,\r\n persistSearch,\r\n}) {\r\n const head = headers || [];\r\n const { rows, searchTerm, setSearchTerm } = useSearchableRows(data, head);\r\n const { selected, clearSelection, handleSelectAllClick, handleClick } =\r\n useSelectableRows({\r\n rows,\r\n selectRows,\r\n selectID,\r\n });\r\n\r\n const handleSearchChange = React.useCallback(\r\n (value) => {\r\n clearSelection();\r\n setSearchTerm(value);\r\n },\r\n [clearSelection, setSearchTerm],\r\n );\r\n\r\n return (\r\n <>\r\n <LazyLoadingIndicator\r\n show={lazyloading}\r\n currentPage={currentPage}\r\n totalPages={totalPages}\r\n />\r\n <Paper\r\n sx={{\r\n ...(subTable && { boxShadow: \"none\" }),\r\n }}\r\n >\r\n <TableSelectionBanner\r\n selected={selected}\r\n onSelection={onSelection}\r\n selectIcon={selectIcon}\r\n />\r\n <TableTitle name={name} subTable={subTable} />\r\n {!subTable && (\r\n <TableToolbarContent\r\n setLoading={setLoading}\r\n onReload={onReload}\r\n reloadBtnLoading={reloadBtnLoading}\r\n searchTerm={searchTerm}\r\n onSearchChange={handleSearchChange}\r\n name={name}\r\n persistSearch={persistSearch}\r\n />\r\n )}\r\n <EnhancedTable\r\n headers={head}\r\n rows={rows}\r\n resetFlag={searchTerm}\r\n subTable={subTable}\r\n hideBadge={hideBadge}\r\n loading={loading}\r\n selectRows={selectRows}\r\n handleSelectAllClick={handleSelectAllClick}\r\n handleClick={handleClick}\r\n selected={selected}\r\n selectID={selectID}\r\n pageSizeOptions={pageSizeOptions}\r\n name={name}\r\n />\r\n </Paper>\r\n </>\r\n );\r\n}\r\n\r\nUniversalTable.propTypes = {\r\n loading: PropTypes.bool,\r\n setLoading: PropTypes.func,\r\n /** Preferred callback — fires when the user clicks reload. */\r\n onReload: PropTypes.func,\r\n lazyloading: PropTypes.bool,\r\n currentPage: PropTypes.number,\r\n totalPages: PropTypes.number,\r\n data: PropTypes.array.isRequired,\r\n headers: PropTypes.array.isRequired,\r\n name: PropTypes.string,\r\n reloadBtnLoading: PropTypes.bool,\r\n subTable: PropTypes.bool,\r\n hideBadge: PropTypes.bool,\r\n selectRows: PropTypes.bool,\r\n selectID: PropTypes.string,\r\n selectIcon: PropTypes.element,\r\n onSelection: PropTypes.func,\r\n /** Override default page size options (e.g. [10, 25, 50]). Default auto-computed. */\r\n pageSizeOptions: PropTypes.arrayOf(PropTypes.number),\r\n /** Persist search term to sessionStorage (requires name prop). Default: false */\r\n persistSearch: PropTypes.bool,\r\n};\r\n"],"names":["LazyLoadingIndicator","_ref","show","currentPage","totalPages","React","createElement","Collapse","timeout","unmountOnExit","Box","sx","width","p","Typography","variant","color","mb","LinearProgress","value","propTypes","PropTypes","bool","isRequired","number","visuallyHidden","border","clip","height","margin","overflow","padding","position","whiteSpace","getSelectableRowId","row","index","selectID","getSearchableColumnIds","headers","filter","column","searchable","map","id","filterRows","data","searchTerm","filterOptions","term","toLocaleLowerCase","some","filterOption","String","includes","getPageOptions","rowCount","splitHeaders","reduce","groups","header","subRow","subTables","push","columns","descendingComparator","a","b","orderBy","getComparator","order","formatCellValue","rowValues","raw","date","undefined","d","Date","Number","isNaN","getTime","toDateString","toLocaleTimeString","hour","minute","hour12","stableSort","array","comparator","dateColumns","Set","object","stabilizedThis","el","sortKey","_objectSpread","property","has","parsed","sort","useSearchableRows","_React$useState","useState","_React$useState2","_slicedToArray","setSearchTerm","useMemo","rows","useSelectableRows","selectRows","selected","setSelected","clearSelection","useCallback","handleSelectAllClick","event","target","checked","newSelected","handleClick","previous","selectedId","concat","_toConsumableArray","TableSelectionBanner","onSelection","selectIcon","length","display","justifyContent","bgcolor","theme","alpha","palette","primary","main","action","activatedOpacity","borderRadius","borderBottomLeftRadius","borderBottomRightRadius","component","IconButton","onClick","Task","func","element","TableTitle","name","subTable","string","ReloadBtn","setLoading","loading","onReload","canReload","Tooltip","title","Button","disabled","RefreshIcon","FancySearch","onSubmit","search","setSearch","_React$useState3","Boolean","_React$useState4","hover","setHover","expanded","handleSubmit","e","preventDefault","handleEndHover","isUserType","useRef","useEffect","current","timer","setTimeout","clearTimeout","Paper","elevation","alignItems","transition","divider","onMouseEnter","onMouseLeave","onKeyDown","key","InputBase","placeholder","onChange","ml","onBlur","orientation","Stack","direction","spacing","mr","Clear","Divider","flexItem","type","Search","SearchArea","props","setFinalVal","searchName","persistSearch","searchVal","_sessionStorage$getIt","sessionStorage","getItem","TableToolbarContent","reloadBtnLoading","onSearchChange","Toolbar","pl","sm","pr","xs","pt","md","flex","useEnhancedTableState","resetFlag","setOrder","setOrderBy","_React$useState5","page","rowsPerPage","_React$useState6","pagination","setPagination","handleRequestSort","isAsc","handleChangePage","newPage","handleChangeRowsPerPage","parseInt","EnhancedTableHead","onRequestSort","numSelected","onSelectAllClick","createSortHandler","TableHead","TableRow","TableCell","Checkbox","indeterminate","headings","headCell","align","numeric","sortDirection","TableSortLabel","active","label","oneOf","UniversalTable","lazy","SubRowToggleCell","isOpen","onToggle","hideBadge","stopPropagation","iconColor","Badge","badgeContent","invisible","anchorOrigin","vertical","horizontal","text","closeIcon","RemoveCircle","openIcon","AddCircle","SubTableRow","_ref2","table","colSpan","style","paddingBottom","paddingTop","Suspense","fallback","subTitle","renderDataCells","_extends","cellProps","DataRow","memo","isSelected","_React$useMemo","isItemSelected","rowID","Array","from","fill","reveal","setReveal","toggleSubRow","next","handleRowKeyDown","Fragment","tabIndex","role","oneOfType","TableLoader","TableBody","_","cellIndex","Skeleton","EnhancedTable","_useEnhancedTableStat","emptyRows","Math","max","min","visibleRows","slice","TableContainer","Table","minWidth","size","rowKey","TablePagination","rowsPerPageOptions","pageSizeOptions","count","onPageChange","onRowsPerPageChange","showFirstButton","showLastButton","arrayOf","_ref$lazyloading","lazyloading","_ref$subTable","_ref$hideBadge","_ref$selectRows","head","_useSearchableRows","_useSelectableRows","handleSearchChange","boxShadow"],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "mui-universal-table",
|
|
3
|
+
"version": "1.0.1",
|
|
4
|
+
"description": "A universal table component built with Material UI for React applications",
|
|
5
|
+
"keywords": [
|
|
6
|
+
"react",
|
|
7
|
+
"material-ui",
|
|
8
|
+
"mui",
|
|
9
|
+
"table",
|
|
10
|
+
"component",
|
|
11
|
+
"typescript"
|
|
12
|
+
],
|
|
13
|
+
"license": "MIT",
|
|
14
|
+
"author": "Skulldorom",
|
|
15
|
+
"type": "module",
|
|
16
|
+
"main": "dist/index.js",
|
|
17
|
+
"module": "dist/index.esm.js",
|
|
18
|
+
"types": "src/index.d.ts",
|
|
19
|
+
"files": [
|
|
20
|
+
"dist",
|
|
21
|
+
"src/index.d.ts",
|
|
22
|
+
"LICENSE",
|
|
23
|
+
"README.md"
|
|
24
|
+
],
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./src/index.d.ts",
|
|
28
|
+
"import": "./dist/index.esm.js",
|
|
29
|
+
"require": "./dist/index.js"
|
|
30
|
+
}
|
|
31
|
+
},
|
|
32
|
+
"scripts": {
|
|
33
|
+
"build": "rollup -c",
|
|
34
|
+
"pack:local": "npm run build && npm pack",
|
|
35
|
+
"dev": "rollup -c -w",
|
|
36
|
+
"prepack": "npm run build",
|
|
37
|
+
"test": "node --experimental-vm-modules node_modules/jest-cli/bin/jest.js",
|
|
38
|
+
"test:watch": "node --experimental-vm-modules node_modules/jest-cli/bin/jest.js --watch",
|
|
39
|
+
"lint": "eslint src",
|
|
40
|
+
"lint:fix": "eslint src --fix"
|
|
41
|
+
},
|
|
42
|
+
"peerDependencies": {
|
|
43
|
+
"@emotion/react": "^11.5.0",
|
|
44
|
+
"@emotion/styled": "^11.3.0",
|
|
45
|
+
"@mui/icons-material": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
|
|
46
|
+
"@mui/material": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0",
|
|
47
|
+
"prop-types": "^15.0.0",
|
|
48
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
49
|
+
"react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0"
|
|
50
|
+
},
|
|
51
|
+
"devDependencies": {
|
|
52
|
+
"@babel/core": "^7.29.0",
|
|
53
|
+
"@babel/preset-env": "^7.29.2",
|
|
54
|
+
"@babel/preset-react": "^7.28.5",
|
|
55
|
+
"@emotion/react": "^11.14.0",
|
|
56
|
+
"@emotion/styled": "^11.14.1",
|
|
57
|
+
"@mui/icons-material": "^9.0.0",
|
|
58
|
+
"@mui/material": "^9.0.0",
|
|
59
|
+
"@rollup/plugin-babel": "^7.0.0",
|
|
60
|
+
"@rollup/plugin-commonjs": "^29.0.2",
|
|
61
|
+
"@rollup/plugin-node-resolve": "^16.0.3",
|
|
62
|
+
"@rollup/plugin-typescript": "^12.3.0",
|
|
63
|
+
"@testing-library/jest-dom": "^6.9.1",
|
|
64
|
+
"@testing-library/react": "^16.3.2",
|
|
65
|
+
"@testing-library/user-event": "^14.6.1",
|
|
66
|
+
"@types/react": "^19.2.14",
|
|
67
|
+
"@types/react-dom": "^19.2.3",
|
|
68
|
+
"@typescript-eslint/eslint-plugin": "^8.58.2",
|
|
69
|
+
"@typescript-eslint/parser": "^8.58.2",
|
|
70
|
+
"baseline-browser-mapping": "^2.10.19",
|
|
71
|
+
"eslint": "^9.0.0",
|
|
72
|
+
"eslint-plugin-react": "^7.37.5",
|
|
73
|
+
"eslint-plugin-react-hooks": "^7.0.1",
|
|
74
|
+
"globals": "^17.5.0",
|
|
75
|
+
"identity-obj-proxy": "^3.0.0",
|
|
76
|
+
"jest": "^30.3.0",
|
|
77
|
+
"jest-environment-jsdom": "^30.3.0",
|
|
78
|
+
"prop-types": "^15.8.1",
|
|
79
|
+
"react": "^19.2.5",
|
|
80
|
+
"react-dom": "^19.2.5",
|
|
81
|
+
"rollup": "^4.60.1",
|
|
82
|
+
"rollup-plugin-peer-deps-external": "^2.2.4",
|
|
83
|
+
"typescript": "^6.0.2"
|
|
84
|
+
},
|
|
85
|
+
"repository": {
|
|
86
|
+
"type": "git",
|
|
87
|
+
"url": "git+https://github.com/Skulldorom/MUI-universale-table.git"
|
|
88
|
+
},
|
|
89
|
+
"bugs": {
|
|
90
|
+
"url": "https://github.com/Skulldorom/MUI-universale-table/issues"
|
|
91
|
+
},
|
|
92
|
+
"homepage": "https://github.com/Skulldorom/MUI-universale-table#readme",
|
|
93
|
+
"dependencies": {
|
|
94
|
+
"tslib": "^2.8.1"
|
|
95
|
+
},
|
|
96
|
+
"publishConfig": {
|
|
97
|
+
"access": "public"
|
|
98
|
+
}
|
|
99
|
+
}
|
package/src/index.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { ReactElement } from "react";
|
|
2
|
+
|
|
3
|
+
export interface TableRowData {
|
|
4
|
+
[key: string]: unknown;
|
|
5
|
+
}
|
|
6
|
+
|
|
7
|
+
export interface TableHeader {
|
|
8
|
+
id: string;
|
|
9
|
+
label: string;
|
|
10
|
+
searchable?: boolean;
|
|
11
|
+
numeric?: boolean;
|
|
12
|
+
date?: boolean;
|
|
13
|
+
// eslint-disable-next-line no-unused-vars
|
|
14
|
+
component?: (rowData: TableRowData) => ReactElement;
|
|
15
|
+
cellProps?: Record<string, unknown>;
|
|
16
|
+
subRow?: boolean;
|
|
17
|
+
iconColor?: string;
|
|
18
|
+
openIcon?: ReactElement;
|
|
19
|
+
closeIcon?: ReactElement;
|
|
20
|
+
headers?: TableHeader[];
|
|
21
|
+
loading?: boolean;
|
|
22
|
+
// eslint-disable-next-line no-unused-vars
|
|
23
|
+
setLoading?: (loading: boolean) => void;
|
|
24
|
+
/** Preferred callback — fires when the user clicks reload on a sub-table. */
|
|
25
|
+
// eslint-disable-next-line no-unused-vars
|
|
26
|
+
onReload?: () => void;
|
|
27
|
+
subTitle?: string;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface UniversalTableProps {
|
|
31
|
+
/** Array of data objects to display */
|
|
32
|
+
data: TableRowData[];
|
|
33
|
+
/** Array of header configuration objects */
|
|
34
|
+
headers: TableHeader[];
|
|
35
|
+
/** Table title */
|
|
36
|
+
name?: string;
|
|
37
|
+
/** Shows loading state */
|
|
38
|
+
loading?: boolean;
|
|
39
|
+
/** Function to control loading state (legacy — prefer onReload) */
|
|
40
|
+
// eslint-disable-next-line no-unused-vars
|
|
41
|
+
setLoading?: (loading: boolean) => void;
|
|
42
|
+
/** Fires when the user clicks the reload button */
|
|
43
|
+
// eslint-disable-next-line no-unused-vars
|
|
44
|
+
onReload?: () => void;
|
|
45
|
+
/** Enable lazy loading indicator */
|
|
46
|
+
lazyloading?: boolean;
|
|
47
|
+
/** Current page for lazy loading */
|
|
48
|
+
currentPage?: number;
|
|
49
|
+
/** Total pages for lazy loading */
|
|
50
|
+
totalPages?: number;
|
|
51
|
+
/** Loading state for reload button */
|
|
52
|
+
reloadBtnLoading?: boolean;
|
|
53
|
+
/** Whether this is a nested sub-table */
|
|
54
|
+
subTable?: boolean;
|
|
55
|
+
/** Hide badges on expandable rows */
|
|
56
|
+
hideBadge?: boolean;
|
|
57
|
+
/** Enable row selection */
|
|
58
|
+
selectRows?: boolean;
|
|
59
|
+
/** Property to use as unique identifier for selection */
|
|
60
|
+
selectID?: string;
|
|
61
|
+
/** Custom icon for selection action */
|
|
62
|
+
selectIcon?: ReactElement;
|
|
63
|
+
/** Callback when rows are selected */
|
|
64
|
+
// eslint-disable-next-line no-unused-vars
|
|
65
|
+
onSelection?: (selectedIds: unknown[]) => void;
|
|
66
|
+
/** Override default page size options (e.g. [10, 25, 50]) */
|
|
67
|
+
pageSizeOptions?: number[];
|
|
68
|
+
/** Persist search term to sessionStorage (requires name prop) */
|
|
69
|
+
persistSearch?: boolean;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
declare const UniversalTable: React.FC<UniversalTableProps>;
|
|
73
|
+
|
|
74
|
+
export { UniversalTable };
|
|
75
|
+
export default UniversalTable;
|