@rjsf/core 5.3.0 → 5.3.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.
@@ -2758,22 +2758,25 @@ function AltDateWidget(_ref2) {
2758
2758
  onChange = _ref2.onChange,
2759
2759
  value = _ref2.value;
2760
2760
  var translateString = registry.translateString;
2761
+ var _useState = react.useState(value),
2762
+ lastValue = _useState[0],
2763
+ setLastValue = _useState[1];
2761
2764
  var _useReducer = react.useReducer(function (state, action) {
2762
2765
  return _extends({}, state, action);
2763
2766
  }, utils.parseDateString(value, time)),
2764
2767
  state = _useReducer[0],
2765
2768
  setState = _useReducer[1];
2766
2769
  react.useEffect(function () {
2767
- if (value && value !== utils.toDateString(state, time)) {
2770
+ var stateValue = utils.toDateString(state, time);
2771
+ if (readyForChange(state) && stateValue !== value) {
2772
+ // The user changed the date to a new valid data via the comboboxes, so call onChange
2773
+ onChange(stateValue);
2774
+ } else if (lastValue !== value) {
2775
+ // We got a new value in the props
2776
+ setLastValue(value);
2768
2777
  setState(utils.parseDateString(value, time));
2769
2778
  }
2770
- }, [value, state, time]);
2771
- react.useEffect(function () {
2772
- if (readyForChange(state)) {
2773
- // Only propagate to parent state if we have a complete date{time}
2774
- onChange(utils.toDateString(state, time));
2775
- }
2776
- }, [state, time, onChange]);
2779
+ }, [time, value, onChange, state, lastValue]);
2777
2780
  var handleChange = react.useCallback(function (property, value) {
2778
2781
  var _setState;
2779
2782
  setState((_setState = {}, _setState[property] = value, _setState));
@@ -2783,17 +2786,16 @@ function AltDateWidget(_ref2) {
2783
2786
  if (disabled || readonly) {
2784
2787
  return;
2785
2788
  }
2786
- var nowDateObj = utils.parseDateString(new Date().toJSON(), time);
2787
- setState(nowDateObj);
2789
+ var nextState = utils.parseDateString(new Date().toJSON(), time);
2790
+ onChange(utils.toDateString(nextState, time));
2788
2791
  }, [disabled, readonly, time]);
2789
2792
  var handleClear = react.useCallback(function (event) {
2790
2793
  event.preventDefault();
2791
2794
  if (disabled || readonly) {
2792
2795
  return;
2793
2796
  }
2794
- setState(utils.parseDateString('', time));
2795
2797
  onChange(undefined);
2796
- }, [disabled, readonly, time, onChange]);
2798
+ }, [disabled, readonly, onChange]);
2797
2799
  return jsxRuntime.jsxs("ul", {
2798
2800
  className: 'list-inline',
2799
2801
  children: [dateElementProps(state, time, options.yearsRange).map(function (elemProps, i) {