import React from "react"; import { FieldGroupContextValue } from "../FieldGroup"; interface CommonFieldProps extends FieldGroupContextValue { /** * ラベルの文字列を指定します。ラベルは左上に表示されます。 */ label?: string; /** * input要素本来のバリデーションに任意のバリデーションを追加することができます。 */ customValidations?: ((value?: T) => string | undefined | false)[]; /** * input要素本来のバリーデーションメッセージを変更することができます。 */ validationMessages?: { [key in keyof ValidityState]?: string; }; /** * 任意のヘルパーテキストを挿入できます。ただしinput要素本来のバリデーションの方が優先されます。 */ helperText?: React.ReactNode | ((props: { value?: T; }) => React.ReactNode); /** * 任意のヘルパーテキストをinvalidなものとして扱いたい場合に使用できます。 */ invalid?: boolean; } export interface FieldProps extends CommonFieldProps { value?: T; defaultValue?: T; /** * inputの値が更新された場合に発火します。 * * onChangeが呼ばれるタイミングと内部実装の値が変更されるタイミングは異なります。 * そのため、onChange発火直後にformなどのrefから値を取得しようとするとズレが発生する場合があります。 */ onChange?: (value: T, event?: React.SyntheticEvent) => void; /** * 実体である`input`要素に対するrefを指定します。 */ inputRef?: React.Ref; } export {};