use crate::{
prompts::confirm::config::ConfirmConfig,
ui::{Key, KeyModifiers},
EscapePolicy, InnerAction,
};
#[derive(Copy, Clone, Debug, PartialEq, Eq)]
pub enum ConfirmPromptAction {
DirectSubmit(bool),
SubmitDefault,
PressEscape,
}
impl InnerAction for ConfirmPromptAction {
type Config = ConfirmConfig;
const ESCAPE_POLICY: EscapePolicy = EscapePolicy::IgnoreEscape;
fn from_key(key: Key, _config: &Self::Config) -> Option<Self> {
match key {
Key::Char('y', KeyModifiers::NONE)
| Key::Char('Y', KeyModifiers::NONE)
| Key::Char('Y', KeyModifiers::SHIFT) => Some(Self::DirectSubmit(true)),
Key::Char('n', KeyModifiers::NONE)
| Key::Char('N', KeyModifiers::NONE)
| Key::Char('N', KeyModifiers::SHIFT) => Some(Self::DirectSubmit(false)),
Key::Enter
| Key::Char('\n', KeyModifiers::NONE)
| Key::Char('j', KeyModifiers::CONTROL) => Some(Self::SubmitDefault),
Key::Escape => Some(Self::PressEscape),
_ => None,
}
}
}