diff --git a/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.test.tsx b/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.test.tsx index 7646f67735c..edcf354ef6d 100644 --- a/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.test.tsx +++ b/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.test.tsx @@ -109,4 +109,10 @@ describe('RefIDMultiPicker', () => { expect(mockOnChange).toHaveBeenLastCalledWith(['A', 'B']); /* eslint-enable testing-library/prefer-user-event */ }); + + // in the scenario where a refID filter was saved, but is no longer valid, it should still show. + it('Should display a refID that does not exist in the selection', async () => { + multiSetup({ value: '/^(?:merge-A-B-C)$/' }); + expect(screen.getByText('merge-A-B-C')).toBeInTheDocument(); + }); }); diff --git a/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.tsx b/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.tsx index 87175cbb057..30899db375a 100644 --- a/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.tsx +++ b/packages/grafana-ui/src/components/MatchersUI/FieldsByFrameRefIdMatcher.tsx @@ -129,7 +129,6 @@ export function RefIDMultiPicker({ value, data, onChange, placeholder }: MultiPr const currentValue = useMemo(() => { let extractedRefIds = new Set(); - if (value) { if (value.startsWith('/^')) { try { @@ -152,8 +151,10 @@ export function RefIDMultiPicker({ value, data, onChange, placeholder }: MultiPr } const newRefIds = [...extractedRefIds].map(toOption); + const recoveredRefIDs = + recoverMultiRefIdMissing(newRefIds, priorSelectionState.refIds, priorSelectionState.value) ?? []; - return recoverMultiRefIdMissing(newRefIds, priorSelectionState.refIds, priorSelectionState.value); + return recoveredRefIDs.length > 0 ? recoveredRefIDs : newRefIds.length > 0 ? newRefIds : undefined; }, [value, listOfRefIds, priorSelectionState]); const onFilterChange = useCallback(