(e, item)
| 533 | } |
| 534 | |
| 535 | handleDraggable(e, item) { |
| 536 | let data = item.getMetadata('data'); |
| 537 | let dropDetailsFunc = this.getDraggable(data._type); |
| 538 | |
| 539 | if (dropDetailsFunc != null) { |
| 540 | let dropDetails = dropDetailsFunc(data, item, this.getTreeNodeHierarchy(item)); |
| 541 | |
| 542 | if (typeof dropDetails == 'string') { |
| 543 | dropDetails = { |
| 544 | text: dropDetails, |
| 545 | cur: { |
| 546 | from: dropDetails.length, |
| 547 | to: dropDetails.length, |
| 548 | }, |
| 549 | }; |
| 550 | } else if (!dropDetails.cur) { |
| 551 | dropDetails = { |
| 552 | ...dropDetails, |
| 553 | cur: { |
| 554 | from: dropDetails.text.length, |
| 555 | to: dropDetails.text.length, |
| 556 | }, |
| 557 | }; |
| 558 | } |
| 559 | |
| 560 | e.dataTransfer.setData('text', JSON.stringify(dropDetails)); |
| 561 | /* Required by Firefox */ |
| 562 | if (e.dataTransfer.dropEffect) { |
| 563 | e.dataTransfer.dropEffect = 'move'; |
| 564 | } |
| 565 | |
| 566 | /* setDragImage is not supported in IE. We leave it to |
| 567 | * its default look and feel |
| 568 | */ |
| 569 | const dropText = _.escape(dropDetails.text); |
| 570 | if(!dropText) { |
| 571 | e.preventDefault(); |
| 572 | } |
| 573 | if (e.dataTransfer.setDragImage) { |
| 574 | const dragItem = document.createElement('div'); |
| 575 | dragItem.classList.add('drag-tree-node'); |
| 576 | dragItem.innerHTML = `<span>${dropText}</span>`; |
| 577 | |
| 578 | document.querySelector('body .drag-tree-node')?.remove(); |
| 579 | document.body.appendChild(dragItem); |
| 580 | |
| 581 | e.dataTransfer.setDragImage(dragItem, 0, 0); |
| 582 | } |
| 583 | } |
| 584 | else { |
| 585 | e.preventDefault(); |
| 586 | } |
| 587 | } |
| 588 | |
| 589 | onNodeCopy(copyCallback) { |
| 590 | this.copyHandler = copyCallback; |
no test coverage detected