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

136 lines
4.1 KiB
JavaScript

import React from 'react'
import PropTypes from 'prop-types'
import { translate } from 'react-i18next'
import SaveFeedPopup from './SaveFeedPopup'
import { Button } from 'reactstrap'
export class SearchSubTabHead extends React.Component {
static propTypes = {
feedCategories: PropTypes.array.isRequired,
isSaveFeedPopupVisible: PropTypes.bool.isRequired,
activeFeed: PropTypes.object,
isSaving: PropTypes.bool.isRequired,
isEditingFeed: PropTypes.bool.isRequired,
addAlert: PropTypes.func.isRequired,
toggleSaveFeedPopup: PropTypes.func.isRequired,
onSaveAsFeed: PropTypes.func.isRequired,
getSidebarCategories: PropTypes.func.isRequired,
editFeed: PropTypes.func.isRequired,
setNewSearch: PropTypes.func.isRequired,
renewSearchBy: PropTypes.func.isRequired,
changeActiveFeedName: PropTypes.func.isRequired,
saveFeed: PropTypes.func.isRequired,
t: PropTypes.func.isRequired
}
openSaveFeedPopup = () => {
this.props.toggleSaveFeedPopup()
}
saveFeed = () => {
this.props.saveFeed()
}
onEditFeed = () => {
this.props.editFeed()
}
onNewSearch = () => {
this.props.setNewSearch()
this.props.renewSearchBy()
}
onChangeFeedName = (event) => {
this.props.changeActiveFeedName(event.target.value)
}
render() {
const {
t,
isEditingFeed,
isSaveFeedPopupVisible,
isSaving,
activeFeed
} = this.props
const feedIsLoaded = !!activeFeed
const showEditButton =
!!activeFeed && !isEditingFeed && activeFeed.subType === 'query_feed'
return (
<div>
<div className="d-flex flex-wrap justify-content-between">
<div>
{!isEditingFeed && activeFeed && <h4 className="text-primary mb-2 mb-md-0">{activeFeed.name}</h4>}
</div>
<div className="text-right" data-tour="search-buttons">
<Button
className="btn-icon mb-2 mb-lg-0 ml-2"
color="primary"
onClick={this.onNewSearch}
>
<i className="lnr-plus-circle btn-icon-wrapper"></i>
{t('searchTab.newSearchBtn')}
</Button>
{!feedIsLoaded && (
<Button
className="btn-icon mb-2 mb-lg-0 ml-2"
color="success"
onClick={this.openSaveFeedPopup}
>
<i className="lnr-checkmark-circle btn-icon-wrapper"></i>
{isSaving ? t('searchTab.savingBtn') : t('searchTab.saveBtn')}
</Button>
)}
{feedIsLoaded && isEditingFeed && (
<Button
className="btn-icon mb-2 mb-lg-0 ml-2"
color="success"
onClick={this.saveFeed}
>
<i className="lnr-checkmark-circle btn-icon-wrapper"></i>
{isSaving ? t('searchTab.savingBtn') : t('searchTab.saveBtn')}
</Button>
)}
{feedIsLoaded && isEditingFeed && (
<Button
className="btn-icon mb-2 mb-lg-0 ml-2"
color="success"
onClick={this.openSaveFeedPopup}
>
<i className="lnr-checkmark-circle btn-icon-wrapper"></i>
{t('searchTab.saveAsBtn')}
</Button>
)}
{showEditButton && (
<Button
className="btn-icon mb-2 mb-lg-0 ml-2"
color="warning"
onClick={this.onEditFeed}
>
<i className="lnr-pencil btn-icon-wrapper"></i>
{t('searchTab.editFeedBtn')}
</Button>
)}
</div>
</div>
{isSaveFeedPopupVisible && (
<SaveFeedPopup
saveType="typeSaveAs"
feedCategories={this.props.feedCategories}
toggleSaveFeedPopup={this.props.toggleSaveFeedPopup}
addAlert={this.props.addAlert}
onSaveAsFeed={this.props.onSaveAsFeed}
getSidebarCategories={this.props.getSidebarCategories}
/>
)}
</div>
)
}
}
export default translate(['tabsContent'], { wait: true })(SearchSubTabHead)