|
|
@@ -1,6 +1,7 @@
|
|
|
import { type JSX, useCallback, useEffect, useRef, useState } from 'react';
|
|
|
|
|
|
import { useCurrentPageData } from '~/states/page';
|
|
|
+import { useDeviceLargerThanSm } from '~/states/ui/device';
|
|
|
import { usePageControlsX } from '~/states/ui/page';
|
|
|
|
|
|
import { PagePathHeader } from './PagePathHeader';
|
|
|
@@ -13,23 +14,26 @@ const moduleClass = styles['page-header'] ?? '';
|
|
|
export const PageHeader = (): JSX.Element => {
|
|
|
const currentPage = useCurrentPageData();
|
|
|
const pageControlsX = usePageControlsX();
|
|
|
+ const [isLargerThanSm] = useDeviceLargerThanSm();
|
|
|
const pageHeaderRef = useRef<HTMLDivElement>(null);
|
|
|
|
|
|
- const [maxWidth, setMaxWidth] = useState<number>();
|
|
|
+ const [maxWidth, setMaxWidth] = useState<number>(300);
|
|
|
|
|
|
const calcMaxWidth = useCallback(() => {
|
|
|
- if (pageControlsX == null || pageHeaderRef.current == null) {
|
|
|
- // Length that allows users to use PageHeader functionality.
|
|
|
- setMaxWidth(300);
|
|
|
+ if (pageHeaderRef.current == null) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- // PageControls.x - PageHeader.x
|
|
|
- const maxWidth =
|
|
|
- pageControlsX - pageHeaderRef.current.getBoundingClientRect().x;
|
|
|
-
|
|
|
- setMaxWidth(maxWidth);
|
|
|
- }, [pageControlsX]);
|
|
|
+ const pageHeaderX = pageHeaderRef.current.getBoundingClientRect().x;
|
|
|
+ setMaxWidth(
|
|
|
+ !isLargerThanSm
|
|
|
+ ? window.innerWidth - pageHeaderX
|
|
|
+ : pageControlsX != null
|
|
|
+ ? pageControlsX - pageHeaderX
|
|
|
+ : // Length that allows users to use PageHeader functionality.
|
|
|
+ 300,
|
|
|
+ );
|
|
|
+ }, [isLargerThanSm, pageControlsX]);
|
|
|
|
|
|
useEffect(() => {
|
|
|
calcMaxWidth();
|