rtlibs-tui 0.1.5

rtools library: ratatui widgets
Documentation
use crossterm::event::KeyCode;
use crossterm::event::KeyModifiers;

use crate::widgets::KeyEventHandler;
use crate::Result;

use super::ScrollState;

pub enum ScrollEvent
{
    Handled,
    NotHandled,
}

impl KeyEventHandler<'_, ScrollEvent> for ScrollState
{
    fn handle_key_event(
        &mut self,
        code: KeyCode,
        _modifiers: KeyModifiers,
    ) -> Result<ScrollEvent>
    {
        match code
        {
            KeyCode::Up => self
                .scrollview
                .scroll_up(),
            KeyCode::Down => self
                .scrollview
                .scroll_down(),
            KeyCode::PageUp => self
                .scrollview
                .scroll_page_up(),
            KeyCode::PageDown => self
                .scrollview
                .scroll_page_down(),
            KeyCode::Home => self
                .scrollview
                .scroll_to_top(),
            KeyCode::End => self
                .scrollview
                .scroll_to_bottom(),
            _ => return Ok(ScrollEvent::NotHandled),
        };

        Ok(ScrollEvent::Handled)
    }
}