Skip to Content

LookUp

읽기 전용 입력 필드와 검색 버튼으로 구성된 조회 컨트롤


개요

입력 필드에 직접 타이핑할 수 없고 검색 버튼 클릭을 통해 외부에서 값을 설정하는 패턴의 컨트롤입니다.

주요 특징

  • ✅ 읽기 전용 입력: 입력 필드는 항상 disabled, 값은 외부에서 설정
  • ✅ 검색 버튼: 클릭 시 onClick 핸들러 호출
  • ✅ FormItem 래핑: label, required, error 등 폼 라벨 지원
  • ✅ 커스텀 스타일: 배경색, 텍스트 색상, 테두리 등 스타일 오버라이드
  • ✅ 가시성 제어: visible prop으로 선언적 표시/숨김
  • ✅ 라벨 도움말: labelTooltip으로 도움말 아이콘 표시

기본 사용

value prop으로 표시할 값을 지정하고, onClick으로 검색 동작을 정의합니다.


비활성화 (disabled)

disabled=true이면 검색 버튼이 비활성화됩니다.


Placeholder

빈 상태에서 안내 텍스트를 표시합니다. showPlaceholder=false로 숨길 수 있습니다.


FormItem 래핑

label, required, error 등 FormItem props를 지원합니다.


라벨 도움말 (labelTooltip)

라벨 옆에 도움말 아이콘을 표시합니다.


크기 (size)

size prop으로 InputGroup 크기를 변경합니다.


커스텀 스타일

backgroundColor, color, borderColor 등의 prop으로 스타일을 지정합니다.


가시성 제어 (visible)

visible prop으로 선언적으로 표시/숨김을 제어합니다.


API Reference

Props

PropTypeDefaultDescription
valuestring""입력 필드에 표시할 값
lookupValueT | null-선택된 조회 객체 (controlled)
displayValuestring-입력 필드에 표시할 텍스트 (value 대체)
placeholderstring-빈 상태 안내 텍스트
showPlaceholderbooleantrueplaceholder 표시 여부
size"xs" | "sm" | "md" | "lg" | "xl""md"InputGroup 크기
visiblebooleantrue표시 여부 (false면 DOM 제거)
disabledboolean-검색 버튼 비활성화 (입력 필드는 항상 disabled)
readOnlyboolean-읽기 전용. 주지 않으면 감싸는 Form·ToolbarForm의 readOnly를 따른다
clearableboolean-클리어 버튼 표시
widthstring | number-컨트롤 너비
requiredboolean-필수 입력. FormItem *만 켠다 (aria-required·HTML required 없음)
labelTooltipstring-라벨 도움말 (label이 있을 때만)
titlestring-HTML title 속성 (native tooltip)
blockMessagestring-검색 차단 시 표시할 메시지
renderContent(props: LookupRenderProps<T>) => ReactNode-커스텀 팝업/모달 렌더 함수
modalOptionsLookupModalOptions-모달 옵션 (title, size 등)
onClick() => void-검색 버튼 클릭 핸들러
backgroundColorstring-배경색 오버라이드
colorstring-텍스트 색상 오버라이드
borderColorstring-테두리 색상 오버라이드
borderWidthstring-테두리 두께
fontSizestring-폰트 크기
fontWeightstring | number-폰트 굵기
fontFamilystring-폰트 패밀리
fontStylestring-폰트 스타일 (italic 등)
textAlignstring-텍스트 정렬
classNamestring-FormItem 루트 className
inputGroupClassNamestring-입력 묶음(Lookup) className
styleCSSProperties-인라인 스타일
labelReactNode-라벨. ""이면 정렬용 빈 자리만 둔다 (labelTooltip 무시). 안쪽 부품이 aria 속성을 받지 않아 라벨과 잇지 않는다
errorstring-오류 문구. 주면 오류 상태(aria-invalid)도 켠다
aria-invalidboolean-오류 상태. true면 문구 없이 상태만 켜고, false면 error가 있어도 상태와 문구를 끈다
FormItem propsFormFieldProps-labelWidth, orientation, description 등 FormItem props

Events

EventTypeDescription
onValueChange(value: T | null) => void조회 값 변경 시 호출
onClick() => void검색 버튼 클릭

Ref

Method/PropertyTypeDescription
focus()() => void내부 요소에 포커스 이동
blur()() => void내부 요소 포커스 해제
elementHTMLElement | nullLookup DOM 요소

접근성

권장 사항

  • ✅ 검색 버튼에 aria-label="검색"이 자동 설정됨
  • ✅ InputGroup이 role="group"을 가짐 (Foundation 보증)
  • ✅ FormItem label과 컨트롤이 올바르게 연결됨
  • ❌ 중요 정보를 color만으로 전달하지 않기 (색맹 고려)

관련 컴포넌트

  • Input: 직접 입력 가능한 텍스트 입력 컴포넌트
  • Select: 드롭다운 선택 컴포넌트
Last updated on