회원 검색 기능 보완

This commit is contained in:
dohyeons 2025-11-04 09:34:22 +09:00
parent c50c8d01df
commit d428a70b69
1 changed files with 7 additions and 2 deletions

View File

@ -38,6 +38,7 @@ export function DepartmentMembers({
const [searchQuery, setSearchQuery] = useState(""); const [searchQuery, setSearchQuery] = useState("");
const [searchResults, setSearchResults] = useState<any[]>([]); const [searchResults, setSearchResults] = useState<any[]>([]);
const [isSearching, setIsSearching] = useState(false); const [isSearching, setIsSearching] = useState(false);
const [hasSearched, setHasSearched] = useState(false); // 검색 버튼을 눌렀는지 여부
const [duplicateMessage, setDuplicateMessage] = useState<string | null>(null); const [duplicateMessage, setDuplicateMessage] = useState<string | null>(null);
// 부서원 삭제 확인 모달 // 부서원 삭제 확인 모달
@ -75,10 +76,12 @@ export function DepartmentMembers({
const handleSearch = async () => { const handleSearch = async () => {
if (!searchQuery.trim()) { if (!searchQuery.trim()) {
setSearchResults([]); setSearchResults([]);
setHasSearched(false);
return; return;
} }
setIsSearching(true); setIsSearching(true);
setHasSearched(true); // 검색 버튼을 눌렀음을 표시
try { try {
const response = await departmentAPI.searchUsers(companyCode, searchQuery); const response = await departmentAPI.searchUsers(companyCode, searchQuery);
if (response.success && response.data) { if (response.success && response.data) {
@ -108,6 +111,7 @@ export function DepartmentMembers({
setIsAddModalOpen(false); setIsAddModalOpen(false);
setSearchQuery(""); setSearchQuery("");
setSearchResults([]); setSearchResults([]);
setHasSearched(false); // 검색 상태 초기화
loadMembers(); loadMembers();
onMemberChange?.(); // 부서 구조 새로고침 onMemberChange?.(); // 부서 구조 새로고침
@ -341,7 +345,7 @@ export function DepartmentMembers({
{/* 검색 결과 */} {/* 검색 결과 */}
{isSearching ? ( {isSearching ? (
<div className="py-8 text-center text-sm text-muted-foreground"> ...</div> <div className="py-8 text-center text-sm text-muted-foreground"> ...</div>
) : searchResults.length > 0 ? ( ) : hasSearched && searchResults.length > 0 ? (
<div className="max-h-64 space-y-2 overflow-y-auto rounded-lg border p-2"> <div className="max-h-64 space-y-2 overflow-y-auto rounded-lg border p-2">
{searchResults.map((user) => ( {searchResults.map((user) => (
<div <div
@ -363,7 +367,7 @@ export function DepartmentMembers({
</div> </div>
))} ))}
</div> </div>
) : searchQuery && !isSearching ? ( ) : hasSearched && searchResults.length === 0 ? (
<div className="py-8 text-center text-sm text-muted-foreground"> <div className="py-8 text-center text-sm text-muted-foreground">
. .
</div> </div>
@ -377,6 +381,7 @@ export function DepartmentMembers({
setIsAddModalOpen(false); setIsAddModalOpen(false);
setSearchQuery(""); setSearchQuery("");
setSearchResults([]); setSearchResults([]);
setHasSearched(false); // 검색 상태 초기화
}} }}
className="h-8 flex-1 text-xs sm:h-10 sm:flex-none sm:text-sm" className="h-8 flex-1 text-xs sm:h-10 sm:flex-none sm:text-sm"
> >