import { conditionsMet } from "./FormLogicConditionChecker" class FormLogicPropertyResolver { conditionsMet = conditionsMet property = null formData = null logic = false constructor(property, formData) { this.property = property this.formData = formData this.logic = property.logic !== undefined ? property.logic : false } isHidden() { if (!this.logic) { return this.property.hidden } const conditionsMet = this.conditionsMet( this.logic.conditions, this.formData, ) if ( conditionsMet && this.property.hidden && this.logic.actions.length > 0 && this.logic.actions.includes("show-block") ) { return false } else if ( conditionsMet && !this.property.hidden && this.logic.actions.length > 0 && this.logic.actions.includes("hide-block") ) { return true } else { return this.property.hidden } } isRequired() { if (!this.logic) { return this.property.required } const conditionsMet = this.conditionsMet( this.logic.conditions, this.formData, ) if ( conditionsMet && this.property.required && this.logic.actions.length > 0 && this.logic.actions.includes("make-it-optional") ) { return false } else if ( conditionsMet && !this.property.required && this.logic.actions.length > 0 && this.logic.actions.includes("require-answer") ) { return true } else { return this.property.required } } isDisabled() { if (!this.logic) { return this.property.disabled } const conditionsMet = this.conditionsMet( this.logic.conditions, this.formData, ) if ( conditionsMet && this.property.disabled && this.logic.actions.length > 0 && this.logic.actions.includes("enable-block") ) { return false } else if ( conditionsMet && !this.property.disabled && this.logic.actions.length > 0 && this.logic.actions.includes("disable-block") ) { return true } else { return this.property.disabled } } } export default FormLogicPropertyResolver