51 lines
1.7 KiB
JavaScript
51 lines
1.7 KiB
JavaScript
define("dojox/mobile/TransitionEvent", [
|
|
"dojo/_base/declare",
|
|
"dojo/_base/Deferred",
|
|
"dojo/_base/lang",
|
|
"dojo/on",
|
|
"./transition"
|
|
], function(declare, Deferred, lang, on, transitDeferred){
|
|
|
|
return declare("dojox.mobile.TransitionEvent", null, {
|
|
// summary:
|
|
// A class used to trigger view transitions.
|
|
|
|
constructor: function(/*DomNode*/target, /*Object*/transitionOptions, /*Event?*/triggerEvent){
|
|
// summary:
|
|
// Creates a transition event.
|
|
// target:
|
|
// The DOM node that initiates the transition (for example a ListItem).
|
|
// transitionOptions:
|
|
// Contains the transition options.
|
|
// triggerEvent:
|
|
// The event that triggered the transition (for example a touch event on a ListItem).
|
|
this.transitionOptions=transitionOptions;
|
|
this.target = target;
|
|
this.triggerEvent=triggerEvent||null;
|
|
},
|
|
|
|
dispatch: function(){
|
|
// summary:
|
|
// Dispatches this transition event. Emits a "startTransition" event on the target.
|
|
var opts = {bubbles:true, cancelable:true, detail: this.transitionOptions, triggerEvent: this.triggerEvent};
|
|
//console.log("Target: ", this.target, " opts: ", opts);
|
|
|
|
var evt = on.emit(this.target,"startTransition", opts);
|
|
//console.log('evt: ', evt);
|
|
if(evt){
|
|
Deferred.when(transitDeferred, lang.hitch(this, function(transition){
|
|
Deferred.when(transition.call(this, evt), lang.hitch(this, function(results){
|
|
this.endTransition(results);
|
|
}));
|
|
}));
|
|
}
|
|
},
|
|
|
|
endTransition: function(results){
|
|
// summary:
|
|
// Called when the transition ends. Emits a "endTransition" event on the target.
|
|
on.emit(this.target, "endTransition" , {detail: results.transitionOptions});
|
|
}
|
|
});
|
|
});
|