From 3a42a1b560fc62f43ff3ea9506b0ffc1da6430d2 Mon Sep 17 00:00:00 2001 From: Jon Staab Date: Mon, 3 Mar 2025 17:46:15 -0800 Subject: [PATCH] Rework css on room view to avoid losing input visibility --- src/app.css | 24 +++ src/lib/components/PageBar.svelte | 2 +- src/routes/spaces/[relay]/+page.svelte | 4 + src/routes/spaces/[relay]/[room]/+page.svelte | 175 ++++++++++-------- 4 files changed, 123 insertions(+), 82 deletions(-) diff --git a/src/app.css b/src/app.css index 89f2953..c6dc4a2 100644 --- a/src/app.css +++ b/src/app.css @@ -329,3 +329,27 @@ emoji-picker { progress[value]::-webkit-progress-value { transition: width 0.5s; } + +/* content width for fixed elements */ + +.cw { + @apply w-full md:w-[calc(100%-18.5rem)]; +} + +/* chat view */ + +.chat__page-bar { + @apply cw !fixed top-0; +} + +.chat__messages { + @apply cw fixed top-12 flex h-[calc(100%-10rem)] flex-col-reverse overflow-y-auto overflow-x-hidden md:h-[calc(100%-6rem)]; +} + +.chat__compose { + @apply cw fixed bottom-14 md:bottom-0; +} + +.chat__scroll-down { + @apply fixed bottom-28 right-4 md:bottom-16; +} diff --git a/src/lib/components/PageBar.svelte b/src/lib/components/PageBar.svelte index 9e2a0e2..6d29d35 100644 --- a/src/lib/components/PageBar.svelte +++ b/src/lib/components/PageBar.svelte @@ -9,7 +9,7 @@ const {...props}: Props = $props() -
+
diff --git a/src/routes/spaces/[relay]/+page.svelte b/src/routes/spaces/[relay]/+page.svelte index c7cbf4e..73e6b62 100644 --- a/src/routes/spaces/[relay]/+page.svelte +++ b/src/routes/spaces/[relay]/+page.svelte @@ -125,6 +125,7 @@
{/if}
+ Your Rooms
@@ -167,6 +168,9 @@ {/if} {/each} +
+ Other Rooms +
{#each $otherRooms as room (room)}
diff --git a/src/routes/spaces/[relay]/[room]/+page.svelte b/src/routes/spaces/[relay]/[room]/+page.svelte index bba456c..39da6bc 100644 --- a/src/routes/spaces/[relay]/[room]/+page.svelte +++ b/src/routes/spaces/[relay]/[room]/+page.svelte @@ -134,6 +134,8 @@ let parent: TrustedEvent | undefined = $state() let element: HTMLElement | undefined = $state() let newMessages: HTMLElement | undefined = $state() + let parentPreview: HTMLElement | undefined = $state() + let dynamicPadding: HTMLElement | undefined = $state() let newMessagesSeen = false let showFixedNewMessages = $state(false) let showScrollButton = $state(false) @@ -208,6 +210,16 @@ loadingEvents = false }, })) + + const observer = new ResizeObserver(() => { + dynamicPadding!.style.minHeight = `${parentPreview!.offsetHeight}px` + }) + + observer.observe(parentPreview!) + + return () => { + observer.unobserve(parentPreview!) + } }) onDestroy(() => { @@ -220,100 +232,101 @@ }) -
- - {#snippet icon()} -
- -
- {/snippet} - {#snippet title()} - - - - {/snippet} - {#snippet action()} -
- {#if room !== GENERAL} - {#if $userRoomsByUrl.get(url)?.has(room)} - - {:else} - - {/if} - {/if} - -
- {/snippet} -
-
- {#each elements as { type, id, value, showPubkey } (id)} - {#if type === "new-messages"} -
-
-

New Messages

-
-
- {:else if type === "date"} - {value} - {:else} -
- -
- {/if} - {/each} -

- {#if loadingEvents} - Looking for messages... - {:else} - End of message history - {/if} -

-
- {#if showFixedNewMessages} -
-
- -
+ + {#snippet icon()} +
+
- {/if} -
+ {/snippet} + {#snippet title()} + + + + {/snippet} + {#snippet action()} +
+ {#if room !== GENERAL} + {#if $userRoomsByUrl.get(url)?.has(room)} + + {:else} + + {/if} + {/if} + +
+ {/snippet} + + +
+
+ {#each elements as { type, id, value, showPubkey } (id)} + {#if type === "new-messages"} +
+
+

New Messages

+
+
+ {:else if type === "date"} + {value} + {:else} +
+ +
+ {/if} + {/each} +

+ {#if loadingEvents} + Looking for messages... + {:else} + End of message history + {/if} +

+
+ +
+
{#if parent} {/if} {#if share} {/if} -
+
{#if showScrollButton} -
+
{/if} + +{#if showFixedNewMessages} +
+
+ +
+
+{/if}