source: Dev/trunk/src/client/dojo/NodeList-fx.js

Last change on this file was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 8.6 KB
RevLine 
[483]1define(["./query", "./_base/lang", "./aspect", "./_base/fx", "./fx"],
2function(query, lang, aspect, baseFx, coreFx){
3
4// module:
5//              dojo/NodeList-fx
6
7/*=====
8return function(){
9        // summary:
10        //              Adds dojo.fx animation support to dojo.query() by extending the NodeList class
11        //              with additional FX functions.  NodeList is the array-like object used to hold query results.
12};
13=====*/
14
15var NodeList = query.NodeList;
16
17lang.extend(NodeList, {
18        _anim: function(obj, method, args){
19                args = args||{};
20                var a = coreFx.combine(
21                        this.map(function(item){
22                                var tmpArgs = { node: item };
23                                lang.mixin(tmpArgs, args);
24                                return obj[method](tmpArgs);
25                        })
26                );
27                return args.auto ? a.play() && this : a; // dojo/_base/fx.Animation|dojo/NodeList
28        },
29
30        wipeIn: function(args){
31                // summary:
32                //              wipe in all elements of this NodeList via `dojo/fx.wipeIn()`
33                //
34                // args: Object?
35                //              Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of
36                //              an `auto` parameter.
37                //
38                // returns: dojo/_base/fx.Animation|dojo/NodeList
39                //              A special args member `auto` can be passed to automatically play the animation.
40                //              If args.auto is present, the original dojo/NodeList will be returned for further
41                //              chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed
42                //
43                // example:
44                //              Fade in all tables with class "blah":
45                //              |       require(["dojo/query", "dojo/NodeList-fx"
46                //              |       ], function(query){
47                //              |               query("table.blah").wipeIn().play();
48                //              |       });
49                //
50                // example:
51                //              Utilizing `auto` to get the NodeList back:
52                //              |       require(["dojo/query", "dojo/NodeList-fx"
53                //              |       ], function(query){
54                //              |               query(".titles").wipeIn({ auto:true }).onclick(someFunction);
55                //              |       });
56                //
57                return this._anim(coreFx, "wipeIn", args); // dojo/_base/fx.Animation|dojo/NodeList
58        },
59
60        wipeOut: function(args){
61                // summary:
62                //              wipe out all elements of this NodeList via `dojo/fx.wipeOut()`
63                //
64                // args: Object?
65                //              Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of
66                //              an `auto` parameter.
67                //
68                // returns: dojo/_base/fx.Animation|dojo/NodeList
69                //              A special args member `auto` can be passed to automatically play the animation.
70                //              If args.auto is present, the original dojo/NodeList will be returned for further
71                //              chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed
72                //
73                // example:
74                //              Wipe out all tables with class "blah":
75                //              |       require(["dojo/query", "dojo/NodeList-fx"
76                //              |       ], function(query){
77                //              |               query("table.blah").wipeOut().play();
78                //              |       });             
79                return this._anim(coreFx, "wipeOut", args); // dojo/_base/fx.Animation|dojo/NodeList
80        },
81
82        slideTo: function(args){
83                // summary:
84                //              slide all elements of the node list to the specified place via `dojo/fx.slideTo()`
85                //
86                // args: Object?
87                //              Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of
88                //              an `auto` parameter.
89                //
90                // returns: dojo/_base/fx.Animation|dojo/NodeList
91                //              A special args member `auto` can be passed to automatically play the animation.
92                //              If args.auto is present, the original dojo/NodeList will be returned for further
93                //              chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed
94                //
95                // example:
96                //              |       Move all tables with class "blah" to 300/300:
97                //              |       require(["dojo/query", "dojo/NodeList-fx"
98                //              |       ], function(query){
99                //              |               query("table.blah").slideTo({
100                //              |                       left: 40,
101                //              |                       top: 50
102                //              |               }).play();
103                //              |       });
104                return this._anim(coreFx, "slideTo", args); // dojo/_base/fx.Animation|dojo/NodeList
105        },
106
107
108        fadeIn: function(args){
109                // summary:
110                //              fade in all elements of this NodeList via `dojo.fadeIn`
111                //
112                // args: Object?
113                //              Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of
114                //              an `auto` parameter.
115                //
116                // returns: dojo/_base/fx.Animation|dojo/NodeList
117                //              A special args member `auto` can be passed to automatically play the animation.
118                //              If args.auto is present, the original dojo/NodeList will be returned for further
119                //              chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed
120                //
121                // example:
122                //              Fade in all tables with class "blah":
123                //              |       require(["dojo/query", "dojo/NodeList-fx"
124                //              |       ], function(query){
125                //              |               query("table.blah").fadeIn().play();
126                //              |       });
127                return this._anim(baseFx, "fadeIn", args); // dojo/_base/fx.Animation|dojo/NodeList
128        },
129
130        fadeOut: function(args){
131                // summary:
132                //              fade out all elements of this NodeList via `dojo.fadeOut`
133                //
134                // args: Object?
135                //              Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of
136                //              an `auto` parameter.
137                //
138                // returns: dojo/_base/fx.Animation|dojo/NodeList
139                //              A special args member `auto` can be passed to automatically play the animation.
140                //              If args.auto is present, the original dojo/NodeList will be returned for further
141                //              chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed
142                //
143                // example:
144                //              Fade out all elements with class "zork":
145                //              |       require(["dojo/query", "dojo/NodeList-fx"
146                //              |       ], function(query){
147                //              |               query(".zork").fadeOut().play();
148                //              |       });
149                // example:
150                //              Fade them on a delay and do something at the end:
151                //              |       require(["dojo/query", "dojo/aspect", "dojo/NodeList-fx"
152                //              |       ], function(query, aspect){
153                //              |               var fo = query(".zork").fadeOut();
154                //              |               aspect.after(fo, "onEnd", function(){ /*...*/ }, true);
155                //              |               fo.play();
156                //              |       });
157                // example:
158                //              Using `auto`:
159                //              |       require(["dojo/query", "dojo/NodeList-fx"
160                //              |       ], function(query){
161                //              |               query("li").fadeOut({ auto:true }).filter(filterFn).forEach(doit);
162                //              |       });
163                //
164                return this._anim(baseFx, "fadeOut", args); // dojo/_base/fx.Animation|dojo/NodeList
165        },
166
167        animateProperty: function(args){
168                // summary:
169                //              Animate all elements of this NodeList across the properties specified.
170                //              syntax identical to `dojo.animateProperty`
171                //
172                // args: Object?
173                //              Additional dojo/_base/fx.Animation arguments to mix into this set with the addition of
174                //              an `auto` parameter.
175                //
176                // returns: dojo/_base/fx.Animation|dojo/NodeList
177                //              A special args member `auto` can be passed to automatically play the animation.
178                //              If args.auto is present, the original dojo/NodeList will be returned for further
179                //              chaining. Otherwise the dojo/_base/fx.Animation instance is returned and must be .play()'ed
180                //
181                // example:
182                //      |       require(["dojo/query", "dojo/NodeList-fx"
183                //      |       ], function(query){
184                //      |               query(".zork").animateProperty({
185                //      |                       duration: 500,
186                //      |                       properties: {
187                //      |                               color:          { start: "black", end: "white" },
188                //      |                               left:           { end: 300 }
189                //      |                       }
190                //      |               }).play();
191                //      |       });
192                //
193                // example:
194                //      |       require(["dojo/query", "dojo/NodeList-fx"
195                //      |       ], function(query){
196                //      |               query(".grue").animateProperty({
197                //      |                       auto:true,
198                //      |                       properties: {
199                //      |                               height:240
200                //      |                       }
201                //      |               }).onclick(handler);
202                //      |       });
203                return this._anim(baseFx, "animateProperty", args); // dojo/_base/fx.Animation|dojo/NodeList
204        },
205
206        anim: function( /*Object*/                      properties,
207                                        /*Integer?*/            duration,
208                                        /*Function?*/           easing,
209                                        /*Function?*/           onEnd,
210                                        /*Integer?*/            delay){
211                // summary:
212                //              Animate one or more CSS properties for all nodes in this list.
213                //              The returned animation object will already be playing when it
214                //              is returned. See the docs for `dojo.anim` for full details.
215                // properties: Object
216                //              the properties to animate. does NOT support the `auto` parameter like other
217                //              NodeList-fx methods.
218                // duration: Integer?
219                //              Optional. The time to run the animations for
220                // easing: Function?
221                //              Optional. The easing function to use.
222                // onEnd: Function?
223                //              A function to be called when the animation ends
224                // delay:
225                //              how long to delay playing the returned animation
226                // example:
227                //              Another way to fade out:
228                //      |       require(["dojo/query", "dojo/NodeList-fx"
229                //      |       ], function(query){
230                //      |               query(".thinger").anim({ opacity: 0 });
231                //      |       });
232                // example:
233                //              animate all elements with the "thigner" class to a width of 500
234                //              pixels over half a second
235                //      |       require(["dojo/query", "dojo/NodeList-fx"
236                //      |       ], function(query){
237                //      |               query(".thinger").anim({ width: 500 }, 700);
238                //      |       });
239                var canim = coreFx.combine(
240                        this.map(function(item){
241                                return baseFx.animateProperty({
242                                        node: item,
243                                        properties: properties,
244                                        duration: duration||350,
245                                        easing: easing
246                                });
247                        })
248                );
249                if(onEnd){
250                        aspect.after(canim, "onEnd", onEnd, true);
251                }
252                return canim.play(delay||0); // dojo/_base/fx.Animation
253        }
254});
255
256return NodeList;
257});
Note: See TracBrowser for help on using the repository browser.