1use chrono::Datelike;
2use eframe::{
3 egui::{self, Color32},
4 epi,
5};
6use egui_datepicker::*;
7
8struct ExampleApp {
9 date: Date<Utc>,
10}
11
12impl Default for ExampleApp {
13 fn default() -> Self {
14 Self {
15 date: Utc::now().date(),
16 }
17 }
18}
19
20impl epi::App for ExampleApp {
21 fn name(&self) -> &str {
22 "Datepicker example"
23 }
24
25 fn update(&mut self, ctx: &egui::CtxRef, _frame: &epi::Frame) {
26 egui::CentralPanel::default().show(ctx, |ui| {
28 egui::Grid::new("exaamples_grid").show(ui, |ui| {
29 ui.label("Default");
30 ui.add(DatePicker::new("default", &mut self.date));
31 ui.end_row();
32 ui.label("Sunday first");
33 ui.add(DatePicker::new("sundayfirst", &mut self.date).sunday_first(true));
34 ui.end_row();
35 ui.label("Movable popup");
36 ui.add(DatePicker::new("movable", &mut self.date).movable(true));
37 ui.end_row();
38 ui.label("Different format");
39 ui.add(DatePicker::new("differentformat", &mut self.date).date_format(&"%d/%m/%Y"));
40 ui.end_row();
41 ui.label("Disable weekend highlight");
42 ui.add(
43 DatePicker::new("noweekendhighlight", &mut self.date).highlight_weekend(false),
44 );
45 ui.end_row();
46 ui.label("Different weekend color");
47 ui.add(
48 DatePicker::new("differentweekendcolor", &mut self.date)
49 .highlight_weekend_color(Color32::from_rgb(0, 196, 0)),
50 );
51 ui.end_row();
52 ui.label("Different weekend days, i.e. holidays, Christmas, etc");
53 ui.add(
54 DatePicker::new("differentweekenddays", &mut self.date)
55 .weekend_days(|date| date.day() % 2 == 0),
56 );
57 ui.end_row();
58 });
59 });
60 }
61}
62
63fn main() {
64 let app = ExampleApp::default();
65 let native_options = eframe::NativeOptions::default();
66 eframe::run_native(Box::new(app), native_options);
67}