| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- # Добавление стилей компонента
- if globalThis.stylFns and globalThis.stylFns['app/components/Admin/CategoryNode/index.styl']
- styleElement = document.createElement('style')
- styleElement.type = 'text/css'
- styleElement.textContent = globalThis.stylFns['app/components/Admin/CategoryNode/index.styl']
- document.head.appendChild(styleElement)
- else
- log '⚠️ Стили CategoryNode не найдены'
- module.exports = {
- name: 'category-node'
- props:
- category:
- type: Object
- required: true
- level:
- type: Number
- default: 0
- data: ->
- {
- isExpanded: false
- isDragging: false
- isDragOver: false
- }
- computed:
- hasChildren: ->
- @category.children and @category.children.length > 0
- methods:
- toggleExpanded: ->
- @isExpanded = not @isExpanded
- onDragStart: (event) ->
- @isDragging = true
- event.dataTransfer.setData('text/plain', @category._id)
- event.dataTransfer.effectAllowed = 'move'
- log 'Начало перетаскивания категории: '+@category._id
- onDragEnd: ->
- @isDragging = false
- log 'Завершение перетаскивания'
- onDragOver: (event) ->
- event.preventDefault()
- event.dataTransfer.dropEffect = 'move'
- onDragEnter: (event) ->
- event.preventDefault()
- @isDragOver = true
- onDragLeave: ->
- @isDragOver = false
- onDrop: (event) ->
- event.preventDefault()
- @isDragOver = false
-
- draggedCategoryId = event.dataTransfer.getData('text/plain')
- if draggedCategoryId != @category._id
- @$emit('move', draggedCategoryId, @category._id)
- log 'Перемещение категории '+draggedCategoryId+' в '+@category._id
- mounted: ->
- # Автоматически раскрываем первые два уровня
- if @level < 2
- @isExpanded = true
- render: (new Function '_ctx', '_cache', globalThis.renderFns['app/components/Admin/CategoryNode/index.pug'])()
- }
|