feat: initialize datepicker when opening set-date modes

Claude-Session: https://claude.ai/code/session_01BA1doywpQD49rP1vezTe9U
This commit is contained in:
Taybin Rutkin 2026-07-21 10:39:16 -04:00
parent e0f4be475a
commit 4c75d53b5b
No known key found for this signature in database
GPG key ID: 605FA2C570B6AC9E
2 changed files with 30 additions and 4 deletions

View file

@ -159,3 +159,25 @@ func TestCalendarEscCancels(t *testing.T) {
t.Fatalf("expected mode to return to list, got %v", rm.mode) t.Fatalf("expected mode to return to list, got %v", rm.mode)
} }
} }
func TestOpeningDeadlineModeInitializesCalendar(t *testing.T) {
cfg := config.DefaultConfig()
item := &model.Item{Title: "Task", Level: 1}
of := &model.OrgFile{Items: []*model.Item{item}}
m := InitialModel(of, cfg, false, "")
// default deadline key is "d"
res, _ := m.Update(tea.KeyMsg{Type: tea.KeyRunes, Runes: []rune{'d'}})
rm := res.(uiModel)
if rm.mode != modeSetDeadline {
t.Fatalf("expected modeSetDeadline, got %v", rm.mode)
}
if !rm.datepicker.Selected {
t.Fatal("expected datepicker to have a selected date")
}
if rm.dateTextFocused {
t.Fatal("expected calendar focus (dateTextFocused false)")
}
if rm.editingItem != item {
t.Fatal("expected editingItem to be the cursor item")
}
}

View file

@ -318,10 +318,12 @@ func (m uiModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
if len(items) > 0 && m.cursor < len(items) { if len(items) > 0 && m.cursor < len(items) {
m.editingItem = items[m.cursor] m.editingItem = items[m.cursor]
m.mode = modeSetDeadline m.mode = modeSetDeadline
m.datepicker = newDatePicker(m.editingItem.Deadline)
m.dateTextFocused = false
m.textinput.SetValue("") m.textinput.SetValue("")
m.textinput.Placeholder = "YYYY-MM-DD or +N (days from today)" m.textinput.Placeholder = "YYYY-MM-DD or +N (days from today)"
m.textinput.Focus() m.textinput.Blur()
return m, textinput.Blink return m, nil
} }
case key.Matches(msg, m.keys.SetScheduled): case key.Matches(msg, m.keys.SetScheduled):
@ -329,10 +331,12 @@ func (m uiModel) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
if len(items) > 0 && m.cursor < len(items) { if len(items) > 0 && m.cursor < len(items) {
m.editingItem = items[m.cursor] m.editingItem = items[m.cursor]
m.mode = modeSetScheduled m.mode = modeSetScheduled
m.datepicker = newDatePicker(m.editingItem.Scheduled)
m.dateTextFocused = false
m.textinput.SetValue("") m.textinput.SetValue("")
m.textinput.Placeholder = "YYYY-MM-DD or +N (days from today)" m.textinput.Placeholder = "YYYY-MM-DD or +N (days from today)"
m.textinput.Focus() m.textinput.Blur()
return m, textinput.Blink return m, nil
} }
case key.Matches(msg, m.keys.SetPriority): case key.Matches(msg, m.keys.SetPriority):