import React, { useState } from 'react'; interface LeaveFormData { fromDate: string; toDate: string; comment: string; } const SickLeaveTab: React.FC<{ submitLeave: Function; isSubmitting: boolean; }> = ({ submitLeave, isSubmitting }) => { const [sickLeave, setSickLeave] = useState({ fromDate: '', toDate: '', comment: '' }); const [sickErrors, setSickErrors] = useState>({}); const validateLeaveForm = (data: LeaveFormData): Partial => { const errors: Partial = {}; if (!data.fromDate) { errors.fromDate = 'From date is required'; } if (!data.toDate) { errors.toDate = 'To date is required'; } if (!data.comment.trim()) { errors.comment = 'Comment is required'; } if (data.fromDate && data.toDate && new Date(data.fromDate) > new Date(data.toDate)) { errors.toDate = 'To date must be after from date'; } return errors; }; const handleSickChange = (field: keyof LeaveFormData, value: string) => { setSickLeave(prev => ({ ...prev, [field]: value })); if (sickErrors[field]) { setSickErrors(prev => ({ ...prev, [field]: undefined })); } }; const handleSubmit = async () => { const errors = validateLeaveForm(sickLeave); if (Object.keys(errors).length > 0) { setSickErrors(errors); return; } const success = await submitLeave({ dateFrom: sickLeave.fromDate, dateTo: sickLeave.toDate, leaveType: "SICK", comment: sickLeave.comment, }); if (success) { setSickLeave({ fromDate: "", toDate: "", comment: "" }); setSickErrors({}); alert("SICK submitted!"); } }; return (
{/* From Date */}
handleSickChange('fromDate', e.target.value)} className={`input input-bordered input-sm w-full focus:input-primary transition-all ${sickErrors.fromDate ? 'input-error' : '' }`} /> {sickErrors.fromDate && ( )}
{/* To Date */}
handleSickChange('toDate', e.target.value)} className={`input input-bordered input-sm w-full focus:input-primary transition-all ${sickErrors.toDate ? 'input-error' : '' }`} /> {sickErrors.toDate && ( )}
{/* Description/Comment Field */}