diff --git a/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx b/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx index 6df7254f6ca..fdf03057116 100644 --- a/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/ConditionField.tsx @@ -29,9 +29,20 @@ export const ConditionField: FC = () => { [queries] ); + const expressions = useMemo(() => { + return queries.filter((query) => query.datasourceUid === ExpressionDatasourceUID); + }, [queries]); + + // automatically use the last expression when new expressions have been added + useEffect(() => { + const lastExpression = last(expressions); + if (lastExpression) { + setValue('condition', lastExpression.refId, { shouldValidate: true }); + } + }, [expressions, setValue]); + // reset condition if option no longer exists or if it is unset, but there are options available useEffect(() => { - const expressions = queries.filter((query) => query.datasourceUid === ExpressionDatasourceUID); const lastExpression = last(expressions); const conditionExists = options.find(({ value }) => value === condition); @@ -40,7 +51,7 @@ export const ConditionField: FC = () => { } else if (!condition && lastExpression) { setValue('condition', lastExpression.refId, { shouldValidate: true }); } - }, [condition, options, queries, setValue]); + }, [condition, expressions, options, setValue]); return (