From 572454f01749b4e8b43bfd9c1fcc47210d86fa0f Mon Sep 17 00:00:00 2001 From: Joe Banks Date: Thu, 11 Jul 2024 02:24:08 +0100 Subject: Handle voting component callbacks --- src/components/Question.tsx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'src/components/Question.tsx') diff --git a/src/components/Question.tsx b/src/components/Question.tsx index fb5c419..66784d0 100644 --- a/src/components/Question.tsx +++ b/src/components/Question.tsx @@ -13,12 +13,13 @@ const skip_normal_state: Array = [ QuestionType.Select, QuestionType.TimeZone, QuestionType.Section, - QuestionType.Range + QuestionType.Range, + QuestionType.Vote ]; export interface QuestionState { // Common keys - value: string | null | Map + value: string | null | Map | Record // Validation valid: boolean @@ -56,6 +57,8 @@ class RenderedQuestion extends React.Component { this.handler = this.text_area_handler.bind(this); } else if (props.question.type === QuestionType.Code) { this.handler = this.code_field_handler.bind(this); + } else if (props.question.type === QuestionType.Vote) { + this.handler = this.vote_handler.bind(this); } else { this.handler = this.normal_handler.bind(this); } @@ -74,7 +77,7 @@ class RenderedQuestion extends React.Component { } // This is here to allow dynamic selection between the general handler, textarea, and code field handlers. - handler(_: ChangeEvent | string): void {} // eslint-disable-line + handler(_: ChangeEvent | string | Record): void {} // eslint-disable-line blurHandler(): void { if (this.props.question.required) { @@ -150,6 +153,14 @@ class RenderedQuestion extends React.Component { } } + vote_handler(event: Record) { + this.setState({ + value: event, + valid: true, + error: "" + }); + } + text_area_handler(event: ChangeEvent): void { // We will validate again when focusing out. this.setState({ @@ -194,6 +205,7 @@ class RenderedQuestion extends React.Component { case QuestionType.Select: case QuestionType.Range: case QuestionType.TimeZone: + case QuestionType.Vote: case QuestionType.Radio: if (!this.realState.value) { valid = false; -- cgit v1.2.3