rsuite
Version:
A suite of react components
72 lines (71 loc) • 2.52 kB
TypeScript
/// <reference types="react" />
import { MultiCascaderProps, ValueType } from './MultiCascader';
import { ItemDataType } from '../@types/common';
export interface ItemType extends ItemDataType {
parent?: ItemType;
}
interface ItemKeys {
valueKey: string;
labelKey: string;
childrenKey: string;
}
declare type MayHasParent<T extends Record<string, unknown>> = T & {
parent?: MayHasParent<T>;
};
/**
* Get all parents of a node
* @param node
*/
export declare const getParents: <T extends Record<string, unknown>>(node: MayHasParent<T>) => MayHasParent<T>[];
/**
* Check if any child nodes are selected.
* @param node
* @param value
* @param itemKeys
*/
export declare const isSomeChildChecked: <T extends Record<string, unknown>>(node: T, value: ValueType, itemKeys: Omit<ItemKeys, 'labelKey'>) => any;
/**
* Check if the parent is selected.
* @param node
* @param value
* @param itemKeys
*/
export declare const isSomeParentChecked: <T extends Record<string, unknown>>(node: MayHasParent<T>, value: ValueType, itemKeys: Pick<ItemKeys, 'valueKey'>) => any;
export declare const getOtherItemValuesByUnselectChild: <T>(itemNode: ItemType, value: any, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[];
/**
* Remove the values of all children.
*/
export declare const removeAllChildrenValue: <T>(value: T[], item: ItemType, itemKeys: Omit<ItemKeys, 'labelKey'>) => T[] | undefined;
/**
* A hook to flatten tree structure data
* @param data
*/
export declare function useFlattenData<T>(data: T[], itemKeys: ItemKeys): {
addFlattenData: (children: T[], parent: T) => void;
flattenData: T[];
};
/**
* A hook for column data
* @param flattenData
*/
export declare function useColumnData<T extends MayHasParent<Record<string, unknown>>>(flattenData: T[]): {
columnData: T[][];
addColumn: (column: T[], index: number) => void;
romoveColumnByIndex: (index: number) => void;
setColumnData: import("react").Dispatch<import("react").SetStateAction<T[][]>>;
enforceUpdateColumnData: (nextData: T[]) => void;
};
/**
* A hook that converts the value into a cascading value
* @param props
* @param flattenData
*/
export declare function useCascadeValue<T>(props: Partial<MultiCascaderProps<T[]>> & ItemKeys, flattenData: ItemType[]): {
value: T[];
setValue: import("react").Dispatch<import("react").SetStateAction<T[]>>;
splitValue: (item: ItemType, checked: boolean, value: T[]) => {
value: T[];
removedValue: T[];
};
};
export {};