Add datetime components 196-215; Kit.At; inert stepper arrows
Calendars, date and time inputs, pickers, clocks, timers, a sun dial, a season wheel, an agenda and a day schedule. Kit.At rebuilds at a moment (relative times, midnight). Stepper and NumberInput arrows stop under Inert. DateInput parks a popup focus as its own.
This commit is contained in:
38 files changed
+2651
-5
No files matched your search
@@ -0,0 +1,53 @@
|
||||
package datetime_test
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"log/slog"
|
||||
"strings"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
"github.com/egoist/mygo/ui"
|
||||
|
||||
"git.zacharyzhang.com/ZacharyZhang-NY/8bitMyGoUI/datetime"
|
||||
)
|
||||
|
||||
func TestPopupsAndPagesAreLogged(t *testing.T) {
|
||||
var buf bytes.Buffer
|
||||
old := slog.Default()
|
||||
slog.SetDefault(slog.New(slog.NewTextHandler(&buf, &slog.HandlerOptions{Level: slog.LevelDebug})))
|
||||
defer slog.SetDefault(old)
|
||||
date, month, year := raid, raid, 2026
|
||||
tt := view(600, 500, newClock(), false, func(c *ui.Context) {
|
||||
ui.Row(c).Gap(8).Children(func() {
|
||||
datetime.DateInput(c, "Due", &date, datetime.DateInputOptions{})
|
||||
datetime.MonthPicker(c, "Month", &month, datetime.MonthPickerOptions{})
|
||||
datetime.YearPicker(c, "Year", &year, datetime.YearPickerOptions{})
|
||||
})
|
||||
})
|
||||
click(t, tt, "Due")
|
||||
tt.Key(0, ui.KeyEscape)
|
||||
for _, l := range []string{"Month", "Year"} {
|
||||
r := find(t, tt, l)
|
||||
tt.ClickAt(r.X+16, r.Y-20)
|
||||
}
|
||||
out := buf.String()
|
||||
for _, want := range []string{"date input popup", "month picker turned", "year picker turned"} {
|
||||
if !strings.Contains(out, want) {
|
||||
t.Errorf("no %q in the logs:\n%s", want, out)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestInertTimerKeepsItsSetting(t *testing.T) {
|
||||
set := time.Minute
|
||||
tt := view(400, 200, newClock(), true, func(c *ui.Context) {
|
||||
datetime.Timer(c, "Egg", &set, datetime.TimerOptions{})
|
||||
})
|
||||
r := find(t, tt, "MIN")
|
||||
tt.Press(r.X+r.W+12, r.Y+8)
|
||||
tt.Release(r.X+r.W+12, r.Y+8)
|
||||
if set != time.Minute {
|
||||
t.Fatalf("an inert timer was set to %v", set)
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user