このコミットが含まれているのは:
@@ -8,13 +8,27 @@ import type { ComponentPropsWithoutRef, FC, FocusEvent } from 'react'
|
||||
const pad = (n: number): string => n.toString ().padStart (2, '0')
|
||||
|
||||
|
||||
const toDateTimeLocalValue = (d: Date) => {
|
||||
const y = d.getFullYear ()
|
||||
const m = pad (d.getMonth () + 1)
|
||||
const day = pad (d.getDate ())
|
||||
const h = pad (d.getHours ())
|
||||
const min = pad (d.getMinutes ())
|
||||
return `${ y }-${ m }-${ day }T${ h }:${ min }:00`
|
||||
const toDateTimeLocalValue = (value: Date) => {
|
||||
const y = value.getFullYear ()
|
||||
const m = pad (value.getMonth () + 1)
|
||||
const day = pad (value.getDate ())
|
||||
const h = pad (value.getHours ())
|
||||
const min = pad (value.getMinutes ())
|
||||
return `${ y }-${ m }-${ day }T${ h }:${ min }`
|
||||
}
|
||||
|
||||
|
||||
const toMinutePrecisionIsoUtc = (value: string) => {
|
||||
const date = new Date (value)
|
||||
if (Number.isNaN (date.getTime ()))
|
||||
return value
|
||||
|
||||
const y = date.getUTCFullYear ()
|
||||
const m = pad (date.getUTCMonth () + 1)
|
||||
const day = pad (date.getUTCDate ())
|
||||
const h = pad (date.getUTCHours ())
|
||||
const min = pad (date.getUTCMinutes ())
|
||||
return `${ y }-${ m }-${ day }T${ h }:${ min }Z`
|
||||
}
|
||||
|
||||
|
||||
@@ -47,14 +61,16 @@ const DateTimeField: FC<Props> = ({ value, onChange, className, onBlur, invalid,
|
||||
'focus:ring-2 focus:ring-blue-200']),
|
||||
className)}
|
||||
type="datetime-local"
|
||||
step={60}
|
||||
value={local}
|
||||
aria-invalid={invalid}
|
||||
onChange={ev => {
|
||||
const v = ev.target.value
|
||||
setLocal (v)
|
||||
onChange?.(v ? (new Date (v)).toISOString () : null)
|
||||
onChange?.(v ? toMinutePrecisionIsoUtc (v) : null)
|
||||
}}
|
||||
onBlur={onBlur}/>)
|
||||
}
|
||||
|
||||
export default DateTimeField
|
||||
export { toMinutePrecisionIsoUtc }
|
||||
|
||||
新しい課題から参照
ユーザをブロックする