mirror of
https://github.com/spacedriveapp/spacedrive
synced 2024-07-14 06:34:04 +00:00
parent
7a701ea8c5
commit
0457643179
|
@ -7,9 +7,9 @@ import {
|
||||||
} from '@tanstack/react-table';
|
} from '@tanstack/react-table';
|
||||||
import { useVirtualizer } from '@tanstack/react-virtual';
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
||||||
import clsx from 'clsx';
|
import clsx from 'clsx';
|
||||||
import { memo, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
import React, { memo, useCallback, useEffect, useLayoutEffect, useRef, useState } from 'react';
|
||||||
import BasicSticky from 'react-sticky-el';
|
import BasicSticky from 'react-sticky-el';
|
||||||
import { useMutationObserver, useWindowEventListener } from 'rooks';
|
import { useWindowEventListener } from 'rooks';
|
||||||
import useResizeObserver from 'use-resize-observer';
|
import useResizeObserver from 'use-resize-observer';
|
||||||
import { getItemFilePath, type ExplorerItem } from '@sd/client';
|
import { getItemFilePath, type ExplorerItem } from '@sd/client';
|
||||||
import { ContextMenu, Tooltip } from '@sd/ui';
|
import { ContextMenu, Tooltip } from '@sd/ui';
|
||||||
|
@ -820,16 +820,26 @@ export default () => {
|
||||||
});
|
});
|
||||||
|
|
||||||
// Set header position and list offset
|
// Set header position and list offset
|
||||||
useMutationObserver(explorer.scrollRef, () => {
|
useEffect(() => {
|
||||||
const view = explorerView.ref.current;
|
const element = explorer.scrollRef.current;
|
||||||
const scroll = explorer.scrollRef.current;
|
if (!element) return;
|
||||||
if (!view || !scroll) return;
|
|
||||||
setTop(
|
const observer = new MutationObserver(() => {
|
||||||
explorerView.top ??
|
setTop(
|
||||||
parseInt(getComputedStyle(scroll).paddingTop) + scroll.getBoundingClientRect().top
|
explorerView.top ??
|
||||||
);
|
parseInt(getComputedStyle(element).paddingTop) +
|
||||||
setListOffset(tableRef.current?.offsetTop ?? 0);
|
element.getBoundingClientRect().top
|
||||||
});
|
);
|
||||||
|
setListOffset(tableRef.current?.offsetTop ?? 0);
|
||||||
|
});
|
||||||
|
|
||||||
|
observer.observe(element, {
|
||||||
|
attributes: true,
|
||||||
|
subtree: true
|
||||||
|
});
|
||||||
|
|
||||||
|
return () => observer.disconnect();
|
||||||
|
}, [explorer.scrollRef, explorerView.top]);
|
||||||
|
|
||||||
// Set list offset
|
// Set list offset
|
||||||
useLayoutEffect(() => setListOffset(tableRef.current?.offsetTop ?? 0), []);
|
useLayoutEffect(() => setListOffset(tableRef.current?.offsetTop ?? 0), []);
|
||||||
|
|
Loading…
Reference in a new issue