-
+
@@ -1491,16 +1518,29 @@ export class Toolbar {
});
this.subElement.lastElementChild.addEventListener("click", (event) => {
const target = event.target as HTMLElement;
+ const previousElement = hasClosestByAttribute(target, "data-type", "previous");
+ if (previousElement) {
+ inputElement.dispatchEvent(new KeyboardEvent("keydown", {key: "ArrowUp"}));
+ event.stopPropagation();
+ return;
+ }
+ const nextElement = hasClosestByAttribute(target, "data-type", "next");
+ if (nextElement) {
+ inputElement.dispatchEvent(new KeyboardEvent("keydown", {key: "ArrowDown"}));
+ event.stopPropagation();
+ return;
+ }
if (target.classList.contains("b3-list--empty")) {
this.subElement.classList.add("fn__none");
focusByRange(this.range);
+ event.stopPropagation();
return;
}
const listItemElement = hasClosestByClassName(target, "b3-list-item");
- if (!listItemElement) {
- return;
+ if (listItemElement) {
+ event.stopPropagation();
+ hintRenderAssets(listItemElement.getAttribute("data-value"), protyle);
}
- hintRenderAssets(listItemElement.getAttribute("data-value"), protyle);
});
const rangePosition = getSelectionPosition(nodeElement, range);
this.subElement.classList.remove("fn__none");
diff --git a/app/src/util/upDownHint.ts b/app/src/util/upDownHint.ts
index f29b97b26..39adbb032 100644
--- a/app/src/util/upDownHint.ts
+++ b/app/src/util/upDownHint.ts
@@ -1,6 +1,5 @@
export const upDownHint = (listElement: Element, event: KeyboardEvent) => {
let currentHintElement: HTMLElement = listElement.querySelector(".b3-list-item--focus");
-
if (event.key === "ArrowDown") {
event.preventDefault();
event.stopPropagation();
@@ -17,7 +16,7 @@ export const upDownHint = (listElement: Element, event: KeyboardEvent) => {
currentHintElement = listElement.querySelector(".b3-list-item--focus");
if (listElement.scrollTop < currentHintElement.offsetTop - listElement.clientHeight + currentHintElement.clientHeight ||
listElement.scrollTop > currentHintElement.offsetTop) {
- listElement.scrollTop = currentHintElement.offsetTop - listElement.clientHeight + currentHintElement.clientHeight;
+ currentHintElement.scrollIntoView(listElement.scrollTop > currentHintElement.offsetTop)
}
return currentHintElement;
} else if (event.key === "ArrowUp") {
@@ -37,7 +36,7 @@ export const upDownHint = (listElement: Element, event: KeyboardEvent) => {
currentHintElement = listElement.querySelector(".b3-list-item--focus");
if (listElement.scrollTop < currentHintElement.offsetTop - listElement.clientHeight + currentHintElement.clientHeight ||
listElement.scrollTop > currentHintElement.offsetTop - currentHintElement.clientHeight * 2) {
- listElement.scrollTop = currentHintElement.offsetTop - currentHintElement.clientHeight * 2;
+ currentHintElement.scrollIntoView(listElement.scrollTop > currentHintElement.offsetTop - currentHintElement.clientHeight * 2)
}
return currentHintElement;
}