import React, { ReactElement } from "react"; import { IconName, IconSize } from "Icon"; import { CommonComponentProps, SubTextPosition } from "Types/common"; import { PopperBoundary } from "@blueprintjs/core"; import "./styles.css"; export type DropdownOnSelect = (value?: string, dropdownOption?: any, isUpdatedViaKeyboard?: boolean) => void; export type DropdownOption = { label?: string; value?: string; id?: string; icon?: IconName; leftElement?: string; searchText?: string; subText?: string; subTextPosition?: SubTextPosition; iconSize?: IconSize; iconColor?: string; onSelect?: DropdownOnSelect; data?: any; isSectionHeader?: boolean; disabled?: boolean; disabledTooltipText?: string; hasCustomBadge?: boolean; link?: string; }; export interface DropdownSearchProps { enableSearch?: boolean; searchPlaceholder?: string; onSearch?: (value: any) => void; searchAutoFocus?: boolean; } export interface RenderDropdownOptionType { index?: number; option: DropdownOption | DropdownOption[]; optionClickHandler?: (dropdownOption: DropdownOption) => void; isSelectedNode?: boolean; extraProps?: any; hasError?: boolean; optionWidth: string; isHighlighted?: boolean; } export type RenderOption = ({ hasError, index, option, optionClickHandler, optionWidth, }: RenderDropdownOptionType) => ReactElement; export type DropdownProps = CommonComponentProps & DropdownSearchProps & { options: DropdownOption[]; selected: DropdownOption | DropdownOption[]; onSelect?: DropdownOnSelect; isMultiSelect?: boolean; width?: string; height?: string; showLabelOnly?: boolean; labelRenderer?: (selected: Partial[]) => JSX.Element; optionWidth?: string; dropdownHeight?: string; dropdownMaxHeight?: string; showDropIcon?: boolean; closeOnSpace?: boolean; dropdownTriggerIcon?: React.ReactNode; containerClassName?: string; headerLabel?: string; SelectedValueNode?: typeof DefaultDropDownValueNode; bgColor?: string; renderOption?: RenderOption; isLoading?: boolean; hasError?: boolean; errorMsg?: string; placeholder?: string; helperText?: string; wrapperBgColor?: string; /** * if fillOptions is true, * dropdown popover width will be same as dropdown width * @type {boolean} */ fillOptions?: boolean; dontUsePortal?: boolean; hideSubText?: boolean; removeSelectedOption?: DropdownOnSelect; boundary?: PopperBoundary; defaultIcon?: IconName; allowDeselection?: boolean; truncateOption?: boolean; portalClassName?: string; portalContainer?: HTMLElement; customBadge?: JSX.Element; selectedHighlightBg?: string; showEmptyOptions?: boolean; }; export interface DefaultDropDownValueNodeProps { selected: DropdownOption | DropdownOption[]; showLabelOnly?: boolean; labelRenderer?: (selected: Partial[]) => JSX.Element; isMultiSelect?: boolean; isOpen?: boolean; hasError?: boolean; renderNode?: RenderOption; removeSelectedOptionClickHandler?: (option: DropdownOption) => void; placeholder?: string; showDropIcon?: boolean; optionWidth: string; hideSubText?: boolean; } export interface RenderDropdownOptionType { option: DropdownOption | DropdownOption[]; optionClickHandler?: (dropdownOption: DropdownOption) => void; } export declare const DropdownContainer: import("styled-components").StyledComponent<"div", any, { disabled?: boolean | undefined; width: string; height?: string | undefined; }, never>; export declare const DropdownWrapper: import("styled-components").StyledComponent<"div", any, { width: string; isOpen: boolean; wrapperBgColor?: string | undefined; }, never>; declare function DefaultDropDownValueNode({ hasError, hideSubText, isMultiSelect, labelRenderer, optionWidth, placeholder, removeSelectedOptionClickHandler, renderNode, selected, showDropIcon, showLabelOnly, }: DefaultDropDownValueNodeProps): JSX.Element; interface DropdownOptionsProps extends DropdownProps, DropdownSearchProps { optionClickHandler: (option: DropdownOption) => void; removeSelectedOptionClickHandler: (option: DropdownOption) => void; renderOption?: RenderOption; headerLabel?: string; highlightIndex?: number; selected: DropdownOption | DropdownOption[]; optionWidth: string; wrapperBgColor?: string; isMultiSelect?: boolean; allowDeselection?: boolean; isOpen: boolean; showEmptyOptions?: boolean; } export declare function RenderDropdownOptions(props: DropdownOptionsProps): JSX.Element; export default function Dropdown(props: DropdownProps): JSX.Element; export {};