@devfamily/admiral
Version:
Admiral is a frontend framework for creating back office using React. It provides out-of-the-box components and tools that make developing an admin interface easy and fast.
34 lines (33 loc) • 1.29 kB
TypeScript
import { ColumnsType, ColumnType, Key, TableLocale } from '../interfaces';
import type { TooltipProps } from '../../Tooltip/interfaces';
export declare type SortOrder = 'desc' | 'asc' | null;
export interface ControlledSorter {
columnKey: Key;
order: SortOrder;
}
export interface SortState<RecordType> {
column: ColumnType<RecordType>;
key: Key;
sortOrder: SortOrder | null;
}
export interface SorterResult<RecordType> {
column?: ColumnType<RecordType>;
order?: SortOrder;
field?: Key | readonly Key[];
columnKey?: Key;
}
interface SorterConfig<RecordType> {
mergedColumns: ColumnsType<RecordType>;
onSorterChange: (sorterResult: SorterResult<RecordType>) => void;
sortDirections: SortOrder[];
controlledSorter?: ControlledSorter | null;
tableLocale?: TableLocale;
showSorterTooltip?: boolean | TooltipProps;
}
export default function useSorter<RecordType>({ mergedColumns, onSorterChange, sortDirections, controlledSorter, tableLocale, showSorterTooltip, }: SorterConfig<RecordType>): [
ColumnsType<RecordType>,
SortState<RecordType> | null,
() => SorterResult<RecordType>
];
export declare function getSortData<RecordType>(data: readonly RecordType[], sortState: SortState<RecordType> | null): RecordType[];
export {};