///
import * as react from 'react';
import { ReactNode, PropsWithChildren, RefObject } from 'react';
import { B as ButtonProps } from '../Button.interface-78378581.js';
import { C as ClassName } from '../types-73ca6ab5.js';
import { SingleValue, MultiValue, MenuPlacement, MenuPosition, PropsValue, FormatOptionLabelMeta, OptionsOrGroups, GroupBase } from 'react-select';
type DropdownValueOptions = SingleValue | MultiValue;
interface IDropdownOption {
id: string;
value: string;
label: string;
supportingText?: string;
leftIcon?: ReactNode;
rightIcon?: ReactNode;
caption?: string;
onSelect?: (value?: IDropdownOption) => void;
}
interface IDropdownOptionProps {
option: IDropdownOption;
variant: TDropdownVariant;
isFocused?: boolean;
isSelected?: boolean;
onSelect?: (value?: IDropdownOption) => void;
id?: string;
}
type TDropdownVariant = "default" | "person" | "toggle" | "checkbox-left" | "checkbox-right";
interface IMenuDropdownProps extends ClassName {
options: IDropdownOption[];
selectedItems?: IDropdownOption | IDropdownOption[];
variant: TDropdownVariant;
user?: IUserData;
withUserEntry?: boolean;
extraAction?: IDropdownOption;
extraActionHandler?: (value?: IDropdownOption) => void;
onSelect?: (items: IDropdownOption | IDropdownOption[] | undefined) => void;
isMulti?: boolean;
triggerButtonProps?: Partial;
}
interface IUserData {
avatarUrl?: string;
avatarAltText?: string;
email: string;
firstName: string;
lastName: string;
}
interface IMenuTriggerProps {
onClick(e: React.MouseEvent): void;
triggerButtonProps?: Partial;
}
interface IMenuDropdownListProps extends PropsWithChildren, ClassName {
user?: IUserData;
withUserEntry?: boolean;
extraAction?: IDropdownOption;
extraActionHandler?: (value?: IDropdownOption) => void;
}
interface IMenuDropdownOptionProps extends ClassName {
option: IDropdownOption;
variant: TDropdownVariant;
isSelected: boolean;
onSelect?: (item: IDropdownOption) => void;
id?: string;
}
declare const MenuDropdown: react.ForwardRefExoticComponent>;
interface CustomizableComponents {
menu?: {};
control?: {};
option?: {};
multiValue?: {};
multiValueLabel?: {};
multiValueRemove?: {};
valueContainer?: {};
dropdownIndicator?: {};
clearIndicator?: {};
}
interface ISelectDropdownProps extends ISelectDropdownStateManagerProps, ISelectProps {
id: string;
options: IDropdownOption[];
variant?: TDropdownVariant;
isMulti?: boolean;
hideSelectedOptions?: boolean;
placeholderText?: string;
errorMessage?: string;
label?: string;
supportingText?: string;
isDisabled?: boolean;
instanceId?: string;
isClearable?: boolean;
isLoading?: boolean;
noOptionsMessage?: ReactNode;
customStyles?: CustomizableComponents;
onSelect: (items: DropdownValueOptions) => void;
onInputChange?: (inputValue: string) => void;
}
interface ISelectDropdownStateManagerProps {
defaultInputValue?: string;
defaultMenuIsOpen?: boolean;
defaultValue?: null | IDropdownOption | ReadonlyArray;
}
interface ISelectProps {
form?: string;
autoFocus?: boolean;
backspaceRemovesValue?: boolean;
blurInputOnSelect?: boolean;
closeMenuOnSelect?: boolean;
closeMenuOnScroll?: boolean;
controlShouldRenderValue?: boolean;
delimiter?: string;
escapeClearsValue?: boolean;
inputId?: string;
isRtl?: boolean;
minMenuHeight?: number;
maxMenuHeight?: number;
menuPlacement?: MenuPlacement;
menuPosition?: MenuPosition;
menuPortalTarget?: HTMLElement | null;
menuShouldScrollIntoView?: boolean;
name?: string;
openMenuOnFocus?: boolean;
openMenuOnClick?: boolean;
pageSize?: number;
tabIndex?: number;
tabSelectsValue?: boolean;
required?: boolean;
inputValue?: string;
value?: PropsValue | undefined;
filterOption?: (option: {
label: string;
value: string;
data: IDropdownOption;
}, inputValue: string) => boolean;
getOptionLabel?: (option: IDropdownOption) => string;
getOptionValue?: (option: IDropdownOption) => string;
formatOptionLabel?: (data: IDropdownOption, formatOptionLabelMeta: FormatOptionLabelMeta) => ReactNode;
loadingMessage?: (obj: {
inputValue: string;
}) => ReactNode;
onKeyDown?: React.KeyboardEventHandler;
onMenuScrollToTop?: (event: WheelEvent | TouchEvent) => void;
onMenuScrollToBottom?: (event: WheelEvent | TouchEvent) => void;
}
declare const SelectDropdown: react.ForwardRefExoticComponent>;
declare const useClearSelect: (ref?: RefObject) => {
ref: react.MutableRefObject;
clearValue: () => void;
};
interface IAsyncSelectProps extends Omit {
id: string;
cacheOptions?: boolean;
loadingMessage?: ReactNode;
defaultOptions?: boolean | OptionsOrGroups>;
loadOptions?: (inputValue: string, callback: (options: OptionsOrGroups>) => void) => void | Promise;
}
declare const AsyncSelect: react.ForwardRefExoticComponent>;
interface ICreatableSelectProps extends ISelectDropdownProps {
id: string;
createLabel?: string;
createOptionPosition?: "first" | "last";
isValidNewOption?(): boolean;
onCreateOption?(inputValue: string): void;
}
declare const CreatableSelect: react.ForwardRefExoticComponent>;
declare const useCreatableSelect: (defaultOptions: IDropdownOption[], isMulti?: boolean, delay?: number) => {
onCreateOption: (dropdownOptionElements: IDropdownOption) => void;
selectedItems: DropdownValueOptions | undefined;
setSelectedItems: react.Dispatch>;
options: IDropdownOption[];
setOptions: react.Dispatch>;
isLoading: boolean;
setIsLoading: react.Dispatch>;
};
export { AsyncSelect, CreatableSelect, IAsyncSelectProps, ICreatableSelectProps, IDropdownOption, IDropdownOptionProps, IMenuDropdownListProps, IMenuDropdownOptionProps, IMenuDropdownProps, IMenuTriggerProps, ISelectDropdownProps, ISelectProps, MenuDropdown, SelectDropdown, useClearSelect, useCreatableSelect };