From 25e25ead288af9d3cfd7843ef7cbfc773b96f6f0 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 31 Jan 2024 18:01:16 -0800 Subject: refactor(layout): dropdown component --- src/lib/Dropdown.svelte | 105 ++++++++++++++++++++++++++++++++++++++++++++++ src/routes/+layout.svelte | 89 ++++----------------------------------- 2 files changed, 114 insertions(+), 80 deletions(-) create mode 100644 src/lib/Dropdown.svelte diff --git a/src/lib/Dropdown.svelte b/src/lib/Dropdown.svelte new file mode 100644 index 00000000..efbafa1a --- /dev/null +++ b/src/lib/Dropdown.svelte @@ -0,0 +1,105 @@ + + + + + + + diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index a29529d7..7fb24a50 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -20,11 +20,10 @@ import locale from '$stores/locale'; import Skeleton from '$lib/Loading/Skeleton.svelte'; import subsPlease from '$stores/subsPlease'; + import Dropdown from '$lib/Dropdown.svelte'; export let data; - let dropdownOpen = false; - addMessages('en', english as unknown as LocaleDictionary); addMessages('ja', japanese as unknown as LocaleDictionary); init({ fallbackLocale: 'en', initialLocale: $settings.displayLanguage }); @@ -73,12 +72,6 @@ }); }); - const handleClickOutside = (event: any) => { - if (!event.target.closest('.dropdown')) { - dropdownOpen = false; - } - }; - $: { if ((data.url === '/' || data.url === '/completed') && !$subsPlease) fetch(root(`/api/subsplease?tz=${Intl.DateTimeFormat().resolvedOptions().timeZone}`)) @@ -87,8 +80,6 @@ } - -
@@ -100,27 +91,14 @@ > {$locale().navigation.completed} - + {$locale().navigation.tools} {$locale().navigation.settings} @@ -266,53 +244,4 @@ border-radius: 8px; box-shadow: 0 1.5px 9px var(--base01), 0 0 0 4px var(--base0E), 0 4px 30px var(--base01); } - - .dropdown { - position: relative; - display: inline-block; - } - - .dropdown-content { - display: block; - position: absolute; - min-width: max-content; - padding: 0.5em 0; - opacity: 0; - transform: translateY(-20px); - visibility: hidden; - $delay: 0.25s; - transition: opacity $delay ease, transform $delay ease, visibility 0s linear $delay; - left: 50%; - transform: translateX(-50%); - } - - .dropdown-open { - opacity: 1; - transform: translateY(0); - visibility: visible; - transition-delay: 0s, 0s, 0s; - left: 50%; - transform: translateX(-50%); - } - - .dropdown:hover .dropdown-content { - opacity: 1; - transform: translateY(0); - visibility: visible; - transition-delay: 0s, 0s, 0s; - left: 50%; - transform: translateX(-50%); - } - - .dropdown-content a { - padding: 0.5em 0.75em; - text-decoration: none; - display: block; - } - - .dropdown-content a:hover { - border-radius: 8px; - backdrop-filter: blur(160px); - background-color: var(--base01); - } -- cgit v1.2.3