'use client' import colors from '@/con/colors'; import { Box, Button, Center, Group, Image, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack, IconImageInPicture, IconPhoto, IconUpload, IconX } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useProxy } from 'valtio/utils'; import CreateEditor from '../../../_com/createEditor'; import kolaborasiInovasiState from '../../../_state/inovasi/kolaborasi-inovasi'; import { useState } from 'react'; import { toast } from 'react-toastify'; import ApiFetch from '@/lib/api-fetch'; import { Dropzone } from '@mantine/dropzone'; function CreateProgramKreatifDesa() { const stateCreate = useProxy(kolaborasiInovasiState) const router = useRouter(); const [previewImage, setPreviewImage] = useState(null); const [file, setFile] = useState(null); const resetForm = () => { stateCreate.create.form = { name: "", tahun: 0, slug: "", deskripsi: "", kolaborator: "", imageId: "", } setPreviewImage(null); setFile(null); } const handleSubmit = async () => { if (!file) { return toast.warn("Pilih file gambar terlebih dahulu"); } // Upload gambar dulu const res = await ApiFetch.api.fileStorage.create.post({ file, name: file.name, }); const uploaded = res.data?.data; if (!uploaded?.id) { return toast.error("Gagal upload gambar"); } // Simpan ID gambar ke form stateCreate.create.form.imageId = uploaded.id; // Submit data berita await stateCreate.create.create(); // Reset form setelah submit resetForm(); router.push("/admin/inovasi/kolaborasi-inovasi") } return ( Create Kolaborasi Inovasi Nama Kolaborasi Inovasi} placeholder="masukkan nama kolaborasi inovasi" onChange={(val) => stateCreate.create.form.name = val.target.value} /> Tahun} placeholder="masukkan tahun" onChange={(val) => stateCreate.create.form.tahun = parseInt(val.target.value)} /> stateCreate.create.form.slug = e.currentTarget.value} label={Deskripsi Singkat Kolaborasi Inovasi} placeholder='Masukkan deskripsi singkat kolaborasi inovasi' /> stateCreate.create.form.kolaborator = e.currentTarget.value} label={Kolaborator} placeholder='Masukkan kolaborator' /> Gambar { const newImages = files.map((file) => ({ file, preview: URL.createObjectURL(file), label: '', })); setFile(newImages[0].file); setPreviewImage(newImages[0].preview); // ← ini yang kurang }} >
Drag images here or click to select files Attach as many files as you like, each file should not exceed 5mb
{previewImage ? ( ) : (
)}
Deskripsi Kolaborasi Inovasi stateCreate.create.form.deskripsi = htmlContent} />
); } export default CreateProgramKreatifDesa;