inquire/prompts/text/
action.rs1use crate::{
2 ui::{Key, KeyModifiers},
3 InnerAction, InputAction,
4};
5
6use super::config::TextConfig;
7
8#[derive(Copy, Clone, Debug, PartialEq, Eq)]
10#[allow(clippy::enum_variant_names)]
11pub enum TextPromptAction {
12 ValueInput(InputAction),
14 MoveToSuggestionAbove,
16 MoveToSuggestionBelow,
18 MoveToSuggestionPageUp,
20 MoveToSuggestionPageDown,
22 UseCurrentSuggestion,
24}
25
26impl InnerAction for TextPromptAction {
27 type Config = TextConfig;
28
29 fn from_key(key: Key, _config: &TextConfig) -> Option<Self> {
30 let action = match key {
31 Key::Up(KeyModifiers::NONE) | Key::Char('p', KeyModifiers::CONTROL) => {
32 Self::MoveToSuggestionAbove
33 }
34 Key::PageUp(_) => Self::MoveToSuggestionPageUp,
35
36 Key::Down(KeyModifiers::NONE) | Key::Char('n', KeyModifiers::CONTROL) => {
37 Self::MoveToSuggestionBelow
38 }
39 Key::PageDown(_) => Self::MoveToSuggestionPageDown,
40
41 Key::Tab => Self::UseCurrentSuggestion,
42
43 key => match InputAction::from_key(key, &()) {
44 Some(action) => Self::ValueInput(action),
45 None => return None,
46 },
47 };
48
49 Some(action)
50 }
51}