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.
@@ -101,15 +101,15 @@ export interface DatePickerProps extends PickerBaseProps<DatePickerLocale>, Form
101
101
  */
102
102
  shouldDisableSecond?: (second: number, date: Date) => boolean;
103
103
  /**
104
- * Hidden hours on the time view
104
+ * Hide specific hour options
105
105
  */
106
106
  hideHours?: (hour: number, date: Date) => boolean;
107
107
  /**
108
- * Hidden minutes on the time view
108
+ * Hide specific minute options
109
109
  */
110
110
  hideMinutes?: (minute: number, date: Date) => boolean;
111
111
  /**
112
- * Hidden seconds on the time view
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(formError: any, props: FormErrorProps): {
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(formError, props) {
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(formError, {}),
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
- var checkResult = type.check(value);
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({}, formError);
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({}, formError);
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(formError, [nestedField ? nameToPath(fieldName) : fieldName]));
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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rsuite",
3
- "version": "5.70.2",
3
+ "version": "5.71.0",
4
4
  "description": "A suite of react components",
5
5
  "main": "cjs/index.js",
6
6
  "module": "esm/index.js",