Skip to content

Commit 2bda4bc

Browse files
committed
chore: adjust
1 parent 88d5bbb commit 2bda4bc

2 files changed

Lines changed: 42 additions & 48 deletions

File tree

src/KeyCode.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -527,7 +527,6 @@ const KeyCode = {
527527

528528
const tagName = target.tagName;
529529
if (
530-
e.isComposing ||
531530
tagName === 'INPUT' ||
532531
tagName === 'TEXTAREA' ||
533532
tagName === 'SELECT' ||

tests/KeyCode.test.ts

Lines changed: 42 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,48 @@
11
import KeyCode from '../src/KeyCode';
2+
import { createEvent } from '@testing-library/react';
23

34
describe('KeyCode.isEditableTarget', () => {
4-
function testIsEditableTarget(
5-
listenTarget: EventTarget,
6-
dispatchTarget: EventTarget,
7-
init?: KeyboardEventInit,
8-
) {
9-
let result: boolean | undefined;
10-
11-
const handler = (e: KeyboardEvent) => {
12-
result = KeyCode.isEditableTarget(e);
13-
};
14-
15-
listenTarget.addEventListener('keydown', handler);
16-
dispatchTarget.dispatchEvent(new KeyboardEvent('keydown', init));
17-
listenTarget.removeEventListener('keydown', handler);
18-
19-
return result;
20-
}
21-
22-
it('check non-editable target', () => {
23-
const div = document.createElement('div');
24-
const result1 = testIsEditableTarget(window, window);
25-
const result2 = testIsEditableTarget(div, div);
26-
27-
expect(result1).toBe(false);
28-
expect(result2).toBe(false);
29-
});
30-
31-
it('IME composing', () => {
32-
const input = document.createElement('input');
33-
const result = testIsEditableTarget(input, input, { isComposing: true });
34-
35-
expect(result).toBe(true);
36-
});
37-
385
it('check editable target', () => {
39-
const input = document.createElement('input');
40-
document.body.appendChild(input);
41-
const editable = document.createElement('div');
42-
// mock isContentEditable cause JSDOM don't support it
43-
Object.defineProperty(editable, 'isContentEditable', { value: true });
44-
45-
const result1 = testIsEditableTarget(window, input, { bubbles: true });
46-
const result2 = testIsEditableTarget(editable, editable);
47-
48-
document.body.removeChild(input);
49-
50-
expect(result1).toBe(true);
51-
expect(result2).toBe(true);
6+
const eleList = [
7+
{
8+
element: 'window',
9+
expected: false,
10+
},
11+
{
12+
element: 'div',
13+
expected: false,
14+
},
15+
{
16+
element: 'input',
17+
expected: true,
18+
},
19+
{
20+
element: 'textarea',
21+
expected: true,
22+
},
23+
{
24+
element: 'select',
25+
expected: true,
26+
},
27+
{
28+
element: 'div',
29+
isContentEditable: true,
30+
expected: true,
31+
},
32+
];
33+
34+
eleList.forEach(({ element, isContentEditable, expected }) => {
35+
const target =
36+
element === 'window' ? window : document.createElement(element);
37+
if (isContentEditable) {
38+
// mock isContentEditable cause JSDOM don't support it
39+
Object.defineProperty(target, 'isContentEditable', { value: true });
40+
}
41+
const event = createEvent.keyDown(target) as KeyboardEvent;
42+
target.dispatchEvent(event);
43+
const result = KeyCode.isEditableTarget(event);
44+
45+
expect(result).toBe(expected);
46+
});
5247
});
5348
});

0 commit comments

Comments
 (0)