import { useWrStore } from '@/app/store'; import type { DemandCompType } from '@/app/store/common/searchCode/type'; import React, { useCallback, useEffect, useRef, useState } from 'react'; type thisProps = { label: string | undefined; initValue: string | undefined; setValue : (dmdCoNm?: string) => void; setRtnData : (rtnData: DemandCompType[]) => void; } export default function SearchInputText({label=undefined, initValue=undefined, setValue=()=>{}, setRtnData=()=>{}} :thisProps) { const { getDemandCompList, demandCompList } = useWrStore((state) => state); const [isOpen, setIsOpen] = useState(false); const [textValue, setTextValue] = useState(initValue || ''); const wrapperRef = useRef(null); const handleInputChange = useCallback((e: React.ChangeEvent) => { const value = e.target.value; setTextValue(value); setValue(value); if (value) { setIsOpen(true); getDemandCompList(value); } else { setIsOpen(false); } }, [getDemandCompList, setValue]); const handleSuggestionClick = useCallback((dmdCoNm: string) => { setTextValue(dmdCoNm); setValue(dmdCoNm); setIsOpen(false); setRtnData(demandCompList); }, [demandCompList, setRtnData, setValue]); useEffect(() => { const handleClickOutside = (event: MouseEvent) => { if (wrapperRef.current && !wrapperRef.current.contains(event.target as Node)) { setIsOpen(false); } }; document.addEventListener('mousedown', handleClickOutside); return () => { document.removeEventListener('mousedown', handleClickOutside); }; }, []); return (
setIsOpen(true)} */ className="w-full h-[3.2rem] !text-xl pl-3 text-gray-600 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500" placeholder={`${label}을(를) 입력하세요`} /> {isOpen && (
{demandCompList && demandCompList.length > 0 ? demandCompList.map((item : DemandCompType, index : number) => (
handleSuggestionClick(item.dmdCoNm)} role="button" tabIndex={0} onKeyDown={(e) => { if (e.key === 'Enter' || e.key === ' ') { handleSuggestionClick(item.dmdCoNm); } }} > {item.dmdInfoPk.substring(0,10)} {item.dmdCoNm}
)) : (
검색 결과가 없습니다.
)}
)}
) }