index.coffee 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. # app/shared/MultiLevelMenu/index.coffee
  2. document.head.insertAdjacentHTML('beforeend','<style type="text/tailwindcss">'+stylFns['app/shared/MultiLevelMenu/index.styl']+'</style>')
  3. module.exports =
  4. name: 'MultiLevelMenu'
  5. render: (new Function '_ctx', '_cache', renderFns['app/shared/MultiLevelMenu/index.pug'])()
  6. data: ->
  7. openSubmenu: null
  8. openSubsubmenu: null
  9. isMobileMenuOpen: false
  10. menuItems: [
  11. {
  12. id: 1
  13. title: 'Мероприятия'
  14. children: [
  15. {
  16. id: 11
  17. title: 'Концерты'
  18. children: [
  19. { id: 111, title: 'Классическая музыка' }
  20. { id: 112, title: 'Фольклорные концерты' }
  21. { id: 113, title: 'Джазовые вечера' }
  22. ]
  23. }
  24. {
  25. id: 12
  26. title: 'Фестивали'
  27. children: [
  28. { id: 121, title: 'Музыкальные фестивали' }
  29. { id: 122, title: 'Международные события' }
  30. ]
  31. }
  32. { id: 13, title: 'Все мероприятия' }
  33. ]
  34. }
  35. {
  36. id: 2
  37. title: 'О зале'
  38. children: [
  39. { id: 21, title: 'История' }
  40. { id: 22, title: 'Архитектура' }
  41. { id: 23, title: 'Акустика' }
  42. { id: 24, title: 'Галерея' }
  43. ]
  44. }
  45. {
  46. id: 3
  47. title: 'Посетителям'
  48. children: [
  49. { id: 31, title: 'Как добраться' }
  50. { id: 32, title: 'Правила посещения' }
  51. { id: 33, title: 'Доступная среда' }
  52. { id: 34, title: 'Архив мероприятий' }
  53. ]
  54. }
  55. { id: 4, title: 'Контакты' }
  56. ]
  57. beforeUnmount: ->
  58. debug.log "slider start"
  59. methods:
  60. getMenuItemClasses: (item) ->
  61. baseClasses = 'text-gray-700 dark:text-gray-300 hover:text-accent dark:hover:text-accent'
  62. activeClasses = if @openSubmenu == item.id then 'bg-accent bg-opacity-10 text-accent' else 'hover:bg-gray-100 dark:hover:bg-gray-700'
  63. return "#{baseClasses} #{activeClasses}"
  64. handleMobileClick: (item) ->
  65. if window.innerWidth < 768
  66. if item.children
  67. @openSubmenu = if @openSubmenu == item.id then null else item.id
  68. else
  69. @isMobileMenuOpen = false
  70. # Навигация к странице