@react-aria/combobox 3.10.4 → 3.11.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.
- package/LICENSE +201 -0
- package/dist/ar-AE.main.js.map +1 -1
- package/dist/ar-AE.module.js.map +1 -1
- package/dist/bg-BG.main.js.map +1 -1
- package/dist/bg-BG.module.js.map +1 -1
- package/dist/cs-CZ.main.js.map +1 -1
- package/dist/cs-CZ.module.js.map +1 -1
- package/dist/da-DK.main.js.map +1 -1
- package/dist/da-DK.module.js.map +1 -1
- package/dist/de-DE.main.js.map +1 -1
- package/dist/de-DE.module.js.map +1 -1
- package/dist/el-GR.main.js.map +1 -1
- package/dist/el-GR.module.js.map +1 -1
- package/dist/en-US.main.js.map +1 -1
- package/dist/en-US.module.js.map +1 -1
- package/dist/es-ES.main.js.map +1 -1
- package/dist/es-ES.module.js.map +1 -1
- package/dist/et-EE.main.js.map +1 -1
- package/dist/et-EE.module.js.map +1 -1
- package/dist/fi-FI.main.js.map +1 -1
- package/dist/fi-FI.module.js.map +1 -1
- package/dist/fr-FR.main.js.map +1 -1
- package/dist/fr-FR.module.js.map +1 -1
- package/dist/he-IL.main.js.map +1 -1
- package/dist/he-IL.module.js.map +1 -1
- package/dist/hr-HR.main.js.map +1 -1
- package/dist/hr-HR.module.js.map +1 -1
- package/dist/hu-HU.main.js.map +1 -1
- package/dist/hu-HU.module.js.map +1 -1
- package/dist/it-IT.main.js.map +1 -1
- package/dist/it-IT.module.js.map +1 -1
- package/dist/ja-JP.main.js.map +1 -1
- package/dist/ja-JP.module.js.map +1 -1
- package/dist/ko-KR.main.js.map +1 -1
- package/dist/ko-KR.module.js.map +1 -1
- package/dist/lt-LT.main.js.map +1 -1
- package/dist/lt-LT.module.js.map +1 -1
- package/dist/lv-LV.main.js.map +1 -1
- package/dist/lv-LV.module.js.map +1 -1
- package/dist/nb-NO.main.js.map +1 -1
- package/dist/nb-NO.module.js.map +1 -1
- package/dist/nl-NL.main.js.map +1 -1
- package/dist/nl-NL.module.js.map +1 -1
- package/dist/pl-PL.main.js.map +1 -1
- package/dist/pl-PL.module.js.map +1 -1
- package/dist/pt-BR.main.js.map +1 -1
- package/dist/pt-BR.module.js.map +1 -1
- package/dist/pt-PT.main.js.map +1 -1
- package/dist/pt-PT.module.js.map +1 -1
- package/dist/ro-RO.main.js.map +1 -1
- package/dist/ro-RO.module.js.map +1 -1
- package/dist/ru-RU.main.js.map +1 -1
- package/dist/ru-RU.module.js.map +1 -1
- package/dist/sk-SK.main.js.map +1 -1
- package/dist/sk-SK.module.js.map +1 -1
- package/dist/sl-SI.main.js.map +1 -1
- package/dist/sl-SI.module.js.map +1 -1
- package/dist/sr-SP.main.js.map +1 -1
- package/dist/sr-SP.module.js.map +1 -1
- package/dist/sv-SE.main.js.map +1 -1
- package/dist/sv-SE.module.js.map +1 -1
- package/dist/tr-TR.main.js.map +1 -1
- package/dist/tr-TR.module.js.map +1 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/uk-UA.main.js.map +1 -1
- package/dist/uk-UA.module.js.map +1 -1
- package/dist/useComboBox.main.js +20 -15
- package/dist/useComboBox.main.js.map +1 -1
- package/dist/useComboBox.mjs +21 -16
- package/dist/useComboBox.module.js +21 -16
- package/dist/useComboBox.module.js.map +1 -1
- package/dist/zh-CN.main.js.map +1 -1
- package/dist/zh-CN.module.js.map +1 -1
- package/dist/zh-TW.main.js.map +1 -1
- package/dist/zh-TW.module.js.map +1 -1
- package/package.json +20 -19
- package/src/useComboBox.ts +14 -12
package/src/useComboBox.ts
CHANGED
|
@@ -81,6 +81,8 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
81
81
|
isReadOnly,
|
|
82
82
|
isDisabled
|
|
83
83
|
} = props;
|
|
84
|
+
let backupBtnRef = useRef(null);
|
|
85
|
+
buttonRef = buttonRef ?? backupBtnRef;
|
|
84
86
|
|
|
85
87
|
let stringFormatter = useLocalizedStringFormatter(intlMessages, '@react-aria/combobox');
|
|
86
88
|
let {menuTriggerProps, menuProps} = useMenuTrigger<T>(
|
|
@@ -136,11 +138,11 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
136
138
|
}
|
|
137
139
|
|
|
138
140
|
// If the focused item is a link, trigger opening it. Items that are links are not selectable.
|
|
139
|
-
if (state.isOpen && state.selectionManager.focusedKey != null && state.selectionManager.isLink(state.selectionManager.focusedKey)) {
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
141
|
+
if (state.isOpen && listBoxRef.current && state.selectionManager.focusedKey != null && state.selectionManager.isLink(state.selectionManager.focusedKey)) {
|
|
142
|
+
let item = listBoxRef.current.querySelector(`[data-key="${CSS.escape(state.selectionManager.focusedKey.toString())}"]`);
|
|
143
|
+
if (e.key === 'Enter' && item instanceof HTMLAnchorElement) {
|
|
144
|
+
let collectionItem = state.collection.getItem(state.selectionManager.focusedKey);
|
|
145
|
+
if (collectionItem) {
|
|
144
146
|
router.open(item, e, collectionItem.props.href, collectionItem.props.routerOptions as RouterOptions);
|
|
145
147
|
}
|
|
146
148
|
}
|
|
@@ -217,14 +219,14 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
217
219
|
let onPress = (e: PressEvent) => {
|
|
218
220
|
if (e.pointerType === 'touch') {
|
|
219
221
|
// Focus the input field in case it isn't focused yet
|
|
220
|
-
inputRef.current
|
|
222
|
+
inputRef.current?.focus();
|
|
221
223
|
state.toggle(null, 'manual');
|
|
222
224
|
}
|
|
223
225
|
};
|
|
224
226
|
|
|
225
227
|
let onPressStart = (e: PressEvent) => {
|
|
226
228
|
if (e.pointerType !== 'touch') {
|
|
227
|
-
inputRef.current
|
|
229
|
+
inputRef.current?.focus();
|
|
228
230
|
state.toggle((e.pointerType === 'keyboard' || e.pointerType === 'virtual') ? 'first' : null, 'manual');
|
|
229
231
|
}
|
|
230
232
|
};
|
|
@@ -251,7 +253,7 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
251
253
|
// Sometimes VoiceOver on iOS fires two touchend events in quick succession. Ignore the second one.
|
|
252
254
|
if (e.timeStamp - lastEventTime.current < 500) {
|
|
253
255
|
e.preventDefault();
|
|
254
|
-
inputRef.current
|
|
256
|
+
inputRef.current?.focus();
|
|
255
257
|
return;
|
|
256
258
|
}
|
|
257
259
|
|
|
@@ -263,7 +265,7 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
263
265
|
|
|
264
266
|
if (touch.clientX === centerX && touch.clientY === centerY) {
|
|
265
267
|
e.preventDefault();
|
|
266
|
-
inputRef.current
|
|
268
|
+
inputRef.current?.focus();
|
|
267
269
|
state.toggle(null, 'manual');
|
|
268
270
|
|
|
269
271
|
lastEventTime.current = e.timeStamp;
|
|
@@ -281,13 +283,13 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
281
283
|
let lastSection = useRef(sectionKey);
|
|
282
284
|
let lastItem = useRef(itemKey);
|
|
283
285
|
useEffect(() => {
|
|
284
|
-
if (isAppleDevice() && focusedItem != null && itemKey !== lastItem.current) {
|
|
286
|
+
if (isAppleDevice() && focusedItem != null && itemKey != null && itemKey !== lastItem.current) {
|
|
285
287
|
let isSelected = state.selectionManager.isSelected(itemKey);
|
|
286
288
|
let section = sectionKey != null ? state.collection.getItem(sectionKey) : null;
|
|
287
289
|
let sectionTitle = section?.['aria-label'] || (typeof section?.rendered === 'string' ? section.rendered : '') || '';
|
|
288
290
|
|
|
289
291
|
let announcement = stringFormatter.format('focusAnnouncement', {
|
|
290
|
-
isGroupChange: section && sectionKey !== lastSection.current,
|
|
292
|
+
isGroupChange: (section && sectionKey !== lastSection.current) ?? false,
|
|
291
293
|
groupTitle: sectionTitle,
|
|
292
294
|
groupCount: section ? [...getChildNodes(section, state.collection)].length : 0,
|
|
293
295
|
optionText: focusedItem['aria-label'] || focusedItem.textValue || '',
|
|
@@ -336,7 +338,7 @@ export function useComboBox<T>(props: AriaComboBoxOptions<T>, state: ComboBoxSta
|
|
|
336
338
|
|
|
337
339
|
useEffect(() => {
|
|
338
340
|
if (state.isOpen) {
|
|
339
|
-
return ariaHideOutside([inputRef.current, popoverRef.current]);
|
|
341
|
+
return ariaHideOutside([inputRef.current, popoverRef.current].filter(element => element != null));
|
|
340
342
|
}
|
|
341
343
|
}, [state.isOpen, inputRef, popoverRef]);
|
|
342
344
|
|