/* eslint-disable react-hooks/exhaustive-deps */ 'use client' import PendapatanAsliDesa from '@/app/admin/(dashboard)/_state/ekonomi/PADesa'; import colors from '@/con/colors'; import { Box, Button, Group, Loader, Paper, Stack, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useParams, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; function EditBelanja() { const belanjaState = useProxy(PendapatanAsliDesa.belanja); const router = useRouter(); const params = useParams(); const [isSubmitting, setIsSubmitting] = useState(false); const [formData, setFormData] = useState({ name: '', value: '', }); const [originalData, setOriginalData] = useState({ name: '', value: '', }); // format angka ke rupiah const formatRupiah = (value: number | string) => { const number = typeof value === 'number' ? value : Number(value.replace(/\D/g, '')) || 0; return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(number); }; // buang semua simbol jadi angka murni const unformatRupiah = (value: string) => { return Number(value.replace(/\D/g, '')) || 0; }; useEffect(() => { const loadBelanja = async () => { const id = params?.id as string; if (!id) return; try { const data = await belanjaState.update.load(id); if (data) { setFormData({ name: data.name || '', value: String(data.value || ''), }); setOriginalData({ name: data.name || '', value: String(data.value || ''), }); } } catch (error) { console.error("Error loading belanja:", error); toast.error("Gagal memuat data belanja"); } }; loadBelanja(); }, [params?.id]); const handleSubmit = async () => { try { setIsSubmitting(true); belanjaState.update.form = { ...belanjaState.update.form, name: formData.name, value: Number(formData.value), }; await belanjaState.update.update(); toast.success("Jenis Belanja berhasil diperbarui!"); router.push("/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja"); } catch (error) { console.error("Error updating jenis belanja:", error); toast.error("Terjadi kesalahan saat memperbarui jenis belanja"); } finally { setIsSubmitting(false); } }; const handleResetForm = () => { setFormData({ name: originalData.name, value: originalData.value, }); toast.info("Form dikembalikan ke data awal"); }; return ( {/* Header */} Edit Jenis Belanja {/* Card */} setFormData({ ...formData, name: e.target.value }) } required /> { const raw = e.currentTarget.value; const cleanValue = unformatRupiah(raw); setFormData({ ...formData, value: String(cleanValue) }); }} required /> {/* Tombol Simpan */} ); } export default EditBelanja;