Skip to content

Commit 36c3a29

Browse files
authored
Merge pull request #13407 from IgniteUI/bpachilova/fix-13392-15.1.x
fix(grid): round column width when set in percentages - 15.1.x
2 parents 29a5509 + 3362901 commit 36c3a29

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

projects/igniteui-angular/src/lib/grids/columns/column.component.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -2490,7 +2490,7 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
24902490
const isPercentageWidth = colWidth && typeof colWidth === 'string' && colWidth.indexOf('%') !== -1;
24912491
const isAutoWidth = colWidth && typeof colWidth === 'string' && colWidth === 'fit-content';
24922492
if (isPercentageWidth) {
2493-
this._calcWidth = parseFloat(colWidth) / 100 * this.grid.calcWidth;
2493+
this._calcWidth = Math.floor(parseFloat(colWidth) / 100 * this.grid.calcWidth);
24942494
} else if (!colWidth || isAutoWidth && !this.autoSize) {
24952495
// no width
24962496
this._calcWidth = this.defaultWidth || this.grid.getPossibleColumnWidth();

projects/igniteui-angular/src/lib/grids/grid/column-group.spec.ts

+19
Original file line numberDiff line numberDiff line change
@@ -701,6 +701,25 @@ describe('IgxGrid - multi-column headers #grid', () => {
701701
const cityColumn = grid.getColumnByName('City');
702702
expect(cityColumn.width).toBe(columnWidth);
703703
});
704+
705+
it("Columns with percent width headers should sum to exactly the parent column group's header width", () => {
706+
const gridWidth = "700px";
707+
grid.width = gridWidth;
708+
fixture.detectChanges();
709+
const columnWidth = "30%";
710+
componentInstance.columnWidth = columnWidth;
711+
fixture.detectChanges();
712+
713+
const headersWidth = grid.nativeElement
714+
.querySelector("igx-grid-header")
715+
.getBoundingClientRect().width;
716+
const expectedWidth = headersWidth * 3;
717+
expect(headersWidth).toBe(Math.round((parseFloat(columnWidth) / 100) * grid.calcWidth));
718+
const locationColGroupHeaderWidth = grid.nativeElement
719+
.querySelector("igx-grid-header-group")
720+
.getBoundingClientRect().width;
721+
expect(locationColGroupHeaderWidth).toBe(expectedWidth);
722+
});
704723
});
705724

706725
describe('Column hiding: ', () => {

0 commit comments

Comments
 (0)