rsuite 5.58.1 → 5.59.1

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.
Files changed (105) hide show
  1. package/Avatar/styles/index.css +74 -3
  2. package/Avatar/styles/index.less +25 -1
  3. package/Avatar/styles/mixin.less +8 -0
  4. package/AvatarGroup/styles/index.css +2 -0
  5. package/AvatarGroup/styles/index.less +2 -0
  6. package/CHANGELOG.md +29 -0
  7. package/CheckPicker/styles/index.css +2 -0
  8. package/CheckTree/styles/index.css +2 -0
  9. package/CheckTreePicker/styles/index.css +2 -0
  10. package/Checkbox/styles/index.css +2 -0
  11. package/Checkbox/styles/index.less +2 -0
  12. package/Drawer/styles/index.css +4 -0
  13. package/Drawer/styles/index.less +5 -0
  14. package/MultiCascadeTree/styles/index.css +2 -0
  15. package/MultiCascader/styles/index.css +2 -0
  16. package/Placeholder/styles/index.css +42 -6
  17. package/Placeholder/styles/index.less +18 -9
  18. package/Placeholder/styles/mixin.less +7 -0
  19. package/Sidenav/styles/index.css +3 -0
  20. package/Sidenav/styles/index.less +4 -0
  21. package/TagInput/styles/index.css +2 -0
  22. package/TagPicker/styles/index.css +2 -0
  23. package/cjs/Avatar/Avatar.d.ts +30 -5
  24. package/cjs/Avatar/Avatar.js +56 -22
  25. package/cjs/Avatar/AvatarIcon.d.ts +3 -0
  26. package/cjs/Avatar/AvatarIcon.js +24 -0
  27. package/cjs/Avatar/useImage.d.ts +39 -0
  28. package/cjs/Avatar/useImage.js +74 -0
  29. package/cjs/AvatarGroup/AvatarGroup.d.ts +15 -6
  30. package/cjs/AvatarGroup/AvatarGroup.js +12 -12
  31. package/cjs/Checkbox/Checkbox.js +1 -1
  32. package/cjs/DateInput/DateField.js +5 -0
  33. package/cjs/Form/Form.js +40 -56
  34. package/cjs/Form/FormContext.d.ts +1 -1
  35. package/cjs/Form/{useFormClassNames.d.ts → hooks/useFormClassNames.d.ts} +2 -2
  36. package/cjs/Form/{useFormClassNames.js → hooks/useFormClassNames.js} +2 -2
  37. package/cjs/Form/hooks/useFormError.d.ts +6 -0
  38. package/cjs/Form/hooks/useFormError.js +31 -0
  39. package/cjs/Form/hooks/useFormValue.d.ts +6 -0
  40. package/cjs/Form/hooks/useFormValue.js +31 -0
  41. package/cjs/Form/index.d.ts +1 -1
  42. package/cjs/Form/index.js +3 -9
  43. package/cjs/FormControl/FormControl.js +1 -1
  44. package/cjs/FormControl/useRegisterModel.d.ts +1 -1
  45. package/cjs/Modal/Modal.js +36 -21
  46. package/cjs/Placeholder/PlaceholderGraph.d.ts +13 -1
  47. package/cjs/Placeholder/PlaceholderGrid.d.ts +27 -1
  48. package/cjs/Placeholder/PlaceholderGrid.js +10 -13
  49. package/cjs/Placeholder/PlaceholderParagraph.d.ts +24 -1
  50. package/cjs/Placeholder/PlaceholderParagraph.js +13 -9
  51. package/cjs/internals/Overlay/Modal.js +2 -1
  52. package/dist/rsuite-no-reset-rtl.css +124 -9
  53. package/dist/rsuite-no-reset-rtl.min.css +1 -1
  54. package/dist/rsuite-no-reset-rtl.min.css.map +1 -1
  55. package/dist/rsuite-no-reset.css +124 -9
  56. package/dist/rsuite-no-reset.min.css +1 -1
  57. package/dist/rsuite-no-reset.min.css.map +1 -1
  58. package/dist/rsuite-rtl.css +124 -9
  59. package/dist/rsuite-rtl.min.css +1 -1
  60. package/dist/rsuite-rtl.min.css.map +1 -1
  61. package/dist/rsuite.css +124 -9
  62. package/dist/rsuite.js +122 -36
  63. package/dist/rsuite.js.map +1 -1
  64. package/dist/rsuite.min.css +1 -1
  65. package/dist/rsuite.min.css.map +1 -1
  66. package/dist/rsuite.min.js +1 -1
  67. package/dist/rsuite.min.js.map +1 -1
  68. package/esm/Avatar/Avatar.d.ts +30 -5
  69. package/esm/Avatar/Avatar.js +58 -24
  70. package/esm/Avatar/AvatarIcon.d.ts +3 -0
  71. package/esm/Avatar/AvatarIcon.js +18 -0
  72. package/esm/Avatar/useImage.d.ts +39 -0
  73. package/esm/Avatar/useImage.js +69 -0
  74. package/esm/AvatarGroup/AvatarGroup.d.ts +15 -6
  75. package/esm/AvatarGroup/AvatarGroup.js +12 -12
  76. package/esm/Checkbox/Checkbox.js +1 -1
  77. package/esm/DateInput/DateField.js +5 -0
  78. package/esm/Form/Form.js +40 -56
  79. package/esm/Form/FormContext.d.ts +1 -1
  80. package/esm/Form/{useFormClassNames.d.ts → hooks/useFormClassNames.d.ts} +2 -2
  81. package/esm/Form/{useFormClassNames.js → hooks/useFormClassNames.js} +2 -2
  82. package/esm/Form/hooks/useFormError.d.ts +6 -0
  83. package/esm/Form/hooks/useFormError.js +26 -0
  84. package/esm/Form/hooks/useFormValue.d.ts +6 -0
  85. package/esm/Form/hooks/useFormValue.js +26 -0
  86. package/esm/Form/index.d.ts +1 -1
  87. package/esm/Form/index.js +1 -1
  88. package/esm/FormControl/FormControl.js +1 -1
  89. package/esm/FormControl/useRegisterModel.d.ts +1 -1
  90. package/esm/Modal/Modal.js +36 -21
  91. package/esm/Placeholder/PlaceholderGraph.d.ts +13 -1
  92. package/esm/Placeholder/PlaceholderGrid.d.ts +27 -1
  93. package/esm/Placeholder/PlaceholderGrid.js +10 -13
  94. package/esm/Placeholder/PlaceholderParagraph.d.ts +24 -1
  95. package/esm/Placeholder/PlaceholderParagraph.js +12 -8
  96. package/esm/internals/Overlay/Modal.js +2 -1
  97. package/package.json +2 -2
  98. package/styles/color-modes/dark.less +2 -0
  99. package/styles/color-modes/high-contrast.less +2 -0
  100. package/styles/color-modes/light.less +2 -0
  101. package/styles/variables.less +12 -20
  102. /package/cjs/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
  103. /package/cjs/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +0 -0
  104. /package/esm/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
  105. /package/esm/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +0 -0
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ declare const AvatarIcon: (props: React.HTMLAttributes<SVGElement>) => JSX.Element;
3
+ export default AvatarIcon;
@@ -0,0 +1,24 @@
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 _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _react = _interopRequireDefault(require("react"));
9
+ var AvatarIcon = function AvatarIcon(props) {
10
+ return /*#__PURE__*/_react.default.createElement("svg", (0, _extends2.default)({
11
+ role: "img",
12
+ "aria-label": "Avatar",
13
+ stroke: "currentColor",
14
+ fill: "currentColor",
15
+ strokeWidth: "0",
16
+ viewBox: "0 0 448 512",
17
+ height: "60%",
18
+ width: "60%"
19
+ }, props), /*#__PURE__*/_react.default.createElement("path", {
20
+ d: "M224 256A128 128 0 1 0 224 0a128 128 0 1 0 0 256zm-45.7 48C79.8 304 0 383.8 0 482.3C0 498.7 13.3 512 29.7 512H418.3c16.4 0 29.7-13.3 29.7-29.7C448 383.8 368.2 304 269.7 304H178.3z"
21
+ }));
22
+ };
23
+ var _default = AvatarIcon;
24
+ exports.default = _default;
@@ -0,0 +1,39 @@
1
+ import { ImgHTMLAttributes } from 'react';
2
+ interface UseImageProps {
3
+ /**
4
+ * The image `src` attribute
5
+ */
6
+ src?: string;
7
+ /**
8
+ * The image `srcSet` attribute
9
+ */
10
+ srcSet?: string;
11
+ /**
12
+ * The image `sizes` attribute
13
+ */
14
+ sizes?: string;
15
+ /**
16
+ * The image `crossOrigin` attribute
17
+ */
18
+ crossOrigin?: ImgHTMLAttributes<HTMLImageElement>['crossOrigin'];
19
+ /**
20
+ * Callback fired when the image failed to load.
21
+ */
22
+ onError?: OnErrorEventHandler;
23
+ }
24
+ declare type Status = 'pending' | 'loading' | 'error' | 'loaded';
25
+ /**
26
+ * A hook that loads an image and returns the status of the image.
27
+ *
28
+ * @example
29
+ * ```jsx
30
+ * const { loaded } = useImage({ src:'https://example.com/image.jpg' });
31
+ *
32
+ * return loaded ? <img src="https://example.com/image.jpg" /> : <Placeholder />;
33
+ * ```
34
+ */
35
+ declare const useImage: (props: UseImageProps) => {
36
+ loaded: boolean;
37
+ status: Status;
38
+ };
39
+ export default useImage;
@@ -0,0 +1,74 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ exports.__esModule = true;
5
+ exports.default = void 0;
6
+ var _react = require("react");
7
+ var _utils = require("../utils");
8
+ /**
9
+ * A hook that loads an image and returns the status of the image.
10
+ *
11
+ * @example
12
+ * ```jsx
13
+ * const { loaded } = useImage({ src:'https://example.com/image.jpg' });
14
+ *
15
+ * return loaded ? <img src="https://example.com/image.jpg" /> : <Placeholder />;
16
+ * ```
17
+ */
18
+ var useImage = function useImage(props) {
19
+ var src = props.src,
20
+ srcSet = props.srcSet,
21
+ sizes = props.sizes,
22
+ crossOrigin = props.crossOrigin,
23
+ onError = props.onError;
24
+ var _useState = (0, _react.useState)('pending'),
25
+ status = _useState[0],
26
+ setStatus = _useState[1];
27
+ var imgRef = (0, _react.useRef)(null);
28
+ var flush = function flush() {
29
+ if (imgRef.current) {
30
+ imgRef.current.onload = null;
31
+ imgRef.current.onerror = null;
32
+ imgRef.current = null;
33
+ }
34
+ };
35
+ var handleLoad = (0, _react.useCallback)(function () {
36
+ setStatus('loaded');
37
+ flush();
38
+ }, []);
39
+ var handleError = (0, _react.useCallback)(function (event) {
40
+ setStatus('error');
41
+ flush();
42
+ onError === null || onError === void 0 ? void 0 : onError(event);
43
+ }, [onError]);
44
+ (0, _react.useEffect)(function () {
45
+ setStatus(src ? 'loading' : 'pending');
46
+ }, [src]);
47
+ var loadImge = (0, _react.useCallback)(function () {
48
+ if (!src) {
49
+ return;
50
+ }
51
+ var img = new Image();
52
+ img.onload = handleLoad;
53
+ img.onerror = handleError;
54
+ if (src) img.src = src;
55
+ if (srcSet) img.srcset = srcSet;
56
+ if (sizes) img.sizes = sizes;
57
+ if (crossOrigin) img.crossOrigin = crossOrigin;
58
+ imgRef.current = img;
59
+ }, [crossOrigin, handleError, handleLoad, sizes, src, srcSet]);
60
+ (0, _utils.useIsomorphicLayoutEffect)(function () {
61
+ if (status === 'loading') {
62
+ loadImge();
63
+ }
64
+ }, [loadImge, status]);
65
+ (0, _react.useEffect)(function () {
66
+ return flush;
67
+ }, []);
68
+ return {
69
+ loaded: status === 'loaded',
70
+ status: status
71
+ };
72
+ };
73
+ var _default = useImage;
74
+ exports.default = _default;
@@ -1,15 +1,24 @@
1
1
  import React from 'react';
2
- import { TypeAttributes, WithAsProps, RsRefForwardingComponent } from '../@types/common';
2
+ import { WithAsProps, RsRefForwardingComponent } from '../@types/common';
3
+ export declare type Size = 'xxl' | 'xl' | 'lg' | 'md' | 'sm' | 'xs';
3
4
  export interface AvatarGroupProps extends WithAsProps {
4
- /** Render all avatars as stacks */
5
+ /**
6
+ * Render all avatars as stacks
7
+ */
5
8
  stack?: boolean;
6
- /** Set the spacing of the avatar */
9
+ /**
10
+ * Set the spacing of the avatar
11
+ */
7
12
  spacing?: number;
8
- /** Set the size of all avatars. */
9
- size?: TypeAttributes.Size;
13
+ /**
14
+ * Set the size of all avatars.
15
+ * @version xxl and xs added in v5.59.0
16
+ */
17
+ size?: Size;
10
18
  }
11
19
  export declare const AvatarGroupContext: React.Context<{
12
- size?: TypeAttributes.Size | undefined;
20
+ size?: Size | undefined;
21
+ spacing?: number | undefined;
13
22
  }>;
14
23
  /**
15
24
  * The AvatarGroup component is used to represent a collection of avatars.
@@ -5,7 +5,7 @@ var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWild
5
5
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
6
  exports.__esModule = true;
7
7
  exports.default = exports.AvatarGroupContext = void 0;
8
- var _extends3 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
8
+ var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
9
9
  var _objectWithoutPropertiesLoose2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutPropertiesLoose"));
10
10
  var _react = _interopRequireWildcard(require("react"));
11
11
  var _propTypes = _interopRequireDefault(require("prop-types"));
@@ -28,9 +28,8 @@ var AvatarGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
28
28
  children = props.children,
29
29
  stack = props.stack,
30
30
  size = props.size,
31
- rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "spacing", "className", "children", "stack", "size"]);
32
- var _useCustom = (0, _utils.useCustom)('AvatarGroup'),
33
- rtl = _useCustom.rtl;
31
+ style = props.style,
32
+ rest = (0, _objectWithoutPropertiesLoose2.default)(props, ["as", "classPrefix", "spacing", "className", "children", "stack", "size", "style"]);
34
33
  var _useClassNames = (0, _utils.useClassNames)(classPrefix),
35
34
  withClassPrefix = _useClassNames.withClassPrefix,
36
35
  merge = _useClassNames.merge;
@@ -42,17 +41,18 @@ var AvatarGroup = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
42
41
  size: size
43
42
  };
44
43
  }, [size]);
45
- return /*#__PURE__*/_react.default.createElement(Component, (0, _extends3.default)({}, rest, {
44
+ var styles = (0, _utils.isIE)() ? style : (0, _extends2.default)({}, style, {
45
+ gap: spacing
46
+ });
47
+ return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({
48
+ role: "group"
49
+ }, rest, {
46
50
  ref: ref,
47
- className: classes
51
+ className: classes,
52
+ style: styles
48
53
  }), /*#__PURE__*/_react.default.createElement(AvatarGroupContext.Provider, {
49
54
  value: contextValue
50
- }, spacing ? _react.default.Children.map(children, function (child) {
51
- var _extends2;
52
- return /*#__PURE__*/_react.default.cloneElement(child, {
53
- style: (0, _extends3.default)((_extends2 = {}, _extends2[rtl ? 'marginLeft' : 'marginRight'] = spacing, _extends2), child.props.style)
54
- });
55
- }) : children));
55
+ }, children));
56
56
  });
57
57
  AvatarGroup.displayName = 'AvatarGroup';
58
58
  AvatarGroup.propTypes = {
@@ -137,7 +137,7 @@ var Checkbox = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
137
137
  })), /*#__PURE__*/_react.default.createElement("span", {
138
138
  className: prefix(_templateObject2 || (_templateObject2 = (0, _taggedTemplateLiteralLoose2.default)(["inner"]))),
139
139
  "aria-hidden": true,
140
- role: "presentation"
140
+ "data-testid": "checkbox-control-inner"
141
141
  }));
142
142
  return /*#__PURE__*/_react.default.createElement(Component, (0, _extends2.default)({}, restProps, {
143
143
  ref: ref,
@@ -180,6 +180,11 @@ var useDateField = function useDateField(format, localize, date) {
180
180
  if (isEmptyValue(type, value)) {
181
181
  return null;
182
182
  }
183
+
184
+ // Invalid Date
185
+ return new Date('');
186
+ } else if (type === 'day' && value === 0) {
187
+ // Invalid Date. If the type is day and the value is 0, it is considered an invalid date.
183
188
  return new Date('');
184
189
  }
185
190
  if (type === 'meridian' && typeof hour === 'number') {
package/cjs/Form/Form.js CHANGED
@@ -18,10 +18,12 @@ var _FormControlLabel = _interopRequireDefault(require("../FormControlLabel"));
18
18
  var _FormErrorMessage = _interopRequireDefault(require("../FormErrorMessage"));
19
19
  var _FormGroup = _interopRequireDefault(require("../FormGroup"));
20
20
  var _FormHelpText = _interopRequireDefault(require("../FormHelpText"));
21
- var _useFormClassNames = require("./useFormClassNames");
22
- var _useSchemaModel2 = _interopRequireDefault(require("./useSchemaModel"));
23
21
  var _utils = require("../utils");
24
22
  var _propTypes2 = require("../internals/propTypes");
23
+ var _useSchemaModel2 = _interopRequireDefault(require("./hooks/useSchemaModel"));
24
+ var _useFormError2 = _interopRequireDefault(require("./hooks/useFormError"));
25
+ var _useFormValue2 = _interopRequireDefault(require("./hooks/useFormValue"));
26
+ var _useFormClassNames = _interopRequireDefault(require("./hooks/useFormClassNames"));
25
27
  /**
26
28
  * The `Form` component is a form interface for collecting and validating user input.
27
29
  * @see https://rsuitejs.com/components/form
@@ -35,8 +37,8 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
35
37
  errorFromContext = _props$errorFromConte === void 0 ? true : _props$errorFromConte,
36
38
  _props$formDefaultVal = props.formDefaultValue,
37
39
  formDefaultValue = _props$formDefaultVal === void 0 ? {} : _props$formDefaultVal,
38
- formValue = props.formValue,
39
- formError = props.formError,
40
+ formValueProp = props.formValue,
41
+ formErrorProp = props.formError,
40
42
  fluid = props.fluid,
41
43
  _props$nestedField = props.nestedField,
42
44
  nestedField = _props$nestedField === void 0 ? false : _props$nestedField,
@@ -58,7 +60,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
58
60
  getCombinedModel = _useSchemaModel.getCombinedModel,
59
61
  pushFieldRule = _useSchemaModel.pushFieldRule,
60
62
  removeFieldRule = _useSchemaModel.removeFieldRule;
61
- var classes = (0, _useFormClassNames.useFormClassNames)({
63
+ var classes = (0, _useFormClassNames.default)({
62
64
  classPrefix: classPrefix,
63
65
  className: className,
64
66
  fluid: fluid,
@@ -67,29 +69,25 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
67
69
  plaintext: plaintext,
68
70
  disabled: disabled
69
71
  });
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
-
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;
81
80
  /**
82
81
  * Validate the form data and return a boolean.
83
82
  * The error message after verification is returned in the callback.
84
83
  * @param callback
85
84
  */
86
85
  var check = (0, _utils.useEventCallback)(function (callback) {
87
- var formValue = realFormValue || {};
88
86
  var formError = {};
89
87
  var errorCount = 0;
90
88
  var model = getCombinedModel();
91
- Object.keys(model.spec).forEach(function (key) {
92
- var checkResult = model.checkForField(key, formValue);
89
+ Object.keys(model.getSchemaSpec()).forEach(function (key) {
90
+ var checkResult = model.checkForField(key, formValue || {});
93
91
  if (checkResult.hasError === true) {
94
92
  errorCount += 1;
95
93
  formError[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;
@@ -112,15 +110,14 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
112
110
  */
113
111
  var checkForField = (0, _utils.useEventCallback)(function (fieldName, callback) {
114
112
  var _extends2;
115
- var formValue = realFormValue || {};
116
113
  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);
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);
121
118
  callback === null || callback === void 0 ? void 0 : callback(checkResult);
122
119
  if (checkResult.hasError) {
123
- onError === null || onError === void 0 ? void 0 : onError(formError);
120
+ onError === null || onError === void 0 ? void 0 : onError(nextFormError);
124
121
  }
125
122
  return !checkResult.hasError;
126
123
  });
@@ -129,13 +126,12 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
129
126
  * Check form data asynchronously and return a Promise
130
127
  */
131
128
  var checkAsync = (0, _utils.useEventCallback)(function () {
132
- var formValue = realFormValue || {};
133
129
  var promises = [];
134
130
  var keys = [];
135
131
  var model = getCombinedModel();
136
- Object.keys(model.spec).forEach(function (key) {
132
+ Object.keys(model.getSchemaSpec()).forEach(function (key) {
137
133
  keys.push(key);
138
- promises.push(model.checkForFieldAsync(key, formValue));
134
+ promises.push(model.checkForFieldAsync(key, formValue || {}));
139
135
  });
140
136
  return Promise.all(promises).then(function (values) {
141
137
  var formError = {};
@@ -163,15 +159,14 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
163
159
  * @param fieldName
164
160
  */
165
161
  var checkForFieldAsync = (0, _utils.useEventCallback)(function (fieldName) {
166
- var formValue = realFormValue || {};
167
162
  var model = getCombinedModel();
168
- return model.checkForFieldAsync(fieldName, formValue).then(function (checkResult) {
163
+ return model.checkForFieldAsync(fieldName, formValue || {}).then(function (checkResult) {
169
164
  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);
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);
173
168
  if (checkResult.hasError) {
174
- onError === null || onError === void 0 ? void 0 : onError(formError);
169
+ onError === null || onError === void 0 ? void 0 : onError(nextFormError);
175
170
  }
176
171
  return checkResult;
177
172
  });
@@ -180,7 +175,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
180
175
  setFormError({});
181
176
  });
182
177
  var cleanErrorForField = (0, _utils.useEventCallback)(function (fieldName) {
183
- setFormError((0, _omit.default)(realFormError, [fieldName]));
178
+ setFormError((0, _omit.default)(formError, [fieldName]));
184
179
  });
185
180
  var resetErrors = (0, _utils.useEventCallback)(function (formError) {
186
181
  if (formError === void 0) {
@@ -201,23 +196,12 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
201
196
  };
202
197
  });
203
198
  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;
199
+ var formError = onRemoveError(name);
210
200
  setFormError(formError);
211
201
  onCheck === null || onCheck === void 0 ? void 0 : onCheck(formError);
212
202
  });
213
203
  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);
204
+ var formValue = onRemoveValue(name);
221
205
  onChange === null || onChange === void 0 ? void 0 : onChange(formValue);
222
206
  });
223
207
  var handleSubmit = (0, _utils.useEventCallback)(function (event) {
@@ -231,10 +215,10 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
231
215
  });
232
216
  var handleFieldError = (0, _utils.useEventCallback)(function (name, errorMessage) {
233
217
  var _extends4;
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);
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);
238
222
  });
239
223
  var handleFieldSuccess = (0, _utils.useEventCallback)(function (name) {
240
224
  removeFieldError(name);
@@ -247,7 +231,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
247
231
  return (0, _extends6.default)({}, formValue, (_extends5 = {}, _extends5[fieldName] = fieldValue, _extends5));
248
232
  };
249
233
  var handleFieldChange = (0, _utils.useEventCallback)(function (name, value, event) {
250
- var nextFormValue = setFieldValue(realFormValue, name, value);
234
+ var nextFormValue = setFieldValue(formValue, name, value);
251
235
  setFormValue(nextFormValue);
252
236
  onChange === null || onChange === void 0 ? void 0 : onChange(nextFormValue, event);
253
237
  });
@@ -260,7 +244,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
260
244
  readOnly: readOnly,
261
245
  plaintext: plaintext,
262
246
  disabled: disabled,
263
- formError: realFormError,
247
+ formError: formError,
264
248
  nestedField: nestedField,
265
249
  removeFieldValue: removeFieldValue,
266
250
  removeFieldError: removeFieldError,
@@ -270,7 +254,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
270
254
  onFieldError: handleFieldError,
271
255
  onFieldSuccess: handleFieldSuccess
272
256
  };
273
- }, [getCombinedModel, checkTrigger, errorFromContext, readOnly, plaintext, disabled, realFormError, nestedField, removeFieldValue, removeFieldError, pushFieldRule, removeFieldRule, handleFieldChange, handleFieldError, handleFieldSuccess]);
257
+ }, [getCombinedModel, checkTrigger, errorFromContext, readOnly, plaintext, disabled, formError, nestedField, removeFieldValue, removeFieldError, pushFieldRule, removeFieldRule, handleFieldChange, handleFieldError, handleFieldSuccess]);
274
258
  return /*#__PURE__*/_react.default.createElement("form", (0, _extends6.default)({}, rest, {
275
259
  ref: rootRef,
276
260
  onSubmit: handleSubmit,
@@ -278,7 +262,7 @@ var Form = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
278
262
  }), /*#__PURE__*/_react.default.createElement(_FormContext.default.Provider, {
279
263
  value: formContextValue
280
264
  }, /*#__PURE__*/_react.default.createElement(_FormContext.FormValueContext.Provider, {
281
- value: realFormValue
265
+ value: formValue
282
266
  }, children)));
283
267
  });
284
268
  Form.Control = _FormControl.default;
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import { TypeAttributes } from '../@types/common';
3
3
  import type { Schema } from 'schema-typed';
4
- import type { FieldRuleType } from './useSchemaModel';
4
+ import type { FieldRuleType } from './hooks/useSchemaModel';
5
5
  interface TrulyFormContextValue<T = Record<string, any>, errorMsgType = any, E = {
6
6
  [P in keyof T]?: errorMsgType;
7
7
  }> {
@@ -1,5 +1,5 @@
1
- import type { FormProps } from './Form';
1
+ import type { FormProps } from '../Form';
2
2
  /**
3
3
  * Take <Form> props and return className for <Form> styles
4
4
  */
5
- export declare function useFormClassNames({ classPrefix, className, fluid, layout, readOnly, plaintext, disabled }: Pick<FormProps, 'classPrefix' | 'className' | 'fluid' | 'layout' | 'readOnly' | 'plaintext' | 'disabled'>): string;
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.useFormClassNames = useFormClassNames;
6
- var _utils = require("../utils");
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,6 @@
1
+ /// <reference types="lodash" />
2
+ export default function useFormError(formError: any): {
3
+ formError: any;
4
+ setFormError: (value: any) => void;
5
+ onRemoveError: (name: string) => import("lodash").Omit<any, string>;
6
+ };
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = useFormError;
7
+ var _react = require("react");
8
+ var _omit = _interopRequireDefault(require("lodash/omit"));
9
+ var _utils = require("../../utils");
10
+ function useFormError(formError) {
11
+ var _useControlled = (0, _utils.useControlled)(formError, {}),
12
+ realFormError = _useControlled[0],
13
+ setFormError = _useControlled[1];
14
+ var realFormErrorRef = (0, _react.useRef)(realFormError);
15
+ realFormErrorRef.current = realFormError;
16
+ var onRemoveError = (0, _react.useCallback)(function (name) {
17
+ /**
18
+ * when this function is called when the children component is unmount,
19
+ * it's an old render frame so use Ref to get future error
20
+ */
21
+ var formError = (0, _omit.default)(realFormErrorRef.current, [name]);
22
+ realFormErrorRef.current = formError;
23
+ setFormError(formError);
24
+ return formError;
25
+ }, [setFormError]);
26
+ return {
27
+ formError: realFormError,
28
+ setFormError: setFormError,
29
+ onRemoveError: onRemoveError
30
+ };
31
+ }
@@ -0,0 +1,6 @@
1
+ /// <reference types="lodash" />
2
+ export default function useFormValue(controlledValue: any, formDefaultValue: any): {
3
+ formValue: any;
4
+ setFormValue: (value: any) => void;
5
+ onRemoveValue: (name: string) => import("lodash").Omit<any, string>;
6
+ };
@@ -0,0 +1,31 @@
1
+ 'use client';
2
+ "use strict";
3
+
4
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
+ exports.__esModule = true;
6
+ exports.default = useFormValue;
7
+ var _react = require("react");
8
+ var _omit = _interopRequireDefault(require("lodash/omit"));
9
+ var _utils = require("../../utils");
10
+ function useFormValue(controlledValue, formDefaultValue) {
11
+ var _useControlled = (0, _utils.useControlled)(controlledValue, formDefaultValue),
12
+ formValue = _useControlled[0],
13
+ setFormValue = _useControlled[1];
14
+ var realFormValueRef = (0, _react.useRef)(formValue);
15
+ realFormValueRef.current = formValue;
16
+ var onRemoveValue = (0, _react.useCallback)(function (name) {
17
+ /**
18
+ * when this function is called when the children component is unmount,
19
+ * it's an old render frame so use Ref to get future value
20
+ */
21
+ var formValue = (0, _omit.default)(realFormValueRef.current, [name]);
22
+ realFormValueRef.current = formValue;
23
+ setFormValue(formValue);
24
+ return formValue;
25
+ }, [setFormValue]);
26
+ return {
27
+ formValue: formValue,
28
+ setFormValue: setFormValue,
29
+ onRemoveValue: onRemoveValue
30
+ };
31
+ }
@@ -5,5 +5,5 @@ export type { FormErrorMessageProps } from '../FormErrorMessage';
5
5
  export type { FormControlLabelProps } from '../FormControlLabel';
6
6
  export type { FormHelpTextProps } from '../FormHelpText';
7
7
  export type { FormControlProps } from '../FormControl';
8
- export * from './useFormClassNames';
8
+ export { default as useFormClassNames } from './hooks/useFormClassNames';
9
9
  export default Form;
package/cjs/Form/index.js CHANGED
@@ -3,15 +3,9 @@
3
3
 
4
4
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
5
5
  exports.__esModule = true;
6
- var _exportNames = {};
7
- exports.default = void 0;
6
+ exports.default = exports.useFormClassNames = void 0;
8
7
  var _Form = _interopRequireDefault(require("./Form"));
9
- var _useFormClassNames = require("./useFormClassNames");
10
- Object.keys(_useFormClassNames).forEach(function (key) {
11
- if (key === "default" || key === "__esModule") return;
12
- if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
13
- if (key in exports && exports[key] === _useFormClassNames[key]) return;
14
- exports[key] = _useFormClassNames[key];
15
- });
8
+ var _useFormClassNames = _interopRequireDefault(require("./hooks/useFormClassNames"));
9
+ exports.useFormClassNames = _useFormClassNames.default;
16
10
  var _default = _Form.default;
17
11
  exports.default = _default;
@@ -184,7 +184,7 @@ var FormControl = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {
184
184
  id: controlId ? controlId + "-error-message" : undefined,
185
185
  role: "alert",
186
186
  "aria-relevant": "all",
187
- show: !!messageNode,
187
+ show: fieldHasError,
188
188
  className: prefix(_templateObject || (_templateObject = (0, _taggedTemplateLiteralLoose2.default)(["message-wrapper"]))),
189
189
  placement: errorPlacement
190
190
  }, messageNode));
@@ -1,4 +1,4 @@
1
- import type { FieldRuleType } from '../Form/useSchemaModel';
1
+ import type { FieldRuleType } from '../Form/hooks/useSchemaModel';
2
2
  import type { CheckType } from 'schema-typed';
3
3
  declare function useRegisterModel(name: string, pushFieldRule: (n: string, r: FieldRuleType) => void, removeFieldRule: (n: string) => void, rule?: CheckType<unknown, any>): void;
4
4
  export default useRegisterModel;