rsuite 5.70.2 → 5.71.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/cjs/DatePicker/DatePicker.d.ts +3 -3
- package/cjs/DateRangePicker/DateRangePicker.d.ts +12 -0
- package/cjs/DateRangePicker/DateRangePicker.js +10 -1
- package/cjs/Form/hooks/useFormValidate.d.ts +1 -1
- package/cjs/Form/hooks/useFormValidate.js +7 -6
- package/cjs/Tree/hooks/useFlattenTree.js +7 -1
- package/dist/rsuite.js +7 -7
- package/dist/rsuite.min.js +1 -1
- package/dist/rsuite.min.js.map +1 -1
- package/esm/DatePicker/DatePicker.d.ts +3 -3
- package/esm/DateRangePicker/DateRangePicker.d.ts +12 -0
- package/esm/DateRangePicker/DateRangePicker.js +10 -1
- package/esm/Form/hooks/useFormValidate.d.ts +1 -1
- package/esm/Form/hooks/useFormValidate.js +7 -6
- package/esm/Tree/hooks/useFlattenTree.js +7 -1
- package/package.json +1 -1
|
@@ -101,15 +101,15 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
|
|
|
101
101
|
*/
|
|
102
102
|
shouldDisableSecond?: (second: number, date: Date) => boolean;
|
|
103
103
|
/**
|
|
104
|
-
*
|
|
104
|
+
* Hide specific hour options
|
|
105
105
|
*/
|
|
106
106
|
hideHours?: (hour: number, date: Date) => boolean;
|
|
107
107
|
/**
|
|
108
|
-
*
|
|
108
|
+
* Hide specific minute options
|
|
109
109
|
*/
|
|
110
110
|
hideMinutes?: (minute: number, date: Date) => boolean;
|
|
111
111
|
/**
|
|
112
|
-
*
|
|
112
|
+
* Hide specific second options
|
|
113
113
|
*/
|
|
114
114
|
hideSeconds?: (second: number, date: Date) => boolean;
|
|
115
115
|
/**
|
|
@@ -97,6 +97,18 @@ export interface DateRangePickerProps extends PickerBaseProps<DateRangePickerLoc
|
|
|
97
97
|
* @version 5.69.0
|
|
98
98
|
*/
|
|
99
99
|
calendarSnapping?: boolean;
|
|
100
|
+
/**
|
|
101
|
+
* Hide specific hour options
|
|
102
|
+
*/
|
|
103
|
+
hideHours?: (hour: number, date: Date) => boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Hide specific minute options
|
|
106
|
+
*/
|
|
107
|
+
hideMinutes?: (minute: number, date: Date) => boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Hide specific second options
|
|
110
|
+
*/
|
|
111
|
+
hideSeconds?: (second: number, date: Date) => boolean;
|
|
100
112
|
/**
|
|
101
113
|
* Disabled date
|
|
102
114
|
* @deprecated Use {@link shouldDisableDate} instead
|
|
@@ -3,7 +3,7 @@ import _taggedTemplateLiteralLoose from "@babel/runtime/helpers/esm/taggedTempla
|
|
|
3
3
|
import _extends from "@babel/runtime/helpers/esm/extends";
|
|
4
4
|
import _objectWithoutPropertiesLoose from "@babel/runtime/helpers/esm/objectWithoutPropertiesLoose";
|
|
5
5
|
var _templateObject, _templateObject2;
|
|
6
|
-
var _excluded = ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "calendarSnapping", "defaultCalendarValue", "defaultValue", "plaintext", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "id", "isoWeek", "weekStart", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "readOnly", "showOneCalendar", "showWeekNumbers", "showMeridian", "showHeader", "style", "size", "caretAs", "value", "monthDropdownProps", "onChange", "onClean", "onEnter", "onExit", "onOk", "onSelect", "onShortcutClick", "renderTitle", "renderValue"];
|
|
6
|
+
var _excluded = ["as", "classPrefix", "className", "appearance", "editable", "cleanable", "character", "calendarSnapping", "defaultCalendarValue", "defaultValue", "plaintext", "disabled", "disabledDate", "shouldDisableDate", "format", "hoverRange", "id", "isoWeek", "weekStart", "limitEndYear", "limitStartYear", "locale", "loading", "label", "menuClassName", "menuStyle", "oneTap", "placeholder", "placement", "ranges", "readOnly", "showOneCalendar", "showWeekNumbers", "showMeridian", "showHeader", "style", "size", "caretAs", "value", "monthDropdownProps", "hideHours", "hideMinutes", "hideSeconds", "onChange", "onClean", "onEnter", "onExit", "onOk", "onSelect", "onShortcutClick", "renderTitle", "renderValue"];
|
|
7
7
|
import React, { useEffect, useRef, useState, useMemo } from 'react';
|
|
8
8
|
import isNil from 'lodash/isNil';
|
|
9
9
|
import omit from 'lodash/omit';
|
|
@@ -89,6 +89,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
89
89
|
caretAsProp = props.caretAs,
|
|
90
90
|
valueProp = props.value,
|
|
91
91
|
monthDropdownProps = props.monthDropdownProps,
|
|
92
|
+
hideHours = props.hideHours,
|
|
93
|
+
hideMinutes = props.hideMinutes,
|
|
94
|
+
hideSeconds = props.hideSeconds,
|
|
92
95
|
onChange = props.onChange,
|
|
93
96
|
onClean = props.onClean,
|
|
94
97
|
onEnter = props.onEnter,
|
|
@@ -624,6 +627,9 @@ var DateRangePicker = /*#__PURE__*/React.forwardRef(function (props, ref) {
|
|
|
624
627
|
value: selectedDates,
|
|
625
628
|
monthDropdownProps: monthDropdownProps,
|
|
626
629
|
hoverRangeValue: hoverDateRange !== null && hoverDateRange !== void 0 ? hoverDateRange : undefined,
|
|
630
|
+
hideHours: hideHours,
|
|
631
|
+
hideMinutes: hideMinutes,
|
|
632
|
+
hideSeconds: hideSeconds,
|
|
627
633
|
disabledDate: disableCalendarDate,
|
|
628
634
|
onSelect: handleSelectDate,
|
|
629
635
|
onChangeCalendarMonth: onChangeCalendarMonth,
|
|
@@ -818,6 +824,9 @@ DateRangePicker.propTypes = _extends({}, pickerPropTypes, {
|
|
|
818
824
|
defaultCalendarValue: PropTypes.arrayOf(PropTypes.instanceOf(Date)),
|
|
819
825
|
hoverRange: PropTypes.oneOfType([oneOf(['week', 'month']), PropTypes.func]),
|
|
820
826
|
format: PropTypes.string,
|
|
827
|
+
hideHours: PropTypes.func,
|
|
828
|
+
hideMinutes: PropTypes.func,
|
|
829
|
+
hideSeconds: PropTypes.func,
|
|
821
830
|
isoWeek: PropTypes.bool,
|
|
822
831
|
weekStart: PropTypes.oneOf([0, 1, 2, 3, 4, 5, 6]),
|
|
823
832
|
oneTap: PropTypes.bool,
|
|
@@ -6,7 +6,7 @@ export interface FormErrorProps {
|
|
|
6
6
|
onError?: (formError: any) => void;
|
|
7
7
|
nestedField?: boolean;
|
|
8
8
|
}
|
|
9
|
-
export default function useFormValidate(
|
|
9
|
+
export default function useFormValidate(_formError: any, props: FormErrorProps): {
|
|
10
10
|
formError: any;
|
|
11
11
|
check: (...args: any[]) => any;
|
|
12
12
|
checkForField: (...args: any[]) => any;
|
|
@@ -8,13 +8,13 @@ import omit from 'lodash/omit';
|
|
|
8
8
|
import set from 'lodash/set';
|
|
9
9
|
import { useControlled, useEventCallback } from "../../internals/hooks/index.js";
|
|
10
10
|
import { nameToPath } from "../../FormControl/utils.js";
|
|
11
|
-
export default function useFormValidate(
|
|
11
|
+
export default function useFormValidate(_formError, props) {
|
|
12
12
|
var formValue = props.formValue,
|
|
13
13
|
getCombinedModel = props.getCombinedModel,
|
|
14
14
|
onCheck = props.onCheck,
|
|
15
15
|
onError = props.onError,
|
|
16
16
|
nestedField = props.nestedField;
|
|
17
|
-
var _useControlled = useControlled(
|
|
17
|
+
var _useControlled = useControlled(_formError, {}),
|
|
18
18
|
realFormError = _useControlled[0],
|
|
19
19
|
setFormError = _useControlled[1];
|
|
20
20
|
var checkOptions = {
|
|
@@ -33,7 +33,8 @@ export default function useFormValidate(formError, props) {
|
|
|
33
33
|
var errorCount = 0;
|
|
34
34
|
var model = getCombinedModel();
|
|
35
35
|
var checkField = function checkField(key, type, value, formErrorObj) {
|
|
36
|
-
|
|
36
|
+
model.setSchemaOptionsForAllType(formValue || {});
|
|
37
|
+
var checkResult = type.check(value, formValue, key);
|
|
37
38
|
if (checkResult.hasError === true) {
|
|
38
39
|
errorCount += 1;
|
|
39
40
|
formErrorObj[key] = (checkResult === null || checkResult === void 0 ? void 0 : checkResult.errorMessage) || checkResult;
|
|
@@ -68,7 +69,7 @@ export default function useFormValidate(formError, props) {
|
|
|
68
69
|
var checkFieldForNextValue = useEventCallback(function (fieldName, nextValue, callback) {
|
|
69
70
|
var model = getCombinedModel();
|
|
70
71
|
var resultOfCurrentField = model.checkForField(fieldName, nextValue, checkOptions);
|
|
71
|
-
var nextFormError = _extends({},
|
|
72
|
+
var nextFormError = _extends({}, realFormError);
|
|
72
73
|
/**
|
|
73
74
|
* when using proxy of schema-typed, we need to use getCheckResult to get all errors,
|
|
74
75
|
* but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,
|
|
@@ -151,7 +152,7 @@ export default function useFormValidate(formError, props) {
|
|
|
151
152
|
var checkFieldAsyncForNextValue = useEventCallback(function (fieldName, nextValue) {
|
|
152
153
|
var model = getCombinedModel();
|
|
153
154
|
return model.checkForFieldAsync(fieldName, nextValue, checkOptions).then(function (resultOfCurrentField) {
|
|
154
|
-
var nextFormError = _extends({},
|
|
155
|
+
var nextFormError = _extends({}, realFormError);
|
|
155
156
|
/**
|
|
156
157
|
* when using proxy of schema-typed, we need to use getCheckResult to get all errors,
|
|
157
158
|
* but if nestedField is used, it is impossible to distinguish whether the nested object has an error here,
|
|
@@ -220,7 +221,7 @@ export default function useFormValidate(formError, props) {
|
|
|
220
221
|
setFormError(formError);
|
|
221
222
|
});
|
|
222
223
|
var cleanErrorForField = useEventCallback(function (fieldName) {
|
|
223
|
-
setFormError(omit(
|
|
224
|
+
setFormError(omit(realFormError, [nestedField ? nameToPath(fieldName) : fieldName]));
|
|
224
225
|
});
|
|
225
226
|
return {
|
|
226
227
|
formError: realFormError,
|
|
@@ -85,8 +85,14 @@ function useFlattenTree(data, options) {
|
|
|
85
85
|
updateTreeNodeCheckState(value);
|
|
86
86
|
forceUpdate();
|
|
87
87
|
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Add a dependency on data, because when loading data asynchronously through getChildren,
|
|
91
|
+
* data may change and the node status needs to be updated.
|
|
92
|
+
* @see https://github.com/rsuite/rsuite/issues/3973
|
|
93
|
+
*/
|
|
88
94
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
89
|
-
}, [value]);
|
|
95
|
+
}, [value, data]);
|
|
90
96
|
return flattenedNodes.current;
|
|
91
97
|
}
|
|
92
98
|
export default useFlattenTree;
|