diff --git a/packages/form/addon/lib/document.js b/packages/form/addon/lib/document.js index 4700b0f9f..4f6d9df0d 100644 --- a/packages/form/addon/lib/document.js +++ b/packages/form/addon/lib/document.js @@ -271,16 +271,25 @@ export default class Document extends Base { findAnswer(slug, defaultValue) { const field = this.findField(slug); + const hasDefault = !(defaultValue === undefined); + if (!field) { - if (defaultValue === undefined) { + if (!hasDefault) { throw new Error(`Field for question \`${slug}\` could not be found`); } return defaultValue; } - if (field.hidden || [undefined, null].includes(field.value)) { - return (defaultValue ?? field.question.isMultipleChoice) ? [] : null; + const emptyValue = + field.question.isTable || field.question.isMultipleChoice ? [] : null; + + if (field.hidden) { + return emptyValue; + } + + if ([undefined, null].includes(field.value)) { + return hasDefault ? defaultValue : emptyValue; } if (field.question.isTable) { diff --git a/packages/form/addon/lib/field.js b/packages/form/addon/lib/field.js index 652e9467a..5d63c643f 100644 --- a/packages/form/addon/lib/field.js +++ b/packages/form/addon/lib/field.js @@ -274,10 +274,7 @@ export default class Field extends Base { */ @cached get calculatedValue() { - if ( - !this.question.isCalculated || - !this.calculatedDependencies.every((field) => !field.hidden) - ) { + if (!this.question.isCalculated) { return null; }