diff --git a/app/components/InputSearch.js b/app/components/InputSearch.js index 8cc696b5..f36895f6 100644 --- a/app/components/InputSearch.js +++ b/app/components/InputSearch.js @@ -22,7 +22,9 @@ type Props = { collectionId?: string, redirectDisabled?: boolean, maxWidth?: string, + value: string, onChange: (event: SyntheticInputEvent<>) => mixed, + onKeyDown: (event: SyntheticKeyboardEvent<>) => mixed, t: TFunction, }; @@ -59,7 +61,7 @@ class InputSearch extends React.Component { }; render() { - const { t, redirectDisabled, onChange } = this.props; + const { t, redirectDisabled, value, onChange, onKeyDown } = this.props; const { theme, placeholder = `${t("Search")}…` } = this.props; return ( @@ -68,7 +70,9 @@ class InputSearch extends React.Component { type="search" placeholder={placeholder} onInput={redirectDisabled ? undefined : this.handleSearchInput} + value={value} onChange={onChange} + onKeyDown={onKeyDown} icon={ { - setSearchTerm(event.target.value.toLowerCase()); + setSearchTerm(event.target.value); + }, []); + + const handleKeyDown = React.useCallback((event) => { + if (event.target.value && event.key === "Escape") { + event.preventDefault(); + event.stopPropagation(); + setSearchTerm(""); + } }, []); return ( - + {categories.map((category, x) => { const filtered = searchTerm ? category.items.filter((item) => - item.label.toLowerCase().includes(searchTerm) + item.label.toLowerCase().includes(searchTerm.toLowerCase()) ) : category.items;