import { FunctionComponent, SVGAttributes } from "react"; type ItemObj = { label: string; value: string; }; export type Item = ItemObj | string | any; // any - as item can any number of key-value pairs export interface MenuGroup { id: ItemId; label: string; value: string; groupHeading: string; options?: MenuGroup[] | null; isMultiSelection?: boolean; } export interface MenuGroupMapVal { id: ItemId; label: string; value: string; groupHeading: string; childIds?: ItemId[] | null; parentId?: ItemId; isMultiSelection?: boolean; } export interface MenuGroupMap { [id: ItemId]: MenuGroupMapVal; } export interface FormatedSelections { id: ItemId; label: string; value: string; groupHeading: string; parentGroup?: string; parentId?: ItemId; childGroup?: string; childIds?: ItemId[]; options: FormatedSelections[]; } export type emptyObj = {}; export interface SelectedItemTypeVal { id: ItemId; childIds: ItemId[] | null; } export interface SelectedItemType { [id: ItemId]: SelectedItemTypeVal; } export type ItemId = number | string; export enum MODES { LIGHT = "light", DARK = "dark", } export enum LAYOUT { HORIZONTAL = "horizontal", VERTICAL = "vertical", } /** * update: * selectionLimit?: number; */ export interface Props { menuGroup: MenuGroup; selectedItems?: FormatedSelections | null; width?: string; displayValue?: string; // read label using this property of menugroup theme?: MODES.LIGHT | MODES.DARK; selectionColor?: string; layout?: LAYOUT.HORIZONTAL | LAYOUT.VERTICAL; } export interface DPItemProps { menuGroup: MenuGroup; activeItem: SelectedItemType; selectedItems: SelectedItemType; displayValue: string; showNext: boolean; handleItemSelection: ( item: MenuGroup, groupHeading: string, parentId: ItemId, isMultiSelection: boolean ) => void; handleMultipleChildrenSel: ( items: MenuGroup[] | [], parentId: ItemId, allItemsChecked: boolean ) => void; level: number; } export interface IconType { [key: string]: FunctionComponent>; } export interface CompleteObj { label: string; indexes: number[]; }