UNPKG

@ucloud-pccl/react-components

Version:
43 lines (42 loc) 1.85 kB
import { ReactNode } from 'react'; export type Key = number | string; export type KeyMap = Map<Key, boolean>; export type ChildrenMap = Map<Key, ReactNode>; export interface GroupContext { selectedKeyMap?: KeyMap; selectedKeys?: Key[]; toggleKey: (key: Key, selected?: boolean) => void; toggleKeys: (keys: Key[], selected: boolean) => void; multiple?: boolean; subGroupMap?: SubGroupMap; } export declare const defaultContext: GroupContext; export type SelectedStatus = 'NONE' | 'ALL' | 'PART' | 'UNKNOWN'; export type SubGroupMap = Map<Key, { validKeys: Key[]; disabledKeys: Key[]; }>; /** * @param selectedKeys all selected keys * @param onChange callback when selectedKeys change */ declare const useGroup: (selectedKeys: Key[], onChange: (keys: Key[], selectedStatus?: SelectedStatus) => void, multiple?: boolean, validKeys?: Key[], disabledKeys?: Key[], subGroupMap?: SubGroupMap) => [GroupContext, SelectedStatus, () => void]; /** * @param key key of this item * @param groupContext context * @param selected selected prop from item */ declare const useItem: (key: Key, groupContext: GroupContext, selected?: boolean) => [boolean, (selected?: boolean) => void]; /** * @param groupContext context from group * @param validKeys valid wrapped item keys * @param disabledKeys disabled wrapped item keys */ declare const useSubGroup: (key: Key, groupContext: GroupContext) => [SelectedStatus, () => void]; declare const groupChildrenAsDataSource: (children: ReactNode, globalDisabled?: boolean, { itemTag, subGroupTag, itemKeyName, subGroupKeyName }?: { itemTag: string; subGroupTag?: string | undefined; itemKeyName: string; subGroupKeyName?: string | undefined; }) => [Key[], Key[], ReactNode, SubGroupMap, ChildrenMap]; export { useGroup, useItem, useSubGroup, groupChildrenAsDataSource };