Skip to content

Commit 2dbe9a6

Browse files
authored
Switch from setImmediate to setTimeout to support Next 9.3. (#62)
* Switch from setImmediate to setTimeout to support Next 9.3. * bumped version * Fix failing tests.
1 parent 38b3bf2 commit 2dbe9a6

File tree

3 files changed

+9
-5
lines changed

3 files changed

+9
-5
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "react-storefront",
3-
"version": "7.9.1",
3+
"version": "7.9.2",
44
"description": "Build and deploy e-commerce progressive web apps (PWAs) in record time.",
55
"module": "./index.js",
66
"license": "Apache-2.0",

src/nav/NavTab.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,10 +86,10 @@ function NavTab({ classes, href, as, prefetch, children, ...props }) {
8686
setAnchorEl(event.currentTarget)
8787
}, [])
8888

89-
// We use setImmediate here to delay the tab and menu exit events give time for the user to enter
89+
// We use setTimeout here to delay the tab and menu exit events give time for the user to enter
9090
// the tab or menu so that the menu doesn't flash when the user is transitioning between tab and menu.
91-
const hideMenu = useCallback(() => setImmediate(() => setOverTab(false)), [])
92-
const leaveMenu = useCallback(() => setImmediate(() => setOverMenu(false)), [])
91+
const hideMenu = useCallback(() => setTimeout(() => setOverTab(false)), [])
92+
const leaveMenu = useCallback(() => setTimeout(() => setOverMenu(false)), [])
9393
const enterMenu = useCallback(() => setOverMenu(true), [])
9494
const menuItemBlurPending = useRef(false)
9595

@@ -114,7 +114,7 @@ function NavTab({ classes, href, as, prefetch, children, ...props }) {
114114
const handleMenuItemBlur = useCallback(() => {
115115
menuItemBlurPending.current = true
116116

117-
setImmediate(() => {
117+
setTimeout(() => {
118118
if (menuItemBlurPending.current) {
119119
setFocused(false)
120120
}

test/nav/NavTab.test.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,13 @@ describe('NavTab', () => {
1515
document.body.removeChild(root)
1616
root = null
1717
wrapper.unmount()
18+
jest.clearAllMocks()
1819
})
1920

2021
beforeEach(() => {
22+
// setImmediate seems to be much more stable than set timeout for tests, so we us it here to prevent intermittant failures
23+
jest.spyOn(global, 'setTimeout').mockImplementation(setImmediate)
24+
2125
document.createRange = () => ({
2226
setStart: () => {},
2327
setEnd: () => {},

0 commit comments

Comments
 (0)