//
// SPDX-License-Identifier: AGPL-3.0
-import * as React from 'react';
+import React from 'react';
+import { compose } from 'redux';
import {
IconButton,
Paper,
} from '@material-ui/core';
import SearchIcon from '@material-ui/icons/Search';
import ArrowDropDownIcon from '@material-ui/icons/ArrowDropDown';
-import { ArvadosTheme } from '~/common/custom-theme';
-import { SearchView } from '~/store/search-bar/search-bar-reducer';
+import { ArvadosTheme } from 'common/custom-theme';
+import { SearchView } from 'store/search-bar/search-bar-reducer';
import {
SearchBarBasicView,
SearchBarBasicViewDataProps,
SearchBarBasicViewActionProps
-} from '~/views-components/search-bar/search-bar-basic-view';
+} from 'views-components/search-bar/search-bar-basic-view';
import {
SearchBarAutocompleteView,
SearchBarAutocompleteViewDataProps,
SearchBarAutocompleteViewActionProps
-} from '~/views-components/search-bar/search-bar-autocomplete-view';
+} from 'views-components/search-bar/search-bar-autocomplete-view';
import {
SearchBarAdvancedView,
SearchBarAdvancedViewDataProps,
SearchBarAdvancedViewActionProps
-} from '~/views-components/search-bar/search-bar-advanced-view';
-import { KEY_CODE_DOWN, KEY_CODE_ESC, KEY_CODE_UP, KEY_ENTER } from "~/common/codes";
+} from 'views-components/search-bar/search-bar-advanced-view';
+import { KEY_CODE_DOWN, KEY_CODE_ESC, KEY_CODE_UP, KEY_ENTER } from "common/codes";
import { debounce } from 'debounce';
+import { Vocabulary } from 'models/vocabulary';
+import { connectVocabulary } from '../resource-properties-form/property-field-common';
type CssRules = 'container' | 'containerSearchViewOpened' | 'input' | 'view';
currentView: string;
isPopoverOpen: boolean;
debounce?: number;
+ vocabulary?: Vocabulary;
}
export type SearchBarActionProps = SearchBarViewActionProps
loadRecentQueries: () => string[];
moveUp: () => void;
moveDown: () => void;
- setAdvancedDataFromSearchValue: (search: string) => void;
+ setAdvancedDataFromSearchValue: (search: string, vocabulary?: Vocabulary) => void;
}
type SearchBarViewProps = SearchBarDataProps & SearchBarActionProps & WithStyles<CssRules>;
const handleInputClick = (e: React.MouseEvent, props: SearchBarViewProps) => {
if (props.searchValue) {
props.onSetView(SearchView.AUTOCOMPLETE);
- props.openSearchView();
} else {
- props.closeView();
+ props.onSetView(SearchView.BASIC);
}
+ props.openSearchView();
};
const handleDropdownClick = (e: React.MouseEvent, props: SearchBarViewProps) => {
e.stopPropagation();
- if (props.isPopoverOpen) {
- if (props.currentView === SearchView.ADVANCED) {
- props.closeView();
- } else {
- props.setAdvancedDataFromSearchValue(props.searchValue);
- props.onSetView(SearchView.ADVANCED);
- }
+ if (props.isPopoverOpen && props.currentView === SearchView.ADVANCED) {
+ props.closeView();
} else {
- props.setAdvancedDataFromSearchValue(props.searchValue);
+ props.setAdvancedDataFromSearchValue(props.searchValue, props.vocabulary);
props.onSetView(SearchView.ADVANCED);
}
};
-export const SearchBarView = withStyles(styles)(
+export const SearchBarView = compose(connectVocabulary, withStyles(styles))(
class extends React.Component<SearchBarViewProps> {
debouncedSearch = debounce(() => {
<Paper className={isPopoverOpen ? classes.containerSearchViewOpened : classes.container} >
<form onSubmit={this.handleSubmit}>
<Input
+ data-cy='searchbar-input-field'
className={classes.input}
onChange={this.handleChange}
placeholder="Search"