yggdrasil/components/post/
post_nav_links.rs1use dioxus::prelude::*;
6use dioxus::router::components::Link;
7
8use crate::models::post::PostNav;
9use crate::router::Route;
10
11#[component]
23pub fn PostNavLinks(
24 prev: Option<PostNav>,
25 next: Option<PostNav>,
26 #[props(default = false)] full_reload: bool,
27) -> Element {
28 let prev_to = prev.as_ref().map(|p| {
31 super::nav_target(
32 Route::PostDetail {
33 slug: p.slug.clone(),
34 },
35 full_reload,
36 )
37 });
38 let next_to = next.as_ref().map(|p| {
39 super::nav_target(
40 Route::PostDetail {
41 slug: p.slug.clone(),
42 },
43 full_reload,
44 )
45 });
46 rsx! {
47 nav { class: "paginav",
48 if let (Some(prev_post), Some(prev_to)) = (prev, prev_to) {
49 Link {
50 class: "prev",
51 to: prev_to,
52 span { class: "title", "« Prev" }
53 span { class: "post-title-nav", "{prev_post.title}" }
54 }
55 } else {
56 span { class: "prev" }
57 }
58
59 if let (Some(next_post), Some(next_to)) = (next, next_to) {
60 Link {
61 class: "next",
62 to: next_to,
63 span { class: "title", "Next »" }
64 span { class: "post-title-nav", "{next_post.title}" }
65 }
66 } else {
67 span { class: "next" }
68 }
69 }
70 }
71}