import { ReactNode } from 'react'; import { ColumnDefinition } from '../UI/ResponsiveTable'; import { IResponsiveTableColumnDefinition } from '../Data/IResponsiveTableColumnDefinition'; export interface IResponsiveTablePlugin { id: string; renderHeader?: () => ReactNode; renderFooter?: () => ReactNode; processData?: (data: TData[]) => TData[]; onPluginInit?: (api: IPluginAPI) => void; getHeaderProps?: (columnDefinition: IResponsiveTableColumnDefinition) => React.HTMLAttributes & { className?: string; }; renderCell?: (content: ReactNode, row: TData, column: IResponsiveTableColumnDefinition) => ReactNode; getRowProps?: (row: TData) => React.HTMLAttributes; } export interface IPluginAPI { getData: () => TData[]; forceUpdate: () => void; columnDefinitions: ColumnDefinition[]; getScrollableElement?: () => HTMLElement | null; filterProps?: { showFilter?: boolean; filterPlaceholder?: string; className?: string; mode?: 'client' | 'server'; }; selectionProps?: { onSelectionChange: (selectedItems: TData[]) => void; rowIdKey: keyof TData; mode?: 'single' | 'multiple'; selectedItems?: TData[]; selectedRowClassName?: string; }; onFilterChange?: (filterText: string) => void; }