META-INF.resources.frontend.contextMenuTargetConnector.js Maven / Gradle / Ivy
import * as Gestures from '@vaadin/component-base/src/gestures.js';
(function () {
function tryCatchWrapper(callback) {
return window.Vaadin.Flow.tryCatchWrapper(callback, 'Vaadin Context Menu Target');
}
function init(target) {
if (target.$contextMenuTargetConnector) {
return;
}
target.$contextMenuTargetConnector = {
openOnHandler: tryCatchWrapper(function (e) {
// used by Grid to prevent context menu on selection column click
if (target.preventContextMenu && target.preventContextMenu(e)) {
return;
}
e.preventDefault();
e.stopPropagation();
this.$contextMenuTargetConnector.openEvent = e;
let detail = {};
if (target.getContextMenuBeforeOpenDetail) {
detail = target.getContextMenuBeforeOpenDetail(e);
}
target.dispatchEvent(
new CustomEvent('vaadin-context-menu-before-open', {
detail: detail
})
);
}),
updateOpenOn: tryCatchWrapper(function (eventType) {
this.removeListener();
this.openOnEventType = eventType;
customElements.whenDefined('vaadin-context-menu').then(
tryCatchWrapper(() => {
if (Gestures.gestures[eventType]) {
Gestures.addListener(target, eventType, this.openOnHandler);
} else {
target.addEventListener(eventType, this.openOnHandler);
}
})
);
}),
removeListener: tryCatchWrapper(function () {
if (this.openOnEventType) {
if (Gestures.gestures[this.openOnEventType]) {
Gestures.removeListener(target, this.openOnEventType, this.openOnHandler);
} else {
target.removeEventListener(this.openOnEventType, this.openOnHandler);
}
}
}),
openMenu: tryCatchWrapper(function (contextMenu) {
contextMenu.open(this.openEvent);
}),
removeConnector: tryCatchWrapper(function () {
this.removeListener();
target.$contextMenuTargetConnector = undefined;
})
};
}
window.Vaadin.Flow.contextMenuTargetConnector = {
init(...args) {
return tryCatchWrapper(init)(...args);
}
};
})();