From e0fa5ee0dd480610022a14b02ff65a8c55b38ddd Mon Sep 17 00:00:00 2001 From: Domino987 Date: Sun, 27 Jun 2021 14:51:31 +0200 Subject: [PATCH] fi: keep tabledata from previous columns --- src/material-table.js | 10 +++++----- src/utils/data-manager.js | 9 +++++---- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/src/material-table.js b/src/material-table.js index ebdfff3d..ce5cf02d 100644 --- a/src/material-table.js +++ b/src/material-table.js @@ -69,7 +69,7 @@ export default class MaterialTable extends React.Component { ); } - setDataManagerFields(props, isInit) { + setDataManagerFields(props, isInit, prevColumns) { let defaultSortColumnIndex = -1; let defaultSortDirection = ''; if (props && props.options.sorting !== false) { @@ -82,7 +82,7 @@ export default class MaterialTable extends React.Component { : ''; } - this.dataManager.setColumns(props.columns); + this.dataManager.setColumns(props.columns, prevColumns); this.dataManager.setDefaultExpanded(props.options.defaultExpanded); this.dataManager.changeRowEditing(); @@ -145,7 +145,7 @@ export default class MaterialTable extends React.Component { if (propsChanged) { const props = this.getProps(this.props); - this.setDataManagerFields(props); + this.setDataManagerFields(props, false, this.props.columns); this.setState(this.dataManager.getRenderState()); } @@ -164,7 +164,7 @@ export default class MaterialTable extends React.Component { } } - getProps(props) { + getProps(props, prevColumns) { const calculatedProps = { ...(props || this.props) }; calculatedProps.components = { ...MaterialTable.defaultProps.components, @@ -1068,7 +1068,7 @@ export default class MaterialTable extends React.Component { top: 0, right: 0, boxShadow: '-2px 0px 15px rgba(125,147,178,.25)', - overflowX: 'hidden', + overflowX: 'clip', zIndex: 11 }} > diff --git a/src/utils/data-manager.js b/src/utils/data-manager.js index a11d712e..447dfb4c 100644 --- a/src/utils/data-manager.js +++ b/src/utils/data-manager.js @@ -62,7 +62,7 @@ export default class DataManager { this.filtered = false; } - setColumns(columns) { + setColumns(columns, prevColumns = []) { let usedWidth = ['0px']; this.columns = columns.map((columnDef, index) => { @@ -78,7 +78,7 @@ export default class DataManager { ) { usedWidth.push(width); } - + const prevColumn = prevColumns.find(({ id }) => id === index); const tableData = { columnOrder: index, filterValue: columnDef.defaultFilter, @@ -87,11 +87,12 @@ export default class DataManager { width, initialWidth: width, additionalWidth: 0, + ...(prevColumn ? prevColumn.tableData : {}), ...columnDef.tableData, id: index }; - - return { ...columnDef, tableData }; + columnDef.tableData = tableData; + return columnDef; }); const undefinedWidthColumns = this.columns.filter((c) => { if (c.hidden) {