summaryrefslogtreecommitdiff
path: root/src/viewmodel/dates.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/viewmodel/dates.rs')
-rw-r--r--src/viewmodel/dates.rs43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/viewmodel/dates.rs b/src/viewmodel/dates.rs
new file mode 100644
index 0000000..6c7fa37
--- /dev/null
+++ b/src/viewmodel/dates.rs
@@ -0,0 +1,43 @@
+use crate::view::dates::*;
+use super::*;
+
+/// Type that represents the vcard `anniversary` and `birthday` properties.
+#[derive(Clone, Debug)]
+pub struct Dates {
+ pub anniversary: String,
+ pub birthday: String,
+}
+
+impl VCardPropertyInputObject<DatesView> for Dates {
+ fn new() -> Self {
+ Self {
+ anniversary: String::new(),
+ birthday: String::new(),
+ }
+ }
+ fn get_input_fields(&self, link: &yew::html::Scope<DatesView>) -> std::vec::Vec<VCardPropertyInputField> {
+ let typ = String::from("date");
+ vec![
+ VCardPropertyInputField::Text{
+ label: "Anniversary".to_string(),
+ id: Some("anniversary".to_string()),
+ placeholder: None,
+ oninput: link.callback(|e: InputData| Msg::UpdateAnniversary(e.value)),
+ value: self.anniversary.clone(),
+ typ: typ.clone(),
+ },
+ VCardPropertyInputField::Text{
+ label: "Birthday".to_string(),
+ id: Some("birthday".to_string()),
+ placeholder: None,
+ oninput: link.callback(|e: InputData| Msg::UpdateBirthday(e.value)),
+ value: self.birthday.clone(),
+ typ,
+ },
+ ]
+ }
+ fn is_empty(&self) -> bool {
+ self.anniversary.is_empty()
+ && self.birthday.is_empty()
+ }
+} \ No newline at end of file