| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166 |
- /**
- * Lungo DOM UI events Manager
- *
- * @namespace LUNGO.Dom
- * @class Event
- * @requires Zepto
- *
- * @author Javier Jimenez Villar <javi@tapquo.com> || @soyjavi
- * @author Guillermo Pascual <pasku@tapquo.com> || @pasku1
- */
- LUNGO.Dom.Event = (function(lng, undefined) {
- /**
- * Add an event listener
- *
- * @method bind
- *
- * @param {string} Selector that dispatches the event
- * @param {string} Touch event name
- * @param {Function} Callback function after the request
- */
- var bind = function(selector, event_name, callback) {
- if (_isNotSpecialEvent(selector, event_name, callback)) {
- lng.Dom.query(selector).bind(lng.Events.get(event_name), callback);
- }
- };
- /**
- * Remove bind event listener
- *
- * @method unbind
- *
- * @param {string} Selector that dispatches the event
- * @param {string} Touch event name
- */
- var unbind = function(selector, event_name) {
- lng.Dom.query(selector).unbind(lng.Events.get(event_name));
- };
- /**
- * Add an event listener that listens to the selector for current and future elements
- *
- * @method live
- *
- * @param {string} Selector that dispatches the event
- * @param {string} Touch event name
- * @param {Function} Callback function after the request
- */
- var live = function(selector, event_name, callback) {
- if (_isNotSpecialEvent(selector, event_name, callback)) {
- lng.Dom.query(selector).live(lng.Events.get(event_name), callback);
- }
- };
- /**
- * Remove live listener
- *
- * @method die
- *
- * @param {string} Selector that dispatches the event
- * @param {string} Event name
- */
- var die = function(selector, event_name) {
- lng.Dom.query(selector).die(lng.Events.get(event_name));
- };
- /**
- * Add an event listener without event delegation
- *
- * @method delegate
- *
- * @param {string} Selector that dispatches the event
- * @param {string} Children of selector that dispatches the event
- * @param {string} Touch event name
- * @param {Function} Callback function after the request
- */
- var delegate = function(selector, children_selector, event_name, callback) {
- if (_isNotSpecialEvent(selector, event_name, callback)) {
- lng.Dom.query(selector).delegate(children_selector, lng.Events.get(event_name), callback);
- }
- };
- /**
- * Remove delegate event listener
- *
- * @method undelegate
- *
- * @param {string} Selector that dispatches the event
- * @param {string} Children of selector that dispatches the event
- */
- var undelegate = function(selector, children_selector) {
- lng.Dom.query(selector).undelegate(selector);
- };
- /**
- * Listener for DOMelement
- *
- * @method listener
- *
- * @param {object} Selector that dispatches the event
- * @param {string} Touch event name
- * @param {Function} Callback function after the request
- */
- var listener = function(selector, event_name, callback) {
- selector.addEventListener(lng.Events.get(event_name), function(event) {
- setTimeout(callback, 0, event);
- }, false);
- };
- var _isNotSpecialEvent = function(selector, event_name, callback) {
- var is_special_event = false;
- /*
- var SPECIAL_EVENTS = {
- SWIPE: 'swipe',
- SWIPE_LEFT: 'swipeLeft',
- SWIPE_RIGHT: 'swipeRight',
- SWIPE_UP: 'swipeUp',
- SWIPE_DOWN: 'swipeDown',
- DOUBLE_TAP: 'doubleTap'
- };
- var special_event = SPECIAL_EVENTS[event_name];
- lng.Dom.query(selector)[special_event](callback);
- */
- switch(event_name) {
- case 'SWIPE':
- lng.Dom.query(selector).swipe(callback);
- break;
- case 'SWIPE_LEFT':
- lng.Dom.query(selector).swipeLeft(callback);
- break;
- case 'SWIPE_RIGHT':
- lng.Dom.query(selector).swipeRight(callback);
- break;
- case 'SWIPE_UP':
- lng.Dom.query(selector).swipeUp(callback);
- break;
- case 'SWIPE_DOWN':
- lng.Dom.query(selector).swipeDown(callback);
- break;
- case 'DOUBLE_TAP':
- if (lng.Environment.isDesktop()) {
- lng.Dom.query(selector).live(lng.Events.get(event_name), callback);
- } else {
- lng.Dom.query(selector).doubleTap(callback);
- }
- break;
- default:
- is_special_event = true;
- }
- return is_special_event;
- };
- return {
- bind: bind,
- unbind: unbind,
- live: live,
- die: die,
- delegate: delegate,
- undelegate: undelegate,
- listener: listener
- };
- })(LUNGO);
|