From e72bd6671470bf5dfac7e88680f476a16e3a0df7 Mon Sep 17 00:00:00 2001 From: Tim Disney Date: Mon, 23 Feb 2026 11:09:44 -0800 Subject: [PATCH 1/5] better layout on small screens --- src/lib/components/ArticleCard.svelte | 40 +++++++++++++++++++++++++-- 1 file changed, 37 insertions(+), 3 deletions(-) diff --git a/src/lib/components/ArticleCard.svelte b/src/lib/components/ArticleCard.svelte index dec4543..af49f61 100644 --- a/src/lib/components/ArticleCard.svelte +++ b/src/lib/components/ArticleCard.svelte @@ -514,10 +514,10 @@ {/if} {#if tagMenuOpen} @@ -267,9 +261,7 @@ From dbaf8594040c063d7abd2764f7647b90f730f1b1 Mon Sep 17 00:00:00 2001 From: Tim Disney Date: Mon, 23 Feb 2026 11:46:19 -0800 Subject: [PATCH 3/5] better layout on saved --- src/lib/components/PopoverMenu.svelte | 22 +-- src/lib/components/feed/SavedCard.svelte | 205 +++++++++++++++++++---- 2 files changed, 181 insertions(+), 46 deletions(-) diff --git a/src/lib/components/PopoverMenu.svelte b/src/lib/components/PopoverMenu.svelte index 6d5b68c..7412fca 100644 --- a/src/lib/components/PopoverMenu.svelte +++ b/src/lib/components/PopoverMenu.svelte @@ -12,11 +12,11 @@ interface Props { items: MenuItem[]; + open?: boolean; } - let { items }: Props = $props(); + let { items, open = $bindable(false) }: Props = $props(); - let isOpen = $state(false); let menuRef: HTMLDivElement | null = $state(null); let buttonRef: HTMLButtonElement | null = $state(null); let menuPosition = $state<{ @@ -56,8 +56,8 @@ function toggle(e: MouseEvent) { e.stopPropagation(); - isOpen = !isOpen; - if (isOpen) { + open = !open; + if (open) { // Position after the menu is rendered requestAnimationFrame(() => { updateMenuPosition(); @@ -68,26 +68,26 @@ function handleItemClick(item: MenuItem, e: MouseEvent) { e.stopPropagation(); if (!item.keepOpen) { - isOpen = false; + open = false; } item.onclick(); } function handleClickOutside(e: MouseEvent) { if ( - isOpen && + open && menuRef && buttonRef && !menuRef.contains(e.target as Node) && !buttonRef.contains(e.target as Node) ) { - isOpen = false; + open = false; } } function handleKeydown(e: KeyboardEvent) { - if (isOpen && e.key === 'Escape') { - isOpen = false; + if (open && e.key === 'Escape') { + open = false; buttonRef?.focus(); } } @@ -110,12 +110,12 @@ class="menu-trigger" onclick={toggle} aria-haspopup="true" - aria-expanded={isOpen} + aria-expanded={open} > - {#if isOpen} + {#if open}