mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-25 09:38:06 +02:00
[Editor] Make the text layer focusable before the editors (bug 1881746)
Keep the different layers in a constant order to avoid the use of a z-index and a tab-index.
This commit is contained in:
parent
0022310b9c
commit
1b00511301
14 changed files with 187 additions and 36 deletions
|
@ -318,9 +318,12 @@ async function scrollIntoView(page, selector) {
|
|||
const handle = await page.evaluateHandle(
|
||||
sel => [
|
||||
new Promise(resolve => {
|
||||
document
|
||||
.getElementById("viewerContainer")
|
||||
.addEventListener("scrollend", resolve, { once: true });
|
||||
const container = document.getElementById("viewerContainer");
|
||||
if (container.scrollHeight <= container.clientHeight) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
container.addEventListener("scrollend", resolve, { once: true });
|
||||
const element = document.querySelector(sel);
|
||||
element.scrollIntoView({ behavior: "instant", block: "start" });
|
||||
}),
|
||||
|
@ -330,6 +333,21 @@ async function scrollIntoView(page, selector) {
|
|||
return awaitPromise(handle);
|
||||
}
|
||||
|
||||
async function firstPageOnTop(page) {
|
||||
const handle = await page.evaluateHandle(() => [
|
||||
new Promise(resolve => {
|
||||
const container = document.getElementById("viewerContainer");
|
||||
if (container.scrollTop === 0 && container.scrollLeft === 0) {
|
||||
resolve();
|
||||
return;
|
||||
}
|
||||
container.addEventListener("scrollend", resolve, { once: true });
|
||||
container.scrollTo(0, 0);
|
||||
}),
|
||||
]);
|
||||
return awaitPromise(handle);
|
||||
}
|
||||
|
||||
async function hover(page, selector) {
|
||||
const rect = await page.$eval(selector, el => {
|
||||
const { x, y, width, height } = el.getBoundingClientRect();
|
||||
|
@ -461,12 +479,31 @@ async function kbDeleteLastWord(page) {
|
|||
}
|
||||
}
|
||||
|
||||
async function kbFocusNext(page) {
|
||||
const handle = await createPromise(page, resolve => {
|
||||
window.addEventListener("focusin", resolve, { once: true });
|
||||
});
|
||||
await page.keyboard.press("Tab");
|
||||
await awaitPromise(handle);
|
||||
}
|
||||
|
||||
async function kbFocusPrevious(page) {
|
||||
const handle = await createPromise(page, resolve => {
|
||||
window.addEventListener("focusin", resolve, { once: true });
|
||||
});
|
||||
await page.keyboard.down("Shift");
|
||||
await page.keyboard.press("Tab");
|
||||
await page.keyboard.up("Shift");
|
||||
await awaitPromise(handle);
|
||||
}
|
||||
|
||||
export {
|
||||
awaitPromise,
|
||||
clearInput,
|
||||
closePages,
|
||||
createPromise,
|
||||
dragAndDropAnnotation,
|
||||
firstPageOnTop,
|
||||
getAnnotationStorage,
|
||||
getComputedStyleSelector,
|
||||
getEditorDimensions,
|
||||
|
@ -484,6 +521,8 @@ export {
|
|||
kbBigMoveUp,
|
||||
kbCopy,
|
||||
kbDeleteLastWord,
|
||||
kbFocusNext,
|
||||
kbFocusPrevious,
|
||||
kbGoToBegin,
|
||||
kbGoToEnd,
|
||||
kbModifierDown,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue