contextmenu.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. /**
  2. * DevExtreme (events/contextmenu.js)
  3. * Version: 19.1.16
  4. * Build date: Tue Oct 18 2022
  5. *
  6. * Copyright (c) 2012 - 2022 Developer Express Inc. ALL RIGHTS RESERVED
  7. * Read about DevExtreme licensing here: https://js.devexpress.com/Licensing/
  8. */
  9. "use strict";
  10. var $ = require("../core/renderer");
  11. var eventsEngine = require("../events/core/events_engine");
  12. var support = require("../core/utils/support");
  13. var devices = require("../core/devices");
  14. var Class = require("../core/class");
  15. var registerEvent = require("./core/event_registrator");
  16. var eventUtils = require("./utils");
  17. var holdEvent = require("./hold");
  18. var CONTEXTMENU_NAMESPACE = "dxContexMenu";
  19. var CONTEXTMENU_NAMESPACED_EVENT_NAME = eventUtils.addNamespace("contextmenu", CONTEXTMENU_NAMESPACE);
  20. var HOLD_NAMESPACED_EVENT_NAME = eventUtils.addNamespace(holdEvent.name, CONTEXTMENU_NAMESPACE);
  21. var CONTEXTMENU_EVENT_NAME = "dxcontextmenu";
  22. var ContextMenu = Class.inherit({
  23. setup: function(element) {
  24. var $element = $(element);
  25. eventsEngine.on($element, CONTEXTMENU_NAMESPACED_EVENT_NAME, this._contextMenuHandler.bind(this));
  26. if (support.touch || devices.isSimulator()) {
  27. eventsEngine.on($element, HOLD_NAMESPACED_EVENT_NAME, this._holdHandler.bind(this))
  28. }
  29. },
  30. _holdHandler: function(e) {
  31. if (eventUtils.isMouseEvent(e) && !devices.isSimulator()) {
  32. return
  33. }
  34. this._fireContextMenu(e)
  35. },
  36. _contextMenuHandler: function(e) {
  37. this._fireContextMenu(e)
  38. },
  39. _fireContextMenu: function(e) {
  40. return eventUtils.fireEvent({
  41. type: CONTEXTMENU_EVENT_NAME,
  42. originalEvent: e
  43. })
  44. },
  45. teardown: function(element) {
  46. eventsEngine.off(element, "." + CONTEXTMENU_NAMESPACE)
  47. }
  48. });
  49. registerEvent(CONTEXTMENU_EVENT_NAME, new ContextMenu);
  50. exports.name = CONTEXTMENU_EVENT_NAME;