feat: オリジナルの作成日時追加( #101#117

Merged
みてるぞ merged 5 commits from '#101' into main 2025-09-22 05:05:31 +09:00
4 changed files with 67 additions and 40 deletions
Showing only changes of commit c186318584 - Show all commits
+6 -18
View File
@@ -3,7 +3,7 @@ import toCamel from 'camelcase-keys'
import { useState } from 'react' import { useState } from 'react'
import PostFormTagsArea from '@/components/PostFormTagsArea' import PostFormTagsArea from '@/components/PostFormTagsArea'
import DateTimeField from '@/components/common/DateTimeField' import PostOriginalCreatedTimeField from '@/components/PostOriginalCreatedTimeField'
import Label from '@/components/common/Label' import Label from '@/components/common/Label'
import { Button } from '@/components/ui/button' import { Button } from '@/components/ui/button'
import { API_BASE_URL } from '@/config' import { API_BASE_URL } from '@/config'
@@ -58,23 +58,11 @@ export default (({ post, onSave }: Props) => {
<PostFormTagsArea tags={tags} setTags={setTags}/> <PostFormTagsArea tags={tags} setTags={setTags}/>
{/* オリジナルの作成日時 */} {/* オリジナルの作成日時 */}
<div> <PostOriginalCreatedTimeField
<Label></Label> originalCreatedFrom={originalCreatedFrom}
<div className="my-1"> setOriginalCreatedFrom={setOriginalCreatedFrom}
<DateTimeField originalCreatedBefore={originalCreatedBefore}
className="mr-2" setOriginalCreatedBefore={setOriginalCreatedBefore}/>
value={originalCreatedFrom ?? undefined}
onChange={setOriginalCreatedFrom}/>
</div>
<div className="my-1">
<DateTimeField
className="mr-2"
value={originalCreatedBefore ?? undefined}
onChange={setOriginalCreatedBefore}/>
</div>
</div>
{/* 送信 */} {/* 送信 */}
miteruzo marked this conversation as resolved Outdated
Outdated
Review

オリジナルの作成日時(以降),変更時にオリジナルの作成日時(より前)が自動設定されるやぅにしたぃ.
基本は +1 秒,秒が 0 なら +1 分,分、秒が 0 なら +1 日.

オリジナルの作成日時(以降),変更時にオリジナルの作成日時(より前)が自動設定されるやぅにしたぃ. 基本は +1 秒,秒が 0 なら +1 分,分、秒が 0 なら +1 日.
<Button onClick={handleSubmit} <Button onClick={handleSubmit}
@@ -0,0 +1,49 @@
import DateTimeField from '@/components/common/DateTimeField'
import Label from '@/components/common/Label'
import type { FC } from 'react'
type Props = {
originalCreatedFrom: string | null
setOriginalCreatedFrom: (x: string | null) => void
originalCreatedBefore: string | null
setOriginalCreatedBefore: (x: string | null) => void }
export default (({ originalCreatedFrom,
setOriginalCreatedFrom,
originalCreatedBefore,
setOriginalCreatedBefore }: Props) => (
<div>
<Label></Label>
<div className="my-1">
<DateTimeField
className="mr-2"
value={originalCreatedFrom ?? undefined}
onChange={setOriginalCreatedFrom}
onBlur={ev => {
const v = ev.target.value
if (!(v))
return
const d = new Date (v)
if (d.getSeconds () === 0)
{
if (d.getMinutes () === 0 && d.getHours () === 0)
d.setDate (d.getDate () + 1)
else
d.setMinutes (d.getMinutes () + 1)
}
else
d.setSeconds (d.getSeconds () + 1)
setOriginalCreatedBefore (d.toISOString ())
}}/>
</div>
<div className="my-1">
<DateTimeField
className="mr-2"
value={originalCreatedBefore ?? undefined}
onChange={setOriginalCreatedBefore}/>
</div>
</div>)) satisfies FC<Props>
@@ -2,7 +2,7 @@ import { useEffect, useState } from 'react'
import { cn } from '@/lib/utils' import { cn } from '@/lib/utils'
import type { FC } from 'react' import type { FC, FocusEvent } from 'react'
const pad = (n: number) => n.toString ().padStart (2, '0') const pad = (n: number) => n.toString ().padStart (2, '0')
@@ -22,10 +22,11 @@ const toDateTimeLocalValue = (d: Date) => {
type Props = { type Props = {
value?: string value?: string
onChange?: (isoUTC: string | null) => void onChange?: (isoUTC: string | null) => void
className?: string } className?: string
onBlur?: (ev: FocusEvent<HTMLInputElement>) => void }
export default (({ value, onChange, className }: Props) => { export default (({ value, onChange, className, onBlur }: Props) => {
const [local, setLocal] = useState ('') const [local, setLocal] = useState ('')
useEffect (() => { useEffect (() => {
1
@@ -42,5 +43,6 @@ export default (({ value, onChange, className }: Props) => {
const v = ev.target.value const v = ev.target.value
setLocal (v) setLocal (v)
onChange?.(v ? (new Date (v)).toISOString () : null) onChange?.(v ? (new Date (v)).toISOString () : null)
}}/>) }}
onBlur={onBlur}/>)
}) satisfies FC<Props> }) satisfies FC<Props>
+6 -18
View File
@@ -4,7 +4,7 @@ import { Helmet } from 'react-helmet-async'
import { useNavigate } from 'react-router-dom' import { useNavigate } from 'react-router-dom'
import PostFormTagsArea from '@/components/PostFormTagsArea' import PostFormTagsArea from '@/components/PostFormTagsArea'
import DateTimeField from '@/components/common/DateTimeField' import PostOriginalCreatedTimeField from '@/components/PostOriginalCreatedTimeField'
import Form from '@/components/common/Form' import Form from '@/components/common/Form'
import Label from '@/components/common/Label' import Label from '@/components/common/Label'
import PageTitle from '@/components/common/PageTitle' import PageTitle from '@/components/common/PageTitle'
@@ -189,23 +189,11 @@ export default (({ user }: Props) => {
<PostFormTagsArea tags={tags} setTags={setTags}/> <PostFormTagsArea tags={tags} setTags={setTags}/>
{/* オリジナルの作成日時 */} {/* オリジナルの作成日時 */}
<div> <PostOriginalCreatedTimeField
<Label></Label> originalCreatedFrom={originalCreatedFrom}
<div className="my-1"> setOriginalCreatedFrom={setOriginalCreatedFrom}
<DateTimeField originalCreatedBefore={originalCreatedBefore}
className="mr-2" setOriginalCreatedBefore={setOriginalCreatedBefore}/>
value={originalCreatedFrom ?? undefined}
onChange={setOriginalCreatedFrom}/>
</div>
<div className="my-1">
<DateTimeField
className="mr-2"
value={originalCreatedBefore ?? undefined}
onChange={setOriginalCreatedBefore}/>
</div>
</div>
{/* 送信 */} {/* 送信 */}
miteruzo marked this conversation as resolved Outdated
Outdated
Review

上に同じ.

上に同じ.
<Button onClick={handleSubmit} <Button onClick={handleSubmit}