UNPKG

devextreme

Version:

HTML5 JavaScript Component Suite for Responsive Web Development

113 lines (88 loc) 3.07 kB
"use strict"; var eventsEngine = require("../events/core/events_engine"), dataUtils = require("../core/element_data"), Class = require("../core/class"), devices = require("../core/devices"), registerEvent = require("./core/event_registrator"), eventUtils = require("./utils"), pointerEvents = require("./pointer"); var HOVERSTART_NAMESPACE = "dxHoverStart", HOVERSTART = "dxhoverstart", POINTERENTER_NAMESPACED_EVENT_NAME = eventUtils.addNamespace(pointerEvents.enter, HOVERSTART_NAMESPACE), HOVEREND_NAMESPACE = "dxHoverEnd", HOVEREND = "dxhoverend", POINTERLEAVE_NAMESPACED_EVENT_NAME = eventUtils.addNamespace(pointerEvents.leave, HOVEREND_NAMESPACE); var Hover = Class.inherit({ noBubble: true, ctor: function ctor() { this._handlerArrayKeyPath = this._eventNamespace + "_HandlerStore"; }, setup: function setup(element) { dataUtils.data(element, this._handlerArrayKeyPath, {}); }, add: function add(element, handleObj) { var that = this, handler = function handler(e) { that._handler(e); }; eventsEngine.on(element, this._originalEventName, handleObj.selector, handler); dataUtils.data(element, this._handlerArrayKeyPath)[handleObj.guid] = handler; }, _handler: function _handler(e) { if (eventUtils.isTouchEvent(e) || devices.isSimulator()) { return; } eventUtils.fireEvent({ type: this._eventName, originalEvent: e, delegateTarget: e.delegateTarget }); }, remove: function remove(element, handleObj) { var handler = dataUtils.data(element, this._handlerArrayKeyPath)[handleObj.guid]; eventsEngine.off(element, this._originalEventName, handleObj.selector, handler); }, teardown: function teardown(element) { dataUtils.removeData(element, this._handlerArrayKeyPath); } }); var HoverStart = Hover.inherit({ ctor: function ctor() { this._eventNamespace = HOVERSTART_NAMESPACE; this._eventName = HOVERSTART; this._originalEventName = POINTERENTER_NAMESPACED_EVENT_NAME; this.callBase(); }, _handler: function _handler(e) { var pointers = e.pointers || []; if (!pointers.length) { this.callBase(e); } } }); var HoverEnd = Hover.inherit({ ctor: function ctor() { this._eventNamespace = HOVEREND_NAMESPACE; this._eventName = HOVEREND; this._originalEventName = POINTERLEAVE_NAMESPACED_EVENT_NAME; this.callBase(); } }); /** * @name ui events.dxhoverstart * @publicName dxhoverstart * @type eventType * @type_function_param1 event:event * @module events/hover */ /** * @name ui events.dxhoverend * @publicName dxhoverend * @type eventType * @type_function_param1 event:event * @module events/hover */ registerEvent(HOVERSTART, new HoverStart()); registerEvent(HOVEREND, new HoverEnd()); exports.start = HOVERSTART; exports.end = HOVEREND;