"use client"; import { useDmStore } from "@/app/store"; import { SelectBox, type SelectDataType, } from "@common/business_components/ui"; import { Button, Label } from "@common/components/ui"; import { useCallback, useEffect, useState } from "react"; import SearchInputText from "../SearchInputText/SearchInputText"; export function SearchBar({ setHasuPk, onApply, }: { setHasuPk: (hasuPk: any) => void; onApply: () => void; }) { const { map, Common, initializeCommonData, findRuseFclt } = useDmStore( (state) => state ); const [sidoValue, setSidoValue] = useState(""); const [sigunValue, setSigunValue] = useState(""); const [filteredSigunData, setFilteredSigunData] = useState([ { text: "전체", val: "0" }, ]); useEffect(() => { initializeCommonData(); }, [initializeCommonData]); const initializeSigunData = useCallback( (sidoCd: string) => { if (sidoCd === "0") { setSigunValue("0"); setFilteredSigunData([{ text: "전체", val: "0" }]); } else { const newFilteredData = [ { text: "전체", val: "0" }, ...Common.selectSigunData.filter( (item: SelectDataType) => item.val.substring(0, 2) === sidoCd ), ]; setSigunValue("0"); setFilteredSigunData(newFilteredData); } }, [Common.selectSigunData] ); const onSelectValue = useCallback( (val: string, type: string) => { switch (type) { case "ctpvCd": initializeSigunData(val); setSidoValue(val); break; case "sggCd": setSigunValue(val); } }, [initializeSigunData] ); return (
onSelectValue(val.toString(), "ctpvCd")} value={sidoValue || Common.selectSidoData[0]?.val || ""} /> onSelectValue(val.toString(), "sggCd")} value={sigunValue} /> { let sggOrCity = ""; if (searchNm) { if (sigunValue === "0" || sigunValue === "") { sggOrCity = sidoValue; } else { sggOrCity = sigunValue; } findRuseFclt(sggOrCity, searchNm); } }} setRtnData={(rtnData: any) => { setHasuPk(rtnData); }} searchList={map.ruseFcltList || []} />
); }