sorting.ts
1 import { CrudSort } from "@refinedev/core"; 2 import { SortOrder } from "antd/es/table/interface"; 3 4 interface TypedCrudSort<Obj> { 5 field: keyof Obj; 6 order: "asc" | "desc"; 7 } 8 9 /** 10 * Returns the sort order for a given field based on the provided sorters. 11 * @param sorters An array of `CrudSort` objects that define the sorting criteria. 12 * @param field The field to get the sort order for. 13 * @returns The sort order for the given field, or undefined if the field is not being sorted. 14 */ 15 export function getSortOrderForField<Obj, Field extends keyof Obj>( 16 sorters: TypedCrudSort<Obj>[], 17 field: Field, 18 ): SortOrder | undefined { 19 const sorter = sorters.find((s) => s.field === field); 20 if (sorter) { 21 return sorter.order === "asc" ? "ascend" : "descend"; 22 } 23 return undefined; 24 } 25 26 export function typeSorters<Obj>(sorters: CrudSort[]): TypedCrudSort<Obj>[] { 27 return sorters as TypedCrudSort<Obj>[]; // <-- Unsafe cast 28 }