import React, { FormEvent, ReactNode, useState } from 'react'; import { Form, FormField, FormFields } from '@/components/ui/form'; import { useForm, usePage } from '@inertiajs/react'; import { Button } from '@/components/ui/button'; import { LoaderCircle } from 'lucide-react'; import { Label } from '@/components/ui/label'; import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue } from '@/components/ui/select'; import InputError from '@/components/ui/input-error'; import { SharedData } from '@/types'; import { Input } from '@/components/ui/input'; import { Backup } from '@/types/backup'; import { Dialog, DialogClose, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, DialogTrigger, } from '@/components/ui/dialog'; export default function EditBackup({ backup, children }: { backup: Backup; children: ReactNode }) { const [open, setOpen] = useState(false); const page = usePage(); const form = useForm<{ interval: string; custom_interval: string; keep: string; }>({ interval: page.props.configs.cronjob_intervals[backup.interval] ? backup.interval : 'custom', custom_interval: backup.interval, keep: backup.keep_backups.toString(), }); const submit = (e: FormEvent) => { e.preventDefault(); form.patch(route('backups.update', { server: backup.server_id, backup: backup.id }), { onSuccess: () => { setOpen(false); }, }); }; return ( {children} Edit backup Edit backup
{/*interval*/} {/*custom interval*/} {form.data.interval === 'custom' && ( form.setData('custom_interval', e.target.value)} placeholder="* * * * *" /> )} {/*backups to keep*/} form.setData('keep', e.target.value)} />
); }