diff --git a/src/UiGridAutoFitColumnsService.ts b/src/UiGridAutoFitColumnsService.ts index 939b8cf..f2d64c1 100644 --- a/src/UiGridAutoFitColumnsService.ts +++ b/src/UiGridAutoFitColumnsService.ts @@ -87,16 +87,17 @@ export class UiGridAutoFitColumnsService { } columnsProcessor(renderedColumnsToProcess?: Array, rows?: Array) { - if (!rows.length) { + if (!rows.length || renderedColumnsToProcess.length === 0) { return renderedColumnsToProcess; } // TODO: respect existing colDef options // if (col.colDef.enableColumnAutoFitting === false) return; + let gridWidth = renderedColumnsToProcess[0].grid.gridWidth; let optimalWidths: { [name: string]: number } = {}; - + let columnsWidth = 0; renderedColumnsToProcess.forEach(column => { @@ -120,9 +121,20 @@ export class UiGridAutoFitColumnsService { }); column.colDef.width = optimalWidths[columnKey] + this.gridMetrics.getPadding() + this.gridMetrics.getBorder(); + columnsWidth += column.colDef.width; + } else { + gridWidth -= column.colDef.width; + } + }); + + const multiplier = gridWidth / columnsWidth; + renderedColumnsToProcess.forEach(function (column) { + if (column.colDef.enableColumnAutoFit) { + column.colDef.width = Math.round(column.colDef.width * multiplier); column.updateColumnDef(column.colDef, false); } }); + return renderedColumnsToProcess; }