diff --git a/projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss b/projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss index da3f6058f18..b921e4336f6 100644 --- a/projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss +++ b/projects/igniteui-angular/src/lib/core/styles/components/grid/_grid-theme.scss @@ -3500,6 +3500,17 @@ } } + .igx-pivot-grid-row-filler__wrapper { + .igx-grid-thead__wrapper { + height: 100%; + border-bottom: initial; + + .igx-grid-th { + height: 100%; + } + } + } + %igx-grid__tbody-pivot-mrl-dimension { .igx-grid-th { border-bottom: none; diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.html b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.html index f1cb6f73e0e..62502e28a2a 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.html +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.html @@ -157,6 +157,7 @@ [width]="rowDimensionWidthToPixels(dim)"> + } @@ -175,20 +176,22 @@ } + - @if (columnDimensions.length > 0 || values.length > 0) { -
+
+ @if ((columnDimensions.length > 0 || values.length > 0) && data.length > 0) { -
- } + } + +
@@ -197,6 +200,17 @@ + + @if (emptyBottomSize > 0) { +
+ +
+
+
+
+ } +
+
diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.ts b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.ts index 838401444c1..b4fea8db86b 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.ts +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-grid.component.ts @@ -1148,6 +1148,10 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni return false; } + protected get emptyBottomSize() { + return this.totalHeight - (this.verticalScroll).scrollComponent.size; + } + /** @hidden @internal */ public createFilterESF(dropdown: any, column: ColumnType, options: OverlaySettings, shouldReatach: boolean) { options.outlet = this.outlet; @@ -1286,8 +1290,12 @@ export class IgxPivotGridComponent extends IgxGridBaseDirective implements OnIni /** @hidden @internal */ public get pivotContentCalcWidth() { - const totalDimWidth = this.rowDimensions.length > 0 ? - this.rowDimensions.map((dim) => this.rowDimensionWidthToPixels(dim)).reduce((prev, cur) => prev + cur) : + if (!this.visibleRowDimensions.length) { + return Math.max(0, this.calcWidth - this.pivotRowWidths); + } + + const totalDimWidth = this.visibleRowDimensions.length > 0 ? + this.visibleRowDimensions.map((dim) => this.rowDimensionWidthToPixels(dim)).reduce((prev, cur) => prev + cur) : 0; return this.calcWidth - totalDimWidth; } diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.html b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.html index 8d72f72940e..b238803b861 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.html +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.html @@ -247,7 +247,7 @@
} - @if (grid.pivotUI.showRowHeaders && grid.visibleRowDimensions.length > 0) { + @if (grid.pivotUI.showRowHeaders && grid.rowDimensions.length > 0) {
@for (dim of grid.visibleRowDimensions; track dim; let colIndex = $index; let isLast = $last) { @if (getRowDimensionColumn(dim); as dimCol) { @@ -277,20 +277,20 @@ } } -
+
@for (dimLevelColumns of columnDimensionsByLevel; track $index; let i = $index) { -
+
diff --git a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.ts b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.ts index 8ef6713927b..0b563f9bfa9 100644 --- a/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.ts +++ b/projects/igniteui-angular/src/lib/grids/pivot-grid/pivot-header-row.component.ts @@ -66,7 +66,6 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem public filterDropdownDimensions: Set = new Set(); public filterAreaDimensions: Set = new Set(); private _dropPos = DropPosition.AfterDropTarget; - private valueData: Map; private _subMenuPositionSettings: PositionSettings = { verticalStartPoint: VerticalAlignment.Bottom, closeAnimation: undefined @@ -188,7 +187,7 @@ export class IgxPivotHeaderRowComponent extends IgxGridHeaderRowComponent implem if (columnDimensions.length === 0) { return 1; } - let totalDepth = columnDimensions.map(x => PivotUtil.getDimensionDepth(x) + 1).reduce((acc, val) => acc + val); + let totalDepth = columnDimensions.map(x => this.grid.data.length > 0 ? PivotUtil.getDimensionDepth(x) + 1 : 0).reduce((acc, val) => acc + val); if (this.grid.hasMultipleValues) { totalDepth += 1; } diff --git a/src/app/pivot-grid-state/pivot-grid-state.sample.html b/src/app/pivot-grid-state/pivot-grid-state.sample.html index 4afc8d18613..824c946dde7 100644 --- a/src/app/pivot-grid-state/pivot-grid-state.sample.html +++ b/src/app/pivot-grid-state/pivot-grid-state.sample.html @@ -1,31 +1,34 @@
- - - - Show headers - Horizontal layout -
- - - {{col.header}} 📐 - - + + + + Show headers + Horizontal layout +
+
+
+ + + {{col.header}} 📐 + + +
+
-
diff --git a/src/app/pivot-grid-state/pivot-grid-state.sample.scss b/src/app/pivot-grid-state/pivot-grid-state.sample.scss index 9504c49e32d..87497a93579 100644 --- a/src/app/pivot-grid-state/pivot-grid-state.sample.scss +++ b/src/app/pivot-grid-state/pivot-grid-state.sample.scss @@ -13,8 +13,8 @@ igx-pivot-grid { } .sample-flex-row { - align-items: center; display: flex; + flex-direction: column; flex-wrap: wrap; gap: 16px; margin-bottom: 16px;