use super::*;
#[component]
pub fn euv_pagination(node: VirtualNode<EuvPaginationProps>) -> VirtualNode {
let EuvPaginationProps {
prev_label,
next_label,
prev,
next,
}: EuvPaginationProps = node.try_get_props().unwrap_or_default();
let prev_node: VirtualNode = pagination_side(prev, prev_label, false);
let next_node: VirtualNode = pagination_side(next, next_label, true);
html! {
div {
class: c_euv_pagination()
prev_node
next_node
}
}
}
fn pagination_side(
item: Option<EuvPaginationItem>,
label: &'static str,
is_next: bool,
) -> VirtualNode {
let Some(item) = item else {
return html! {
div {
class: c_euv_pagination_spacer()
}
};
};
if is_next {
return html! {
a {
class: c_euv_pagination_link()
class: c_euv_pagination_next()
href: format!("#{}", item.link)
onclick: Router::link_handler(item.link)
span {
class: c_euv_pagination_label()
{
label
}
}
span {
class: c_euv_pagination_text()
{
item.text
}
}
}
};
}
html! {
a {
class: c_euv_pagination_link()
href: format!("#{}", item.link)
onclick: Router::link_handler(item.link)
span {
class: c_euv_pagination_label()
{
label
}
}
span {
class: c_euv_pagination_text()
{
item.text
}
}
}
}
}