All files / src/pages/suppliers/handlers useTableHandlers.ts

100% Statements 56/56
100% Branches 4/4
100% Functions 1/1
100% Lines 56/56

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 571x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 6x 6x 2x 2x 6x 6x 6x 6x 6x 1x 1x 6x 6x 6x 6x 6x 2x 2x 6x 6x 6x 6x 6x 6x 6x 6x 6x  
/**
 * @file useTableHandlers.ts
 * @module pages/suppliers/handlers/useTableHandlers
 *
 * @summary
 * Custom hook that provides table event handlers for SuppliersBoard.
 * Manages: Row click selection, pagination changes, sort changes.
 *
 * @enterprise
 * - Separation of concerns: handler logic isolated from component
 * - Clean orchestrator interface
 */
 
import { useCallback } from 'react';
import type { GridPaginationModel, GridSortModel } from '@mui/x-data-grid';
import type { UseSuppliersBoardStateReturn } from '../hooks/useSuppliersBoardState';
 
/**
 * Hook providing table handlers.
 *
 * @param state - Suppliers board state object from useSuppliersBoardState
 * @returns Object with handler functions for table actions
 *
 * @example
 * ```tsx
 * const { handleRowClick, handlePaginationChange, handleSortChange } = useTableHandlers(state);
 * ```
 */
export function useTableHandlers(state: UseSuppliersBoardStateReturn) {
  const handleRowClick = useCallback(
    (params: { id: string | number }) => {
      state.setSelectedId(String(params.id));
    },
    [state]
  );
 
  const handlePaginationChange = useCallback(
    (newModel: GridPaginationModel) => {
      state.setPaginationModel(newModel);
    },
    [state]
  );
 
  const handleSortChange = useCallback(
    (newModel: GridSortModel) => {
      state.setSortModel(newModel);
    },
    [state]
  );
 
  return {
    handleRowClick,
    handlePaginationChange,
    handleSortChange,
  };
}