rsuite 5.59.1 → 5.59.2
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/CHANGELOG.md +12 -0
- package/DateRangePicker/styles/index.css +27 -0
- package/DateRangePicker/styles/index.less +27 -0
- package/cjs/@types/common.d.ts +1 -1
- package/cjs/Calendar/CalendarContainer.js +4 -4
- package/cjs/DatePicker/DatePicker.d.ts +3 -38
- package/cjs/DatePicker/DatePicker.js +86 -137
- package/cjs/DatePicker/PredefinedRanges.d.ts +1 -1
- package/cjs/DatePicker/PredefinedRanges.js +3 -3
- package/cjs/DatePicker/Toolbar.d.ts +1 -1
- package/cjs/DatePicker/Toolbar.js +13 -12
- package/cjs/DatePicker/hooks/useFocus.d.ts +13 -0
- package/cjs/DatePicker/hooks/useFocus.js +96 -0
- package/cjs/DatePicker/hooks/useMonthView.d.ts +10 -0
- package/cjs/DatePicker/hooks/useMonthView.js +28 -0
- package/cjs/DatePicker/index.d.ts +2 -1
- package/cjs/DatePicker/types.d.ts +37 -0
- package/cjs/DatePicker/utils.d.ts +9 -0
- package/cjs/DatePicker/utils.js +20 -2
- package/cjs/DateRangePicker/DateRangePicker.d.ts +15 -3
- package/cjs/DateRangePicker/DateRangePicker.js +58 -68
- package/cjs/DateRangePicker/DateRangePickerContext.d.ts +4 -1
- package/cjs/DateRangePicker/DateRangePickerContext.js +4 -4
- package/cjs/DateRangePicker/Header.d.ts +11 -0
- package/cjs/DateRangePicker/Header.js +65 -0
- package/cjs/DateRangePicker/disabledDateUtils.d.ts +1 -1
- package/cjs/DateRangePicker/disabledDateUtils.js +1 -1
- package/cjs/DateRangePicker/index.js +5 -0
- package/cjs/Form/Form.d.ts +56 -39
- package/cjs/Form/Form.js +64 -186
- package/cjs/Form/FormContext.d.ts +12 -9
- package/cjs/Form/FormContext.js +11 -5
- package/cjs/Form/hooks/useFormRef.d.ts +55 -0
- package/cjs/Form/hooks/useFormRef.js +45 -0
- package/cjs/Form/hooks/useFormValidate.d.ts +19 -0
- package/cjs/Form/hooks/useFormValidate.js +157 -0
- package/cjs/Form/hooks/useFormValue.d.ts +2 -1
- package/cjs/Form/hooks/useFormValue.js +12 -1
- package/cjs/Form/hooks/useSchemaModel.js +5 -0
- package/cjs/Form/index.d.ts +2 -1
- package/cjs/FormControl/FormControl.d.ts +1 -1
- package/cjs/FormControl/FormControl.js +50 -68
- package/cjs/FormControl/hooks/useField.d.ts +18 -0
- package/cjs/FormControl/hooks/useField.js +54 -0
- package/cjs/FormControl/hooks/useRegisterModel.d.ts +3 -0
- package/cjs/FormControl/hooks/useRegisterModel.js +22 -0
- package/cjs/FormControl/utils.d.ts +1 -0
- package/cjs/FormControl/utils.js +8 -0
- package/cjs/FormControlLabel/FormControlLabel.js +12 -9
- package/cjs/FormErrorMessage/FormErrorMessage.js +2 -5
- package/cjs/FormGroup/FormGroup.d.ts +18 -4
- package/cjs/FormGroup/FormGroup.js +28 -2
- package/cjs/FormGroup/index.d.ts +1 -0
- package/cjs/FormGroup/index.js +4 -3
- package/cjs/FormHelpText/FormHelpText.d.ts +2 -1
- package/cjs/FormHelpText/FormHelpText.js +16 -9
- package/cjs/Input/Input.js +4 -5
- package/cjs/utils/dateUtils.d.ts +72 -10
- package/cjs/utils/dateUtils.js +88 -29
- package/dist/rsuite-no-reset-rtl.css +27 -0
- package/dist/rsuite-no-reset-rtl.min.css +1 -1
- package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
- package/dist/rsuite-no-reset.css +27 -0
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +27 -0
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +27 -0
- package/dist/rsuite.js +144 -44
- package/dist/rsuite.js.map +1 -1
- package/dist/rsuite.min.css +1 -1
- package/dist/rsuite.min.css.map +1 -1
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.LICENSE.txt +35 -0
- package/dist/rsuite.min.js.map +1 -1
- package/esm/@types/common.d.ts +1 -1
- package/esm/Calendar/CalendarContainer.js +5 -5
- package/esm/DatePicker/DatePicker.d.ts +3 -38
- package/esm/DatePicker/DatePicker.js +88 -139
- package/esm/DatePicker/PredefinedRanges.d.ts +1 -1
- package/esm/DatePicker/PredefinedRanges.js +3 -3
- package/esm/DatePicker/Toolbar.d.ts +1 -1
- package/esm/DatePicker/Toolbar.js +13 -12
- package/esm/DatePicker/hooks/useFocus.d.ts +13 -0
- package/esm/DatePicker/hooks/useFocus.js +90 -0
- package/esm/DatePicker/hooks/useMonthView.d.ts +10 -0
- package/esm/DatePicker/hooks/useMonthView.js +22 -0
- package/esm/DatePicker/index.d.ts +2 -1
- package/esm/DatePicker/types.d.ts +37 -0
- package/esm/DatePicker/utils.d.ts +9 -0
- package/esm/DatePicker/utils.js +18 -2
- package/esm/DateRangePicker/DateRangePicker.d.ts +15 -3
- package/esm/DateRangePicker/DateRangePicker.js +61 -71
- package/esm/DateRangePicker/DateRangePickerContext.d.ts +4 -1
- package/esm/DateRangePicker/DateRangePickerContext.js +2 -2
- package/esm/DateRangePicker/Header.d.ts +11 -0
- package/esm/DateRangePicker/Header.js +59 -0
- package/esm/DateRangePicker/disabledDateUtils.d.ts +1 -1
- package/esm/DateRangePicker/disabledDateUtils.js +1 -1
- package/esm/DateRangePicker/index.js +4 -0
- package/esm/Form/Form.d.ts +56 -39
- package/esm/Form/Form.js +62 -183
- package/esm/Form/FormContext.d.ts +12 -9
- package/esm/Form/FormContext.js +6 -2
- package/esm/Form/hooks/useFormRef.d.ts +55 -0
- package/esm/Form/hooks/useFormRef.js +40 -0
- package/esm/Form/hooks/useFormValidate.d.ts +19 -0
- package/esm/Form/hooks/useFormValidate.js +152 -0
- package/esm/Form/hooks/useFormValue.d.ts +2 -1
- package/esm/Form/hooks/useFormValue.js +12 -1
- package/esm/Form/hooks/useSchemaModel.js +5 -0
- package/esm/Form/index.d.ts +2 -1
- package/esm/FormControl/FormControl.d.ts +1 -1
- package/esm/FormControl/FormControl.js +48 -66
- package/esm/FormControl/hooks/useField.d.ts +18 -0
- package/esm/FormControl/hooks/useField.js +48 -0
- package/esm/FormControl/hooks/useRegisterModel.d.ts +3 -0
- package/esm/FormControl/hooks/useRegisterModel.js +17 -0
- package/esm/FormControl/utils.d.ts +1 -0
- package/esm/FormControl/utils.js +4 -0
- package/esm/FormControlLabel/FormControlLabel.js +12 -8
- package/esm/FormErrorMessage/FormErrorMessage.js +2 -5
- package/esm/FormGroup/FormGroup.d.ts +18 -4
- package/esm/FormGroup/FormGroup.js +27 -1
- package/esm/FormGroup/index.d.ts +1 -0
- package/esm/FormGroup/index.js +1 -0
- package/esm/FormHelpText/FormHelpText.d.ts +2 -1
- package/esm/FormHelpText/FormHelpText.js +17 -9
- package/esm/Input/Input.js +4 -5
- package/esm/utils/dateUtils.d.ts +72 -10
- package/esm/utils/dateUtils.js +86 -28
- package/package.json +2 -2
- package/cjs/Form/hooks/useFormError.d.ts +0 -6
- package/cjs/Form/hooks/useFormError.js +0 -31
- package/cjs/FormControl/useRegisterModel.d.ts +0 -4
- package/cjs/FormControl/useRegisterModel.js +0 -18
- package/esm/Form/hooks/useFormError.d.ts +0 -6
- package/esm/Form/hooks/useFormError.js +0 -26
- package/esm/FormControl/useRegisterModel.d.ts +0 -4
- package/esm/FormControl/useRegisterModel.js +0 -13
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _react = _interopRequireDefault(require("react"));
|
|
8
|
+
var _utils = require("../utils");
|
|
9
|
+
var _dateUtils = require("../utils/dateUtils");
|
|
10
|
+
var _CustomProvider = require("../CustomProvider");
|
|
11
|
+
var _Button = _interopRequireDefault(require("../Button"));
|
|
12
|
+
function Header(props) {
|
|
13
|
+
var _prefix;
|
|
14
|
+
var _useClassNames = (0, _utils.useClassNames)('picker'),
|
|
15
|
+
prefix = _useClassNames.prefix;
|
|
16
|
+
var formatStr = props.formatStr,
|
|
17
|
+
character = props.character,
|
|
18
|
+
value = props.value,
|
|
19
|
+
_props$activeKey = props.activeKey,
|
|
20
|
+
activeKey = _props$activeKey === void 0 ? 'start' : _props$activeKey,
|
|
21
|
+
clickable = props.clickable,
|
|
22
|
+
onSelect = props.onSelect;
|
|
23
|
+
var _ref = value !== null && value !== void 0 ? value : [null, null],
|
|
24
|
+
startDate = _ref[0],
|
|
25
|
+
endDate = _ref[1];
|
|
26
|
+
var v = startDate && endDate ? [startDate, endDate].sort(_dateUtils.compareAsc) : [startDate, endDate];
|
|
27
|
+
var start = v[0] ? /*#__PURE__*/_react.default.createElement(_CustomProvider.FormattedDate, {
|
|
28
|
+
date: v[0],
|
|
29
|
+
formatStr: formatStr
|
|
30
|
+
}) : formatStr;
|
|
31
|
+
var end = v[1] ? /*#__PURE__*/_react.default.createElement(_CustomProvider.FormattedDate, {
|
|
32
|
+
date: v[1],
|
|
33
|
+
formatStr: formatStr
|
|
34
|
+
}) : formatStr;
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement("div", {
|
|
36
|
+
className: prefix('daterange-header', (_prefix = {}, _prefix["tab-active-" + activeKey] = clickable, _prefix)),
|
|
37
|
+
"data-testid": "daterange-header"
|
|
38
|
+
}, clickable ? /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
39
|
+
size: "xs",
|
|
40
|
+
appearance: "subtle",
|
|
41
|
+
className: prefix('header-date'),
|
|
42
|
+
onClick: function onClick() {
|
|
43
|
+
return onSelect === null || onSelect === void 0 ? void 0 : onSelect('start');
|
|
44
|
+
},
|
|
45
|
+
"aria-label": "Select start date"
|
|
46
|
+
}, start), /*#__PURE__*/_react.default.createElement("span", {
|
|
47
|
+
className: prefix('header-character')
|
|
48
|
+
}, character), /*#__PURE__*/_react.default.createElement(_Button.default, {
|
|
49
|
+
size: "xs",
|
|
50
|
+
appearance: "subtle",
|
|
51
|
+
className: prefix('header-date'),
|
|
52
|
+
onClick: function onClick() {
|
|
53
|
+
return onSelect === null || onSelect === void 0 ? void 0 : onSelect('end');
|
|
54
|
+
},
|
|
55
|
+
"aria-label": "Select end date"
|
|
56
|
+
}, end)) : /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement("span", {
|
|
57
|
+
className: prefix('header-date')
|
|
58
|
+
}, start), /*#__PURE__*/_react.default.createElement("span", {
|
|
59
|
+
className: prefix('header-character')
|
|
60
|
+
}, character), /*#__PURE__*/_react.default.createElement("span", {
|
|
61
|
+
className: prefix('header-date')
|
|
62
|
+
}, end)));
|
|
63
|
+
}
|
|
64
|
+
var _default = Header;
|
|
65
|
+
exports.default = _default;
|
|
@@ -4,7 +4,7 @@ import { DisabledDateFunction } from './types';
|
|
|
4
4
|
*/
|
|
5
5
|
export declare function allowedMaxDays(days: number): DisabledDateFunction;
|
|
6
6
|
/**
|
|
7
|
-
Only allowed days are specified, other dates are disabled.
|
|
7
|
+
* Only allowed days are specified, other dates are disabled.
|
|
8
8
|
*/
|
|
9
9
|
export declare function allowedDays(days: number): DisabledDateFunction;
|
|
10
10
|
/**
|
|
@@ -46,7 +46,7 @@ function allowedMaxDays(days) {
|
|
|
46
46
|
}
|
|
47
47
|
|
|
48
48
|
/**
|
|
49
|
-
Only allowed days are specified, other dates are disabled.
|
|
49
|
+
* Only allowed days are specified, other dates are disabled.
|
|
50
50
|
*/
|
|
51
51
|
function allowedDays(days) {
|
|
52
52
|
return function (date, selectValue, selectedDone, target) {
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
4
5
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
6
|
exports.__esModule = true;
|
|
6
7
|
exports.default = void 0;
|
|
7
8
|
var _DateRangePicker = _interopRequireDefault(require("./DateRangePicker"));
|
|
9
|
+
var utils = _interopRequireWildcard(require("./disabledDateUtils"));
|
|
10
|
+
Object.keys(utils).forEach(function (key) {
|
|
11
|
+
_DateRangePicker.default[key] = utils[key];
|
|
12
|
+
});
|
|
8
13
|
var _default = _DateRangePicker.default;
|
|
9
14
|
exports.default = _default;
|
package/cjs/Form/Form.d.ts
CHANGED
|
@@ -1,36 +1,64 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { Schema } from 'schema-typed';
|
|
3
|
-
import type { CheckResult } from 'schema-typed';
|
|
4
3
|
import FormControl from '../FormControl';
|
|
5
4
|
import FormControlLabel from '../FormControlLabel';
|
|
6
5
|
import FormErrorMessage from '../FormErrorMessage';
|
|
7
6
|
import FormGroup from '../FormGroup';
|
|
8
7
|
import FormHelpText from '../FormHelpText';
|
|
9
8
|
import { WithAsProps, TypeAttributes, RsRefForwardingComponent } from '../@types/common';
|
|
9
|
+
import { FormInstance } from './hooks/useFormRef';
|
|
10
10
|
export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
|
|
11
11
|
[P in keyof T]?: errorMsgType;
|
|
12
12
|
}> extends WithAsProps, Omit<React.FormHTMLAttributes<HTMLFormElement>, 'onChange' | 'onSubmit' | 'onError'> {
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Set the left and right columns of the layout of the elements within the form。
|
|
15
|
+
*
|
|
16
|
+
* @default 'vertical'
|
|
17
|
+
*/
|
|
14
18
|
layout?: 'horizontal' | 'vertical' | 'inline';
|
|
15
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* The fluid property allows the Input 100% of the form to fill the container, valid only in vertical layouts.
|
|
21
|
+
*/
|
|
16
22
|
fluid?: boolean;
|
|
17
|
-
/**
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
|
|
23
|
-
|
|
23
|
+
/**
|
|
24
|
+
* Current value of the input. Creates a controlled component
|
|
25
|
+
*/
|
|
26
|
+
formValue?: T | null;
|
|
27
|
+
/**
|
|
28
|
+
* Initial value
|
|
29
|
+
*/
|
|
30
|
+
formDefaultValue?: T | null;
|
|
31
|
+
/**
|
|
32
|
+
* Error message of form
|
|
33
|
+
*/
|
|
34
|
+
formError?: E | null;
|
|
35
|
+
/**
|
|
36
|
+
* Trigger the type of form validation.
|
|
37
|
+
*
|
|
38
|
+
* @default 'change'
|
|
39
|
+
*/
|
|
24
40
|
checkTrigger?: TypeAttributes.CheckTrigger;
|
|
25
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* SchemaModel object
|
|
43
|
+
*
|
|
44
|
+
* @see https://github.com/rsuite/schema-typed
|
|
45
|
+
*/
|
|
26
46
|
model?: Schema;
|
|
27
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Make the form readonly
|
|
49
|
+
*/
|
|
28
50
|
readOnly?: boolean;
|
|
29
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Render the form as plain text
|
|
53
|
+
*/
|
|
30
54
|
plaintext?: boolean;
|
|
31
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Disable the form
|
|
57
|
+
*/
|
|
32
58
|
disabled?: boolean;
|
|
33
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* The error message comes from context
|
|
61
|
+
*/
|
|
34
62
|
errorFromContext?: boolean;
|
|
35
63
|
/**
|
|
36
64
|
* The form data is nested.
|
|
@@ -46,33 +74,22 @@ export interface FormProps<T = Record<string, any>, errorMsgType = any, E = {
|
|
|
46
74
|
* ```
|
|
47
75
|
*/
|
|
48
76
|
nestedField?: boolean;
|
|
49
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Callback fired when data changing
|
|
79
|
+
*/
|
|
50
80
|
onChange?: (formValue: T, event?: React.SyntheticEvent) => void;
|
|
51
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* Callback fired when error checking
|
|
83
|
+
*/
|
|
52
84
|
onError?: (formError: E) => void;
|
|
53
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Callback fired when data cheking
|
|
87
|
+
*/
|
|
54
88
|
onCheck?: (formError: E) => void;
|
|
55
|
-
/**
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
[P in keyof T]?: errorMsg;
|
|
60
|
-
}> {
|
|
61
|
-
root: HTMLFormElement | null;
|
|
62
|
-
/** Verify form data */
|
|
63
|
-
check: (callback?: (formError: E) => void) => boolean;
|
|
64
|
-
/** Asynchronously check form data */
|
|
65
|
-
checkAsync: () => Promise<any>;
|
|
66
|
-
/** Check the data field */
|
|
67
|
-
checkForField: (fieldName: keyof T, callback?: (checkResult: CheckResult<errorMsg>) => void) => boolean;
|
|
68
|
-
/** Asynchronous verification as a data field */
|
|
69
|
-
checkForFieldAsync: (fieldName: keyof T) => Promise<CheckResult>;
|
|
70
|
-
/** Clear all error messages */
|
|
71
|
-
cleanErrors: (callback?: () => void) => void;
|
|
72
|
-
/** Clear the error message of the specified field */
|
|
73
|
-
cleanErrorForField: (fieldName: keyof E, callback?: () => void) => void;
|
|
74
|
-
/** All error messages are reset, and an initial value can be set */
|
|
75
|
-
resetErrors: (formError: E, callback?: () => void) => void;
|
|
89
|
+
/**
|
|
90
|
+
* Callback fired when form submit
|
|
91
|
+
*/
|
|
92
|
+
onSubmit?: (checkPassed: boolean, event: React.FormEvent<HTMLFormElement>) => void;
|
|
76
93
|
}
|
|
77
94
|
export interface FormComponent extends RsRefForwardingComponent<'form', FormProps & {
|
|
78
95
|
ref?: React.Ref<FormInstance>;
|
package/cjs/Form/Form.js
CHANGED
|
@@ -1,18 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
-
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
5
4
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
6
5
|
exports.__esModule = true;
|
|
7
6
|
exports.default = void 0;
|
|
8
|
-
var
|
|
7
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
|
9
8
|
var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
|
|
10
|
-
var _react =
|
|
9
|
+
var _react = _interopRequireDefault(require("react"));
|
|
11
10
|
var _propTypes = _interopRequireDefault(require("prop-types"));
|
|
12
|
-
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
13
|
-
var _set = _interopRequireDefault(require("lodash/set"));
|
|
14
11
|
var _schemaTyped = require("schema-typed");
|
|
15
|
-
var _FormContext =
|
|
12
|
+
var _FormContext = require("./FormContext");
|
|
16
13
|
var _FormControl = _interopRequireDefault(require("../FormControl"));
|
|
17
14
|
var _FormControlLabel = _interopRequireDefault(require("../FormControlLabel"));
|
|
18
15
|
var _FormErrorMessage = _interopRequireDefault(require("../FormErrorMessage"));
|
|
@@ -21,9 +18,11 @@ var _FormHelpText = _interopRequireDefault(require("../FormHelpText"));
|
|
|
21
18
|
var _utils = require("../utils");
|
|
22
19
|
var _propTypes2 = require("../internals/propTypes");
|
|
23
20
|
var _useSchemaModel2 = _interopRequireDefault(require("./hooks/useSchemaModel"));
|
|
24
|
-
var
|
|
21
|
+
var _useFormValidate2 = _interopRequireDefault(require("./hooks/useFormValidate"));
|
|
25
22
|
var _useFormValue2 = _interopRequireDefault(require("./hooks/useFormValue"));
|
|
26
23
|
var _useFormClassNames = _interopRequireDefault(require("./hooks/useFormClassNames"));
|
|
24
|
+
var defaultSchema = (0, _schemaTyped.SchemaModel)({});
|
|
25
|
+
|
|
27
26
|
/**
|
|
28
27
|
* The `Form` component is a form interface for collecting and validating user input.
|
|
29
28
|
* @see https://rsuitejs.com/components/form
|
|
@@ -37,15 +36,15 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
37
36
|
errorFromContext = _props$errorFromConte === void 0 ? true : _props$errorFromConte,
|
|
38
37
|
_props$formDefaultVal = props.formDefaultValue,
|
|
39
38
|
formDefaultValue = _props$formDefaultVal === void 0 ? {} : _props$formDefaultVal,
|
|
40
|
-
|
|
41
|
-
|
|
39
|
+
controlledFormValue = props.formValue,
|
|
40
|
+
controlledFormError = props.formError,
|
|
42
41
|
fluid = props.fluid,
|
|
43
42
|
_props$nestedField = props.nestedField,
|
|
44
43
|
nestedField = _props$nestedField === void 0 ? false : _props$nestedField,
|
|
45
44
|
_props$layout = props.layout,
|
|
46
45
|
layout = _props$layout === void 0 ? 'vertical' : _props$layout,
|
|
47
46
|
_props$model = props.model,
|
|
48
|
-
formModel = _props$model === void 0 ?
|
|
47
|
+
formModel = _props$model === void 0 ? defaultSchema : _props$model,
|
|
49
48
|
readOnly = props.readOnly,
|
|
50
49
|
plaintext = props.plaintext,
|
|
51
50
|
className = props.className,
|
|
@@ -60,6 +59,27 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
60
59
|
getCombinedModel = _useSchemaModel.getCombinedModel,
|
|
61
60
|
pushFieldRule = _useSchemaModel.pushFieldRule,
|
|
62
61
|
removeFieldRule = _useSchemaModel.removeFieldRule;
|
|
62
|
+
var _useFormValue = (0, _useFormValue2.default)(controlledFormValue, {
|
|
63
|
+
formDefaultValue: formDefaultValue,
|
|
64
|
+
nestedField: nestedField
|
|
65
|
+
}),
|
|
66
|
+
formValue = _useFormValue.formValue,
|
|
67
|
+
onRemoveValue = _useFormValue.onRemoveValue,
|
|
68
|
+
setFieldValue = _useFormValue.setFieldValue;
|
|
69
|
+
var formValidateProps = {
|
|
70
|
+
ref: ref,
|
|
71
|
+
formValue: formValue,
|
|
72
|
+
getCombinedModel: getCombinedModel,
|
|
73
|
+
onCheck: onCheck,
|
|
74
|
+
onError: onError,
|
|
75
|
+
nestedField: nestedField
|
|
76
|
+
};
|
|
77
|
+
var _useFormValidate = (0, _useFormValidate2.default)(controlledFormError, formValidateProps),
|
|
78
|
+
formError = _useFormValidate.formError,
|
|
79
|
+
setFieldError = _useFormValidate.setFieldError,
|
|
80
|
+
onRemoveError = _useFormValidate.onRemoveError,
|
|
81
|
+
check = _useFormValidate.check,
|
|
82
|
+
formRef = _useFormValidate.formRef;
|
|
63
83
|
var classes = (0, _useFormClassNames.default)({
|
|
64
84
|
classPrefix: classPrefix,
|
|
65
85
|
className: className,
|
|
@@ -69,199 +89,57 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
69
89
|
plaintext: plaintext,
|
|
70
90
|
disabled: disabled
|
|
71
91
|
});
|
|
72
|
-
var _useFormValue = (0, _useFormValue2.default)(formValueProp, formDefaultValue),
|
|
73
|
-
formValue = _useFormValue.formValue,
|
|
74
|
-
setFormValue = _useFormValue.setFormValue,
|
|
75
|
-
onRemoveValue = _useFormValue.onRemoveValue;
|
|
76
|
-
var _useFormError = (0, _useFormError2.default)(formErrorProp),
|
|
77
|
-
formError = _useFormError.formError,
|
|
78
|
-
setFormError = _useFormError.setFormError,
|
|
79
|
-
onRemoveError = _useFormError.onRemoveError;
|
|
80
|
-
/**
|
|
81
|
-
* Validate the form data and return a boolean.
|
|
82
|
-
* The error message after verification is returned in the callback.
|
|
83
|
-
* @param callback
|
|
84
|
-
*/
|
|
85
|
-
var check = (0, _utils.useEventCallback)(function (callback) {
|
|
86
|
-
var formError = {};
|
|
87
|
-
var errorCount = 0;
|
|
88
|
-
var model = getCombinedModel();
|
|
89
|
-
Object.keys(model.getSchemaSpec()).forEach(function (key) {
|
|
90
|
-
var checkResult = model.checkForField(key, formValue || {});
|
|
91
|
-
if (checkResult.hasError === true) {
|
|
92
|
-
errorCount += 1;
|
|
93
|
-
formError[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;
|
|
94
|
-
}
|
|
95
|
-
});
|
|
96
|
-
setFormError(formError);
|
|
97
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
98
|
-
callback === null || callback === void 0 ? void 0 : callback(formError);
|
|
99
|
-
if (errorCount > 0) {
|
|
100
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
101
|
-
return false;
|
|
102
|
-
}
|
|
103
|
-
return true;
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
/**
|
|
107
|
-
* Check the data field
|
|
108
|
-
* @param fieldName
|
|
109
|
-
* @param callback
|
|
110
|
-
*/
|
|
111
|
-
var checkForField = (0, _utils.useEventCallback)(function (fieldName, callback) {
|
|
112
|
-
var _extends2;
|
|
113
|
-
var model = getCombinedModel();
|
|
114
|
-
var checkResult = model.checkForField(fieldName, formValue || {});
|
|
115
|
-
var nextFormError = (0, _extends6.default)({}, formError, (_extends2 = {}, _extends2[fieldName] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult, _extends2));
|
|
116
|
-
setFormError(nextFormError);
|
|
117
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);
|
|
118
|
-
callback === null || callback === void 0 ? void 0 : callback(checkResult);
|
|
119
|
-
if (checkResult.hasError) {
|
|
120
|
-
onError === null || onError === void 0 ? void 0 : onError(nextFormError);
|
|
121
|
-
}
|
|
122
|
-
return !checkResult.hasError;
|
|
123
|
-
});
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Check form data asynchronously and return a Promise
|
|
127
|
-
*/
|
|
128
|
-
var checkAsync = (0, _utils.useEventCallback)(function () {
|
|
129
|
-
var promises = [];
|
|
130
|
-
var keys = [];
|
|
131
|
-
var model = getCombinedModel();
|
|
132
|
-
Object.keys(model.getSchemaSpec()).forEach(function (key) {
|
|
133
|
-
keys.push(key);
|
|
134
|
-
promises.push(model.checkForFieldAsync(key, formValue || {}));
|
|
135
|
-
});
|
|
136
|
-
return Promise.all(promises).then(function (values) {
|
|
137
|
-
var formError = {};
|
|
138
|
-
var errorCount = 0;
|
|
139
|
-
for (var i = 0; i < values.length; i++) {
|
|
140
|
-
if (values[i].hasError) {
|
|
141
|
-
errorCount += 1;
|
|
142
|
-
formError[keys[i]] = values[i].errorMessage;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
146
|
-
setFormError(formError);
|
|
147
|
-
if (errorCount > 0) {
|
|
148
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
149
|
-
}
|
|
150
|
-
return {
|
|
151
|
-
hasError: errorCount > 0,
|
|
152
|
-
formError: formError
|
|
153
|
-
};
|
|
154
|
-
});
|
|
155
|
-
});
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Asynchronously check form fields and return Promise
|
|
159
|
-
* @param fieldName
|
|
160
|
-
*/
|
|
161
|
-
var checkForFieldAsync = (0, _utils.useEventCallback)(function (fieldName) {
|
|
162
|
-
var model = getCombinedModel();
|
|
163
|
-
return model.checkForFieldAsync(fieldName, formValue || {}).then(function (checkResult) {
|
|
164
|
-
var _extends3;
|
|
165
|
-
var nextFormError = (0, _extends6.default)({}, formError, (_extends3 = {}, _extends3[fieldName] = checkResult.errorMessage, _extends3));
|
|
166
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);
|
|
167
|
-
setFormError(nextFormError);
|
|
168
|
-
if (checkResult.hasError) {
|
|
169
|
-
onError === null || onError === void 0 ? void 0 : onError(nextFormError);
|
|
170
|
-
}
|
|
171
|
-
return checkResult;
|
|
172
|
-
});
|
|
173
|
-
});
|
|
174
|
-
var cleanErrors = (0, _utils.useEventCallback)(function () {
|
|
175
|
-
setFormError({});
|
|
176
|
-
});
|
|
177
|
-
var cleanErrorForField = (0, _utils.useEventCallback)(function (fieldName) {
|
|
178
|
-
setFormError((0, _omit.default)(formError, [fieldName]));
|
|
179
|
-
});
|
|
180
|
-
var resetErrors = (0, _utils.useEventCallback)(function (formError) {
|
|
181
|
-
if (formError === void 0) {
|
|
182
|
-
formError = {};
|
|
183
|
-
}
|
|
184
|
-
setFormError(formError);
|
|
185
|
-
});
|
|
186
|
-
(0, _react.useImperativeHandle)(ref, function () {
|
|
187
|
-
return {
|
|
188
|
-
root: rootRef.current,
|
|
189
|
-
check: check,
|
|
190
|
-
checkForField: checkForField,
|
|
191
|
-
checkAsync: checkAsync,
|
|
192
|
-
checkForFieldAsync: checkForFieldAsync,
|
|
193
|
-
cleanErrors: cleanErrors,
|
|
194
|
-
cleanErrorForField: cleanErrorForField,
|
|
195
|
-
resetErrors: resetErrors
|
|
196
|
-
};
|
|
197
|
-
});
|
|
198
|
-
var removeFieldError = (0, _utils.useEventCallback)(function (name) {
|
|
199
|
-
var formError = onRemoveError(name);
|
|
200
|
-
setFormError(formError);
|
|
201
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
202
|
-
});
|
|
203
92
|
var removeFieldValue = (0, _utils.useEventCallback)(function (name) {
|
|
204
93
|
var formValue = onRemoveValue(name);
|
|
205
94
|
onChange === null || onChange === void 0 ? void 0 : onChange(formValue);
|
|
206
95
|
});
|
|
96
|
+
var removeFieldError = (0, _utils.useEventCallback)(function (name) {
|
|
97
|
+
onRemoveError(name);
|
|
98
|
+
});
|
|
207
99
|
var handleSubmit = (0, _utils.useEventCallback)(function (event) {
|
|
100
|
+
var _event$preventDefault, _event$stopPropagatio;
|
|
101
|
+
event === null || event === void 0 ? void 0 : (_event$preventDefault = event.preventDefault) === null || _event$preventDefault === void 0 ? void 0 : _event$preventDefault.call(event);
|
|
102
|
+
event === null || event === void 0 ? void 0 : (_event$stopPropagatio = event.stopPropagation) === null || _event$stopPropagatio === void 0 ? void 0 : _event$stopPropagatio.call(event);
|
|
208
103
|
if (disabled || readOnly || plaintext) {
|
|
209
104
|
return;
|
|
210
105
|
}
|
|
211
|
-
|
|
212
|
-
event
|
|
213
|
-
var checkStatus = check();
|
|
214
|
-
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(checkStatus, event);
|
|
106
|
+
var checkResult = check();
|
|
107
|
+
onSubmit === null || onSubmit === void 0 ? void 0 : onSubmit(checkResult, event);
|
|
215
108
|
});
|
|
216
|
-
var
|
|
217
|
-
|
|
218
|
-
var nextFormError = (0, _extends6.default)({}, formError, (_extends4 = {}, _extends4[name] = errorMessage, _extends4));
|
|
219
|
-
setFormError(nextFormError);
|
|
220
|
-
onError === null || onError === void 0 ? void 0 : onError(nextFormError);
|
|
221
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(nextFormError);
|
|
109
|
+
var onFieldError = (0, _utils.useEventCallback)(function (name, checkResult) {
|
|
110
|
+
setFieldError(name, checkResult);
|
|
222
111
|
});
|
|
223
|
-
var
|
|
112
|
+
var onFieldSuccess = (0, _utils.useEventCallback)(function (name) {
|
|
224
113
|
removeFieldError(name);
|
|
225
114
|
});
|
|
226
|
-
var
|
|
227
|
-
var
|
|
228
|
-
if (nestedField) {
|
|
229
|
-
return (0, _set.default)((0, _extends6.default)({}, formValue), fieldName, fieldValue);
|
|
230
|
-
}
|
|
231
|
-
return (0, _extends6.default)({}, formValue, (_extends5 = {}, _extends5[fieldName] = fieldValue, _extends5));
|
|
232
|
-
};
|
|
233
|
-
var handleFieldChange = (0, _utils.useEventCallback)(function (name, value, event) {
|
|
234
|
-
var nextFormValue = setFieldValue(formValue, name, value);
|
|
235
|
-
setFormValue(nextFormValue);
|
|
115
|
+
var onFieldChange = (0, _utils.useEventCallback)(function (name, value, event) {
|
|
116
|
+
var nextFormValue = setFieldValue(name, value);
|
|
236
117
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextFormValue, event);
|
|
237
118
|
});
|
|
238
|
-
var
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
}, [getCombinedModel, checkTrigger, errorFromContext, readOnly, plaintext, disabled, formError, nestedField, removeFieldValue, removeFieldError, pushFieldRule, removeFieldRule, handleFieldChange, handleFieldError, handleFieldSuccess]);
|
|
258
|
-
return /*#__PURE__*/_react.default.createElement("form", (0, _extends6.default)({}, rest, {
|
|
259
|
-
ref: rootRef,
|
|
119
|
+
var formContextValue = {
|
|
120
|
+
errorFromContext: errorFromContext,
|
|
121
|
+
checkTrigger: checkTrigger,
|
|
122
|
+
plaintext: plaintext,
|
|
123
|
+
readOnly: readOnly,
|
|
124
|
+
disabled: disabled,
|
|
125
|
+
formError: formError,
|
|
126
|
+
nestedField: nestedField,
|
|
127
|
+
pushFieldRule: pushFieldRule,
|
|
128
|
+
getCombinedModel: getCombinedModel,
|
|
129
|
+
removeFieldValue: removeFieldValue,
|
|
130
|
+
removeFieldError: removeFieldError,
|
|
131
|
+
removeFieldRule: removeFieldRule,
|
|
132
|
+
onFieldSuccess: onFieldSuccess,
|
|
133
|
+
onFieldChange: onFieldChange,
|
|
134
|
+
onFieldError: onFieldError
|
|
135
|
+
};
|
|
136
|
+
return /*#__PURE__*/_react.default.createElement("form", (0, _extends2.default)({}, rest, {
|
|
137
|
+
ref: formRef,
|
|
260
138
|
onSubmit: handleSubmit,
|
|
261
139
|
className: classes
|
|
262
|
-
}), /*#__PURE__*/_react.default.createElement(_FormContext.
|
|
140
|
+
}), /*#__PURE__*/_react.default.createElement(_FormContext.FormProvider, {
|
|
263
141
|
value: formContextValue
|
|
264
|
-
}, /*#__PURE__*/_react.default.createElement(_FormContext.
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_FormContext.FormValueProvider, {
|
|
265
143
|
value: formValue
|
|
266
144
|
}, children)));
|
|
267
145
|
});
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TypeAttributes } from '../@types/common';
|
|
3
|
-
import type { Schema } from 'schema-typed';
|
|
3
|
+
import type { Schema, CheckResult } from 'schema-typed';
|
|
4
4
|
import type { FieldRuleType } from './hooks/useSchemaModel';
|
|
5
|
-
|
|
5
|
+
declare type RecordAny = Record<string, any>;
|
|
6
|
+
interface TrulyFormContextValue<T = RecordAny, errorMsgType = any, E = {
|
|
6
7
|
[P in keyof T]?: errorMsgType;
|
|
7
8
|
}> {
|
|
8
|
-
getCombinedModel: () => Schema;
|
|
9
9
|
formError: E;
|
|
10
10
|
nestedField: boolean;
|
|
11
|
+
getCombinedModel: () => Schema;
|
|
11
12
|
removeFieldValue: (name: string) => void;
|
|
12
13
|
removeFieldError: (name: string) => void;
|
|
13
|
-
pushFieldRule: (name: string, fieldRule: FieldRuleType) => void;
|
|
14
14
|
removeFieldRule: (name: string) => void;
|
|
15
|
+
pushFieldRule: (name: string, fieldRule: FieldRuleType) => void;
|
|
16
|
+
onFieldError: (name: string, fieldError: string | CheckResult) => void;
|
|
15
17
|
onFieldChange: (name: string, value: any, event: React.SyntheticEvent) => void;
|
|
16
|
-
onFieldError: (name: string, errorMessage: string) => void;
|
|
17
18
|
onFieldSuccess: (name: string) => void;
|
|
18
19
|
}
|
|
19
20
|
declare type ExternalPropsContextValue = {
|
|
@@ -24,8 +25,10 @@ declare type ExternalPropsContextValue = {
|
|
|
24
25
|
disabled?: boolean;
|
|
25
26
|
};
|
|
26
27
|
declare type InitialContextType = Partial<Record<keyof TrulyFormContextValue, undefined>>;
|
|
27
|
-
export declare type FormContextValue<T =
|
|
28
|
-
export declare const FormContext: React.Context<FormContextValue<
|
|
29
|
-
export declare const FormValueContext: React.Context<
|
|
30
|
-
export declare const
|
|
28
|
+
export declare type FormContextValue<T = RecordAny, errorMsgType = any> = (TrulyFormContextValue<T, errorMsgType> | InitialContextType) & ExternalPropsContextValue;
|
|
29
|
+
export declare const FormContext: React.Context<FormContextValue<RecordAny, any>>;
|
|
30
|
+
export declare const FormValueContext: React.Context<RecordAny | undefined>;
|
|
31
|
+
export declare const FormProvider: React.Provider<FormContextValue<RecordAny, any>>;
|
|
32
|
+
export declare const FormValueProvider: React.Provider<RecordAny | undefined>;
|
|
33
|
+
export declare function useFormContext<T = RecordAny, E = any>(): FormContextValue<T, E>;
|
|
31
34
|
export default FormContext;
|
package/cjs/Form/FormContext.js
CHANGED
|
@@ -1,15 +1,21 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
|
-
var
|
|
4
|
+
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
|
|
5
5
|
exports.__esModule = true;
|
|
6
|
-
exports.
|
|
7
|
-
|
|
6
|
+
exports.useFormContext = useFormContext;
|
|
7
|
+
exports.default = exports.FormValueProvider = exports.FormProvider = exports.FormValueContext = exports.FormContext = void 0;
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
9
|
var FormContext = /*#__PURE__*/_react.default.createContext({});
|
|
9
10
|
exports.FormContext = FormContext;
|
|
10
11
|
var FormValueContext = /*#__PURE__*/_react.default.createContext({});
|
|
11
12
|
exports.FormValueContext = FormValueContext;
|
|
12
|
-
var
|
|
13
|
-
exports.
|
|
13
|
+
var FormProvider = FormContext.Provider;
|
|
14
|
+
exports.FormProvider = FormProvider;
|
|
15
|
+
var FormValueProvider = FormValueContext.Provider;
|
|
16
|
+
exports.FormValueProvider = FormValueProvider;
|
|
17
|
+
function useFormContext() {
|
|
18
|
+
return (0, _react.useContext)(FormContext);
|
|
19
|
+
}
|
|
14
20
|
var _default = FormContext;
|
|
15
21
|
exports.default = _default;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
import type { CheckResult } from 'schema-typed';
|
|
3
|
+
export interface FormImperativeMethods<T = Record<string, any>, M = string, E = {
|
|
4
|
+
[P in keyof T]?: M;
|
|
5
|
+
}> {
|
|
6
|
+
/**
|
|
7
|
+
* Verify form data
|
|
8
|
+
*/
|
|
9
|
+
check: (callback?: (formError: E) => void) => boolean;
|
|
10
|
+
/**
|
|
11
|
+
* Asynchronously check form data
|
|
12
|
+
*/
|
|
13
|
+
checkAsync: () => Promise<any>;
|
|
14
|
+
/**
|
|
15
|
+
* Check the data field
|
|
16
|
+
*/
|
|
17
|
+
checkForField: (fieldName: keyof T, callback?: (checkResult: CheckResult<M>) => void) => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Asynchronous verification as a data field
|
|
20
|
+
*/
|
|
21
|
+
checkForFieldAsync: (fieldName: keyof T) => Promise<CheckResult>;
|
|
22
|
+
/**
|
|
23
|
+
* Clear all error messages
|
|
24
|
+
*/
|
|
25
|
+
cleanErrors: (callback?: () => void) => void;
|
|
26
|
+
/**
|
|
27
|
+
* Clear the error message of the specified field
|
|
28
|
+
*/
|
|
29
|
+
cleanErrorForField: (fieldName: keyof E, callback?: () => void) => void;
|
|
30
|
+
/**
|
|
31
|
+
* All error messages are reset, and an initial value can be set
|
|
32
|
+
*/
|
|
33
|
+
resetErrors: (formError?: E) => void;
|
|
34
|
+
}
|
|
35
|
+
export interface FormInstance<T = Record<string, any>, M = string, E = {
|
|
36
|
+
[P in keyof T]?: M;
|
|
37
|
+
}> extends FormImperativeMethods<T, M, E> {
|
|
38
|
+
/**
|
|
39
|
+
* Form root element
|
|
40
|
+
*/
|
|
41
|
+
root: HTMLFormElement | null;
|
|
42
|
+
}
|
|
43
|
+
interface FormRefProps<T = Record<string, any>, M = string, E = {
|
|
44
|
+
[P in keyof T]?: M;
|
|
45
|
+
}> {
|
|
46
|
+
formError: E;
|
|
47
|
+
nestedField?: boolean;
|
|
48
|
+
setFormError: (formError: E) => void;
|
|
49
|
+
check: (callback?: (formError: E) => void) => boolean;
|
|
50
|
+
checkForField: (fieldName: keyof T, callback?: (checkResult: CheckResult<M>) => void) => boolean;
|
|
51
|
+
checkAsync: () => Promise<any>;
|
|
52
|
+
checkForFieldAsync: (fieldName: keyof T) => Promise<CheckResult>;
|
|
53
|
+
}
|
|
54
|
+
export default function useFormRef(ref: React.Ref<FormInstance>, props: FormRefProps): import("react").RefObject<HTMLFormElement>;
|
|
55
|
+
export {};
|