diff --git a/internal/tui/datetime.go b/internal/tui/datetime.go index 6cad72ee..ea119e7d 100644 --- a/internal/tui/datetime.go +++ b/internal/tui/datetime.go @@ -237,6 +237,11 @@ func (p *dateTimePicker) handleKey(msg tea.KeyPressMsg) tea.Cmd { p.shiftDate(days) return nil } + // "-" cannot appear in a YYYY-MM-DD date, so swallow it here + // instead of letting it through to the text input (hey-cli#368) + if msg.String() == "-" { + return nil + } var cmd tea.Cmd p.dateInput, cmd = p.dateInput.Update(msg) return cmd @@ -263,13 +268,10 @@ func dateStep(msg tea.KeyPressMsg) (days int, stepped bool) { case tea.KeyUp: return 1, true case tea.KeyDown: - return -1, true } switch msg.String() { case "+", "=": return 1, true - case "-": - return -1, true } return 0, false } diff --git a/internal/tui/datetime_test.go b/internal/tui/datetime_test.go index 8951cb7f..073077de 100644 --- a/internal/tui/datetime_test.go +++ b/internal/tui/datetime_test.go @@ -68,15 +68,15 @@ func TestDateTimePickerStepsTheDateByADay(t *testing.T) { t.Errorf("after up, date() = %q, want 2026-08-23", got) } - picker.handleKey(tea.KeyPressMsg{Code: tea.KeyDown}) - picker.handleKey(tea.KeyPressMsg{Code: tea.KeyDown}) - if got := picker.date(); got != "2026-08-21" { - t.Errorf("after two downs, date() = %q, want 2026-08-21", got) + // "-" no longer steps date (hey-cli#368) + typeInto(t, picker, "-") + if got := picker.date(); got != "2026-08-23" { + t.Errorf("after -, date() = %q, want unchanged", got) } typeInto(t, picker, "+") - if got := picker.date(); got != "2026-08-22" { - t.Errorf("after +, date() = %q, want 2026-08-22", got) + if got := picker.date(); got != "2026-08-24" { + t.Errorf("after +, date() = %q, want 2026-08-24", got) } picker.dateInput.SetValue("next tuesday")