UNPKG

@steambrew/client

Version:
52 lines (40 loc) 1.51 kB
import { ReactNode, FC } from 'react'; import { CommonUIModule } from '../webpack'; import { ItemProps } from './Item'; import { createPropListRegex } from '../utils'; export interface SingleDropdownOption { data: any; label: ReactNode; options?: never; } export interface MultiDropdownOption { label: ReactNode; options: DropdownOption[]; data?: never; } export type DropdownOption = SingleDropdownOption | MultiDropdownOption; export interface DropdownMenuPositionOptions { [_: string]: unknown bMatchWidth?: boolean } export interface DropdownProps { rgOptions: DropdownOption[]; selectedOption: any; disabled?: boolean; onMenuWillOpen?(showMenu: () => void): void; onMenuOpened?(): void; onChange?(data: SingleDropdownOption): void; contextMenuPositionOptions?: DropdownMenuPositionOptions; menuLabel?: string; strDefaultLabel?: string; renderButtonValue?(element: ReactNode): ReactNode; focusable?: boolean; } export const Dropdown = Object.values(CommonUIModule).find( (mod: any) => mod?.prototype?.SetSelectedOption && mod?.prototype?.BuildMenu, ) as FC<DropdownProps>; export interface DropdownItemProps extends DropdownProps, ItemProps {} const dropdownItemRegex = createPropListRegex(["dropDownControlRef", "description"], false); export const DropdownItem = Object.values(CommonUIModule).find((mod: any) => mod?.toString && dropdownItemRegex.test(mod.toString()), ) as FC<DropdownItemProps>;