From b9b5988ebdf3edd75add445282977c516ef5ed51 Mon Sep 17 00:00:00 2001 From: Guilhem Date: Wed, 16 Sep 2026 10:42:47 +0200 Subject: [PATCH] fix: keep sidebar confirmation dialogs from being confined to the rail (#11158) Co-authored-by: Claude Fable 5.1 --- frontend/src/lib/components/home/ItemsList.svelte | 5 ++++- .../components/sidebar/DeleteForkedWorkspaceModal.svelte | 3 +++ frontend/src/lib/components/sidebar/SettingsMenu.svelte | 3 +++ frontend/src/lib/components/sidebar/SidebarContent.svelte | 3 +++ frontend/src/routes/(root)/(logged)/+layout.svelte | 6 +++++- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/frontend/src/lib/components/home/ItemsList.svelte b/frontend/src/lib/components/home/ItemsList.svelte index 35b1c5a6f3..7038a316fa 100644 --- a/frontend/src/lib/components/home/ItemsList.svelte +++ b/frontend/src/lib/components/home/ItemsList.svelte @@ -2107,8 +2107,11 @@ } } + /* `backwards`, not `both`: the fill hides rows until their staggered start, but a forwards + fill would keep `transform` animated afterwards and confine the row's remove confirmation + (`position: fixed`) to the row. The `to` keyframe equals the row's resting style. */ .wm-imported > :global(*) { - animation: wm-row-in 260ms ease-out both; + animation: wm-row-in 260ms ease-out backwards; animation-delay: 320ms; } .wm-imported > :global(*:nth-child(1)) { diff --git a/frontend/src/lib/components/sidebar/DeleteForkedWorkspaceModal.svelte b/frontend/src/lib/components/sidebar/DeleteForkedWorkspaceModal.svelte index ff049ceddb..3a73758146 100644 --- a/frontend/src/lib/components/sidebar/DeleteForkedWorkspaceModal.svelte +++ b/frontend/src/lib/components/sidebar/DeleteForkedWorkspaceModal.svelte @@ -151,8 +151,11 @@ {#if currentWsIsFork} + { diff --git a/frontend/src/lib/components/sidebar/SettingsMenu.svelte b/frontend/src/lib/components/sidebar/SettingsMenu.svelte index 857e422bdd..e0951f37cd 100644 --- a/frontend/src/lib/components/sidebar/SettingsMenu.svelte +++ b/frontend/src/lib/components/sidebar/SettingsMenu.svelte @@ -396,8 +396,11 @@ {/snippet} + { diff --git a/frontend/src/lib/components/sidebar/SidebarContent.svelte b/frontend/src/lib/components/sidebar/SidebarContent.svelte index 7fa161dd2d..b43bc2988e 100644 --- a/frontend/src/lib/components/sidebar/SidebarContent.svelte +++ b/frontend/src/lib/components/sidebar/SidebarContent.svelte @@ -737,8 +737,11 @@ + { diff --git a/frontend/src/routes/(root)/(logged)/+layout.svelte b/frontend/src/routes/(root)/(logged)/+layout.svelte index 225b9443d3..c82e8b9d54 100644 --- a/frontend/src/routes/(root)/(logged)/+layout.svelte +++ b/frontend/src/routes/(root)/(logged)/+layout.svelte @@ -1515,8 +1515,12 @@ } } + /* No forwards fill: a filled animation keeps `transform` animated after it ends, which makes + the rail the containing block for every `position: fixed` descendant — the confirmation + dialogs opened from the settings menu would be confined to the rail's column. The `to` + keyframe equals the rail's resting style, so nothing changes visually when the fill drops. */ :global(#sidebar.wm-sidebar-in) { - animation: wm-sidebar-in 500ms ease-out both; + animation: wm-sidebar-in 500ms ease-out; } @media (prefers-reduced-motion: reduce) {