rusticity_term/ui/
pagination.rs1use 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}