API Docs for: 3.10.3
Show:

File: event/js/hover.js

  1. /**
  2. * Adds support for a "hover" event. The event provides a convenience wrapper
  3. * for subscribing separately to mouseenter and mouseleave. The signature for
  4. * subscribing to the event is</p>
  5. *
  6. * <pre><code>node.on("hover", overFn, outFn);
  7. * node.delegate("hover", overFn, outFn, ".filterSelector");
  8. * Y.on("hover", overFn, outFn, ".targetSelector");
  9. * Y.delegate("hover", overFn, outFn, "#container", ".filterSelector");
  10. * </code></pre>
  11. *
  12. * <p>Additionally, for compatibility with a more typical subscription
  13. * signature, the following are also supported:</p>
  14. *
  15. * <pre><code>Y.on("hover", overFn, ".targetSelector", outFn);
  16. * Y.delegate("hover", overFn, "#container", outFn, ".filterSelector");
  17. * </code></pre>
  18. *
  19. * @module event
  20. * @submodule event-hover
  21. */
  22. var isFunction = Y.Lang.isFunction,
  23. noop = function () {},
  24. conf = {
  25. processArgs: function (args) {
  26. // Y.delegate('hover', over, out, '#container', '.filter')
  27. // comes in as ['hover', over, out, '#container', '.filter'], but
  28. // node.delegate('hover', over, out, '.filter')
  29. // comes in as ['hover', over, containerEl, out, '.filter']
  30. var i = isFunction(args[2]) ? 2 : 3;
  31.  
  32. return (isFunction(args[i])) ? args.splice(i,1)[0] : noop;
  33. },
  34.  
  35. on: function (node, sub, notifier, filter) {
  36. var args = (sub.args) ? sub.args.slice() : [];
  37.  
  38. args.unshift(null);
  39.  
  40. sub._detach = node[(filter) ? "delegate" : "on"]({
  41. mouseenter: function (e) {
  42. e.phase = 'over';
  43. notifier.fire(e);
  44. },
  45. mouseleave: function (e) {
  46. var thisObj = sub.context || this;
  47.  
  48. args[0] = e;
  49.  
  50. e.type = 'hover';
  51. e.phase = 'out';
  52. sub._extra.apply(thisObj, args);
  53. }
  54. }, filter);
  55. },
  56.  
  57. detach: function (node, sub, notifier) {
  58. sub._detach.detach();
  59. }
  60. };
  61.  
  62. conf.delegate = conf.on;
  63. conf.detachDelegate = conf.detach;
  64.  
  65. Y.Event.define("hover", conf);
  66.