yggdrasil/components/post/
post_footer.rs1use dioxus::prelude::*;
5use dioxus::router::components::Link;
6
7use crate::components::post::post_nav_links::PostNavLinks;
8use crate::models::post::Post;
9use crate::router::Route;
10
11#[component]
25pub fn PostFooter(
26 post: Post,
27 #[props(default = false)] full_reload: bool,
28 #[props(default = false)] sample: bool,
29) -> Element {
30 let tag_to = |tag: &str| {
31 super::nav_target(
32 Route::TagDetail {
33 tag: tag.to_string(),
34 },
35 full_reload,
36 )
37 };
38 rsx! {
39 footer { class: "post-footer",
40 if !post.tags.is_empty() {
41 ul { class: "post-tags", aria_label: "文章标签",
42 for tag in &post.tags {
43 li { key: "{tag}",
44 if sample {
45 a { href: "#", onclick: move |event| event.prevent_default(), "{tag}" }
46 } else {
47 Link { to: tag_to(tag), "{tag}" }
48 }
49 }
50 }
51 }
52 }
53
54 if post.prev_post.is_some() || post.next_post.is_some() {
55 PostNavLinks { prev: post.prev_post, next: post.next_post, full_reload, sample }
56 }
57 }
58 }
59}