mirror of
https://github.com/jeffvli/feishin.git
synced 2026-05-10 04:30:25 +02:00
add prop to disable custom autoscroll on ItemTableList
This commit is contained in:
@@ -7,6 +7,7 @@ import { ItemListStateActions } from '/@/renderer/components/item-list/helpers/i
|
|||||||
|
|
||||||
export const useTablePaneSync = ({
|
export const useTablePaneSync = ({
|
||||||
enableDrag,
|
enableDrag,
|
||||||
|
enableDragScroll,
|
||||||
enableHeader,
|
enableHeader,
|
||||||
handleRef,
|
handleRef,
|
||||||
onScrollEndRef,
|
onScrollEndRef,
|
||||||
@@ -22,6 +23,7 @@ export const useTablePaneSync = ({
|
|||||||
setShowTopShadow,
|
setShowTopShadow,
|
||||||
}: {
|
}: {
|
||||||
enableDrag: boolean | undefined;
|
enableDrag: boolean | undefined;
|
||||||
|
enableDragScroll: boolean | undefined;
|
||||||
enableHeader: boolean;
|
enableHeader: boolean;
|
||||||
handleRef: React.RefObject<null | { internalState: ItemListStateActions }>;
|
handleRef: React.RefObject<null | { internalState: ItemListStateActions }>;
|
||||||
onScrollEndRef: React.RefObject<
|
onScrollEndRef: React.RefObject<
|
||||||
@@ -105,7 +107,7 @@ export const useTablePaneSync = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
let autoScrollCleanup: (() => void) | null = null;
|
let autoScrollCleanup: (() => void) | null = null;
|
||||||
if (enableDrag) {
|
if (enableDrag && enableDragScroll) {
|
||||||
autoScrollCleanup = autoScrollForElements({
|
autoScrollCleanup = autoScrollForElements({
|
||||||
canScroll: () => true,
|
canScroll: () => true,
|
||||||
element: viewport,
|
element: viewport,
|
||||||
@@ -137,7 +139,14 @@ export const useTablePaneSync = ({
|
|||||||
// Ignore error
|
// Ignore error
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, [enableDrag, initialize, osInstance, pinnedRightColumnCount, scrollContainerRef]);
|
}, [
|
||||||
|
enableDrag,
|
||||||
|
enableDragScroll,
|
||||||
|
initialize,
|
||||||
|
osInstance,
|
||||||
|
pinnedRightColumnCount,
|
||||||
|
scrollContainerRef,
|
||||||
|
]);
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (pinnedLeftColumnCount === 0) {
|
if (pinnedLeftColumnCount === 0) {
|
||||||
@@ -153,7 +162,7 @@ export const useTablePaneSync = ({
|
|||||||
const viewport = root.firstElementChild as HTMLElement;
|
const viewport = root.firstElementChild as HTMLElement;
|
||||||
|
|
||||||
let autoScrollCleanup: (() => void) | null = null;
|
let autoScrollCleanup: (() => void) | null = null;
|
||||||
if (enableDrag) {
|
if (enableDrag && enableDragScroll) {
|
||||||
autoScrollCleanup = autoScrollForElements({
|
autoScrollCleanup = autoScrollForElements({
|
||||||
canScroll: () => true,
|
canScroll: () => true,
|
||||||
element: viewport,
|
element: viewport,
|
||||||
@@ -167,7 +176,7 @@ export const useTablePaneSync = ({
|
|||||||
autoScrollCleanup();
|
autoScrollCleanup();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}, [enableDrag, pinnedLeftColumnCount, pinnedLeftColumnRef]);
|
}, [enableDrag, enableDragScroll, pinnedLeftColumnCount, pinnedLeftColumnRef]);
|
||||||
|
|
||||||
// Initialize overlayscrollbars for right pinned columns
|
// Initialize overlayscrollbars for right pinned columns
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
@@ -189,7 +198,7 @@ export const useTablePaneSync = ({
|
|||||||
});
|
});
|
||||||
|
|
||||||
let autoScrollCleanup: (() => void) | null = null;
|
let autoScrollCleanup: (() => void) | null = null;
|
||||||
if (enableDrag) {
|
if (enableDrag && enableDragScroll) {
|
||||||
autoScrollCleanup = autoScrollForElements({
|
autoScrollCleanup = autoScrollForElements({
|
||||||
canScroll: () => true,
|
canScroll: () => true,
|
||||||
element: viewport,
|
element: viewport,
|
||||||
@@ -223,6 +232,7 @@ export const useTablePaneSync = ({
|
|||||||
};
|
};
|
||||||
}, [
|
}, [
|
||||||
enableDrag,
|
enableDrag,
|
||||||
|
enableDragScroll,
|
||||||
initializeRightPinned,
|
initializeRightPinned,
|
||||||
osInstanceRightPinned,
|
osInstanceRightPinned,
|
||||||
pinnedRightColumnCount,
|
pinnedRightColumnCount,
|
||||||
|
|||||||
@@ -768,6 +768,7 @@ export interface TableItemProps {
|
|||||||
enableColumnReorder?: boolean;
|
enableColumnReorder?: boolean;
|
||||||
enableColumnResize?: boolean;
|
enableColumnResize?: boolean;
|
||||||
enableDrag?: ItemTableListProps['enableDrag'];
|
enableDrag?: ItemTableListProps['enableDrag'];
|
||||||
|
enableDragScroll?: boolean;
|
||||||
enableExpansion?: ItemTableListProps['enableExpansion'];
|
enableExpansion?: ItemTableListProps['enableExpansion'];
|
||||||
enableHeader?: ItemTableListProps['enableHeader'];
|
enableHeader?: ItemTableListProps['enableHeader'];
|
||||||
enableHorizontalBorders?: ItemTableListProps['enableHorizontalBorders'];
|
enableHorizontalBorders?: ItemTableListProps['enableHorizontalBorders'];
|
||||||
@@ -802,6 +803,7 @@ interface ItemTableListProps {
|
|||||||
data: unknown[];
|
data: unknown[];
|
||||||
enableAlternateRowColors?: boolean;
|
enableAlternateRowColors?: boolean;
|
||||||
enableDrag?: boolean;
|
enableDrag?: boolean;
|
||||||
|
enableDragScroll?: boolean;
|
||||||
enableEntranceAnimation?: boolean;
|
enableEntranceAnimation?: boolean;
|
||||||
enableExpansion?: boolean;
|
enableExpansion?: boolean;
|
||||||
enableHeader?: boolean;
|
enableHeader?: boolean;
|
||||||
@@ -849,6 +851,7 @@ const BaseItemTableList = ({
|
|||||||
data,
|
data,
|
||||||
enableAlternateRowColors = false,
|
enableAlternateRowColors = false,
|
||||||
enableDrag = true,
|
enableDrag = true,
|
||||||
|
enableDragScroll = true,
|
||||||
enableEntranceAnimation = true,
|
enableEntranceAnimation = true,
|
||||||
enableExpansion = true,
|
enableExpansion = true,
|
||||||
enableHeader = true,
|
enableHeader = true,
|
||||||
@@ -1001,6 +1004,7 @@ const BaseItemTableList = ({
|
|||||||
|
|
||||||
useTablePaneSync({
|
useTablePaneSync({
|
||||||
enableDrag,
|
enableDrag,
|
||||||
|
enableDragScroll,
|
||||||
enableHeader,
|
enableHeader,
|
||||||
handleRef,
|
handleRef,
|
||||||
onScrollEndRef,
|
onScrollEndRef,
|
||||||
|
|||||||
Reference in New Issue
Block a user