@vtex/admin-ui
Version:
> VTEX admin component library
96 lines (95 loc) • 2.47 kB
TypeScript
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 {};