import React, { useContext } from "react"; import { FieldErrors, FormField, TypedField, Validator } from "../../../lib"; import type { DataGridProps } from "./datagrid"; export type DataGridContextType = Omit< DataGridProps, "equalityChecker" | "fields" | "onSelect" | "onSort" > & { dataGridRef: React.RefObject; toolbarRef: React.RefObject; amountSelected: number; count: number; dataGridId: string; editable: boolean; editingState: [object, number] | boolean; filterable: boolean; filterState: F | null; formFields: FormField[]; errorsState: FieldErrors[]; setErrorsState: React.Dispatch[]>; equalityChecker: (item1: T, item2: T) => boolean; fields: TypedField[]; pages: number; renderableFields: TypedField[]; renderableRows: T[]; selectedRows: T[]; setEditingState: React.Dispatch<[T, number] | [null, null]>; // TODO: Wrap? sortable: boolean; sortDirection?: "ASC" | "DESC"; sortField?: string; titleId?: string; // TODO: Move?; wrap?: boolean; onFieldsChange?: (typedFields: TypedField[]) => void; onFilter: (rowData: F) => void; onSelect: (rows: T) => void; onSelectAll: (selected: boolean) => void; onSelectAllPages: (selected: boolean) => void; onSort: (field: TypedField) => void; }; export const DataGridContext = React.createContext< DataGridContextType >({} as DataGridContextType); export const useDataGridContext = < T extends object = object, F extends object = T, >() => { return useContext(DataGridContext) as unknown as DataGridContextType; };