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