Skip to content
Snippets Groups Projects
Commit d70c72eb authored by Andreas Kienast's avatar Andreas Kienast Committed by Benjamin Franzke
Browse files

[BUGFIX] Avoid text selection when dragging tree nodes

The drag&drop issue reported in #103877 also affects the icons in the
page tree, which was not fixed back then. This commit now takes care of
the page tree icons as well.

Resolves: #104033
Related: #103877
Releases: 12.4, 11.5
Change-Id: I92381a07bfba2d90d7fc1a85097c54f0d4a7b282
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/84593


Reviewed-by: default avatarOliver Hader <oliver.hader@typo3.org>
Tested-by: default avatarBenjamin Franzke <ben@bnf.dev>
Tested-by: default avatarOliver Hader <oliver.hader@typo3.org>
Reviewed-by: default avatarBenjamin Franzke <ben@bnf.dev>
Tested-by: default avatarcore-ci <typo3@b13.com>
parent 8b0563b0
Branches
Tags
No related merge requests found
......@@ -898,6 +898,8 @@ class PageTreeNodeDragHandler implements DragDropHandler {
}
public onDragStart(event: MouseEvent, draggingNode: TreeNode | null): boolean {
event.preventDefault();
if (this.tree.settings.allowDragMove !== true || draggingNode.depth === 0) {
return false;
}
......
......@@ -78,4 +78,4 @@ var __decorate=function(e,t,o,i){var n,s=arguments.length,r=s<3?t:null===i?i=Obj
</ul>
</div>
</div>
`}dragToolbar(e,t){return t.connectDragHandler(new ToolbarDragHandler(e,this.tree,t))}};__decorate([property({type:EditablePageTree})],PageTreeToolbar.prototype,"tree",void 0),PageTreeToolbar=__decorate([customElement("typo3-backend-navigation-component-pagetree-toolbar")],PageTreeToolbar);class PageTreeDragDrop extends DragDrop{getDropCommandDetails(e,t="",o=null){const i=this.tree.nodes,n=o.identifier;let s=this.tree.settings.nodeDragPosition,r=e||o;if(n===r.identifier&&"delete"!==t)return null;if(s===DraggablePositionEnum.BEFORE){const t=i.indexOf(e),o=this.setNodePositionAndTarget(t);if(null===o)return null;s=o.position,r=o.target}return{node:o,uid:n,target:r,position:s,command:t}}updateStateOfHoveredNode(e){const t=this.tree.svg.select(".node-over");if(t.size()&&this.tree.isOverSvg){this.createPositioningLine();const o=d3selection.pointer(e,t.node())[1];o<3?(this.updatePositioningLine(this.tree.hoveredNode),0===this.tree.hoveredNode.depth?this.addNodeDdClass("nodrop"):this.tree.hoveredNode.firstChild?this.addNodeDdClass("ok-above"):this.addNodeDdClass("ok-between"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.BEFORE):o>17?(this.hidePositioningLine(),this.tree.hoveredNode.expanded&&this.tree.hoveredNode.hasChildren?(this.addNodeDdClass("ok-append"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.INSIDE):(this.updatePositioningLine(this.tree.hoveredNode),this.tree.hoveredNode.lastChild?this.addNodeDdClass("ok-below"):this.addNodeDdClass("ok-between"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.AFTER)):(this.hidePositioningLine(),this.addNodeDdClass("ok-append"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.INSIDE)}else this.hidePositioningLine(),this.addNodeDdClass("nodrop")}setNodePositionAndTarget(e){const t=this.tree.nodes,o=t[e].depth;e>0&&e--;const i=t[e].depth,n=this.tree.nodes[e];if(i===o)return{position:DraggablePositionEnum.AFTER,target:n};if(i<o)return{position:DraggablePositionEnum.INSIDE,target:n};for(let i=e;i>=0;i--){if(t[i].depth===o)return{position:DraggablePositionEnum.AFTER,target:this.tree.nodes[i]};if(t[i].depth<o)return{position:DraggablePositionEnum.AFTER,target:t[i]}}return null}isDropAllowed(e,t){return!!this.tree.settings.allowDragMove&&(!!this.tree.isOverSvg&&(!!this.tree.hoveredNode&&(!t.isOver&&!this.isTheSameNode(e,t))))}}class ToolbarDragHandler{constructor(e,t,o){this.dragStarted=!1,this.startPageX=0,this.startPageY=0,this.id="",this.name="",this.icon="",this.id=e.nodeType,this.name=e.title,this.icon=e.icon,this.tree=t,this.dragDrop=o}onDragStart(e){return e.preventDefault(),this.dragStarted=!1,this.startPageX=e.pageX,this.startPageY=e.pageY,!0}onDragOver(e){return!!this.dragDrop.isDragNodeDistanceMore(e,this)&&(this.dragStarted=!0,this.dragDrop.getDraggable()||this.dragDrop.createDraggable("#icon-"+this.icon,this.name),this.dragDrop.openNodeTimeout(),this.dragDrop.updateDraggablePosition(e),this.dragDrop.updateStateOfHoveredNode(e),!0)}onDrop(e,t){return!!this.dragStarted&&(this.dragDrop.cleanupDrop(),!!this.dragDrop.isDropAllowed(this.tree.hoveredNode,t)&&(this.addNewNode({type:this.id,name:this.name,icon:this.icon,position:this.tree.settings.nodeDragPosition,target:this.tree.hoveredNode}),!0))}addNewNode(e){const t=e.target;let o=this.tree.nodes.indexOf(t);const i={};if(this.tree.disableFocusedNodes(),i.focused=!0,this.tree.updateVisibleNodes(),i.command="new",i.type=e.type,i.identifier="-1",i.target=t,i.parents=t.parents,i.parentsStateIdentifier=t.parentsStateIdentifier,i.depth=t.depth,i.position=e.position,i.name=void 0!==e.title?e.title:TYPO3.lang["tree.defaultPageTitle"],i.y=i.y||i.target.y,i.x=i.x||i.target.x,this.tree.nodeIsEdit=!0,e.position===DraggablePositionEnum.INSIDE&&(i.depth++,i.parents.unshift(o),i.parentsStateIdentifier.unshift(this.tree.nodes[o].stateIdentifier),this.tree.nodes[o].hasChildren=!0,this.tree.showChildren(this.tree.nodes[o])),e.position!==DraggablePositionEnum.INSIDE&&e.position!==DraggablePositionEnum.AFTER||o++,e.icon&&(i.icon=e.icon),i.position===DraggablePositionEnum.BEFORE){const e=this.dragDrop.setNodePositionAndTarget(o);null!==e&&(i.position=e.position,i.target=e.target)}this.tree.nodes.splice(o,0,i),this.tree.setParametersNode(),this.tree.prepareDataForVisibleNodes(),this.tree.updateVisibleNodes(),this.tree.removeEditedText(),d3selection.select(this.tree.svg.node().parentNode).append("input").attr("class","node-edit").style("top",i.y+this.tree.settings.marginTop+"px").style("left",i.x+this.tree.textPosition+5+"px").style("width","calc(100% - "+(i.x+this.tree.textPosition+5)+"px)").style("height",this.tree.settings.nodeHeight+"px").attr("text","text").attr("value",i.name).on("keydown",(e=>{const t=e.target,o=e.keyCode;if(13===o||9===o){this.tree.nodeIsEdit=!1;const e=t.value.trim();e.length?(i.name=e,this.tree.removeEditedText(),this.tree.sendChangeCommand(i)):this.removeNode(i)}else 27===o&&(this.tree.nodeIsEdit=!1,this.removeNode(i))})).on("blur",(e=>{if(this.tree.nodeIsEdit&&this.tree.nodes.indexOf(i)>-1){const t=e.target.value.trim();t.length?(i.name=t,this.tree.removeEditedText(),this.tree.sendChangeCommand(i)):this.removeNode(i)}})).node().select()}removeNode(e){const t=this.tree.nodes.indexOf(e);this.tree.nodes[t-1].depth==e.depth||this.tree.nodes[t+1]&&this.tree.nodes[t+1].depth==e.depth||(this.tree.nodes[t-1].hasChildren=!1),this.tree.nodes.splice(t,1),this.tree.setParametersNode(),this.tree.prepareDataForVisibleNodes(),this.tree.updateVisibleNodes(),this.tree.removeEditedText()}}class PageTreeNodeDragHandler{constructor(e,t){this.dragStarted=!1,this.startPageX=0,this.startPageY=0,this.nodeIsOverDelete=!1,this.tree=e,this.dragDrop=t}onDragStart(e,t){return!0===this.tree.settings.allowDragMove&&0!==t.depth&&(this.dropZoneDelete=null,t.allowDelete&&(this.dropZoneDelete=this.tree.nodesContainer.select('.node[data-state-id="'+t.stateIdentifier+'"]').append("g").attr("class","nodes-drop-zone").attr("height",this.tree.settings.nodeHeight),this.nodeIsOverDelete=!1,this.dropZoneDelete.append("rect").attr("height",this.tree.settings.nodeHeight).attr("width","50px").attr("x",0).attr("y",0).on("mouseover",(()=>{this.nodeIsOverDelete=!0})).on("mouseout",(()=>{this.nodeIsOverDelete=!1})),this.dropZoneDelete.append("text").text(TYPO3.lang.deleteItem).attr("x",5).attr("y",this.tree.settings.nodeHeight/2+4),this.dropZoneDelete.node().dataset.open="false",this.dropZoneDelete.node().style.transform=this.getDropZoneCloseTransform(t)),this.startPageX=e.pageX,this.startPageY=e.pageY,this.dragStarted=!1,!0)}onDragOver(e,t){return!!this.dragDrop.isDragNodeDistanceMore(e,this)&&(this.dragStarted=!0,!0===this.tree.settings.allowDragMove&&0!==t.depth&&(this.dragDrop.getDraggable()||this.dragDrop.createDraggableFromExistingNode(t),this.tree.settings.nodeDragPosition=!1,this.dragDrop.openNodeTimeout(),this.dragDrop.updateDraggablePosition(e),this.dragDrop.isDropAllowed(this.tree.hoveredNode,t)?this.tree.hoveredNode?this.dropZoneDelete&&"false"!==this.dropZoneDelete.node().dataset.open?this.animateDropZone("hide",this.dropZoneDelete.node(),t):this.dragDrop.updateStateOfHoveredNode(e):(this.dragDrop.addNodeDdClass("nodrop"),this.dragDrop.hidePositioningLine()):(this.dragDrop.addNodeDdClass("nodrop"),this.tree.isOverSvg||this.dragDrop.hidePositioningLine(),this.dropZoneDelete&&"true"!==this.dropZoneDelete.node().dataset.open&&this.tree.isOverSvg&&this.animateDropZone("show",this.dropZoneDelete.node(),t)),!0))}onDrop(e,t){if(this.dropZoneDelete&&"true"===this.dropZoneDelete.node().dataset.open){const e=this.dropZoneDelete;this.animateDropZone("hide",this.dropZoneDelete.node(),t,(()=>{e.remove(),this.dropZoneDelete=null}))}else this.dropZoneDelete&&"false"===this.dropZoneDelete.node().dataset.open?(this.dropZoneDelete.remove(),this.dropZoneDelete=null):this.dropZoneDelete=null;if(!this.dragStarted||!0!==this.tree.settings.allowDragMove||0===t.depth)return!1;if(this.dragDrop.cleanupDrop(),this.dragDrop.isDropAllowed(this.tree.hoveredNode,t)){const e=this.dragDrop.getDropCommandDetails(this.tree.hoveredNode,"",t);if(null===e)return!1;let o=e.position===DraggablePositionEnum.INSIDE?TYPO3.lang["mess.move_into"]:TYPO3.lang["mess.move_after"];o=o.replace("%s",e.node.name).replace("%s",e.target.name);const i=Modal.confirm(TYPO3.lang.move_page,o,Severity.warning,[{text:TYPO3.lang["labels.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:TYPO3.lang["cm.copy"]||"Copy",btnClass:"btn-warning",name:"copy"},{text:TYPO3.lang["labels.move"]||"Move",btnClass:"btn-warning",name:"move"}]);i.addEventListener("button.clicked",(t=>{const o=t.target;"move"===o.name?(e.command="move",this.tree.sendChangeCommand(e)):"copy"===o.name&&(e.command="copy",this.tree.sendChangeCommand(e)),i.hideModal()}))}else if(this.nodeIsOverDelete){const e=this.dragDrop.getDropCommandDetails(this.tree.hoveredNode,"delete",t);if(null===e)return!1;if(this.tree.settings.displayDeleteConfirmation){Modal.confirm(TYPO3.lang["mess.delete.title"],TYPO3.lang["mess.delete"].replace("%s",e.node.name),Severity.warning,[{text:TYPO3.lang["labels.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:TYPO3.lang.delete||"Delete",btnClass:"btn-warning",name:"delete"}]).addEventListener("button.clicked",(t=>{"delete"===t.target.name&&this.tree.sendChangeCommand(e),Modal.dismiss()}))}else this.tree.sendChangeCommand(e)}return!0}getDropZoneOpenTransform(e){return"translate("+((parseFloat(this.tree.svg.style("width"))||300)-58-e.x)+"px, "+this.tree.settings.nodeHeight/2*-1+"px)"}getDropZoneCloseTransform(e){return"translate("+((parseFloat(this.tree.svg.style("width"))||300)-e.x)+"px, "+this.tree.settings.nodeHeight/2*-1+"px)"}animateDropZone(e,t,o,i=null){t.classList.add("animating"),t.dataset.open="show"===e?"true":"false";let n=[{transform:this.getDropZoneCloseTransform(o)},{transform:this.getDropZoneOpenTransform(o)}];"show"!==e&&(n=n.reverse());const s=function(){t.style.transform=n[1].transform,t.classList.remove("animating"),i&&i()};"animate"in t?t.animate(n,{duration:300,easing:"cubic-bezier(.02, .01, .47, 1)"}).onfinish=s:s()}}
\ No newline at end of file
`}dragToolbar(e,t){return t.connectDragHandler(new ToolbarDragHandler(e,this.tree,t))}};__decorate([property({type:EditablePageTree})],PageTreeToolbar.prototype,"tree",void 0),PageTreeToolbar=__decorate([customElement("typo3-backend-navigation-component-pagetree-toolbar")],PageTreeToolbar);class PageTreeDragDrop extends DragDrop{getDropCommandDetails(e,t="",o=null){const i=this.tree.nodes,n=o.identifier;let s=this.tree.settings.nodeDragPosition,r=e||o;if(n===r.identifier&&"delete"!==t)return null;if(s===DraggablePositionEnum.BEFORE){const t=i.indexOf(e),o=this.setNodePositionAndTarget(t);if(null===o)return null;s=o.position,r=o.target}return{node:o,uid:n,target:r,position:s,command:t}}updateStateOfHoveredNode(e){const t=this.tree.svg.select(".node-over");if(t.size()&&this.tree.isOverSvg){this.createPositioningLine();const o=d3selection.pointer(e,t.node())[1];o<3?(this.updatePositioningLine(this.tree.hoveredNode),0===this.tree.hoveredNode.depth?this.addNodeDdClass("nodrop"):this.tree.hoveredNode.firstChild?this.addNodeDdClass("ok-above"):this.addNodeDdClass("ok-between"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.BEFORE):o>17?(this.hidePositioningLine(),this.tree.hoveredNode.expanded&&this.tree.hoveredNode.hasChildren?(this.addNodeDdClass("ok-append"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.INSIDE):(this.updatePositioningLine(this.tree.hoveredNode),this.tree.hoveredNode.lastChild?this.addNodeDdClass("ok-below"):this.addNodeDdClass("ok-between"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.AFTER)):(this.hidePositioningLine(),this.addNodeDdClass("ok-append"),this.tree.settings.nodeDragPosition=DraggablePositionEnum.INSIDE)}else this.hidePositioningLine(),this.addNodeDdClass("nodrop")}setNodePositionAndTarget(e){const t=this.tree.nodes,o=t[e].depth;e>0&&e--;const i=t[e].depth,n=this.tree.nodes[e];if(i===o)return{position:DraggablePositionEnum.AFTER,target:n};if(i<o)return{position:DraggablePositionEnum.INSIDE,target:n};for(let i=e;i>=0;i--){if(t[i].depth===o)return{position:DraggablePositionEnum.AFTER,target:this.tree.nodes[i]};if(t[i].depth<o)return{position:DraggablePositionEnum.AFTER,target:t[i]}}return null}isDropAllowed(e,t){return!!this.tree.settings.allowDragMove&&(!!this.tree.isOverSvg&&(!!this.tree.hoveredNode&&(!t.isOver&&!this.isTheSameNode(e,t))))}}class ToolbarDragHandler{constructor(e,t,o){this.dragStarted=!1,this.startPageX=0,this.startPageY=0,this.id="",this.name="",this.icon="",this.id=e.nodeType,this.name=e.title,this.icon=e.icon,this.tree=t,this.dragDrop=o}onDragStart(e){return e.preventDefault(),this.dragStarted=!1,this.startPageX=e.pageX,this.startPageY=e.pageY,!0}onDragOver(e){return!!this.dragDrop.isDragNodeDistanceMore(e,this)&&(this.dragStarted=!0,this.dragDrop.getDraggable()||this.dragDrop.createDraggable("#icon-"+this.icon,this.name),this.dragDrop.openNodeTimeout(),this.dragDrop.updateDraggablePosition(e),this.dragDrop.updateStateOfHoveredNode(e),!0)}onDrop(e,t){return!!this.dragStarted&&(this.dragDrop.cleanupDrop(),!!this.dragDrop.isDropAllowed(this.tree.hoveredNode,t)&&(this.addNewNode({type:this.id,name:this.name,icon:this.icon,position:this.tree.settings.nodeDragPosition,target:this.tree.hoveredNode}),!0))}addNewNode(e){const t=e.target;let o=this.tree.nodes.indexOf(t);const i={};if(this.tree.disableFocusedNodes(),i.focused=!0,this.tree.updateVisibleNodes(),i.command="new",i.type=e.type,i.identifier="-1",i.target=t,i.parents=t.parents,i.parentsStateIdentifier=t.parentsStateIdentifier,i.depth=t.depth,i.position=e.position,i.name=void 0!==e.title?e.title:TYPO3.lang["tree.defaultPageTitle"],i.y=i.y||i.target.y,i.x=i.x||i.target.x,this.tree.nodeIsEdit=!0,e.position===DraggablePositionEnum.INSIDE&&(i.depth++,i.parents.unshift(o),i.parentsStateIdentifier.unshift(this.tree.nodes[o].stateIdentifier),this.tree.nodes[o].hasChildren=!0,this.tree.showChildren(this.tree.nodes[o])),e.position!==DraggablePositionEnum.INSIDE&&e.position!==DraggablePositionEnum.AFTER||o++,e.icon&&(i.icon=e.icon),i.position===DraggablePositionEnum.BEFORE){const e=this.dragDrop.setNodePositionAndTarget(o);null!==e&&(i.position=e.position,i.target=e.target)}this.tree.nodes.splice(o,0,i),this.tree.setParametersNode(),this.tree.prepareDataForVisibleNodes(),this.tree.updateVisibleNodes(),this.tree.removeEditedText(),d3selection.select(this.tree.svg.node().parentNode).append("input").attr("class","node-edit").style("top",i.y+this.tree.settings.marginTop+"px").style("left",i.x+this.tree.textPosition+5+"px").style("width","calc(100% - "+(i.x+this.tree.textPosition+5)+"px)").style("height",this.tree.settings.nodeHeight+"px").attr("text","text").attr("value",i.name).on("keydown",(e=>{const t=e.target,o=e.keyCode;if(13===o||9===o){this.tree.nodeIsEdit=!1;const e=t.value.trim();e.length?(i.name=e,this.tree.removeEditedText(),this.tree.sendChangeCommand(i)):this.removeNode(i)}else 27===o&&(this.tree.nodeIsEdit=!1,this.removeNode(i))})).on("blur",(e=>{if(this.tree.nodeIsEdit&&this.tree.nodes.indexOf(i)>-1){const t=e.target.value.trim();t.length?(i.name=t,this.tree.removeEditedText(),this.tree.sendChangeCommand(i)):this.removeNode(i)}})).node().select()}removeNode(e){const t=this.tree.nodes.indexOf(e);this.tree.nodes[t-1].depth==e.depth||this.tree.nodes[t+1]&&this.tree.nodes[t+1].depth==e.depth||(this.tree.nodes[t-1].hasChildren=!1),this.tree.nodes.splice(t,1),this.tree.setParametersNode(),this.tree.prepareDataForVisibleNodes(),this.tree.updateVisibleNodes(),this.tree.removeEditedText()}}class PageTreeNodeDragHandler{constructor(e,t){this.dragStarted=!1,this.startPageX=0,this.startPageY=0,this.nodeIsOverDelete=!1,this.tree=e,this.dragDrop=t}onDragStart(e,t){return e.preventDefault(),!0===this.tree.settings.allowDragMove&&0!==t.depth&&(this.dropZoneDelete=null,t.allowDelete&&(this.dropZoneDelete=this.tree.nodesContainer.select('.node[data-state-id="'+t.stateIdentifier+'"]').append("g").attr("class","nodes-drop-zone").attr("height",this.tree.settings.nodeHeight),this.nodeIsOverDelete=!1,this.dropZoneDelete.append("rect").attr("height",this.tree.settings.nodeHeight).attr("width","50px").attr("x",0).attr("y",0).on("mouseover",(()=>{this.nodeIsOverDelete=!0})).on("mouseout",(()=>{this.nodeIsOverDelete=!1})),this.dropZoneDelete.append("text").text(TYPO3.lang.deleteItem).attr("x",5).attr("y",this.tree.settings.nodeHeight/2+4),this.dropZoneDelete.node().dataset.open="false",this.dropZoneDelete.node().style.transform=this.getDropZoneCloseTransform(t)),this.startPageX=e.pageX,this.startPageY=e.pageY,this.dragStarted=!1,!0)}onDragOver(e,t){return!!this.dragDrop.isDragNodeDistanceMore(e,this)&&(this.dragStarted=!0,!0===this.tree.settings.allowDragMove&&0!==t.depth&&(this.dragDrop.getDraggable()||this.dragDrop.createDraggableFromExistingNode(t),this.tree.settings.nodeDragPosition=!1,this.dragDrop.openNodeTimeout(),this.dragDrop.updateDraggablePosition(e),this.dragDrop.isDropAllowed(this.tree.hoveredNode,t)?this.tree.hoveredNode?this.dropZoneDelete&&"false"!==this.dropZoneDelete.node().dataset.open?this.animateDropZone("hide",this.dropZoneDelete.node(),t):this.dragDrop.updateStateOfHoveredNode(e):(this.dragDrop.addNodeDdClass("nodrop"),this.dragDrop.hidePositioningLine()):(this.dragDrop.addNodeDdClass("nodrop"),this.tree.isOverSvg||this.dragDrop.hidePositioningLine(),this.dropZoneDelete&&"true"!==this.dropZoneDelete.node().dataset.open&&this.tree.isOverSvg&&this.animateDropZone("show",this.dropZoneDelete.node(),t)),!0))}onDrop(e,t){if(this.dropZoneDelete&&"true"===this.dropZoneDelete.node().dataset.open){const e=this.dropZoneDelete;this.animateDropZone("hide",this.dropZoneDelete.node(),t,(()=>{e.remove(),this.dropZoneDelete=null}))}else this.dropZoneDelete&&"false"===this.dropZoneDelete.node().dataset.open?(this.dropZoneDelete.remove(),this.dropZoneDelete=null):this.dropZoneDelete=null;if(!this.dragStarted||!0!==this.tree.settings.allowDragMove||0===t.depth)return!1;if(this.dragDrop.cleanupDrop(),this.dragDrop.isDropAllowed(this.tree.hoveredNode,t)){const e=this.dragDrop.getDropCommandDetails(this.tree.hoveredNode,"",t);if(null===e)return!1;let o=e.position===DraggablePositionEnum.INSIDE?TYPO3.lang["mess.move_into"]:TYPO3.lang["mess.move_after"];o=o.replace("%s",e.node.name).replace("%s",e.target.name);const i=Modal.confirm(TYPO3.lang.move_page,o,Severity.warning,[{text:TYPO3.lang["labels.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:TYPO3.lang["cm.copy"]||"Copy",btnClass:"btn-warning",name:"copy"},{text:TYPO3.lang["labels.move"]||"Move",btnClass:"btn-warning",name:"move"}]);i.addEventListener("button.clicked",(t=>{const o=t.target;"move"===o.name?(e.command="move",this.tree.sendChangeCommand(e)):"copy"===o.name&&(e.command="copy",this.tree.sendChangeCommand(e)),i.hideModal()}))}else if(this.nodeIsOverDelete){const e=this.dragDrop.getDropCommandDetails(this.tree.hoveredNode,"delete",t);if(null===e)return!1;if(this.tree.settings.displayDeleteConfirmation){Modal.confirm(TYPO3.lang["mess.delete.title"],TYPO3.lang["mess.delete"].replace("%s",e.node.name),Severity.warning,[{text:TYPO3.lang["labels.cancel"]||"Cancel",active:!0,btnClass:"btn-default",name:"cancel"},{text:TYPO3.lang.delete||"Delete",btnClass:"btn-warning",name:"delete"}]).addEventListener("button.clicked",(t=>{"delete"===t.target.name&&this.tree.sendChangeCommand(e),Modal.dismiss()}))}else this.tree.sendChangeCommand(e)}return!0}getDropZoneOpenTransform(e){return"translate("+((parseFloat(this.tree.svg.style("width"))||300)-58-e.x)+"px, "+this.tree.settings.nodeHeight/2*-1+"px)"}getDropZoneCloseTransform(e){return"translate("+((parseFloat(this.tree.svg.style("width"))||300)-e.x)+"px, "+this.tree.settings.nodeHeight/2*-1+"px)"}animateDropZone(e,t,o,i=null){t.classList.add("animating"),t.dataset.open="show"===e?"true":"false";let n=[{transform:this.getDropZoneCloseTransform(o)},{transform:this.getDropZoneOpenTransform(o)}];"show"!==e&&(n=n.reverse());const s=function(){t.style.transform=n[1].transform,t.classList.remove("animating"),i&&i()};"animate"in t?t.animate(n,{duration:300,easing:"cubic-bezier(.02, .01, .47, 1)"}).onfinish=s:s()}}
\ No newline at end of file
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment