From 7b54ddf678b5cd7cfa72e77a72503d26573c1867 Mon Sep 17 00:00:00 2001 From: WardPearce Date: Mon, 2 Mar 2026 20:05:03 +1300 Subject: [PATCH] Implemented Melt's spatial menu --- .../lib/components/layout/ItemsList.svelte | 253 ++++-------------- materialious/src/routes/(app)/+layout.svelte | 12 +- 2 files changed, 53 insertions(+), 212 deletions(-) diff --git a/materialious/src/lib/components/layout/ItemsList.svelte b/materialious/src/lib/components/layout/ItemsList.svelte index 4e40f774..1256857a 100644 --- a/materialious/src/lib/components/layout/ItemsList.svelte +++ b/materialious/src/lib/components/layout/ItemsList.svelte @@ -1,16 +1,17 @@ -
+
{#if items.length === 0} {/if} -
+
{#each items as item, index (index)} + {@const uniqueItemId = extractUniqueId(item)} + {@const spatialItem = spatialMenu.getItem(item, { onSelect: () => goToItem(uniqueItemId) })}
goToItem(uniqueItemId), + id: `item-${index}` + })} + class="no-padding item-select border" + class:item-select-focused={spatialItem.highlighted} style="height: 100%;" - id={extractUniqueId(item)} - role="presentation" - onclick={() => { - const uniqueItemId = extractUniqueId(item); - feedLastItemId.set(uniqueItemId); - - // Required to pass click through to thumbnail component on Android TV - if ($isAndroidTvStore) { - const articleElement = document.getElementById(uniqueItemId); - if (articleElement) { - const clickable = articleElement.querySelector('a, button'); - if (clickable instanceof HTMLElement) { - clickable.click(); - } - } - } - }} - onfocus={() => { - if ($isAndroidTvStore) { - currentFocusIndex = index; - } - }} > {#if item.type === 'video' || item.type === 'shortVideo' || item.type === 'stream' || item.type === 'historyVideo'} {#key item.videoId} @@ -278,7 +117,7 @@
diff --git a/materialious/src/routes/(app)/+layout.svelte b/materialious/src/routes/(app)/+layout.svelte index 88435209..1911e261 100644 --- a/materialious/src/routes/(app)/+layout.svelte +++ b/materialious/src/routes/(app)/+layout.svelte @@ -1,6 +1,6 @@