import { Box, Icon, TextInput, Button } from '@rocket.chat/fuselage'; import React, { FC, ChangeEvent, FormEvent, memo, useCallback, useEffect, useState } from 'react'; import { useTranslation } from '../contexts/TranslationContext'; type FilterByTextProps = { placeholder?: string; onChange: (filter: { text: string }) => void; inputRef?: () => void; }; type FilterByTextPropsWithButton = FilterByTextProps & { displayButton: true; textButton: string; onButtonClick: () => void; }; const isFilterByTextPropsWithButton = (props: any): props is FilterByTextPropsWithButton => 'displayButton' in props && props.displayButton === true; const FilterByText: FC = ({ placeholder, onChange: setFilter, inputRef, children, ...props }) => { const t = useTranslation(); const [text, setText] = useState(''); const handleInputChange = useCallback((event: ChangeEvent) => { setText(event.currentTarget.value); }, []); useEffect(() => { setFilter({ text }); }, [setFilter, text]); const handleFormSubmit = useCallback((event: FormEvent) => { event.preventDefault(); }, []); return ( } onChange={handleInputChange} value={text} /> {isFilterByTextPropsWithButton(props) ? ( ) : ( children && {children} )} ); }; export default memo>(FilterByText);