import React from 'react'; import TextField from '@material-ui/core/TextField'; import Button from '@material-ui/core/Button'; import Grid from '@material-ui/core/Grid'; import InputLabel from '@material-ui/core/InputLabel'; import { makeStyles } from '@material-ui/core/styles'; import useForm from 'react-hook-form'; const useStyles = makeStyles((theme) => ({ labelContainer: { [theme.breakpoints.up('md')]: { marginTop: theme.spacing(2.5), }, }, label: { color: theme.palette.text.primary, }, })); export type ItemDataFormData = { name: string; tagCount: string; guestPrice: string; memberPrice: string; comment: string; }; export type Item = { id: number; createdAt: string; updatedAt: string; revisions: { name: string; guestPrice: number; memberPrice: number; comment: string | null; tagCount: number; }[]; user: { uid: string; }; }; export interface ItemDataFormHandler { focusFirst(): void; reset(): void; } export type ItemDataFormProps = { onSubmit: (formData: ItemDataFormData) => void; item?: Item; submitButtonLabel: string; }; export const ItemDataForm = React.forwardRef(function ItemDataForm(props, ref) { const classes = useStyles(); const { register, handleSubmit, reset } = useForm(); const firstInputEl = React.useRef(null); const handleFirstInputRef: React.Ref = React.useCallback( (ref) => { register(ref); firstInputEl.current = ref; }, [register], ); React.useImperativeHandle(ref, () => ({ focusFirst: () => { firstInputEl.current?.focus(); }, reset, })); return (
商品名 * 値札の枚数 * 通常価格 * 部員価格 * コメント
); });