Added option to disable search bar autofocus

This commit is contained in:
Paweł Malak
2021-10-26 13:09:42 +02:00
parent 0ec77c33bf
commit df6d96f5b6
8 changed files with 45 additions and 6 deletions

View File

@@ -5,7 +5,7 @@ import { connect } from 'react-redux';
import { createNotification } from '../../store/actions';
// Typescript
import { NewNotification } from '../../interfaces';
import { Config, GlobalState, NewNotification } from '../../interfaces';
// CSS
import classes from './SearchBar.module.css';
@@ -16,16 +16,20 @@ import { searchParser, urlParser, redirectUrl } from '../../utility';
interface ComponentProps {
createNotification: (notification: NewNotification) => void;
setLocalSearch: (query: string) => void;
config: Config;
loading: boolean;
}
const SearchBar = (props: ComponentProps): JSX.Element => {
const { setLocalSearch, createNotification } = props;
const { setLocalSearch, createNotification, config, loading } = props;
const inputRef = useRef<HTMLInputElement>(document.createElement('input'));
useEffect(() => {
inputRef.current.focus();
}, []);
if (!loading && !config.disableAutofocus) {
inputRef.current.focus();
}
}, [config]);
const clearSearch = () => {
inputRef.current.value = '';
@@ -78,4 +82,11 @@ const SearchBar = (props: ComponentProps): JSX.Element => {
);
};
export default connect(null, { createNotification })(SearchBar);
const mapStateToProps = (state: GlobalState) => {
return {
config: state.config.config,
loading: state.config.loading,
};
};
export default connect(mapStateToProps, { createNotification })(SearchBar);