import React, { useState, useEffect } from 'react'; import classNames from 'classnames'; import { format } from 'date-fns'; import { CheckBox } from './CheckBox'; import { FieldError, StandaloneFieldError } from './FieldError'; import { TagInput } from './TagInput'; import { MetadataPreview } from './MetadataPreview'; type CheckinFormProps = { initialState: any; }; export const CheckinForm: React.FC = ({ initialState }) => { const mode = initialState.mode; const [date, setDate] = useState(initialState.fields.date || ''); const [time, setTime] = useState(initialState.fields.time || ''); const [tags, setTags] = useState(initialState.fields.tags || []); const [link, setLink] = useState(initialState.fields.link || ''); const [linkForPreview, setLinkForPreview] = useState(link); const [note, setNote] = useState(initialState.fields.note || ''); const [isRealtime, setRealtime] = useState(mode === 'create' && initialState.fields.is_realtime); const [isPrivate, setPrivate] = useState(!!initialState.fields.is_private); const [isTooSensitive, setTooSensitive] = useState(!!initialState.fields.is_too_sensitive); const [discardElapsedTime, setDiscardElapsedTime] = useState(!!initialState.fields.discard_elapsed_time); useEffect(() => { if (mode === 'create' && isRealtime) { const id = setInterval(() => { const now = new Date(); setDate(format(now, 'yyyy/MM/dd')); setTime(format(now, 'HH:mm')); }, 500); return () => clearInterval(id); } }, [mode, isRealtime]); return ( <>
{mode === 'create' && (
setRealtime(v)} > 現在時刻でチェックイン
)}
setDate(e.target.value)} disabled={isRealtime} />
setTime(e.target.value)} disabled={isRealtime} />
setTags(v)} /> Tab, Enter, 半角スペースのいずれかで入力確定します。
setLink(e.target.value)} onBlur={() => setLinkForPreview(link)} /> オカズのURLを貼り付けて登録することができます。
setTags(tags.concat(v))} />