Radarr/frontend/src/Activity/Queue/RemoveQueueItemsModal.js

155 lines
3.9 KiB
JavaScript
Raw Normal View History

2018-11-23 07:04:42 +00:00
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
import FormLabel from 'Components/Form/FormLabel';
import Button from 'Components/Link/Button';
import Modal from 'Components/Modal/Modal';
2018-11-23 07:04:42 +00:00
import ModalBody from 'Components/Modal/ModalBody';
import ModalContent from 'Components/Modal/ModalContent';
2018-11-23 07:04:42 +00:00
import ModalFooter from 'Components/Modal/ModalFooter';
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
2020-07-21 00:18:10 +00:00
import translate from 'Utilities/String/translate';
2018-11-23 07:04:42 +00:00
import styles from './RemoveQueueItemsModal.css';
class RemoveQueueItemsModal extends Component {
//
// Lifecycle
constructor(props, context) {
super(props, context);
this.state = {
remove: true,
2021-08-19 19:13:14 +00:00
blocklist: false
2018-11-23 07:04:42 +00:00
};
}
//
// Control
resetState = function() {
this.setState({
remove: true,
blocklist: false
});
};
//
// Listeners
onRemoveChange = ({ value }) => {
this.setState({ remove: value });
};
2018-11-23 07:04:42 +00:00
2021-08-19 19:13:14 +00:00
onBlocklistChange = ({ value }) => {
this.setState({ blocklist: value });
};
2018-11-23 07:04:42 +00:00
onRemoveConfirmed = () => {
const state = this.state;
2018-11-23 07:04:42 +00:00
this.resetState();
this.props.onRemovePress(state);
};
2018-11-23 07:04:42 +00:00
onModalClose = () => {
this.resetState();
2018-11-23 07:04:42 +00:00
this.props.onModalClose();
};
2018-11-23 07:04:42 +00:00
//
// Render
render() {
const {
isOpen,
selectedCount,
canIgnore,
allPending
2018-11-23 07:04:42 +00:00
} = this.props;
2021-08-19 19:13:14 +00:00
const { remove, blocklist } = this.state;
2018-11-23 07:04:42 +00:00
return (
<Modal
isOpen={isOpen}
size={sizes.MEDIUM}
onModalClose={this.onModalClose}
>
<ModalContent
onModalClose={this.onModalClose}
>
<ModalHeader>
{selectedCount > 1 ? translate('RemoveSelectedItems') : translate('RemoveSelectedItem')}
2018-11-23 07:04:42 +00:00
</ModalHeader>
<ModalBody>
<div className={styles.message}>
{selectedCount > 1 ? translate('AreYouSureYouWantToRemoveSelectedItemsFromQueue', selectedCount) : translate('AreYouSureYouWantToRemoveSelectedItemFromQueue')}
2018-11-23 07:04:42 +00:00
</div>
{
allPending ?
null :
<FormGroup>
<FormLabel>{translate('RemoveFromDownloadClient')}</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="remove"
value={remove}
helpTextWarning={translate('RemoveHelpTextWarning')}
isDisabled={!canIgnore}
onChange={this.onRemoveChange}
/>
</FormGroup>
}
<FormGroup>
<FormLabel>
{selectedCount > 1 ? translate('BlocklistReleases') : translate('BlocklistRelease')}
</FormLabel>
2018-11-23 07:04:42 +00:00
<FormInputGroup
type={inputTypes.CHECK}
2021-08-19 19:13:14 +00:00
name="blocklist"
value={blocklist}
helpText={translate('BlocklistHelpText')}
onChange={this.onBlocklistChange}
2018-11-23 07:04:42 +00:00
/>
</FormGroup>
</ModalBody>
<ModalFooter>
<Button onPress={this.onModalClose}>
2020-07-21 00:18:10 +00:00
{translate('Close')}
2018-11-23 07:04:42 +00:00
</Button>
<Button
kind={kinds.DANGER}
onPress={this.onRemoveConfirmed}
2018-11-23 07:04:42 +00:00
>
Remove
</Button>
</ModalFooter>
</ModalContent>
</Modal>
);
}
}
RemoveQueueItemsModal.propTypes = {
isOpen: PropTypes.bool.isRequired,
selectedCount: PropTypes.number.isRequired,
canIgnore: PropTypes.bool.isRequired,
allPending: PropTypes.bool.isRequired,
2018-11-23 07:04:42 +00:00
onRemovePress: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
export default RemoveQueueItemsModal;