rsuite 5.59.0 → 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/AvatarGroup/styles/index.css +2 -0
- package/AvatarGroup/styles/index.less +2 -0
- package/CHANGELOG.md +26 -0
- package/CheckPicker/styles/index.css +2 -0
- package/CheckTree/styles/index.css +2 -0
- package/CheckTreePicker/styles/index.css +2 -0
- package/Checkbox/styles/index.css +2 -0
- package/Checkbox/styles/index.less +2 -0
- package/DateRangePicker/styles/index.css +27 -0
- package/DateRangePicker/styles/index.less +27 -0
- package/MultiCascadeTree/styles/index.css +2 -0
- package/MultiCascader/styles/index.css +2 -0
- package/Placeholder/styles/index.css +42 -6
- package/Placeholder/styles/index.less +18 -9
- package/Placeholder/styles/mixin.less +7 -0
- package/Sidenav/styles/index.css +3 -0
- package/Sidenav/styles/index.less +4 -0
- package/TagInput/styles/index.css +2 -0
- package/TagPicker/styles/index.css +2 -0
- package/cjs/@types/common.d.ts +1 -1
- package/cjs/Avatar/Avatar.js +16 -8
- package/cjs/Avatar/useImage.js +0 -1
- package/cjs/AvatarGroup/AvatarGroup.d.ts +1 -0
- package/cjs/AvatarGroup/AvatarGroup.js +12 -12
- package/cjs/Calendar/CalendarContainer.js +4 -4
- package/cjs/Checkbox/Checkbox.js +1 -1
- 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 +70 -208
- package/cjs/Form/FormContext.d.ts +13 -10
- package/cjs/Form/FormContext.js +11 -5
- package/cjs/Form/{useFormClassNames.d.ts → hooks/useFormClassNames.d.ts} +2 -2
- package/cjs/Form/{useFormClassNames.js → hooks/useFormClassNames.js} +2 -2
- 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 +7 -0
- package/cjs/Form/hooks/useFormValue.js +42 -0
- package/cjs/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +5 -0
- package/cjs/Form/index.d.ts +3 -2
- package/cjs/Form/index.js +3 -9
- package/cjs/FormControl/FormControl.d.ts +1 -1
- package/cjs/FormControl/FormControl.js +51 -69
- 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/Placeholder/PlaceholderGraph.d.ts +13 -1
- package/cjs/Placeholder/PlaceholderGrid.d.ts +27 -1
- package/cjs/Placeholder/PlaceholderGrid.js +10 -13
- package/cjs/Placeholder/PlaceholderParagraph.d.ts +24 -1
- package/cjs/Placeholder/PlaceholderParagraph.js +13 -9
- package/cjs/utils/dateUtils.d.ts +72 -10
- package/cjs/utils/dateUtils.js +88 -29
- package/dist/rsuite-no-reset-rtl.css +76 -6
- 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 +76 -6
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +76 -6
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +76 -6
- package/dist/rsuite.js +221 -57
- 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/Avatar/Avatar.js +12 -4
- package/esm/Avatar/useImage.js +0 -1
- package/esm/AvatarGroup/AvatarGroup.d.ts +1 -0
- package/esm/AvatarGroup/AvatarGroup.js +12 -12
- package/esm/Calendar/CalendarContainer.js +5 -5
- package/esm/Checkbox/Checkbox.js +1 -1
- 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 +68 -205
- package/esm/Form/FormContext.d.ts +13 -10
- package/esm/Form/FormContext.js +6 -2
- package/esm/Form/{useFormClassNames.d.ts → hooks/useFormClassNames.d.ts} +2 -2
- package/esm/Form/{useFormClassNames.js → hooks/useFormClassNames.js} +2 -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 +7 -0
- package/esm/Form/hooks/useFormValue.js +37 -0
- package/esm/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +5 -0
- package/esm/Form/index.d.ts +3 -2
- package/esm/Form/index.js +1 -1
- package/esm/FormControl/FormControl.d.ts +1 -1
- package/esm/FormControl/FormControl.js +49 -67
- 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/Placeholder/PlaceholderGraph.d.ts +13 -1
- package/esm/Placeholder/PlaceholderGrid.d.ts +27 -1
- package/esm/Placeholder/PlaceholderGrid.js +10 -13
- package/esm/Placeholder/PlaceholderParagraph.d.ts +24 -1
- package/esm/Placeholder/PlaceholderParagraph.js +12 -8
- package/esm/utils/dateUtils.d.ts +72 -10
- package/esm/utils/dateUtils.js +86 -28
- package/package.json +2 -2
- package/cjs/FormControl/useRegisterModel.d.ts +0 -4
- package/cjs/FormControl/useRegisterModel.js +0 -18
- package/esm/FormControl/useRegisterModel.d.ts +0 -4
- package/esm/FormControl/useRegisterModel.js +0 -13
- /package/cjs/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
- /package/esm/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
package/cjs/Form/Form.js
CHANGED
|
@@ -1,27 +1,28 @@
|
|
|
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"));
|
|
19
16
|
var _FormGroup = _interopRequireDefault(require("../FormGroup"));
|
|
20
17
|
var _FormHelpText = _interopRequireDefault(require("../FormHelpText"));
|
|
21
|
-
var _useFormClassNames = require("./useFormClassNames");
|
|
22
|
-
var _useSchemaModel2 = _interopRequireDefault(require("./useSchemaModel"));
|
|
23
18
|
var _utils = require("../utils");
|
|
24
19
|
var _propTypes2 = require("../internals/propTypes");
|
|
20
|
+
var _useSchemaModel2 = _interopRequireDefault(require("./hooks/useSchemaModel"));
|
|
21
|
+
var _useFormValidate2 = _interopRequireDefault(require("./hooks/useFormValidate"));
|
|
22
|
+
var _useFormValue2 = _interopRequireDefault(require("./hooks/useFormValue"));
|
|
23
|
+
var _useFormClassNames = _interopRequireDefault(require("./hooks/useFormClassNames"));
|
|
24
|
+
var defaultSchema = (0, _schemaTyped.SchemaModel)({});
|
|
25
|
+
|
|
25
26
|
/**
|
|
26
27
|
* The `Form` component is a form interface for collecting and validating user input.
|
|
27
28
|
* @see https://rsuitejs.com/components/form
|
|
@@ -35,15 +36,15 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
35
36
|
errorFromContext = _props$errorFromConte === void 0 ? true : _props$errorFromConte,
|
|
36
37
|
_props$formDefaultVal = props.formDefaultValue,
|
|
37
38
|
formDefaultValue = _props$formDefaultVal === void 0 ? {} : _props$formDefaultVal,
|
|
38
|
-
|
|
39
|
-
|
|
39
|
+
controlledFormValue = props.formValue,
|
|
40
|
+
controlledFormError = props.formError,
|
|
40
41
|
fluid = props.fluid,
|
|
41
42
|
_props$nestedField = props.nestedField,
|
|
42
43
|
nestedField = _props$nestedField === void 0 ? false : _props$nestedField,
|
|
43
44
|
_props$layout = props.layout,
|
|
44
45
|
layout = _props$layout === void 0 ? 'vertical' : _props$layout,
|
|
45
46
|
_props$model = props.model,
|
|
46
|
-
formModel = _props$model === void 0 ?
|
|
47
|
+
formModel = _props$model === void 0 ? defaultSchema : _props$model,
|
|
47
48
|
readOnly = props.readOnly,
|
|
48
49
|
plaintext = props.plaintext,
|
|
49
50
|
className = props.className,
|
|
@@ -58,7 +59,28 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
58
59
|
getCombinedModel = _useSchemaModel.getCombinedModel,
|
|
59
60
|
pushFieldRule = _useSchemaModel.pushFieldRule,
|
|
60
61
|
removeFieldRule = _useSchemaModel.removeFieldRule;
|
|
61
|
-
var
|
|
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;
|
|
83
|
+
var classes = (0, _useFormClassNames.default)({
|
|
62
84
|
classPrefix: classPrefix,
|
|
63
85
|
className: className,
|
|
64
86
|
fluid: fluid,
|
|
@@ -67,218 +89,58 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
|
|
|
67
89
|
plaintext: plaintext,
|
|
68
90
|
disabled: disabled
|
|
69
91
|
});
|
|
70
|
-
var _useControlled = (0, _utils.useControlled)(formValue, formDefaultValue),
|
|
71
|
-
realFormValue = _useControlled[0],
|
|
72
|
-
setFormValue = _useControlled[1];
|
|
73
|
-
var _useControlled2 = (0, _utils.useControlled)(formError, {}),
|
|
74
|
-
realFormError = _useControlled2[0],
|
|
75
|
-
setFormError = _useControlled2[1];
|
|
76
|
-
var realFormValueRef = (0, _react.useRef)(realFormValue);
|
|
77
|
-
realFormValueRef.current = realFormValue;
|
|
78
|
-
var realFormErrorRef = (0, _react.useRef)(realFormError);
|
|
79
|
-
realFormErrorRef.current = realFormError;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Validate the form data and return a boolean.
|
|
83
|
-
* The error message after verification is returned in the callback.
|
|
84
|
-
* @param callback
|
|
85
|
-
*/
|
|
86
|
-
var check = (0, _utils.useEventCallback)(function (callback) {
|
|
87
|
-
var formValue = realFormValue || {};
|
|
88
|
-
var formError = {};
|
|
89
|
-
var errorCount = 0;
|
|
90
|
-
var model = getCombinedModel();
|
|
91
|
-
Object.keys(model.spec).forEach(function (key) {
|
|
92
|
-
var checkResult = model.checkForField(key, formValue);
|
|
93
|
-
if (checkResult.hasError === true) {
|
|
94
|
-
errorCount += 1;
|
|
95
|
-
formError[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
setFormError(formError);
|
|
99
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
100
|
-
callback === null || callback === void 0 ? void 0 : callback(formError);
|
|
101
|
-
if (errorCount > 0) {
|
|
102
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
103
|
-
return false;
|
|
104
|
-
}
|
|
105
|
-
return true;
|
|
106
|
-
});
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Check the data field
|
|
110
|
-
* @param fieldName
|
|
111
|
-
* @param callback
|
|
112
|
-
*/
|
|
113
|
-
var checkForField = (0, _utils.useEventCallback)(function (fieldName, callback) {
|
|
114
|
-
var _extends2;
|
|
115
|
-
var formValue = realFormValue || {};
|
|
116
|
-
var model = getCombinedModel();
|
|
117
|
-
var checkResult = model.checkForField(fieldName, formValue);
|
|
118
|
-
var formError = (0, _extends6.default)({}, realFormError, (_extends2 = {}, _extends2[fieldName] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult, _extends2));
|
|
119
|
-
setFormError(formError);
|
|
120
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
121
|
-
callback === null || callback === void 0 ? void 0 : callback(checkResult);
|
|
122
|
-
if (checkResult.hasError) {
|
|
123
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
124
|
-
}
|
|
125
|
-
return !checkResult.hasError;
|
|
126
|
-
});
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* Check form data asynchronously and return a Promise
|
|
130
|
-
*/
|
|
131
|
-
var checkAsync = (0, _utils.useEventCallback)(function () {
|
|
132
|
-
var formValue = realFormValue || {};
|
|
133
|
-
var promises = [];
|
|
134
|
-
var keys = [];
|
|
135
|
-
var model = getCombinedModel();
|
|
136
|
-
Object.keys(model.spec).forEach(function (key) {
|
|
137
|
-
keys.push(key);
|
|
138
|
-
promises.push(model.checkForFieldAsync(key, formValue));
|
|
139
|
-
});
|
|
140
|
-
return Promise.all(promises).then(function (values) {
|
|
141
|
-
var formError = {};
|
|
142
|
-
var errorCount = 0;
|
|
143
|
-
for (var i = 0; i < values.length; i++) {
|
|
144
|
-
if (values[i].hasError) {
|
|
145
|
-
errorCount += 1;
|
|
146
|
-
formError[keys[i]] = values[i].errorMessage;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
150
|
-
setFormError(formError);
|
|
151
|
-
if (errorCount > 0) {
|
|
152
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
153
|
-
}
|
|
154
|
-
return {
|
|
155
|
-
hasError: errorCount > 0,
|
|
156
|
-
formError: formError
|
|
157
|
-
};
|
|
158
|
-
});
|
|
159
|
-
});
|
|
160
|
-
|
|
161
|
-
/**
|
|
162
|
-
* Asynchronously check form fields and return Promise
|
|
163
|
-
* @param fieldName
|
|
164
|
-
*/
|
|
165
|
-
var checkForFieldAsync = (0, _utils.useEventCallback)(function (fieldName) {
|
|
166
|
-
var formValue = realFormValue || {};
|
|
167
|
-
var model = getCombinedModel();
|
|
168
|
-
return model.checkForFieldAsync(fieldName, formValue).then(function (checkResult) {
|
|
169
|
-
var _extends3;
|
|
170
|
-
var formError = (0, _extends6.default)({}, realFormError, (_extends3 = {}, _extends3[fieldName] = checkResult.errorMessage, _extends3));
|
|
171
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
172
|
-
setFormError(formError);
|
|
173
|
-
if (checkResult.hasError) {
|
|
174
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
175
|
-
}
|
|
176
|
-
return checkResult;
|
|
177
|
-
});
|
|
178
|
-
});
|
|
179
|
-
var cleanErrors = (0, _utils.useEventCallback)(function () {
|
|
180
|
-
setFormError({});
|
|
181
|
-
});
|
|
182
|
-
var cleanErrorForField = (0, _utils.useEventCallback)(function (fieldName) {
|
|
183
|
-
setFormError((0, _omit.default)(realFormError, [fieldName]));
|
|
184
|
-
});
|
|
185
|
-
var resetErrors = (0, _utils.useEventCallback)(function (formError) {
|
|
186
|
-
if (formError === void 0) {
|
|
187
|
-
formError = {};
|
|
188
|
-
}
|
|
189
|
-
setFormError(formError);
|
|
190
|
-
});
|
|
191
|
-
(0, _react.useImperativeHandle)(ref, function () {
|
|
192
|
-
return {
|
|
193
|
-
root: rootRef.current,
|
|
194
|
-
check: check,
|
|
195
|
-
checkForField: checkForField,
|
|
196
|
-
checkAsync: checkAsync,
|
|
197
|
-
checkForFieldAsync: checkForFieldAsync,
|
|
198
|
-
cleanErrors: cleanErrors,
|
|
199
|
-
cleanErrorForField: cleanErrorForField,
|
|
200
|
-
resetErrors: resetErrors
|
|
201
|
-
};
|
|
202
|
-
});
|
|
203
|
-
var removeFieldError = (0, _utils.useEventCallback)(function (name) {
|
|
204
|
-
/**
|
|
205
|
-
* when this function is called when the children component is unmount, it's an old render frame
|
|
206
|
-
* so use Ref to get future error
|
|
207
|
-
*/
|
|
208
|
-
var formError = (0, _omit.default)(realFormErrorRef.current, [name]);
|
|
209
|
-
realFormErrorRef.current = formError;
|
|
210
|
-
setFormError(formError);
|
|
211
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
212
|
-
});
|
|
213
92
|
var removeFieldValue = (0, _utils.useEventCallback)(function (name) {
|
|
214
|
-
|
|
215
|
-
* when this function is called when the children component is unmount, it's an old render frame
|
|
216
|
-
* so use Ref to get future value
|
|
217
|
-
*/
|
|
218
|
-
var formValue = (0, _omit.default)(realFormValueRef.current, [name]);
|
|
219
|
-
realFormValueRef.current = formValue;
|
|
220
|
-
setFormValue(formValue);
|
|
93
|
+
var formValue = onRemoveValue(name);
|
|
221
94
|
onChange === null || onChange === void 0 ? void 0 : onChange(formValue);
|
|
222
95
|
});
|
|
96
|
+
var removeFieldError = (0, _utils.useEventCallback)(function (name) {
|
|
97
|
+
onRemoveError(name);
|
|
98
|
+
});
|
|
223
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);
|
|
224
103
|
if (disabled || readOnly || plaintext) {
|
|
225
104
|
return;
|
|
226
105
|
}
|
|
227
|
-
|
|
228
|
-
event
|
|
229
|
-
var checkStatus = check();
|
|
230
|
-
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);
|
|
231
108
|
});
|
|
232
|
-
var
|
|
233
|
-
|
|
234
|
-
var formError = (0, _extends6.default)({}, realFormError, (_extends4 = {}, _extends4[name] = errorMessage, _extends4));
|
|
235
|
-
setFormError(formError);
|
|
236
|
-
onError === null || onError === void 0 ? void 0 : onError(formError);
|
|
237
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
|
|
109
|
+
var onFieldError = (0, _utils.useEventCallback)(function (name, checkResult) {
|
|
110
|
+
setFieldError(name, checkResult);
|
|
238
111
|
});
|
|
239
|
-
var
|
|
112
|
+
var onFieldSuccess = (0, _utils.useEventCallback)(function (name) {
|
|
240
113
|
removeFieldError(name);
|
|
241
114
|
});
|
|
242
|
-
var
|
|
243
|
-
var
|
|
244
|
-
if (nestedField) {
|
|
245
|
-
return (0, _set.default)((0, _extends6.default)({}, formValue), fieldName, fieldValue);
|
|
246
|
-
}
|
|
247
|
-
return (0, _extends6.default)({}, formValue, (_extends5 = {}, _extends5[fieldName] = fieldValue, _extends5));
|
|
248
|
-
};
|
|
249
|
-
var handleFieldChange = (0, _utils.useEventCallback)(function (name, value, event) {
|
|
250
|
-
var nextFormValue = setFieldValue(realFormValue, name, value);
|
|
251
|
-
setFormValue(nextFormValue);
|
|
115
|
+
var onFieldChange = (0, _utils.useEventCallback)(function (name, value, event) {
|
|
116
|
+
var nextFormValue = setFieldValue(name, value);
|
|
252
117
|
onChange === null || onChange === void 0 ? void 0 : onChange(nextFormValue, event);
|
|
253
118
|
});
|
|
254
|
-
var
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
}, [getCombinedModel, checkTrigger, errorFromContext, readOnly, plaintext, disabled, realFormError, nestedField, removeFieldValue, removeFieldError, pushFieldRule, removeFieldRule, handleFieldChange, handleFieldError, handleFieldSuccess]);
|
|
274
|
-
return /*#__PURE__*/_react.default.createElement("form", (0, _extends6.default)({}, rest, {
|
|
275
|
-
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,
|
|
276
138
|
onSubmit: handleSubmit,
|
|
277
139
|
className: classes
|
|
278
|
-
}), /*#__PURE__*/_react.default.createElement(_FormContext.
|
|
140
|
+
}), /*#__PURE__*/_react.default.createElement(_FormContext.FormProvider, {
|
|
279
141
|
value: formContextValue
|
|
280
|
-
}, /*#__PURE__*/_react.default.createElement(_FormContext.
|
|
281
|
-
value:
|
|
142
|
+
}, /*#__PURE__*/_react.default.createElement(_FormContext.FormValueProvider, {
|
|
143
|
+
value: formValue
|
|
282
144
|
}, children)));
|
|
283
145
|
});
|
|
284
146
|
Form.Control = _FormControl.default;
|
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { TypeAttributes } from '../@types/common';
|
|
3
|
-
import type { Schema } from 'schema-typed';
|
|
4
|
-
import type { FieldRuleType } from './useSchemaModel';
|
|
5
|
-
|
|
3
|
+
import type { Schema, CheckResult } from 'schema-typed';
|
|
4
|
+
import type { FieldRuleType } from './hooks/useSchemaModel';
|
|
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;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FormProps } from '
|
|
1
|
+
import type { FormProps } from '../Form';
|
|
2
2
|
/**
|
|
3
3
|
* Take <Form> props and return className for <Form> styles
|
|
4
4
|
*/
|
|
5
|
-
export
|
|
5
|
+
export default function useFormClassNames({ classPrefix, className, fluid, layout, readOnly, plaintext, disabled }: Pick<FormProps, 'classPrefix' | 'className' | 'fluid' | 'layout' | 'readOnly' | 'plaintext' | 'disabled'>): string;
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
"use strict";
|
|
3
3
|
|
|
4
4
|
exports.__esModule = true;
|
|
5
|
-
exports.
|
|
6
|
-
var _utils = require("
|
|
5
|
+
exports.default = useFormClassNames;
|
|
6
|
+
var _utils = require("../../utils");
|
|
7
7
|
/**
|
|
8
8
|
* Take <Form> props and return className for <Form> styles
|
|
9
9
|
*/
|
|
@@ -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 {};
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
5
|
+
exports.__esModule = true;
|
|
6
|
+
exports.default = useFormRef;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _omit = _interopRequireDefault(require("lodash/omit"));
|
|
9
|
+
var _useEventCallback = _interopRequireDefault(require("../../utils/useEventCallback"));
|
|
10
|
+
var _utils = require("../../FormControl/utils");
|
|
11
|
+
function useFormRef(ref, props) {
|
|
12
|
+
var rootRef = (0, _react.useRef)(null);
|
|
13
|
+
var formError = props.formError,
|
|
14
|
+
setFormError = props.setFormError,
|
|
15
|
+
nestedField = props.nestedField,
|
|
16
|
+
check = props.check,
|
|
17
|
+
checkForField = props.checkForField,
|
|
18
|
+
checkAsync = props.checkAsync,
|
|
19
|
+
checkForFieldAsync = props.checkForFieldAsync;
|
|
20
|
+
var cleanErrors = (0, _useEventCallback.default)(function () {
|
|
21
|
+
setFormError({});
|
|
22
|
+
});
|
|
23
|
+
var resetErrors = (0, _useEventCallback.default)(function (formError) {
|
|
24
|
+
if (formError === void 0) {
|
|
25
|
+
formError = {};
|
|
26
|
+
}
|
|
27
|
+
setFormError(formError);
|
|
28
|
+
});
|
|
29
|
+
var cleanErrorForField = (0, _useEventCallback.default)(function (fieldName) {
|
|
30
|
+
setFormError((0, _omit.default)(formError, [nestedField ? (0, _utils.nameToPath)(fieldName) : fieldName]));
|
|
31
|
+
});
|
|
32
|
+
(0, _react.useImperativeHandle)(ref, function () {
|
|
33
|
+
return {
|
|
34
|
+
root: rootRef.current,
|
|
35
|
+
check: check,
|
|
36
|
+
checkForField: checkForField,
|
|
37
|
+
checkAsync: checkAsync,
|
|
38
|
+
checkForFieldAsync: checkForFieldAsync,
|
|
39
|
+
cleanErrors: cleanErrors,
|
|
40
|
+
cleanErrorForField: cleanErrorForField,
|
|
41
|
+
resetErrors: resetErrors
|
|
42
|
+
};
|
|
43
|
+
});
|
|
44
|
+
return rootRef;
|
|
45
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/// <reference types="react" />
|
|
2
|
+
/// <reference types="lodash" />
|
|
3
|
+
import type { CheckResult } from 'schema-typed';
|
|
4
|
+
import { FormInstance } from './useFormRef';
|
|
5
|
+
export interface FormErrorProps {
|
|
6
|
+
ref: React.Ref<FormInstance>;
|
|
7
|
+
formValue: any;
|
|
8
|
+
getCombinedModel: () => any;
|
|
9
|
+
onCheck?: (formError: any) => void;
|
|
10
|
+
onError?: (formError: any) => void;
|
|
11
|
+
nestedField?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export default function useFormValidate(formError: any, props: FormErrorProps): {
|
|
14
|
+
formRef: import("react").RefObject<HTMLFormElement>;
|
|
15
|
+
formError: any;
|
|
16
|
+
check: (...args: any[]) => any;
|
|
17
|
+
setFieldError: (fieldName: string, checkResult: string | CheckResult) => any;
|
|
18
|
+
onRemoveError: (name: string) => import("lodash").Omit<any, string>;
|
|
19
|
+
};
|