콘텐츠로 이동
Data TableAPI Reference

입력·선택 컴포넌트

comins-table@0.2.2React

input, checkbox, radio, select, toggle의 설정과 변경 이벤트입니다. 모두 셀·헤더에 사용할 수 있습니다. 셀 input/select는 정확히 한 행을 선택했을 때 나타납니다. 콜백을 생략하면 애플리케이션 data를 갱신하지 않습니다.

input은 타이핑 중 내부 draft만 변경합니다. Enter 또는 blur에서 이전 확정 값과 다르면 onChange → onValueChange 순으로 호출합니다. Enter 뒤 blur가 이어져도 같은 값을 두 번 확정하지 않습니다. 두 콜백을 모두 등록하면 각각 호출되므로 실제 데이터 갱신은 한쪽에서 수행하십시오. props.onChange는 이 컴포넌트의 확정 이벤트가 아닙니다. Escape 취소를 기본 동작으로 가정하지 마십시오.

select/radio의 onValueChange.value는 원래 option.value가 number/boolean이어도 string입니다. 업무 타입으로 명시적으로 변환합니다. checkbox/toggle은 checked boolean을 받습니다. checkbox/toggle의 즉시 표시 상태는 일시적이며 최종 값은 부모 data에 반영해야 합니다.

행을 선택한 뒤 이름을 수정하십시오. 타이핑 중에는 아래 데이터가 유지되고 Enter로 한 번 확정됩니다. 역할 선택·체크·토글·버튼은 전용 콜백만 기록하며 일반 셀/행 클릭 횟수를 늘리지 않습니다.

type: "input";

필수 리터럴 input입니다.

props?: CominsTableComponentProps<TPayload, React.InputHTMLAttributes<HTMLInputElement>>;

input HTML 속성 또는 resolver. value/defaultValue가 없으면 빈 문자열입니다. 숫자형 input도 이벤트 값은 문자열입니다.

onValueChange?: (payload: TPayload & {
value: string;
}) => void;

확정된 문자열을 전달합니다. 기본 콜백 없음. 변경 확정 시점은 위 설명을 따릅니다.

onChange?: (payload: TPayload & {
event: CominsInputCommitEvent;
value: string;
}) => void;

확정 이벤트와 문자열 value를 전달합니다. onValueChange보다 먼저 호출합니다. event 타입은 아래 CominsInputCommitEvent입니다.

type: "checkbox";

필수 리터럴 checkbox입니다.

props?: CominsTableComponentProps<TPayload, React.InputHTMLAttributes<HTMLInputElement>>;

checked/defaultChecked 초기값은 false입니다. disabled·aria-label 등 input 속성을 지정합니다.

onCheckedChange?: (payload: TPayload & {
checked: boolean;
}) => void;

변경된 checked를 전달합니다. 미지정 시 부모 data는 그대로입니다.

type: "radio";

필수 리터럴 radio입니다.

props?: CominsTableComponentProps<TPayload, React.HTMLAttributes<HTMLDivElement> & {
value?: CominsComponentPrimitiveValue;
}>;

div HTML 속성과 선택 value입니다. 셀에서는 value 생략 시 원본 셀 값을 사용합니다. 항목 비활성은 options[].disabled입니다.

onValueChange?: (payload: TPayload & {
value: string;
}) => void;

선택한 option.value를 문자열로 전달합니다.

options: CominsTableOptions<TPayload>;

필수. 선택지 배열 또는 payload 기반 함수입니다. label/value를 제공하고 문자열로 변환했을 때도 value가 고유하도록 구성합니다.

type: "select";

필수 리터럴 select입니다.

props?: CominsTableComponentProps<TPayload, React.SelectHTMLAttributes<HTMLSelectElement>>;

select HTML 속성 또는 resolver입니다. props.value로 부모 값을 연결합니다.

onValueChange?: (payload: TPayload & {
value: string;
}) => void;

선택 변경 시 문자열을 전달합니다. 기본 콜백 없음.

options: CominsTableOptions<TPayload>;

필수. 선택지 배열 또는 payload 기반 함수입니다. label/value를 제공하고 문자열로 변환했을 때도 value가 고유하도록 구성합니다.

type: "toggle";

필수 리터럴 toggle입니다.

props?: CominsTableComponentProps<TPayload, React.ButtonHTMLAttributes<HTMLButtonElement> & {
checked?: boolean;
}>;

button HTML 속성과 checked입니다. 초기 checked는 false. children으로 버튼 내용을 제공합니다.

onCheckedChange?: (payload: TPayload & {
checked: boolean;
}) => void;

반전된 checked boolean을 전달합니다. 기본 콜백 없음.

label: React.ReactNode;

필수. 선택지에 표시하는 내용입니다.

value: CominsComponentPrimitiveValue;

필수. string/number/boolean 값입니다. select/radio 이벤트에서는 문자열로 전달됩니다.

disabled?: boolean;

기본 false. 해당 선택지를 비활성화합니다.

export type CominsInputCommitEvent = React.ChangeEvent<HTMLInputElement> | React.FocusEvent<HTMLInputElement> | React.KeyboardEvent<HTMLInputElement>;

배포 타입은 Change/Focus/Keyboard 이벤트의 합집합입니다. 현재 input 구현은 Enter/blur 확정에서 Keyboard/Focus 이벤트를 전달합니다.