このコミットが含まれているのは:
2025-07-06 19:57:20 +09:00
コミット 191e5d3a76
22個のファイルの変更344行の追加231行の削除
+78 -25
ファイルの表示
@@ -1,50 +1,103 @@
import { useEffect, useState } from 'react'
import { Helmet } from 'react-helmet'
import { Helmet } from 'react-helmet-async'
import Form from '@/components/common/Form'
import Label from '@/components/common/Label'
import PageTitle from '@/components/common/PageTitle'
import MainArea from '@/components/layout/MainArea'
import { SITE_TITLE } from '@/config'
import InheritDialogue from '@/components/users/InheritDialogue'
import UserCodeDialogue from '@/components/users/UserCodeDialogue'
import { API_BASE_URL, SITE_TITLE } from '@/config'
import { Button } from '@/components/ui/button'
import type { User } from '@/types'
type Props = { user: User
setUser: (user: User) => void }
type Props = { user: User | null
setUser: (user: User) => void }
export default ({ user, setUser }: Props) => {
const [name, setName] = useState ('')
const [userCodeVsbl, setUserCodeVsbl] = useState (false)
const [inheritVsbl, setInheritVsbl] = useState (false)
const handleSubmit = async () => {
const formData = new FormData ()
formData.append ('name', name)
try
{
await axios.post (`${ API_BASE_URL }/users`, formData, { headers: {
'Content-Type': 'multipart/form-data',
'X-Transfer-Code': localStorage.getItem ('user_code') || '' } })
toast ({ title: '設定を更新しました.' })
}
catch
{
toast ({ title: 'しっぱい……' })
}
}
useEffect (() => {
if (!user)
return
setName (user?.name)
setName (user.name)
}, [user])
return (
<MainArea>
<Helmet>
<meta name="robots" content="noindex" />
<title> | {SITE_TITLE}</title>
</Helmet>
<Form>
<PageTitle></PageTitle>
<Helmet>
<meta name="robots" content="noindex" />
<title> | {SITE_TITLE}</title>
</Helmet>
{/* 名前 */}
<div>
<Label></Label>
<input type="text"
className="w-full border rounded p-2"
value={name}
placeholder="名もなきニジラー"
onChange={ev => setName (ev.target.value)} />
{(user && !(user.name)) && (
<p class="mt-1 text-sm text-red-500">
30 !!!!
</p>)}
</div>
</Form>
<Form>
<PageTitle></PageTitle>
{/* 名前 */}
<div>
<Label></Label>
<input type="text"
className="w-full border rounded p-2"
value={name}
placeholder="名もなきニジラー"
onChange={ev => setName (ev.target.value)} />
{(user && !(user.name)) && (
<p className="mt-1 text-sm text-red-500">
30 !!!!
</p>)}
</div>
{/* 送信 */}
<Button onClick={handleSubmit}
className="px-4 py-2 bg-blue-600 text-white rounded disabled:bg-gray-400">
</Button>
{/* 引継ぎ */}
<div>
<Label></Label>
<Button onClick={() => setUserCodeVsbl (true)}
className="px-4 py-2 bg-gray-600 text-white rounded disabled:bg-gray-400"
disabled={!(user)}>
</Button>
<Button onClick={() => setInheritVsbl (true)}
className="ml-2 px-4 py-2 bg-red-600 text-white rounded disabled:bg-gray-400"
disabled={!(user)}>
</Button>
</div>
</Form>
<UserCodeDialogue visible={userCodeVsbl}
onVisibleChange={setUserCodeVsbl}
user={user} />
<InheritDialogue visible={inheritVsbl}
onVisibleChange={setInheritVsbl}
user={user}
setUser={setUser} />
</MainArea>)
}