Option to change date picker format (#4180)
Simply allows date picker buttons to show other formats than `%Y-%m-%d`, while keeping that as default to not break compatibility. I'm not that experienced with Rust, so I was unsure whether you'd prefer `&'a str` rather than a `String`, let me know if I should change that. --------- Co-authored-by: Emil Ernerfeldt <emil.ernerfeldt@gmail.com>
This commit is contained in:
parent
bce257adb3
commit
8ca270e78e
|
|
@ -16,6 +16,7 @@ pub struct DatePickerButton<'a> {
|
||||||
calendar: bool,
|
calendar: bool,
|
||||||
calendar_week: bool,
|
calendar_week: bool,
|
||||||
show_icon: bool,
|
show_icon: bool,
|
||||||
|
format: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> DatePickerButton<'a> {
|
impl<'a> DatePickerButton<'a> {
|
||||||
|
|
@ -28,6 +29,7 @@ impl<'a> DatePickerButton<'a> {
|
||||||
calendar: true,
|
calendar: true,
|
||||||
calendar_week: true,
|
calendar_week: true,
|
||||||
show_icon: true,
|
show_icon: true,
|
||||||
|
format: "%Y-%m-%d".to_owned(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -73,6 +75,14 @@ impl<'a> DatePickerButton<'a> {
|
||||||
self.show_icon = show_icon;
|
self.show_icon = show_icon;
|
||||||
self
|
self
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Change the format shown on the button. (Default: %Y-%m-%d)
|
||||||
|
/// See [`chrono::format::strftime`] for valid formats.
|
||||||
|
#[inline]
|
||||||
|
pub fn format(mut self, format: impl Into<String>) -> Self {
|
||||||
|
self.format = format.into();
|
||||||
|
self
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<'a> Widget for DatePickerButton<'a> {
|
impl<'a> Widget for DatePickerButton<'a> {
|
||||||
|
|
@ -83,9 +93,9 @@ impl<'a> Widget for DatePickerButton<'a> {
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
|
||||||
let mut text = if self.show_icon {
|
let mut text = if self.show_icon {
|
||||||
RichText::new(format!("{} 📆", self.selection.format("%Y-%m-%d")))
|
RichText::new(format!("{} 📆", self.selection.format(&self.format)))
|
||||||
} else {
|
} else {
|
||||||
RichText::new(format!("{}", self.selection.format("%Y-%m-%d")))
|
RichText::new(format!("{}", self.selection.format(&self.format)))
|
||||||
};
|
};
|
||||||
let visuals = ui.visuals().widgets.open;
|
let visuals = ui.visuals().widgets.open;
|
||||||
if button_state.picker_visible {
|
if button_state.picker_visible {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue