PluginProbe
Yatra – Travel Booking & Tour Operator Software / 3.0.8
Yatra – Travel Booking & Tour Operator Software v3.0.8
3.0.16 3.0.15 3.0.14 3.0.14.1 3.0.14.2 3.0.12 3.0.13 3.0.11 3.0.10 3.0.9 3.0.8 3.0.7 3.0.6 3.0.5 3.0.5.1 3.0.4 3.0.3 3.0.2.9 3.0.2.7 3.0.2.8 3.0.2.6 trunk 1.0.0 2.0.0 2.0.1 All 84 releases
yatra / resources / js / components / trip-form / hooks / useTripForm.ts

useTripForm.ts in Yatra – Travel Booking & Tour Operator Software 3.0.8, at resources/js/components/trip-form/hooks/useTripForm.ts

51 lines 1.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 /**
2 * Custom hook for trip form logic
3 * Centralizes form state management and handlers
4 */
5
6 import { useState, useCallback } from "react";
7 import { TripFormData } from "../types";
8
9 export const useTripForm = (initialData: TripFormData) => {
10 const [formData, setFormData] = useState<TripFormData>(initialData);
11 const [errors, setErrors] = useState<Record<string, string>>({});
12
13 const handleFieldChange = useCallback(
14 (field: keyof TripFormData, value: any) => {
15 setFormData((prev) => ({ ...prev, [field]: value }));
16
17 // Clear error for this field when user starts typing
18 if (errors[field]) {
19 setErrors((prev) => {
20 const newErrors = { ...prev };
21 delete newErrors[field];
22 return newErrors;
23 });
24 }
25 },
26 [errors],
27 );
28
29 const setError = useCallback((field: string, message: string) => {
30 setErrors((prev) => ({ ...prev, [field]: message }));
31 }, []);
32
33 const clearErrors = useCallback(() => {
34 setErrors({});
35 }, []);
36
37 const updateFormData = useCallback((data: Partial<TripFormData>) => {
38 setFormData((prev) => ({ ...prev, ...data }));
39 }, []);
40
41 return {
42 formData,
43 errors,
44 handleFieldChange,
45 setError,
46 clearErrors,
47 updateFormData,
48 setFormData,
49 };
50 };
51