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

173 lines
4.3 KiB
JavaScript
Raw Normal View History

2017-09-04 02:20:56 +00:00
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
2020-09-07 01:33:10 +00:00
import FormLabel from 'Components/Form/FormLabel';
import Button from 'Components/Link/Button';
import Modal from 'Components/Modal/Modal';
2017-09-04 02:20:56 +00:00
import ModalBody from 'Components/Modal/ModalBody';
2020-09-07 01:33:10 +00:00
import ModalContent from 'Components/Modal/ModalContent';
2017-09-04 02:20:56 +00:00
import ModalFooter from 'Components/Modal/ModalFooter';
2020-09-07 01:33:10 +00:00
import ModalHeader from 'Components/Modal/ModalHeader';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
2021-10-03 15:01:09 +00:00
import translate from 'Utilities/String/translate';
2017-09-04 02:20:56 +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 21:35:06 +00:00
blocklist: false,
skipredownload: false
2017-09-04 02:20:56 +00:00
};
}
//
// Control
2021-12-24 18:18:14 +00:00
resetState = function() {
this.setState({
remove: true,
blocklist: false,
skipredownload: false
});
};
2021-12-24 18:18:14 +00:00
//
// Listeners
2021-12-24 18:18:14 +00:00
onRemoveChange = ({ value }) => {
this.setState({ remove: value });
};
2017-09-04 02:20:56 +00:00
2021-08-19 21:35:06 +00:00
onBlocklistChange = ({ value }) => {
this.setState({ blocklist: value });
2021-12-24 18:18:14 +00:00
};
2017-09-04 02:20:56 +00:00
onSkipReDownloadChange = ({ value }) => {
this.setState({ skipredownload: value });
2021-12-24 18:18:14 +00:00
};
onRemoveConfirmed = () => {
const state = this.state;
2017-09-04 02:20:56 +00:00
this.resetState();
this.props.onRemovePress(state);
2021-12-24 18:18:14 +00:00
};
2017-09-04 02:20:56 +00:00
onModalClose = () => {
this.resetState();
2017-09-04 02:20:56 +00:00
this.props.onModalClose();
2021-12-24 18:18:14 +00:00
};
2017-09-04 02:20:56 +00:00
//
// Render
render() {
const {
isOpen,
selectedCount,
canIgnore
2017-09-04 02:20:56 +00:00
} = this.props;
2021-08-19 21:35:06 +00:00
const { remove, blocklist, skipredownload } = this.state;
2017-09-04 02:20:56 +00:00
return (
<Modal
isOpen={isOpen}
size={sizes.MEDIUM}
onModalClose={this.onModalClose}
>
<ModalContent
onModalClose={this.onModalClose}
>
<ModalHeader>
Remove Selected Item{selectedCount > 1 ? 's' : ''}
</ModalHeader>
<ModalBody>
<div className={styles.message}>
Are you sure you want to remove {selectedCount} item{selectedCount > 1 ? 's' : ''} from the queue?
</div>
<FormGroup>
2021-10-03 15:01:09 +00:00
<FormLabel>
{translate('RemoveFromDownloadClient')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="remove"
value={remove}
2021-10-03 15:01:09 +00:00
helpTextWarning={translate('RemoveHelpTextWarning')}
isDisabled={!canIgnore}
onChange={this.onRemoveChange}
/>
</FormGroup>
<FormGroup>
<FormLabel>
2021-08-19 21:35:06 +00:00
Blocklist Release{selectedCount > 1 ? 's' : ''}
</FormLabel>
2017-09-04 02:20:56 +00:00
<FormInputGroup
type={inputTypes.CHECK}
2021-08-19 21:35:06 +00:00
name="blocklist"
value={blocklist}
2021-10-03 15:01:09 +00:00
helpText={translate('BlocklistHelpText')}
2021-08-19 21:35:06 +00:00
onChange={this.onBlocklistChange}
2017-09-04 02:20:56 +00:00
/>
</FormGroup>
{
2021-08-19 21:35:06 +00:00
blocklist &&
2020-06-27 21:51:59 +00:00
<FormGroup>
2021-10-03 15:01:09 +00:00
<FormLabel>
{translate('SkipRedownload')}
</FormLabel>
2020-06-27 21:51:59 +00:00
<FormInputGroup
type={inputTypes.CHECK}
name="skipredownload"
value={skipredownload}
2021-10-03 15:01:09 +00:00
helpText={translate('SkipredownloadHelpText')}
2020-06-27 21:51:59 +00:00
onChange={this.onSkipReDownloadChange}
/>
</FormGroup>
}
2017-09-04 02:20:56 +00:00
</ModalBody>
<ModalFooter>
<Button onPress={this.onModalClose}>
Close
</Button>
<Button
kind={kinds.DANGER}
onPress={this.onRemoveConfirmed}
2017-09-04 02:20:56 +00:00
>
Remove
</Button>
</ModalFooter>
</ModalContent>
</Modal>
);
}
}
RemoveQueueItemsModal.propTypes = {
isOpen: PropTypes.bool.isRequired,
selectedCount: PropTypes.number.isRequired,
canIgnore: PropTypes.bool.isRequired,
2017-09-04 02:20:56 +00:00
onRemovePress: PropTypes.func.isRequired,
onModalClose: PropTypes.func.isRequired
};
export default RemoveQueueItemsModal;