diff --git a/app/src/protyle/hint/index.ts b/app/src/protyle/hint/index.ts index 4816bb1ab..9dc20f352 100644 --- a/app/src/protyle/hint/index.ts +++ b/app/src/protyle/hint/index.ts @@ -31,6 +31,7 @@ import { } from "../../emoji"; import {blockRender} from "../render/blockRender"; import {uploadFiles} from "../upload"; +import {isAbnormalItem} from "../../util/upDownHint"; /// #if !MOBILE import {openFileById} from "../../editor/util"; /// #endif @@ -290,6 +291,14 @@ ${unicode2Emoji(emoji.unicode)}`; /// #endif } this.element.scrollTop = 0; + let currentHintElement = this.element.querySelector(".b3-list-item--focus") as HTMLElement; + if (isAbnormalItem(currentHintElement, "b3-list-item")) { + currentHintElement.classList.remove("b3-list-item--focus"); + do { + currentHintElement = currentHintElement.nextElementSibling as HTMLElement; + } while (isAbnormalItem(currentHintElement, "b3-list-item")); + currentHintElement?.classList.add("b3-list-item--focus"); + } this.bindUploadEvent(protyle, this.element); if (this.source !== "hint") { const searchElement = this.element.querySelector("input.b3-text-field") as HTMLInputElement; diff --git a/app/src/util/upDownHint.ts b/app/src/util/upDownHint.ts index 0e6614b6e..1b32684a2 100644 --- a/app/src/util/upDownHint.ts +++ b/app/src/util/upDownHint.ts @@ -1,5 +1,5 @@ -const isNormalItem = (currentHintElement: HTMLElement, className: string) => { - return !currentHintElement.classList.contains(className) || currentHintElement.getBoundingClientRect().height === 0; +export const isAbnormalItem = (currentHintElement: HTMLElement, className: string) => { + return !currentHintElement || !currentHintElement.classList.contains(className) || currentHintElement.getBoundingClientRect().height === 0; }; export const upDownHint = (listElement: Element, event: KeyboardEvent, classActiveName = "b3-list-item--focus", defaultElement?: Element) => { @@ -19,13 +19,13 @@ export const upDownHint = (listElement: Element, event: KeyboardEvent, classActi currentHintElement.classList.remove(classActiveName); currentHintElement = currentHintElement.nextElementSibling as HTMLElement; - while (currentHintElement && isNormalItem(currentHintElement, className)) { + while (isAbnormalItem(currentHintElement, className)) { currentHintElement = currentHintElement.nextElementSibling as HTMLElement; } if (!currentHintElement) { currentHintElement = listElement.children[0] as HTMLElement; - while (currentHintElement && isNormalItem(currentHintElement, className)) { + while (isAbnormalItem(currentHintElement, className)) { currentHintElement = currentHintElement.nextElementSibling as HTMLElement; } } @@ -44,7 +44,7 @@ export const upDownHint = (listElement: Element, event: KeyboardEvent, classActi currentHintElement.classList.remove(classActiveName); currentHintElement = currentHintElement.previousElementSibling as HTMLElement; - while (currentHintElement && isNormalItem(currentHintElement, className)) { + while (isAbnormalItem(currentHintElement, className)) { currentHintElement = currentHintElement.previousElementSibling as HTMLElement; } @@ -70,7 +70,7 @@ export const upDownHint = (listElement: Element, event: KeyboardEvent, classActi event.stopPropagation(); currentHintElement.classList.remove(classActiveName); currentHintElement = listElement.children[0] as HTMLElement; - while (currentHintElement && isNormalItem(currentHintElement, className)) { + while (isAbnormalItem(currentHintElement, className)) { currentHintElement = currentHintElement.nextElementSibling as HTMLElement; } if (!currentHintElement) { @@ -84,7 +84,7 @@ export const upDownHint = (listElement: Element, event: KeyboardEvent, classActi event.stopPropagation(); currentHintElement.classList.remove(classActiveName); currentHintElement = listElement.children[listElement.children.length - 1] as HTMLElement; - while (currentHintElement && isNormalItem(currentHintElement, className)) { + while (isAbnormalItem(currentHintElement, className)) { currentHintElement = currentHintElement.previousElementSibling as HTMLElement; } if (!currentHintElement) {