X-Git-Url: https://git.arvados.org/arvados-workbench2.git/blobdiff_plain/85719156f00d2508bc02dfcc8f44accb7a707e1e..fc84a3f3932af503d3afd04a58af52270c8fc3b6:/src/components/search-input/search-input.tsx diff --git a/src/components/search-input/search-input.tsx b/src/components/search-input/search-input.tsx index da2f3a9b..50338f40 100644 --- a/src/components/search-input/search-input.tsx +++ b/src/components/search-input/search-input.tsx @@ -2,7 +2,7 @@ // // SPDX-License-Identifier: AGPL-3.0 -import * as React from 'react'; +import React from 'react'; import { IconButton, StyleRulesCallback, withStyles, WithStyles, FormControl, InputLabel, Input, InputAdornment, Tooltip } from '@material-ui/core'; import SearchIcon from '@material-ui/icons/Search'; @@ -34,6 +34,8 @@ const styles: StyleRulesCallback = theme => { interface SearchInputDataProps { value: string; + label?: string; + selfClearProp: string; } interface SearchInputActionProps { @@ -45,6 +47,8 @@ type SearchInputProps = SearchInputDataProps & SearchInputActionProps & WithStyl interface SearchInputState { value: string; + label: string; + selfClearProp: string; } export const DEFAULT_SEARCH_DEBOUNCE = 1000; @@ -52,28 +56,30 @@ export const DEFAULT_SEARCH_DEBOUNCE = 1000; export const SearchInput = withStyles(styles)( class extends React.Component { state: SearchInputState = { - value: "" + value: "", + label: "", + selfClearProp: "" }; timeout: number; render() { - const { classes } = this.props; return
- Search + {this.state.label} - - + + - - + + } /> @@ -81,13 +87,20 @@ export const SearchInput = withStyles(styles)( } componentDidMount() { - this.setState({ value: this.props.value }); + this.setState({ + value: this.props.value, + label: this.props.label || 'Search' + }); } componentWillReceiveProps(nextProps: SearchInputProps) { if (nextProps.value !== this.props.value) { this.setState({ value: nextProps.value }); } + if (this.state.value !== '' && nextProps.selfClearProp && nextProps.selfClearProp !== this.state.selfClearProp) { + this.props.onSearch(''); + this.setState({ selfClearProp: nextProps.selfClearProp }); + } } componentWillUnmount() {