summaryrefslogtreecommitdiff
path: root/src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx')
-rw-r--r--src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx103
1 files changed, 83 insertions, 20 deletions
diff --git a/src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx b/src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx
index 9850e927..4bc04a3f 100644
--- a/src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx
+++ b/src/lib/pengajuan-tempo/component/informasiPerusahaan.jsx
@@ -73,9 +73,9 @@ const InformasiPerusahaan = ({
const watchState = watch('state');
useEffect(() => {
- setValue('city', '');
- setValue('district', '');
- setValue('subDistrict', '');
+ // setValue('city', '');
+ // setValue('district', '');
+ // setValue('subDistrict', '');
if (watchState) {
updateForm('state', `${watchState}`);
validate();
@@ -133,6 +133,15 @@ const InformasiPerusahaan = ({
useEffect(() => {
let kelurahan = '';
+ let kecamatan = '';
+
+ if (watchDistrict) {
+ for (const data in districts) {
+ if (districts[data].value == watchDistrict) {
+ kecamatan = districts[data].label.toLowerCase();
+ }
+ }
+ }
if (watchsubDistrict) {
updateForm('subDistrict', `${watchsubDistrict}`);
@@ -147,13 +156,30 @@ const InformasiPerusahaan = ({
`https://alamat.thecloudalert.com/api/cari/index/?keyword=${kelurahan}`
);
+ let dataMasuk = []; // Array untuk menyimpan kode pos yang sudah diproses
+
const result = await response.json();
- const dataZips = result.result.map((zip) => ({
- value: parseInt(zip.kodepos),
- label: zip.kodepos,
- }));
- setZips(dataZips);
+
+ // Filter dan map data
+ const dataZips = result.result
+ .filter((zip) => zip.kecamatan.toLowerCase() === kecamatan) // Filter berdasarkan kecamatan
+ .filter((zip) => {
+ // Pastikan zip.kodepos belum ada di dataMasuk
+ if (dataMasuk.includes(zip.kodepos)) {
+ return false; // Jika sudah ada, maka skip (tidak akan ditambahkan)
+ } else {
+ dataMasuk.push(zip.kodepos); // Tambahkan ke dataMasuk
+ return true; // Tambahkan zip ke hasil
+ }
+ })
+ .map((zip) => ({
+ value: parseInt(zip.kodepos),
+ label: zip.kodepos,
+ }));
+
+ setZips(dataZips); // Set hasil ke state
};
+
loadZip();
}
}, [watchsubDistrict, setValue, subDistricts]);
@@ -744,14 +770,33 @@ const InformasiPerusahaan = ({
name='zip'
control={control}
render={(props) => (
- <HookFormSelect
- {...props}
- options={zips}
- disabled={!watchsubDistrict}
- placeholder='Zip'
- />
+ <>
+ {/* Jika zips tidak kosong, tampilkan dropdown */}
+ {zips.length > 0 ? (
+ <HookFormSelect
+ {...props}
+ options={zips}
+ disabled={!watchsubDistrict}
+ placeholder='Zip'
+ />
+ ) : (
+ // Jika zips kosong, tampilkan input manual
+ <input
+ id='zip'
+ name='zip'
+ ref={zipRef}
+ placeholder='Kode Pos'
+ type='number'
+ disabled={!watchsubDistrict}
+ value={form.zip}
+ className='form-input'
+ onChange={handleInputChange}
+ />
+ )}
+ </>
)}
/>
+
{chekValid && (
<div className='text-caption-2 text-danger-500 mt-1'>
{errors.zip}
@@ -1276,12 +1321,30 @@ const InformasiPerusahaan = ({
name='zip'
control={control}
render={(props) => (
- <HookFormSelect
- {...props}
- options={zips}
- disabled={!watchsubDistrict}
- placeholder='Zip'
- />
+ <>
+ {/* Jika zips tidak kosong, tampilkan dropdown */}
+ {zips.length > 0 ? (
+ <HookFormSelect
+ {...props}
+ options={zips}
+ disabled={!watchsubDistrict}
+ placeholder='Zip'
+ />
+ ) : (
+ // Jika zips kosong, tampilkan input manual
+ <input
+ id='zip'
+ name='zip'
+ ref={zipRef}
+ placeholder='Kode Pos'
+ type='number'
+ disabled={!watchsubDistrict}
+ value={form.zip}
+ className='form-input'
+ onChange={handleInputChange}
+ />
+ )}
+ </>
)}
/>
{chekValid && (