Treeview.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /**
  2. * --------------------------------------------
  3. * AdminLTE treeview.ts
  4. * License MIT
  5. * --------------------------------------------
  6. */
  7. import {
  8. windowReady
  9. } from './util/index'
  10. /**
  11. * ------------------------------------------------------------------------
  12. * Constants
  13. * ------------------------------------------------------------------------
  14. */
  15. const CLASS_NAME_MENU_OPEN = 'menu-open'
  16. const SELECTOR_NAV_ITEM = '.nav-item'
  17. const SELECTOR_DATA_TOGGLE = '[data-widget="treeview"]'
  18. /**
  19. * Class Definition
  20. * ====================================================
  21. */
  22. class Treeview {
  23. toggle(treeviewMenu: Element): void {
  24. const navItem = treeviewMenu.closest(SELECTOR_NAV_ITEM)
  25. if (navItem?.classList.contains(CLASS_NAME_MENU_OPEN)) {
  26. navItem.classList.remove(CLASS_NAME_MENU_OPEN)
  27. } else {
  28. navItem?.classList.add(CLASS_NAME_MENU_OPEN)
  29. }
  30. }
  31. }
  32. /**
  33. * ------------------------------------------------------------------------
  34. * Data Api implementation
  35. * ------------------------------------------------------------------------
  36. */
  37. const button = document.querySelectorAll(SELECTOR_DATA_TOGGLE)
  38. windowReady(() => {
  39. for (const btn of button) {
  40. btn.addEventListener('click', event => {
  41. event.preventDefault()
  42. const treeviewMenu = event.target as Element
  43. const data = new Treeview()
  44. data.toggle(treeviewMenu)
  45. })
  46. }
  47. })
  48. export default Treeview
  49. //