From 6885ae2d080e0ede9a74e5e51f8f1493c2f1b83a Mon Sep 17 00:00:00 2001 From: sethburkart123 Date: Sun, 15 Sep 2024 08:39:31 +1000 Subject: [PATCH] fix: Set display theme on cover swiper slide click --- src/old-interface/hooks/ThemeManagment.ts | 2 +- .../components/store/CoverSwiper.svelte | 10 +++- .../components/store/ThemeGrid.svelte | 59 ++++++++----------- src/svelte-interface/pages/store.svelte | 30 ++++++---- 4 files changed, 55 insertions(+), 46 deletions(-) diff --git a/src/old-interface/hooks/ThemeManagment.ts b/src/old-interface/hooks/ThemeManagment.ts index f87319f9..5ebd3c63 100644 --- a/src/old-interface/hooks/ThemeManagment.ts +++ b/src/old-interface/hooks/ThemeManagment.ts @@ -1,5 +1,5 @@ import browser from 'webextension-polyfill' -import { CustomTheme, DownloadedTheme, ThemeList } from '../../types/CustomThemes'; +import type { CustomTheme, DownloadedTheme, ThemeList } from '../../types/CustomThemes'; import localforage from 'localforage'; export const setTheme = async (themeID: string) => { diff --git a/src/svelte-interface/components/store/CoverSwiper.svelte b/src/svelte-interface/components/store/CoverSwiper.svelte index 4d4b2a88..76b99e94 100644 --- a/src/svelte-interface/components/store/CoverSwiper.svelte +++ b/src/svelte-interface/components/store/CoverSwiper.svelte @@ -4,7 +4,7 @@ import type { Theme } from '@/svelte-interface/types/Theme'; import { register, type SwiperContainer } from 'swiper/element/bundle'; - let { coverThemes } = $props<{ coverThemes: Theme[] }>(); + let { coverThemes, setDisplayTheme } = $props<{ coverThemes: Theme[], setDisplayTheme: (theme: Theme) => void }>(); let swiperEl = $state(); @@ -20,7 +20,13 @@
{#each coverThemes as theme, index (index)} - + { if (e.key === 'Enter') setDisplayTheme(theme) }} + onclick={() => setDisplayTheme(theme)} + role="button" + tabindex="0" + class="relative cursor-pointer rounded-xl overflow-clip" + > Theme Preview

{theme.name}

diff --git a/src/svelte-interface/components/store/ThemeGrid.svelte b/src/svelte-interface/components/store/ThemeGrid.svelte index c2e3292a..d5dbdf88 100644 --- a/src/svelte-interface/components/store/ThemeGrid.svelte +++ b/src/svelte-interface/components/store/ThemeGrid.svelte @@ -1,47 +1,40 @@ -
- {#each filteredThemes as theme (theme.id)} - displayTheme = theme} /> - {/each} - - - -
-
{'\uecb3'}
-
- Got a Theme Idea? -

Transform it into a stunning theme!

-
-
-
- +
+
+ {#each filteredThemes as theme (theme.id)} + setDisplayTheme(theme)} /> + {/each} + + {#if filteredThemes.length !== 0} + +
+
{'\uecb3'}
+
+ Got a Theme Idea? +

Transform it into a stunning theme!

+
+
+
+ {/if} + +
{#if filteredThemes.length === 0} -
+

That doesn't exist! 😭😭😭

Sorry, we couldn't find the theme you're looking for. Maybe... you could create it?

+ + Show me how! +
{/if} -
- -{#if displayTheme} - displayTheme = null} onInstall={() => { - StoreDownloadTheme({themeContent: displayTheme as Theme}).then(() => { - setTheme((displayTheme as Theme).id); - displayTheme = null; - }); - }} onRemove={() => {}} /> -{/if} +
\ No newline at end of file diff --git a/src/svelte-interface/pages/store.svelte b/src/svelte-interface/pages/store.svelte index 9cf0167e..f682cc40 100644 --- a/src/svelte-interface/pages/store.svelte +++ b/src/svelte-interface/pages/store.svelte @@ -8,6 +8,9 @@ import { settingsState } from '@/seqta/utils/listeners/SettingsState' import type { Theme } from '../types/Theme' import browser from 'webextension-polyfill' + import ThemeModal from '../components/store/ThemeModal.svelte' + import { StoreDownloadTheme } from '@/seqta/ui/themes/downloadTheme' + import { setTheme } from '@/seqta/ui/themes/setTheme' // State variables let searchTerm = $state(''); @@ -15,6 +18,11 @@ let coverThemes = $state([]); let loading = $state(true); let darkMode = $state(false); + let displayTheme = $state(null); + + const setDisplayTheme = (theme: Theme) => { + displayTheme = theme; + }; // Fetch themes and initialize app const fetchThemes = async () => { @@ -50,8 +58,8 @@ )); -
-
+
+
@@ -71,19 +79,21 @@ {:else} {#if searchTerm === ''} - + {/if} - + - {#if filteredThemes.length === 0 && !loading} -
-

No results! 😭

-

Sorry, no themes match your search. Maybe create one?

-
+ {#if displayTheme} + displayTheme = null} onInstall={() => { + StoreDownloadTheme({themeContent: displayTheme as Theme}).then(() => { + setTheme((displayTheme as Theme).id); + displayTheme = null; + }); + }} onRemove={() => {}} /> {/if} - + {/if}
\ No newline at end of file