Add a toggle between dark and light theme
This commit is contained in:
parent
d22617538e
commit
559ed139aa
34 changed files with 640 additions and 469 deletions
2
frontend/.cargo/config.toml
Normal file
2
frontend/.cargo/config.toml
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
[build]
|
||||
target = "wasm32-unknown-unknown"
|
||||
|
|
@ -3,7 +3,7 @@ use gloo::{console::log, events::EventListener, utils::window};
|
|||
use utils::by_id;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen_futures::spawn_local;
|
||||
use web_sys::{HtmlElement, HtmlSelectElement};
|
||||
use web_sys::{HtmlElement, HtmlInputElement, HtmlSelectElement};
|
||||
|
||||
use crate::utils::selector;
|
||||
|
||||
|
|
@ -58,6 +58,7 @@ pub fn main() -> Result<(), JsValue> {
|
|||
_ => log!("Path unknown: ", location),
|
||||
}
|
||||
|
||||
// Language handling.
|
||||
let select_language: HtmlSelectElement = by_id("select-website-language");
|
||||
EventListener::new(&select_language.clone(), "input", move |_event| {
|
||||
let lang = select_language.value();
|
||||
|
|
@ -79,5 +80,23 @@ pub fn main() -> Result<(), JsValue> {
|
|||
})
|
||||
.forget();
|
||||
|
||||
// Dark/light theme handling.
|
||||
let toggle_theme: HtmlInputElement = selector("#toggle-theme input");
|
||||
EventListener::new(&toggle_theme.clone(), "change", move |_event| {
|
||||
wasm_cookies::set(
|
||||
common::consts::COOKIE_DARK_THEME,
|
||||
&(!toggle_theme.checked()).to_string(),
|
||||
&wasm_cookies::CookieOptions {
|
||||
path: Some("/"),
|
||||
domain: None,
|
||||
expires: None,
|
||||
secure: false,
|
||||
same_site: wasm_cookies::SameSite::Strict,
|
||||
},
|
||||
);
|
||||
window().location().reload().unwrap();
|
||||
})
|
||||
.forget();
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue