about summary refs log tree commit diff stats
path: root/src/pages
diff options
context:
space:
mode:
authorManeraKai <manerakai@protonmail.com>2024-08-17 21:59:56 +0300
committerManeraKai <manerakai@protonmail.com>2024-08-17 21:59:56 +0300
commit7c9a23503783a6397b628541b50e3081901cd96f (patch)
treec287db59f3696c458d3a8f87fdcf74071bc638f3 /src/pages
parentAdded ytify https://github.com/libredirect/browser_extension/issues/951 (diff)
downloadlibredirect-7c9a23503783a6397b628541b50e3081901cd96f.zip
Added Dropdown is searchable hint https://github.com/libredirect/browser_extension/issues/961
Diffstat (limited to 'src/pages')
-rw-r--r--src/pages/options_src/Services/Services.svelte34
1 files changed, 27 insertions, 7 deletions
diff --git a/src/pages/options_src/Services/Services.svelte b/src/pages/options_src/Services/Services.svelte
index 93afcded..481afb83 100644
--- a/src/pages/options_src/Services/Services.svelte
+++ b/src/pages/options_src/Services/Services.svelte
@@ -24,6 +24,8 @@
     unsubscribeConfig()
   })
   let selectedService = $url.hash.startsWith("#services:") ? $url.hash.split(":")[1] : "youtube"
+  let hideServiceSelection = false
+  let hideFrontendSelection = false
   $: serviceConf = _config.services[selectedService]
   $: serviceOptions = _options[selectedService]
   $: frontendWebsite = serviceConf.frontends[serviceOptions.frontend].url
@@ -38,7 +40,7 @@
         {browser.i18n.getMessage("service") || "Service"}
       </a>
     </Label>
-    <div dir="ltr">
+    <div dir="ltr" on:click={() => (hideServiceSelection = true)} on:keydown={null}>
       <SvelteSelect
         clearable={false}
         class="svelte_select"
@@ -47,7 +49,10 @@
         on:change={e => {
           selectedService = e.detail.value
           window.location.hash = `services:${e.detail.value}`
+          hideServiceSelection = false
         }}
+        on:focus={() => (hideServiceSelection = true)}
+        on:blur={() => (hideServiceSelection = false)}
         items={[
           ...servicesEntries.map(([serviceKey, service]) => {
             return { value: serviceKey, label: service.name }
@@ -58,9 +63,17 @@
           <ServiceIcon details={item} />
           {item.label}
         </div>
-        <div class={"slot " + (!_options[selection.value].enabled && "disabled")} slot="selection" let:selection>
-          <ServiceIcon details={selection} />
-          {selection.label}
+        <div
+          class={"slot " + (!_options[selection.value].enabled && !hideServiceSelection && "disabled")}
+          slot="selection"
+          let:selection
+        >
+          {#if !hideServiceSelection}
+            <ServiceIcon details={selection} />
+            {selection.label}
+          {:else}
+            {browser.i18n.getMessage("search_service") || "Search Service"}
+          {/if}
         </div>
         <div style="font-size: 10px;" slot="chevron-icon">🮦</div>
       </SvelteSelect>
@@ -103,7 +116,7 @@
           {browser.i18n.getMessage("frontend") || "Frontend"}
         </a>
       </Label>
-      <div dir="ltr">
+      <div dir="ltr"  on:click={() => (hideFrontendSelection = true)} on:keydown={null}>
         <SvelteSelect
           clearable={false}
           dir="ltr"
@@ -113,7 +126,10 @@
           on:change={e => {
             serviceOptions.frontend = e.detail.value
             options.set(_options)
+            hideFrontendSelection = false
           }}
+          on:focus={() => (hideFrontendSelection = true)}
+          on:blur={() => (hideFrontendSelection = false)}
           items={[
             ...frontendEntries.map(([frontendId, frontend]) => ({
               value: frontendId,
@@ -126,8 +142,12 @@
             {item.label}
           </div>
           <div class="slot" slot="selection" let:selection>
-            <FrontendIcon details={selection} {selectedService} />
-            {selection.label}
+            {#if !hideFrontendSelection}
+              <FrontendIcon details={selection} {selectedService} />
+              {selection.label}
+            {:else}
+              {browser.i18n.getMessage("search_frontend") || "Search Frontend"}
+            {/if}
           </div>
           <div style="font-size: 10px;" slot="chevron-icon">🮦</div>
         </SvelteSelect>