Browse Source

Optimize page header title display for mobile

satof3 4 months ago
parent
commit
8f24e36287
1 changed files with 19 additions and 4 deletions
  1. 19 4
      apps/app/src/client/components/PageHeader/PageHeader.tsx

+ 19 - 4
apps/app/src/client/components/PageHeader/PageHeader.tsx

@@ -15,12 +15,21 @@ export const PageHeader = (): JSX.Element => {
   const pageControlsX = usePageControlsX();
   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;
+    }
+
+    // For mobile screens (< 576px), use full screen width
+    if (window.innerWidth < 576) {
+      const maxWidth = window.innerWidth - pageHeaderRef.current.getBoundingClientRect().x;
+      setMaxWidth(maxWidth);
+      return;
+    }
+
+    if (pageControlsX == null) {
       return;
     }
 
@@ -33,6 +42,12 @@ export const PageHeader = (): JSX.Element => {
 
   useEffect(() => {
     calcMaxWidth();
+
+    // Recalculate on window resize
+    window.addEventListener('resize', calcMaxWidth);
+    return () => {
+      window.removeEventListener('resize', calcMaxWidth);
+    };
   }, [calcMaxWidth]);
 
   if (currentPage == null) {