UNPKG

ngxsmk-datatable

Version:

A powerful, feature-rich Angular datatable component with virtual scrolling, built for Angular 17+

68 lines (67 loc) 2.61 kB
import { Observable } from 'rxjs'; import * as i0 from "@angular/core"; export interface VirtualScrollState { startIndex: number; endIndex: number; visibleItems: any[]; totalHeight: number; scrollTop: number; } export interface HorizontalVirtualScrollState { startColumnIndex: number; endColumnIndex: number; visibleColumns: any[]; totalWidth: number; scrollLeft: number; leftOffset: number; } export declare class VirtualScrollService { private stateSubject; state$: Observable<VirtualScrollState>; calculateVisibleItems(items: any[], containerHeight: number, itemHeight: number, scrollTop: number, bufferSize?: number): VirtualScrollState; scrollToItem(itemIndex: number, itemHeight: number, containerHeight: number): number; getItemOffset(itemIndex: number, itemHeight: number): number; isItemVisible(itemIndex: number, startIndex: number, endIndex: number): boolean; getVisibleRange(scrollTop: number, containerHeight: number, itemHeight: number, totalItems: number, bufferSize?: number): { start: number; end: number; }; calculateScrollPosition(targetIndex: number, itemHeight: number, containerHeight: number): number; getSpacerHeight(startIndex: number, endIndex: number, itemHeight: number, totalItems: number): { top: number; bottom: number; }; /** * Calculate visible columns based on horizontal scroll position */ calculateVisibleColumns(columns: any[], columnWidths: { [key: string]: number; }, containerWidth: number, scrollLeft: number, bufferSize?: number): HorizontalVirtualScrollState; /** * Scroll to a specific column */ scrollToColumn(columnIndex: number, columnWidths: { [key: string]: number; }, columns: any[], containerWidth: number): number; /** * Get spacer widths for horizontal virtual scrolling */ getHorizontalSpacerWidth(startColumnIndex: number, endColumnIndex: number, columnWidths: { [key: string]: number; }, columns: any[]): { left: number; right: number; }; /** * Check if a column is currently visible in the viewport */ isColumnVisible(columnIndex: number, startColumnIndex: number, endColumnIndex: number): boolean; /** * Get total width of all columns */ getTotalColumnsWidth(columns: any[], columnWidths: { [key: string]: number; }): number; static ɵfac: i0.ɵɵFactoryDeclaration<VirtualScrollService, never>; static ɵprov: i0.ɵɵInjectableDeclaration<VirtualScrollService>; }