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 57 58 59 60 61 62 63 | 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 1x 6x 6x 2x 2x 2x 2x 2x 2x 6x 6x 6x 6x 6x 2x 2x 2x 2x 2x 6x 6x 6x 6x 1x 1x 1x 6x 6x 6x 6x 6x 6x 6x 6x | /**
* @file useSearchHandlers.ts
* @module pages/suppliers/handlers/useSearchHandlers
*
* @summary
* Custom hook that provides search panel event handlers for SuppliersBoard.
* Manages: Search input change, result selection, clear selection.
*
* @enterprise
* - Separation of concerns: handler logic isolated from component
* - Clean orchestrator interface
*/
import { useCallback } from 'react';
import type { SupplierRow } from '../../../api/suppliers';
import type { UseSuppliersBoardStateReturn } from '../hooks/useSuppliersBoardState';
/**
* Hook providing search panel handlers.
*
* @param state - Suppliers board state object from useSuppliersBoardState
* @returns Object with handler functions for search actions
*
* @example
* ```tsx
* const { handleSearchChange, handleSearchResultSelect, handleClearSearchSelection } = useSearchHandlers(state);
* ```
*/
export function useSearchHandlers(state: UseSuppliersBoardStateReturn) {
const handleSearchChange = useCallback(
(query: string) => {
state.setSearchQuery(query);
// Reset selection and jump back to first page when search text changes
state.setSelectedSearchResult(null);
state.setSelectedId(null);
state.setPaginationModel({ ...state.paginationModel, page: 0 });
},
[state]
);
const handleSearchResultSelect = useCallback(
(supplier: SupplierRow) => {
state.setSelectedSearchResult(supplier);
state.setSelectedId(supplier.id);
state.setPaginationModel({ ...state.paginationModel, page: 0 });
state.setSearchQuery(supplier.name ?? '');
},
[state]
);
const handleClearSearchSelection = useCallback(() => {
state.setSelectedSearchResult(null);
state.setSelectedId(null);
state.setSearchQuery('');
}, [state]);
return {
handleSearchChange,
handleSearchResultSelect,
handleClearSearchSelection,
};
}
|