From b439cf6fa4c9c11fe4a5b7d05e74c3b8dfb3bc4c Mon Sep 17 00:00:00 2001 From: Akshar Patel Date: Mon, 17 Aug 2026 23:15:44 -0400 Subject: [PATCH] fix: let space toggle metadata picker items --- src/app/metadata.rs | 1 + src/app/tests/part4.rs | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/app/metadata.rs b/src/app/metadata.rs index 9ec2e48..4e3a613 100644 --- a/src/app/metadata.rs +++ b/src/app/metadata.rs @@ -298,6 +298,7 @@ impl App { return true; } } + KeyCode::Char(' ') => return false, KeyCode::Char(ch) if key.modifiers.is_empty() || key.modifiers == KeyModifiers::SHIFT => { diff --git a/src/app/tests/part4.rs b/src/app/tests/part4.rs index 33ad27d..b5d9484 100644 --- a/src/app/tests/part4.rs +++ b/src/app/tests/part4.rs @@ -242,6 +242,40 @@ fn assignee_picker_enter_removes_highlighted_when_already_selected() { assert_eq!(app.selected_assignees(), vec!["sam".to_string()]); } +#[test] +fn label_picker_space_toggles_highlighted_option() { + let mut app = App::new(Config::default()); + app.open_label_picker( + View::Issues, + vec!["bug".to_string(), "docs".to_string()], + "", + ); + + app.on_key(KeyEvent::new(KeyCode::Char('j'), KeyModifiers::NONE)); + app.on_key(KeyEvent::new(KeyCode::Char(' '), KeyModifiers::NONE)); + + assert_eq!(app.label_query(), ""); + assert_eq!(app.selected_label_option(), 1); + assert_eq!(app.selected_labels(), vec!["docs".to_string()]); +} + +#[test] +fn assignee_picker_space_toggles_highlighted_option() { + let mut app = App::new(Config::default()); + app.open_assignee_picker( + View::Issues, + vec!["alex".to_string(), "sam".to_string()], + "", + ); + + app.on_key(KeyEvent::new(KeyCode::Char('j'), KeyModifiers::NONE)); + app.on_key(KeyEvent::new(KeyCode::Char(' '), KeyModifiers::NONE)); + + assert_eq!(app.assignee_query(), ""); + assert_eq!(app.selected_assignee_option(), 1); + assert_eq!(app.selected_assignees(), vec!["sam".to_string()]); +} + #[test] fn label_picker_type_filter_can_match_c_prefix() { let mut app = App::new(Config::default());