index.pug 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. div(
  2. class="category-node"
  3. :class="{ 'category-node--expanded': isExpanded, 'category-node--dragging': isDragging,'category-node--drag-over': isDragOver}"
  4. :style="{ paddingLeft: (level * 20) + 'px' }"
  5. draggable="true"
  6. @dragstart="onDragStart"
  7. @dragend="onDragEnd"
  8. @dragover="onDragOver"
  9. @dragenter="onDragEnter"
  10. @dragleave="onDragLeave"
  11. @drop="onDrop"
  12. )
  13. div(class="category-node__header")
  14. button(
  15. v-if="hasChildren"
  16. @click="toggleExpanded"
  17. class="category-node__toggle"
  18. :title="isExpanded ? 'Свернуть' : 'Развернуть'"
  19. ) {{ isExpanded ? '−' : '+' }}
  20. span(v-else class="category-node__spacer") •
  21. span(class="category-node__name") {{ category.name }}
  22. span(class="category-node__badge") {{ category.children ? category.children.length : 0 }}
  23. div(class="category-node__actions")
  24. ui-button(
  25. @click="$emit('edit', category)"
  26. size="small"
  27. type="outline"
  28. ) ✏️
  29. ui-button(
  30. @click="$emit('delete', category)"
  31. size="small"
  32. type="danger"
  33. ) 🗑️
  34. div(v-if="isExpanded && hasChildren" class="category-node__children")
  35. category-node(
  36. v-for="child in category.children"
  37. :key="child._id"
  38. :category="child"
  39. :level="level + 1"
  40. @edit="$emit('edit', $event)"
  41. @delete="$emit('delete', $event)"
  42. @move="$emit('move', $event)"
  43. )
  44. div(v-if="isDragOver" class="category-node__drop-indicator")