자동완성 검색 입력 컴포넌트 다중 컬럼 표시 기능추가
This commit is contained in:
@@ -42,10 +42,26 @@ export function AutocompleteSearchInputComponent({
|
||||
// config prop 우선, 없으면 개별 prop 사용
|
||||
const tableName = config?.tableName || propTableName || "";
|
||||
const displayField = config?.displayField || propDisplayField || "";
|
||||
const displayFields = config?.displayFields || (displayField ? [displayField] : []); // 다중 표시 필드
|
||||
const displaySeparator = config?.displaySeparator || " → "; // 구분자
|
||||
const valueField = config?.valueField || propValueField || "";
|
||||
const searchFields = config?.searchFields || propSearchFields || [displayField];
|
||||
const searchFields = config?.searchFields || propSearchFields || displayFields; // 검색 필드도 다중 표시 필드 사용
|
||||
const placeholder = config?.placeholder || propPlaceholder || "검색...";
|
||||
|
||||
// 다중 필드 값을 조합하여 표시 문자열 생성
|
||||
const getDisplayValue = (item: EntitySearchResult): string => {
|
||||
if (displayFields.length > 1) {
|
||||
// 여러 필드를 구분자로 조합
|
||||
const values = displayFields
|
||||
.map((field) => item[field])
|
||||
.filter((v) => v !== null && v !== undefined && v !== "")
|
||||
.map((v) => String(v));
|
||||
return values.join(displaySeparator);
|
||||
}
|
||||
// 단일 필드
|
||||
return item[displayField] || "";
|
||||
};
|
||||
|
||||
const [inputValue, setInputValue] = useState("");
|
||||
const [isOpen, setIsOpen] = useState(false);
|
||||
const [selectedData, setSelectedData] = useState<EntitySearchResult | null>(null);
|
||||
@@ -115,7 +131,7 @@ export function AutocompleteSearchInputComponent({
|
||||
|
||||
const handleSelect = (item: EntitySearchResult) => {
|
||||
setSelectedData(item);
|
||||
setInputValue(item[displayField] || "");
|
||||
setInputValue(getDisplayValue(item));
|
||||
|
||||
console.log("🔍 AutocompleteSearchInput handleSelect:", {
|
||||
item,
|
||||
@@ -239,7 +255,7 @@ export function AutocompleteSearchInputComponent({
|
||||
onClick={() => handleSelect(item)}
|
||||
className="w-full px-3 py-2 text-left text-xs transition-colors hover:bg-accent sm:text-sm"
|
||||
>
|
||||
<div className="font-medium">{item[displayField]}</div>
|
||||
<div className="font-medium">{getDisplayValue(item)}</div>
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user