Skip to content

Commit d884631

Browse files
authored
Merge pull request #11266 from neinteractiveliterature/fix-unhandled-discriminated-union-member
Fix unhandled discriminated union member error
2 parents 40815a9 + 855e6d3 commit d884631

3 files changed

Lines changed: 8 additions & 6 deletions

File tree

app/javascript/FormAdmin/FormItemUtils.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ export type MultipleChoiceProperties = CommonQuestionProperties & {
157157
};
158158

159159
export type MultipleChoiceFormItem = WithRequiredIdentifier<
160-
ParsedFormItem<MultipleChoiceProperties, string | string[], 'multiple_choice'>
160+
ParsedFormItem<MultipleChoiceProperties, string | boolean | (string | boolean)[], 'multiple_choice'>
161161
>;
162162

163163
export function valueIsMultipleChoiceValue(value: unknown): value is FormItemValueType<MultipleChoiceFormItem> {

app/javascript/FormPresenter/ItemChangeDisplays/FormItemChangeDisplay.tsx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ function FormItemChangeDisplay<FormItemType extends TypedFormItem>({
6262
typeof change.new_value === 'string' ||
6363
typeof change.previous_value === 'number' ||
6464
typeof change.new_value === 'number' ||
65+
typeof change.previous_value === 'boolean' ||
66+
typeof change.new_value === 'boolean' ||
6567
Array.isArray(change.previous_value) ||
6668
Array.isArray(change.new_value)
6769
) {

app/javascript/FormPresenter/ItemInputs/MultipleChoiceItemInput.tsx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ function castSingleValue(value: FormItemValueType<MultipleChoiceFormItem> | null
1515
return null;
1616
}
1717

18-
if (typeof value === 'string') {
19-
return value;
18+
if (typeof value === 'string' || typeof value === 'boolean') {
19+
return value.toString();
2020
}
2121

2222
if (Array.isArray(value)) {
23-
return value.length > 0 ? value[0] : null;
23+
return value.length > 0 ? value[0].toString() : null;
2424
}
2525

2626
assertNever(value);
@@ -30,11 +30,11 @@ function castMultipleValue(value: FormItemValueType<MultipleChoiceFormItem> | nu
3030
let arrayValue: string[];
3131

3232
if (Array.isArray(value)) {
33-
arrayValue = value;
33+
arrayValue = value.map((item) => item.toString());
3434
} else if (value == null) {
3535
arrayValue = [];
3636
} else {
37-
arrayValue = [value];
37+
arrayValue = [value.toString()];
3838
}
3939

4040
return arrayValue;

0 commit comments

Comments
 (0)