downshift 7.3.4 → 7.4.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.
@@ -2748,6 +2748,7 @@ function getInitialState$1(props) {
2748
2748
  var propTypes$1 = {
2749
2749
  items: PropTypes__default["default"].array.isRequired,
2750
2750
  itemToString: PropTypes__default["default"].func,
2751
+ selectedItemChanged: PropTypes__default["default"].func,
2751
2752
  getA11yStatusMessage: PropTypes__default["default"].func,
2752
2753
  getA11ySelectionMessage: PropTypes__default["default"].func,
2753
2754
  highlightedIndex: PropTypes__default["default"].number,
@@ -2805,16 +2806,18 @@ function useControlledReducer(reducer, initialState, props) {
2805
2806
 
2806
2807
  // ToDo: if needed, make same approach as selectedItemChanged from Downshift.
2807
2808
  react.useEffect(function () {
2808
- if (isControlledProp(props, 'selectedItem')) {
2809
- if (previousSelectedItemRef.current !== props.selectedItem) {
2810
- dispatch({
2811
- type: ControlledPropUpdatedSelectedItem,
2812
- inputValue: props.itemToString(props.selectedItem)
2813
- });
2814
- }
2815
- previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
2809
+ if (!isControlledProp(props, 'selectedItem')) {
2810
+ return;
2816
2811
  }
2817
- }, [props.selectedItem, state.selectedItem]);
2812
+ if (props.selectedItemChanged(previousSelectedItemRef.current, props.selectedItem)) {
2813
+ dispatch({
2814
+ type: ControlledPropUpdatedSelectedItem,
2815
+ inputValue: props.itemToString(props.selectedItem)
2816
+ });
2817
+ }
2818
+ previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
2819
+ // eslint-disable-next-line react-hooks/exhaustive-deps
2820
+ }, [state.selectedItem, props.selectedItem]);
2818
2821
  return [getState(state, props), dispatch];
2819
2822
  }
2820
2823
 
@@ -2827,6 +2830,9 @@ if (process.env.NODE_ENV !== 'production') {
2827
2830
  };
2828
2831
  }
2829
2832
  var defaultProps$1 = _extends__default["default"]({}, defaultProps$3, {
2833
+ selectedItemChanged: function selectedItemChanged(prevItem, item) {
2834
+ return prevItem !== item;
2835
+ },
2830
2836
  getA11yStatusMessage: getA11yStatusMessage$1
2831
2837
  });
2832
2838
 
@@ -2735,6 +2735,7 @@ function getInitialState$1(props) {
2735
2735
  var propTypes$1 = {
2736
2736
  items: PropTypes.array.isRequired,
2737
2737
  itemToString: PropTypes.func,
2738
+ selectedItemChanged: PropTypes.func,
2738
2739
  getA11yStatusMessage: PropTypes.func,
2739
2740
  getA11ySelectionMessage: PropTypes.func,
2740
2741
  highlightedIndex: PropTypes.number,
@@ -2792,16 +2793,18 @@ function useControlledReducer(reducer, initialState, props) {
2792
2793
 
2793
2794
  // ToDo: if needed, make same approach as selectedItemChanged from Downshift.
2794
2795
  useEffect(function () {
2795
- if (isControlledProp(props, 'selectedItem')) {
2796
- if (previousSelectedItemRef.current !== props.selectedItem) {
2797
- dispatch({
2798
- type: ControlledPropUpdatedSelectedItem,
2799
- inputValue: props.itemToString(props.selectedItem)
2800
- });
2801
- }
2802
- previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
2796
+ if (!isControlledProp(props, 'selectedItem')) {
2797
+ return;
2803
2798
  }
2804
- }, [props.selectedItem, state.selectedItem]);
2799
+ if (props.selectedItemChanged(previousSelectedItemRef.current, props.selectedItem)) {
2800
+ dispatch({
2801
+ type: ControlledPropUpdatedSelectedItem,
2802
+ inputValue: props.itemToString(props.selectedItem)
2803
+ });
2804
+ }
2805
+ previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
2806
+ // eslint-disable-next-line react-hooks/exhaustive-deps
2807
+ }, [state.selectedItem, props.selectedItem]);
2805
2808
  return [getState(state, props), dispatch];
2806
2809
  }
2807
2810
 
@@ -2814,6 +2817,9 @@ if (process.env.NODE_ENV !== 'production') {
2814
2817
  };
2815
2818
  }
2816
2819
  var defaultProps$1 = _extends({}, defaultProps$3, {
2820
+ selectedItemChanged: function selectedItemChanged(prevItem, item) {
2821
+ return prevItem !== item;
2822
+ },
2817
2823
  getA11yStatusMessage: getA11yStatusMessage$1
2818
2824
  });
2819
2825
 
@@ -2670,6 +2670,7 @@ function getInitialState$1(props) {
2670
2670
  var propTypes$1 = {
2671
2671
  items: PropTypes__default["default"].array.isRequired,
2672
2672
  itemToString: PropTypes__default["default"].func,
2673
+ selectedItemChanged: PropTypes__default["default"].func,
2673
2674
  getA11yStatusMessage: PropTypes__default["default"].func,
2674
2675
  getA11ySelectionMessage: PropTypes__default["default"].func,
2675
2676
  highlightedIndex: PropTypes__default["default"].number,
@@ -2727,16 +2728,18 @@ function useControlledReducer(reducer, initialState, props) {
2727
2728
 
2728
2729
  // ToDo: if needed, make same approach as selectedItemChanged from Downshift.
2729
2730
  react.useEffect(function () {
2730
- if (isControlledProp(props, 'selectedItem')) {
2731
- if (previousSelectedItemRef.current !== props.selectedItem) {
2732
- dispatch({
2733
- type: ControlledPropUpdatedSelectedItem,
2734
- inputValue: props.itemToString(props.selectedItem)
2735
- });
2736
- }
2737
- previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
2731
+ if (!isControlledProp(props, 'selectedItem')) {
2732
+ return;
2738
2733
  }
2739
- }, [props.selectedItem, state.selectedItem]);
2734
+ if (props.selectedItemChanged(previousSelectedItemRef.current, props.selectedItem)) {
2735
+ dispatch({
2736
+ type: ControlledPropUpdatedSelectedItem,
2737
+ inputValue: props.itemToString(props.selectedItem)
2738
+ });
2739
+ }
2740
+ previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
2741
+ // eslint-disable-next-line react-hooks/exhaustive-deps
2742
+ }, [state.selectedItem, props.selectedItem]);
2740
2743
  return [getState(state, props), dispatch];
2741
2744
  }
2742
2745
 
@@ -2749,6 +2752,9 @@ if (process.env.NODE_ENV !== 'production') {
2749
2752
  };
2750
2753
  }
2751
2754
  var defaultProps$1 = _extends__default["default"]({}, defaultProps$3, {
2755
+ selectedItemChanged: function selectedItemChanged(prevItem, item) {
2756
+ return prevItem !== item;
2757
+ },
2752
2758
  getA11yStatusMessage: getA11yStatusMessage$1
2753
2759
  });
2754
2760
 
@@ -4060,6 +4060,7 @@
4060
4060
  var propTypes$1 = {
4061
4061
  items: PropTypes.array.isRequired,
4062
4062
  itemToString: PropTypes.func,
4063
+ selectedItemChanged: PropTypes.func,
4063
4064
  getA11yStatusMessage: PropTypes.func,
4064
4065
  getA11ySelectionMessage: PropTypes.func,
4065
4066
  highlightedIndex: PropTypes.number,
@@ -4117,16 +4118,18 @@
4117
4118
 
4118
4119
  // ToDo: if needed, make same approach as selectedItemChanged from Downshift.
4119
4120
  react.useEffect(function () {
4120
- if (isControlledProp(props, 'selectedItem')) {
4121
- if (previousSelectedItemRef.current !== props.selectedItem) {
4122
- dispatch({
4123
- type: ControlledPropUpdatedSelectedItem,
4124
- inputValue: props.itemToString(props.selectedItem)
4125
- });
4126
- }
4127
- previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
4121
+ if (!isControlledProp(props, 'selectedItem')) {
4122
+ return;
4128
4123
  }
4129
- }, [props.selectedItem, state.selectedItem]);
4124
+ if (props.selectedItemChanged(previousSelectedItemRef.current, props.selectedItem)) {
4125
+ dispatch({
4126
+ type: ControlledPropUpdatedSelectedItem,
4127
+ inputValue: props.itemToString(props.selectedItem)
4128
+ });
4129
+ }
4130
+ previousSelectedItemRef.current = state.selectedItem === previousSelectedItemRef.current ? props.selectedItem : state.selectedItem;
4131
+ // eslint-disable-next-line react-hooks/exhaustive-deps
4132
+ }, [state.selectedItem, props.selectedItem]);
4130
4133
  return [getState(state, props), dispatch];
4131
4134
  }
4132
4135
 
@@ -4139,6 +4142,9 @@
4139
4142
  };
4140
4143
  }
4141
4144
  var defaultProps$1 = _extends({}, defaultProps$3, {
4145
+ selectedItemChanged: function selectedItemChanged(prevItem, item) {
4146
+ return prevItem !== item;
4147
+ },
4142
4148
  getA11yStatusMessage: getA11yStatusMessage$1
4143
4149
  });
4144
4150