dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
77 lines (66 loc) • 2.22 kB
JavaScript
define([
"dojo/_base/lang",
"dojo/_base/declare",
"dijit/layout/ContentPane"
], function(lang, declare, ContentPane){
return declare("dojox.widget.WizardPane", ContentPane, {
// summary:
// A panel in a `dojox.widget.Wizard`
// description:
// An extended ContentPane with additional hooks for passing named
// functions to prevent the pane from going either forward or
// backwards.
// canGoBack: Boolean
// If true, then can move back to a previous panel (by clicking the "Previous" button)
canGoBack: true,
// passFunction: String
// Name of function that checks if it's OK to advance to the next panel.
// If it's not OK (for example, mandatory field hasn't been entered), then
// returns an error message (String) explaining the reason. Can return null (pass)
// or a Boolean (true == pass)
passFunction: null,
// doneFunction: String
// Name of function that is run if you press the "Done" button from this panel
doneFunction: null,
startup: function(){
this.inherited(arguments);
if(this.isFirstChild){ this.canGoBack = false; }
if(lang.isString(this.passFunction)){
this.passFunction = lang.getObject(this.passFunction);
}
if(lang.isString(this.doneFunction) && this.doneFunction){
this.doneFunction = lang.getObject(this.doneFunction);
}
},
_onShow: function(){
if(this.isFirstChild){ this.canGoBack = false; }
this.inherited(arguments);
},
_checkPass: function(){
// summary:
// Called when the user presses the "next" button.
// Calls passFunction to see if it's OK to advance to next panel, and
// if it isn't, then display error.
// Returns true to advance, false to not advance. If passFunction
// returns a string, it is assumed to be a custom error message, and
// is alert()'ed
var r = true;
if(this.passFunction && lang.isFunction(this.passFunction)){
var failMessage = this.passFunction();
switch(typeof failMessage){
case "boolean":
r = failMessage;
break;
case "string":
alert(failMessage);
r = false;
break;
}
}
return r; // Boolean
},
done: function(){
if(this.doneFunction && lang.isFunction(this.doneFunction)){ this.doneFunction(); }
}
});
});