|
@@ -1,6 +1,7 @@
|
|
|
import React, {
|
|
import React, {
|
|
|
type FC,
|
|
type FC,
|
|
|
memo, useCallback, useEffect, useState,
|
|
memo, useCallback, useEffect, useState,
|
|
|
|
|
+ useRef,
|
|
|
} from 'react';
|
|
} from 'react';
|
|
|
|
|
|
|
|
import dynamic from 'next/dynamic';
|
|
import dynamic from 'next/dynamic';
|
|
@@ -13,6 +14,7 @@ import {
|
|
|
useCurrentProductNavWidth,
|
|
useCurrentProductNavWidth,
|
|
|
usePreferCollapsedMode,
|
|
usePreferCollapsedMode,
|
|
|
useSidebarMode,
|
|
useSidebarMode,
|
|
|
|
|
+ useSidebarScrollerRef,
|
|
|
} from '~/stores/ui';
|
|
} from '~/stores/ui';
|
|
|
|
|
|
|
|
import { DrawerToggler } from '../Common/DrawerToggler';
|
|
import { DrawerToggler } from '../Common/DrawerToggler';
|
|
@@ -109,6 +111,10 @@ const CollapsibleContainer = memo((props: CollapsibleContainerProps): JSX.Elemen
|
|
|
const { data: currentProductNavWidth } = useCurrentProductNavWidth();
|
|
const { data: currentProductNavWidth } = useCurrentProductNavWidth();
|
|
|
const { data: isCollapsedContentsOpened, mutate: mutateCollapsedContentsOpened } = useCollapsedContentsOpened();
|
|
const { data: isCollapsedContentsOpened, mutate: mutateCollapsedContentsOpened } = useCollapsedContentsOpened();
|
|
|
|
|
|
|
|
|
|
+ const sidebarScrollerRef = useRef<HTMLDivElement>(null);
|
|
|
|
|
+ const { mutate: mutateSidebarScroller } = useSidebarScrollerRef();
|
|
|
|
|
+ mutateSidebarScroller(sidebarScrollerRef);
|
|
|
|
|
+
|
|
|
|
|
|
|
|
// open menu when collapsed mode
|
|
// open menu when collapsed mode
|
|
|
const primaryItemHoverHandler = useCallback(() => {
|
|
const primaryItemHoverHandler = useCallback(() => {
|
|
@@ -138,6 +144,7 @@ const CollapsibleContainer = memo((props: CollapsibleContainerProps): JSX.Elemen
|
|
|
<div className={`flex-expand-horiz ${className}`} onMouseLeave={mouseLeaveHandler}>
|
|
<div className={`flex-expand-horiz ${className}`} onMouseLeave={mouseLeaveHandler}>
|
|
|
<Nav onPrimaryItemHover={primaryItemHoverHandler} />
|
|
<Nav onPrimaryItemHover={primaryItemHoverHandler} />
|
|
|
<div
|
|
<div
|
|
|
|
|
+ ref={sidebarScrollerRef}
|
|
|
className={`sidebar-contents-container flex-grow-1 overflow-y-auto overflow-x-hidden ${closedClass} ${openedClass}`}
|
|
className={`sidebar-contents-container flex-grow-1 overflow-y-auto overflow-x-hidden ${closedClass} ${openedClass}`}
|
|
|
style={{ width: collapsibleContentsWidth }}
|
|
style={{ width: collapsibleContentsWidth }}
|
|
|
>
|
|
>
|