mirror of
https://github.com/siyuan-note/siyuan.git
synced 2025-12-17 07:00:12 +01:00
🎨 Improve slash menu (#15731)
fix https://github.com/siyuan-note/siyuan/issues/12518
This commit is contained in:
parent
006da6bc90
commit
adca241ed5
2 changed files with 16 additions and 7 deletions
|
|
@ -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)}</button>`;
|
|||
/// #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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue