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