table_rs/dioxus/
controls.rs

1use crate::dioxus::types::TableClasses;
2use crate::dioxus::types::TableTexts;
3use dioxus::prelude::*;
4
5#[component]
6pub fn PaginationControls(
7    page: Signal<usize>,
8    total_pages: usize,
9    classes: TableClasses,
10    texts: TableTexts,
11) -> Element {
12    let on_prev = move |_| {
13        if page() > 0 {
14            page.set(page() - 1);
15        }
16    };
17
18    let on_next = move |_| {
19        if page() + 1 < total_pages {
20            page.set(page() + 1);
21        }
22    };
23
24    rsx! {
25        div { class: classes.pagination,
26            button {
27                class: classes.pagination_button,
28                onclick: on_prev,
29                disabled: page() == 0,
30                "{texts.previous_button}"
31            }
32            span {
33                {
34                    texts.page_indicator
35                        .replace("{current}", &(page() + 1).to_string())
36                        .replace("{total}", &total_pages.to_string())
37                }
38            }
39            button {
40                class: classes.pagination_button,
41                onclick: on_next,
42                disabled: page() + 1 >= total_pages,
43                "{texts.next_button}"
44            }
45        }
46    }
47}