import { Server } from '@/types/server'; import React, { FormEvent, ReactNode, useState } from 'react'; import { Sheet, SheetClose, SheetContent, SheetDescription, SheetFooter, SheetHeader, SheetTitle, SheetTrigger } from '@/components/ui/sheet'; 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 DatabaseSelect from '@/pages/database-users/components/database-select'; import StorageProviderSelect from '@/pages/storage-providers/components/storage-provider-select'; export default function CreateBackup({ server, children }: { server: Server; children: ReactNode }) { const [open, setOpen] = useState(false); const page = usePage(); const form = useForm<{ database: string; storage: string; interval: string; custom_interval: string; keep: string; }>({ database: '', storage: '', interval: 'daily', custom_interval: '', keep: '10', }); const submit = (e: FormEvent) => { e.preventDefault(); form.post(route('backups.store', { server: server.id }), { onSuccess: () => { setOpen(false); }, }); }; return ( {children} Create backup Create a new backup
{/*database*/} form.setData('database', value)} /> {/*storage*/} form.setData('storage', value)} /> {/*interval*/} {/*custom interval*/} {form.data.interval === 'custom' && ( form.setData('custom_interval', e.target.value)} placeholder="* * * * *" /> )} {/*backups to keep*/} form.setData('keep', e.target.value)} />
); }