diff --git a/src/routes/news/index.tsx b/src/routes/news/index.tsx index 185781a..6e457e8 100644 --- a/src/routes/news/index.tsx +++ b/src/routes/news/index.tsx @@ -1,5 +1,6 @@ -import { createSignal, For, Show } from "solid-js"; +import { createSignal, For, createMemo } from "solid-js"; import { cache, createAsync, A, type RouteDefinition } from "@solidjs/router"; +import { classList } from "solid-js/web"; const getNewsList = cache(async () => { "use server"; @@ -24,19 +25,51 @@ export const route = { export default () => { const newsList = createAsync(() => getNewsList()); - const tags = createAsync(() => getNewsTags()); + const tagsData = createAsync(() => getNewsTags()); + const [tags, setTags] = createSignal( + Object.fromEntries( + tagsData()?.map((tag: string) => [tag, { active: false }]) ?? [] + ) + ); + + const tagsActive = createMemo(() => + Object.entries(tags()) + .filter(([, { active }]) => active) + .map(([tag]) => tag) + ); return (

News

- - {(tag) => ( - + + {([tag, { active }]) => ( + )}
- + + Object.entries(tags()) + .filter(([, state]) => state.active) + .some(([tag]) => news.keywords.includes(tag)) + ) + : newsList() + } + > {(post) => (
@@ -49,6 +82,11 @@ export default () => {

{post.title}

{post.published}

{post.description}

+
+ + {(tag) =>
{tag}
} +
+