#179 完了 Co-authored-by: miteruzo <miteruzo@naver.com> Reviewed-on: #180
This commit was merged in pull request #180.
This commit is contained in:
@@ -58,15 +58,52 @@ export default (({ posts }: Props) => {
|
|||||||
setTags (tagsTmp)
|
setTags (tagsTmp)
|
||||||
}, [posts])
|
}, [posts])
|
||||||
|
|
||||||
|
const TagBlock = (
|
||||||
|
<>
|
||||||
|
<SectionTitle>タグ</SectionTitle>
|
||||||
|
<ul>
|
||||||
|
{CATEGORIES.flatMap (cat => cat in tags ? (
|
||||||
|
tags[cat].map (tag => (
|
||||||
|
<li key={tag.id} className="mb-1">
|
||||||
|
<TagLink tag={tag}/>
|
||||||
|
</li>))) : [])}
|
||||||
|
</ul>
|
||||||
|
<SectionTitle>関聯</SectionTitle>
|
||||||
|
{posts.length > 0 && (
|
||||||
|
<a href="#"
|
||||||
|
onClick={ev => {
|
||||||
|
ev.preventDefault ()
|
||||||
|
void ((async () => {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
const { data } = await axios.get (`${ API_BASE_URL }/posts/random`,
|
||||||
|
{ params: { tags: tagsQuery.split (' ').filter (e => e !== '').join (' '),
|
||||||
|
match: (anyFlg ? 'any' : 'all') } })
|
||||||
|
navigate (`/posts/${ (data as Post).id }`)
|
||||||
|
}
|
||||||
|
catch
|
||||||
|
{
|
||||||
|
;
|
||||||
|
}
|
||||||
|
}) ())
|
||||||
|
}}>
|
||||||
|
ランダム
|
||||||
|
</a>)}
|
||||||
|
</>)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<SidebarComponent>
|
<SidebarComponent>
|
||||||
<TagSearch/>
|
<TagSearch/>
|
||||||
|
|
||||||
|
<div className="hidden md:block mt-4">
|
||||||
|
{TagBlock}
|
||||||
|
</div>
|
||||||
|
|
||||||
<AnimatePresence initial={false}>
|
<AnimatePresence initial={false}>
|
||||||
{tagsVsbl && (
|
{tagsVsbl && (
|
||||||
<motion.div
|
<motion.div
|
||||||
key="sptags"
|
key="sptags"
|
||||||
className="md:block mt-4"
|
className="md:hidden mt-4"
|
||||||
variants={{ hidden: { clipPath: 'inset(0 0 100% 0)',
|
variants={{ hidden: { clipPath: 'inset(0 0 100% 0)',
|
||||||
height: 0 },
|
height: 0 },
|
||||||
visible: { clipPath: 'inset(0 0 0% 0)',
|
visible: { clipPath: 'inset(0 0 0% 0)',
|
||||||
@@ -75,35 +112,7 @@ export default (({ posts }: Props) => {
|
|||||||
animate="visible"
|
animate="visible"
|
||||||
exit="hidden"
|
exit="hidden"
|
||||||
transition={{ duration: .2, ease: 'easeOut' }}>
|
transition={{ duration: .2, ease: 'easeOut' }}>
|
||||||
<SectionTitle>タグ</SectionTitle>
|
{TagBlock}
|
||||||
<ul>
|
|
||||||
{CATEGORIES.flatMap (cat => cat in tags ? (
|
|
||||||
tags[cat].map (tag => (
|
|
||||||
<li key={tag.id} className="mb-1">
|
|
||||||
<TagLink tag={tag}/>
|
|
||||||
</li>))) : [])}
|
|
||||||
</ul>
|
|
||||||
<SectionTitle>関聯</SectionTitle>
|
|
||||||
{posts.length > 0 && (
|
|
||||||
<a href="#"
|
|
||||||
onClick={ev => {
|
|
||||||
ev.preventDefault ()
|
|
||||||
void ((async () => {
|
|
||||||
try
|
|
||||||
{
|
|
||||||
const { data } = await axios.get (`${ API_BASE_URL }/posts/random`,
|
|
||||||
{ params: { tags: tagsQuery.split (' ').filter (e => e !== '').join (' '),
|
|
||||||
match: (anyFlg ? 'any' : 'all') } })
|
|
||||||
navigate (`/posts/${ (data as Post).id }`)
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
;
|
|
||||||
}
|
|
||||||
}) ())
|
|
||||||
}}>
|
|
||||||
ランダム
|
|
||||||
</a>)}
|
|
||||||
</motion.div>)}
|
</motion.div>)}
|
||||||
</AnimatePresence>
|
</AnimatePresence>
|
||||||
|
|
||||||
@@ -113,7 +122,7 @@ export default (({ posts }: Props) => {
|
|||||||
dark:text-gray-300 dark:hover:text-gray-100"
|
dark:text-gray-300 dark:hover:text-gray-100"
|
||||||
onClick={ev => {
|
onClick={ev => {
|
||||||
ev.preventDefault ()
|
ev.preventDefault ()
|
||||||
setTagsVsbl (!(tagsVsbl))
|
setTagsVsbl (v => !(v))
|
||||||
}}>
|
}}>
|
||||||
{tagsVsbl ? '▲▲▲ タグ一覧を閉じる ▲▲▲' : '▼▼▼ タグ一覧を表示 ▼▼▼'}
|
{tagsVsbl ? '▲▲▲ タグ一覧を閉じる ▲▲▲' : '▼▼▼ タグ一覧を表示 ▼▼▼'}
|
||||||
</a>
|
</a>
|
||||||
|
|||||||
Reference in New Issue
Block a user