fix readonly condition
This commit is contained in:
committed by
Oleksandr Turchyn
parent
dc24df0d4c
commit
227a067c77
@@ -226,7 +226,8 @@ export default {
|
|||||||
},
|
},
|
||||||
submitter: {
|
submitter: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true
|
required: false,
|
||||||
|
default: () => ({})
|
||||||
},
|
},
|
||||||
withSignatureId: {
|
withSignatureId: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
|
|||||||
@@ -21,7 +21,7 @@
|
|||||||
:values="values"
|
:values="values"
|
||||||
:field="field"
|
:field="field"
|
||||||
:area="area"
|
:area="area"
|
||||||
:submittable="true"
|
:submittable="submittable"
|
||||||
:field-index="fieldIndex"
|
:field-index="fieldIndex"
|
||||||
:scroll-padding="scrollPadding"
|
:scroll-padding="scrollPadding"
|
||||||
:submitter="submitter"
|
:submitter="submitter"
|
||||||
@@ -58,6 +58,11 @@ export default {
|
|||||||
required: false,
|
required: false,
|
||||||
default: false
|
default: false
|
||||||
},
|
},
|
||||||
|
submittable: {
|
||||||
|
type: Boolean,
|
||||||
|
required: false,
|
||||||
|
default: true
|
||||||
|
},
|
||||||
submitter: {
|
submitter: {
|
||||||
type: Object,
|
type: Object,
|
||||||
required: true
|
required: true
|
||||||
|
|||||||
@@ -13,6 +13,12 @@
|
|||||||
:scroll-padding="scrollPadding"
|
:scroll-padding="scrollPadding"
|
||||||
@focus-step="[saveStep(), currentField.type !== 'checkbox' ? isFormVisible = true : '', goToStep($event, false, true)]"
|
@focus-step="[saveStep(), currentField.type !== 'checkbox' ? isFormVisible = true : '', goToStep($event, false, true)]"
|
||||||
/>
|
/>
|
||||||
|
<FieldAreas
|
||||||
|
:steps="readonlyConditionalFields.map((e) => [e])"
|
||||||
|
:values="readonlyConditionalFields.reduce((acc, f) => { acc[f.uuid] = f.default_value; return acc }, {})"
|
||||||
|
:submitter="submitter"
|
||||||
|
:submittable="false"
|
||||||
|
/>
|
||||||
<FormulaFieldAreas
|
<FormulaFieldAreas
|
||||||
v-if="formulaFields.length"
|
v-if="formulaFields.length"
|
||||||
:fields="formulaFields"
|
:fields="formulaFields"
|
||||||
@@ -802,6 +808,9 @@ export default {
|
|||||||
currentField () {
|
currentField () {
|
||||||
return this.currentStepFields[0]
|
return this.currentStepFields[0]
|
||||||
},
|
},
|
||||||
|
readonlyConditionalFields () {
|
||||||
|
return this.fields.filter((f) => f.readonly && f.conditions?.length && this.checkFieldConditions(f))
|
||||||
|
},
|
||||||
stepFields () {
|
stepFields () {
|
||||||
return this.fields.filter((f) => !f.readonly).reduce((acc, f) => {
|
return this.fields.filter((f) => !f.readonly).reduce((acc, f) => {
|
||||||
const prevStep = acc[acc.length - 1]
|
const prevStep = acc[acc.length - 1]
|
||||||
@@ -933,12 +942,12 @@ export default {
|
|||||||
return acc && isEmpty(this.values[c.field_uuid])
|
return acc && isEmpty(this.values[c.field_uuid])
|
||||||
} else if (['not_empty', 'checked'].includes(c.action)) {
|
} else if (['not_empty', 'checked'].includes(c.action)) {
|
||||||
return acc && !isEmpty(this.values[c.field_uuid])
|
return acc && !isEmpty(this.values[c.field_uuid])
|
||||||
} else if (['equal', 'contains'].includes(c.action)) {
|
} else if (['equal', 'contains'].includes(c.action) && field) {
|
||||||
const option = field.options.find((o) => o.uuid === c.value)
|
const option = field.options.find((o) => o.uuid === c.value)
|
||||||
const values = [this.values[c.field_uuid]].flat()
|
const values = [this.values[c.field_uuid]].flat()
|
||||||
|
|
||||||
return acc && values.includes(this.optionValue(option, field.options.indexOf(option)))
|
return acc && values.includes(this.optionValue(option, field.options.indexOf(option)))
|
||||||
} else if (['not_equal', 'does_not_contain'].includes(c.action)) {
|
} else if (['not_equal', 'does_not_contain'].includes(c.action) && field) {
|
||||||
const option = field.options.find((o) => o.uuid === c.value)
|
const option = field.options.find((o) => o.uuid === c.value)
|
||||||
const values = [this.values[c.field_uuid]].flat()
|
const values = [this.values[c.field_uuid]].flat()
|
||||||
|
|
||||||
|
|||||||
@@ -51,6 +51,8 @@
|
|||||||
<% next if !field['readonly'] && field['submitter_uuid'] == @submitter.uuid %>
|
<% next if !field['readonly'] && field['submitter_uuid'] == @submitter.uuid %>
|
||||||
<% next if field['redacted'] && field['submitter_uuid'] != @submitter.uuid %>
|
<% next if field['redacted'] && field['submitter_uuid'] != @submitter.uuid %>
|
||||||
<% next if value == '{{date}}' && field['submitter_uuid'] != @submitter.uuid %>
|
<% next if value == '{{date}}' && field['submitter_uuid'] != @submitter.uuid %>
|
||||||
|
<% next if field['conditions'].present? && values[field['uuid']].blank? && field['submitter_uuid'] != @submitter.uuid %>
|
||||||
|
<% next if field['conditions'].present? && field['submitter_uuid'] == @submitter.uuid %>
|
||||||
<% next if field.dig('preferences', 'formula').present? && field['submitter_uuid'] == @submitter.uuid %>
|
<% next if field.dig('preferences', 'formula').present? && field['submitter_uuid'] == @submitter.uuid %>
|
||||||
<%= render 'submissions/value', area:, field:, attachments_index: @attachments_index, value:, locale: @submitter.account.locale, timezone: @submitter.account.timezone, submitter: submitters_index[field['submitter_uuid']], with_signature_id: @form_configs[:with_signature_id] %>
|
<%= render 'submissions/value', area:, field:, attachments_index: @attachments_index, value:, locale: @submitter.account.locale, timezone: @submitter.account.timezone, submitter: submitters_index[field['submitter_uuid']], with_signature_id: @form_configs[:with_signature_id] %>
|
||||||
<% end %>
|
<% end %>
|
||||||
|
|||||||
Reference in New Issue
Block a user