use crossterm::event::{Event, KeyCode, KeyEvent, KeyModifiers};
use tui_input::{Input, backend::crossterm::EventHandler};
pub struct SearchBar {
pub input: Input,
}
impl SearchBar {
pub fn new() -> Self {
Self {
input: Input::default(),
}
}
pub fn value(&self) -> &str {
self.input.value()
}
pub fn visual_cursor(&self) -> usize {
self.input.visual_cursor()
}
pub fn handle_key(&mut self, key_event: &KeyEvent) -> bool {
if key_event.modifiers.contains(KeyModifiers::CONTROL) {
return false;
}
match key_event.code {
KeyCode::Esc | KeyCode::Enter => false,
_ => {
self.input.handle_event(&Event::Key(*key_event));
true
}
}
}
pub fn clear(&mut self) {
self.input = Input::default();
}
}
impl Default for SearchBar {
fn default() -> Self {
Self::new()
}
}