diff --git a/packages/builder/src/components/design/PropertiesPanel/ConditionalUISection.svelte b/packages/builder/src/components/design/PropertiesPanel/ConditionalUISection.svelte index 448c21e9ad..b1f65f3593 100644 --- a/packages/builder/src/components/design/PropertiesPanel/ConditionalUISection.svelte +++ b/packages/builder/src/components/design/PropertiesPanel/ConditionalUISection.svelte @@ -17,8 +17,6 @@ store.actions.components.updateConditions(tempValue) drawer.hide() } - - $: console.log(componentInstance?._id) { conditions = e.detail.items } + + const getOperatorOptions = condition => { + return getValidOperatorsForType(condition.valueType) + } + + const onOperatorChange = (condition, newOperator) => { + const noValueOptions = [ + OperatorOptions.Empty.value, + OperatorOptions.NotEmpty.value, + ] + condition.noValue = noValueOptions.includes(newOperator) + if (condition.noValue) { + condition.referenceValue = null + condition.valueType = "string" + } + } + + const onValueTypeChange = (condition, newType) => { + condition.referenceValue = null + + // Ensure a valid operator is set + const validOperators = getValidOperatorsForType(newType) + if (!validOperators.includes(condition.operator)) { + condition.operator = + validOperators[0]?.value ?? OperatorOptions.Equals.value + onOperatorChange(condition, condition.operator) + } + } @@ -143,15 +191,39 @@ /> onValueTypeChange(condition, e.detail)} /> + {#if ["string", "number"].includes(condition.valueType)} + (condition.referenceValue = e.detail)} + /> + {:else if condition.valueType === "datetime"} + + {:else if condition.valueType === "boolean"} +