콘텐츠로 이동
Data TableAPI Reference

Tree 조회·변경 함수

comins-table@0.2.2React

comins-table 루트에서 import합니다.

export type CominsTreeNode<TItem> = {
children?: readonly CominsTreeNode<TItem>[];
expand?: boolean;
item: TItem;
};

item은 업무 데이터, children은 자식 노드, expand는 개별 펼침 상태입니다. 일반 행 배열과 구분되며 자식이 없는 노드는 leaf입니다. 객체와 배열은 애플리케이션이 소유합니다.

export type CominsTreeExpansionOptions = {
defaultExpandAll?: boolean;
};

Core 펼침 기본값은 false입니다. node.expand가 설정되면 우선합니다. React CominsTable의 defaultExpandAll 기본값(true)과 다르므로 같은 투영을 원하면 명시적으로 전달하십시오.

export type CominsVisibleTreeRow<TItem> = {
depth: number;
expanded: boolean;
hasChildren: boolean;
item: TItem;
path: readonly number[];
rowId: CominsRowId;
};

depth는 루트 0부터의 깊이, path는 원본 트리의 자식 인덱스 경로입니다. rowId는 getRowId 결과이며 item은 원본 업무 데이터 참조입니다. expanded/hasChildren으로 펼침 컨트롤을 구성합니다.

export declare function flattenCominsTree<TItem>(nodes: readonly CominsTreeNode<TItem>[], getRowId: (item: TItem, index: number) => CominsRowId, options?: CominsTreeExpansionOptions): CominsVisibleTreeRow<TItem>[];

펼쳐진 경로의 노드를 깊이 우선 순서로 반환합니다. getRowId의 index는 접힌 자식을 포함한 전체 트리 깊이 우선 인덱스입니다. 숨겨진 자식도 ID를 검사하므로 중복 ID는 오류입니다. 반환 item은 복제하지 않습니다.

export declare function getCominsTreeLeafItems<TItem>(nodes: readonly CominsTreeNode<TItem>[]): TItem[];

펼침 상태와 무관하게 모든 leaf의 item만 반환합니다. 부모와 자식을 함께 합산하지 않도록 Tree 집계에 사용할 수 있습니다. 원본 item 참조를 유지합니다.

export declare function toggleCominsTreeNode<TItem>(nodes: readonly CominsTreeNode<TItem>[], rowId: CominsRowId, getRowId: (item: TItem, index: number) => CominsRowId, options?: CominsTreeExpansionOptions): CominsTreeNode<TItem>[];

대상 expand를 현재 유효 상태의 반대로 바꿉니다. 경로의 노드와 배열을 새로 만들고 나머지 참조는 보존합니다. 없는 ID는 얕게 복사한 최상위 배열을 반환하며 중복 ID는 오류입니다.

export declare function updateCominsTreeItem<TItem>(nodes: readonly CominsTreeNode<TItem>[], rowId: CominsRowId, getRowId: (item: TItem, index: number) => CominsRowId, update: (item: TItem) => TItem): CominsTreeNode<TItem>[];

대상 item에 update를 적용하며 children과 expand를 보존합니다. update는 업무 객체를 직접 변경하지 않고 새 값을 반환해야 합니다. 없는 ID는 최상위 배열의 얕은 복사이며 중복 ID는 오류입니다.

export declare function sortCominsTreeSiblings<TItem>(nodes: readonly CominsTreeNode<TItem>[], compare: (left: TItem, right: TItem) => number): CominsTreeNode<TItem>[];

각 형제 배열을 재귀적으로 정렬합니다. 부모·자식 관계를 바꾸지 않고 새 노드·배열을 반환하며 item 참조와 expand 값을 유지합니다. compare에는 item 두 개가 전달됩니다.

export declare function moveCominsTreeNode<TItem>(nodes: readonly CominsTreeNode<TItem>[], rowId: CominsRowId, destination: CominsTreeMoveDestination, getRowId: (item: TItem, index: number) => CominsRowId, options?: {
allowReparent?: boolean;
}): readonly CominsTreeNode<TItem>[];

전체 subtree를 목적지 부모의 beforeRowId 앞(또는 null이면 끝)으로 이동합니다. 기본은 형제 이동만 허용하며 부모 변경은 allowReparent: true가 필요합니다. 없는 목적지·자기 자손·무변경 이동은 원본 배열을 반환합니다. 중복 ID는 오류입니다. 드래그 제약과 목적지를 함께 참고하십시오.