diff --git a/projects/igniteui-angular-elements/src/analyzer/elements.config.ts b/projects/igniteui-angular-elements/src/analyzer/elements.config.ts index f17b7ad8fb8..132d2b55169 100644 --- a/projects/igniteui-angular-elements/src/analyzer/elements.config.ts +++ b/projects/igniteui-angular-elements/src/analyzer/elements.config.ts @@ -274,7 +274,6 @@ export var registerConfig = [ { name: "virtualizationState" }, { name: "nativeElement" }, { name: "defaultRowHeight" }, - { name: "defaultHeaderGroupMinWidth" }, { name: "columns" }, { name: "pinnedColumns" }, { name: "pinnedStartColumns" }, @@ -571,7 +570,6 @@ export var registerConfig = [ { name: "virtualizationState" }, { name: "nativeElement" }, { name: "defaultRowHeight" }, - { name: "defaultHeaderGroupMinWidth" }, { name: "columns" }, { name: "pinnedColumns" }, { name: "pinnedStartColumns" }, @@ -755,7 +753,6 @@ export var registerConfig = [ { name: "virtualizationState" }, { name: "nativeElement" }, { name: "defaultRowHeight" }, - { name: "defaultHeaderGroupMinWidth" }, { name: "columns" }, { name: "pinnedStartColumns" }, { name: "pinnedEndColumns" }, @@ -882,7 +879,6 @@ export var registerConfig = [ { name: "cdr" }, { name: "nativeElement" }, { name: "defaultRowHeight" }, - { name: "defaultHeaderGroupMinWidth" }, { name: "columns" }, { name: "pinnedStartColumns" }, { name: "pinnedEndColumns" }, @@ -1034,7 +1030,6 @@ export var registerConfig = [ { name: "virtualizationState" }, { name: "nativeElement" }, { name: "defaultRowHeight" }, - { name: "defaultHeaderGroupMinWidth" }, { name: "columns" }, { name: "pinnedColumns" }, { name: "pinnedStartColumns" }, diff --git a/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts b/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts index 4fb8fe5859b..c8689d53e78 100644 --- a/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts +++ b/projects/igniteui-angular/src/lib/grids/common/grid.interface.ts @@ -939,8 +939,6 @@ export interface GridType extends IGridDataBindable { /** The height of each row in the grid. Setting a constant height can solve problems with not showing all elements when scrolling */ rowHeight: number; multiRowLayoutRowSize: number; - /** Minimal width for headers */ - defaultHeaderGroupMinWidth: any; maxLevelHeaderDepth: number; defaultRowHeight: number; /** The default font size, calculated for each element */ diff --git a/projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-cell.component.ts b/projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-cell.component.ts index a2b08705437..7d4497d6847 100644 --- a/projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-cell.component.ts +++ b/projects/igniteui-angular/src/lib/grids/filtering/base/grid-filtering-cell.component.ts @@ -76,6 +76,21 @@ export class IgxGridFilteringCellComponent implements AfterViewInit, OnInit, DoC public expressionsList: ExpressionUI[]; public moreFiltersCount = 0; + @HostBinding('class.igx-grid-th--pinned') + public get pinnedCss() { + return this.column.pinned; + } + + @HostBinding('class.igx-grid-th--pinned-last') + public get pinnedLastCss() { + return !this.column.grid.hasColumnLayouts ? this.column.isLastPinned : false; + } + + @HostBinding('class.igx-grid-th--pinned-first') + public get pinnedFirstCSS() { + return !this.column.grid.hasColumnLayouts ? this.column.isFirstPinned : false;; + } + private baseClass = 'igx-grid__filtering-cell-indicator'; constructor( diff --git a/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts b/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts index 1f62ef8aa99..fdd88ba2794 100644 --- a/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts +++ b/projects/igniteui-angular/src/lib/grids/grid-base.directive.ts @@ -4560,24 +4560,6 @@ export abstract class IgxGridBaseDirective implements GridType, } } - /** - * Returns the `IgxGridHeaderGroupComponent`'s minimum allowed width. - * - * @remarks - * Used internally for restricting header group component width. - * The values below depend on the header cell default right/left padding values. - */ - public get defaultHeaderGroupMinWidth(): number { - switch (this.gridSize) { - case Size.Medium: - return 32; - case Size.Small: - return 24; - default: - return 48; - } - } - /** @hidden @internal */ public get pinnedStartWidth() { if (!isNaN(this._pinnedStartWidth)) { @@ -4617,17 +4599,13 @@ export abstract class IgxGridBaseDirective implements GridType, public getHeaderCellWidth(element: HTMLElement): ISizeInfo { const range = this.document.createRange(); const headerWidth = this.platform.getNodeSizeViaRange(range, - element, - element.parentElement); + element, element); const headerStyle = this.document.defaultView.getComputedStyle(element); const headerPadding = parseFloat(headerStyle.paddingLeft) + parseFloat(headerStyle.paddingRight) + parseFloat(headerStyle.borderRightWidth); - // Take into consideration the header group element, since column pinning applies borders to it if its not a columnGroup. - const headerGroupStyle = this.document.defaultView.getComputedStyle(element.parentElement); - const borderSize = parseFloat(headerGroupStyle.borderRightWidth) + parseFloat(headerGroupStyle.borderLeftWidth); - return { width: Math.ceil(headerWidth), padding: Math.ceil(headerPadding + borderSize) }; + return { width: Math.ceil(headerWidth), padding: Math.ceil(headerPadding) }; } /** @@ -4743,7 +4721,7 @@ export abstract class IgxGridBaseDirective implements GridType, public getHeaderGroupWidth(column: IgxColumnComponent): string { return this.hasColumnLayouts ? '' - : `${Math.max(parseFloat(column.calcWidth), this.defaultHeaderGroupMinWidth)}px`; + : `${parseFloat(column.calcWidth)}px`; } /** diff --git a/projects/igniteui-angular/src/lib/grids/grid/column-resizing.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/column-resizing.spec.ts index 45273b7deae..7fb076ad2af 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/column-resizing.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/column-resizing.spec.ts @@ -861,9 +861,9 @@ describe('IgxGrid - Deferred Column Resizing #grid', () => { expect(filteringCells[1].nativeElement.getBoundingClientRect().width).toBe(50); expect(filteringCells[2].nativeElement.getBoundingClientRect().width).toBe(49); - expect(headerGroups[0].nativeElement.getBoundingClientRect().width).toBe(48); + expect(headerGroups[0].nativeElement.getBoundingClientRect().width).toBe(49); expect(headerGroups[1].nativeElement.getBoundingClientRect().width).toBe(50); - expect(headerGroups[2].nativeElement.getBoundingClientRect().width).toBe(48); + expect(headerGroups[2].nativeElement.getBoundingClientRect().width).toBe(49); }); it('should size headers correctly when column width is in %.', () => { diff --git a/projects/igniteui-angular/src/lib/grids/grid/column.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/column.spec.ts index 591b01000ed..294740a4186 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/column.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/column.spec.ts @@ -259,7 +259,7 @@ describe('IgxGrid - Column properties #grid', () => { expect(item.width).toEqual('200px'); }); const headers = fix.debugElement.queryAll(By.css(COLUMN_HEADER_GROUP_CLASS)); - expect(headers[0].nativeElement.style['min-width']).toEqual('200px'); + expect(headers[0].nativeElement.clientWidth).toEqual(200); }); it('headers and cells classes should be correct after scroll horizontal', async () => { diff --git a/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts b/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts index 5e25e4e9274..f254c062bd5 100644 --- a/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts +++ b/projects/igniteui-angular/src/lib/grids/grid/grid.component.spec.ts @@ -1888,9 +1888,12 @@ describe('IgxGrid Component Tests #grid', () => { expect(hScroll.nativeElement.hidden).toBe(true); for (let i = 0; i < grid.columnList.length; i++) { - const header = fix.debugElement.queryAll(By.css('igx-grid-header-group'))[i]; + const header = fix.debugElement.queryAll(By.css('igx-grid-header'))[i]; const cell = fix.debugElement.queryAll(By.css('igx-grid-cell'))[i]; - expect(header.nativeElement.offsetWidth).toEqual(cell.nativeElement.offsetWidth); + const headerStyle = document.defaultView.getComputedStyle(header.nativeElement); + const paddingsAndBorders = parseFloat(headerStyle.paddingLeft) + parseFloat(headerStyle.paddingRight) + + parseFloat(headerStyle.borderRightWidth); + expect(header.nativeElement.offsetWidth).toEqual(Math.max(cell.nativeElement.offsetWidth, paddingsAndBorders)); expect(Number.isInteger(header.nativeElement.offsetWidth)).toBe(true); } }); diff --git a/projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.html b/projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.html index 1a6c65419ff..88e66e7512f 100644 --- a/projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.html +++ b/projects/igniteui-angular/src/lib/grids/headers/grid-header-group.component.html @@ -65,6 +65,8 @@ (click)="groupClicked($event)" (pointerenter)="onPinterEnter()" (pointerleave)="onPointerLeave()" + [style.max-width]="column.resolvedWidth" + [style.flex-basis]="column.resolvedWidth" > @if (column.collapsible) {