diff --git a/frontend/src/components/AwardEditor.tsx b/frontend/src/components/AwardEditor.tsx index da14b20..c8de09a 100644 --- a/frontend/src/components/AwardEditor.tsx +++ b/frontend/src/components/AwardEditor.tsx @@ -574,8 +574,12 @@ export function AwardEditor({ open, onClose, onSaved }: Props) { {/* NO_FIELD is a sentinel because the stored value is the empty string and a Select cannot carry one — an empty item value means "show the placeholder" to Radix. */} + {/* Picking "no field" clears the fallbacks too: it promises that + nothing is matched automatically, and an OR rule left behind goes + on scanning its own field — worse than a visible one, because the + panel stops showing it. */} patch({ prefix: e.target.value })} placeholder={t('awed.prefixPlaceholder')} title={t('awed.prefixTitle')} /> + )} {/* Fallback searches: tried in order, only while nothing has matched yet — the first that hits wins (short-circuit), so a value already resolved by the primary rule isn't - re-derived differently by a later one. */} + re-derived differently by a later one. + + Shown even with no field when rules survive from an + imported definition: a rule that still runs must still + be visible, or the award finds references the panel + says it cannot. */} + {(!noField || (cur.or_rules?.length ?? 0) > 0) && (

{t('awed.additionalSearches')} (OR) {t('awed.orAlsoMatch')}

@@ -650,7 +661,7 @@ export function AwardEditor({ open, onClose, onSaved }: Props) { ); })}
- )} + )}