|
@@ -36,18 +36,7 @@ import {
|
|
|
import GridHeadCell from './gridHeadCell';
|
|
|
import GridModalEditColumn from './gridModalEditColumn';
|
|
|
|
|
|
-import {
|
|
|
- COL_WIDTH_UNDEFINED,
|
|
|
- COL_WIDTH_MIN,
|
|
|
- COL_WIDTH_DEFAULT,
|
|
|
- COL_WIDTH_BOOLEAN,
|
|
|
- COL_WIDTH_DATETIME,
|
|
|
- COL_WIDTH_NUMBER,
|
|
|
- COL_WIDTH_STRING,
|
|
|
- COL_WIDTH_STRING_LONG,
|
|
|
- COL_WIDTH_STRING_SHORT,
|
|
|
- ColResizeMetadata,
|
|
|
-} from './utils';
|
|
|
+import {COL_WIDTH_UNDEFINED, ColResizeMetadata} from './utils';
|
|
|
|
|
|
type GridEditableProps<DataRow, ColumnKey> = {
|
|
|
onToggleEdit?: (nextValue: boolean) => void;
|
|
@@ -301,11 +290,7 @@ class GridEditable<
|
|
|
width: metadata.columnWidth + widthChange,
|
|
|
};
|
|
|
|
|
|
- this.setGridTemplateColumns(
|
|
|
- this.props.columnOrder,
|
|
|
- metadata.columnIndex,
|
|
|
- metadata.columnWidth + e.clientX - metadata.cursorX
|
|
|
- );
|
|
|
+ this.setGridTemplateColumns(nextColumnOrder);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -318,42 +303,21 @@ class GridEditable<
|
|
|
/**
|
|
|
* Set the CSS for Grid Column
|
|
|
*/
|
|
|
- setGridTemplateColumns(
|
|
|
- columnOrder: GridColumnOrder[],
|
|
|
- columnIndex: number = -1,
|
|
|
- columnWidth: number = 0
|
|
|
- ) {
|
|
|
+ setGridTemplateColumns(columnOrder: GridColumnOrder[]) {
|
|
|
const grid = this.refGrid.current;
|
|
|
if (!grid) {
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
const prependColumns = this.props.grid.prependColumnWidths || [];
|
|
|
- let sumWidth = prependColumns.reduce((acc, item) => acc + parseInt(item, 10), 0);
|
|
|
-
|
|
|
- const columnWidths = prependColumns.concat(
|
|
|
- columnOrder.map((c, i) => {
|
|
|
- let width =
|
|
|
- i === columnIndex // Case 1: Resize, then draw a specific column
|
|
|
- ? columnWidth
|
|
|
- : !c.width || isNaN(c.width) // Case 2: Draw a column with no width
|
|
|
- ? COL_WIDTH_DEFAULT
|
|
|
- : c.width; // Case 3: Draw a column with width
|
|
|
-
|
|
|
- width = Math.max(COL_WIDTH_MIN, width);
|
|
|
- sumWidth += width;
|
|
|
-
|
|
|
- return `${width}px`;
|
|
|
- })
|
|
|
- );
|
|
|
-
|
|
|
- // If columns are smaller than grid, let the last column fill the remaining
|
|
|
- // blank space on the right of the grid
|
|
|
- if (sumWidth < grid.offsetWidth) {
|
|
|
- columnWidths[columnWidths.length - 1] = '1fr';
|
|
|
- }
|
|
|
+ const prepend = prependColumns.join(' ');
|
|
|
+ const widths = columnOrder.map(item => {
|
|
|
+ if (item.width !== COL_WIDTH_UNDEFINED) {
|
|
|
+ return `${item.width}px`;
|
|
|
+ }
|
|
|
+ return 'minmax(50px, auto)';
|
|
|
+ });
|
|
|
|
|
|
- grid.style.gridTemplateColumns = columnWidths.join(' ');
|
|
|
+ grid.style.gridTemplateColumns = `${prepend} ${widths.join(' ')}`;
|
|
|
}
|
|
|
|
|
|
renderHeaderButtons() {
|
|
@@ -585,14 +549,6 @@ class GridEditable<
|
|
|
export default GridEditable;
|
|
|
export {
|
|
|
COL_WIDTH_UNDEFINED,
|
|
|
- COL_WIDTH_MIN,
|
|
|
- COL_WIDTH_DEFAULT,
|
|
|
- COL_WIDTH_BOOLEAN,
|
|
|
- COL_WIDTH_DATETIME,
|
|
|
- COL_WIDTH_NUMBER,
|
|
|
- COL_WIDTH_STRING,
|
|
|
- COL_WIDTH_STRING_LONG,
|
|
|
- COL_WIDTH_STRING_SHORT,
|
|
|
GridColumn,
|
|
|
GridColumnHeader,
|
|
|
GridColumnOrder,
|