vuepress-theme-hope
Version:
A light vuepress theme with tons of features
52 lines • 2.48 kB
JavaScript
import { computed, defineComponent, h } from "vue";
import { usePageData, usePageFrontmatter } from "vuepress/client";
import { DropTransition } from "@theme-hope/components/transitions/index";
import ArticleList from "@theme-hope/modules/blog/components/ArticleList";
import BlogWrapper from "@theme-hope/modules/blog/components/BlogWrapper";
import CategoryList from "@theme-hope/modules/blog/components/CategoryList";
import InfoPanel from "@theme-hope/modules/blog/components/InfoPanel";
import TagList from "@theme-hope/modules/blog/components/TagList";
import { useCategoryMap, useTagMap, } from "@theme-hope/modules/blog/composables/index";
import "../styles/page.scss";
export default defineComponent({
name: "BlogCategory",
setup() {
const page = usePageData();
const frontmatter = usePageFrontmatter();
const categoryMap = useCategoryMap();
const tagMap = useTagMap();
const blogOptions = computed(() => frontmatter.value.blog);
const items = computed(() => {
if (blogOptions.value?.type !== "category")
return null;
const { name, key } = blogOptions.value;
if (!name)
return null;
return key === "category"
? categoryMap.value.map[name].items
: key === "tag"
? tagMap.value.map[name].items
: null;
});
return () => {
return h(BlogWrapper, () => h("div", { class: "vp-page vp-blog" }, h("div", { class: "blog-page-wrapper" }, [
h("main", { id: "main-content", class: "vp-blog-main" }, [
h(DropTransition, () => blogOptions.value?.key === "category"
? h(CategoryList)
: blogOptions.value?.key === "tag"
? h(TagList)
: null),
items.value
? h(DropTransition, { appear: true, delay: 0.24 }, () => h(ArticleList, {
key: page.value.path,
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
items: items.value,
}))
: null,
]),
h(DropTransition, { delay: 0.16 }, () => h(InfoPanel, { key: "blog" })),
])));
};
},
});
//# sourceMappingURL=BlogCategory.js.map