table_rs/dioxus/
controls.rs1use 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}