diff --git a/src/pages/taskmanager/components/task-detail/TaskDetailActionBar.tsx b/src/pages/taskmanager/components/task-detail/TaskDetailActionBar.tsx index 34b8864..29f6713 100644 --- a/src/pages/taskmanager/components/task-detail/TaskDetailActionBar.tsx +++ b/src/pages/taskmanager/components/task-detail/TaskDetailActionBar.tsx @@ -56,7 +56,7 @@ const TaskDetailActionBar: FC = ({ activeTab, onTabChange, labelsPopover, return ( <> -
+
{TABS.map(({ id, icon: Icon, labelKey }) => { const isActive = activeTab === id; const hasPopover = POPOVER_TABS.has(id); diff --git a/src/pages/taskmanager/components/task-detail/TaskDetailPopoverPanel.tsx b/src/pages/taskmanager/components/task-detail/TaskDetailPopoverPanel.tsx index b101494..a577b0a 100644 --- a/src/pages/taskmanager/components/task-detail/TaskDetailPopoverPanel.tsx +++ b/src/pages/taskmanager/components/task-detail/TaskDetailPopoverPanel.tsx @@ -10,8 +10,10 @@ type Props = { onClose?: () => void; }; +const MOBILE_BREAKPOINT = 640; + const TaskDetailPopoverPanel: FC = ({ anchorRef, children, className, width = 300, onClose }) => { - const [position, setPosition] = useState<{ top: number; left: number } | null>(null); + const [position, setPosition] = useState<{ top: number; left: number; width: number } | null>(null); const panelRef = useRef(null); useLayoutEffect(() => { @@ -21,12 +23,21 @@ const TaskDetailPopoverPanel: FC = ({ anchorRef, children, className, wid const rect = anchor.getBoundingClientRect(); const padding = 8; - let left = rect.right - width; - left = Math.max(padding, Math.min(left, window.innerWidth - width - padding)); + const isMobile = window.innerWidth < MOBILE_BREAKPOINT; + const panelWidth = Math.min(width, window.innerWidth - padding * 2); + + let left: number; + if (isMobile) { + left = (window.innerWidth - panelWidth) / 2; + } else { + left = rect.right - panelWidth; + left = Math.max(padding, Math.min(left, window.innerWidth - panelWidth - padding)); + } setPosition({ top: rect.bottom + 8, left, + width: panelWidth, }); }; @@ -59,7 +70,7 @@ const TaskDetailPopoverPanel: FC = ({ anchorRef, children, className, wid return createPortal(
{children}