import React from 'react' import PropTypes from 'prop-types' import { translate } from 'react-i18next' import { Button, Modal, ModalHeader, ModalBody, Label, Input, ModalFooter, FormGroup } from 'reactstrap' export class SaveFeedPopup extends React.Component { static propTypes = { feedCategories: PropTypes.array.isRequired, saveType: PropTypes.string.isRequired, toggleSaveFeedPopup: PropTypes.func.isRequired, addAlert: PropTypes.func.isRequired, onSaveAsFeed: PropTypes.func.isRequired, getSidebarCategories: PropTypes.func.isRequired, t: PropTypes.func.isRequired } constructor(props) { super(props) this.state = { isFeedNameError: false, feedCategoriesKeys: [], feedName: '', selectCategory: '' } } componentWillMount = () => { let nestingCount = -1 this.getCategoriesKeys(this.props.feedCategories, nestingCount) } //function that generates new array of categories without nesting getCategoriesKeys = (categories, nestingCount) => { nestingCount += 1 categories.forEach((category) => { if (category.subType === 'deleted_content') return false const categoryName = '-'.repeat(nestingCount) + ' ' + category.name const feedCategoriesKeys = this.state.feedCategoriesKeys feedCategoriesKeys.push({ id: category.id, name: categoryName }) this.setState({ feedCategoriesKeys: feedCategoriesKeys, selectCategory: feedCategoriesKeys[0].id.toString() }) if (category.childes.length) { this.getCategoriesKeys(category.childes, nestingCount) } }) } changeHandler = (e) => { const { name, value } = e.target this.setState({ [name]: value }) } hidePopupFromOutside = (e) => { if (e.target === e.currentTarget) this.hidePopup() } hidePopup = () => { this.props.toggleSaveFeedPopup() } onSubmit = () => { const { feedName: name, selectCategory: category } = this.state if (!name || !name.trim()) { this.setState({ isFeedNameError: true }) return false } this.props.onSaveAsFeed(name, category) this.hidePopup() } render() { const { t } = this.props const { feedCategoriesKeys, isFeedNameError, feedName, selectCategory } = this.state return ( {t('searchTab.saveFeedPopup.' + this.props.saveType)} {isFeedNameError && (

{t('searchTab.saveFeedPopup.feedNameErrorMsg')}

)}
{feedCategoriesKeys.map((category) => { return ( ) })}
) } } export default translate(['tabsContent', 'common'], { wait: true })( SaveFeedPopup )