Unplanned
Last Updated: 04 May 2020 09:28 by ADMIN
Jan
Created on: 04 May 2020 09:27
Category: TreeView
Type: Bug Report
1
RadTreeview Node Click does not work on a mobile when EnableDragAndDrop is set to true

Reproduction:
Subscribe to Node Click event and set EnableDragAndDrop=true.

Temporary Workaround: Placing the following script below the ScriptManager:

 

var $ = $telerik.$,
$T = Telerik.Web.UI,
$J = Sys.Serialization.JavaScriptSerializer,
CLICK = $telerik.isTouchDevice ? "touchend" : "click",
MOUSEDOWN = $telerik.isTouchDevice ? "touchstart" : "mousedown",
MOUSEMOVE = $telerik.isTouchDevice ? "touchmove" : "mousemove",
MOUSEUP = $telerik.isTouchDevice ? "touchend" : "mouseup",
DOMActivate = "DOMActivate",
treeviewRegEx;

Telerik.Web.UI.RadTreeView.prototype._click = function (e) {
    if (this._eventMap.skipElement(e, "rtIn"))
        return;
    if (this._preventClick) {
        // Dragging and dropping over the same node produces unwanted click
        this._preventClick = false;
        return;
    }

    var node = this._extractNodeFromDomElement(e.eventMapTarget);
    if ($telerik.isTouchDevice) {
        if (!this._treeTouchScroll._dragCanceled) {
            clearTimeout(this.longTouchID);
            this.longTouchID = 0;
        }
        /*if (this._scrolledInMobileDevice) {
                           
            this._scrolledInMobileDevice = false;
            return;
        }
        else */ if (this._dragging) {
            return;
        }
    }


    if (this._raiseCancelEvent("nodeClicking", node, e)) {
        e.preventDefault();
        return;
    }
                    
    if (!node.get_isEnabled()) {
        this._raiseEvent("nodeClicked", node, e);
        e.preventDefault();
        return;
    }

    var ctrlKey = e.ctrlKey || e.rawEvent && e.rawEvent.metaKey;

    this._hideContextMenus();

    if (this.get_multipleSelect() && (ctrlKey || e.shiftKey || $telerik.isTouchDevice)) {
        if ($telerik.isTouchDevice) {
            if (node && node.get_isEnabled() && !this._touchDragEnd) {
                node.set_selected(!node.get_selected());
            }
            this._touchDragEnd = false;
        }

        if (ctrlKey) {
            node.set_selected(!node.get_selected());
        }
        else if (e.shiftKey) {
            this._handleShiftSelection(node);
        }

        this._raiseEvent("nodeClicked", node, e);
        return;
    }
    else {
        if (this.get_allowNodeEditing() && node.get_selected() && node.get_allowEdit()) {
            this._clearSelectedNodes();
            node.set_selected(true);
            this._startEdit(node, e);
            e.preventDefault();
            e.stopPropagation();
        }
        else {
            this._clearSelectedNodes();
            node.set_selected(true);
        }
    }

    this._raiseEvent("nodeClicked", node, e);

    this._postClickCommand(node);
}
function fixGridSchedulerComboBoxDropDownList() {
    // https://www.telerik.com/support/kb/aspnet-ajax/details/cannot-scroll-telerik-control-in-ios-11.3---the-page-scrolls-instead
    var fixed = $telerik.$(".RadTreeView.RadTouchExtender");
    fixed.on('touchmove', function (e) {
        e.preventDefault();
    });
}
Sys.Application.add_load(fixGridSchedulerComboBoxDropDownList);

 

0 comments