Browse Source

Treeview accordance (#5345)

Daniel 1 year ago
parent
commit
8dcc863aed
1 changed files with 17 additions and 1 deletions
  1. 17 1
      src/ts/treeview.ts

+ 17 - 1
src/ts/treeview.ts

@@ -33,11 +33,13 @@ const SELECTOR_TREEVIEW_MENU = '.nav-treeview'
 const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="treeview"]'
 const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="treeview"]'
 
 
 const Default = {
 const Default = {
-  animationSpeed: 300
+  animationSpeed: 300,
+  accordion: true
 }
 }
 
 
 type Config = {
 type Config = {
   animationSpeed: number;
   animationSpeed: number;
+  accordion: boolean;
 }
 }
 
 
 /**
 /**
@@ -57,6 +59,20 @@ class Treeview {
   open(): void {
   open(): void {
     const event = new Event(EVENT_EXPANDED)
     const event = new Event(EVENT_EXPANDED)
 
 
+    if (this._config.accordion) {
+      const openMenuList = this._element.parentElement?.querySelectorAll(`${SELECTOR_NAV_ITEM}.${CLASS_NAME_MENU_OPEN}`)
+
+      openMenuList?.forEach(openMenu => {
+        if (openMenu !== this._element.parentElement) {
+          openMenu.classList.remove(CLASS_NAME_MENU_OPEN)
+          const childElement = openMenu?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
+          if (childElement) {
+            slideUp(childElement, this._config.animationSpeed)
+          }
+        }
+      })
+    }
+
     this._element.classList.add(CLASS_NAME_MENU_OPEN)
     this._element.classList.add(CLASS_NAME_MENU_OPEN)
 
 
     const childElement = this._element?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined
     const childElement = this._element?.querySelector(SELECTOR_TREEVIEW_MENU) as HTMLElement | undefined