Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -968,8 +968,9 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
*/
public get minWidthPx() {
const gridAvailableSize = this.grid.calcWidth;
const isPercentageWidth = this.minWidth && typeof this.minWidth === 'string' && this.minWidth.indexOf('%') !== -1;
return isPercentageWidth ? parseFloat(this.minWidth) / 100 * gridAvailableSize : parseFloat(this.minWidth);
const minWidth = this.minWidth || this.defaultMinWidth;
const isPercentageWidth = minWidth && typeof minWidth === 'string' && minWidth.indexOf('%') !== -1;
return isPercentageWidth ? parseFloat(minWidth) / 100 * gridAvailableSize : parseFloat(minWidth);
}

/**
Expand All @@ -986,8 +987,9 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
*/
public get minWidthPercent() {
const gridAvailableSize = this.grid.calcWidth;
const isPercentageWidth = this.minWidth && typeof this.minWidth === 'string' && this.minWidth.indexOf('%') !== -1;
return isPercentageWidth ? parseFloat(this.minWidth) : parseFloat(this.minWidth) / gridAvailableSize * 100;
const minWidth = this.minWidth || this.defaultMinWidth;
const isPercentageWidth = minWidth && typeof minWidth === 'string' && minWidth.indexOf('%') !== -1;
return isPercentageWidth ? parseFloat(minWidth) : parseFloat(minWidth) / gridAvailableSize * 100;
}


Expand Down Expand Up @@ -1015,7 +1017,7 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
this.grid.notifyChanges(true);
}
public get minWidth(): string {
return !this._defaultMinWidth ? this.defaultMinWidth : this._defaultMinWidth;
return this._defaultMinWidth;
}

/** @hidden @internal **/
Expand Down Expand Up @@ -2647,8 +2649,15 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
const currentCalcWidth = this.defaultWidth || this.grid.getPossibleColumnWidth();
this._calcWidth = this.getConstrainedSizePx(currentCalcWidth);
} else {
const currentCalcWidth = parseFloat(this.width);
this._calcWidth =this.getConstrainedSizePx(currentCalcWidth);
let possibleColumnWidth = '';
if (!this.widthSetByUser && this.userSetMinWidthPx && this.userSetMinWidthPx < this.grid.minColumnWidth) {
possibleColumnWidth = this.defaultWidth = this.grid.getPossibleColumnWidth(null, this.userSetMinWidthPx);
} else {
possibleColumnWidth = this.width;
}

const currentCalcWidth = parseFloat(possibleColumnWidth);
this._calcWidth = this.getConstrainedSizePx(currentCalcWidth);
}
this.calcPixelWidth = parseFloat(this._calcWidth);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1200,7 +1200,7 @@ export interface GridType extends IGridDataBindable {
refreshSearch(): void;
getDefaultExpandState(record: any): boolean;
trackColumnChanges(index: number, column: any): any;
getPossibleColumnWidth(): string;
getPossibleColumnWidth(baseWidth?: number, minColumnWidth?: number): string;
resetHorizontalVirtualization(): void;
hasVerticalScroll(): boolean;
getVisibleContentHeight(): number;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5484,7 +5484,7 @@ export abstract class IgxGridBaseDirective implements GridType,
/**
* @hidden @internal
*/
public getPossibleColumnWidth(baseWidth: number = null) {
public getPossibleColumnWidth(baseWidth: number = null, minColumnWidth: number = null) {
let computedWidth;
if (baseWidth !== null) {
computedWidth = baseWidth;
Expand Down Expand Up @@ -5533,9 +5533,11 @@ export abstract class IgxGridBaseDirective implements GridType,
}
computedWidth -= this.featureColumnsWidth();

const minColWidth = minColumnWidth || this.minColumnWidth;

const columnWidth = !Number.isFinite(sumExistingWidths) ?
Math.max(computedWidth / columnsToSize, this.minColumnWidth) :
Math.max((computedWidth - sumExistingWidths) / columnsToSize, this.minColumnWidth);
Math.max(computedWidth / columnsToSize, minColWidth) :
Math.max((computedWidth - sumExistingWidths) / columnsToSize, minColWidth);

return columnWidth + 'px';
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ describe('IgxGrid - Deferred Column Resizing #grid', () => {
GridFeaturesComponent,
LargePinnedColGridComponent,
NullColumnsComponent,
MinWidthColumnsComponent,
ColGridComponent,
ColPercentageGridComponent
]
Expand Down Expand Up @@ -902,6 +903,18 @@ describe('IgxGrid - Deferred Column Resizing #grid', () => {
expect(headers[headers.length - 1].nativeElement.innerText).toEqual("ReleaseDate");
expect(firstRowCells.length).toEqual(11);
}));

it('should use user-provided `minWidth` as default min column width to size columns - #16057.', fakeAsync(() => {
const fixture = TestBed.createComponent(MinWidthColumnsComponent);
fixture.detectChanges();

const grid = fixture.componentInstance.grid;

expect(grid.columnList.get(0).width).toEqual('130px');
expect(grid.columnList.get(1).width).toEqual('90px');
expect(grid.columnList.get(2).width).toEqual('90px');
expect(grid.columnList.get(3).width).toEqual('90px');
}));
});

describe('Resizer tests: ', () => {
Expand Down Expand Up @@ -1060,6 +1073,23 @@ export class NullColumnsComponent implements OnInit {
}
}

@Component({
template: GridTemplateStrings.declareGrid(`width="400px" height="200px"`, ``, `<igx-column [field]="'ID'" [width]="'130px'" [resizable]="true"></igx-column>
<igx-column [field]="'CompanyName'" [minWidth]="'50px'" [resizable]="true"></igx-column>
<igx-column [field]="'ContactName'" [minWidth]="'50px'" [resizable]="true"></igx-column>
<igx-column [field]="'ContactTitle'" [minWidth]="'50px'" [resizable]="true"></igx-column>`),
imports: [IgxGridComponent, IgxColumnComponent]
})
export class MinWidthColumnsComponent implements OnInit {
@ViewChild(IgxGridComponent, { static: true }) public grid: IgxGridComponent;

public data = [];

public ngOnInit(): void {
this.data = SampleTestData.contactInfoData();
}
}

@Component({
template: GridTemplateStrings.declareGrid(`width="400px" height="600px" [allowFiltering]="true"`, ``, `<igx-column [field]="'Items'" [width]="'40px'" dataType="string" [filterable]="true"></igx-column>
<igx-column [field]="'ID'" [width]="'50px'" [header]="'ID'" [filterable]="true"></igx-column>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -531,7 +531,7 @@ describe('IgxPivotGrid #pivotGrid', () => {
expect(pivotGrid.gridSize).toBe(Size.Small);
const dimensionContents = fixture.debugElement.queryAll(By.css('.igx-grid__tbody-pivot-dimension'));
let rowHeaders = dimensionContents[0].queryAll(By.directive(IgxPivotRowDimensionHeaderGroupComponent));
expect(rowHeaders[0].componentInstance.column.minWidth).toBe(minWidthSupercompact);
expect(rowHeaders[0].componentInstance.column.defaultMinWidth).toBe(minWidthSupercompact);
expect(pivotGrid.rowList.first.cells.first.nativeElement.offsetHeight).toBe(cellHeightSuperCompact);

pivotGrid.superCompactMode = false;
Expand All @@ -543,7 +543,7 @@ describe('IgxPivotGrid #pivotGrid', () => {

expect(pivotGrid.gridSize).toBe(Size.Large);
rowHeaders = dimensionContents[0].queryAll(By.directive(IgxPivotRowDimensionHeaderGroupComponent));
expect(rowHeaders[0].componentInstance.column.minWidth).toBe(minWidthComf);
expect(rowHeaders[0].componentInstance.column.defaultMinWidth).toBe(minWidthComf);
expect(pivotGrid.rowList.first.cells.first.nativeElement.offsetHeight).toBe(cellHeightComf);
}));

Expand Down Expand Up @@ -2411,7 +2411,7 @@ describe('IgxPivotGrid #pivotGrid', () => {
fixture.detectChanges();

rowHeaders = dimensionContents[0].queryAll(By.directive(IgxPivotRowDimensionHeaderGroupComponent));
const minWdith = parseFloat(rowHeaders[0].componentInstance.column.minWidth);
const minWdith = parseFloat(rowHeaders[0].componentInstance.column.defaultMinWidth);
expect(parseFloat(rowHeaders[0].componentInstance.column.width)).toEqual(minWdith);
expect(parseFloat(rowHeaders[3].componentInstance.column.width)).toEqual(minWdith);

Expand Down
Loading