All files / src/pages/inventory/dialogs/PriceChangeDialog usePriceChangeFormState.ts

100% Statements 52/52
100% Branches 1/1
100% Functions 1/1
100% Lines 52/52

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 531x 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 1x 1x 1x 1x 1x 1x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x 2x  
/**
 * usePriceChangeFormState - State management for price change workflow
 * 
 * @module dialogs/PriceChangeDialog/usePriceChangeFormState
 * @description
 * Manages all component state for price change dialog:
 * selected supplier, selected item, search query, and form errors.
 */
 
import * as React from 'react';
import type { SupplierOption, ItemOption } from '../../../../api/analytics/types';
 
/**
 * Price change form state
 */
export interface PriceChangeFormState {
  selectedSupplier: SupplierOption | null;
  selectedItem: ItemOption | null;
  itemQuery: string;
  formError: string | null;
}
 
/**
 * State setters
 */
export interface PriceChangeFormStateSetters {
  setSelectedSupplier: (supplier: SupplierOption | null) => void;
  setSelectedItem: (item: ItemOption | null) => void;
  setItemQuery: (query: string) => void;
  setFormError: (error: string | null) => void;
}
 
/**
 * Hook managing all price change form state
 */
export function usePriceChangeFormState(): PriceChangeFormState & PriceChangeFormStateSetters {
  const [selectedSupplier, setSelectedSupplier] = React.useState<SupplierOption | null>(null);
  const [selectedItem, setSelectedItem] = React.useState<ItemOption | null>(null);
  const [itemQuery, setItemQuery] = React.useState('');
  const [formError, setFormError] = React.useState<string | null>(null);
 
  return {
    selectedSupplier,
    selectedItem,
    itemQuery,
    formError,
    setSelectedSupplier,
    setSelectedItem,
    setItemQuery,
    setFormError,
  };
}