Skip to content

Commit 0624fe4

Browse files
committed
improve jumping a bit when opening a EditorLinked with a selected value further down the list
1 parent b4b0ca2 commit 0624fe4

1 file changed

Lines changed: 10 additions & 5 deletions

File tree

src/main/components/editors/linked/UIEditorLinked.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1031,14 +1031,16 @@ const UIEditorLinked: FC<IEditorLinked & IExtendableLinkedEditor & IComponentCon
10311031
}, [])
10321032

10331033
const keepCheckingAndAligningOverlay = useRef(false);
1034-
const checkAndAlignOverlay = useCallback((initial = false) => {
1034+
const checkAndAlignOverlay = useCallback((initial = false, check?: () => boolean) => {
10351035
if (initial) {
10361036
lastOverlayWidth.current = 0;
10371037
keepCheckingAndAligningOverlay.current = true;
10381038
}
10391039
requestAnimationFrame(() => {
1040-
alignOverlay();
10411040
if (keepCheckingAndAligningOverlay.current) {
1041+
if (!check || check()) {
1042+
alignOverlay();
1043+
}
10421044
checkAndAlignOverlay();
10431045
}
10441046
});
@@ -1168,12 +1170,10 @@ const UIEditorLinked: FC<IEditorLinked & IExtendableLinkedEditor & IComponentCon
11681170
const scrollpos = index < last ? 0 : index - 2;
11691171
linkedRef.current?.getVirtualScroller().scrollToIndex(scrollpos, "auto");
11701172

1171-
checkAndAlignOverlay(true);
11721173
setTimeout(() => {
11731174
const el = linkedRef.current?.getOverlay().querySelectorAll('.p-autocomplete-item')[index - linkedRef.current?.getVirtualScroller().getRenderedRange().first];
11741175
el?.classList.add('p-highlight');
11751176
el?.setAttribute('data-p-highlight', 'true');
1176-
keepCheckingAndAligningOverlay.current = false;
11771177
alignOverlay(true);
11781178
}, 50);
11791179
}
@@ -1186,7 +1186,12 @@ const UIEditorLinked: FC<IEditorLinked & IExtendableLinkedEditor & IComponentCon
11861186
lazy: true,
11871187
scrollHeight: suggestions?.length ? `${Math.min(6.66, (suggestions[0].items?.length ?? (suggestions.length - 1)) + 1) * 38}px` : undefined,
11881188
onLazyLoad: handleLazyLoad,
1189-
onScroll: () => alignOverlay(),
1189+
onScroll: (ev) => {
1190+
const range = linkedRef.current?.getVirtualScroller().getRenderedRange();
1191+
if((range?.first ?? 0) < (range?.last ?? 1)) {
1192+
alignOverlay();
1193+
}
1194+
},
11901195
className: props.isCellEditor
11911196
? "celleditor-dropdown-virtual-scroller"
11921197
: "dropdown-virtual-scroller"

0 commit comments

Comments
 (0)