diff --git a/src/FormComponent.js b/src/FormComponent.js new file mode 100644 index 0000000..452cda9 --- /dev/null +++ b/src/FormComponent.js @@ -0,0 +1,267 @@ +import React, { useEffect, useState } from "react"; + +const fieldLabels = { + nik: "NIK", + fullName: "Nama Lengkap", + birthPlace: "Tempat Lahir", + birthDate: "Tanggal Lahir", + gender: "Jenis Kelamin", + address: "Alamat", + neighborhoodCode: "RT/RW", + village: "Kelurahan/Desa", + subDistrict: "Kecamatan", + religion: "Agama", + maritalStatus: "Status Perkawinan", + occupation: "Pekerjaan", + nationality: "Kewarganegaraan", + validUntil: "Berlaku Hingga", + issuedCity: "Kota Terbit", + issuedDate: "Tanggal Terbit", +}; + +function Modal({ isOpen, onClose, loading, fileTemp, onSave, onDelete }) { + const [formData, setFormData] = useState({}); + const [step, setStep] = useState(0); + + // ❗️Field yang disembunyikan, bisa diisi sesuai kebutuhan + const disabledFields = []; + + useEffect(() => { + if (fileTemp) { + setFormData(Array.isArray(fileTemp) ? fileTemp[0] : fileTemp); + setStep(0); + } else { + setFormData({}); + } + }, [fileTemp]); + + if (!isOpen) return null; + + const handleChange = (key, newValue, isDate = false) => { + setFormData((prev) => ({ + ...prev, + [key]: isDate ? { ...prev[key], value: newValue } : newValue, + })); + }; + + const formatDate = (value) => { + if (!value) return ""; + const d = new Date(value); + return isNaN(d) ? "" : d.toISOString().split("T")[0]; + }; + + const renderInput = (key, value) => { + if (value && typeof value === "object" && value.type === "dateTime") { + return ( + handleChange(key, e.target.value, true)} + style={styles.input} + /> + ); + } + + if (key === "address") { + return ( +