[483] | 1 | define(["../_base/lang","../_base/declare","../_base/fx", "../aspect"], |
---|
| 2 | function(lang, declare, baseFx, aspect){ |
---|
| 3 | // module: |
---|
| 4 | // dojo/fx/Toggler |
---|
| 5 | |
---|
| 6 | return declare("dojo.fx.Toggler", null, { |
---|
| 7 | // summary: |
---|
| 8 | // A simple `dojo.Animation` toggler API. |
---|
| 9 | // description: |
---|
| 10 | // class constructor for an animation toggler. It accepts a packed |
---|
| 11 | // set of arguments about what type of animation to use in each |
---|
| 12 | // direction, duration, etc. All available members are mixed into |
---|
| 13 | // these animations from the constructor (for example, `node`, |
---|
| 14 | // `showDuration`, `hideDuration`). |
---|
| 15 | // example: |
---|
| 16 | // | var t = new dojo/fx/Toggler({ |
---|
| 17 | // | node: "nodeId", |
---|
| 18 | // | showDuration: 500, |
---|
| 19 | // | // hideDuration will default to "200" |
---|
| 20 | // | showFunc: dojo/fx/wipeIn, |
---|
| 21 | // | // hideFunc will default to "fadeOut" |
---|
| 22 | // | }); |
---|
| 23 | // | t.show(100); // delay showing for 100ms |
---|
| 24 | // | // ...time passes... |
---|
| 25 | // | t.hide(); |
---|
| 26 | |
---|
| 27 | // node: DomNode |
---|
| 28 | // the node to target for the showing and hiding animations |
---|
| 29 | node: null, |
---|
| 30 | |
---|
| 31 | // showFunc: Function |
---|
| 32 | // The function that returns the `dojo.Animation` to show the node |
---|
| 33 | showFunc: baseFx.fadeIn, |
---|
| 34 | |
---|
| 35 | // hideFunc: Function |
---|
| 36 | // The function that returns the `dojo.Animation` to hide the node |
---|
| 37 | hideFunc: baseFx.fadeOut, |
---|
| 38 | |
---|
| 39 | // showDuration: |
---|
| 40 | // Time in milliseconds to run the show Animation |
---|
| 41 | showDuration: 200, |
---|
| 42 | |
---|
| 43 | // hideDuration: |
---|
| 44 | // Time in milliseconds to run the hide Animation |
---|
| 45 | hideDuration: 200, |
---|
| 46 | |
---|
| 47 | // FIXME: need a policy for where the toggler should "be" the next |
---|
| 48 | // time show/hide are called if we're stopped somewhere in the |
---|
| 49 | // middle. |
---|
| 50 | // FIXME: also would be nice to specify individual showArgs/hideArgs mixed into |
---|
| 51 | // each animation individually. |
---|
| 52 | // FIXME: also would be nice to have events from the animations exposed/bridged |
---|
| 53 | |
---|
| 54 | /*===== |
---|
| 55 | _showArgs: null, |
---|
| 56 | _showAnim: null, |
---|
| 57 | |
---|
| 58 | _hideArgs: null, |
---|
| 59 | _hideAnim: null, |
---|
| 60 | |
---|
| 61 | _isShowing: false, |
---|
| 62 | _isHiding: false, |
---|
| 63 | =====*/ |
---|
| 64 | |
---|
| 65 | constructor: function(args){ |
---|
| 66 | var _t = this; |
---|
| 67 | |
---|
| 68 | lang.mixin(_t, args); |
---|
| 69 | _t.node = args.node; |
---|
| 70 | _t._showArgs = lang.mixin({}, args); |
---|
| 71 | _t._showArgs.node = _t.node; |
---|
| 72 | _t._showArgs.duration = _t.showDuration; |
---|
| 73 | _t.showAnim = _t.showFunc(_t._showArgs); |
---|
| 74 | |
---|
| 75 | _t._hideArgs = lang.mixin({}, args); |
---|
| 76 | _t._hideArgs.node = _t.node; |
---|
| 77 | _t._hideArgs.duration = _t.hideDuration; |
---|
| 78 | _t.hideAnim = _t.hideFunc(_t._hideArgs); |
---|
| 79 | |
---|
| 80 | aspect.after(_t.showAnim, "beforeBegin", lang.hitch(_t.hideAnim, "stop", true), true); |
---|
| 81 | aspect.after(_t.hideAnim, "beforeBegin", lang.hitch(_t.showAnim, "stop", true), true); |
---|
| 82 | }, |
---|
| 83 | |
---|
| 84 | show: function(delay){ |
---|
| 85 | // summary: |
---|
| 86 | // Toggle the node to showing |
---|
| 87 | // delay: Integer? |
---|
| 88 | // Amount of time to stall playing the show animation |
---|
| 89 | return this.showAnim.play(delay || 0); |
---|
| 90 | }, |
---|
| 91 | |
---|
| 92 | hide: function(delay){ |
---|
| 93 | // summary: |
---|
| 94 | // Toggle the node to hidden |
---|
| 95 | // delay: Integer? |
---|
| 96 | // Amount of time to stall playing the hide animation |
---|
| 97 | return this.hideAnim.play(delay || 0); |
---|
| 98 | } |
---|
| 99 | }); |
---|
| 100 | |
---|
| 101 | }); |
---|