reactaform 1.9.21 → 1.9.40
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.full.md +4 -2
- package/dist/components/fields/{ColorInput.d.ts → advanced/ColorInput.d.ts} +1 -1
- package/dist/components/fields/{EmailInput.d.ts → advanced/EmailInput.d.ts} +1 -1
- package/dist/components/fields/{FileInput.d.ts → advanced/FileInput.d.ts} +1 -1
- package/dist/components/fields/{PasswordInput.d.ts → advanced/PasswordInput.d.ts} +2 -2
- package/dist/components/fields/{PhoneInput.d.ts → advanced/PhoneInput.d.ts} +2 -2
- package/dist/components/fields/{RatingInput.d.ts → advanced/RatingInput.d.ts} +1 -1
- package/dist/components/fields/{SliderInput.d.ts → advanced/SliderInput.d.ts} +1 -1
- package/dist/components/fields/{UnitValueInput.d.ts → advanced/UnitValueInput.d.ts} +1 -1
- package/dist/components/fields/{UrlInput.d.ts → advanced/UrlInput.d.ts} +2 -2
- package/dist/components/fields/{CheckboxInput.d.ts → choices/CheckboxInput.d.ts} +1 -1
- package/dist/components/fields/{DropdownInput.d.ts → choices/DropdownInput.d.ts} +1 -1
- package/dist/components/fields/{MultiSelection.d.ts → choices/MultiSelection.d.ts} +2 -2
- package/dist/components/fields/{RadioInput.d.ts → choices/RadioInput.d.ts} +1 -1
- package/dist/components/fields/{SwitchInput.d.ts → choices/SwitchInput.d.ts} +1 -1
- package/dist/components/fields/{DateInput.d.ts → date-time/DateInput.d.ts} +2 -2
- package/dist/components/fields/{TimeInput.d.ts → date-time/TimeInput.d.ts} +2 -2
- package/dist/components/fields/{FloatArrayInput.d.ts → text-numeric/FloatArrayInput.d.ts} +1 -1
- package/dist/components/fields/{FloatInput.d.ts → text-numeric/FloatInput.d.ts} +2 -2
- package/dist/components/fields/{IntegerArrayInput.d.ts → text-numeric/IntegerArrayInput.d.ts} +2 -2
- package/dist/components/fields/{IntegerInput.d.ts → text-numeric/IntegerInput.d.ts} +2 -2
- package/dist/components/fields/{MultilineTextInput.d.ts → text-numeric/MultilineTextInput.d.ts} +2 -2
- package/dist/components/fields/{NumericStepperInput.d.ts → text-numeric/NumericStepperInput.d.ts} +2 -2
- package/dist/components/fields/{TextInput.d.ts → text-numeric/TextInput.d.ts} +2 -2
- package/dist/components/fields/{Button.d.ts → ui-elements/Button.d.ts} +1 -1
- package/dist/components/fields/{ImageDisplay.d.ts → ui-elements/ImageDisplay.d.ts} +1 -1
- package/dist/components/form/ReactaForm.d.ts +1 -1
- package/dist/core/reactaFormTypes.d.ts +4 -1
- package/dist/hooks/useFieldValidator.d.ts +2 -1
- package/dist/hooks/useUncontrolledValidatedInput.d.ts +5 -2
- package/dist/reactaform.cjs.js +5 -5
- package/dist/reactaform.es.js +1716 -1587
- package/package.json +1 -1
- package/dist/components/fields/SpinInput.d.ts +0 -5
- /package/dist/components/{ui → fields/base}/PopupOptionMenu.d.ts +0 -0
- /package/dist/components/{ui → fields/base}/Tooltip.d.ts +0 -0
- /package/dist/components/fields/{Description.d.ts → ui-elements/Description.d.ts} +0 -0
- /package/dist/components/fields/{Separator.d.ts → ui-elements/Separator.d.ts} +0 -0
package/README.full.md
CHANGED
|
@@ -259,14 +259,16 @@ Example — `Address` group contains `address1` and `address2`
|
|
|
259
259
|
|
|
260
260
|
ReactaForm supports both field-level and form-level validation.
|
|
261
261
|
|
|
262
|
-
- Field-level: validation for a single field; can happen
|
|
262
|
+
- Field-level: validation for a single field; can happen while editing, on blur, or on submission.
|
|
263
263
|
- Form-level: cross-field validation performed during submission.
|
|
264
264
|
|
|
265
265
|
### Field validation modes
|
|
266
266
|
|
|
267
267
|
`FieldValidationMode`:
|
|
268
|
-
- `
|
|
268
|
+
- `onEdit`: Runs validation while the user edits a field.
|
|
269
|
+
- `onBlur`: Runs validation when the field loses focus.
|
|
269
270
|
- `onSubmission`: Runs validation only when the form is submitted.
|
|
271
|
+
- `realTime`: Deprecated. Same behavior as `onEdit`.
|
|
270
272
|
|
|
271
273
|
### Validators
|
|
272
274
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
export type ColorInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<ColorInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField, BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField, BaseInputProps } from "../../../core/reactaFormTypes";
|
|
3
3
|
export type EmailInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
4
4
|
export declare const EmailInput: React.FC<EmailInputProps>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<EmailInputProps>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
export type FileInputProps = BaseInputProps<File | File[] | null, DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<FileInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
type PasswordInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<PasswordInputProps>;
|
|
6
6
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
export type PhoneInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
5
5
|
export declare const PhoneInput: React.FC<PhoneInputProps>;
|
|
6
6
|
declare const _default: React.NamedExoticComponent<PhoneInputProps>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type RatingField = DefinitionPropertyField & {
|
|
4
4
|
max?: number;
|
|
5
5
|
icon?: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type SliderInputProps = BaseInputProps<string | number, DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<SliderInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type UnitValueInputProps = BaseInputProps<[string | number, string], DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<UnitValueInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
/**
|
|
5
5
|
* UrlInput component
|
|
6
6
|
*/
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type CheckboxInputProps = BaseInputProps<boolean, DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<CheckboxInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type DropdownField = DefinitionPropertyField & {
|
|
4
4
|
options: NonNullable<DefinitionPropertyField['options']>;
|
|
5
5
|
};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
export type OptionsField = DefinitionPropertyField & {
|
|
5
5
|
options: NonNullable<DefinitionPropertyField["options"]>;
|
|
6
6
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type RadioField = DefinitionPropertyField & {
|
|
4
4
|
options: NonNullable<DefinitionPropertyField["options"]>;
|
|
5
5
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
type SwitchInputProps = BaseInputProps<boolean, DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<SwitchInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
type DateInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<DateInputProps>;
|
|
6
6
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
type TimeInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<TimeInputProps>;
|
|
6
6
|
export default _default;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField, BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField, BaseInputProps } from "../../../core/reactaFormTypes";
|
|
3
3
|
export type FloatArrayInputProps = BaseInputProps<string | number[], DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<FloatArrayInputProps>;
|
|
5
5
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
/**
|
|
5
5
|
* FloatInput component
|
|
6
6
|
*/
|
package/dist/components/fields/{IntegerArrayInput.d.ts → text-numeric/IntegerArrayInput.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
export type IntegerArrayInputProps = BaseInputProps<string | number[], DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<IntegerArrayInputProps>;
|
|
6
6
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
export type IntegerInputProps = BaseInputProps<number | string, DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<IntegerInputProps>;
|
|
6
6
|
export default _default;
|
package/dist/components/fields/{MultilineTextInput.d.ts → text-numeric/MultilineTextInput.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
type TextInputProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<TextInputProps>;
|
|
6
6
|
export default _default;
|
package/dist/components/fields/{NumericStepperInput.d.ts → text-numeric/NumericStepperInput.d.ts}
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
export type NumericStepperInputProps = BaseInputProps<string | number, DefinitionPropertyField>;
|
|
5
5
|
declare const _default: React.NamedExoticComponent<NumericStepperInputProps>;
|
|
6
6
|
export default _default;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { DefinitionPropertyField } from "
|
|
3
|
-
import type { BaseInputProps } from "
|
|
2
|
+
import type { DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
|
+
import type { BaseInputProps } from "../../../core/reactaFormTypes";
|
|
4
4
|
type TextInputProps = BaseInputProps<string, DefinitionPropertyField> & {
|
|
5
5
|
error?: string | null;
|
|
6
6
|
};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField, FieldValueType, ErrorType } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField, FieldValueType, ErrorType } from "../../../core/reactaFormTypes";
|
|
3
3
|
/**
|
|
4
4
|
* Extended props for Button component
|
|
5
5
|
* Unlike other fields, Button needs access to all form values
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
import type { BaseInputProps, DefinitionPropertyField } from "
|
|
2
|
+
import type { BaseInputProps, DefinitionPropertyField } from "../../../core/reactaFormTypes";
|
|
3
3
|
export type ImageProps = BaseInputProps<string, DefinitionPropertyField>;
|
|
4
4
|
declare const _default: React.NamedExoticComponent<ImageProps>;
|
|
5
5
|
export default _default;
|
|
@@ -9,7 +9,7 @@ import type { ReactaFormProps } from "../../core/reactaFormTypes";
|
|
|
9
9
|
* @param {string} [props.className] - Additional CSS class names
|
|
10
10
|
* @param {string} [props.theme] - Theme name ('light' or 'dark')
|
|
11
11
|
* @param {React.CSSProperties} [props.style] - Inline styles
|
|
12
|
-
* @param {FieldValidationMode} [props.fieldValidationMode] - Field Validation mode ('onEdit'
|
|
12
|
+
* @param {FieldValidationMode} [props.fieldValidationMode] - Field Validation mode ('onEdit', 'onBlur', 'onSubmission', 'realTime' [deprecated])
|
|
13
13
|
* @param {boolean} [props.displayInstanceName] - Whether to display the instance name
|
|
14
14
|
*/
|
|
15
15
|
declare const ReactaForm: React.FC<ReactaFormProps>;
|
|
@@ -10,6 +10,7 @@ export interface DefinitionPropertyField {
|
|
|
10
10
|
displayName: string;
|
|
11
11
|
type: string;
|
|
12
12
|
defaultValue: FieldValueType;
|
|
13
|
+
disabled?: boolean;
|
|
13
14
|
required?: boolean;
|
|
14
15
|
parents?: ParentField;
|
|
15
16
|
children?: Record<string, string[]>;
|
|
@@ -81,10 +82,11 @@ export interface ReactaFormProps {
|
|
|
81
82
|
export type TranslationFunction = (text: string, ...args: unknown[]) => string;
|
|
82
83
|
/** Validation mode controls where validation is performed.
|
|
83
84
|
* 'onEdit' (default) - Validate fields as they are edited, showing errors immediately.
|
|
85
|
+
* 'onBlur' - Validate fields when they lose focus, reducing validation work while typing.
|
|
84
86
|
* 'onSubmission' - Validate only when the form is submitted, showing errors after submission attempt.
|
|
85
87
|
* 'realTime' - deprecated, use 'onEdit' instead.
|
|
86
88
|
*/
|
|
87
|
-
export type FieldValidationMode = 'onEdit' | 'onSubmission' | 'realTime';
|
|
89
|
+
export type FieldValidationMode = 'onEdit' | 'onBlur' | 'onSubmission' | 'realTime';
|
|
88
90
|
export type FieldCustomValidationHandler = (fieldName: string, value: FieldValueType | unknown, t: TranslationFunction) => string | undefined;
|
|
89
91
|
export type FieldTypeValidationHandler = (field: DefinitionPropertyField, input: FieldValueType, t: TranslationFunction) => string | undefined;
|
|
90
92
|
export type FormValidationHandler = (valuesMap: Record<string, FieldValueType | unknown>, t: TranslationFunction) => string[] | Promise<string[] | undefined> | undefined;
|
|
@@ -93,6 +95,7 @@ export type InputOnChange<T> = (value: T | string) => void;
|
|
|
93
95
|
export interface BaseInputProps<TValue = unknown, TField extends DefinitionPropertyField = DefinitionPropertyField> {
|
|
94
96
|
field: TField;
|
|
95
97
|
value: TValue;
|
|
98
|
+
disabled?: boolean;
|
|
96
99
|
placeholder?: string;
|
|
97
100
|
onChange?: InputOnChange<TValue>;
|
|
98
101
|
onError?: (error: string | null) => void;
|
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
import type { DefinitionPropertyField, FieldValueType } from '../core/reactaFormTypes';
|
|
2
|
-
export
|
|
2
|
+
export type ValidationTrigger = 'change' | 'blur' | 'sync';
|
|
3
|
+
export declare function useFieldValidator(field: DefinitionPropertyField, externalError?: string | null): (value: FieldValueType, trigger?: ValidationTrigger) => string | null;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
+
import type { ValidationTrigger } from "./useFieldValidator";
|
|
2
3
|
export type UseUncontrolledValidatedInputProps = {
|
|
3
4
|
value?: string | number;
|
|
5
|
+
disabled?: boolean;
|
|
4
6
|
onChange?: (value: string) => void;
|
|
5
7
|
onError?: (error: string | null) => void;
|
|
6
|
-
validate: (value: string) => string | null;
|
|
8
|
+
validate: (value: string, trigger?: ValidationTrigger) => string | null;
|
|
7
9
|
};
|
|
8
10
|
/**
|
|
9
11
|
* Handles:
|
|
@@ -11,8 +13,9 @@ export type UseUncontrolledValidatedInputProps = {
|
|
|
11
13
|
* - Validation
|
|
12
14
|
* - Error sync
|
|
13
15
|
*/
|
|
14
|
-
export declare function useUncontrolledValidatedInput<T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>({ value, onChange, onError, validate, }: UseUncontrolledValidatedInputProps): {
|
|
16
|
+
export declare function useUncontrolledValidatedInput<T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement>({ value, disabled, onChange, onError, validate, }: UseUncontrolledValidatedInputProps): {
|
|
15
17
|
inputRef: React.MutableRefObject<T | null>;
|
|
16
18
|
error: string | null;
|
|
17
19
|
handleChange: (e: React.ChangeEvent<T>) => void;
|
|
20
|
+
handleBlur: () => void;
|
|
18
21
|
};
|