From 0f6e40a5ba545436ee73f9361b90cb6b55b5d5f9 Mon Sep 17 00:00:00 2001
From: Kyle Pope
Date: Wed, 18 Mar 2026 01:20:57 +0800
Subject: [PATCH] Fix dropdown clipping: remove overflow constraints on parent
containers
Revert fixed-positioning approach (caused z-index and placement issues).
Instead fix the root cause: parent containers with overflow that clipped
absolutely-positioned dropdowns.
- IAMPage: Remove overflow-x-auto on table wrapper (columns already
hide via responsive classes, no horizontal scroll needed)
- AlertBanner: Remove max-h-48 overflow-y-auto on alerts list
(alerts are naturally bounded, constraint clipped SnoozeDropdown)
- Revert UserActionsMenu and SnoozeDropdown to simple absolute positioning
Co-Authored-By: Claude Opus 4.6 (1M context)
---
frontend/src/components/admin/IAMPage.tsx | 2 +-
.../src/components/admin/UserActionsMenu.tsx | 16 ++-----------
.../src/components/dashboard/AlertBanner.tsx | 2 +-
.../components/reminders/SnoozeDropdown.tsx | 23 ++++---------------
4 files changed, 8 insertions(+), 35 deletions(-)
diff --git a/frontend/src/components/admin/IAMPage.tsx b/frontend/src/components/admin/IAMPage.tsx
index 03024f5..68560c6 100644
--- a/frontend/src/components/admin/IAMPage.tsx
+++ b/frontend/src/components/admin/IAMPage.tsx
@@ -160,7 +160,7 @@ export default function IAMPage() {
{searchQuery ? 'No users match your search.' : 'No users found.'}
) : (
-
+
diff --git a/frontend/src/components/admin/UserActionsMenu.tsx b/frontend/src/components/admin/UserActionsMenu.tsx
index b808e7b..60c99d5 100644
--- a/frontend/src/components/admin/UserActionsMenu.tsx
+++ b/frontend/src/components/admin/UserActionsMenu.tsx
@@ -46,8 +46,6 @@ export default function UserActionsMenu({ user, currentUsername }: UserActionsMe
const [roleSubmenuOpen, setRoleSubmenuOpen] = useState(false);
const [tempPassword, setTempPassword] = useState(null);
const menuRef = useRef(null);
- const buttonRef = useRef(null);
- const [menuPos, setMenuPos] = useState<{ top: number; right: number } | null>(null);
const updateRole = useUpdateRole();
const resetPassword = useResetPassword();
@@ -125,17 +123,10 @@ export default function UserActionsMenu({ user, currentUsername }: UserActionsMe
return (
{open && (
-
+
{/* Edit Role */}
-
+
{alerts.map((alert) => (
(null);
- const buttonRef = useRef
(null);
- const [menuPos, setMenuPos] = useState<{ top?: number; bottom?: number; right: number } | null>(null);
useEffect(() => {
if (!open) return;
@@ -41,18 +39,7 @@ export default function SnoozeDropdown({ onSnooze, label, direction = 'up', opti
return (
{open && (
-
+
{options.map((opt) => (