dgz-ui-shared
Version:
Custom ui library using React.js, Shadcn/ui, TailwindCSS, Typescript, dgz-ui library
33 lines • 1.73 kB
TypeScript
import { CheckedState } from '@radix-ui/react-checkbox';
/**
* Props for the useDataTable hook.
* @template TData - The type of the data items.
*/
export interface UseDataTableProps<TData> {
/** Array of data rows. */
rows?: TData[];
/** Array of initially selected row keys. */
defaultSelectedRows?: TData[keyof TData][];
}
/**
* useDataTable manages row selection state for data tables.
* Provides helpers to select all on current page, select one, and query selection.
*
* @template TData - Row data type.
* @param rows - Current rows rendered on the page.
* @param defaultSelectedRows - Pre-selected row keys.
* @returns {Object} Row selection state and handlers
* @returns {TData[keyof TData][] | undefined} selectedRows - Array of selected row keys
* @returns {(key: TData[keyof TData]) => boolean} isRowSelected - Check if a specific row is selected
* @returns {(rowKey: keyof TData) => CheckedState} isAllRowsSelected - Check selection state of all rows on current page
* @returns {(rowKey: keyof TData, checked: boolean) => void} handleSelectAllRows - Toggle selection of all rows on current page
* @returns {(key: TData[keyof TData], checked: boolean) => void} handleSelectRow - Toggle selection of a specific row
*/
export declare const useDataTable: <TData>({ rows, defaultSelectedRows, }: UseDataTableProps<TData>) => {
selectedRows: TData[keyof TData][] | undefined;
isRowSelected: (key: TData[keyof TData]) => boolean;
isAllRowsSelected: (rowKey: keyof TData) => CheckedState;
handleSelectAllRows: (rowKey: keyof TData, checked: boolean) => void;
handleSelectRow: (key: TData[keyof TData], checked: boolean) => void;
};
//# sourceMappingURL=useDataTable.d.ts.map