index.coffee 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. # Добавление стилей компонента
  2. if globalThis.stylFns and globalThis.stylFns['app/components/Admin/CategoryNode/index.styl']
  3. styleElement = document.createElement('style')
  4. styleElement.type = 'text/css'
  5. styleElement.textContent = globalThis.stylFns['app/components/Admin/CategoryNode/index.styl']
  6. document.head.appendChild(styleElement)
  7. else
  8. log '⚠️ Стили CategoryNode не найдены'
  9. module.exports = {
  10. name: 'category-node'
  11. props:
  12. category:
  13. type: Object
  14. required: true
  15. level:
  16. type: Number
  17. default: 0
  18. data: ->
  19. {
  20. isExpanded: false
  21. isDragging: false
  22. isDragOver: false
  23. }
  24. computed:
  25. hasChildren: ->
  26. @category.children and @category.children.length > 0
  27. methods:
  28. toggleExpanded: ->
  29. @isExpanded = not @isExpanded
  30. onDragStart: (event) ->
  31. @isDragging = true
  32. event.dataTransfer.setData('text/plain', @category._id)
  33. event.dataTransfer.effectAllowed = 'move'
  34. log 'Начало перетаскивания категории: '+@category._id
  35. onDragEnd: ->
  36. @isDragging = false
  37. log 'Завершение перетаскивания'
  38. onDragOver: (event) ->
  39. event.preventDefault()
  40. event.dataTransfer.dropEffect = 'move'
  41. onDragEnter: (event) ->
  42. event.preventDefault()
  43. @isDragOver = true
  44. onDragLeave: ->
  45. @isDragOver = false
  46. onDrop: (event) ->
  47. event.preventDefault()
  48. @isDragOver = false
  49. draggedCategoryId = event.dataTransfer.getData('text/plain')
  50. if draggedCategoryId != @category._id
  51. @$emit('move', draggedCategoryId, @category._id)
  52. log 'Перемещение категории '+draggedCategoryId+' в '+@category._id
  53. mounted: ->
  54. # Автоматически раскрываем первые два уровня
  55. if @level < 2
  56. @isExpanded = true
  57. render: (new Function '_ctx', '_cache', globalThis.renderFns['app/components/Admin/CategoryNode/index.pug'])()
  58. }