source: Dev/branches/rest-dojo-ui/client/dojo/NodeList-fx.js @ 274

Last change on this file since 274 was 256, checked in by hendrikvanantwerpen, 13 years ago

Reworked project structure based on REST interaction and Dojo library. As
soon as this is stable, the old jQueryUI branch can be removed (it's
kept for reference).

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