mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-05-28 18:26:54 +00:00
fix(client): use requestAnimationFrame to focus editor on mount in Firefox (#66405)
This commit is contained in:
@@ -1115,10 +1115,12 @@ const Editor = (props: EditorProps): JSX.Element => {
|
|||||||
if (!editor || !canFocusOnMountRef.current) return;
|
if (!editor || !canFocusOnMountRef.current) return;
|
||||||
if (!props.usesMultifileEditor) {
|
if (!props.usesMultifileEditor) {
|
||||||
// Only one editor? Focus it.
|
// Only one editor? Focus it.
|
||||||
editor.focus();
|
// Use requestAnimationFrame to ensure focus works in browsers like
|
||||||
|
// Firefox that have stricter programmatic focus policies.
|
||||||
|
requestAnimationFrame(() => editor.focus());
|
||||||
canFocusOnMountRef.current = false;
|
canFocusOnMountRef.current = false;
|
||||||
} else if (hasEditableRegion()) {
|
} else if (hasEditableRegion()) {
|
||||||
editor.focus();
|
requestAnimationFrame(() => editor.focus());
|
||||||
canFocusOnMountRef.current = false;
|
canFocusOnMountRef.current = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -23,6 +23,12 @@ test.use({
|
|||||||
viewport: { width: 1080, height: 720 }
|
viewport: { width: 1080, height: 720 }
|
||||||
});
|
});
|
||||||
|
|
||||||
|
test('Editor is focused on load', async ({ page }) => {
|
||||||
|
await page.goto(workshopChallengeUrl);
|
||||||
|
|
||||||
|
await expect(getEditors(page)).toBeFocused();
|
||||||
|
});
|
||||||
|
|
||||||
test('Clicking "Check Your Code" reveals failing feedback', async ({
|
test('Clicking "Check Your Code" reveals failing feedback', async ({
|
||||||
page
|
page
|
||||||
}) => {
|
}) => {
|
||||||
|
|||||||
Reference in New Issue
Block a user