Skip to content

Commit 0e42c33

Browse files
BrianHungCopilot
andauthored
use unicode character class for editOnType (#959)
* use unicode character class for editOnType * add symbols and punctuation * add test case * fix react 18 setup * drop global flag from regex Co-authored-by: Copilot <[email protected]> --------- Co-authored-by: Copilot <[email protected]>
1 parent eb51324 commit 0e42c33

File tree

2 files changed

+47
-25
lines changed

2 files changed

+47
-25
lines changed

packages/core/src/data-editor/data-editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3342,7 +3342,7 @@ const DataEditorImpl: React.ForwardRefRenderFunction<DataEditorRef, DataEditorPr
33423342
!event.ctrlKey &&
33433343
gridSelection.current !== undefined &&
33443344
event.key.length === 1 &&
3345-
/[ -~]/g.test(event.key) &&
3345+
/[\p{L}\p{M}\p{N}\p{S}\p{P}]/u.test(event.key) &&
33463346
event.bounds !== undefined &&
33473347
isReadWriteCell(getCellContent([col - rowMarkerOffset, Math.max(0, Math.min(row, rows - 1))]))
33483348
) {

packages/core/test/data-editor.test.tsx

Lines changed: 46 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,30 +1396,52 @@ describe("data-editor", () => {
13961396
clientX: 300, // Col B
13971397
clientY: 36 + 32 + 16, // Row 1 (0 indexed)
13981398
});
1399-
1400-
fireEvent.keyDown(canvas, {
1401-
keyCode: 74,
1402-
key: "j",
1403-
});
1404-
1405-
fireEvent.keyUp(canvas, {
1406-
keyCode: 74,
1407-
key: "j",
1408-
});
1409-
1410-
const overlay = screen.getByDisplayValue("j");
1411-
expect(document.body.contains(overlay)).toBe(true);
1412-
1413-
vi.useFakeTimers();
1414-
fireEvent.keyDown(overlay, {
1415-
key: "Escape",
1416-
});
1417-
1418-
act(() => {
1419-
vi.runAllTimers();
1420-
});
1421-
1422-
expect(document.body.contains(overlay)).toBe(false);
1399+
1400+
const testKeys = [
1401+
{
1402+
keyCode: 74,
1403+
key: "j",
1404+
},
1405+
{
1406+
keyCode: 381,
1407+
key: "ž",
1408+
},
1409+
{
1410+
keyCode: 246,
1411+
key: "ö",
1412+
},
1413+
{
1414+
keyCode: 1096,
1415+
key: "ш",
1416+
},
1417+
{
1418+
keyCode: 187,
1419+
key: "+",
1420+
},
1421+
{
1422+
keyCode: 222,
1423+
key: "'",
1424+
},
1425+
]
1426+
1427+
for (const key of testKeys) {
1428+
fireEvent.keyDown(canvas, key);
1429+
fireEvent.keyUp(canvas, key);
1430+
1431+
const overlay = screen.getByDisplayValue(key.key);
1432+
expect(document.body.contains(overlay)).toBe(true);
1433+
1434+
vi.useFakeTimers();
1435+
fireEvent.keyDown(overlay, {
1436+
key: "Escape",
1437+
});
1438+
1439+
act(() => {
1440+
vi.runAllTimers();
1441+
});
1442+
1443+
expect(document.body.contains(overlay)).toBe(false);
1444+
}
14231445
});
14241446

14251447
test("Open overlay with keypress when prior is disabled", async () => {

0 commit comments

Comments
 (0)