From e9392cc00bab17806fa3e56333e8ec8003b5b2c4 Mon Sep 17 00:00:00 2001 From: Lennart <18233294+lennart-k@users.noreply.github.com> Date: Sun, 2 Nov 2025 22:08:28 +0100 Subject: [PATCH 1/9] frontend: Add dropdown for timezone selection --- Cargo.lock | 3 ++ crates/frontend/Cargo.toml | 3 ++ .../js-components/lib/create-calendar-form.ts | 14 ++++++++- .../js-components/lib/edit-calendar-form.ts | 16 ++++++++-- .../frontend/js-components/lib/timezones.ts | 12 ++++++++ .../public/assets/js/create-calendar-form.mjs | 15 +++++++++- .../public/assets/js/edit-calendar-form.mjs | 27 ++++++++++++++++- .../sections/calendars_section.html | 1 - crates/frontend/src/lib.rs | 7 ++++- crates/frontend/src/routes/mod.rs | 1 + crates/frontend/src/routes/timezones.rs | 30 +++++++++++++++++++ 11 files changed, 122 insertions(+), 7 deletions(-) create mode 100644 crates/frontend/js-components/lib/timezones.ts create mode 100644 crates/frontend/src/routes/timezones.rs diff --git a/Cargo.lock b/Cargo.lock index ba16073..b34e1dd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3152,6 +3152,7 @@ dependencies = [ "headers", "hex", "http", + "itertools 0.14.0", "mime_guess", "percent-encoding", "rand 0.9.2", @@ -3160,6 +3161,7 @@ dependencies = [ "rustical_oidc", "rustical_store", "serde", + "serde_json", "thiserror 2.0.17", "tokio", "tower", @@ -3168,6 +3170,7 @@ dependencies = [ "tracing", "url", "uuid", + "vtimezones-rs", ] [[package]] diff --git a/crates/frontend/Cargo.toml b/crates/frontend/Cargo.toml index 2a589b9..009de98 100644 --- a/crates/frontend/Cargo.toml +++ b/crates/frontend/Cargo.toml @@ -39,3 +39,6 @@ headers.workspace = true tower-sessions.workspace = true percent-encoding.workspace = true tower-http = { workspace = true, optional = true } +vtimezones-rs.workspace = true +serde_json.workspace = true +itertools.workspace = true diff --git a/crates/frontend/js-components/lib/create-calendar-form.ts b/crates/frontend/js-components/lib/create-calendar-form.ts index 516987e..1bbbc3d 100644 --- a/crates/frontend/js-components/lib/create-calendar-form.ts +++ b/crates/frontend/js-components/lib/create-calendar-form.ts @@ -7,6 +7,11 @@ import { escapeXml } from "."; export class CreateCalendarForm extends LitElement { constructor() { super() + this.fetchTimezones() + } + + async fetchTimezones() { + this.timezones = await getTimezones() } protected override createRenderRoot() { @@ -36,6 +41,8 @@ export class CreateCalendarForm extends LitElement { dialog: Ref = createRef() form: Ref = createRef() + @property() + timezones: Array = [] override render() { return html` @@ -65,7 +72,12 @@ export class CreateCalendarForm extends LitElement {