From 173658138c439fa4dbaa6f76b17ce9b13ae58de1 Mon Sep 17 00:00:00 2001 From: Pete Matsyburka Date: Wed, 7 Aug 2024 23:25:23 +0300 Subject: [PATCH] fix conditions chain --- app/javascript/submission_form/form.vue | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/javascript/submission_form/form.vue b/app/javascript/submission_form/form.vue index 9f0eccd9..671f303c 100644 --- a/app/javascript/submission_form/form.vue +++ b/app/javascript/submission_form/form.vue @@ -923,18 +923,22 @@ export default { checkFieldConditions (field) { if (field.conditions?.length) { return field.conditions.reduce((acc, c) => { + const field = this.fieldsUuidIndex[c.field_uuid] + + if (!this.checkFieldConditions(field)) { + return false + } + if (['empty', 'unchecked'].includes(c.action)) { return acc && isEmpty(this.values[c.field_uuid]) } else if (['not_empty', 'checked'].includes(c.action)) { return acc && !isEmpty(this.values[c.field_uuid]) } else if (['equal', 'contains'].includes(c.action)) { - const field = this.fieldsUuidIndex[c.field_uuid] const option = field.options.find((o) => o.uuid === c.value) const values = [this.values[c.field_uuid]].flat() return acc && values.includes(this.optionValue(option, field.options.indexOf(option))) } else if (['not_equal', 'does_not_contain'].includes(c.action)) { - const field = this.fieldsUuidIndex[c.field_uuid] const option = field.options.find((o) => o.uuid === c.value) const values = [this.values[c.field_uuid]].flat()