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.
- package/Avatar/styles/index.css +74 -3
- package/Avatar/styles/index.less +25 -1
- package/Avatar/styles/mixin.less +8 -0
- package/AvatarGroup/styles/index.css +2 -0
- package/AvatarGroup/styles/index.less +2 -0
- package/CHANGELOG.md +29 -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/Drawer/styles/index.css +4 -0
- package/Drawer/styles/index.less +5 -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/Avatar/Avatar.d.ts +30 -5
- package/cjs/Avatar/Avatar.js +56 -22
- package/cjs/Avatar/AvatarIcon.d.ts +3 -0
- package/cjs/Avatar/AvatarIcon.js +24 -0
- package/cjs/Avatar/useImage.d.ts +39 -0
- package/cjs/Avatar/useImage.js +74 -0
- package/cjs/AvatarGroup/AvatarGroup.d.ts +15 -6
- package/cjs/AvatarGroup/AvatarGroup.js +12 -12
- package/cjs/Checkbox/Checkbox.js +1 -1
- package/cjs/DateInput/DateField.js +5 -0
- package/cjs/Form/Form.js +40 -56
- package/cjs/Form/FormContext.d.ts +1 -1
- 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/useFormError.d.ts +6 -0
- package/cjs/Form/hooks/useFormError.js +31 -0
- package/cjs/Form/hooks/useFormValue.d.ts +6 -0
- package/cjs/Form/hooks/useFormValue.js +31 -0
- package/cjs/Form/index.d.ts +1 -1
- package/cjs/Form/index.js +3 -9
- package/cjs/FormControl/FormControl.js +1 -1
- package/cjs/FormControl/useRegisterModel.d.ts +1 -1
- package/cjs/Modal/Modal.js +36 -21
- 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/internals/Overlay/Modal.js +2 -1
- package/dist/rsuite-no-reset-rtl.css +124 -9
- 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 +124 -9
- package/dist/rsuite-no-reset.min.css +1 -1
- package/dist/rsuite-no-reset.min.css.map +1 -1
- package/dist/rsuite-rtl.css +124 -9
- package/dist/rsuite-rtl.min.css +1 -1
- package/dist/rsuite-rtl.min.css.map +1 -1
- package/dist/rsuite.css +124 -9
- package/dist/rsuite.js +122 -36
- 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.map +1 -1
- package/esm/Avatar/Avatar.d.ts +30 -5
- package/esm/Avatar/Avatar.js +58 -24
- package/esm/Avatar/AvatarIcon.d.ts +3 -0
- package/esm/Avatar/AvatarIcon.js +18 -0
- package/esm/Avatar/useImage.d.ts +39 -0
- package/esm/Avatar/useImage.js +69 -0
- package/esm/AvatarGroup/AvatarGroup.d.ts +15 -6
- package/esm/AvatarGroup/AvatarGroup.js +12 -12
- package/esm/Checkbox/Checkbox.js +1 -1
- package/esm/DateInput/DateField.js +5 -0
- package/esm/Form/Form.js +40 -56
- package/esm/Form/FormContext.d.ts +1 -1
- 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/useFormError.d.ts +6 -0
- package/esm/Form/hooks/useFormError.js +26 -0
- package/esm/Form/hooks/useFormValue.d.ts +6 -0
- package/esm/Form/hooks/useFormValue.js +26 -0
- package/esm/Form/index.d.ts +1 -1
- package/esm/Form/index.js +1 -1
- package/esm/FormControl/FormControl.js +1 -1
- package/esm/FormControl/useRegisterModel.d.ts +1 -1
- package/esm/Modal/Modal.js +36 -21
- 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/internals/Overlay/Modal.js +2 -1
- package/package.json +2 -2
- package/styles/color-modes/dark.less +2 -0
- package/styles/color-modes/high-contrast.less +2 -0
- package/styles/color-modes/light.less +2 -0
- package/styles/variables.less +12 -20
- /package/cjs/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
- /package/cjs/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +0 -0
- /package/esm/Form/{useSchemaModel.d.ts → hooks/useSchemaModel.d.ts} +0 -0
- /package/esm/Form/{useSchemaModel.js → hooks/useSchemaModel.js} +0 -0
|
@@ -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 {
|
|
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
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Render all avatars as stacks
|
|
7
|
+
*/
|
|
5
8
|
stack?: boolean;
|
|
6
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Set the spacing of the avatar
|
|
11
|
+
*/
|
|
7
12
|
spacing?: number;
|
|
8
|
-
/**
|
|
9
|
-
|
|
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?:
|
|
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
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
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
|
-
},
|
|
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 = {
|
package/cjs/Checkbox/Checkbox.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
39
|
-
|
|
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.
|
|
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
|
|
71
|
-
|
|
72
|
-
setFormValue =
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
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.
|
|
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
|
|
119
|
-
setFormError(
|
|
120
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(
|
|
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(
|
|
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.
|
|
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
|
|
171
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(
|
|
172
|
-
setFormError(
|
|
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(
|
|
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)(
|
|
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
|
|
235
|
-
setFormError(
|
|
236
|
-
onError === null || onError === void 0 ? void 0 : onError(
|
|
237
|
-
onCheck === null || onCheck === void 0 ? void 0 : onCheck(
|
|
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(
|
|
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:
|
|
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,
|
|
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:
|
|
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 '
|
|
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,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,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
|
+
}
|
package/cjs/Form/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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;
|