Completed
Last Updated: 17 Jul 2024 10:21 by ADMIN
Release 2024 Q3 (Aug)
JG
Created on: 05 Apr 2024 08:46
Category: Menu
Type: Bug Report
0
ContextMenu does not show when mouse is moved with normal speed

### Bug report

The ContextMenu does not show when the mouse is moved normally. It will show only when the mouse is moved very slowly.

### Reproduction of the problem

1. Create a Grid with a custom column command.

2. Define a ContextMenu that will be displayed when the custom column command is clicked.

3. Click over a specified column command - the ContextMenu opens.

4. Move the mouse over another row and click the custom column command - the ContextMenu does not open.

A Dojo sample for reproduction: https://dojo.telerik.com/aYiVUzum

### Current behavior

The ContextMenu does not open over every item as expected.

### Expected/desired behavior

The ContextMenu must open when clicking each item.

#### The issue is a regression starting with 2023.1.314 version

### Workaround

Add the following script before the ContextMenu initialization:

  <script>
    function contains(parent, child) {
        try {
            return $.contains(parent, child);
        } catch (e) {
            return false;
        }
    }

    kendo.ui.ContextMenu.fn.open = function (x, y) {
        var OPEN = "open",
            ACTIVATE = "activate",
            DOCUMENT_ELEMENT = $(document.documentElement),
            NS = ".kendoMenu";
        var that = this;

        x = $(x)[0];

        if (contains(that.element[0], $(x)[0]) || that._itemHasChildren($(x))) { // call parent open for children elements
            kendo.ui.Menu.fn.open.call(that, x);
        } else {
            if (that._triggerEvent({ item: that.element, type: OPEN }) === false) {
                if (that.popup.visible() && that.options.filter) {
                    that.popup.close(true);
                    that.popup.element.parent().kendoStop(true);
                }

                if (!that._triggerFocusOnActivate) {
                    that._triggerFocusOnActivate = that._focusMenu.bind(that);
                }
                that.bind(ACTIVATE, that._triggerFocusOnActivate);
                if (y !== undefined) {
                    var overflowWrapper = that._overflowWrapper();
                    if (overflowWrapper) {
                        var offset = overflowWrapper.offset();
                        x -= offset.left;
                        y -= offset.top;
                    }
                    that.popup.wrapper.hide();
                    that._configurePopupScrolling(x, y);
                    that.popup.open(x, y);
                } else {
                    that.popup.options.anchor = (x ? x : that.popup.anchor) || that.target;
                    that.popup.element.parent().kendoStop(true);
                    that._configurePopupScrolling();
                    that.popup.open();
                }

                DOCUMENT_ELEMENT.off(that.popup.downEvent, that.popup._mousedownProxy);
                DOCUMENT_ELEMENT
                    .on(kendo.support.mousedown + NS + that._marker, that._closeProxy);
            }
        }

        return that;
    };
</script>

### Environment

* **Kendo UI version: 2023.1.314
* **Browser: [all] 

0 comments