Files
socialhose-php/frontend/app/components/App/TabsContent/SearchTab/SearchSubTab/SearchBy/SearchBy.js
T
2022-12-09 08:36:26 -06:00

164 lines
6.1 KiB
JavaScript

import React from 'react';
import PropTypes from 'prop-types';
import SearchByTabs from './SearchByTabs';
import EmphasisTab from './EmphasisTab';
import LangsTab from './LangsTab';
import LocationsTab from './LocationsTab';
import SourcesTab from './SourcesTab';
import SourceListsTab from './SourceListsTab';
import DuplicatesTab from './DuplicatesTab';
import ExtrasTab from './ExtrasTab';
import { translate } from 'react-i18next';
import { Button, Container, Row } from 'reactstrap';
export class SearchBy extends React.Component {
static propTypes = {
userSubscriptionDate: PropTypes.string.isRequired,
userSubscription: PropTypes.string.isRequired,
searchByFiltersState: PropTypes.object.isRequired,
actions: PropTypes.object.isRequired,
t: PropTypes.func.isRequired
};
constructor(props) {
super(props);
this.state = {
animationDisabled: true,
arrowPosition: true
};
}
onToggleSearchBy = () => {
this.props.actions.toggleSearchBy();
};
render() {
const { t } = this.props;
const { searchByFiltersState, actions } = this.props;
const visibleClass = searchByFiltersState.isSearchByVisible
? ' visible'
: ' closed';
return (
<div
className={'search-by-container mb-3 mb-md-0' + visibleClass}
data-tour="advanced-search"
>
<div className="search-by">
<SearchByTabs
searchByTabs={searchByFiltersState.searchByTabs}
chooseSearchByTab={actions.chooseSearchByTab}
chosenSearchByTab={searchByFiltersState.chosenSearchByTab}
/>
<Container fluid>
<Row className="mb-3" data-tour="advanced-search-content">
{searchByFiltersState.chosenSearchByTab === 'emphasis' && (
<EmphasisTab
include={searchByFiltersState.headlineIncluded}
exclude={searchByFiltersState.headlineExcluded}
setHeadlineIncluded={actions.setHeadlineIncluded}
setHeadlineExcluded={actions.setHeadlineExcluded}
/>
)}
{searchByFiltersState.chosenSearchByTab === 'languages' && (
<LangsTab
searchLanguages={searchByFiltersState.searchLanguages}
chosenLanguages={searchByFiltersState.chosenLanguages}
toggleLang={actions.toggleLang}
toggleAllLangs={actions.toggleAllLangs}
/>
)}
{searchByFiltersState.chosenSearchByTab === 'locations' && (
<LocationsTab
locations={searchByFiltersState.locations}
chosenLocationsType={searchByFiltersState.chosenLocationsType}
locationsToInclude={searchByFiltersState.locationsToInclude}
locationsToExclude={searchByFiltersState.locationsToExclude}
changeLocationsType={actions.changeLocationsType}
moveLocation={actions.moveLocation}
clearLocations={actions.clearLocations}
/>
)}
{searchByFiltersState.chosenSearchByTab === 'sources' && (
<SourcesTab
chosenMediaTypes={searchByFiltersState.chosenMediaTypes}
chosenLanguages={searchByFiltersState.chosenLanguages}
searchBySources={searchByFiltersState.searchBySources}
searchBySourcesType={searchByFiltersState.searchBySourcesType}
selectedSearchBySources={
searchByFiltersState.selectedSearchBySources
}
searchBySourcesQuery={
searchByFiltersState.searchBySourcesQuery
}
setSearchBySourcesQuery={actions.setSearchBySourcesQuery}
getSearchBySources={actions.getSearchBySources}
addSelectedSearchBySource={actions.addSelectedSearchBySource}
removeSelectedSearchBySource={
actions.removeSelectedSearchBySource
}
clearSearchBySources={actions.clearSearchBySources}
includeExcludeSearchBySources={
actions.includeExcludeSearchBySources
}
/>
)}
{searchByFiltersState.chosenSearchByTab === 'sourceLists' && (
<SourceListsTab
searchBySourceLists={
searchByFiltersState.searchBySourceListsAvailable
}
searchBySourceListsToInclude={
searchByFiltersState.searchBySourceListsToInclude
}
searchBySourceListsToExclude={
searchByFiltersState.searchBySourceListsToExclude
}
getSourceLists={actions.getSearchBySourceLists}
moveSourceList={actions.moveSourceList}
/>
)}
{searchByFiltersState.chosenSearchByTab === 'duplicates' && (
<DuplicatesTab
includeDuplicates={searchByFiltersState.includeDuplicates}
toggleIncludeDuplicates={actions.toggleIncludeDuplicates}
/>
)}
{searchByFiltersState.chosenSearchByTab === 'extras' && (
<ExtrasTab
hasImages={searchByFiltersState.hasImages}
toggleHasImages={actions.toggleHasImages}
/>
)}
</Row>
</Container>
</div>
<hr className="mt-0 mb-2" />
<Button
outline
size="sm"
className="font-size-xs"
color="secondary"
onClick={this.onToggleSearchBy}
>
{t('searchTab.searchBySection.searchByBtn')}
{searchByFiltersState.isSearchByVisible ? (
<i className="lnr-chevron-up btn-icon-wrapper"></i>
) : (
<i className="lnr-chevron-down btn-icon-wrapper"></i>
)}
</Button>
</div>
);
}
}
export default translate(['tabsContent'], { wait: true })(SearchBy);