'use client'; import { useState, useEffect } from 'react'; import { Reminder, CreateReminderData, UpdateReminderData, REMINDER_TYPES } from '@/types/reminder'; interface ReminderFormProps { reminder?: Reminder | null; packageName: string; onSubmit: (data: CreateReminderData | UpdateReminderData) => Promise; onCancel: () => void; isLoading: boolean; } export default function ReminderForm({ reminder, packageName, onSubmit, onCancel, isLoading }: ReminderFormProps) { const [formData, setFormData] = useState({ title: '', description: '', time: '', repeatable: false, repeat_days: null, type: 'reminder', }); useEffect(() => { if (reminder) { // Format datetime for input field (remove milliseconds and timezone) // Convert from "2025-12-13T15:30:00.000" to "2025-12-13T15:30" for input const formattedTime = reminder.time ? reminder.time.replace(/\.\d+/, '').slice(0, 16) : ''; setFormData({ title: reminder.title || '', description: reminder.description || '', time: formattedTime, repeatable: reminder.repeatable || false, repeat_days: reminder.repeat_days, type: reminder.type || 'reminder', }); } else { // Set default time to current date + 1 hour const defaultTime = new Date(); defaultTime.setHours(defaultTime.getHours() + 1); // Format as YYYY-MM-DDTHH:MM for datetime-local input const year = defaultTime.getFullYear(); const month = String(defaultTime.getMonth() + 1).padStart(2, '0'); const day = String(defaultTime.getDate()).padStart(2, '0'); const hours = String(defaultTime.getHours()).padStart(2, '0'); const minutes = String(defaultTime.getMinutes()).padStart(2, '0'); const formattedDefaultTime = `${year}-${month}-${day}T${hours}:${minutes}`; setFormData({ title: '', description: '', time: formattedDefaultTime, repeatable: false, repeat_days: null, type: 'reminder', }); } }, [reminder]); const handleInputChange = (e: React.ChangeEvent) => { const { name, value, type } = e.target; if (type === 'checkbox') { const checked = (e.target as HTMLInputElement).checked; setFormData(prev => ({ ...prev, [name]: checked, })); } else { setFormData(prev => ({ ...prev, [name]: value, })); } }; const handleNumberChange = (e: React.ChangeEvent) => { const { name, value } = e.target; setFormData(prev => ({ ...prev, [name]: value ? parseInt(value, 10) : null, })); }; const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); // Format the time properly for API: "2025-12-13 20:00:00.000" let formattedTime = ''; if (formData.time) { // Input comes as "2025-12-13T20:00" from datetime-local // Replace 'T' with space and add milliseconds formattedTime = formData.time.replace('T', ' ') + ':00.000'; } const submitData = { ...formData, time: formattedTime, }; await onSubmit(submitData); }; return (

{reminder ? 'ویرایش یادآوری' : 'ایجاد یادآوری جدید'} برای پکیج {packageName}

{/* Title */}
{/* Type */}
{/* Time */}
{/* Repeatable */}
{/* Repeat Days */} {formData.repeatable && (
)}
{/* Description */}