import { Search, Plus, ChevronDown, ChevronUp } from "lucide-react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { UserSearchFilter } from "@/types/user"; import { useState } from "react"; interface UserToolbarProps { searchFilter: UserSearchFilter; totalCount: number; isSearching?: boolean; onSearchChange: (searchFilter: Partial) => void; onCreateClick: () => void; } /** * 사용자 관리 툴바 컴포넌트 * 통합 검색 + 고급 검색 옵션 지원 */ export function UserToolbar({ searchFilter, totalCount, isSearching = false, onSearchChange, onCreateClick, }: UserToolbarProps) { const [showAdvancedSearch, setShowAdvancedSearch] = useState(false); // 통합 검색어 변경 const handleUnifiedSearchChange = (value: string) => { onSearchChange({ searchValue: value, // 통합 검색 시 고급 검색 필드들 클리어 searchType: undefined, search_sabun: undefined, search_companyName: undefined, search_deptName: undefined, search_positionName: undefined, search_userId: undefined, search_userName: undefined, search_tel: undefined, search_email: undefined, }); }; // 고급 검색 필드 변경 const handleAdvancedSearchChange = (field: string, value: string) => { onSearchChange({ [field]: value, // 고급 검색 시 통합 검색어 클리어 searchValue: undefined, }); }; // 고급 검색 모드인지 확인 const isAdvancedSearchMode = !!( searchFilter.search_sabun || searchFilter.search_companyName || searchFilter.search_deptName || searchFilter.search_positionName || searchFilter.search_userId || searchFilter.search_userName || searchFilter.search_tel || searchFilter.search_email ); return (
{/* 메인 검색 영역 */}
{/* 통합 검색 */}
handleUnifiedSearchChange(e.target.value)} disabled={isAdvancedSearchMode} className={`pl-10 ${isSearching ? "border-blue-300 ring-1 ring-blue-200" : ""} ${ isAdvancedSearchMode ? "bg-muted text-muted-foreground cursor-not-allowed" : "" }`} />
{isSearching &&

검색 중...

} {isAdvancedSearchMode && (

고급 검색 모드가 활성화되어 있습니다. 통합 검색을 사용하려면 고급 검색 조건을 초기화하세요.

)}
{/* 고급 검색 토글 버튼 */}
{/* 고급 검색 옵션 */} {showAdvancedSearch && (

고급 검색 옵션

(각 필드별로 개별 검색 조건을 설정할 수 있습니다)
{/* 고급 검색 필드들 */}
handleAdvancedSearchChange("search_companyName", e.target.value)} />
handleAdvancedSearchChange("search_deptName", e.target.value)} />
handleAdvancedSearchChange("search_positionName", e.target.value)} />
handleAdvancedSearchChange("search_userId", e.target.value)} />
handleAdvancedSearchChange("search_userName", e.target.value)} />
handleAdvancedSearchChange("search_tel", e.target.value)} />
handleAdvancedSearchChange("search_email", e.target.value)} />
{/* 고급 검색 초기화 버튼 */} {isAdvancedSearchMode && (
)}
)}
{/* 액션 버튼 영역 */}
{/* 조회 결과 정보 */}
{totalCount}
{/* 액션 버튼들 */}
); }