import * as React from 'react'; import classNames from 'classnames'; import Input, { InputProps } from './Input'; import Icon from '../icon'; import Button from '../button'; export interface SearchProps extends InputProps { inputPrefixCls?: string; onSearch?: (value: string) => any; enterButton?: boolean | React.ReactNode; } export default class Search extends React.Component { static defaultProps = { inputPrefixCls: 'ant-input', prefixCls: 'ant-input-search', enterButton: false, }; private input: Input; onSearch = () => { const { onSearch } = this.props; if (onSearch) { onSearch(this.input.input.value); } this.input.focus(); } saveInput = (node: Input) => { this.input = node; } render() { const { className, prefixCls, inputPrefixCls, size, enterButton, suffix, ...others } = this.props; delete (others as any).onSearch; const buttonOrIcon = enterButton ? ( ) : ; const searchSuffix = suffix ? [suffix, buttonOrIcon] : buttonOrIcon; const inputClassName = classNames(prefixCls, className, { [`${prefixCls}-enter-button`]: !!enterButton, [`${prefixCls}-${size}`]: !!size, }); return ( ); } }