Browse Source

細部

#92
みてるぞ 1 week ago
parent
commit
732ad0ef21
4 changed files with 29 additions and 28 deletions
  1. +7
    -6
      frontend/src/components/WikiBody.tsx
  2. +17
    -17
      frontend/src/components/common/TabGroup.tsx
  3. +4
    -4
      frontend/src/pages/posts/PostListPage.tsx
  4. +1
    -1
      frontend/src/pages/wiki/WikiDetailPage.tsx

+ 7
- 6
frontend/src/components/WikiBody.tsx View File

@@ -1,13 +1,14 @@
import ReactMarkdown from 'react-markdown'
import { Link } from 'react-router-dom'

type Props = { body: string }
type Props = { title: string
body?: string }


export default ({ body }: Props) => (
export default ({ title, body }: Props) => (
<ReactMarkdown components={{ a: (
({ href, children }) => (['/', '.'].some (e => href?.startsWith (e))
? <Link to={href!}>{children}</Link>
: <a href={href} target="_blank" rel="noopener noreferrer">{children}</a>)) }}>
{body}
({ href, children }) => (['/', '.'].some (e => href?.startsWith (e))
? <Link to={href!}>{children}</Link>
: <a href={href} target="_blank" rel="noopener noreferrer">{children}</a>)) }}>
{body || `このページは存在しません。[新規作成してください](/wiki/new?title=${ encodeURIComponent (title) })。`}
</ReactMarkdown>)

+ 17
- 17
frontend/src/components/common/TabGroup.tsx View File

@@ -2,8 +2,8 @@ import React, { useState } from 'react'
import { cn } from '@/lib/utils'

type TabProps = { name: string
init?: boolean
children: React.ReactNode }
init?: boolean
children: React.ReactNode }

type Props = { children: React.ReactNode }

@@ -20,20 +20,20 @@ export default ({ children }: Props) => {

return (
<div className="mt-4">
<div className="flex gap-4">
{tabs.map ((tab, i) => (
<a key={i}
href="#"
className={cn (i === current && 'font-bold')}
onClick={ev => {
ev.preventDefault ()
setCurrent (i)
}}>
{tab.props.name}
</a>))}
</div>
<div className="mt-2">
{tabs[current]}
</div>
<div className="flex gap-4">
{tabs.map ((tab, i) => (
<a key={i}
href="#"
className={cn (i === current && 'font-bold')}
onClick={ev => {
ev.preventDefault ()
setCurrent (i)
}}>
{tab.props.name}
</a>))}
</div>
<div className="mt-2">
{tabs[current]}
</div>
</div>)
}

+ 4
- 4
frontend/src/pages/posts/PostListPage.tsx View File

@@ -129,11 +129,11 @@ export default () => {
{loading && 'Loading...'}
<div ref={loaderRef} className="h-12"></div>
</Tab>
{(wikiPage && wikiPage.body) && (
<Tab name="Wiki" init={!(posts.length)}>
<WikiBody body={wikiPage.body} />
{tags.length === 1 && (
<Tab name="Wiki">
<WikiBody body={wikiPage?.body} title={tags[0]} />
<div className="my-2">
<Link to={`/wiki/${ encodeURIComponent (wikiPage.title) }`}>
<Link to={`/wiki/${ encodeURIComponent (tags[0]) }`}>
Wiki を見る
</Link>
</div>


+ 1
- 1
frontend/src/pages/wiki/WikiDetailPage.tsx View File

@@ -123,7 +123,7 @@ export default () => {
<div className="prose mx-auto p-4">
{wikiPage === undefined
? 'Loading...'
: <WikiBody body={wikiPage?.body || `このページは存在しません。[新規作成してください](/wiki/new?title=${ encodeURIComponent (title) })。`} />}
: <WikiBody body={wikiPage?.body} title={title} />}
</div>

{(!(version) && posts.length > 0) && (


Loading…
Cancel
Save