fix(polls): Disable submit button if no answers have been chosen

This commit is contained in:
Vlad Piersec 2021-10-11 11:09:53 +03:00 committed by vp8x8
parent 16c3a35da9
commit 7f4fb7f447
4 changed files with 16 additions and 4 deletions

View File

@ -406,6 +406,7 @@ a.poll-detail-link, a.poll-change-vote-link {
&:disabled {
background-color: #00225A;
color: #858585;
cursor: default;
}
& > *:not(:last-child) {

View File

@ -5,6 +5,7 @@ import { Switch, Text, View } from 'react-native';
import { Button } from 'react-native-paper';
import { BUTTON_MODES } from '../../../chat/constants';
import { isSubmitAnswerDisabled } from '../../functions';
import AbstractPollAnswer from '../AbstractPollAnswer';
import type { AbstractProps } from '../AbstractPollAnswer';
@ -12,7 +13,6 @@ import { chatStyles, dialogStyles } from './styles';
const PollAnswer = (props: AbstractProps) => {
const {
checkBoxStates,
poll,
@ -50,6 +50,7 @@ const PollAnswer = (props: AbstractProps) => {
</Button>
<Button
color = '#17a0db'
disabled = { isSubmitAnswerDisabled(checkBoxStates) }
mode = { BUTTON_MODES.CONTAINED }
onPress = { submitAnswer }
style = { chatStyles.pollCreateButton } >

View File

@ -3,12 +3,11 @@
import { Checkbox } from '@atlaskit/checkbox';
import React from 'react';
import { isSubmitAnswerDisabled } from '../../functions';
import AbstractPollAnswer from '../AbstractPollAnswer';
import type { AbstractProps } from '../AbstractPollAnswer';
const PollAnswer = (props: AbstractProps) => {
const {
checkBoxStates,
poll,
@ -51,7 +50,8 @@ const PollAnswer = (props: AbstractProps) => {
</button>
<button
aria-label = { t('polls.answer.submit') }
className = { 'poll-small-primary-button' }
className = 'poll-small-primary-button'
disabled = { isSubmitAnswerDisabled(checkBoxStates) }
onClick = { submitAnswer }>
<span>{t('polls.answer.submit')}</span>
</button>

View File

@ -21,3 +21,13 @@ export function getUnreadPollCount(state: Object) {
return nbUnreadPolls;
}
/**
* Determines if the submit poll answer button should be disabled.
*
* @param {Array<boolean>} checkBoxStates - The states of the checkboxes.
* @returns {boolean}
*/
export function isSubmitAnswerDisabled(checkBoxStates: Array<boolean>) {
return !checkBoxStates.find(checked => checked);
}