diff --git a/src/components/checkboxes.rs b/src/components/checkboxes.rs deleted file mode 100644 index 615f666..0000000 --- a/src/components/checkboxes.rs +++ /dev/null @@ -1,99 +0,0 @@ -use leptos::prelude::*; - -#[component] -pub fn Checkbox( - #[prop()] checked: Signal, - #[prop(into)] on_change: Callback<(), ()>, - #[prop(into)] value: String, - #[prop(default = RwSignal::new(false))] disabled: RwSignal, -) -> impl IntoView { - view! { - - } -} - -#[component] -pub fn CheckboxList( - #[prop(default = RwSignal::new(vec![]))] selected: RwSignal>, - #[prop()] items: Vec, - #[prop(default = RwSignal::new(false))] disabled: RwSignal, -) -> impl IntoView { - view! { - // Checkbox elements go in here. Each one will have a derived signal - // that checks if the name/value of that checkbox is in the selected items - // vec. If so, display as selected. If not, clear that checkbox. - - // Somehow create a derived signal?? - -
- { - items.into_iter().map(|item| { - let is_checked = { - let item_name = item.clone(); - move || { - // Check if this checkbox should be selected - selected.get().contains(&item_name) - } - }; - - let checked_signal = Signal::derive(is_checked); - - view! { - - } - }).collect::>() - } -
- } -} diff --git a/src/components/mod.rs b/src/components/mod.rs index 15ee0ee..50c55ce 100644 --- a/src/components/mod.rs +++ b/src/components/mod.rs @@ -1,19 +1,14 @@ mod action_button; +mod checkbox; mod loading; mod multi_entry; -mod text_field; -mod select; -mod checkboxes; mod panel; +mod radio; mod row; +mod select; +mod text_field; pub use self::{ - action_button::*, - loading::*, - multi_entry::*, - text_field::*, - select::*, - checkboxes::*, - panel::*, - row::* + action_button::*, checkbox::*, loading::*, multi_entry::*, panel::*, radio::*, row::*, + select::*, text_field::*, }; diff --git a/src/pages/home_page.rs b/src/pages/home_page.rs index 066cad5..41b3b02 100644 --- a/src/pages/home_page.rs +++ b/src/pages/home_page.rs @@ -9,6 +9,7 @@ use crate::app::Unauthenticated; use crate::common::{StudentInfo, StudentInfoReactive, UserClaims}; use crate::components::{ ActionButton, CheckboxList, Loading, OutlinedTextField, Panel, Row, Select, + RadioList }; use leptos::leptos_dom::logging::console_log; use leptos::prelude::*; @@ -122,6 +123,7 @@ pub fn HomePage() -> impl IntoView { let select_value = RwSignal::new(String::from("Math")); let chk_select = RwSignal::new(vec!["Testing 2".into()]); let elements_disabled = RwSignal::new(false); + let radio_value = RwSignal::new(String::from("Test")); view! {
@@ -171,6 +173,14 @@ pub fn HomePage() -> impl IntoView { value=select_value disabled=elements_disabled /> + impl IntoView {