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

Merged
みてるぞ merged 2 commits from feature/129 into main 1 week ago
  1. +26
    -7
      frontend/src/components/PostOriginalCreatedTimeField.tsx
  2. +2
    -4
      frontend/src/components/common/DateTimeField.tsx

+ 26
- 7
frontend/src/components/PostOriginalCreatedTimeField.tsx View File

@@ -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,7 +17,8 @@ export default (({ originalCreatedFrom,
setOriginalCreatedBefore }: Props) => ( setOriginalCreatedBefore }: Props) => (
<div> <div>
<Label>オリジナルの作成日時</Label> <Label>オリジナルの作成日時</Label>
<div className="my-1">
<div className="my-1 flex">
<div className="w-80">
<DateTimeField <DateTimeField
className="mr-2" className="mr-2"
value={originalCreatedFrom ?? undefined} value={originalCreatedFrom ?? undefined}
@@ -25,25 +27,42 @@ export default (({ originalCreatedFrom,
const v = ev.target.value const v = ev.target.value
if (!(v)) if (!(v))
return return

const d = new Date (v) const d = new Date (v)
if (d.getSeconds () === 0)
{
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)
}
else
d.setSeconds (d.getSeconds () + 1)
setOriginalCreatedBefore (d.toISOString ()) setOriginalCreatedBefore (d.toISOString ())
}}/> }}/>
以降 以降
</div> </div>
<div className="my-1">
<div>
<Button
className="bg-gray-600 text-white rounded"
onClick={() => {
setOriginalCreatedFrom (null)
}}>
リセット
</Button>
</div>
</div>
<div className="my-1 flex">
<div className="w-80">
<DateTimeField <DateTimeField
className="mr-2" className="mr-2"
value={originalCreatedBefore ?? undefined} value={originalCreatedBefore ?? undefined}
onChange={setOriginalCreatedBefore}/> onChange={setOriginalCreatedBefore}/>
より前 より前
</div> </div>
<div>
<Button
className="bg-gray-600 text-white rounded"
onClick={() => {
setOriginalCreatedBefore (null)
}}>
リセット
</Button>
</div>
</div>
</div>)) satisfies FC<Props> </div>)) satisfies FC<Props>

+ 2
- 4
frontend/src/components/common/DateTimeField.tsx View File

@@ -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 }:${ s }`
return `${ y }-${ m }-${ day }T${ h }:${ min }:00`
} }




@@ -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


Loading…
Cancel
Save