summaryrefslogtreecommitdiffhomepage
path: root/src/features
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-06-26 20:44:40 +0900
committerAdam Malczewski <[email protected]>2026-06-26 20:44:40 +0900
commita8c9be77cf5dd6249d8ea531c4ce79d823a6f600 (patch)
tree4a6bbb086751ebca5aab55de41087d8c2da9205a /src/features
parent51da5df8fc70efc2febda238faeaeacb21713699 (diff)
downloaddispatch-web-a8c9be77cf5dd6249d8ea531c4ce79d823a6f600.tar.gz
dispatch-web-a8c9be77cf5dd6249d8ea531c4ce79d823a6f600.zip
fix(heartbeat): make PromptEditor modal truly fullscreen
Diffstat (limited to 'src/features')
-rw-r--r--src/features/heartbeat/ui/PromptEditor.svelte8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/features/heartbeat/ui/PromptEditor.svelte b/src/features/heartbeat/ui/PromptEditor.svelte
index 2377428..867c32a 100644
--- a/src/features/heartbeat/ui/PromptEditor.svelte
+++ b/src/features/heartbeat/ui/PromptEditor.svelte
@@ -9,6 +9,7 @@
type LoadSystemPromptVariables,
} from "../../system-prompt";
import type { SaveHeartbeatConfig } from "../logic/types";
+ import { portal } from "../../../adapters/portal";
let {
systemPrompt,
@@ -141,8 +142,15 @@
<svelte:window onkeydown={onKeydown} />
+<!-- Teleported to <body> (use:portal) so `position: fixed` resolves against the
+ VIEWPORT, not the sidebar's `transform: translateX(...)` container — an
+ ancestor transform establishes a containing block for `fixed`, which would
+ otherwise clip this overlay to the sidebar area. (RunModal/SystemPromptBuilder
+ avoid this by rendering at the composition root; this modal lives inside
+ HeartbeatView, so it must escape its ancestor.) -->
<!-- svelte-ignore a11y_no_static_element_interactions -->
<div
+ use:portal
class="fixed inset-0 z-50 flex items-center justify-center bg-black/50 p-4"
role="dialog"
aria-modal="true"