Files
AobaV2/AobaClient/src/components/pagination.rs
T
Amatsugu b1ab165665
Build and Push Image / build-and-push (push) Successful in 5m4s
added ability to set media class of items
2026-03-29 03:19:34 -04:00

58 lines
1.2 KiB
Rust

use dioxus::prelude::*;
use web_sys::window;
#[component]
pub fn Pagination(page: Signal<i32>, max_page: Signal<i32>, item_count: Signal<i32>) -> Element
{
let cur_page_val = page.cloned();
let max_page_val = max_page.cloned();
let item_count_val = item_count.cloned();
rsx! {
div {
class: "pagination",
a {
onclick: move|_| {
page.set(1);
on_page_change();
},
"First"
}
a {
onclick: move|_| {
let p = (cur_page_val - 1).max(1);
page.set(p);
on_page_change();
},
"Prev"
}
div { "Page {cur_page_val} of {max_page_val} ({item_count_val} Media Items)" }
a {
onclick: move|_| {
let p = (cur_page_val + 1).min(max_page_val);
page.set(p);
on_page_change();
},
"Next"
}
a {
onclick: move|_| {
page.set(max_page_val);
on_page_change();
},
"Last"
}
}
}
}
fn on_page_change()
{
let window = window().expect("Failed to get window");
let document = window.document().expect("Failed to get document");
document
.query_selector("#content")
.expect("Failed to find content")
.expect("Failed to find content")
.scroll_to_with_x_and_y(0.0, 0.0);
}