콘텐츠로 이동
Data TableAPI Reference

이동 함수·결과 모델

comins-table@0.2.2React

transferCominsRowBetweenTables와 transferCominsGroupBetweenTables는 comins-table에서 import하는 동기 순수 함수입니다. 입력 배열을 직접 변경하지 않고 양쪽 다음 모델을 반환합니다. 성공 결과를 부모 상태에 반영하기 전에는 화면이 바뀌지 않습니다.

결과가 null이면 조건 불충족/충돌 거절이며 기존 양쪽 상태를 유지합니다. 성공 결과는 source/target을 함께 반영합니다. 순수 함수에는 coordinator·canTransfer·pointer lifecycle이 없으므로 애플리케이션 권한 검사는 호출 전에 수행합니다. 툴팁이나 onTransferRejected도 발생하지 않습니다. 사용자 resolver/getter가 던지는 예외는 애플리케이션에서 처리합니다.

data: readonly TData[];

필수. 부모가 소유한 읽기 전용 원본 행 배열입니다.

getRowId: (row: TData, dataIndex: number) => CominsRowId;

필수. 입력 행의 안정적 ID를 반환합니다. 이동 전후에도 유지해야 합니다.

tableId: string;

필수. source와 target의 서로 다른 ID입니다.

groups?: readonly TGroup[];

그룹 이동에서 필요한 그룹 정의 배열입니다. 생략하면 flat endpoint입니다.

getGroupId?: (group: TGroup) => CominsRowId;

그룹 endpoint에서 필요한 고유 ID resolver입니다.

getRowGroupId?: (row: TData, dataIndex: number) => CominsRowId;

그룹 endpoint에서 필요한 행 소속 resolver입니다.

setRowGroupId?: (params: {
fromGroupId: CominsRowId;
row: TData;
rowId: CominsRowId;
toGroupId: CominsRowId;
}) => TData;

대상 그룹으로 행 소속을 바꿀 때 새 행을 반환합니다. 원본 객체와 업무 ID를 변경하지 않습니다.

source: CominsTableTransferEndpoint<TData, TGroup>;

필수. 출발 endpoint입니다.

sourceRowId: CominsRowId;

필수. 이동할 원본 행 ID입니다.

target: CominsTableTransferEndpoint<TData, TGroup>;

필수. 도착 endpoint입니다. source와 같은 tableId는 거절합니다.

targetRowId?: CominsRowId;

대상 행 앞에 삽입합니다. flat에서 생략하면 끝, grouped는 지정한 대상 그룹의 삽입 위치를 사용합니다.

targetGroupId?: CominsRowId;

grouped 행 이동의 대상 그룹 ID입니다. flat에서는 지정하지 않습니다.

resolveConflict?: CominsTableTransferConflictResolver<TData, TGroup>;

중복 ID 처리입니다. 미지정/undefined는 reject입니다.

source: CominsTableTransferEndpoint<TData, TGroup>;

필수. 그룹 정보를 갖춘 출발 endpoint입니다.

sourceGroupId: CominsRowId;

필수. 멤버와 함께 이동할 그룹 ID입니다. 빈 그룹도 이동합니다.

target: CominsTableTransferEndpoint<TData, TGroup>;

필수. 그룹 정보를 갖춘 도착 endpoint입니다.

targetGroupId?: CominsRowId;

before/after의 기준 그룹입니다. 생략 시 기본 append입니다.

position?: CominsTableTransferDropPosition;

after/append/before. 기본값은 targetGroupId가 없으면 append, 있으면 before입니다.

resolveConflict?: CominsTableTransferConflictResolver<TData, TGroup>;

중복 그룹 또는 멤버 ID 처리입니다. 미지정 시 reject입니다.

kind: "group" | "row";

실행한 이동 종류 row/group입니다.

source: CominsTableTransferNextEndpoint<TData, TGroup>;

출발 tableId와 다음 data, 선택적 groups를 포함합니다.

target: CominsTableTransferNextEndpoint<TData, TGroup>;

도착 tableId와 다음 data, 선택적 groups를 포함합니다.

details: CominsTableTransferDetails<TData, TGroup>;

이동 ID·대상 위치·처리한 충돌 목록입니다. kind로 세부 타입을 구분합니다.

export type CominsTableTransferRowEndpoint<TData> = {
dataIndex: number;
row: TData;
rowId: CominsRowId;
tableId: string;
};

충돌 payload의 행 위치입니다. dataIndex는 해당 원본 배열의 위치이며 row/rowId/tableId로 데이터를 식별합니다.

export type CominsTableTransferGroupEndpoint<TData, TGroup> = {
group: TGroup;
groupId: CominsRowId;
groupIndex: number;
rows: readonly CominsTableTransferRowEndpoint<TData>[];
tableId: string;
};

충돌 payload의 그룹 위치입니다. groupIndex는 groups 위치, rows는 멤버 endpoint 목록입니다.

export type CominsTableTransferResolvedConflict<TData, TGroup> = {
conflict: CominsTableTransferConflict<TData, TGroup>;
policy: CominsTableTransferConflictPolicy;
};

conflict와 선택된 reject/overwrite 정책의 쌍입니다.

export type CominsTableRowTransferDetails<TData, TGroup> = {
conflicts: readonly CominsTableTransferResolvedConflict<TData, TGroup>[];
kind: "row";
sourceRowId: CominsRowId;
targetGroupId?: CominsRowId;
targetRowId?: CominsRowId;
};

row 이동 식별자와 해결된 conflicts입니다. 대상 행/그룹은 생략될 수 있습니다.

export type CominsTableGroupTransferDetails<TData, TGroup> = {
conflicts: readonly CominsTableTransferResolvedConflict<TData, TGroup>[];
kind: "group";
position: CominsTableTransferDropPosition;
sourceGroupId: CominsRowId;
targetGroupId?: CominsRowId;
};

group 이동 식별자·position·conflicts입니다. targetGroupId는 append에서 생략될 수 있습니다.

export declare function transferCominsRowBetweenTables<TData, TGroup = never>(input: CominsRowBetweenTablesInput<TData, TGroup>): CominsTableTransferResult<TData, TGroup> | null;

입력은 위 CominsRowBetweenTablesInput입니다. 성공 시 양쪽 다음 모델, 거절 시 null을 반환합니다.

export declare function transferCominsGroupBetweenTables<TData, TGroup>(input: CominsGroupBetweenTablesInput<TData, TGroup>): CominsTableTransferResult<TData, TGroup> | null;

입력은 위 CominsGroupBetweenTablesInput입니다. 그룹과 모든 멤버를 함께 이동하며 거절 시 null입니다.