import React from 'react';
import { useMemo, useState, useEffect, useRef } from 'react';
import Stepper from './Stepper';
import InformasiPerusahaan from './informasiPerusahaan';
import KontakPerusahaan from './KontakPerusahaan';
import { Controller, useForm } from 'react-hook-form';
import {
usePengajuanTempoStore,
usePengajuanTempoStoreKontakPerson,
} 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 {
formKontakPerson,
errorsKontakPerson,
validateKontakPerson,
updateFormKontakPerson,
} = usePengajuanTempoStoreKontakPerson();
const [notValid, setNotValid] = useState(false);
const [buttonSubmitClick, setButtonSubmitClick] = useState(false);
const stepDivs = [
,
,
Kontak Person
,
Pengiriman
,
Referensi
,
Dokumen
,
Konfirmasi
,
];
const stepDivsError = [
errors,
errorsKontakPerson,
Kontak Person
,
Pengiriman
,
Referensi
,
Dokumen
,
Konfirmasi
,
];
const stepDivsForm = [
form,
formKontakPerson,
Kontak Person
,
Pengiriman
,
Referensi
,
Dokumen
,
Konfirmasi
,
];
const stepDivsUpdateForm = [
updateForm,
updateFormKontakPerson,
Kontak Person
,
Pengiriman
,
Referensi
,
Dokumen
,
Konfirmasi
,
];
const stepLabels = [
'informasi_perusahaan',
'kontak_person',
'Pengiriman',
'Referensi',
'Dokumen',
'Konfirmasi',
];
const isFormValid = useMemo(
() => Object.keys(stepDivsError[currentStep]).length === 0,
[stepDivsError[currentStep]]
);
useEffect(() => {
validateKontakPerson();
validate();
window.scrollTo({
top: 0,
behavior: 'smooth',
});
}, [currentStep]);
useEffect(() => {
const cachedData = getFromLocalStorage(stepLabels[currentStep]);
if (cachedData) {
// const formData = JSON.parse(cachedData);
Object.keys(cachedData).forEach((key) => {
stepDivsUpdateForm[currentStep](key, cachedData[key]);
});
}
}, [currentStep]);
const goToNextStep = () => {
if (!isFormValid) {
setNotValid(true);
setButtonSubmitClick(!buttonSubmitClick);
return;
} else {
saveToLocalStorage(stepLabels[currentStep], stepDivsForm[currentStep]);
const cachedData = getFromLocalStorage(stepLabels[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
{ }
Langkah Sebelumnya
Langkah Selanjutnya { }
>
);
};
export default PengajuanTempo;