import * as React from 'react'; import { useState } from 'react'; import * as classNames from 'classnames'; import { TagInput } from './TagInput'; import { MetadataPreview } from './MetadataPreview'; type CheckboxProps = { id: string; name: string; className?: string; checked?: boolean; onChange?: (newValue: boolean) => void; }; const Checkbox: React.FC = ({ id, name, className, checked, onChange, children }) => (
onChange && onChange(e.target.checked)} />
); type FieldErrorProps = { errors?: string[]; }; const FieldError: React.FC = ({ errors }) => (errors && errors.length > 0 &&
{errors[0]}
) || null; const StandaloneFieldError: React.FC = ({ errors }) => (errors && errors.length > 0 && (
{errors[0]}
)) || null; export type CheckinFormProps = { initialState: any; }; export const CheckinForm: React.FC = ({ initialState }) => { 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 [isPrivate, setPrivate] = useState(!!initialState.fields.is_private); const [isTooSensitive, setTooSensitive] = useState(!!initialState.fields.is_too_sensitive); return ( <>
setDate(e.target.value)} />
setTime(e.target.value)} />
setTags(v)} /> Tab, Enter, 半角スペースのいずれかで入力確定します。
setLink(e.target.value)} onBlur={() => setLinkForPreview(link)} /> オカズのURLを貼り付けて登録することができます。
setTags(tags.concat(v))} />