lumarc-grid
Version:
lumArc Grid는 고성능, 유연하고 프레임워크에 구애받지 않는 데이터 그리드 라이브러리
109 lines • 4.18 kB
TypeScript
import { GridColumn } from '../types';
interface UseAdvancedGridOptions<T> {
initialData: T[];
columns: GridColumn<T>[];
features?: {
sorting?: boolean;
filtering?: boolean;
pagination?: {
pageSize?: number;
showPageSizeSelector?: boolean;
};
editing?: boolean;
selection?: boolean;
globalSearch?: boolean;
};
onRowSelect?: (selectedRows: T[]) => void;
onCellEdit?: (rowIndex: number, field: string, value: any) => void;
onRowAction?: (action: string, rowData: T, rowIndex: number) => void;
}
interface ChangeTracker<T> {
created: T[];
modified: Array<{
original: T;
current: T;
changedFields: string[];
}>;
deleted: T[];
}
interface UseAdvancedGridReturn<T> {
data: T[];
processedData: T[];
totalCount: number;
filteredCount: number;
addRow: (newRow?: Partial<T>) => void;
deleteRow: (itemId: string | number) => void;
deleteRows: (itemIds: (string | number)[]) => void;
updateRow: (itemId: string | number, updates: Partial<T>) => void;
updateRows: (updates: {
id: string | number;
data: Partial<T>;
}[]) => void;
selectedRows: Set<string>;
isAllSelected: boolean;
isIndeterminate: boolean;
selectRow: (rowId: string, checked: boolean) => void;
selectAll: (checked: boolean) => void;
clearSelection: () => void;
getSelectedData: () => T[];
getSelectedIds: () => (string | number)[];
editingCell: {
rowId: string;
field: string;
} | null;
recentlySavedCells: Set<string>;
singleClickEdit: boolean;
setSingleClickEdit: (enabled: boolean) => void;
startEdit: (rowId: string, field: string) => void;
cancelEdit: () => void;
handleRowAction: (action: string, rowData: T, rowIndex: number) => void;
changes: ChangeTracker<T>;
hasChanges: boolean;
getChanges: () => ChangeTracker<T>;
getChangesSummary: () => {
created: number;
modified: number;
deleted: number;
};
commitChanges: () => void;
resetChanges: () => void;
isRowCreated: (itemId: string | number) => boolean;
isRowModified: (itemId: string | number) => boolean;
isRowDeleted: (itemId: string | number) => boolean;
getModifiedFields: (itemId: string | number) => string[];
validationErrors: Record<string, string>;
clearValidationError: (rowId: string, field: string) => void;
clearAllValidationErrors: () => void;
hasValidationErrors: boolean;
validateCell: (rowId: string, field: string, value: any, eventType: 'realtime' | 'blur' | 'submit') => string | null;
validateRow: (itemId: string | number, eventType: 'submit') => Record<string, string>;
handleCellValueChange: (rowId: string, field: string, value: any) => string | null;
tableProps: {
data: T[];
columns: GridColumn<T>[];
features: any;
onRowSelect?: (selectedRows: T[]) => void;
onCellEdit?: (rowIndex: number, field: string, value: any) => void;
onRowAction?: (action: string, rowData: T, rowIndex: number) => void;
editingCell: {
rowId: string;
field: string;
} | null;
recentlySavedCells: Set<string>;
singleClickEdit: boolean;
onEditStart: (rowId: string, field: string) => void;
onEditCancel: () => void;
onCellEditComplete: (rowId: string, field: string, value: string | number) => void;
isRowCreated: (itemId: string | number) => boolean;
isRowModified: (itemId: string | number) => boolean;
getModifiedFields: (itemId: string | number) => string[];
validationErrors: Record<string, string>;
validateCell: (rowId: string, field: string, value: any, eventType: 'realtime' | 'blur' | 'submit') => string | null;
onCellValueChange: (rowId: string, field: string, value: any) => string | null;
};
}
export declare function useGridAPI<T extends {
id: string | number;
}>(options: UseAdvancedGridOptions<T>): UseAdvancedGridReturn<T>;
export {};
//# sourceMappingURL=use-advanced-grid.d.ts.map