UNPKG

@vtex/admin-ui

Version:

> VTEX admin component library

96 lines (95 loc) 2.47 kB
import type { ReactNode } from 'react'; import type { Resolver, ResolverContext, ResolveCellArgs, ResolveHeaderArgs, ResolveHeaderReturn } from '../resolvers/core'; import type { DataGridColumn, DataGridDensity } from '../typings'; import type { UseSortReturn, UseDataGridSortParams } from './useDataGridSort'; import type { DataViewState } from '../../DataView'; export declare function useDataGridState<T>(params: UseDataGridStateParams<T>, resolvers?: Record<string, Resolver<T>> | undefined): DataGridState<T>; export interface UseDataGridStateParams<T> { /** * Table column spec */ columns: Array<DataGridColumn<T>>; /** * data-view state */ view?: DataViewState; /** * Resolver context */ context?: ResolverContext; /** * Key extractor * @default (item)=>item.id */ getRowKey?: (item: T) => string; /** * Table items * @default [] */ items?: T[]; /** * Expected items length * @default 5 */ length?: number; /** * Object used in sort hook */ sort?: UseDataGridSortParams<T>; /** * Table row height * @default regular */ density?: DataGridDensity; /** * Action to dispatch on a row click */ onRowClick?: (item: T) => void; } export interface DataGridState<T> { /** * Collection rendered while loading */ skeletonCollection: T[]; /** * Resolves the cell content */ resolveCell: (args: ResolverCallee<ResolveCellArgs<T>>) => ReactNode; /** * Resolvers the header content */ resolveHeader: (args: ResolverCallee<ResolveHeaderArgs<T>>) => ResolveHeaderReturn; /** * Items to render */ data: T[]; /** * Grid columns */ columns: Array<DataGridColumn<T>>; /** * Current sorting state */ sortState: UseSortReturn; /** * Key extractor */ getRowKey: (item: T) => string | unknown; /** * Current grid density */ density: DataGridDensity; /** * Set the current grid density */ setDensity: React.Dispatch<DataGridDensity>; /** * Action to take on click a row */ onRowClick?: (item: T) => void; } /** * Caller of a resolver */ declare type ResolverCallee<T> = Omit<T, 'resolvers' | 'context' | 'sortState'>; export {};