orcs-design-system
Version:
TeamForm's Design System, aka: ORCS
62 lines • 3.01 kB
JavaScript
import _defineProperty from "@babel/runtime/helpers/defineProperty";
import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
const _excluded = ["data", "columns"];
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
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
} = _ref,
tableConfig = _objectWithoutProperties(_ref, _excluded);
const otherConfig = {};
const columnVisibility = {};
const columns = useMemo(() => {
return tableConfig !== null && tableConfig !== void 0 && tableConfig.enableSorting ? columnOverrides : map(columnOverrides, col => {
return _objectSpread(_objectSpread({}, col), {}, {
enableSorting: false
});
});
}, [columnOverrides, tableConfig === null || tableConfig === void 0 ? void 0 : 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(_objectSpread(_objectSpread(_objectSpread(_objectSpread({
getSubRows: row => row.children
}, muiStyleOverrides), otherConfig), tableConfig), {}, {
columns,
data,
enableExpanding: true,
initialState: merge({
density: "compact",
columnVisibility
}, tableConfig.initialState || {})
}));
const customSetColumnVisibility = useCallback(columnVisibility => _objectSpread(_objectSpread({}, 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;