diff --git a/Gruntfile.js b/Gruntfile.js index 2889f02b33..9cf80ee086 100644 --- a/Gruntfile.js +++ b/Gruntfile.js @@ -17,7 +17,8 @@ module.exports = function(grunt) { 'js/animate.js', 'js/viewController.js', 'js/views/**/*.js', - 'js/controllers/**/*.js' + 'js/controllers/**/*.js', + 'js/tapPolyfill.js' ], dest: 'dist/<%= pkg.name %>.js' }, diff --git a/dist/ionic-simple.js b/dist/ionic-simple.js index 6e9a915b65..d6caa7e374 100644 --- a/dist/ionic-simple.js +++ b/dist/ionic-simple.js @@ -1,58 +1,44 @@ + (function(window, document, ionic) { - // polyfill use to simulate native "tap" - function inputTapPolyfill(ele, e) { - if(ele.type === "radio" || ele.type === "checkbox") { - ele.checked = !ele.checked; - } else if(ele.type === "submit" || ele.type === "button") { - ele.click(); - } else { - ele.focus(); - } - e.stopPropagation(); - e.preventDefault(); - return false; + ionic.simple = { + + + + }; + + function initalize() { + // remove the ready listeners + document.removeEventListener( "DOMContentLoaded", initalize, false ); + window.removeEventListener( "load", initalize, false ); + + // trigger that the DOM is ready + ionic.trigger("domready"); } - function tapPolyfill(e) { - // if the source event wasn't from a touch event then don't use this polyfill - if(!e.gesture || e.gesture.pointerType !== "touch") return; - - var - e = e.gesture.srcEvent, // evaluate the actual source event, not the created event by gestures.js - ele = e.target; - - if(!e) return; - - while(ele) { - if( ele.tagName === "INPUT" || ele.tagName === "TEXTAREA" || ele.tagName === "SELECT" ) { - return inputTapPolyfill(ele, e); - } else if( ele.tagName === "LABEL" ) { - if(ele.control) { - return inputTapPolyfill(ele.control, e); - } - } else if( ele.tagName === "A" || ele.tagName === "BUTTON" ) { - ele.click(); - e.stopPropagation(); - e.preventDefault(); - return false; - } - ele = ele.parentElement; - } - - // they didn't tap one of the above elements - // if the currently active element is an input, and they tapped outside - // of the current input, then unset its focus (blur) so the keyboard goes away - var activeElement = document.activeElement; - if(activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.tagName === "SELECT")) { - activeElement.blur(); - e.stopPropagation(); - e.preventDefault(); - return false; - } + // When the DOM is ready, initalize the webapp + if ( document.readyState === "complete" ) { + // DOM is already ready + setTimeout( initalize ); + } else { + // DOM isn't ready yet, add event listeners + document.addEventListener( "DOMContentLoaded", initalize, false ); + window.addEventListener( "load", initalize, false ); } - // global tap event listener polyfill for HTML elements that were "tapped" by the user - ionic.on("tap", tapPolyfill, window); +})(this, document, ionic);; +(function(window, document, ionic) { -})(this, document, ionic); + function initalize() { + + ionic.on("swipe", swipe, document.body) + + } + + function swipe(e) { + alert(e.target.tagName) + } + + ionic.on("domready", initalize); + +})(window, document, ionic); \ No newline at end of file diff --git a/dist/ionic.js b/dist/ionic.js index 0aa716dae8..4531729b6d 100644 --- a/dist/ionic.js +++ b/dist/ionic.js @@ -1,35 +1,9 @@ -window.ionic = {}; // Create namespaces -ionic.controllers = {}; -ionic.views = {}; - -function initalize() { - // remove the ready listeners - document.removeEventListener( "DOMContentLoaded", initalize, false ); - window.removeEventListener( "load", initalize, false ); - - /* - // trigger that the DOM is ready - ionic.trigger("ready"); - - // trigger that the start page is in view - ionic.trigger("pageview"); - - // trigger that the webapp has been initalized - ionic.trigger("initalized"); - */ -} - -// When the DOM is ready, initalize the webapp -if ( document.readyState === "complete" ) { - // DOM is already ready - setTimeout( initalize ); -} else { - // DOM isn't ready yet, add event listeners - document.addEventListener( "DOMContentLoaded", initalize, false ); - window.addEventListener( "load", initalize, false ); -} +window.ionic = { + controllers: {}, + views: {} +}; ;(function(ionic) { ionic.Platform = { @@ -114,7 +88,7 @@ if ( document.readyState === "complete" ) { // Make sure to trigger the event on the given target, or dispatch it from // the window if we don't have an event target - data.target && data.target.dispatchEvent(event) || window.dispatchEvent(event); + data && data.target && data.target.dispatchEvent(event) || window.dispatchEvent(event); }, // Bind an event @@ -2411,3 +2385,61 @@ ionic.controllers.TabBarController.prototype = { } })(ionic = window.ionic || {}); +;(function(window, document, ionic) { + + // polyfill use to simulate native "tap" + function inputTapPolyfill(ele, e) { + if(ele.type === "radio" || ele.type === "checkbox") { + ele.checked = !ele.checked; + } else if(ele.type === "submit" || ele.type === "button") { + ele.click(); + } else { + ele.focus(); + } + e.stopPropagation(); + e.preventDefault(); + return false; + } + + function tapPolyfill(e) { + // if the source event wasn't from a touch event then don't use this polyfill + if(!e.gesture || e.gesture.pointerType !== "touch") return; + + var + e = e.gesture.srcEvent, // evaluate the actual source event, not the created event by gestures.js + ele = e.target; + + if(!e) return; + + while(ele) { + if( ele.tagName === "INPUT" || ele.tagName === "TEXTAREA" || ele.tagName === "SELECT" ) { + return inputTapPolyfill(ele, e); + } else if( ele.tagName === "LABEL" ) { + if(ele.control) { + return inputTapPolyfill(ele.control, e); + } + } else if( ele.tagName === "A" || ele.tagName === "BUTTON" ) { + ele.click(); + e.stopPropagation(); + e.preventDefault(); + return false; + } + ele = ele.parentElement; + } + + // they didn't tap one of the above elements + // if the currently active element is an input, and they tapped outside + // of the current input, then unset its focus (blur) so the keyboard goes away + var activeElement = document.activeElement; + if(activeElement && (activeElement.tagName === "INPUT" || activeElement.tagName === "TEXTAREA" || activeElement.tagName === "SELECT")) { + activeElement.blur(); + e.stopPropagation(); + e.preventDefault(); + return false; + } + } + + // global tap event listener polyfill for HTML elements that were "tapped" by the user + ionic.on("tap", tapPolyfill, window); + +})(this, document, ionic); diff --git a/js/events.js b/js/events.js index cf3f8f301e..6910c18eaf 100644 --- a/js/events.js +++ b/js/events.js @@ -21,7 +21,7 @@ // Make sure to trigger the event on the given target, or dispatch it from // the window if we don't have an event target - data.target && data.target.dispatchEvent(event) || window.dispatchEvent(event); + data && data.target && data.target.dispatchEvent(event) || window.dispatchEvent(event); }, // Bind an event diff --git a/js/ionic.js b/js/ionic.js index b4c7b0e7cc..21523b0ac9 100644 --- a/js/ionic.js +++ b/js/ionic.js @@ -1,32 +1,6 @@ -window.ionic = {}; // Create namespaces -ionic.controllers = {}; -ionic.views = {}; - -function initalize() { - // remove the ready listeners - document.removeEventListener( "DOMContentLoaded", initalize, false ); - window.removeEventListener( "load", initalize, false ); - - /* - // trigger that the DOM is ready - ionic.trigger("ready"); - - // trigger that the start page is in view - ionic.trigger("pageview"); - - // trigger that the webapp has been initalized - ionic.trigger("initalized"); - */ -} - -// When the DOM is ready, initalize the webapp -if ( document.readyState === "complete" ) { - // DOM is already ready - setTimeout( initalize ); -} else { - // DOM isn't ready yet, add event listeners - document.addEventListener( "DOMContentLoaded", initalize, false ); - window.addEventListener( "load", initalize, false ); -} +window.ionic = { + controllers: {}, + views: {} +}; diff --git a/ext/simple/events.js b/js/tapPolyfill.js similarity index 98% rename from ext/simple/events.js rename to js/tapPolyfill.js index 6e9a915b65..1ce5573c17 100644 --- a/ext/simple/events.js +++ b/js/tapPolyfill.js @@ -22,7 +22,7 @@ e = e.gesture.srcEvent, // evaluate the actual source event, not the created event by gestures.js ele = e.target; - if(!e) return; + if(!e) return; while(ele) { if( ele.tagName === "INPUT" || ele.tagName === "TEXTAREA" || ele.tagName === "SELECT" ) {