import React, { CSSProperties, InputHTMLAttributes } from 'react'; import { AriaFocusProps } from '../../types/common'; import { InputSize, InputStatus } from './types'; import type { UniqueIdentifier } from '@dnd-kit/core'; export interface ChipInputValue { id: UniqueIdentifier; value: string; canDelete?: boolean; disabled?: boolean; } export interface ChipInputProps extends AriaFocusProps, Omit, 'width' | 'size' | 'value' | 'onChange'> { value?: ChipInputValue[]; disabled?: boolean; placeholder?: string; /** @default 'medium' */ size?: InputSize; /** * `error` 이외에 상태는 별도로 UI상 표시되지 않습니다. * @default 'info' * */ status?: InputStatus; /** * 칩 목록은 한 줄로 제한하거나 개행되도록 할 수 있습니다. * * - `nowrap`: 칩이 인풋의 너비를 초과하면 수평으로 스크롤됩니다. * - `wrap`: 칩이 인풋의 너비를 초과하면 수직으로 스크롤됩니다. * @default 'nowrap' * */ wrap?: 'wrap' | 'nowrap'; width?: number; /** * `wrap` prop이 `"wrap"`인 경우 최대 높이를 지정할 수 있습니다. * 최대 높이를 초과하면 수직으로 스크롤됩니다. * `maxHeight` prop이 지정되지 않으면 `size` prop에 따라 기본 높이가 적용됩니다.(small: 66px, medium: 80px, large: 90px) * infinite 적용시 value 만큼 높이가 증가합니다. */ maxHeight?: number | 'infinite'; /** * draggable이 true인 경우 칩을 드래그하여 재정렬할 수 있습니다. * @default false */ draggable?: boolean; className?: string; style?: CSSProperties; /** * DragOverlay의 z-index를 지정합니다. * @default getZIndex('draggable') */ z_index?: number; onChange?: (value: ChipInputValue[]) => void; } export declare const getChipInputPaddingBySize: (size: InputSize) => string; /** * 입력된 텍스트가 있다면 아래의 경우에 Chip이 생성 됩니다. * - 엔터키를 입력 * - 쉼표(,)를 입력 * - blur 이벤트가 발생 * - 붙여넣기시 쉼표(,)로 구분된 값들이 칩으로 추가 * * 아래의 경우에 Chip이 삭제 됩니다. * - Chip의 삭제 버튼을 클릭 * - 입력된 텍스트가 없는 상태에서 백스페이스를 누르면 마지막 Chip이 삭제됩니다. */ export declare const ChipInput: React.ForwardRefExoticComponent>;