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 +16 -1
- package/dist/downshift.cjs.js +8 -7
- package/dist/downshift.esm.js +8 -7
- package/dist/downshift.native.cjs.js +8 -7
- package/dist/downshift.nativeweb.cjs.js +8 -7
- package/dist/downshift.umd.js +37 -31
- package/dist/downshift.umd.js.map +1 -1
- package/dist/downshift.umd.min.js +1 -1
- package/dist/downshift.umd.min.js.map +1 -1
- package/dist/test/basic.test.d.ts +1 -1
- package/dist/test/custom.test.d.ts +1 -1
- package/package.json +3 -1
- package/preact/dist/downshift.cjs.js +8 -7
- package/preact/dist/downshift.esm.js +8 -7
- package/preact/dist/downshift.umd.js +37 -31
- package/preact/dist/downshift.umd.js.map +1 -1
- package/preact/dist/downshift.umd.min.js +1 -1
- package/preact/dist/downshift.umd.min.js.map +1 -1
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://
|
|
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]:
|
package/dist/downshift.cjs.js
CHANGED
|
@@ -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.
|
|
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
|
|
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:
|
|
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
|
package/dist/downshift.esm.js
CHANGED
|
@@ -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.
|
|
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
|
|
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:
|
|
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.
|
|
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
|
|
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:
|
|
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.
|
|
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
|
|
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:
|
|
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
|
package/dist/downshift.umd.js
CHANGED
|
@@ -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
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
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.
|
|
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
|
|
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:
|
|
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
|