import React from 'react'; import { MDCSelectAdapter } from '@material/select/adapter'; import { MDCSelectFoundation } from '@material/select/foundation'; import MDCSelectHelperTextFoundation from '@material/select/helper-text/foundation'; import MDCSelectIconFoundation from '@material/select/icon/foundation'; import { EnhancedChild } from './EnhancedSelect'; import Option, { OptionProps } from './Option'; import { SelectHelperTextProps } from './helper-text/index'; import { SelectIconProps } from './icon/index'; declare type SelectOptionsType = (string | React.HTMLProps)[]; declare type NativeChild = React.ReactElement>; declare type SelectChildren = EnhancedChild | EnhancedChild[] | NativeChild | NativeChild[]; export interface SelectProps extends React.HTMLProps { enhanced?: boolean; children?: SelectChildren; className?: string; disabled?: boolean; floatingLabelClassName?: string; label?: string; lineRippleClassName?: string; selectClassName?: string; notchedOutlineClassName?: string; outlined?: boolean; options?: SelectOptionsType; value: string; afterChange?: (value: string) => void; onEnhancedChange?: (index: number, target: Element) => void; helperText?: React.ReactElement; leadingIcon?: React.ReactElement; } interface SelectState { open?: boolean; value: string; classList: Set; disabled: boolean; labelIsFloated: boolean; labelWidth: number; activeLineRipple: boolean; lineRippleCenter?: number; outlineIsNotched: boolean; selectElement: React.RefObject; isInvalid: boolean; helperTextFoundation?: MDCSelectHelperTextFoundation; iconFoundation?: MDCSelectIconFoundation; foundation?: MDCSelectFoundation; } export default class Select extends React.Component, SelectState> { nativeControl: React.RefObject; classesBeingRemoved: Set; classesBeingAdded: Set; constructor(props: SelectProps); static defaultProps: Partial>; componentDidMount(): void; componentDidUpdate(prevProps: SelectProps, prevState: SelectState): void; componentWillUnmount(): void; /** * getters */ readonly classes: string; readonly adapter: MDCSelectAdapter; readonly foundationMap: { helperText: MDCSelectHelperTextFoundation | undefined; leadingIcon: MDCSelectIconFoundation | undefined; }; createFoundation: (callback?: (() => void) | undefined) => void; destroyFoundation: () => void; addClass: (className: string) => void; removeClass: (className: string) => void; closeMenu: () => void; setValidClasses: (isValid: boolean) => void; setHelperTextFoundation: (helperTextFoundation: MDCSelectHelperTextFoundation) => void; setIconFoundation: (iconFoundation: MDCSelectIconFoundation) => void; /** * render methods */ render(): JSX.Element; renderSelect(): JSX.Element; renderOptions(): JSX.Element[] | React.ReactElement, string | ((props: any) => React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; renderLabel(): JSX.Element | undefined; renderLineRipple(): JSX.Element; renderNotchedOutline(): JSX.Element; renderHelperText(): React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; renderIcon(): React.ReactElement React.ReactElement React.Component)> | null) | (new (props: any) => React.Component)> | undefined; } export { SelectHelperText, SelectHelperTextProps } from './helper-text'; export { SelectIcon, SelectIconProps } from './icon/index'; export { Option }; export { MenuListDivider as OptionDivider, MenuListGroup as OptionGroup, MenuListGroupSubheader as OptionGroupSubheader, MenuListItemGraphic as OptionGraphic, MenuListItemMeta as OptionMeta, MenuListItemText as OptionText, } from '@material/react-menu';