Skip to content

Commit eef689d

Browse files
authored
fix: mobile restore focus after a Select closes (#7904)
* fix: mobile restore focus * fix tests
1 parent 7e403a6 commit eef689d

File tree

2 files changed

+5
-1
lines changed

2 files changed

+5
-1
lines changed

packages/@react-aria/menu/src/useMenuTrigger.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,9 @@ export function useMenuTrigger<T>(props: AriaMenuTriggerProps, state: MenuTrigge
123123
},
124124
onPress(e) {
125125
if (e.pointerType === 'touch' && !isDisabled) {
126+
// Ensure trigger has focus before opening the menu so it can be restored by FocusScope on close.
127+
focusWithoutScrolling(e.target as FocusableElement);
128+
126129
state.toggle();
127130
}
128131
}

packages/@react-spectrum/table/test/TableSizing.test.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -984,7 +984,8 @@ describe('TableViewSizing', function () {
984984
let resizeMenuItem = tree.getAllByRole('menuitem')[0];
985985

986986
triggerTouch(resizeMenuItem);
987-
act(() => {jest.runAllTimers();});
987+
act(() => {jest.advanceTimersToNextTimer();});
988+
act(() => {jest.advanceTimersToNextTimer();});
988989

989990
let resizer = tree.getByRole('slider');
990991
expect(resizer).toBeVisible();

0 commit comments

Comments
 (0)