atac 0.23.0

Arguably a Terminal API Client. Feature-full, free, open-source, offline and account-less.
use ratatui::widgets::{ScrollbarState};

#[derive(Default)]
pub struct StatefulScrollbar {
    pub scroll: u16,
    pub max_scroll: u16,
    pub state: ScrollbarState,
}

impl StatefulScrollbar {
    pub fn page_up(&mut self) {
        if self.scroll > 0 {
            self.scroll -= 1;
        }
        self.state.prev();
    }

    pub fn page_down(&mut self) {
        if self.scroll < self.max_scroll {
            self.scroll += 1;
        }
        self.state.next();
    }

    pub fn set_max_scroll(&mut self, max_scroll: u16) {
        self.max_scroll = max_scroll;
        self.state = self.state.content_length(max_scroll as usize);
    }

    #[allow(unused)]
    pub fn top(&mut self) {
        self.scroll = 0;
        self.state.first()
    }

    #[allow(unused)]
    pub fn bottom(&mut self) {
        self.scroll = self.max_scroll;
        self.state.last();
    }
}