its-just-ui
Version:
ITS Just UI - The easiest and best React UI component library. Modern, accessible, and customizable components built with TypeScript and Tailwind CSS. Simple to use, production-ready components for building beautiful user interfaces with ease.
80 lines (78 loc) • 4.12 kB
TypeScript
import { RowData, SortDescriptor, FilterDescriptor, SelectionModel, ExpandedState, PaginationState, EditingState, TableContextValue, FilterMatchMode, ColumnDef } from './types';
export declare const useTable: <TData extends RowData = RowData>() => TableContextValue<TData>;
export declare const useTableData: <TData extends RowData = RowData>(data: TData[], { sort, filters, globalFilter, groupBy, pagination, paginationMode, }: {
sort: SortDescriptor[];
filters: FilterDescriptor[];
globalFilter: string;
groupBy: string[];
pagination: PaginationState;
paginationMode: "client" | "server";
}) => {
processedData: TData[];
paginatedData: TData[];
totalCount: number;
};
export declare const useTableSelection: <TData extends RowData = RowData>(data: TData[], getRowId: (row: TData, index: number) => string | number, isRowSelectable?: (row: TData) => boolean) => {
selectedRows: SelectionModel;
setSelectedRows: import('react').Dispatch<import('react').SetStateAction<SelectionModel>>;
toggleRowSelection: (rowId: string | number) => void;
toggleAllRowsSelection: () => void;
};
export declare const useTableSort: (enableMultiSort?: boolean, maxMultiSortColCount?: number) => {
sort: SortDescriptor[];
setSort: import('react').Dispatch<import('react').SetStateAction<SortDescriptor[]>>;
toggleSort: (columnId: string, multiSort?: boolean) => void;
};
export declare const useTableFilter: () => {
filters: FilterDescriptor[];
setFilters: import('react').Dispatch<import('react').SetStateAction<FilterDescriptor[]>>;
globalFilter: string;
setGlobalFilter: import('react').Dispatch<import('react').SetStateAction<string>>;
setColumnFilter: (columnId: string, value: unknown, matchMode?: FilterMatchMode) => void;
clearFilters: () => void;
};
export declare const useTablePagination: (totalCount: number, defaultPageSize?: number) => {
pagination: PaginationState;
setPagination: import('react').Dispatch<import('react').SetStateAction<PaginationState>>;
pageCount: number;
canPreviousPage: boolean;
canNextPage: boolean;
previousPage: () => void;
nextPage: () => void;
gotoPage: (pageIndex: number) => void;
setPageSize: (pageSize: number) => void;
};
export declare const useTableExpansion: () => {
expandedRows: ExpandedState;
setExpandedRows: import('react').Dispatch<import('react').SetStateAction<ExpandedState>>;
toggleRowExpansion: (rowId: string | number) => void;
expandAllRows: (rowIds: (string | number)[]) => void;
collapseAllRows: () => void;
};
export declare const useTableEditing: <TData extends RowData = RowData>(onEditCommit?: (rowId: string | number, columnId: string, value: unknown, row: TData) => void | Promise<void>, onEditCancel?: (rowId: string | number, columnId: string) => void) => {
editingCell: EditingState | null;
setEditingCell: import('react').Dispatch<import('react').SetStateAction<EditingState | null>>;
startEditing: (rowId: string | number, columnId: string, initialValue?: unknown) => void;
commitEdit: (value: unknown, row: TData) => Promise<void>;
cancelEdit: () => void;
};
export declare const useTableKeyboardNavigation: <TData extends RowData = RowData>(tableRef: React.RefObject<HTMLTableElement>, { data, columns, getRowId, selectionMode, toggleRowSelection, expandedRows, toggleRowExpansion, editMode, startEditing, }: {
data: TData[];
columns: ColumnDef<TData>[];
getRowId: (row: TData, index: number) => string | number;
selectionMode: "none" | "single" | "multiple";
toggleRowSelection: (rowId: string | number) => void;
expandedRows: ExpandedState;
toggleRowExpansion: (rowId: string | number) => void;
editMode: "none" | "cell" | "row" | "inline";
startEditing: (rowId: string | number, columnId: string) => void;
}) => {
focusedCell: {
rowIndex: number;
columnIndex: number;
} | null;
setFocusedCell: import('react').Dispatch<import('react').SetStateAction<{
rowIndex: number;
columnIndex: number;
} | null>>;
};