From 6bd542f858ceaa392e11a526c713359d8f667399 Mon Sep 17 00:00:00 2001 From: ManeraKai Date: Fri, 16 Aug 2024 15:53:53 +0300 Subject: Added arrow icon to dropdowns. Added settings button to each service in the popup https://github.com/libredirect/browser_extension/issues/961 --- src/pages/options_src/App.svelte | 10 +++---- src/pages/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 ++++++++++++++++++++++++++ 5 files changed, 55 insertions(+), 13 deletions(-) create mode 100644 src/pages/options_src/url.js (limited to 'src/pages/options_src') diff --git a/src/pages/options_src/App.svelte b/src/pages/options_src/App.svelte index b5a44856..565aacef 100644 --- a/src/pages/options_src/App.svelte +++ b/src/pages/options_src/App.svelte @@ -2,12 +2,13 @@ const browser = window.browser || window.chrome import General from "./General/General.svelte" + import url from './url' import utils from "../../assets/javascripts/utils.js" import { onDestroy } from "svelte" import servicesHelper from "../../assets/javascripts/services.js" import { onMount } from "svelte" import Sidebar from "./Sidebar.svelte" - import { options, config, page } from "./stores" + import { options, config } from "./stores" import Services from "./Services/Services.svelte" let _options @@ -36,9 +37,6 @@ config.set(await utils.getConfig()) }) - let _page - page.subscribe(val => (_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 @@
- 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() -- cgit 1.4.1