import { type CSSProperties } from 'react'; import { type Rule } from '../../lib/form'; import { type SFieldAddonAlign } from '../SField'; import { type SIconName } from '../SIcon'; import { type SColor } from '../../lib/color'; import { type STooltipProps } from '../STooltip'; import { type SSelectOption, type SSelectType } from './select.config'; export type { SSelectOption, SSelectType } from './select.config'; export interface SSelectHandle { /** 트리거 버튼에 포커스 (sdFocus) */ focus: () => void; /** 드롭다운 열기 (sdOpen) */ open: () => void; } export interface SSelectProps { /** 선택 값. multi 타입이면 배열. emitValue=false(기본) 라운드트립을 위해 SSelectOption 객체도 허용 */ value?: (string | number | SSelectOption) | (string | number | SSelectOption)[] | null; /** 값 변경 (sdUpdate). emitValue=false(기본)면 SSelectOption(들), true면 원시값 */ onValueChange?: (value: any) => void; /** 열림/닫힘 변경 (sdDropDownShow) */ onOpenChange?: (open: boolean) => void; /** true면 SSelectOption 대신 원시값(string|number) 방출 */ emitValue?: boolean; /** 폼 연동용 name 속성 */ name?: string; /** 옵션 목록 (children으로 계층 표현) */ options?: SSelectOption[]; /** 타입: default | multi | default_depth | multi_depth */ type?: SSelectType; /** 검색 입력 사용 */ useSearch?: boolean; /** 전체선택 옵션 사용 (multi 전용) */ useSelectAll?: boolean; /** 전체선택 레이블 */ allSelectedLabel?: string; /** placeholder */ placeholder?: string; /** 비활성 */ disabled?: boolean; /** 에러 상태 */ error?: boolean; /** 유효성 규칙 — 닫힐 때 자동 검증 */ rules?: Rule[]; /** 레이블 툴팁 상세 옵션 */ labelTooltipProps?: Partial; /** 드롭다운 최대 높이 */ dropdownHeight?: string; /** 드롭다운 너비 (없으면 트리거 너비) */ dropdownWidth?: string; /** 드롭다운 최대 너비 */ maxDropdownWidth?: string; label?: string; labelWidth?: number | string; /** 레이블 영역 아이콘 */ icon?: SIconName; iconColor?: SColor; /** 레이블 툴팁 텍스트 */ labelTooltip?: string; /** 우측 어드온 레이블 */ addonLabel?: string; /** 어드온 정렬 */ addonAlign?: SFieldAddonAlign; hint?: string; errorMessage?: string; width?: number | string; className?: string; style?: CSSProperties; } export declare const SSelect: import("react").ForwardRefExoticComponent>;