Skip to main content

rusticity_term/ui/
pagination.rs

1use ratatui::{layout::Rect, Frame};
2
3use crate::common::{render_filter, render_pagination, FilterConfig};
4
5pub struct PaginatedFilterConfig<'a> {
6    pub filter_text: &'a str,
7    pub is_filter_active: bool,
8    pub selected_index: usize,
9    pub total_items: usize,
10    pub page_size: usize,
11    pub area: Rect,
12}
13
14pub fn render_paginated_filter(frame: &mut Frame, config: PaginatedFilterConfig) {
15    let total_pages = if config.total_items == 0 {
16        1
17    } else {
18        config.total_items.div_ceil(config.page_size)
19    };
20    let current_page = if config.total_items == 0 {
21        0
22    } else {
23        config.selected_index / config.page_size
24    };
25
26    let pagination = render_pagination(current_page, total_pages);
27
28    render_filter(
29        frame,
30        FilterConfig {
31            text: config.filter_text,
32            placeholder: "Search",
33            is_active: config.is_filter_active,
34            right_content: vec![("", &pagination)],
35            area: config.area,
36        },
37    );
38}