From 458bdef63355effb7092feb964568ab2f5e58ed0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?B=C3=A1rbara=20de=20Castro=20Fernandes?= Date: Mon, 7 Sep 2020 15:39:44 -0300 Subject: [PATCH] Enable empty poll removal by deleting one of its options Previously, the user had to click on the "poll" icon at the bottom of the compose form in order to remove a poll. This commit changes how poll options behave so as to enable an empty poll to be removed through the deletion of either one of its options. This closes #317. --- app/soapbox/features/compose/components/poll_form.js | 11 ++++++++--- .../compose/containers/poll_form_container.js | 6 +++++- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/app/soapbox/features/compose/components/poll_form.js b/app/soapbox/features/compose/components/poll_form.js index efbaa3e19..f0db95f44 100644 --- a/app/soapbox/features/compose/components/poll_form.js +++ b/app/soapbox/features/compose/components/poll_form.js @@ -38,6 +38,8 @@ class Option extends React.PureComponent { onSuggestionSelected: PropTypes.func.isRequired, intl: PropTypes.object.isRequired, maxChars: PropTypes.number.isRequired, + onRemovePoll: PropTypes.func.isRequired, + numOptions: PropTypes.number.isRequired, }; handleOptionTitleChange = e => { @@ -45,10 +47,12 @@ class Option extends React.PureComponent { }; handleOptionRemove = () => { - this.props.onRemove(this.props.index); + if (this.props.numOptions > 2) + this.props.onRemove(this.props.index); + else + this.props.onRemovePoll(); }; - handleToggleMultiple = e => { this.props.onToggleMultiple(); e.preventDefault(); @@ -95,7 +99,7 @@ class Option extends React.PureComponent {
- +
); @@ -156,6 +160,7 @@ class PollForm extends ImmutablePureComponent { isPollMultiple={isMultiple} onToggleMultiple={this.handleToggleMultiple} maxChars={maxOptionChars} + numOptions={options.size} {...other} /> ))} diff --git a/app/soapbox/features/compose/containers/poll_form_container.js b/app/soapbox/features/compose/containers/poll_form_container.js index dfb3a1af2..9e3cb3c43 100644 --- a/app/soapbox/features/compose/containers/poll_form_container.js +++ b/app/soapbox/features/compose/containers/poll_form_container.js @@ -1,6 +1,6 @@ import { connect } from 'react-redux'; import PollForm from '../components/poll_form'; -import { addPollOption, removePollOption, changePollOption, changePollSettings } from '../../../actions/compose'; +import { addPollOption, removePollOption, changePollOption, changePollSettings, removePoll } from '../../../actions/compose'; import { clearComposeSuggestions, fetchComposeSuggestions, @@ -43,6 +43,10 @@ const mapDispatchToProps = dispatch => ({ dispatch(selectComposeSuggestion(position, token, accountId, path)); }, + onRemovePoll() { + dispatch(removePoll()); + }, + }); export default connect(mapStateToProps, mapDispatchToProps)(PollForm);