Skip to content

Commit 698b18d

Browse files
committed
🎨 Improve layout selection menu
fix #15105 #14176
1 parent 8656348 commit 698b18d

File tree

2 files changed

+12
-3
lines changed

2 files changed

+12
-3
lines changed

app/src/menus/Menu.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ export class Menu {
6161
}
6262

6363
public showSubMenu(subMenuElement: HTMLElement) {
64+
subMenuElement.querySelectorAll(".b3-list-item--focus").forEach((item) => {
65+
item.classList.remove("b3-list-item--focus");
66+
});
6467
const itemRect = subMenuElement.parentElement.getBoundingClientRect();
6568
subMenuElement.style.top = (itemRect.top - 8) + "px";
6669
subMenuElement.style.left = (itemRect.right + 8) + "px";

app/src/menus/workspace.ts

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -357,7 +357,7 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
357357
return a.name.localeCompare(b.name, undefined, {numeric: true});
358358
}).forEach((item: ISaveLayout) => {
359359
if (inputElement.value === "" || item.name.toLowerCase().indexOf(inputElement.value.toLowerCase()) > -1) {
360-
html += `<div data-name="${item.name}" class="b3-list-item b3-list-item--narrow b3-list-item--hide-action ${html ? "" : "b3-list-item--focus"}">
360+
html += `<div data-name="${item.name}" class="b3-list-item b3-list-item--narrow b3-list-item--hide-action">
361361
<div class="b3-list-item__text">${item.name}</div>
362362
<span class="b3-list-item__meta">${item.time ? dayjs(item.time).format("YYYY-MM-DD HH:mm") : ""}</span>
363363
<span class="b3-list-item__action">
@@ -370,14 +370,18 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
370370
};
371371
const inputElement = menuElement.querySelector(".b3-text-field") as HTMLInputElement;
372372
const listElement = menuElement.querySelector(".b3-list");
373+
inputElement.addEventListener("focus", () => {
374+
const listItemElement = inputElement.nextElementSibling?.querySelector(".b3-list-item");
375+
listItemElement?.classList.add("b3-list-item--focus");
376+
});
373377
inputElement.addEventListener("keydown", (event) => {
374378
event.stopPropagation();
375379
if (event.isComposing) {
376380
return;
377381
}
378382
upDownHint(listElement, event);
379-
if (event.key === "Escape") {
380-
window.siyuan.menus.menu.remove();
383+
if (event.key === "Escape" || (event.key === "ArrowLeft" && inputElement.value === "")) {
384+
window.siyuan.menus.menu.remove(true);
381385
} else if (event.key === "Enter") {
382386
const currentElement = listElement.querySelector(".b3-list-item--focus");
383387
if (currentElement) {
@@ -394,6 +398,8 @@ export const workspaceMenu = (app: App, rect: DOMRect) => {
394398
}
395399
event.stopPropagation();
396400
listElement.innerHTML = genListHTML();
401+
const listItemElement = inputElement.nextElementSibling?.querySelector(".b3-list-item");
402+
listItemElement?.classList.add("b3-list-item--focus");
397403
});
398404
listElement.addEventListener("click", (event: MouseEvent) => {
399405
if (window.siyuan.config.readonly) {

0 commit comments

Comments
 (0)