1
0
Fork 0
mirror of https://github.com/koalyptus/TableFilter.git synced 2024-05-04 07:33:18 +02:00
TableFilter/src/event.js

100 lines
2.6 KiB
JavaScript

import {root} from './root';
/**
* DOM event utilities
*/
export default {
/**
* Add event handler for specified event on passed element
*
* @param {DOMElement} obj Element
* @param {String} type Event type
* @param {Function} Handler
* @param {Boolean} capture Specifiy whether the event should be executed in
* the capturing or in the bubbling phase
*/
add(obj, type, func, capture) {
if (obj.addEventListener) {
obj.addEventListener(type, func, capture);
}
else if (obj.attachEvent) {
obj.attachEvent('on' + type, func);
} else {
obj['on' + type] = func;
}
},
/**
* Remove event handler for specified event on passed element
*
* @param {DOMElement} obj Element
* @param {String} type Event type
* @param {Function} Handler
* @param {Boolean} capture Specifiy whether the event should be executed in
* the capturing or in the bubbling phase
*/
remove(obj, type, func, capture) {
if (obj.detachEvent) {
obj.detachEvent('on' + type, func);
}
else if (obj.removeEventListener) {
obj.removeEventListener(type, func, capture);
} else {
obj['on' + type] = null;
}
},
/**
* Prevents further propagation of the current event in the bubbling phase
*
* @param {Event} evt Event on the DOM
*/
stop(evt) {
if (!evt) {
evt = root.event;
}
if (evt.stopPropagation) {
evt.stopPropagation();
} else {
evt.cancelBubble = true;
}
},
/**
* Cancels the event if it is cancelable, without stopping further
* propagation of the event.
*
* @param {Event} evt Event on the DOM
*/
cancel(evt) {
if (!evt) {
evt = root.event;
}
if (evt.preventDefault) {
evt.preventDefault();
} else {
evt.returnValue = false;
}
},
/**
* Reference to the object that dispatched the event
*
* @param {Event} evt Event on the DOM
* @returns {DOMElement}
*/
target(evt) {
if (!evt) {
evt = root.event;
}
return evt.target || evt.srcElement;
},
/**
* Returns the Unicode value of pressed key
*
* @param {Event} evt Event on the DOM
* @returns {Number}
*/
keyCode(evt) {
return evt.charCode ? evt.charCode :
(evt.keyCode ? evt.keyCode : (evt.which ? evt.which : 0));
}
};