use std::collections::HashSet; use super::*; use crate::view::telephone::*; #[derive(Clone)] pub struct Telephone { pub number: String, pub extension: String, pub work: bool, pub home: bool, pub text: bool, pub voice: bool, pub fax: bool, pub cell: bool, pub video: bool, pub pager: bool, pub text_phone: bool, } impl VCardPropertyInputObject for Telephone { fn new() -> Self { Self { number: String::new(), extension: String::new(), work: false, home: false, text: false, voice: false, fax: false, cell: false, video: false, pager: false, text_phone: false, } } fn get_input_fields(&self, link: &ComponentLink) -> Vec { vec![ VCardPropertyInputField::Text{ label: "Number".to_string(), id: Some("number".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateNumber(e.value)), value: self.number.clone(), }, VCardPropertyInputField::Text{ label: "Extension".to_string(), id: Some("extension".to_string()), placeholder: None, oninput: link.callback(|e: InputData| Msg::UpdateExtension(e.value)), value: self.extension.clone(), }, VCardPropertyInputField::CheckBox{ label: "Work".to_string(), id: Some("work".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleWork), value: self.work, }, VCardPropertyInputField::CheckBox{ label: "Home".to_string(), id: Some("home".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleHome), value: self.home, }, VCardPropertyInputField::CheckBox{ label: "Text".to_string(), id: Some("text".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleText), value: self.text, }, VCardPropertyInputField::CheckBox{ label: "Voice".to_string(), id: Some("voice".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleVoice), value: self.voice, }, VCardPropertyInputField::CheckBox{ label: "Fax".to_string(), id: Some("fax".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleFax), value: self.fax, }, VCardPropertyInputField::CheckBox{ label: "Cell".to_string(), id: Some("cell".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleCell), value: self.cell, }, VCardPropertyInputField::CheckBox{ label: "Video".to_string(), id: Some("video".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleVideo), value: self.video, }, VCardPropertyInputField::CheckBox{ label: "Pager".to_string(), id: Some("pager".to_string()), onclick: link.callback(|_: MouseEvent| Msg::TogglePager), value: self.pager, }, VCardPropertyInputField::CheckBox{ label: "Text Phone".to_string(), id: Some("text_phone".to_string()), onclick: link.callback(|_: MouseEvent| Msg::ToggleTextPhone), value: self.text_phone, }, ] } fn is_empty(&self) -> bool { self.number.is_empty() && self.extension.is_empty() } }