🎨 插件中不绑定 TEXTAREA 回车事件

This commit is contained in:
Vanessa 2023-11-16 22:32:57 +08:00
parent cbc005119a
commit 8f639fb07f
2 changed files with 6 additions and 15 deletions

View file

@ -35,7 +35,7 @@ export class Dialog {
this.element.innerHTML = `<div class="b3-dialog" style="z-index: ${++window.siyuan.zIndex};">
<div class="b3-dialog__scrim"${options.transparent ? 'style="background-color:transparent"' : ""}></div>
<div class="b3-dialog__container" style="width:${options.width || "auto"};height:${options.height || "auto"}">
<svg ${(isMobile() && options.title) ? 'style="top:0;right:0;"' : ""} class="b3-dialog__close${(this.disableClose||options.hideCloseIcon) ? " fn__none" : ""}"><use xlink:href="#iconCloseRound"></use></svg>
<svg ${(isMobile() && options.title) ? 'style="top:0;right:0;"' : ""} class="b3-dialog__close${(this.disableClose || options.hideCloseIcon) ? " fn__none" : ""}"><use xlink:href="#iconCloseRound"></use></svg>
<div class="resize__move b3-dialog__header${options.title ? "" : " fn__none"}" onselectstart="return false;">${options.title || ""}</div>
<div class="b3-dialog__body">${options.content}</div>
<div class="resize__rd"></div><div class="resize__ld"></div><div class="resize__lt"></div><div class="resize__rt"></div><div class="resize__r"></div><div class="resize__d"></div><div class="resize__t"></div><div class="resize__l"></div>
@ -86,30 +86,21 @@ export class Dialog {
});
}
public bindInput(inputElement: HTMLInputElement | HTMLTextAreaElement, enterEvent?: () => void) {
public bindInput(inputElement: HTMLInputElement | HTMLTextAreaElement, enterEvent?: () => void, bindEnter = true) {
inputElement.focus();
inputElement.addEventListener("keydown", (event: KeyboardEvent) => {
if (event.isComposing) {
event.preventDefault();
return;
}
const confirmElement = document.querySelector("#confirmDialogConfirmBtn");
if (event.key === "Escape") {
if (confirmElement) {
confirmElement.previousElementSibling.previousElementSibling.dispatchEvent(new CustomEvent("click"));
} else {
this.destroy();
}
this.destroy();
event.preventDefault();
event.stopPropagation();
return;
}
if (!event.shiftKey && isNotCtrl(event) && event.key === "Enter" && enterEvent) {
if (confirmElement) {
confirmElement.dispatchEvent(new CustomEvent("click"));
} else {
enterEvent();
}
if (!event.shiftKey && isNotCtrl(event) && event.key === "Enter" && enterEvent && bindEnter) {
enterEvent();
event.preventDefault();
event.stopPropagation();
}

View file

@ -70,7 +70,7 @@ export class Setting {
if (["INPUT", "TEXTAREA"].includes(actionElement.tagName)) {
dialog.bindInput(actionElement as HTMLInputElement, () => {
btnsElement[1].dispatchEvent(new CustomEvent("click"));
});
}, actionElement.tagName === "INPUT");
}
if (actionElement.tagName === "TEXTAREA") {
contentElement.lastElementChild.lastElementChild.insertAdjacentElement("beforeend", actionElement);