Update dragndrop.js to store the handler in variables

This stores the EventHandlers in variables that are then passed to the widget that makes the element draggable.
In the widget we can then remove the EventListeners if needed
This commit is contained in:
Simon Huber 2024-03-09 17:32:56 +01:00 committed by GitHub
parent b596a4bd12
commit cde2b03534
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 115 additions and 106 deletions

View File

@ -25,14 +25,14 @@ widget: widget to use as the context for the filter
exports.makeDraggable = function(options) {
var dragImageType = options.dragImageType || "dom",
dragImage,
domNode = options.domNode;
domNode = options.domNode,
removeEventHandler = options.remove;
// Make the dom node draggable (not necessary for anchor tags)
if(!options.selector && ((domNode.tagName || "").toLowerCase() !== "a")) {
domNode.setAttribute("draggable","true");
}
// Add event handlers
$tw.utils.addEventListeners(domNode,[
{name: "dragstart", handlerFunction: function(event) {
var dragStartHandlerFunction = function(event) {
if(event.dataTransfer === undefined) {
return false;
}
@ -115,8 +115,9 @@ exports.makeDraggable = function(options) {
event.stopPropagation();
}
return false;
}},
{name: "dragend", handlerFunction: function(event) {
};
var dragEndHandlerFunction = function(event) {
if((options.selector && $tw.utils.domMatchesSelector(event.target,options.selector)) || event.target === domNode) {
// Collect the tiddlers being dragged
var dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),
@ -145,7 +146,15 @@ exports.makeDraggable = function(options) {
}
}
return false;
}}
};
// Add the EventListener references to the widget
options.widget.dragStartReference = dragStartHandlerFunction;
options.widget.dragEndReference = dragEndHandlerFunction;
// Add event handlers
$tw.utils.addEventListeners(domNode,[
{name: "dragstart", handlerFunction: dragStartHandlerFunction},
{name: "dragend", handlerFunction: dragEndHandlerFunction}
]);
};