From 79a34acdf11fd87da3e37c9542d70e30420c49c2 Mon Sep 17 00:00:00 2001
From: Tilo Mitra The `event-gestures` rollup module provides gesture events such as "flick" and "gesturemove", which normalize user interactions across touch and mouse or pointer based input devices. `event-gestures` is comprised of two modules - `event-flick` and `event-move`. The `event-flick` module provides a "flick" event which notifies users interested in a "flick" gesture, providing distance, time and velocity information. Listening to a "flick" event is easy: To configure the firing of the "flick" event, you can pass in an optional configuration object. Check the API Docs for a full list of keys that can be supplied into the config object. The `event-move` module provides "gesturemovestart", "gesturemove" and "gesturemoveend" events, which can be used to normalize drag type interactions across touch and mouse devices. These are very easy to use, but can be quite powerful. The `event-move` module normalizes gestures across mouse and touch environments. By default, the "gesturemove" and "gesturemoveend" events only fire when the same node has subscribed to the "gesturemovestart" event as well. This can be over-ridden by setting `{standAlone: true}` in the configuration properties when subscribing to these events. Generally, a "gesturemovestart" and "gesturemoveend" event fires once, while the "gesturemove" event fires repeatedly as the mouse/finger moves across the screen. Each of these events also accept a config object to control their firing. Refer to the API Docs for more information. IE10 introduces the MSPointer events, which normalize mouse/touch/pen inputs in IE10. `event-move` takes advantage of these new events, and automatically use them on supported environments. Another new aspect of IE10 is the `ms-touch-action` CSS property. This CSS property tells IE10 whether to permit default touch behavior or not. Examples of default touch behavior include panning the page, pinching, and double-tapping to zoom. By default, these behaviors will always occur when interacting with elements. However, if you are subscribing to gesture events on an element, you may not want this to be the case. For example, if you are interacting with a Scrollview, you may want to swipe across the scrollview, instead of swiping across the entire page, as per the default behavior. To account for this, Microsoft suggests setting `-ms-touch-action: none` for elements on which you do not want the default touch behavior to occur. As of YUI3.7.3, elements that subscribe to "gesture" events automatically have their `-ms-touch-action` property set to `none`. The value of the property is reverted back to the initial value when the event is detached. If you want an element to have an `-ms-touch-action` value other than `none`, you can set that via JavaScript inside the "gesturemovestart" event: If you wish to change the default `-ms-touch-action` value to be something other than `none`, you can change the default by modifying the `Y.Event._DEFAULT_TOUCH_ACTION`. Please note that this is not a public variable, and is subject to change if Microsoft's ms-touch-action implementation changes.Using `event-flick`
+
+Configuring the Flick Event
+
+Using `event-move`
+
+Gesture events in different environments
+
+
+
+
+
+
+
+
+ Environment
+ `gesturemovestart`
+ `gesturemove`
+ `gesturemoveend`
+
+
+
+ Mouse
+ `mousedown`
+ `mousemove`
+ `mouseup`
+
+
+ Touch
+ `touchstart`
+ `touchmove`
+ `touchend`
+
+
+
+MSPointer
+ `MSPointerDown`
+ `MSPointerMove`
+ `MSPointerUp`
+ Configuring gesture events
+
+Gesture events in IE10
+
+
A rollup of the following modules:
+The gestures rollup provides gesture events such as "flick" and "gesturemove", which normalize user interactions across touch and mouse or pointer based input devices. It contains the following modules:
Documentation for events added by this module can be found in the event document for the YUI global.
"," *"," * @module event-gestures"," */","","/**"," * Adds support for a \"flick\" event, which is fired at the end of a touch or mouse based flick gesture, and provides "," * velocity of the flick, along with distance and time information."," *"," *Documentation for the flick event can be found on the YUI global, "," * along with the other supported events.
"," *"," * @module event-gestures"," * @submodule event-flick"," */","var GESTURE_MAP = Y.Event._GESTURE_MAP,"," EVENT = {"," start: GESTURE_MAP.start,"," end: GESTURE_MAP.end,"," move: GESTURE_MAP.move"," },"," START = \"start\","," END = \"end\","," MOVE = \"move\",",""," OWNER_DOCUMENT = \"ownerDocument\","," MIN_VELOCITY = \"minVelocity\","," MIN_DISTANCE = \"minDistance\","," PREVENT_DEFAULT = \"preventDefault\",",""," _FLICK_START = \"_fs\","," _FLICK_START_HANDLE = \"_fsh\","," _FLICK_END_HANDLE = \"_feh\","," _FLICK_MOVE_HANDLE = \"_fmh\",",""," NODE_TYPE = \"nodeType\";","","/**"," * Sets up a \"flick\" event, that is fired whenever the user initiates a flick gesture on the node"," * where the listener is attached. The subscriber can specify a minimum distance or velocity for"," * which the event is to be fired. The subscriber can also specify if there is a particular axis which"," * they are interested in - \"x\" or \"y\". If no axis is specified, the axis along which there was most distance"," * covered is used."," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to \"on\", "," * you need to provide a null value for the configuration object, e.g: node.on(\"flick\", fn, null, context, arg1, arg2, arg3)
Documentation for events added by this module can be found in the event document for the YUI global.
"," *"," *"," @example",""," YUI().use('event-flick', function (Y) {"," Y.one('#myNode').on('flick', function (e) {"," });"," });",""," *"," * @module event-gestures"," */","","/**"," * Adds support for a \"flick\" event, which is fired at the end of a touch or mouse based flick gesture, and provides"," * velocity of the flick, along with distance and time information."," *"," *Documentation for the flick event can be found on the YUI global,"," * along with the other supported events.
"," *"," * @module event-gestures"," * @submodule event-flick"," */","var GESTURE_MAP = Y.Event._GESTURE_MAP,"," EVENT = {"," start: GESTURE_MAP.start,"," end: GESTURE_MAP.end,"," move: GESTURE_MAP.move"," },"," START = \"start\","," END = \"end\","," MOVE = \"move\",",""," OWNER_DOCUMENT = \"ownerDocument\","," MIN_VELOCITY = \"minVelocity\","," MIN_DISTANCE = \"minDistance\","," PREVENT_DEFAULT = \"preventDefault\",",""," _FLICK_START = \"_fs\","," _FLICK_START_HANDLE = \"_fsh\","," _FLICK_END_HANDLE = \"_feh\","," _FLICK_MOVE_HANDLE = \"_fmh\",",""," NODE_TYPE = \"nodeType\";","","/**"," * Sets up a \"flick\" event, that is fired whenever the user initiates a flick gesture on the node"," * where the listener is attached. The subscriber can specify a minimum distance or velocity for"," * which the event is to be fired. The subscriber can also specify if there is a particular axis which"," * they are interested in - \"x\" or \"y\". If no axis is specified, the axis along which there was most distance"," * covered is used."," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to \"on\","," * you need to provide a null value for the configuration object, e.g: node.on(\"flick\", fn, null, context, arg1, arg2, arg3)
Documentation for events added by this module can be found in the event document for the YUI global.
+ * + * + @example + + YUI().use('event-flick', function (Y) { + Y.one('#myNode').on('flick', function (e) { + }); + }); + * * @module event-gestures */ /** - * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides + * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides * velocity of the flick, along with distance and time information. * - *Documentation for the flick event can be found on the YUI global, + *
Documentation for the flick event can be found on the YUI global, * along with the other supported events.
* * @module event-gestures * @submodule event-flick */ _yuitest_coverfunc("build/event-flick/event-flick.js", "(anonymous 1)", 1); -_yuitest_coverline("build/event-flick/event-flick.js", 24); +_yuitest_coverline("build/event-flick/event-flick.js", 33); var GESTURE_MAP = Y.Event._GESTURE_MAP, EVENT = { start: GESTURE_MAP.start, @@ -87,7 +96,7 @@ var GESTURE_MAP = Y.Event._GESTURE_MAP, * covered is used. * *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
- * however if you want to pass the context and arguments as additional signature arguments to "on",
+ * however if you want to pass the context and arguments as additional signature arguments to "on",
* you need to provide a null value for the configuration object, e.g: node.on("flick", fn, null, context, arg1, arg2, arg3)
Documentation for events added by this module can be found in the event document for the YUI global.
+ * + * + @example + + YUI().use('event-flick', function (Y) { + Y.one('#myNode').on('flick', function (e) { + Y.log('flick event fired. The event payload has goodies.'); + }); + }); + * * @module event-gestures */ /** - * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides + * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides * velocity of the flick, along with distance and time information. * - *Documentation for the flick event can be found on the YUI global, + *
Documentation for the flick event can be found on the YUI global, * along with the other supported events.
* * @module event-gestures @@ -51,7 +61,7 @@ var GESTURE_MAP = Y.Event._GESTURE_MAP, * covered is used. * *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
- * however if you want to pass the context and arguments as additional signature arguments to "on",
+ * however if you want to pass the context and arguments as additional signature arguments to "on",
* you need to provide a null value for the configuration object, e.g: node.on("flick", fn, null, context, arg1, arg2, arg3)
Documentation for events added by this module can be found in the event document for the YUI global.
+ * + * + @example + + YUI().use('event-flick', function (Y) { + Y.one('#myNode').on('flick', function (e) { + }); + }); + * * @module event-gestures */ /** - * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides + * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides * velocity of the flick, along with distance and time information. * - *Documentation for the flick event can be found on the YUI global, + *
Documentation for the flick event can be found on the YUI global, * along with the other supported events.
* * @module event-gestures @@ -51,7 +60,7 @@ var GESTURE_MAP = Y.Event._GESTURE_MAP, * covered is used. * *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
- * however if you want to pass the context and arguments as additional signature arguments to "on",
+ * however if you want to pass the context and arguments as additional signature arguments to "on",
* you need to provide a null value for the configuration object, e.g: node.on("flick", fn, null, context, arg1, arg2, arg3)
Documentation for the gesturemove triplet of events can be found on the YUI global,"," * along with the other supported events.
"," *"," * @module event-gestures"," * @submodule event-move"," */","",""," var GESTURE_MAP = Y.Event._GESTURE_MAP,"," EVENT = {"," start: GESTURE_MAP.start,"," end: GESTURE_MAP.end,"," move: GESTURE_MAP.move"," },"," START = \"start\","," MOVE = \"move\","," END = \"end\",",""," GESTURE_MOVE = \"gesture\" + MOVE,"," GESTURE_MOVE_END = GESTURE_MOVE + END,"," GESTURE_MOVE_START = GESTURE_MOVE + START,",""," _MOVE_START_HANDLE = \"_msh\","," _MOVE_HANDLE = \"_mh\","," _MOVE_END_HANDLE = \"_meh\",",""," _DEL_MOVE_START_HANDLE = \"_dmsh\","," _DEL_MOVE_HANDLE = \"_dmh\","," _DEL_MOVE_END_HANDLE = \"_dmeh\",",""," _MOVE_START = \"_ms\","," _MOVE = \"_m\",",""," MIN_TIME = \"minTime\","," MIN_DISTANCE = \"minDistance\","," PREVENT_DEFAULT = \"preventDefault\","," BUTTON = \"button\","," OWNER_DOCUMENT = \"ownerDocument\",",""," CURRENT_TARGET = \"currentTarget\","," TARGET = \"target\",",""," NODE_TYPE = \"nodeType\","," SUPPORTS_POINTER = Y.config.win && (\"msPointerEnabled\" in Y.config.win.navigator),"," MS_TOUCH_ACTION_COUNT = 'msTouchActionCount',"," MS_INIT_TOUCH_ACTION = 'msInitTouchAction',",""," _defArgsProcessor = function(se, args, delegate) {"," var iConfig = (delegate) ? 4 : 3,"," config = (args.length > iConfig) ? Y.merge(args.splice(iConfig,1)[0]) : {};",""," if (!(PREVENT_DEFAULT in config)) {"," config[PREVENT_DEFAULT] = se.PREVENT_DEFAULT;"," }",""," return config;"," },",""," _getRoot = function(node, subscriber) {"," return subscriber._extra.root || (node.get(NODE_TYPE) === 9) ? node : node.get(OWNER_DOCUMENT);"," },",""," //Checks to see if the node is the document, and if it is, returns the documentElement."," _checkDocumentElem = function(node) {"," var elem = node.getDOMNode();"," if (node.compareTo(Y.config.doc) && elem.documentElement) {"," return elem.documentElement;"," }"," else {"," return false;"," }"," },",""," _normTouchFacade = function(touchFacade, touch, params) {"," touchFacade.pageX = touch.pageX;"," touchFacade.pageY = touch.pageY;"," touchFacade.screenX = touch.screenX;"," touchFacade.screenY = touch.screenY;"," touchFacade.clientX = touch.clientX;"," touchFacade.clientY = touch.clientY;"," touchFacade[TARGET] = touchFacade[TARGET] || touch[TARGET];"," touchFacade[CURRENT_TARGET] = touchFacade[CURRENT_TARGET] || touch[CURRENT_TARGET];",""," touchFacade[BUTTON] = (params && params[BUTTON]) || 1; // default to left (left as per vendors, not W3C which is 0)"," },",""," /*"," In IE10 touch mode, gestures will not work properly unless the -ms-touch-action CSS property is set to something other than 'auto'. Read http://msdn.microsoft.com/en-us/library/windows/apps/hh767313.aspx for more info. To get around this, we set -ms-touch-action: none which is the same as e.preventDefault() on touch environments. This tells the browser to fire DOM events for all touch events, and not perform any default behavior.",""," The user can over-ride this by setting a more lenient -ms-touch-action property on a node (such as pan-x, pan-y, etc.) via CSS when subscribing to the 'gesturemovestart' event."," */"," _setTouchActions = function (node) {"," var elem = _checkDocumentElem(node) || node.getDOMNode(),"," num = node.getData(MS_TOUCH_ACTION_COUNT);",""," //Checks to see if msTouchAction is supported."," if (SUPPORTS_POINTER) {"," if (!num) {"," num = 0;"," node.setData(MS_INIT_TOUCH_ACTION, elem.style.msTouchAction);"," }"," elem.style.msTouchAction = Y.Event._DEFAULT_TOUCH_ACTION;"," num++;"," node.setData(MS_TOUCH_ACTION_COUNT, num);"," }"," },",""," /*"," Resets the element's -ms-touch-action property back to the original value, This is called on detach() and detachDelegate()."," */"," _unsetTouchActions = function (node) {"," var elem = _checkDocumentElem(node) || node.getDOMNode(),"," num = node.getData(MS_TOUCH_ACTION_COUNT),"," initTouchAction = node.getData(MS_INIT_TOUCH_ACTION);",""," if (SUPPORTS_POINTER) {"," num--;"," node.setData(MS_TOUCH_ACTION_COUNT, num);"," if (num === 0 && elem.style.msTouchAction !== initTouchAction) {"," elem.style.msTouchAction = initTouchAction;"," }"," }"," },",""," _prevent = function(e, preventDefault) {"," if (preventDefault) {"," // preventDefault is a boolean or a function"," if (!preventDefault.call || preventDefault(e)) {"," e.preventDefault();"," }"," }"," },",""," define = Y.Event.define;"," Y.Event._DEFAULT_TOUCH_ACTION = 'none';","","/**"," * Sets up a \"gesturemovestart\" event, that is fired on touch devices in response to a single finger \"touchstart\","," * and on mouse based devices in response to a \"mousedown\". The subscriber can specify the minimum time"," * and distance thresholds which should be crossed before the \"gesturemovestart\" is fired and for the mouse,"," * which button should initiate a \"gesturemovestart\". This event can also be listened for using node.delegate()."," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to on/delegate,"," * you need to provide a null value for the configuration object, e.g: node.on(\"gesturemovestart\", fn, null, context, arg1, arg2, arg3)
By default this event is only fired when the same node"," * has received a \"gesturemovestart\" event. The subscriber can set standAlone to true, in the configuration properties,"," * if they want to listen for this event without an initial \"gesturemovestart\".
"," *"," *By default this event sets up it's internal \"touchmove\" and \"mousemove\" DOM listeners on the document element. The subscriber"," * can set the root configuration property, to specify which node to attach DOM listeners to, if different from the document.
"," *"," *This event can also be listened for using node.delegate().
"," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to on/delegate,"," * you need to provide a null value for the configuration object, e.g: node.on(\"gesturemove\", fn, null, context, arg1, arg2, arg3)
By default this event is only fired when the same node"," * has received a \"gesturemove\" or \"gesturemovestart\" event. The subscriber can set standAlone to true, in the configuration properties,"," * if they want to listen for this event without a preceding \"gesturemovestart\" or \"gesturemove\".
"," *"," *By default this event sets up it's internal \"touchend\" and \"mouseup\" DOM listeners on the document element. The subscriber"," * can set the root configuration property, to specify which node to attach DOM listeners to, if different from the document.
"," *"," *This event can also be listened for using node.delegate().
"," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to on/delegate,"," * you need to provide a null value for the configuration object, e.g: node.on(\"gesturemoveend\", fn, null, context, arg1, arg2, arg3)
Documentation for the gesturemove triplet of events can be found on the YUI global,"," * along with the other supported events.
",""," @example",""," YUI().use('event-move', function (Y) {"," Y.one('#myNode').on('gesturemovestart', function (e) {"," });"," Y.one('#myNode').on('gesturemove', function (e) {"," });"," Y.one('#myNode').on('gesturemoveend', function (e) {"," });"," });",""," * @module event-gestures"," * @submodule event-move"," */","",""," var GESTURE_MAP = Y.Event._GESTURE_MAP,"," EVENT = {"," start: GESTURE_MAP.start,"," end: GESTURE_MAP.end,"," move: GESTURE_MAP.move"," },"," START = \"start\","," MOVE = \"move\","," END = \"end\",",""," GESTURE_MOVE = \"gesture\" + MOVE,"," GESTURE_MOVE_END = GESTURE_MOVE + END,"," GESTURE_MOVE_START = GESTURE_MOVE + START,",""," _MOVE_START_HANDLE = \"_msh\","," _MOVE_HANDLE = \"_mh\","," _MOVE_END_HANDLE = \"_meh\",",""," _DEL_MOVE_START_HANDLE = \"_dmsh\","," _DEL_MOVE_HANDLE = \"_dmh\","," _DEL_MOVE_END_HANDLE = \"_dmeh\",",""," _MOVE_START = \"_ms\","," _MOVE = \"_m\",",""," MIN_TIME = \"minTime\","," MIN_DISTANCE = \"minDistance\","," PREVENT_DEFAULT = \"preventDefault\","," BUTTON = \"button\","," OWNER_DOCUMENT = \"ownerDocument\",",""," CURRENT_TARGET = \"currentTarget\","," TARGET = \"target\",",""," NODE_TYPE = \"nodeType\","," SUPPORTS_POINTER = Y.config.win && (\"msPointerEnabled\" in Y.config.win.navigator),"," MS_TOUCH_ACTION_COUNT = 'msTouchActionCount',"," MS_INIT_TOUCH_ACTION = 'msInitTouchAction',",""," _defArgsProcessor = function(se, args, delegate) {"," var iConfig = (delegate) ? 4 : 3,"," config = (args.length > iConfig) ? Y.merge(args.splice(iConfig,1)[0]) : {};",""," if (!(PREVENT_DEFAULT in config)) {"," config[PREVENT_DEFAULT] = se.PREVENT_DEFAULT;"," }",""," return config;"," },",""," _getRoot = function(node, subscriber) {"," return subscriber._extra.root || (node.get(NODE_TYPE) === 9) ? node : node.get(OWNER_DOCUMENT);"," },",""," //Checks to see if the node is the document, and if it is, returns the documentElement."," _checkDocumentElem = function(node) {"," var elem = node.getDOMNode();"," if (node.compareTo(Y.config.doc) && elem.documentElement) {"," return elem.documentElement;"," }"," else {"," return false;"," }"," },",""," _normTouchFacade = function(touchFacade, touch, params) {"," touchFacade.pageX = touch.pageX;"," touchFacade.pageY = touch.pageY;"," touchFacade.screenX = touch.screenX;"," touchFacade.screenY = touch.screenY;"," touchFacade.clientX = touch.clientX;"," touchFacade.clientY = touch.clientY;"," touchFacade[TARGET] = touchFacade[TARGET] || touch[TARGET];"," touchFacade[CURRENT_TARGET] = touchFacade[CURRENT_TARGET] || touch[CURRENT_TARGET];",""," touchFacade[BUTTON] = (params && params[BUTTON]) || 1; // default to left (left as per vendors, not W3C which is 0)"," },",""," /*"," In IE10 touch mode, gestures will not work properly unless the -ms-touch-action CSS property is set to something other than 'auto'. Read http://msdn.microsoft.com/en-us/library/windows/apps/hh767313.aspx for more info. To get around this, we set -ms-touch-action: none which is the same as e.preventDefault() on touch environments. This tells the browser to fire DOM events for all touch events, and not perform any default behavior.",""," The user can over-ride this by setting a more lenient -ms-touch-action property on a node (such as pan-x, pan-y, etc.) via CSS when subscribing to the 'gesturemovestart' event."," */"," _setTouchActions = function (node) {"," var elem = _checkDocumentElem(node) || node.getDOMNode(),"," num = node.getData(MS_TOUCH_ACTION_COUNT);",""," //Checks to see if msTouchAction is supported."," if (SUPPORTS_POINTER) {"," if (!num) {"," num = 0;"," node.setData(MS_INIT_TOUCH_ACTION, elem.style.msTouchAction);"," }"," elem.style.msTouchAction = Y.Event._DEFAULT_TOUCH_ACTION;"," num++;"," node.setData(MS_TOUCH_ACTION_COUNT, num);"," }"," },",""," /*"," Resets the element's -ms-touch-action property back to the original value, This is called on detach() and detachDelegate()."," */"," _unsetTouchActions = function (node) {"," var elem = _checkDocumentElem(node) || node.getDOMNode(),"," num = node.getData(MS_TOUCH_ACTION_COUNT),"," initTouchAction = node.getData(MS_INIT_TOUCH_ACTION);",""," if (SUPPORTS_POINTER) {"," num--;"," node.setData(MS_TOUCH_ACTION_COUNT, num);"," if (num === 0 && elem.style.msTouchAction !== initTouchAction) {"," elem.style.msTouchAction = initTouchAction;"," }"," }"," },",""," _prevent = function(e, preventDefault) {"," if (preventDefault) {"," // preventDefault is a boolean or a function"," if (!preventDefault.call || preventDefault(e)) {"," e.preventDefault();"," }"," }"," },",""," define = Y.Event.define;"," Y.Event._DEFAULT_TOUCH_ACTION = 'none';","","/**"," * Sets up a \"gesturemovestart\" event, that is fired on touch devices in response to a single finger \"touchstart\","," * and on mouse based devices in response to a \"mousedown\". The subscriber can specify the minimum time"," * and distance thresholds which should be crossed before the \"gesturemovestart\" is fired and for the mouse,"," * which button should initiate a \"gesturemovestart\". This event can also be listened for using node.delegate()."," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to on/delegate,"," * you need to provide a null value for the configuration object, e.g: node.on(\"gesturemovestart\", fn, null, context, arg1, arg2, arg3)
By default this event is only fired when the same node"," * has received a \"gesturemovestart\" event. The subscriber can set standAlone to true, in the configuration properties,"," * if they want to listen for this event without an initial \"gesturemovestart\".
"," *"," *By default this event sets up it's internal \"touchmove\" and \"mousemove\" DOM listeners on the document element. The subscriber"," * can set the root configuration property, to specify which node to attach DOM listeners to, if different from the document.
"," *"," *This event can also be listened for using node.delegate().
"," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to on/delegate,"," * you need to provide a null value for the configuration object, e.g: node.on(\"gesturemove\", fn, null, context, arg1, arg2, arg3)
By default this event is only fired when the same node"," * has received a \"gesturemove\" or \"gesturemovestart\" event. The subscriber can set standAlone to true, in the configuration properties,"," * if they want to listen for this event without a preceding \"gesturemovestart\" or \"gesturemove\".
"," *"," *By default this event sets up it's internal \"touchend\" and \"mouseup\" DOM listeners on the document element. The subscriber"," * can set the root configuration property, to specify which node to attach DOM listeners to, if different from the document.
"," *"," *This event can also be listened for using node.delegate().
"," *"," *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,"," * however if you want to pass the context and arguments as additional signature arguments to on/delegate,"," * you need to provide a null value for the configuration object, e.g: node.on(\"gesturemoveend\", fn, null, context, arg1, arg2, arg3)
Documentation for the gesturemove triplet of events can be found on the YUI global, * along with the other supported events.
- * + + @example + + YUI().use('event-move', function (Y) { + Y.one('#myNode').on('gesturemovestart', function (e) { + }); + Y.one('#myNode').on('gesturemove', function (e) { + }); + Y.one('#myNode').on('gesturemoveend', function (e) { + }); + }); + * @module event-gestures * @submodule event-move */ _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 1)", 1); -_yuitest_coverline("build/event-move/event-move.js", 16); +_yuitest_coverline("build/event-move/event-move.js", 27); var GESTURE_MAP = Y.Event._GESTURE_MAP, EVENT = { start: GESTURE_MAP.start, @@ -89,63 +100,63 @@ var GESTURE_MAP = Y.Event._GESTURE_MAP, MS_INIT_TOUCH_ACTION = 'msInitTouchAction', _defArgsProcessor = function(se, args, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "_defArgsProcessor", 55); -_yuitest_coverline("build/event-move/event-move.js", 56); + _yuitest_coverfunc("build/event-move/event-move.js", "_defArgsProcessor", 66); +_yuitest_coverline("build/event-move/event-move.js", 67); var iConfig = (delegate) ? 4 : 3, config = (args.length > iConfig) ? Y.merge(args.splice(iConfig,1)[0]) : {}; - _yuitest_coverline("build/event-move/event-move.js", 59); + _yuitest_coverline("build/event-move/event-move.js", 70); if (!(PREVENT_DEFAULT in config)) { - _yuitest_coverline("build/event-move/event-move.js", 60); + _yuitest_coverline("build/event-move/event-move.js", 71); config[PREVENT_DEFAULT] = se.PREVENT_DEFAULT; } - _yuitest_coverline("build/event-move/event-move.js", 63); + _yuitest_coverline("build/event-move/event-move.js", 74); return config; }, _getRoot = function(node, subscriber) { - _yuitest_coverfunc("build/event-move/event-move.js", "_getRoot", 66); -_yuitest_coverline("build/event-move/event-move.js", 67); + _yuitest_coverfunc("build/event-move/event-move.js", "_getRoot", 77); +_yuitest_coverline("build/event-move/event-move.js", 78); return subscriber._extra.root || (node.get(NODE_TYPE) === 9) ? node : node.get(OWNER_DOCUMENT); }, //Checks to see if the node is the document, and if it is, returns the documentElement. _checkDocumentElem = function(node) { - _yuitest_coverfunc("build/event-move/event-move.js", "_checkDocumentElem", 71); -_yuitest_coverline("build/event-move/event-move.js", 72); + _yuitest_coverfunc("build/event-move/event-move.js", "_checkDocumentElem", 82); +_yuitest_coverline("build/event-move/event-move.js", 83); var elem = node.getDOMNode(); - _yuitest_coverline("build/event-move/event-move.js", 73); + _yuitest_coverline("build/event-move/event-move.js", 84); if (node.compareTo(Y.config.doc) && elem.documentElement) { - _yuitest_coverline("build/event-move/event-move.js", 74); + _yuitest_coverline("build/event-move/event-move.js", 85); return elem.documentElement; } else { - _yuitest_coverline("build/event-move/event-move.js", 77); + _yuitest_coverline("build/event-move/event-move.js", 88); return false; } }, _normTouchFacade = function(touchFacade, touch, params) { - _yuitest_coverfunc("build/event-move/event-move.js", "_normTouchFacade", 81); -_yuitest_coverline("build/event-move/event-move.js", 82); + _yuitest_coverfunc("build/event-move/event-move.js", "_normTouchFacade", 92); +_yuitest_coverline("build/event-move/event-move.js", 93); touchFacade.pageX = touch.pageX; - _yuitest_coverline("build/event-move/event-move.js", 83); + _yuitest_coverline("build/event-move/event-move.js", 94); touchFacade.pageY = touch.pageY; - _yuitest_coverline("build/event-move/event-move.js", 84); + _yuitest_coverline("build/event-move/event-move.js", 95); touchFacade.screenX = touch.screenX; - _yuitest_coverline("build/event-move/event-move.js", 85); + _yuitest_coverline("build/event-move/event-move.js", 96); touchFacade.screenY = touch.screenY; - _yuitest_coverline("build/event-move/event-move.js", 86); + _yuitest_coverline("build/event-move/event-move.js", 97); touchFacade.clientX = touch.clientX; - _yuitest_coverline("build/event-move/event-move.js", 87); + _yuitest_coverline("build/event-move/event-move.js", 98); touchFacade.clientY = touch.clientY; - _yuitest_coverline("build/event-move/event-move.js", 88); + _yuitest_coverline("build/event-move/event-move.js", 99); touchFacade[TARGET] = touchFacade[TARGET] || touch[TARGET]; - _yuitest_coverline("build/event-move/event-move.js", 89); + _yuitest_coverline("build/event-move/event-move.js", 100); touchFacade[CURRENT_TARGET] = touchFacade[CURRENT_TARGET] || touch[CURRENT_TARGET]; - _yuitest_coverline("build/event-move/event-move.js", 91); + _yuitest_coverline("build/event-move/event-move.js", 102); touchFacade[BUTTON] = (params && params[BUTTON]) || 1; // default to left (left as per vendors, not W3C which is 0) }, @@ -155,26 +166,26 @@ touchFacade[BUTTON] = (params && params[BUTTON]) || 1; // default to left (left The user can over-ride this by setting a more lenient -ms-touch-action property on a node (such as pan-x, pan-y, etc.) via CSS when subscribing to the 'gesturemovestart' event. */ _setTouchActions = function (node) { - _yuitest_coverfunc("build/event-move/event-move.js", "_setTouchActions", 99); -_yuitest_coverline("build/event-move/event-move.js", 100); + _yuitest_coverfunc("build/event-move/event-move.js", "_setTouchActions", 110); +_yuitest_coverline("build/event-move/event-move.js", 111); var elem = _checkDocumentElem(node) || node.getDOMNode(), num = node.getData(MS_TOUCH_ACTION_COUNT); //Checks to see if msTouchAction is supported. - _yuitest_coverline("build/event-move/event-move.js", 104); + _yuitest_coverline("build/event-move/event-move.js", 115); if (SUPPORTS_POINTER) { - _yuitest_coverline("build/event-move/event-move.js", 105); + _yuitest_coverline("build/event-move/event-move.js", 116); if (!num) { - _yuitest_coverline("build/event-move/event-move.js", 106); + _yuitest_coverline("build/event-move/event-move.js", 117); num = 0; - _yuitest_coverline("build/event-move/event-move.js", 107); + _yuitest_coverline("build/event-move/event-move.js", 118); node.setData(MS_INIT_TOUCH_ACTION, elem.style.msTouchAction); } - _yuitest_coverline("build/event-move/event-move.js", 109); + _yuitest_coverline("build/event-move/event-move.js", 120); elem.style.msTouchAction = Y.Event._DEFAULT_TOUCH_ACTION; - _yuitest_coverline("build/event-move/event-move.js", 110); + _yuitest_coverline("build/event-move/event-move.js", 121); num++; - _yuitest_coverline("build/event-move/event-move.js", 111); + _yuitest_coverline("build/event-move/event-move.js", 122); node.setData(MS_TOUCH_ACTION_COUNT, num); } }, @@ -183,41 +194,41 @@ node.setData(MS_TOUCH_ACTION_COUNT, num); Resets the element's -ms-touch-action property back to the original value, This is called on detach() and detachDelegate(). */ _unsetTouchActions = function (node) { - _yuitest_coverfunc("build/event-move/event-move.js", "_unsetTouchActions", 118); -_yuitest_coverline("build/event-move/event-move.js", 119); + _yuitest_coverfunc("build/event-move/event-move.js", "_unsetTouchActions", 129); +_yuitest_coverline("build/event-move/event-move.js", 130); var elem = _checkDocumentElem(node) || node.getDOMNode(), num = node.getData(MS_TOUCH_ACTION_COUNT), initTouchAction = node.getData(MS_INIT_TOUCH_ACTION); - _yuitest_coverline("build/event-move/event-move.js", 123); + _yuitest_coverline("build/event-move/event-move.js", 134); if (SUPPORTS_POINTER) { - _yuitest_coverline("build/event-move/event-move.js", 124); + _yuitest_coverline("build/event-move/event-move.js", 135); num--; - _yuitest_coverline("build/event-move/event-move.js", 125); + _yuitest_coverline("build/event-move/event-move.js", 136); node.setData(MS_TOUCH_ACTION_COUNT, num); - _yuitest_coverline("build/event-move/event-move.js", 126); + _yuitest_coverline("build/event-move/event-move.js", 137); if (num === 0 && elem.style.msTouchAction !== initTouchAction) { - _yuitest_coverline("build/event-move/event-move.js", 127); + _yuitest_coverline("build/event-move/event-move.js", 138); elem.style.msTouchAction = initTouchAction; } } }, _prevent = function(e, preventDefault) { - _yuitest_coverfunc("build/event-move/event-move.js", "_prevent", 132); -_yuitest_coverline("build/event-move/event-move.js", 133); + _yuitest_coverfunc("build/event-move/event-move.js", "_prevent", 143); +_yuitest_coverline("build/event-move/event-move.js", 144); if (preventDefault) { // preventDefault is a boolean or a function - _yuitest_coverline("build/event-move/event-move.js", 135); + _yuitest_coverline("build/event-move/event-move.js", 146); if (!preventDefault.call || preventDefault(e)) { - _yuitest_coverline("build/event-move/event-move.js", 136); + _yuitest_coverline("build/event-move/event-move.js", 147); e.preventDefault(); } } }, define = Y.Event.define; - _yuitest_coverline("build/event-move/event-move.js", 142); + _yuitest_coverline("build/event-move/event-move.js", 153); Y.Event._DEFAULT_TOUCH_ACTION = 'none'; /** @@ -251,17 +262,17 @@ Y.Event._DEFAULT_TOUCH_ACTION = 'none'; * @return {EventHandle} the detach handle */ -_yuitest_coverline("build/event-move/event-move.js", 175); +_yuitest_coverline("build/event-move/event-move.js", 186); define(GESTURE_MOVE_START, { on: function (node, subscriber, ce) { //Set -ms-touch-action on IE10 and set preventDefault to true - _yuitest_coverfunc("build/event-move/event-move.js", "on", 177); -_yuitest_coverline("build/event-move/event-move.js", 180); + _yuitest_coverfunc("build/event-move/event-move.js", "on", 188); +_yuitest_coverline("build/event-move/event-move.js", 191); _setTouchActions(node); - _yuitest_coverline("build/event-move/event-move.js", 182); + _yuitest_coverline("build/event-move/event-move.js", 193); subscriber[_MOVE_START_HANDLE] = node.on(EVENT[START], this._onStart, this, @@ -272,85 +283,85 @@ subscriber[_MOVE_START_HANDLE] = node.on(EVENT[START], delegate : function(node, subscriber, ce, filter) { - _yuitest_coverfunc("build/event-move/event-move.js", "delegate", 190); -_yuitest_coverline("build/event-move/event-move.js", 192); + _yuitest_coverfunc("build/event-move/event-move.js", "delegate", 201); +_yuitest_coverline("build/event-move/event-move.js", 203); var se = this; - _yuitest_coverline("build/event-move/event-move.js", 194); + _yuitest_coverline("build/event-move/event-move.js", 205); subscriber[_DEL_MOVE_START_HANDLE] = node.delegate(EVENT[START], function(e) { - _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 2)", 195); -_yuitest_coverline("build/event-move/event-move.js", 196); + _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 2)", 206); +_yuitest_coverline("build/event-move/event-move.js", 207); se._onStart(e, node, subscriber, ce, true); }, filter); }, detachDelegate : function(node, subscriber, ce, filter) { - _yuitest_coverfunc("build/event-move/event-move.js", "detachDelegate", 201); -_yuitest_coverline("build/event-move/event-move.js", 202); + _yuitest_coverfunc("build/event-move/event-move.js", "detachDelegate", 212); +_yuitest_coverline("build/event-move/event-move.js", 213); var handle = subscriber[_DEL_MOVE_START_HANDLE]; - _yuitest_coverline("build/event-move/event-move.js", 204); + _yuitest_coverline("build/event-move/event-move.js", 215); if (handle) { - _yuitest_coverline("build/event-move/event-move.js", 205); + _yuitest_coverline("build/event-move/event-move.js", 216); handle.detach(); - _yuitest_coverline("build/event-move/event-move.js", 206); + _yuitest_coverline("build/event-move/event-move.js", 217); subscriber[_DEL_MOVE_START_HANDLE] = null; } - _yuitest_coverline("build/event-move/event-move.js", 209); + _yuitest_coverline("build/event-move/event-move.js", 220); _unsetTouchActions(node); }, detach: function (node, subscriber, ce) { - _yuitest_coverfunc("build/event-move/event-move.js", "detach", 212); -_yuitest_coverline("build/event-move/event-move.js", 213); + _yuitest_coverfunc("build/event-move/event-move.js", "detach", 223); +_yuitest_coverline("build/event-move/event-move.js", 224); var startHandle = subscriber[_MOVE_START_HANDLE]; - _yuitest_coverline("build/event-move/event-move.js", 215); + _yuitest_coverline("build/event-move/event-move.js", 226); if (startHandle) { - _yuitest_coverline("build/event-move/event-move.js", 216); + _yuitest_coverline("build/event-move/event-move.js", 227); startHandle.detach(); - _yuitest_coverline("build/event-move/event-move.js", 217); + _yuitest_coverline("build/event-move/event-move.js", 228); subscriber[_MOVE_START_HANDLE] = null; } - _yuitest_coverline("build/event-move/event-move.js", 220); + _yuitest_coverline("build/event-move/event-move.js", 231); _unsetTouchActions(node); }, processArgs : function(args, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "processArgs", 223); -_yuitest_coverline("build/event-move/event-move.js", 224); + _yuitest_coverfunc("build/event-move/event-move.js", "processArgs", 234); +_yuitest_coverline("build/event-move/event-move.js", 235); var params = _defArgsProcessor(this, args, delegate); - _yuitest_coverline("build/event-move/event-move.js", 226); + _yuitest_coverline("build/event-move/event-move.js", 237); if (!(MIN_TIME in params)) { - _yuitest_coverline("build/event-move/event-move.js", 227); + _yuitest_coverline("build/event-move/event-move.js", 238); params[MIN_TIME] = this.MIN_TIME; } - _yuitest_coverline("build/event-move/event-move.js", 230); + _yuitest_coverline("build/event-move/event-move.js", 241); if (!(MIN_DISTANCE in params)) { - _yuitest_coverline("build/event-move/event-move.js", 231); + _yuitest_coverline("build/event-move/event-move.js", 242); params[MIN_DISTANCE] = this.MIN_DISTANCE; } - _yuitest_coverline("build/event-move/event-move.js", 234); + _yuitest_coverline("build/event-move/event-move.js", 245); return params; }, _onStart : function(e, node, subscriber, ce, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "_onStart", 237); -_yuitest_coverline("build/event-move/event-move.js", 239); + _yuitest_coverfunc("build/event-move/event-move.js", "_onStart", 248); +_yuitest_coverline("build/event-move/event-move.js", 250); if (delegate) { - _yuitest_coverline("build/event-move/event-move.js", 240); + _yuitest_coverline("build/event-move/event-move.js", 251); node = e[CURRENT_TARGET]; } - _yuitest_coverline("build/event-move/event-move.js", 243); + _yuitest_coverline("build/event-move/event-move.js", 254); var params = subscriber._extra, fireStart = true, minTime = params[MIN_TIME], @@ -360,63 +371,63 @@ var params = subscriber._extra, root = _getRoot(node, subscriber), startXY; - _yuitest_coverline("build/event-move/event-move.js", 252); + _yuitest_coverline("build/event-move/event-move.js", 263); if (e.touches) { - _yuitest_coverline("build/event-move/event-move.js", 253); + _yuitest_coverline("build/event-move/event-move.js", 264); if (e.touches.length === 1) { - _yuitest_coverline("build/event-move/event-move.js", 254); + _yuitest_coverline("build/event-move/event-move.js", 265); _normTouchFacade(e, e.touches[0], params); } else { - _yuitest_coverline("build/event-move/event-move.js", 256); + _yuitest_coverline("build/event-move/event-move.js", 267); fireStart = false; } } else { - _yuitest_coverline("build/event-move/event-move.js", 259); + _yuitest_coverline("build/event-move/event-move.js", 270); fireStart = (button === undefined) || (button === e.button); } - _yuitest_coverline("build/event-move/event-move.js", 263); + _yuitest_coverline("build/event-move/event-move.js", 274); if (fireStart) { - _yuitest_coverline("build/event-move/event-move.js", 265); + _yuitest_coverline("build/event-move/event-move.js", 276); _prevent(e, preventDefault); - _yuitest_coverline("build/event-move/event-move.js", 267); + _yuitest_coverline("build/event-move/event-move.js", 278); if (minTime === 0 || minDistance === 0) { - _yuitest_coverline("build/event-move/event-move.js", 268); + _yuitest_coverline("build/event-move/event-move.js", 279); this._start(e, node, ce, params); } else { - _yuitest_coverline("build/event-move/event-move.js", 272); + _yuitest_coverline("build/event-move/event-move.js", 283); startXY = [e.pageX, e.pageY]; - _yuitest_coverline("build/event-move/event-move.js", 274); + _yuitest_coverline("build/event-move/event-move.js", 285); if (minTime > 0) { - _yuitest_coverline("build/event-move/event-move.js", 277); + _yuitest_coverline("build/event-move/event-move.js", 288); params._ht = Y.later(minTime, this, this._start, [e, node, ce, params]); - _yuitest_coverline("build/event-move/event-move.js", 279); + _yuitest_coverline("build/event-move/event-move.js", 290); params._hme = root.on(EVENT[END], Y.bind(function() { - _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 3)", 279); -_yuitest_coverline("build/event-move/event-move.js", 280); + _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 3)", 290); +_yuitest_coverline("build/event-move/event-move.js", 291); this._cancel(params); }, this)); } - _yuitest_coverline("build/event-move/event-move.js", 284); + _yuitest_coverline("build/event-move/event-move.js", 295); if (minDistance > 0) { - _yuitest_coverline("build/event-move/event-move.js", 287); + _yuitest_coverline("build/event-move/event-move.js", 298); params._hm = root.on(EVENT[MOVE], Y.bind(function(em) { - _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 4)", 287); -_yuitest_coverline("build/event-move/event-move.js", 288); + _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 4)", 298); +_yuitest_coverline("build/event-move/event-move.js", 299); if (Math.abs(em.pageX - startXY[0]) > minDistance || Math.abs(em.pageY - startXY[1]) > minDistance) { - _yuitest_coverline("build/event-move/event-move.js", 289); + _yuitest_coverline("build/event-move/event-move.js", 300); this._start(e, node, ce, params); } }, this)); @@ -426,46 +437,46 @@ this._start(e, node, ce, params); }, _cancel : function(params) { - _yuitest_coverfunc("build/event-move/event-move.js", "_cancel", 297); -_yuitest_coverline("build/event-move/event-move.js", 298); + _yuitest_coverfunc("build/event-move/event-move.js", "_cancel", 308); +_yuitest_coverline("build/event-move/event-move.js", 309); if (params._ht) { - _yuitest_coverline("build/event-move/event-move.js", 299); + _yuitest_coverline("build/event-move/event-move.js", 310); params._ht.cancel(); - _yuitest_coverline("build/event-move/event-move.js", 300); + _yuitest_coverline("build/event-move/event-move.js", 311); params._ht = null; } - _yuitest_coverline("build/event-move/event-move.js", 302); + _yuitest_coverline("build/event-move/event-move.js", 313); if (params._hme) { - _yuitest_coverline("build/event-move/event-move.js", 303); + _yuitest_coverline("build/event-move/event-move.js", 314); params._hme.detach(); - _yuitest_coverline("build/event-move/event-move.js", 304); + _yuitest_coverline("build/event-move/event-move.js", 315); params._hme = null; } - _yuitest_coverline("build/event-move/event-move.js", 306); + _yuitest_coverline("build/event-move/event-move.js", 317); if (params._hm) { - _yuitest_coverline("build/event-move/event-move.js", 307); + _yuitest_coverline("build/event-move/event-move.js", 318); params._hm.detach(); - _yuitest_coverline("build/event-move/event-move.js", 308); + _yuitest_coverline("build/event-move/event-move.js", 319); params._hm = null; } }, _start : function(e, node, ce, params) { - _yuitest_coverfunc("build/event-move/event-move.js", "_start", 312); -_yuitest_coverline("build/event-move/event-move.js", 314); + _yuitest_coverfunc("build/event-move/event-move.js", "_start", 323); +_yuitest_coverline("build/event-move/event-move.js", 325); if (params) { - _yuitest_coverline("build/event-move/event-move.js", 315); + _yuitest_coverline("build/event-move/event-move.js", 326); this._cancel(params); } - _yuitest_coverline("build/event-move/event-move.js", 318); + _yuitest_coverline("build/event-move/event-move.js", 329); e.type = GESTURE_MOVE_START; - _yuitest_coverline("build/event-move/event-move.js", 321); + _yuitest_coverline("build/event-move/event-move.js", 332); node.setData(_MOVE_START, e); - _yuitest_coverline("build/event-move/event-move.js", 322); + _yuitest_coverline("build/event-move/event-move.js", 333); ce.fire(e); }, @@ -507,15 +518,15 @@ ce.fire(e); * * @return {EventHandle} the detach handle */ -_yuitest_coverline("build/event-move/event-move.js", 363); +_yuitest_coverline("build/event-move/event-move.js", 374); define(GESTURE_MOVE, { on : function (node, subscriber, ce) { - _yuitest_coverfunc("build/event-move/event-move.js", "on", 365); -_yuitest_coverline("build/event-move/event-move.js", 367); + _yuitest_coverfunc("build/event-move/event-move.js", "on", 376); +_yuitest_coverline("build/event-move/event-move.js", 378); _setTouchActions(node); - _yuitest_coverline("build/event-move/event-move.js", 368); + _yuitest_coverline("build/event-move/event-move.js", 379); var root = _getRoot(node, subscriber, EVENT[MOVE]), moveHandle = root.on(EVENT[MOVE], @@ -525,107 +536,107 @@ var root = _getRoot(node, subscriber, EVENT[MOVE]), subscriber, ce); - _yuitest_coverline("build/event-move/event-move.js", 377); + _yuitest_coverline("build/event-move/event-move.js", 388); subscriber[_MOVE_HANDLE] = moveHandle; }, delegate : function(node, subscriber, ce, filter) { - _yuitest_coverfunc("build/event-move/event-move.js", "delegate", 381); -_yuitest_coverline("build/event-move/event-move.js", 383); + _yuitest_coverfunc("build/event-move/event-move.js", "delegate", 392); +_yuitest_coverline("build/event-move/event-move.js", 394); var se = this; - _yuitest_coverline("build/event-move/event-move.js", 385); + _yuitest_coverline("build/event-move/event-move.js", 396); subscriber[_DEL_MOVE_HANDLE] = node.delegate(EVENT[MOVE], function(e) { - _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 5)", 386); -_yuitest_coverline("build/event-move/event-move.js", 387); + _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 5)", 397); +_yuitest_coverline("build/event-move/event-move.js", 398); se._onMove(e, node, subscriber, ce, true); }, filter); }, detach : function (node, subscriber, ce) { - _yuitest_coverfunc("build/event-move/event-move.js", "detach", 392); -_yuitest_coverline("build/event-move/event-move.js", 393); + _yuitest_coverfunc("build/event-move/event-move.js", "detach", 403); +_yuitest_coverline("build/event-move/event-move.js", 404); var moveHandle = subscriber[_MOVE_HANDLE]; - _yuitest_coverline("build/event-move/event-move.js", 395); + _yuitest_coverline("build/event-move/event-move.js", 406); if (moveHandle) { - _yuitest_coverline("build/event-move/event-move.js", 396); + _yuitest_coverline("build/event-move/event-move.js", 407); moveHandle.detach(); - _yuitest_coverline("build/event-move/event-move.js", 397); + _yuitest_coverline("build/event-move/event-move.js", 408); subscriber[_MOVE_HANDLE] = null; } - _yuitest_coverline("build/event-move/event-move.js", 400); + _yuitest_coverline("build/event-move/event-move.js", 411); _unsetTouchActions(node); }, detachDelegate : function(node, subscriber, ce, filter) { - _yuitest_coverfunc("build/event-move/event-move.js", "detachDelegate", 403); -_yuitest_coverline("build/event-move/event-move.js", 404); + _yuitest_coverfunc("build/event-move/event-move.js", "detachDelegate", 414); +_yuitest_coverline("build/event-move/event-move.js", 415); var handle = subscriber[_DEL_MOVE_HANDLE]; - _yuitest_coverline("build/event-move/event-move.js", 406); + _yuitest_coverline("build/event-move/event-move.js", 417); if (handle) { - _yuitest_coverline("build/event-move/event-move.js", 407); + _yuitest_coverline("build/event-move/event-move.js", 418); handle.detach(); - _yuitest_coverline("build/event-move/event-move.js", 408); + _yuitest_coverline("build/event-move/event-move.js", 419); subscriber[_DEL_MOVE_HANDLE] = null; } - _yuitest_coverline("build/event-move/event-move.js", 411); + _yuitest_coverline("build/event-move/event-move.js", 422); _unsetTouchActions(node); }, processArgs : function(args, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "processArgs", 415); -_yuitest_coverline("build/event-move/event-move.js", 416); + _yuitest_coverfunc("build/event-move/event-move.js", "processArgs", 426); +_yuitest_coverline("build/event-move/event-move.js", 427); return _defArgsProcessor(this, args, delegate); }, _onMove : function(e, node, subscriber, ce, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "_onMove", 419); -_yuitest_coverline("build/event-move/event-move.js", 421); + _yuitest_coverfunc("build/event-move/event-move.js", "_onMove", 430); +_yuitest_coverline("build/event-move/event-move.js", 432); if (delegate) { - _yuitest_coverline("build/event-move/event-move.js", 422); + _yuitest_coverline("build/event-move/event-move.js", 433); node = e[CURRENT_TARGET]; } - _yuitest_coverline("build/event-move/event-move.js", 425); + _yuitest_coverline("build/event-move/event-move.js", 436); var fireMove = subscriber._extra.standAlone || node.getData(_MOVE_START), preventDefault = subscriber._extra.preventDefault; - _yuitest_coverline("build/event-move/event-move.js", 429); + _yuitest_coverline("build/event-move/event-move.js", 440); if (fireMove) { - _yuitest_coverline("build/event-move/event-move.js", 431); + _yuitest_coverline("build/event-move/event-move.js", 442); if (e.touches) { - _yuitest_coverline("build/event-move/event-move.js", 432); + _yuitest_coverline("build/event-move/event-move.js", 443); if (e.touches.length === 1) { - _yuitest_coverline("build/event-move/event-move.js", 433); + _yuitest_coverline("build/event-move/event-move.js", 444); _normTouchFacade(e, e.touches[0]); } else { - _yuitest_coverline("build/event-move/event-move.js", 435); + _yuitest_coverline("build/event-move/event-move.js", 446); fireMove = false; } } - _yuitest_coverline("build/event-move/event-move.js", 439); + _yuitest_coverline("build/event-move/event-move.js", 450); if (fireMove) { - _yuitest_coverline("build/event-move/event-move.js", 441); + _yuitest_coverline("build/event-move/event-move.js", 452); _prevent(e, preventDefault); - _yuitest_coverline("build/event-move/event-move.js", 444); + _yuitest_coverline("build/event-move/event-move.js", 455); e.type = GESTURE_MOVE; - _yuitest_coverline("build/event-move/event-move.js", 445); + _yuitest_coverline("build/event-move/event-move.js", 456); ce.fire(e); } } @@ -668,14 +679,14 @@ ce.fire(e); * * @return {EventHandle} the detach handle */ -_yuitest_coverline("build/event-move/event-move.js", 487); +_yuitest_coverline("build/event-move/event-move.js", 498); define(GESTURE_MOVE_END, { on : function (node, subscriber, ce) { - _yuitest_coverfunc("build/event-move/event-move.js", "on", 489); -_yuitest_coverline("build/event-move/event-move.js", 490); + _yuitest_coverfunc("build/event-move/event-move.js", "on", 500); +_yuitest_coverline("build/event-move/event-move.js", 501); _setTouchActions(node); - _yuitest_coverline("build/event-move/event-move.js", 491); + _yuitest_coverline("build/event-move/event-move.js", 502); var root = _getRoot(node, subscriber), endHandle = root.on(EVENT[END], @@ -685,109 +696,109 @@ var root = _getRoot(node, subscriber), subscriber, ce); - _yuitest_coverline("build/event-move/event-move.js", 500); + _yuitest_coverline("build/event-move/event-move.js", 511); subscriber[_MOVE_END_HANDLE] = endHandle; }, delegate : function(node, subscriber, ce, filter) { - _yuitest_coverfunc("build/event-move/event-move.js", "delegate", 503); -_yuitest_coverline("build/event-move/event-move.js", 505); + _yuitest_coverfunc("build/event-move/event-move.js", "delegate", 514); +_yuitest_coverline("build/event-move/event-move.js", 516); var se = this; - _yuitest_coverline("build/event-move/event-move.js", 507); + _yuitest_coverline("build/event-move/event-move.js", 518); subscriber[_DEL_MOVE_END_HANDLE] = node.delegate(EVENT[END], function(e) { - _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 6)", 508); -_yuitest_coverline("build/event-move/event-move.js", 509); + _yuitest_coverfunc("build/event-move/event-move.js", "(anonymous 6)", 519); +_yuitest_coverline("build/event-move/event-move.js", 520); se._onEnd(e, node, subscriber, ce, true); }, filter); }, detachDelegate : function(node, subscriber, ce, filter) { - _yuitest_coverfunc("build/event-move/event-move.js", "detachDelegate", 514); -_yuitest_coverline("build/event-move/event-move.js", 515); + _yuitest_coverfunc("build/event-move/event-move.js", "detachDelegate", 525); +_yuitest_coverline("build/event-move/event-move.js", 526); var handle = subscriber[_DEL_MOVE_END_HANDLE]; - _yuitest_coverline("build/event-move/event-move.js", 517); + _yuitest_coverline("build/event-move/event-move.js", 528); if (handle) { - _yuitest_coverline("build/event-move/event-move.js", 518); + _yuitest_coverline("build/event-move/event-move.js", 529); handle.detach(); - _yuitest_coverline("build/event-move/event-move.js", 519); + _yuitest_coverline("build/event-move/event-move.js", 530); subscriber[_DEL_MOVE_END_HANDLE] = null; } - _yuitest_coverline("build/event-move/event-move.js", 522); + _yuitest_coverline("build/event-move/event-move.js", 533); _unsetTouchActions(node); }, detach : function (node, subscriber, ce) { - _yuitest_coverfunc("build/event-move/event-move.js", "detach", 526); -_yuitest_coverline("build/event-move/event-move.js", 527); + _yuitest_coverfunc("build/event-move/event-move.js", "detach", 537); +_yuitest_coverline("build/event-move/event-move.js", 538); var endHandle = subscriber[_MOVE_END_HANDLE]; - _yuitest_coverline("build/event-move/event-move.js", 529); + _yuitest_coverline("build/event-move/event-move.js", 540); if (endHandle) { - _yuitest_coverline("build/event-move/event-move.js", 530); + _yuitest_coverline("build/event-move/event-move.js", 541); endHandle.detach(); - _yuitest_coverline("build/event-move/event-move.js", 531); + _yuitest_coverline("build/event-move/event-move.js", 542); subscriber[_MOVE_END_HANDLE] = null; } - _yuitest_coverline("build/event-move/event-move.js", 534); + _yuitest_coverline("build/event-move/event-move.js", 545); _unsetTouchActions(node); }, processArgs : function(args, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "processArgs", 537); -_yuitest_coverline("build/event-move/event-move.js", 538); + _yuitest_coverfunc("build/event-move/event-move.js", "processArgs", 548); +_yuitest_coverline("build/event-move/event-move.js", 549); return _defArgsProcessor(this, args, delegate); }, _onEnd : function(e, node, subscriber, ce, delegate) { - _yuitest_coverfunc("build/event-move/event-move.js", "_onEnd", 541); -_yuitest_coverline("build/event-move/event-move.js", 543); + _yuitest_coverfunc("build/event-move/event-move.js", "_onEnd", 552); +_yuitest_coverline("build/event-move/event-move.js", 554); if (delegate) { - _yuitest_coverline("build/event-move/event-move.js", 544); + _yuitest_coverline("build/event-move/event-move.js", 555); node = e[CURRENT_TARGET]; } - _yuitest_coverline("build/event-move/event-move.js", 547); + _yuitest_coverline("build/event-move/event-move.js", 558); var fireMoveEnd = subscriber._extra.standAlone || node.getData(_MOVE) || node.getData(_MOVE_START), preventDefault = subscriber._extra.preventDefault; - _yuitest_coverline("build/event-move/event-move.js", 550); + _yuitest_coverline("build/event-move/event-move.js", 561); if (fireMoveEnd) { - _yuitest_coverline("build/event-move/event-move.js", 552); + _yuitest_coverline("build/event-move/event-move.js", 563); if (e.changedTouches) { - _yuitest_coverline("build/event-move/event-move.js", 553); + _yuitest_coverline("build/event-move/event-move.js", 564); if (e.changedTouches.length === 1) { - _yuitest_coverline("build/event-move/event-move.js", 554); + _yuitest_coverline("build/event-move/event-move.js", 565); _normTouchFacade(e, e.changedTouches[0]); } else { - _yuitest_coverline("build/event-move/event-move.js", 556); + _yuitest_coverline("build/event-move/event-move.js", 567); fireMoveEnd = false; } } - _yuitest_coverline("build/event-move/event-move.js", 560); + _yuitest_coverline("build/event-move/event-move.js", 571); if (fireMoveEnd) { - _yuitest_coverline("build/event-move/event-move.js", 562); + _yuitest_coverline("build/event-move/event-move.js", 573); _prevent(e, preventDefault); - _yuitest_coverline("build/event-move/event-move.js", 564); + _yuitest_coverline("build/event-move/event-move.js", 575); e.type = GESTURE_MOVE_END; - _yuitest_coverline("build/event-move/event-move.js", 565); + _yuitest_coverline("build/event-move/event-move.js", 576); ce.fire(e); - _yuitest_coverline("build/event-move/event-move.js", 567); + _yuitest_coverline("build/event-move/event-move.js", 578); node.clearData(_MOVE_START); - _yuitest_coverline("build/event-move/event-move.js", 568); + _yuitest_coverline("build/event-move/event-move.js", 579); node.clearData(_MOVE); } } diff --git a/build/event-move/event-move-debug.js b/build/event-move/event-move-debug.js index 1011a3c2776..e4aacef9b34 100644 --- a/build/event-move/event-move-debug.js +++ b/build/event-move/event-move-debug.js @@ -7,7 +7,21 @@ YUI.add('event-move', function (Y, NAME) { * *Documentation for the gesturemove triplet of events can be found on the YUI global, * along with the other supported events.
- * + + @example + + YUI().use('event-move', function (Y) { + Y.one('#myNode').on('gesturemovestart', function (e) { + Y.log('gesturemovestart Fired.'); + }); + Y.one('#myNode').on('gesturemove', function (e) { + Y.log('gesturemove Fired.'); + }); + Y.one('#myNode').on('gesturemoveend', function (e) { + Y.log('gesturemoveend Fired.'); + }); + }); + * @module event-gestures * @submodule event-move */ diff --git a/build/event-move/event-move.js b/build/event-move/event-move.js index b479c60038d..399cde49f4f 100644 --- a/build/event-move/event-move.js +++ b/build/event-move/event-move.js @@ -7,7 +7,18 @@ YUI.add('event-move', function (Y, NAME) { * *Documentation for the gesturemove triplet of events can be found on the YUI global, * along with the other supported events.
- * + + @example + + YUI().use('event-move', function (Y) { + Y.one('#myNode').on('gesturemovestart', function (e) { + }); + Y.one('#myNode').on('gesturemove', function (e) { + }); + Y.one('#myNode').on('gesturemoveend', function (e) { + }); + }); + * @module event-gestures * @submodule event-move */ diff --git a/src/event-gestures/js/Flick.js b/src/event-gestures/js/Flick.js index 60f56c83e1c..de6e4f1e061 100644 --- a/src/event-gestures/js/Flick.js +++ b/src/event-gestures/js/Flick.js @@ -1,19 +1,29 @@ /** * The gestures module provides gesture events such as "flick", which normalize user interactions * across touch and mouse or pointer based input devices. This layer can be used by application developers - * to build input device agnostic components which behave the same in response to either touch or mouse based + * to build input device agnostic components which behave the same in response to either touch or mouse based * interaction. * *Documentation for events added by this module can be found in the event document for the YUI global.
+ * + * + @example + + YUI().use('event-flick', function (Y) { + Y.one('#myNode').on('flick', function (e) { + Y.log('flick event fired. The event payload has goodies.'); + }); + }); + * * @module event-gestures */ /** - * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides + * Adds support for a "flick" event, which is fired at the end of a touch or mouse based flick gesture, and provides * velocity of the flick, along with distance and time information. * - *Documentation for the flick event can be found on the YUI global, + *
Documentation for the flick event can be found on the YUI global, * along with the other supported events.
* * @module event-gestures @@ -49,7 +59,7 @@ var GESTURE_MAP = Y.Event._GESTURE_MAP, * covered is used. * *It is recommended that you use Y.bind to set up context and additional arguments for your event handler,
- * however if you want to pass the context and arguments as additional signature arguments to "on",
+ * however if you want to pass the context and arguments as additional signature arguments to "on",
* you need to provide a null value for the configuration object, e.g: node.on("flick", fn, null, context, arg1, arg2, arg3)
Documentation for the gesturemove triplet of events can be found on the YUI global, * along with the other supported events.
- * + + @example + + YUI().use('event-move', function (Y) { + Y.one('#myNode').on('gesturemovestart', function (e) { + Y.log('gesturemovestart Fired.'); + }); + Y.one('#myNode').on('gesturemove', function (e) { + Y.log('gesturemove Fired.'); + }); + Y.one('#myNode').on('gesturemoveend', function (e) { + Y.log('gesturemoveend Fired.'); + }); + }); + * @module event-gestures * @submodule event-move */