& {
+ context?: ListContext;
+}) {
+ return (
+ context?.onFocus(props["data-item-index"])}
+ onMouseDown={(e) =>
+ context?.onMouseDown(e.nativeEvent, props["data-item-index"])
+ }
+ >
+ {props.children}
+
+ );
+}
+
/**
* Scroll the element at the specified index into view and
* wait until it renders into the DOM. This function keeps
@@ -268,28 +345,29 @@ function ItemRenderer({
* 50ms interval.
*/
function waitForElement(
- list: Virtualizer,
+ list: VirtuosoHandle,
index: number,
elementId: string,
callback: (element: HTMLElement) => void
) {
let waitInterval = 0;
let maxAttempts = 3;
- list.scrollToIndex(index);
- function scrollDone() {
- if (!maxAttempts) return;
- clearTimeout(waitInterval);
+ list.scrollIntoView({
+ index,
+ done: function scrollDone() {
+ if (!maxAttempts) return;
+ clearTimeout(waitInterval);
- const element = document.getElementById(elementId);
- if (!element) {
- --maxAttempts;
- waitInterval = setTimeout(() => {
- scrollDone();
- }, 50) as unknown as number;
- return;
+ const element = document.getElementById(elementId);
+ if (!element) {
+ --maxAttempts;
+ waitInterval = setTimeout(() => {
+ scrollDone();
+ }, 50) as unknown as number;
+ return;
+ }
+
+ callback(element);
}
-
- callback(element);
- }
- scrollDone();
+ });
}