downshift 7.5.0 → 7.6.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/README.md CHANGED
@@ -70,6 +70,15 @@ to the hook you need by using the links in the list above.
70
70
  For examples on how to use the hooks or the Downshift component, check out our
71
71
  [docsite][docsite]!
72
72
 
73
+ **🚨 Use the Downshift hooks 🚨**
74
+
75
+ If you are new to the library, consider the _useSelect_ and _useCombobox_ hooks
76
+ as the first option. As mentioned above, the hooks benefit from the updated ARIA
77
+ patterns and are actively maintained and improved. If there are use cases that
78
+ are supported by the _Downshift_ component and not by the hooks, please create
79
+ an issue in our repo. The _Downshift_ component is going to be removed
80
+ completely once the hooks become mature.
81
+
73
82
  ### Downshift
74
83
 
75
84
  This is a component that controls user interactions and state for you so you can
@@ -747,6 +756,12 @@ Optional properties:
747
756
  from `getInputProps` and a `disabled` prop will be returned (effectively
748
757
  disabling the input).
749
758
 
759
+ - `aria-label`: By default the menu will add an `aria-labelledby` that refers to
760
+ the `<label>` rendered with `getLabelProps`. However, if you provide
761
+ `aria-label` to give a more specific label that describes the options
762
+ available, then `aria-labelledby` will not be provided and screen readers can
763
+ use your `aria-label` instead.
764
+
750
765
  #### `getLabelProps`
751
766
 
752
767
  This method should be applied to the `label` you render. It is useful for
@@ -1492,7 +1507,7 @@ MIT
1492
1507
  [react-training]: https://reacttraining.com/
1493
1508
  [advanced-react]: https://courses.reacttraining.com/courses/enrolled/200086
1494
1509
  [use-a-render-prop]:
1495
- https://cdb.reacttraining.com/use-a-render-prop-50de598f11ce
1510
+ https://medium.com/@mjackson/use-a-render-prop-50de598f11ce
1496
1511
  [semver]: http://semver.org/
1497
1512
  [hooks-readme]: https://github.com/downshift-js/downshift/blob/master/src/hooks
1498
1513
  [useselect-readme]:
@@ -935,7 +935,7 @@ var Downshift = /*#__PURE__*/function () {
935
935
  'aria-autocomplete': 'list',
936
936
  'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,
937
937
  'aria-controls': isOpen ? _this.menuId : null,
938
- 'aria-labelledby': _this.labelId,
938
+ 'aria-labelledby': rest && rest['aria-label'] ? undefined : _this.labelId,
939
939
  // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
940
940
  // revert back since autocomplete="nope" is ignored on latest Chrome and Opera
941
941
  autoComplete: 'off',
@@ -2552,7 +2552,7 @@ function useSelect(userProps) {
2552
2552
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
2553
2553
  return _extends__default["default"]((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
2554
2554
  menuRef.current = menuNode;
2555
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2555
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2556
2556
  }, [dispatch, setGetterPropCallInfo, elementIds]);
2557
2557
  var getToggleButtonProps = react.useCallback(function (_temp3, _temp4) {
2558
2558
  var _extends3;
@@ -2595,7 +2595,7 @@ function useSelect(userProps) {
2595
2595
  };
2596
2596
  var toggleProps = _extends__default["default"]((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {
2597
2597
  toggleButtonRef.current = toggleButtonNode;
2598
- }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2598
+ }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2599
2599
  if (!rest.disabled) {
2600
2600
  /* istanbul ignore if (react-native) */
2601
2601
  {
@@ -3068,7 +3068,7 @@ function useCombobox(userProps) {
3068
3068
  itemRefs.current = {};
3069
3069
  } else if (((_environment$document = environment.document) == null ? void 0 : _environment$document.activeElement) !== inputRef.current) {
3070
3070
  var _inputRef$current;
3071
- inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
3071
+ inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
3072
3072
  }
3073
3073
  }, [isOpen, environment]);
3074
3074
 
@@ -3175,7 +3175,7 @@ function useCombobox(userProps) {
3175
3175
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
3176
3176
  return _extends__default["default"]((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
3177
3177
  menuRef.current = menuNode;
3178
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3178
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3179
3179
  dispatch({
3180
3180
  type: MenuMouseLeave
3181
3181
  });
@@ -3285,9 +3285,10 @@ function useCombobox(userProps) {
3285
3285
  var inputHandleBlur = function inputHandleBlur(event) {
3286
3286
  /* istanbul ignore else */
3287
3287
  if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {
3288
+ var isBlurByTabChange = event.relatedTarget === null && environment.document.activeElement !== environment.document.body;
3288
3289
  dispatch({
3289
3290
  type: InputBlur,
3290
- selectItem: event.relatedTarget !== null
3291
+ selectItem: !isBlurByTabChange
3291
3292
  });
3292
3293
  }
3293
3294
  };
@@ -3308,7 +3309,7 @@ function useCombobox(userProps) {
3308
3309
  }
3309
3310
  return _extends__default["default"]((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {
3310
3311
  inputRef.current = inputNode;
3311
- }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3312
+ }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3312
3313
  }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);
3313
3314
 
3314
3315
  // returns
@@ -922,7 +922,7 @@ var Downshift = /*#__PURE__*/function () {
922
922
  'aria-autocomplete': 'list',
923
923
  'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,
924
924
  'aria-controls': isOpen ? _this.menuId : null,
925
- 'aria-labelledby': _this.labelId,
925
+ 'aria-labelledby': rest && rest['aria-label'] ? undefined : _this.labelId,
926
926
  // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
927
927
  // revert back since autocomplete="nope" is ignored on latest Chrome and Opera
928
928
  autoComplete: 'off',
@@ -2539,7 +2539,7 @@ function useSelect(userProps) {
2539
2539
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
2540
2540
  return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
2541
2541
  menuRef.current = menuNode;
2542
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2542
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2543
2543
  }, [dispatch, setGetterPropCallInfo, elementIds]);
2544
2544
  var getToggleButtonProps = useCallback(function (_temp3, _temp4) {
2545
2545
  var _extends3;
@@ -2582,7 +2582,7 @@ function useSelect(userProps) {
2582
2582
  };
2583
2583
  var toggleProps = _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {
2584
2584
  toggleButtonRef.current = toggleButtonNode;
2585
- }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2585
+ }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2586
2586
  if (!rest.disabled) {
2587
2587
  /* istanbul ignore if (react-native) */
2588
2588
  {
@@ -3055,7 +3055,7 @@ function useCombobox(userProps) {
3055
3055
  itemRefs.current = {};
3056
3056
  } else if (((_environment$document = environment.document) == null ? void 0 : _environment$document.activeElement) !== inputRef.current) {
3057
3057
  var _inputRef$current;
3058
- inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
3058
+ inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
3059
3059
  }
3060
3060
  }, [isOpen, environment]);
3061
3061
 
@@ -3162,7 +3162,7 @@ function useCombobox(userProps) {
3162
3162
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
3163
3163
  return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
3164
3164
  menuRef.current = menuNode;
3165
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3165
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3166
3166
  dispatch({
3167
3167
  type: MenuMouseLeave
3168
3168
  });
@@ -3272,9 +3272,10 @@ function useCombobox(userProps) {
3272
3272
  var inputHandleBlur = function inputHandleBlur(event) {
3273
3273
  /* istanbul ignore else */
3274
3274
  if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {
3275
+ var isBlurByTabChange = event.relatedTarget === null && environment.document.activeElement !== environment.document.body;
3275
3276
  dispatch({
3276
3277
  type: InputBlur,
3277
- selectItem: event.relatedTarget !== null
3278
+ selectItem: !isBlurByTabChange
3278
3279
  });
3279
3280
  }
3280
3281
  };
@@ -3295,7 +3296,7 @@ function useCombobox(userProps) {
3295
3296
  }
3296
3297
  return _extends((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {
3297
3298
  inputRef.current = inputNode;
3298
- }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3299
+ }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3299
3300
  }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);
3300
3301
 
3301
3302
  // returns
@@ -942,7 +942,7 @@ var Downshift = /*#__PURE__*/function () {
942
942
  'aria-autocomplete': 'list',
943
943
  'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,
944
944
  'aria-controls': isOpen ? _this.menuId : null,
945
- 'aria-labelledby': _this.labelId,
945
+ 'aria-labelledby': rest && rest['aria-label'] ? undefined : _this.labelId,
946
946
  // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
947
947
  // revert back since autocomplete="nope" is ignored on latest Chrome and Opera
948
948
  autoComplete: 'off',
@@ -2487,7 +2487,7 @@ function useSelect(userProps) {
2487
2487
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
2488
2488
  return _extends__default["default"]((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
2489
2489
  menuRef.current = menuNode;
2490
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2490
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2491
2491
  }, [dispatch, setGetterPropCallInfo, elementIds]);
2492
2492
  var getToggleButtonProps = react.useCallback(function (_temp3, _temp4) {
2493
2493
  var _extends3;
@@ -2518,7 +2518,7 @@ function useSelect(userProps) {
2518
2518
  };
2519
2519
  var toggleProps = _extends__default["default"]((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {
2520
2520
  toggleButtonRef.current = toggleButtonNode;
2521
- }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2521
+ }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2522
2522
  if (!rest.disabled) {
2523
2523
  /* istanbul ignore if (react-native) */
2524
2524
  {
@@ -2990,7 +2990,7 @@ function useCombobox(userProps) {
2990
2990
  itemRefs.current = {};
2991
2991
  } else if (((_environment$document = environment.document) == null ? void 0 : _environment$document.activeElement) !== inputRef.current) {
2992
2992
  var _inputRef$current;
2993
- inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
2993
+ inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
2994
2994
  }
2995
2995
  }, [isOpen, environment]);
2996
2996
 
@@ -3097,7 +3097,7 @@ function useCombobox(userProps) {
3097
3097
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
3098
3098
  return _extends__default["default"]((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
3099
3099
  menuRef.current = menuNode;
3100
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3100
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3101
3101
  dispatch({
3102
3102
  type: MenuMouseLeave
3103
3103
  });
@@ -3207,9 +3207,10 @@ function useCombobox(userProps) {
3207
3207
  var inputHandleBlur = function inputHandleBlur(event) {
3208
3208
  /* istanbul ignore else */
3209
3209
  if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {
3210
+ var isBlurByTabChange = event.relatedTarget === null && environment.document.activeElement !== environment.document.body;
3210
3211
  dispatch({
3211
3212
  type: InputBlur,
3212
- selectItem: event.relatedTarget !== null
3213
+ selectItem: !isBlurByTabChange
3213
3214
  });
3214
3215
  }
3215
3216
  };
@@ -3242,7 +3243,7 @@ function useCombobox(userProps) {
3242
3243
  }
3243
3244
  return _extends__default["default"]((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {
3244
3245
  inputRef.current = inputNode;
3245
- }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3246
+ }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3246
3247
  }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);
3247
3248
 
3248
3249
  // returns
@@ -933,7 +933,7 @@ var Downshift = /*#__PURE__*/function () {
933
933
  'aria-autocomplete': 'list',
934
934
  'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,
935
935
  'aria-controls': isOpen ? _this.menuId : null,
936
- 'aria-labelledby': _this.labelId,
936
+ 'aria-labelledby': rest && rest['aria-label'] ? undefined : _this.labelId,
937
937
  // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
938
938
  // revert back since autocomplete="nope" is ignored on latest Chrome and Opera
939
939
  autoComplete: 'off',
@@ -2547,7 +2547,7 @@ function useSelect(userProps) {
2547
2547
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
2548
2548
  return _extends__default["default"]((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
2549
2549
  menuRef.current = menuNode;
2550
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2550
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
2551
2551
  }, [dispatch, setGetterPropCallInfo, elementIds]);
2552
2552
  var getToggleButtonProps = react.useCallback(function (_temp3, _temp4) {
2553
2553
  var _extends3;
@@ -2578,7 +2578,7 @@ function useSelect(userProps) {
2578
2578
  };
2579
2579
  var toggleProps = _extends__default["default"]((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {
2580
2580
  toggleButtonRef.current = toggleButtonNode;
2581
- }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2581
+ }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
2582
2582
  if (!rest.disabled) {
2583
2583
  /* istanbul ignore if (react-native) */
2584
2584
  {
@@ -3050,7 +3050,7 @@ function useCombobox(userProps) {
3050
3050
  itemRefs.current = {};
3051
3051
  } else if (((_environment$document = environment.document) == null ? void 0 : _environment$document.activeElement) !== inputRef.current) {
3052
3052
  var _inputRef$current;
3053
- inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
3053
+ inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
3054
3054
  }
3055
3055
  }, [isOpen, environment]);
3056
3056
 
@@ -3157,7 +3157,7 @@ function useCombobox(userProps) {
3157
3157
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
3158
3158
  return _extends__default["default"]((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
3159
3159
  menuRef.current = menuNode;
3160
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3160
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
3161
3161
  dispatch({
3162
3162
  type: MenuMouseLeave
3163
3163
  });
@@ -3267,9 +3267,10 @@ function useCombobox(userProps) {
3267
3267
  var inputHandleBlur = function inputHandleBlur(event) {
3268
3268
  /* istanbul ignore else */
3269
3269
  if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {
3270
+ var isBlurByTabChange = event.relatedTarget === null && environment.document.activeElement !== environment.document.body;
3270
3271
  dispatch({
3271
3272
  type: InputBlur,
3272
- selectItem: event.relatedTarget !== null
3273
+ selectItem: !isBlurByTabChange
3273
3274
  });
3274
3275
  }
3275
3276
  };
@@ -3290,7 +3291,7 @@ function useCombobox(userProps) {
3290
3291
  }
3291
3292
  return _extends__default["default"]((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {
3292
3293
  inputRef.current = inputNode;
3293
- }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3294
+ }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
3294
3295
  }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);
3295
3296
 
3296
3297
  // returns
@@ -2224,7 +2224,7 @@
2224
2224
  'aria-autocomplete': 'list',
2225
2225
  'aria-activedescendant': isOpen && typeof highlightedIndex === 'number' && highlightedIndex >= 0 ? _this.getItemId(highlightedIndex) : null,
2226
2226
  'aria-controls': isOpen ? _this.menuId : null,
2227
- 'aria-labelledby': _this.labelId,
2227
+ 'aria-labelledby': rest && rest['aria-label'] ? undefined : _this.labelId,
2228
2228
  // https://developer.mozilla.org/en-US/docs/Web/Security/Securing_your_site/Turning_off_form_autocompletion
2229
2229
  // revert back since autocomplete="nope" is ignored on latest Chrome and Opera
2230
2230
  autoComplete: 'off',
@@ -3314,30 +3314,35 @@
3314
3314
  }
3315
3315
  /* eslint-enable complexity */
3316
3316
 
3317
- /******************************************************************************
3318
- Copyright (c) Microsoft Corporation.
3319
-
3320
- Permission to use, copy, modify, and/or distribute this software for any
3321
- purpose with or without fee is hereby granted.
3322
-
3323
- THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
3324
- REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
3325
- AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
3326
- INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
3327
- LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
3328
- OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
3329
- PERFORMANCE OF THIS SOFTWARE.
3330
- ***************************************************************************** */
3331
-
3332
- var __assign = function() {
3333
- __assign = Object.assign || function __assign(t) {
3334
- for (var s, i = 1, n = arguments.length; i < n; i++) {
3335
- s = arguments[i];
3336
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3337
- }
3338
- return t;
3339
- };
3340
- return __assign.apply(this, arguments);
3317
+ /******************************************************************************
3318
+ Copyright (c) Microsoft Corporation.
3319
+
3320
+ Permission to use, copy, modify, and/or distribute this software for any
3321
+ purpose with or without fee is hereby granted.
3322
+
3323
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
3324
+ REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
3325
+ AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
3326
+ INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
3327
+ LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
3328
+ OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
3329
+ PERFORMANCE OF THIS SOFTWARE.
3330
+ ***************************************************************************** */
3331
+
3332
+ var __assign = function() {
3333
+ __assign = Object.assign || function __assign(t) {
3334
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
3335
+ s = arguments[i];
3336
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
3337
+ }
3338
+ return t;
3339
+ };
3340
+ return __assign.apply(this, arguments);
3341
+ };
3342
+
3343
+ typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
3344
+ var e = new Error(message);
3345
+ return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
3341
3346
  };
3342
3347
 
3343
3348
  function getItemIndexByCharacterKey(_a) {
@@ -3864,7 +3869,7 @@
3864
3869
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
3865
3870
  return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
3866
3871
  menuRef.current = menuNode;
3867
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.tabIndex = -1, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
3872
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, menuHandleMouseLeave), _extends2), rest);
3868
3873
  }, [dispatch, setGetterPropCallInfo, elementIds]);
3869
3874
  var getToggleButtonProps = react.useCallback(function (_temp3, _temp4) {
3870
3875
  var _extends3;
@@ -3907,7 +3912,7 @@
3907
3912
  };
3908
3913
  var toggleProps = _extends((_extends3 = {}, _extends3[refKey] = handleRefs(ref, function (toggleButtonNode) {
3909
3914
  toggleButtonRef.current = toggleButtonNode;
3910
- }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
3915
+ }), _extends3['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends3['aria-controls'] = elementIds.menuId, _extends3['aria-expanded'] = latest.current.state.isOpen, _extends3['aria-haspopup'] = 'listbox', _extends3['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends3.id = elementIds.toggleButtonId, _extends3.role = 'combobox', _extends3.tabIndex = 0, _extends3.onBlur = callAllEventHandlers(onBlur, toggleButtonHandleBlur), _extends3), rest);
3911
3916
  if (!rest.disabled) {
3912
3917
  /* istanbul ignore if (react-native) */
3913
3918
  {
@@ -4380,7 +4385,7 @@
4380
4385
  itemRefs.current = {};
4381
4386
  } else if (((_environment$document = environment.document) == null ? void 0 : _environment$document.activeElement) !== inputRef.current) {
4382
4387
  var _inputRef$current;
4383
- inputRef == null ? void 0 : (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
4388
+ inputRef == null || (_inputRef$current = inputRef.current) == null ? void 0 : _inputRef$current.focus();
4384
4389
  }
4385
4390
  }, [isOpen, environment]);
4386
4391
 
@@ -4487,7 +4492,7 @@
4487
4492
  setGetterPropCallInfo('getMenuProps', suppressRefError, refKey, menuRef);
4488
4493
  return _extends((_extends2 = {}, _extends2[refKey] = handleRefs(ref, function (menuNode) {
4489
4494
  menuRef.current = menuNode;
4490
- }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
4495
+ }), _extends2.id = elementIds.menuId, _extends2.role = 'listbox', _extends2['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends2.onMouseLeave = callAllEventHandlers(onMouseLeave, function () {
4491
4496
  dispatch({
4492
4497
  type: MenuMouseLeave
4493
4498
  });
@@ -4597,9 +4602,10 @@
4597
4602
  var inputHandleBlur = function inputHandleBlur(event) {
4598
4603
  /* istanbul ignore else */
4599
4604
  if (latestState.isOpen && !mouseAndTouchTrackersRef.current.isMouseDown) {
4605
+ var isBlurByTabChange = event.relatedTarget === null && environment.document.activeElement !== environment.document.body;
4600
4606
  dispatch({
4601
4607
  type: InputBlur,
4602
- selectItem: event.relatedTarget !== null
4608
+ selectItem: !isBlurByTabChange
4603
4609
  });
4604
4610
  }
4605
4611
  };
@@ -4620,7 +4626,7 @@
4620
4626
  }
4621
4627
  return _extends((_extends5 = {}, _extends5[refKey] = handleRefs(ref, function (inputNode) {
4622
4628
  inputRef.current = inputNode;
4623
- }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
4629
+ }), _extends5['aria-activedescendant'] = latestState.isOpen && latestState.highlightedIndex > -1 ? elementIds.getItemId(latestState.highlightedIndex) : '', _extends5['aria-autocomplete'] = 'list', _extends5['aria-controls'] = elementIds.menuId, _extends5['aria-expanded'] = latestState.isOpen, _extends5['aria-labelledby'] = rest && rest['aria-label'] ? undefined : "" + elementIds.labelId, _extends5.autoComplete = 'off', _extends5.id = elementIds.inputId, _extends5.role = 'combobox', _extends5.value = latestState.inputValue, _extends5), eventHandlers, rest);
4624
4630
  }, [dispatch, inputKeyDownHandlers, latest, mouseAndTouchTrackersRef, setGetterPropCallInfo, elementIds]);
4625
4631
 
4626
4632
  // returns