diff --git a/src/app/admin/(dashboard)/_state/landing-page/apbdes.ts b/src/app/admin/(dashboard)/_state/landing-page/apbdes.ts index 9b5cb438..6575d16d 100644 --- a/src/app/admin/(dashboard)/_state/landing-page/apbdes.ts +++ b/src/app/admin/(dashboard)/_state/landing-page/apbdes.ts @@ -19,6 +19,9 @@ const ApbdesItemSchema = z.object({ const ApbdesFormSchema = z.object({ tahun: z.number().int().min(2000, "Tahun tidak valid"), + name: z.string().optional(), + deskripsi: z.string().optional(), + jumlah: z.string().optional(), imageId: z.string().min(1, "Gambar wajib diunggah"), fileId: z.string().min(1, "File wajib diunggah"), items: z.array(ApbdesItemSchema).min(1, "Minimal ada 1 item"), @@ -27,6 +30,9 @@ const ApbdesFormSchema = z.object({ // --- Default Form --- const defaultApbdesForm = { tahun: new Date().getFullYear(), + name: "", + deskripsi: "", + jumlah: "", imageId: "", fileId: "", items: [] as z.infer[], @@ -244,6 +250,9 @@ const apbdes = proxy({ this.id = data.id; this.form = { tahun: data.tahun || new Date().getFullYear(), + name: data.name || "", + deskripsi: data.deskripsi || "", + jumlah: data.jumlah || "", imageId: data.imageId || "", fileId: data.fileId || "", items: (data.items || []).map((item: any) => ({ diff --git a/src/app/admin/(dashboard)/landing-page/apbdes/[id]/edit/page.tsx b/src/app/admin/(dashboard)/landing-page/apbdes/[id]/edit/page.tsx index 2c84dda3..96bbf4b2 100644 --- a/src/app/admin/(dashboard)/landing-page/apbdes/[id]/edit/page.tsx +++ b/src/app/admin/(dashboard)/landing-page/apbdes/[id]/edit/page.tsx @@ -79,6 +79,9 @@ function EditAPBDes() { // Simpan data original untuk reset form const [originalData, setOriginalData] = useState({ tahun: 0, + name: '', + deskripsi: '', + jumlah: '', imageId: '', fileId: '', imageUrl: '', @@ -103,6 +106,9 @@ function EditAPBDes() { // Simpan data original untuk reset setOriginalData({ tahun: data.tahun || new Date().getFullYear(), + name: data.name || '', + deskripsi: data.deskripsi || '', + jumlah: data.jumlah || '', imageId: data.imageId || '', fileId: data.fileId || '', imageUrl: data.image?.link || '', @@ -112,6 +118,9 @@ function EditAPBDes() { // Set form dengan data lama (termasuk imageId dan fileId) apbdesState.edit.form = { tahun: data.tahun || new Date().getFullYear(), + name: data.name || '', + deskripsi: data.deskripsi || '', + jumlah: data.jumlah || '', imageId: data.imageId || '', fileId: data.fileId || '', items: (data.items || []).map((item: any) => ({ @@ -238,9 +247,12 @@ function EditAPBDes() { }; const handleReset = () => { - // Reset ke data original (tahun, imageId, fileId) + // Reset ke data original (tahun, name, deskripsi, jumlah, imageId, fileId) apbdesState.edit.form = { tahun: originalData.tahun, + name: originalData.name, + deskripsi: originalData.deskripsi, + jumlah: originalData.jumlah, imageId: originalData.imageId, fileId: originalData.fileId, items: [...apbdesState.edit.form.items], // keep existing items @@ -249,11 +261,11 @@ function EditAPBDes() { // Reset preview ke data original setPreviewImage(originalData.imageUrl || null); setPreviewDoc(originalData.fileUrl || null); - + // Reset file uploads setImageFile(null); setDocFile(null); - + // Reset new item form setNewItem({ kode: '', @@ -263,7 +275,7 @@ function EditAPBDes() { level: 1, tipe: 'pendapatan', }); - + toast.info('Form dikembalikan ke data awal'); }; @@ -288,6 +300,33 @@ function EditAPBDes() { > {/* Header Form */} + + (apbdesState.edit.form.name = e.target.value) + } + description="Opsional - akan diisi otomatis jika kosong" + /> + + (apbdesState.edit.form.deskripsi = e.target.value) + } + description="Opsional" + /> + + (apbdesState.edit.form.jumlah = e.target.value) + } + description="Opsional - total keseluruhan anggaran" + /> Nama APBDes - {data.name || '-'} + {data.name || `APBDes Tahun ${data.tahun}`} @@ -105,6 +105,24 @@ function DetailAPBDes() { + {data.deskripsi && ( + + Deskripsi + + {data.deskripsi} + + + )} + + {data.jumlah && ( + + Jumlah Total + + {data.jumlah} + + + )} + Gambar {data.image?.link ? ( diff --git a/src/app/admin/(dashboard)/landing-page/apbdes/create/page.tsx b/src/app/admin/(dashboard)/landing-page/apbdes/create/page.tsx index 1ac3945a..0e00b5b5 100644 --- a/src/app/admin/(dashboard)/landing-page/apbdes/create/page.tsx +++ b/src/app/admin/(dashboard)/landing-page/apbdes/create/page.tsx @@ -117,9 +117,9 @@ function CreateAPBDes() { toast.success("Berhasil menambahkan APBDes"); resetForm(); router.push("/admin/landing-page/apbdes"); - } catch (error) { + } catch (error: any) { console.error("Gagal submit:", error); - toast.error("Gagal menyimpan data"); + toast.error(error?.message || "Gagal menyimpan data"); } finally { setIsSubmitting(false); } @@ -334,6 +334,27 @@ function CreateAPBDes() { {/* Form Header */} + (stateAPBDes.create.form.name = e.target.value)} + description="Opsional - akan diisi otomatis jika kosong" + /> + (stateAPBDes.create.form.deskripsi = e.target.value)} + description="Opsional" + /> + (stateAPBDes.create.form.jumlah = e.target.value)} + description="Opsional - total keseluruhan anggaran" + /> + -