ngxsmk-datatable
Version:
A powerful, feature-rich Angular datatable component with virtual scrolling, built for Angular 17+
107 lines (106 loc) • 2.86 kB
TypeScript
import { Observable } from 'rxjs';
import { DragDropConfig, DragStartEvent, DragOverEvent, DropEvent, DragState, RowReorderEvent } from '../interfaces/drag-drop.interface';
import { ColumnReorderEvent } from '../interfaces/column.interface';
import * as i0 from "@angular/core";
/**
* Service for managing drag-and-drop operations in the datatable
*/
export declare class DragDropService {
private dragState$;
private columnReorder$;
private rowReorder$;
private dragStart$;
private dragOver$;
private drop$;
private config;
/**
* Get current drag state as observable
*/
get state$(): Observable<DragState>;
/**
* Get column reorder events
*/
get onColumnReorder$(): Observable<ColumnReorderEvent>;
/**
* Get row reorder events
*/
get onRowReorder$(): Observable<RowReorderEvent>;
/**
* Get drag start events
*/
get onDragStart$(): Observable<DragStartEvent>;
/**
* Get drag over events
*/
get onDragOver$(): Observable<DragOverEvent>;
/**
* Get drop events
*/
get onDrop$(): Observable<DropEvent>;
/**
* Get current drag state snapshot
*/
getState(): DragState;
/**
* Set configuration
*/
setConfig(config: Partial<DragDropConfig>): void;
/**
* Get configuration
*/
getConfig(): DragDropConfig;
/**
* Start dragging a column
*/
startDragColumn<T>(column: T, index: number, event: DragEvent): void;
/**
* Start dragging a row
*/
startDragRow<T>(row: T, index: number, event: DragEvent): void;
/**
* Handle drag over
*/
dragOver<T>(targetItem: T, targetIndex: number, event: DragEvent): void;
/**
* Handle drop
*/
drop<T>(items: T[], event: DragEvent): void;
/**
* End drag operation
*/
endDrag(): void;
/**
* Reorder an array by moving an item from one index to another
*/
private reorderArray;
/**
* Create drag image element
*/
private createDragImage;
/**
* Calculate drop position based on mouse position
*/
calculateDropPosition(targetElement: HTMLElement, mouseX: number, mouseY: number, orientation?: 'horizontal' | 'vertical'): 'before' | 'after';
/**
* Check if dragging is currently active
*/
isDragging(): boolean;
/**
* Get the type of current drag operation
*/
getDragType(): 'column' | 'row' | null;
/**
* Get source index of current drag
*/
getSourceIndex(): number;
/**
* Get target index of current drag
*/
getTargetIndex(): number;
/**
* Clean up service
*/
ngOnDestroy(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<DragDropService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<DragDropService>;
}