'use client'; import PendapatanAsliDesa from '@/app/admin/(dashboard)/_state/ekonomi/PADesa'; import colors from '@/con/colors'; import { Box, Button, Group, Loader, Paper, Stack, Text, TextInput, Title } from '@mantine/core'; import { IconArrowBack } from '@tabler/icons-react'; import { useRouter } from 'next/navigation'; import { useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; function CreateBelanja() { const belanjaState = useProxy(PendapatanAsliDesa.belanja); const router = useRouter(); const [isSubmitting, setIsSubmitting] = useState(false); // Check if form is valid const isFormValid = () => { return ( belanjaState.create.form.name?.trim() !== '' && belanjaState.create.form.value !== null && belanjaState.create.form.value > 0 ); }; const formatRupiah = (value: number | string) => { const number = typeof value === 'number' ? value : Number(value.replace(/\D/g, '')); return new Intl.NumberFormat('id-ID', { style: 'currency', currency: 'IDR', minimumFractionDigits: 0, }).format(number); }; const unformatRupiah = (value: string) => { return Number(value.replace(/\D/g, '')); }; const resetForm = () => { belanjaState.create.form = { name: '', value: 0, }; }; const handleSubmit = async () => { if (!belanjaState.create.form.name || !belanjaState.create.form.value) { return toast.warn('Lengkapi semua field terlebih dahulu'); } try { setIsSubmitting(true); await belanjaState.create.submit(); resetForm(); router.push('/admin/ekonomi/PADesa-pendapatan-asli-desa/belanja'); } catch (error) { console.error('Error creating belanja:', error); toast.error('Gagal menambahkan jenis belanja'); } finally { setIsSubmitting(false); } }; return ( {/* Header dengan back button */} Tambah Jenis Belanja {/* Card Form */} Nama Jenis Belanja} placeholder="Masukkan nama jenis belanja" value={belanjaState.create.form.name} onChange={(e) => (belanjaState.create.form.name = e.target.value)} required /> Nilai} placeholder="Masukkan nilai belanja" value={formatRupiah(belanjaState.create.form.value)} onChange={(e) => { const raw = e.currentTarget.value; belanjaState.create.form.value = unformatRupiah(raw); }} required /> {/* Tombol Simpan */} ); } export default CreateBelanja;