import * as React from 'react'; import * as PropTypes from 'prop-types'; import Input from '../Input'; import { LocalInputProps, InputProps, inputPropTypes, inputDefaultProps } from '../Input/Input'; import { SelectMenuSearchInput as _SelectMenuSearchInput } from './styled'; export type LocalSelectMenuSearchInputProps = LocalInputProps & { isDropdownActive?: boolean; }; export type SelectMenuSearchInputProps = InputProps & LocalSelectMenuSearchInputProps; export const selectMenuSearchInputPropTypes = { ...inputPropTypes }; export const selectMenuSearchInputDefaultProps = { ...inputDefaultProps, autoComplete: 'off', // @ts-ignore before: , isDropdownActive: false, isFullWidth: true, placeholder: 'Type to search...' }; export class SelectMenuSearchInput extends React.Component { static propTypes = selectMenuSearchInputPropTypes; static defaultProps = selectMenuSearchInputDefaultProps; search = React.createRef(); componentDidUpdate = (prevProps: LocalSelectMenuSearchInputProps) => { const { isDropdownActive } = this.props; const { isDropdownActive: prevIsDropdownActive } = prevProps; if (isDropdownActive && !prevIsDropdownActive) { requestAnimationFrame(() => this.search.current && this.search.current.focus()); } }; render = () => { const { ...props } = this.props; return <_SelectMenuSearchInput {...props} inputRef={this.search} />; }; } export default SelectMenuSearchInput;