Files
vexplor/frontend/lib/registry/components/entity-search-input/index.ts
kjs 64e6fd1920 feat: 수주등록 모달 및 범용 컴포넌트 개발
- 범용 컴포넌트 3종 개발 및 레지스트리 등록:
  * AutocompleteSearchInput: 자동완성 검색 입력 컴포넌트
  * EntitySearchInput: 엔티티 검색 모달 컴포넌트
  * ModalRepeaterTable: 모달 기반 반복 테이블 컴포넌트

- 수주등록 전용 컴포넌트:
  * OrderCustomerSearch: 거래처 검색 (AutocompleteSearchInput 래퍼)
  * OrderItemRepeaterTable: 품목 관리 (ModalRepeaterTable 래퍼)
  * OrderRegistrationModal: 수주등록 메인 모달

- 백엔드 API:
  * Entity 검색 API (멀티테넌시 지원)
  * 수주 등록 API (자동 채번)

- 화면 편집기 통합:
  * 컴포넌트 레지스트리에 등록
  * ConfigPanel을 통한 설정 기능
  * 드래그앤드롭으로 배치 가능

- 개발 문서:
  * 수주등록_화면_개발_계획서.md (상세 설계 문서)
2025-11-14 14:43:53 +09:00

54 lines
1.8 KiB
TypeScript

"use client";
import { createComponentDefinition } from "../../utils/createComponentDefinition";
import { ComponentCategory } from "@/types/component";
import { EntitySearchInputComponent } from "./EntitySearchInputComponent";
import { EntitySearchInputConfigPanel } from "./EntitySearchInputConfigPanel";
/**
* EntitySearchInput 컴포넌트 정의
* 모달 기반 엔티티 검색 입력
*/
export const EntitySearchInputDefinition = createComponentDefinition({
id: "entity-search-input",
name: "엔티티 검색 입력 (모달)",
nameEng: "Entity Search Input",
description: "모달을 통한 엔티티 검색 및 선택 (거래처, 품목 등)",
category: ComponentCategory.INPUT,
webType: "entity",
component: EntitySearchInputComponent,
defaultConfig: {
tableName: "customer_mng",
displayField: "customer_name",
valueField: "customer_code",
searchFields: ["customer_name", "customer_code"],
mode: "combo",
placeholder: "검색...",
modalTitle: "검색 및 선택",
modalColumns: ["customer_code", "customer_name", "address"],
showAdditionalInfo: false,
additionalFields: [],
},
defaultSize: { width: 300, height: 40 },
configPanel: EntitySearchInputConfigPanel,
icon: "Search",
tags: ["검색", "모달", "엔티티", "거래처", "품목"],
version: "1.0.0",
author: "개발팀",
});
// 타입 내보내기
export type { EntitySearchInputConfig } from "./config";
// 컴포넌트 내보내기
export { EntitySearchInputComponent } from "./EntitySearchInputComponent";
export { EntitySearchInputRenderer } from "./EntitySearchInputRenderer";
export { EntitySearchModal } from "./EntitySearchModal";
export { useEntitySearch } from "./useEntitySearch";
export type {
EntitySearchInputProps,
EntitySearchResult,
EntitySearchResponse,
} from "./types";