オリジナルの投稿日時 Safari でのバグ修正(#129) (#265)

Merge branch 'main' into feature/129

#129

Co-authored-by: miteruzo <miteruzo@naver.com>
Reviewed-on: #265
This commit was merged in pull request #265.
This commit is contained in:
2026-02-22 02:15:07 +09:00
parent 82302cd3d1
commit be983e4ad1
2 changed files with 49 additions and 32 deletions
@@ -1,5 +1,6 @@
import DateTimeField from '@/components/common/DateTimeField' import DateTimeField from '@/components/common/DateTimeField'
import Label from '@/components/common/Label' import Label from '@/components/common/Label'
import { Button } from '@/components/ui/button'
import type { FC } from 'react' import type { FC } from 'react'
@@ -16,34 +17,52 @@ export default (({ originalCreatedFrom,
setOriginalCreatedBefore }: Props) => ( setOriginalCreatedBefore }: Props) => (
<div> <div>
<Label></Label> <Label></Label>
<div className="my-1"> <div className="my-1 flex">
<DateTimeField <div className="w-80">
className="mr-2" <DateTimeField
value={originalCreatedFrom ?? undefined} className="mr-2"
onChange={setOriginalCreatedFrom} value={originalCreatedFrom ?? undefined}
onBlur={ev => { onChange={setOriginalCreatedFrom}
const v = ev.target.value onBlur={ev => {
if (!(v)) const v = ev.target.value
return if (!(v))
const d = new Date (v) return
if (d.getSeconds () === 0)
{ const d = new Date (v)
if (d.getMinutes () === 0 && d.getHours () === 0) if (d.getMinutes () === 0 && d.getHours () === 0)
d.setDate (d.getDate () + 1) d.setDate (d.getDate () + 1)
else else
d.setMinutes (d.getMinutes () + 1) d.setMinutes (d.getMinutes () + 1)
} setOriginalCreatedBefore (d.toISOString ())
else }}/>
d.setSeconds (d.getSeconds () + 1)
setOriginalCreatedBefore (d.toISOString ()) </div>
}}/> <div>
<Button
className="bg-gray-600 text-white rounded"
onClick={() => {
setOriginalCreatedFrom (null)
}}>
</Button>
</div>
</div> </div>
<div className="my-1"> <div className="my-1 flex">
<DateTimeField <div className="w-80">
className="mr-2" <DateTimeField
value={originalCreatedBefore ?? undefined} className="mr-2"
onChange={setOriginalCreatedBefore}/> value={originalCreatedBefore ?? undefined}
onChange={setOriginalCreatedBefore}/>
</div>
<div>
<Button
className="bg-gray-600 text-white rounded"
onClick={() => {
setOriginalCreatedBefore (null)
}}>
</Button>
</div>
</div> </div>
</div>)) satisfies FC<Props> </div>)) satisfies FC<Props>
@@ -5,7 +5,7 @@ import { cn } from '@/lib/utils'
import type { FC, FocusEvent } from 'react' import type { FC, FocusEvent } from 'react'
const pad = (n: number) => n.toString ().padStart (2, '0') const pad = (n: number): string => n.toString ().padStart (2, '0')
const toDateTimeLocalValue = (d: Date) => { const toDateTimeLocalValue = (d: Date) => {
@@ -14,8 +14,7 @@ const toDateTimeLocalValue = (d: Date) => {
const day = pad (d.getDate ()) const day = pad (d.getDate ())
const h = pad (d.getHours ()) const h = pad (d.getHours ())
const min = pad (d.getMinutes ()) const min = pad (d.getMinutes ())
const s = pad (d.getSeconds ()) return `${ y }-${ m }-${ day }T${ h }:${ min }:00`
return `${ y }-${ m }-${ day }T${ h }:${ min }:${ s }`
} }
@@ -37,7 +36,6 @@ export default (({ value, onChange, className, onBlur }: Props) => {
<input <input
className={cn ('border rounded p-2', className)} className={cn ('border rounded p-2', className)}
type="datetime-local" type="datetime-local"
step={1}
value={local} value={local}
onChange={ev => { onChange={ev => {
const v = ev.target.value const v = ev.target.value