Procházet zdrojové kódy

Fix 修复下拉子菜单显示异常

YueYunyun před 1 rokem
rodič
revize
be6dbe1d97

+ 7 - 8
UI/VAP_V3.VUE/src/core/vb-dom/components/_MenuComponent.ts

@@ -517,7 +517,6 @@ class MenuComponent {
 		if (!EventHandlerUtil.trigger(this.element, "vb.menu.accordion.show")) {
 			return
 		}
-
 		if (!this.options.accordion.expand) {
 			this._hideAccordions(item)
 		}
@@ -897,17 +896,15 @@ class MenuComponent {
 		const items = document.querySelectorAll<HTMLElement>(
 			`.show.menu-dropdown[${prefix}menu-trigger]`
 		)
-
 		if (items && items.length > 0) {
 			for (let i = 0, len = items.length; i < len; i++) {
 				const item = items[i]
 				const menu = MenuComponent.getInstance(item)
-
 				if (menu && menu.getItemSubType(item) === "dropdown") {
 					if (skip) {
 						if (
-							menu.getItemSubElement(item)?.contains(skip) &&
-							!item.contains(skip) &&
+							menu.getItemSubElement(item)?.contains(skip) === false &&
+							item.contains(skip) === false &&
 							item !== skip
 						) {
 							menu.hide(item)
@@ -937,7 +934,7 @@ class MenuComponent {
 		// 初始化菜单
 		document.querySelectorAll(selector).forEach((el) => {
 			const menuItem = el as HTMLElement
-			// console.log("MENU", menuItem)
+			//console.log("MENU", menuItem)
 			let menuInstance = MenuComponent.getInstance(menuItem)
 			if (!menuInstance) {
 				menuInstance = new MenuComponent(el as HTMLElement, defaultMenuOptions)
@@ -959,10 +956,12 @@ class MenuComponent {
 						// eslint-disable-next-line @typescript-eslint/no-unused-vars
 						const menu = menuObj.getElement()
 						const sub = menuObj.getItemSubElement(item) as HTMLElement
-						if (item === e.target ?? item.contains(e.target as HTMLElement)) {
+						console.log("menuObj", item, menuObj, menu, sub, e.target)
+						console.log("2222", menu === e.target, menu.contains(e.target as HTMLElement))
+						if (menu === e.target || menu.contains(e.target as HTMLElement)) {
 							continue
 						}
-						if (sub && (sub === e.target ?? sub.contains(e.target as HTMLElement))) {
+						if (sub && (sub === e.target || sub.contains(e.target as HTMLElement))) {
 							continue
 						}
 						menuObj.hide(item)