orcs-design-system
Version:
TeamForm's Design System, aka: ORCS
61 lines • 1.86 kB
JavaScript
import React, { useCallback, useMemo } from "react";
import { useMaterialReactTable, MaterialReactTable } from "material-react-table";
import { merge, map } from "lodash";
import muiStyleOverrides from "./muiStyleOverrides";
import getExpandColumnConfig from "./getExpandColumnConfig";
import { PropTypes } from "prop-types";
import { jsx as _jsx } from "react/jsx-runtime";
const Table = _ref => {
let {
data,
columns: columnOverrides,
...tableConfig
} = _ref;
const otherConfig = {};
const columnVisibility = {};
const columns = useMemo(() => {
return tableConfig?.enableSorting ? columnOverrides : map(columnOverrides, col => {
return {
...col,
enableSorting: false
};
});
}, [columnOverrides, tableConfig?.enableSorting]);
const firstCol = useMemo(() => columns[0], [columns]);
if (tableConfig.enableExpanding) {
columnVisibility[firstCol.id] = false;
columns[0].visibleInShowHideMenu = false;
otherConfig.displayColumnDefOptions = getExpandColumnConfig(firstCol, tableConfig);
}
const table = useMaterialReactTable({
getSubRows: row => row.children,
...muiStyleOverrides,
...otherConfig,
...tableConfig,
columns,
data,
enableExpanding: true,
initialState: merge({
density: "compact",
columnVisibility
}, tableConfig.initialState || {})
});
const customSetColumnVisibility = useCallback(columnVisibility => ({
...columnVisibility,
[firstCol.id]: false
}), [firstCol]);
if (tableConfig.enableExpanding) {
table.setColumnVisibility = customSetColumnVisibility;
}
return /*#__PURE__*/_jsx(MaterialReactTable, {
table: table
});
};
Table.propTypes = PropTypes.Obj;
Table.__docgenInfo = {
"description": "",
"methods": [],
"displayName": "Table",
"composes": ["prop-types"]
};
export default Table;