Skip to content

Commit 59eeebc

Browse files
committed
chore: clean up
1 parent c441ad1 commit 59eeebc

File tree

3 files changed

+16
-11
lines changed

3 files changed

+16
-11
lines changed

docs/examples/focus.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import React, { useRef } from 'react';
2-
import {} from '../../src';
32
import { useLockFocus } from '../../src/Dom/focus';
43
import './focus.css';
54

src/Dom/focus.ts

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -151,15 +151,18 @@ function onWindowKeyDown(e: KeyboardEvent) {
151151
* It will force back to the first focusable element when focus leaves the element.
152152
*/
153153
export function lockFocus(element: HTMLElement): VoidFunction {
154-
// Refresh focus elements
155-
focusElements = focusElements.filter(ele => ele !== element);
156-
focusElements.push(element);
154+
if (element) {
155+
// Refresh focus elements
156+
focusElements = focusElements.filter(ele => ele !== element);
157+
focusElements.push(element);
157158

158-
// Just add event since it will de-duplicate
159-
window.addEventListener('focusin', syncFocus);
160-
window.addEventListener('keydown', onWindowKeyDown, true);
161-
syncFocus();
159+
// Just add event since it will de-duplicate
160+
window.addEventListener('focusin', syncFocus);
161+
window.addEventListener('keydown', onWindowKeyDown, true);
162+
syncFocus();
163+
}
162164

165+
// Always return unregister function
163166
return () => {
164167
lastFocusElement = null;
165168
focusElements = focusElements.filter(ele => ele !== element);
@@ -176,7 +179,10 @@ export function useLockFocus(
176179
) {
177180
useEffect(() => {
178181
if (lock) {
179-
return lockFocus(getElement());
182+
const element = getElement();
183+
if (element) {
184+
return lockFocus(element);
185+
}
180186
}
181187
}, [lock]);
182188
}

tests/focus.test.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* eslint-disable class-methods-use-this */
2-
import React, { JSX, useRef } from 'react';
3-
import { render, cleanup } from '@testing-library/react';
2+
import React, { useRef } from 'react';
3+
import { render } from '@testing-library/react';
44
import { spyElementPrototype } from '../src/test/domHook';
55
import { getFocusNodeList, triggerFocus, useLockFocus } from '../src/Dom/focus';
66

0 commit comments

Comments
 (0)