Skip to content

Commit 588ed3a

Browse files
MKirovaMKirova
authored andcommitted
fix(grid): Apply constraints in a single place when col calculates size cache.
1 parent 9ee72ee commit 588ed3a

File tree

3 files changed

+11
-40
lines changed

3 files changed

+11
-40
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2673,12 +2673,15 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
26732673
* @internal
26742674
*/
26752675
public getConstrainedSizePx(newSize){
2676-
if (this.maxWidth && newSize > this.maxWidthPx) {
2676+
if (this.maxWidth && newSize >= this.maxWidthPx) {
26772677
this.widthConstrained = true;
26782678
return this.maxWidthPx;
2679-
} else if (this.minWidth && newSize < this.userSetMinWidthPx) {
2679+
} else if (this.minWidth && newSize <= this.userSetMinWidthPx) {
26802680
this.widthConstrained = true;
26812681
return this.userSetMinWidthPx;
2682+
} else if (!this.minWidth && newSize <= this.grid.minColumnWidth){
2683+
this.widthConstrained = true;
2684+
return this.grid.minColumnWidth;
26822685
} else {
26832686
this.widthConstrained = false;
26842687
return newSize;
@@ -2701,11 +2704,11 @@ export class IgxColumnComponent implements AfterContentInit, OnDestroy, ColumnTy
27012704
} else if (!colWidth || isAutoWidth && !this.autoSize) {
27022705
// no width
27032706
const currentCalcWidth = this.defaultWidth || this.grid.getPossibleColumnWidth();
2704-
this._calcWidth = this.getConstrainedSizePx(currentCalcWidth);
2707+
this._calcWidth = this.getConstrainedSizePx(parseFloat(currentCalcWidth));
27052708
} else {
27062709
let possibleColumnWidth = '';
27072710
if (!this.widthSetByUser && this.userSetMinWidthPx && this.userSetMinWidthPx < this.grid.minColumnWidth) {
2708-
possibleColumnWidth = this.defaultWidth = this.grid.getPossibleColumnWidth(null, this.userSetMinWidthPx);
2711+
possibleColumnWidth = this.defaultWidth = this.grid.getPossibleColumnWidth();
27092712
} else {
27102713
possibleColumnWidth = this.width;
27112714
}

projects/igniteui-angular/grids/core/src/common/grid.interface.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -905,7 +905,7 @@ export interface GridType extends IGridDataBindable {
905905
refreshSearch(): void;
906906
getDefaultExpandState(record: any): boolean;
907907
trackColumnChanges(index: number, column: any): any;
908-
getPossibleColumnWidth(baseWidth?: number, minColumnWidth?: number): string;
908+
getPossibleColumnWidth(baseWidth?: number): string;
909909
resetHorizontalVirtualization(): void;
910910
hasVerticalScroll(): boolean;
911911
getVisibleContentHeight(): number;

projects/igniteui-angular/grids/grid/src/grid-base.directive.ts

Lines changed: 3 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5573,7 +5573,7 @@ export abstract class IgxGridBaseDirective implements GridType,
55735573
/**
55745574
* @hidden @internal
55755575
*/
5576-
public getPossibleColumnWidth(baseWidth: number = null, minColumnWidth: number = null) {
5576+
public getPossibleColumnWidth(baseWidth: number = null) {
55775577
let computedWidth;
55785578
if (baseWidth !== null) {
55795579
computedWidth = baseWidth;
@@ -5622,11 +5622,9 @@ export abstract class IgxGridBaseDirective implements GridType,
56225622
}
56235623
computedWidth -= this.featureColumnsWidth();
56245624

5625-
const minColWidth = minColumnWidth || this.minColumnWidth;
5626-
56275625
const columnWidth = !Number.isFinite(sumExistingWidths) ?
5628-
Math.max(computedWidth / columnsToSize, minColWidth) :
5629-
Math.max((computedWidth - sumExistingWidths) / columnsToSize, minColWidth);
5626+
computedWidth / columnsToSize :
5627+
(computedWidth - sumExistingWidths) / columnsToSize;
56305628

56315629
return columnWidth + 'px';
56325630
}
@@ -6743,42 +6741,12 @@ export abstract class IgxGridBaseDirective implements GridType,
67436741
const columnWidthCombined = parseFloat(this._columnWidth) * (column.colEnd ? column.colEnd - column.colStart : 1);
67446742
column.defaultWidth = columnWidthCombined + 'px';
67456743
} else {
6746-
// D.K. March 29th, 2021 #9145 Consider min/max width when setting defaultWidth property
6747-
column.defaultWidth = this.getExtremumBasedColWidth(column);
67486744
column.resetCaches();
67496745
}
67506746
});
67516747
this.resetCachedWidths();
67526748
}
67536749

6754-
/**
6755-
* @hidden
6756-
* @internal
6757-
*/
6758-
protected getExtremumBasedColWidth(column: IgxColumnComponent): string {
6759-
let width = this._columnWidth;
6760-
if (width && typeof width !== 'string') {
6761-
width = String(width);
6762-
}
6763-
const minWidth = width.indexOf('%') === -1 ? column.userSetMinWidthPx : column.minWidthPercent;
6764-
const maxWidth = width.indexOf('%') === -1 ? column.maxWidthPx : column.maxWidthPercent;
6765-
if (column.hidden) {
6766-
return width;
6767-
}
6768-
6769-
if (minWidth > parseFloat(width)) {
6770-
width = String(column.minWidth);
6771-
} else if (maxWidth < parseFloat(width)) {
6772-
width = String(column.maxWidth);
6773-
}
6774-
6775-
// if no px or % are defined in maxWidth/minWidth consider it px
6776-
if (width.indexOf('%') === -1 && width.indexOf('px') === -1) {
6777-
width += 'px';
6778-
}
6779-
return width;
6780-
}
6781-
67826750
protected resetNotifyChanges() {
67836751
this._cdrRequestRepaint = false;
67846752
this._cdrRequests = false;

0 commit comments

Comments
 (0)