chowa
Version:
UI component library based on React
115 lines (114 loc) • 4.11 kB
TypeScript
/**
* @license chowa v1.1.3
*
* Copyright (c) Chowa Techonlogies Co.,Ltd.(http://www.chowa.cn).
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import * as React from 'react';
import * as PropTypes from 'prop-types';
import SelectOption, { SelectOptionProps } from './select-option';
import SelectOptionGroup, { SelectOptionGroupProps } from './select-option-group';
export declare type Option = SelectOptionProps & {
children: React.ReactNode;
};
export interface OptionGroup extends SelectOptionGroupProps {
options: [(Option | OptionGroup)?];
}
export declare type Options = [(Option | OptionGroup)?];
export interface SelectProps {
className?: string;
style?: React.CSSProperties;
visible?: boolean;
defaultVisible?: boolean;
externalWheelHide?: boolean;
options?: Options;
tabIndex?: number;
multiple?: boolean;
disabled?: boolean;
showArrow?: boolean;
searchable?: boolean;
defaultValue?: any | any[];
value?: any | any[];
placeholder?: string;
onChange?: (value: any[] | any) => void;
onDeselect?: (value: any) => void;
onSelect?: (value: any) => void;
onSearch?: (searchValue: string) => void;
onFilter?: (searchValue: string, option: Option) => boolean;
noDataDescription?: React.ReactNode;
noDataImg?: string;
noDataImgStyle?: React.CSSProperties;
clearable?: boolean;
}
interface SelectState {
renderOptions: Options;
selectedOptions: Option[];
selectorVisible: boolean;
clearBtnVisible: boolean;
searching: boolean;
searchValue: string;
activeOption: Option;
}
declare class Select extends React.PureComponent<SelectProps, SelectState> {
static propTypes: {
className: PropTypes.Requireable<string>;
style: PropTypes.Requireable<object>;
visible: PropTypes.Requireable<boolean>;
defaultVisible: PropTypes.Requireable<boolean>;
externalWheelHide: PropTypes.Requireable<boolean>;
tabIndex: PropTypes.Requireable<number>;
multiple: PropTypes.Requireable<boolean>;
disabled: PropTypes.Requireable<boolean>;
showArrow: PropTypes.Requireable<boolean>;
searchable: PropTypes.Requireable<boolean>;
defaultValue: PropTypes.Requireable<any>;
value: PropTypes.Requireable<any>;
placeholder: PropTypes.Requireable<string>;
onChange: PropTypes.Requireable<(...args: any[]) => any>;
onDeselect: PropTypes.Requireable<(...args: any[]) => any>;
onSelect: PropTypes.Requireable<(...args: any[]) => any>;
onSearch: PropTypes.Requireable<(...args: any[]) => any>;
onFilter: PropTypes.Requireable<(...args: any[]) => any>;
noDataDescription: PropTypes.Requireable<PropTypes.ReactNodeLike>;
noDataImg: PropTypes.Requireable<string>;
noDataImgStyle: PropTypes.Requireable<object>;
clearable: PropTypes.Requireable<boolean>;
};
static defaultProps: {
visible: boolean;
defaultVisible: boolean;
externalWheelHide: boolean;
tabIndex: number;
multiple: boolean;
disabled: boolean;
showArrow: boolean;
searchable: boolean;
clearable: boolean;
};
static Option: typeof SelectOption;
static OptionGroup: typeof SelectOptionGroup;
private inputElement;
constructor(props: SelectProps & {
children: React.ReactNode;
});
componentDidUpdate(preProps: SelectProps & {
children: React.ReactElement<any>;
}, preState: SelectState): void;
private onKeyboardOperation;
private onTriggerMouseEnterHandler;
private onTriggerMouseLeaveHandler;
private onSearchChangeHandler;
private onSearchFocusHandler;
private onSearchBlurHandler;
private clearSelected;
private onVisibleChange;
private onDeSelectHandler;
private onSelectHandler;
private onOptionMouseEnter;
private onOptionMouseLeave;
private renderContent;
render(): JSX.Element;
}
export default Select;