فهرست منبع

bug fix minor js code

Daniel 1 سال پیش
والد
کامیت
1db7283ba9
6فایلهای تغییر یافته به همراه30 افزوده شده و 26 حذف شده
  1. 2 2
      src/ts/card-widget.ts
  2. 2 2
      src/ts/direct-chat.ts
  3. 2 2
      src/ts/layout.ts
  4. 2 2
      src/ts/push-menu.ts
  5. 8 6
      src/ts/treeview.ts
  6. 14 12
      src/ts/util/index.ts

+ 2 - 2
src/ts/card-widget.ts

@@ -6,7 +6,7 @@
  */
 
 import {
-  domReady,
+  onDOMContentLoaded,
   slideUp,
   slideDown
 } from './util/index'
@@ -243,7 +243,7 @@ class CardWidget {
  * ====================================================
  */
 
-domReady(() => {
+onDOMContentLoaded(() => {
   const collapseBtn = document.querySelectorAll(SELECTOR_DATA_COLLAPSE)
 
   collapseBtn.forEach(btn => {

+ 2 - 2
src/ts/direct-chat.ts

@@ -6,7 +6,7 @@
  */
 
 import {
-  domReady
+  onDOMContentLoaded
 } from './util/index'
 
 /**
@@ -58,7 +58,7 @@ class DirectChat {
  * ====================================================
  */
 
-domReady(() => {
+onDOMContentLoaded(() => {
   const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE)
 
   button.forEach(btn => {

+ 2 - 2
src/ts/layout.ts

@@ -6,7 +6,7 @@
  */
 
 import {
-  domReady
+  onDOMContentLoaded
 } from './util/index'
 
 /**
@@ -42,7 +42,7 @@ class Layout {
   }
 }
 
-domReady(() => {
+onDOMContentLoaded(() => {
   const data = new Layout(document.body)
   data.holdTransition()
   setTimeout(() => {

+ 2 - 2
src/ts/push-menu.ts

@@ -6,7 +6,7 @@
  */
 
 import {
-  domReady
+  onDOMContentLoaded
 } from './util/index'
 
 /**
@@ -134,7 +134,7 @@ class PushMenu {
  * ------------------------------------------------------------------------
  */
 
-domReady(() => {
+onDOMContentLoaded(() => {
   const sidebar = document?.querySelector(SELECTOR_APP_SIDEBAR) as HTMLElement | undefined
 
   if (sidebar) {

+ 8 - 6
src/ts/treeview.ts

@@ -1,3 +1,4 @@
+/* eslint-disable no-console */
 /**
  * --------------------------------------------
  * AdminLTE treeview.ts
@@ -6,7 +7,7 @@
  */
 
 import {
-  domReady,
+  onDOMContentLoaded,
   slideDown,
   slideUp
 } from './util/index'
@@ -27,6 +28,7 @@ const EVENT_COLLAPSED = `collapsed${EVENT_KEY}`
 
 const CLASS_NAME_MENU_OPEN = 'menu-open'
 const SELECTOR_NAV_ITEM = '.nav-item'
+const SELECTOR_NAV_LINK = '.nav-link'
 const SELECTOR_TREEVIEW_MENU = '.nav-treeview'
 const SELECTOR_DATA_TOGGLE = '[data-lte-toggle="treeview"]'
 
@@ -93,19 +95,19 @@ class Treeview {
  * ------------------------------------------------------------------------
  */
 
-domReady(() => {
+onDOMContentLoaded(() => {
   const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE)
 
   button.forEach(btn => {
     btn.addEventListener('click', event => {
-      const target = event.target as HTMLAnchorElement
+      const target = event.target as HTMLElement
+      const targetItem = target.closest(SELECTOR_NAV_ITEM) as HTMLElement | undefined
+      const targetLink = target.closest(SELECTOR_NAV_LINK) as HTMLAnchorElement | undefined
 
-      if (target.getAttribute('href') === '#') {
+      if (target?.getAttribute('href') === '#' || targetLink?.getAttribute('href') === '#') {
         event.preventDefault()
       }
 
-      const targetItem = target.closest(SELECTOR_NAV_ITEM) as HTMLElement | undefined
-
       if (targetItem) {
         const data = new Treeview(targetItem, Default)
         data.toggle()

+ 14 - 12
src/ts/util/index.ts

@@ -1,16 +1,19 @@
-const domReady = (callBack: () => void) => {
+const domContentLoadedCallbacks: Array<() => void> = []
+
+const onDOMContentLoaded = (callback: () => void): void => {
   if (document.readyState === 'loading') {
-    document.addEventListener('DOMContentLoaded', callBack)
-  } else {
-    callBack()
-  }
-}
+    // add listener on the first call when the document is in loading state
+    if (!domContentLoadedCallbacks.length) {
+      document.addEventListener('DOMContentLoaded', () => {
+        for (const callback of domContentLoadedCallbacks) {
+          callback()
+        }
+      })
+    }
 
-const windowReady = (callBack: () => void) => {
-  if (document.readyState === 'complete') {
-    callBack()
+    domContentLoadedCallbacks.push(callback)
   } else {
-    window.addEventListener('load', callBack)
+    callback()
   }
 }
 
@@ -91,8 +94,7 @@ const slideToggle = (target: HTMLElement, duration = 500) => {
 }
 
 export {
-  domReady,
-  windowReady,
+  onDOMContentLoaded,
   slideUp,
   slideDown,
   slideToggle