From 6bd542f858ceaa392e11a526c713359d8f667399 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Fri, 16 Aug 2024 15:53:53 +0300 Subject: [PATCH] Added arrow icon to dropdowns. Added settings button to each service in the popup https://github.com/libredirect/browser_extension/issues/961 --- src/pages/icons/SettingsIcon.svelte | 3 ++ src/pages/options_src/App.svelte | 10 ++--- .../options_src/Services/Services.svelte | 13 +++++-- src/pages/options_src/Sidebar.svelte | 6 +-- src/pages/options_src/stores.js | 1 - src/pages/options_src/url.js | 38 +++++++++++++++++++ src/pages/popup_src/App.svelte | 2 +- src/pages/popup_src/Buttons.svelte | 4 +- src/pages/popup_src/components/Switch.svelte | 8 ++++ 9 files changed, 69 insertions(+), 16 deletions(-) create mode 100644 src/pages/options_src/url.js diff --git a/src/pages/icons/SettingsIcon.svelte b/src/pages/icons/SettingsIcon.svelte index f47d078a..00798289 100644 --- a/src/pages/icons/SettingsIcon.svelte +++ b/src/pages/icons/SettingsIcon.svelte @@ -1,10 +1,13 @@ (_page = val)) - const dark = { text: "#fff", bgMain: "#121212", @@ -85,9 +83,9 @@ --light-grey: {cssVariables.lightGrey};" > - {#if _page == "general"} + {#if !$url.hash || $url.hash == "#general"} - {:else if _page == "services"} + {:else if $url.hash.startsWith("#services")} {/if} diff --git a/src/pages/options_src/Services/Services.svelte b/src/pages/options_src/Services/Services.svelte index 7c4a92b3..93afcded 100644 --- a/src/pages/options_src/Services/Services.svelte +++ b/src/pages/options_src/Services/Services.svelte @@ -1,6 +1,7 @@
🮦
@@ -104,6 +109,7 @@ dir="ltr" class="svelte_select" value={serviceOptions.frontend} + showChevron on:change={e => { serviceOptions.frontend = e.detail.value options.set(_options) @@ -123,6 +129,7 @@ {selection.label} +
🮦
diff --git a/src/pages/options_src/Sidebar.svelte b/src/pages/options_src/Sidebar.svelte index 5e2f4931..6b67581a 100644 --- a/src/pages/options_src/Sidebar.svelte +++ b/src/pages/options_src/Sidebar.svelte @@ -1,18 +1,18 @@
- page.set("general")} style={$page == "general" && "color: var(--active);"}> + {browser.i18n.getMessage("general") || "General"} - page.set("services")} style={$page == "services" && "color: var(--active);"}> + {browser.i18n.getMessage("services") || "Services"} diff --git a/src/pages/options_src/stores.js b/src/pages/options_src/stores.js index 782f6064..7ae0f8c7 100644 --- a/src/pages/options_src/stores.js +++ b/src/pages/options_src/stores.js @@ -2,4 +2,3 @@ import { writable } from "svelte/store" export const options = writable(null) export const config = writable(null) -export const page = writable("general") diff --git a/src/pages/options_src/url.js b/src/pages/options_src/url.js new file mode 100644 index 00000000..010e5b21 --- /dev/null +++ b/src/pages/options_src/url.js @@ -0,0 +1,38 @@ +// https://svelte.dev/repl/5abaac000b164aa1aacc6051d5c4f584?version=3.59.2 + +import { derived, writable } from 'svelte/store' + +export function createUrlStore(ssrUrl) { + // Ideally a bundler constant so that it's tree-shakable + if (typeof window === 'undefined') { + const { subscribe } = writable(ssrUrl) + return { subscribe } + } + + const href = writable(window.location.href) + + const originalPushState = history.pushState + const originalReplaceState = history.replaceState + + const updateHref = () => href.set(window.location.href) + + history.pushState = () => { + originalPushState.apply(this, arguments) + updateHref() + } + + history.replaceState = () => { + originalReplaceState.apply(this, arguments) + updateHref() + } + + window.addEventListener('popstate', updateHref) + window.addEventListener('hashchange', updateHref) + + return { + subscribe: derived(href, ($href) => new URL($href)).subscribe + } +} + +// If you're using in a pure SPA, you can return a store directly and share it everywhere +export default createUrlStore() diff --git a/src/pages/popup_src/App.svelte b/src/pages/popup_src/App.svelte index 52aadc74..3409052d 100644 --- a/src/pages/popup_src/App.svelte +++ b/src/pages/popup_src/App.svelte @@ -88,7 +88,7 @@ diff --git a/src/pages/popup_src/components/Switch.svelte b/src/pages/popup_src/components/Switch.svelte index f3df9317..6485f875 100644 --- a/src/pages/popup_src/components/Switch.svelte +++ b/src/pages/popup_src/components/Switch.svelte @@ -9,6 +9,7 @@ import { onDestroy } from "svelte" import servicesHelper from "../../../assets/javascripts/services" import { options, config } from "../stores" + import SettingsIcon from "../../icons/SettingsIcon.svelte" let _options let _config @@ -53,6 +54,13 @@ window.close() })} /> + + browser.tabs.create({ url: browser.runtime.getURL(`pages/options/index.html#services:${serviceKey}`) }, () => { + window.close() + })} + />