simple/
simple.rs

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        // ctx.set_debug_on_hover(true);
27        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}