()
| 520 | |
| 521 | #[component] |
| 522 | fn LanguageSelect() -> Element { |
| 523 | let mut current_lang = use_signal(|| Language::English); |
| 524 | |
| 525 | rsx! { |
| 526 | document::Stylesheet { href: asset!("/assets/language-select.css") } |
| 527 | div { class: "dx-language-container", |
| 528 | span { class: "dx-language-select-container", |
| 529 | select { |
| 530 | class: "dx-language-select", |
| 531 | aria_label: "Language", |
| 532 | onchange: move |e| { |
| 533 | let name = e.value().parse().unwrap_or(current_lang.to_string()); |
| 534 | if let Ok(lang) = Language::from_str(&name) { |
| 535 | current_lang.set(lang); |
| 536 | } |
| 537 | let id = current_lang.read().id(); |
| 538 | tracing::info!("Current lang: {id}"); |
| 539 | // i18n().set_language(id); |
| 540 | }, |
| 541 | for lang in Language::iter() { |
| 542 | option { |
| 543 | value: lang.to_string(), |
| 544 | selected: lang == *current_lang.read(), |
| 545 | {lang.display_name()} |
| 546 | } |
| 547 | } |
| 548 | } |
| 549 | span { class: "dx-language-select-value", |
| 550 | {current_lang.read().flag()} |
| 551 | ChevronDown { |
| 552 | class: "dx-select-expand-icon", |
| 553 | size: "24px", |
| 554 | stroke: "var(--secondary-color-4)", |
| 555 | } |
| 556 | } |
| 557 | } |
| 558 | } |
| 559 | } |
| 560 | } |
| 561 | |
| 562 | #[component] |
| 563 | fn ComponentCode( |
nothing calls this directly
no outgoing calls
no test coverage detected