@appbuckets/react-ui
Version:
Just Another React UI Framework
47 lines (46 loc) • 1.48 kB
TypeScript
import * as React from 'react';
export interface UseDataSelectorConfig<Data> {
/** A default selected data */
defaultSelectedData?: Data[];
/** Get row Key Function */
getRowKey:
| keyof Data
| ((row: Data, index: number, array: Data[]) => React.Key);
/** An handler to call when selected data change */
onSelectedDataChange?: (selected: Data[]) => void;
/** Set if selector is disabled */
selectable?: boolean;
}
declare type UserDataSelectorConfigAndData<Data> =
UseDataSelectorConfig<Data> & {
/** All Data List */
allData: Data[];
/** Filtered Data Slice */
filteredData: Data[];
};
export interface DataSelector<Data> {
/** Check if all rows are selected */
areAllRowsSelected: boolean;
/** Deselect all rows */
deselectAllRows: () => void;
/** Deselect one or more rows */
deselectRow: (...rows: Data[]) => void;
/** Get the key of a row */
getRowKey: (row: Data, index: number, array: Data[]) => React.Key;
/** Check if a row is selected */
isRowSelected: (row: Data) => boolean;
/** Select all rows */
selectAllRows: () => void;
/** Count of selected rows */
selectedCount: number;
/** Selected Data Array */
selectedData: Data[];
/** Select one or more rows */
selectRow: (...rows: Data[]) => void;
/** Toggle a row */
toggleSelectRow: (row: Data) => void;
}
export default function useDataSelector<Data>(
config: UserDataSelectorConfigAndData<Data>
): DataSelector<Data>;
export {};