use chrono::{NaiveDate, Utc};
#[derive(Debug)]
pub struct DateSelector {
pub date: NaiveDate,
pub selection_offset: i64,
}
impl Default for DateSelector {
fn default() -> Self {
Self {
date: Utc::now().date_naive(),
selection_offset: 0,
}
}
}
impl DateSelector {
pub fn set_date_from_valid_input(&mut self, date: NaiveDate) {
self.date = date;
self.selection_offset = 0;
}
pub fn set_date_with_arrows(&mut self, forward: bool) -> NaiveDate {
match forward {
true => self.selection_offset += 1,
false => self.selection_offset -= 1,
}
self.date + chrono::Duration::days(self.selection_offset)
}
pub fn format_date_border_title(&self) -> String {
self.date.format(" %B %d, %Y ").to_string()
}
}