Skip to content

Commit ac0469a

Browse files
authored
Merge pull request #12961 from IgniteUI/skrastev/fix-12669
fix(grid): Fix filtering row not included correctly into header row size calculation.
2 parents d7392c0 + 632dfcb commit ac0469a

File tree

5 files changed

+39
-6
lines changed

5 files changed

+39
-6
lines changed

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

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,6 @@ import { IgxGridValidationService } from './grid/grid-validation.service';
177177
let FAKE_ROW_ID = -1;
178178
const DEFAULT_ITEMS_PER_PAGE = 15;
179179
const MINIMUM_COLUMN_WIDTH = 136;
180-
const FILTER_ROW_HEIGHT = 50;
181180
// By default row editing overlay outlet is inside grid body so that overlay is hidden below grid header when scrolling.
182181
// In cases when grid has 1-2 rows there isn't enough space in grid body and row editing overlay should be shown above header.
183182
// Default row editing overlay height is higher then row height that is why the case is valid also for row with 2 rows.
@@ -6643,10 +6642,8 @@ export abstract class IgxGridBaseDirective extends DisplayDensityBase implements
66436642
protected calcGridHeadRow() {
66446643
if (this.maxLevelHeaderDepth) {
66456644
this._baseFontSize = parseFloat(getComputedStyle(this.document.documentElement).getPropertyValue('font-size'));
6646-
let minSize = (this.maxLevelHeaderDepth + 1) * this.defaultRowHeight / this._baseFontSize;
6647-
if (this._allowFiltering && this._filterMode === FilterMode.quickFilter) {
6648-
minSize += (FILTER_ROW_HEIGHT + 1) / this._baseFontSize;
6649-
}
6645+
const hasFilterRow = this._allowFiltering && this._filterMode === FilterMode.quickFilter;
6646+
const minSize = (this.maxLevelHeaderDepth + 1 + (hasFilterRow ? 1 : 0)) * this.defaultRowHeight / this._baseFontSize;
66506647
this.theadRow.nativeElement.style.minHeight = `${minSize}rem`;
66516648
}
66526649
}

projects/igniteui-angular/src/lib/grids/grid/grid-filtering-ui.spec.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2535,6 +2535,23 @@ describe('IgxGrid - Filtering Row UI actions #grid', () => {
25352535
}));
25362536

25372537
// Filtering + Column Groups
2538+
it('should size correctly the header based on display density.', () => {
2539+
grid.displayDensity = "comfortable";
2540+
fix.detectChanges();
2541+
2542+
const thead = GridFunctions.getGridHeader(grid).nativeElement;
2543+
expect(thead.getBoundingClientRect().height).toEqual(grid.defaultRowHeight * 4 + 1);
2544+
2545+
grid.displayDensity = "cosy";
2546+
fix.detectChanges();
2547+
expect(thead.getBoundingClientRect().height).toEqual(grid.defaultRowHeight * 4 + 1);
2548+
2549+
grid.displayDensity = "compact";
2550+
fix.detectChanges();
2551+
expect(thead.getBoundingClientRect().height).toEqual(grid.defaultRowHeight * 4 + 1);
2552+
2553+
});
2554+
25382555
it('should position filter row correctly when grid has column groups.', fakeAsync(() => {
25392556
const thead = GridFunctions.getGridHeader(grid).nativeElement;
25402557

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
.density-chooser {
2+
margin-bottom: 16px;
3+
min-width: 900px;
4+
}

src/app/grid-column-groups/grid-column-groups.sample.html

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
<section class="sample-content">
2+
<div class="density-chooser">
3+
<igx-buttongroup [values]="displayDensities" (selected)="selectDensity($event)"></igx-buttongroup>
4+
</div>
25
<ng-template igxCollapsibleIndicator let-column="column" #ind >
36
<igx-icon [attr.draggable]="false">{{column.expanded ? 'remove' : 'add'}} </igx-icon>
47
</ng-template>
5-
<igx-grid [allowFiltering]="true" [moving]="true" [pinning]="pinningConfig" [rowSelection]="selectionMode" #grid [data]="data" displayDensity="compact">
8+
<igx-grid [displayDensity]="density" [allowFiltering]="true" [moving]="true" [pinning]="pinningConfig" [rowSelection]="selectionMode" #grid [data]="data" displayDensity="compact">
69
<igx-grid-toolbar [displayDensity]="grid.displayDensity">
710
<igx-grid-toolbar-actions>
811
<igx-grid-toolbar-pinning></igx-grid-toolbar-pinning>

src/app/grid-column-groups/grid-column-groups.sample.ts

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { IgxGridComponent } from '../../../projects/igniteui-angular/src/lib/gri
1212
import { IgxIconComponent } from '../../../projects/igniteui-angular/src/lib/icon/icon.component';
1313
import { IgxCollapsibleIndicatorTemplateDirective } from '../../../projects/igniteui-angular/src/lib/grids/columns/templates.directive';
1414
import { ColumnPinningPosition, GridSelectionMode } from '../../../projects/igniteui-angular/src/lib/grids/common/enums';
15+
import { DisplayDensity } from '../../../projects/igniteui-angular/src/lib/core/density';
1516

1617
@Component({
1718
selector: 'app-grid-column-groups-sample',
@@ -61,12 +62,19 @@ export class GridColumnGroupsSampleComponent {
6162
];
6263
/* eslint-enable max-len */
6364

65+
public density: string = DisplayDensity.compact;
66+
public displayDensities;
6467

6568
constructor() {
6669
for (const item of this.data) {
6770
item.FullAddress = `${item.Address}, ${item.City}, ${item.Country}`;
6871
}
6972
this.selectionMode = GridSelectionMode.none;
73+
this.displayDensities = [
74+
{ label: 'comfortable', selected: this.density === 'comfortable', togglable: true },
75+
{ label: 'cosy', selected: this.density === 'cosy', togglable: true },
76+
{ label: 'compact', selected: this.density === 'compact', togglable: true }
77+
];
7078
}
7179

7280
public pinGroup() {
@@ -110,4 +118,8 @@ export class GridColumnGroupsSampleComponent {
110118

111119
this.columnGroupStates.set(columnGroup, !this.columnGroupStates.get(columnGroup));
112120
}
121+
122+
public selectDensity(event) {
123+
this.density = this.displayDensities[event.index].label;
124+
}
113125
}

0 commit comments

Comments
 (0)