/* eslint-disable react-hooks/exhaustive-deps */ 'use client'; import EditEditor from '@/app/admin/(dashboard)/_com/editEditor'; import SelectIconProgramEdit from '@/app/admin/(dashboard)/_com/selectIconEdit'; import programPenghijauanState from '@/app/admin/(dashboard)/_state/lingkungan/program-penghijauan'; 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 { useParams, useRouter } from 'next/navigation'; import { useEffect, useState } from 'react'; import { toast } from 'react-toastify'; import { useProxy } from 'valtio/utils'; interface FormProgramPenghijauan { name: string; deskripsi: string; judul: string; icon: string; } type IconKey = | 'ekowisata' | 'kompetisi' | 'wisata' | 'ekonomi' | 'sampah' | 'truck' | 'scale' | 'clipboard' | 'trash' | 'lingkunganSehat' | 'sumberOksigen' | 'ekonomiBerkelanjutan' | 'mencegahBencana'; function EditProgramPenghijauan() { const stateProgramPenghijauan = useProxy(programPenghijauanState); const params = useParams(); const router = useRouter(); const [isSubmitting, setIsSubmitting] = useState(false); const [formData, setFormData] = useState({ name: '', judul: '', deskripsi: '', icon: '', }); const [originalData, setOriginalData] = useState({ name: '', judul: '', deskripsi: '', icon: '', }); // Load data program penghijauan useEffect(() => { const loadProgram = async () => { const id = params?.id as string; if (!id) return; try { const data = await stateProgramPenghijauan.update.load(id); if (data) { stateProgramPenghijauan.update.id = id; setFormData({ name: data.name, judul: data.judul, deskripsi: data.deskripsi, icon: data.icon, }); setOriginalData({ name: data.name, judul: data.judul, deskripsi: data.deskripsi, icon: data.icon, }); } } catch (error) { console.error('Error loading program penghijauan:', error); toast.error('Gagal memuat data program penghijauan'); } }; loadProgram(); }, [params?.id]); const handleResetForm = () => { setFormData({ name: originalData.name, judul: originalData.judul, deskripsi: originalData.deskripsi, icon: originalData.icon, }); toast.info('Form dikembalikan ke data awal'); }; // Hanya update global state saat submit const handleSubmit = async () => { try { setIsSubmitting(true); stateProgramPenghijauan.update.form = { name: formData.name.trim(), judul: formData.judul.trim(), deskripsi: formData.deskripsi.trim(), icon: formData.icon.trim(), }; await stateProgramPenghijauan.update.submit(); toast.success('Program penghijauan berhasil diperbarui'); router.push('/admin/lingkungan/program-penghijauan'); } catch (error) { console.error('Error updating program penghijauan:', error); toast.error('Gagal memperbarui program penghijauan'); } finally { setIsSubmitting(false); } }; return ( {/* Header */} Edit Program Penghijauan {/* Card utama */} setFormData((prev) => ({ ...prev, name: e.target.value })) } required /> setFormData((prev) => ({ ...prev, judul: e.target.value })) } required /> Deskripsi setFormData((prev) => ({ ...prev, deskripsi: htmlContent })) } /> Ikon Program Penghijauan setFormData((prev) => ({ ...prev, icon: value })) } /> {/* Tombol simpan */} {/* Tombol Simpan */} ); } export default EditProgramPenghijauan;