react-cascading-menu
Version:
A powerful React cascading dropdown component with multi-selection, search functionality, and hierarchical navigation. Perfect for building category selectors, dependent dropdowns, and nested menu systems with TypeScript support.
39 lines (38 loc) • 1.92 kB
TypeScript
import { CompleteObj, FormatedSelections, ItemId, MenuGroup, MenuGroupMap, SelectedItemType } from "../types";
/**
* convert menuGroup tree to map
* for each node access without need to store the node details redundantly
* and simplify the management complexity
*
* downward propogation through childIds
* upward propogation through parentId
*/
export declare const menuGroupTreeToMap: (menuGroup: MenuGroup) => MenuGroupMap;
export declare const getConnectedItemByDirection: (obj: MenuGroupMap, isForward: boolean | undefined, nodeId: ItemId, selectedItems: SelectedItemType, isSingleSelection?: boolean) => SelectedItemType;
export declare const getConnectedItems: (obj: MenuGroupMap, nodeId: ItemId, selectedItems: SelectedItemType, isSingleSelection?: boolean) => SelectedItemType;
export declare const addItemSelection: (menuGroupMap: MenuGroupMap, selectedItems: SelectedItemType, itemId: ItemId) => SelectedItemType;
/**
*
* cascading item removal and highlights the next available selection
*/
export declare const cascadeSelectionRemovalWithProps: (menuGroupMap: MenuGroupMap, selectedItems: SelectedItemType, itemId: ItemId, additionalProps?: {
isParentUpdateRequired?: boolean;
getNextAvailableSelection?: boolean;
isMultiSelection?: boolean;
}) => {
newSelectedItems: SelectedItemType;
newChildId?: ItemId;
};
export declare const initPreSelections: (selections: FormatedSelections | null) => {
newSelectedItems: SelectedItemType;
newActiveItems: {};
} | {
newSelectedItems: SelectedItemType;
newActiveItems?: undefined;
};
/**
* Cascading item removal(current+children)
* Removes the current selection and its children selections
*/
export declare const cascadeSelectionRemoval: (obj: MenuGroupMap, selectedItems: SelectedItemType, nodeId: ItemId) => SelectedItemType;
export declare function getAllLeafNodes(treeObj: MenuGroup, index: number): CompleteObj[];