UNPKG

orcs-design-system

Version:
61 lines 1.86 kB
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;