diff --git a/projects/ngx-datatable/src/lib/components/body/body.component.scss b/projects/ngx-datatable/src/lib/components/body/body.component.scss index e6d666d0a..8cd5fad91 100644 --- a/projects/ngx-datatable/src/lib/components/body/body.component.scss +++ b/projects/ngx-datatable/src/lib/components/body/body.component.scss @@ -25,3 +25,15 @@ datatable-scroller { [hidden] { display: none !important; // stylelint-disable-line declaration-no-important } + +datatable-summary-row.sticky { + position: sticky; + z-index: 99; + + &.top { + top: 0; + } + &.bottom { + bottom: 0; + } +} diff --git a/projects/ngx-datatable/src/lib/components/body/body.component.ts b/projects/ngx-datatable/src/lib/components/body/body.component.ts index be17486a1..d215c8c21 100644 --- a/projects/ngx-datatable/src/lib/components/body/body.component.ts +++ b/projects/ngx-datatable/src/lib/components/body/body.component.ts @@ -83,6 +83,7 @@ import { DataTableSummaryRowComponent } from './summary/summary-row.component'; > @if (summaryRow && summaryPosition === 'top') { implements OnInit, O @Input() verticalScrollVisible = false; @Input({ required: true }) ariaRowCheckboxMessage!: string; @Input({ required: true }) cssClasses!: Partial['cssClasses']>; + @Input({ required: true }) stickySummaryRow!: boolean; @Output() readonly scroll = new EventEmitter(); @Output() readonly page = new EventEmitter(); diff --git a/projects/ngx-datatable/src/lib/components/datatable.component.html b/projects/ngx-datatable/src/lib/components/datatable.component.html index 4b496a670..e7bee3736 100644 --- a/projects/ngx-datatable/src/lib/components/datatable.component.html +++ b/projects/ngx-datatable/src/lib/components/datatable.component.html @@ -72,6 +72,7 @@ [rowDragEvents]="rowDragEvents" [rowDefTemplate]="rowDefTemplate" [cssClasses]="cssClasses" + [stickySummaryRow]="stickySummaryRow" (page)="onBodyPage($event)" (activate)="activate.emit($event)" (rowContextmenu)="onRowContextmenu($event)" diff --git a/projects/ngx-datatable/src/lib/components/datatable.component.ts b/projects/ngx-datatable/src/lib/components/datatable.component.ts index 684e68cd4..d272ed76c 100644 --- a/projects/ngx-datatable/src/lib/components/datatable.component.ts +++ b/projects/ngx-datatable/src/lib/components/datatable.component.ts @@ -481,6 +481,11 @@ export class DatatableComponent */ @Input({ transform: booleanAttribute }) enableClearingSortState = false; + /** + * When enabled it will keep the summary row always visible on top or bottom when scrolling. + */ + @Input({ transform: booleanAttribute }) stickySummaryRow = false; + /** * Body was scrolled typically in a `scrollbarV:true` scenario. */