diff --git a/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx b/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx index ad42c9737d8..2395c016e5d 100644 --- a/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx +++ b/packages/grafana-ui/src/components/DataLinks/DataLinkInput.tsx @@ -80,6 +80,7 @@ export const DataLinkInput: React.FC = memo( const [suggestionsIndex, setSuggestionsIndex] = useState(0); const [linkUrl, setLinkUrl] = useState(makeValue(value)); const prevLinkUrl = usePrevious(linkUrl); + const [scrollTop, setScrollTop] = useState(0); // Workaround for https://github.com/ianstormtaylor/slate/issues/2927 const stateRef = useRef({ showingSuggestions, suggestions, suggestionsIndex, linkUrl, onChange }); @@ -87,10 +88,9 @@ export const DataLinkInput: React.FC = memo( // Used to get the height of the suggestion elements in order to scroll to them. const activeRef = useRef(null); - const activeIndexPosition = useMemo( - () => getElementPosition(activeRef.current, suggestionsIndex), - [suggestionsIndex] - ); + useEffect(() => { + setScrollTop(getElementPosition(activeRef.current, suggestionsIndex)); + }, [suggestionsIndex]); // SelectionReference is used to position the variables suggestion relatively to current DOM selection const selectionRef = useMemo(() => new SelectionReference(), []); @@ -183,7 +183,11 @@ export const DataLinkInput: React.FC = memo( {({ ref, style, placement }) => { return (
- + setScrollTop(scrollTop)} + >