import React from 'react'; import { useMemo, useState, useEffect, useRef } from 'react'; import Stepper from './Stepper'; import InformasiPerusahaan from './informasiPerusahaan'; import KontakPerusahaan from './KontakPerusahaan'; import Pengiriman from './Pengiriman'; import Referensi from './Referensi'; import Dokumen from './Dokumen'; import Konfirmasi from './Konfirmasi'; import { Controller, useForm } from 'react-hook-form'; import { usePengajuanTempoStore, usePengajuanTempoStoreKontakPerson, usePengajuanTempoStorePengiriman, usePengajuanTempoStoreSupplier, usePengajuanTempoStoreDokumen, } from '../../../../src-migrate/modules/register/stores/usePengajuanTempoStore'; import { ChevronRightIcon, ChevronLeftIcon } from '@heroicons/react/24/outline'; const PengajuanTempo = () => { const [currentStep, setCurrentStep] = React.useState(0); const NUMBER_OF_STEPS = 6; const { form, errors, validate, updateForm } = usePengajuanTempoStore(); const { control, watch, setValue } = useForm(); const { formDokumen, errorsDokumen, validateDokumen, updateFormDokumen } = usePengajuanTempoStoreDokumen(); const { formKontakPerson, errorsKontakPerson, validateKontakPerson, updateFormKontakPerson, } = usePengajuanTempoStoreKontakPerson(); const { formSupplier, errorsSupplier, validateSupplier, updateFormSupplier } = usePengajuanTempoStoreSupplier(); const { formPengiriman, errorsPengiriman, validatePengiriman, updateFormPengiriman, } = usePengajuanTempoStorePengiriman(); const [notValid, setNotValid] = useState(false); const [buttonSubmitClick, setButtonSubmitClick] = useState(false); const stepDivs = [ , , , , , , ]; const stepDivsError = [ errors, errorsKontakPerson, errorsPengiriman, errorsSupplier, errorsDokumen,
Konfirmasi
, ]; const stepDivsForm = [ form, formKontakPerson, formPengiriman, formSupplier, formDokumen,
Konfirmasi
, ]; const stepDivsUpdateForm = [ updateForm, updateFormKontakPerson, updateFormPengiriman, updateFormSupplier, updateFormDokumen,
Konfirmasi
, ]; const stepLabels = [ 'informasi_perusahaan', 'kontak_person', 'Pengiriman', 'Referensi', 'Dokumen', 'Konfirmasi', ]; const isFormValid = useMemo( () => Object.keys(stepDivsError[currentStep]).length === 0, [stepDivsError[currentStep]] ); useEffect(() => { validate(); validateKontakPerson(); validatePengiriman(); validateDokumen(); window.scrollTo({ top: 0, behavior: 'smooth', }); }, [currentStep, buttonSubmitClick]); useEffect(() => { const cachedData = getFromLocalStorage(stepLabels[currentStep]); if (cachedData) { // const formData = JSON.parse(cachedData); if (currentStep == 3) { stepDivsUpdateForm[currentStep](cachedData); } else if (currentStep == 4) { // Memanggil updateFormDokumen dengan parameter yang benar Object.keys(cachedData).forEach((key) => { const { name, format, base64 } = cachedData[key]; stepDivsUpdateForm[currentStep](key, name, format, base64); }); } else { Object.keys(cachedData).forEach((key) => { stepDivsUpdateForm[currentStep](key, cachedData[key]); }); } } if (formSupplier) { } }, [currentStep]); const goToNextStep = () => { if (!isFormValid) { setNotValid(true); setButtonSubmitClick(!buttonSubmitClick); return; } else { saveToLocalStorage(stepLabels[currentStep], stepDivsForm[currentStep]); setButtonSubmitClick(!buttonSubmitClick); setNotValid(false); } setCurrentStep((prev) => (prev === NUMBER_OF_STEPS - 1 ? prev : prev + 1)); }; const goToPreviousStep = () => { setCurrentStep((prev) => (prev <= 0 ? prev : prev - 1)); }; const saveToLocalStorage = (key, form) => { localStorage.setItem(key, JSON.stringify(form)); }; const getFromLocalStorage = (key) => { const itemStr = localStorage.getItem(key); if (!itemStr) return null; const item = JSON.parse(itemStr); return item; }; return ( <>

Form Pengajuan Tempo

Lorem ipsum dolor sit amet consectetur. Commodo suspendisse at enim magnis ut quisque rhoncus. Felis volutpat fringilla sollicitudin ultricies. Enim non eget in lorem netus. Nisl pharetra accumsan diam suspendisse.

{stepDivs[currentStep]}
{/* */}
*Pastikan data yang anda masukan sudah benar dan sesuai
); }; export default PengajuanTempo;