Vanessa 2023-03-06 11:04:39 +08:00
parent fc0e5bdf01
commit b73396a5f9
6 changed files with 91 additions and 20 deletions

View file

@ -12,8 +12,21 @@ export class Menu {
this.wheelEvent = "onwheel" in document.createElement("div") ? "wheel" : "mousewheel";
this.element = document.getElementById("commonMenu");
this.element.addEventListener(isMobile() ? getEventName() : "mouseover", (event) => {
this.element.addEventListener(isMobile() ? "click" : "mouseover", (event) => {
const target = event.target as Element;
if (isMobile()) {
const titleElement = hasClosestByClassName(target, "b3-menu__title");
if (titleElement) {
const lastShowElements = this.element.querySelectorAll(".b3-menu__item--show");
if (lastShowElements.length > 0) {
lastShowElements[lastShowElements.length - 1].classList.remove("b3-menu__item--show");
} else {
this.remove();
}
return;
}
}
const itemElement = hasClosestByClassName(target, "b3-menu__item");
if (!itemElement) {
return;
@ -35,7 +48,9 @@ export class Menu {
return;
}
itemElement.classList.add("b3-menu__item--show");
this.showSubMenu(subMenuElement);
if (!this.element.classList.contains("b3-menu--fullscreen")) {
this.showSubMenu(subMenuElement);
}
});
}
@ -102,6 +117,15 @@ export class Menu {
this.element.classList.remove("fn__none");
setPosition(this.element, options.x - (isLeft ? window.siyuan.menus.menu.element.clientWidth : 0), options.y, options.h, options.w);
}
public fullscreen () {
this.element.classList.add("b3-menu--fullscreen");
this.element.insertAdjacentHTML("afterbegin", `<div class="b3-menu__title">
<svg><use xlink:href="#iconLeft"></use></svg>
${window.siyuan.languages.back}
</div>`);
this.popup({x: 0, y: 0});
}
}
export class MenuItem {