229 lines
4.5 KiB
JavaScript
229 lines
4.5 KiB
JavaScript
|
//>>built
|
||
|
define("dojox/form/manager/_NodeMixin",["dojo/_base/lang","dojo/_base/array","dojo/_base/connect","dojo/dom","dojo/dom-attr","dojo/query","./_Mixin","dijit/form/_FormWidget","dijit/_base/manager","dojo/_base/declare"],function(_1,_2,_3,_4,_5,_6,_7,_8,_9,_a){
|
||
|
var fm=_1.getObject("dojox.form.manager",true),aa=fm.actionAdapter,_b=fm._keys,ce=fm.changeEvent=function(_c){
|
||
|
var _d="onclick";
|
||
|
switch(_c.tagName.toLowerCase()){
|
||
|
case "textarea":
|
||
|
_d="onkeyup";
|
||
|
break;
|
||
|
case "select":
|
||
|
_d="onchange";
|
||
|
break;
|
||
|
case "input":
|
||
|
switch(_c.type.toLowerCase()){
|
||
|
case "text":
|
||
|
case "password":
|
||
|
_d="onkeyup";
|
||
|
break;
|
||
|
}
|
||
|
break;
|
||
|
}
|
||
|
return _d;
|
||
|
},_e=function(_f,_10){
|
||
|
var _11=_5.get(_f,"name");
|
||
|
_10=_10||this.domNode;
|
||
|
if(_11&&!(_11 in this.formWidgets)){
|
||
|
for(var n=_f;n&&n!==_10;n=n.parentNode){
|
||
|
if(_5.get(n,"widgetId")&&_9.byNode(n).isInstanceOf(_8)){
|
||
|
return null;
|
||
|
}
|
||
|
}
|
||
|
if(_f.tagName.toLowerCase()=="input"&&_f.type.toLowerCase()=="radio"){
|
||
|
var a=this.formNodes[_11];
|
||
|
a=a&&a.node;
|
||
|
if(a&&_1.isArray(a)){
|
||
|
a.push(_f);
|
||
|
}else{
|
||
|
this.formNodes[_11]={node:[_f],connections:[]};
|
||
|
}
|
||
|
}else{
|
||
|
this.formNodes[_11]={node:_f,connections:[]};
|
||
|
}
|
||
|
}else{
|
||
|
_11=null;
|
||
|
}
|
||
|
return _11;
|
||
|
},_12=function(_13){
|
||
|
var _14={};
|
||
|
aa(function(_15,n){
|
||
|
var o=_5.get(n,"observer");
|
||
|
if(o&&typeof o=="string"){
|
||
|
_2.forEach(o.split(","),function(o){
|
||
|
o=_1.trim(o);
|
||
|
if(o&&_1.isFunction(this[o])){
|
||
|
_14[o]=1;
|
||
|
}
|
||
|
},this);
|
||
|
}
|
||
|
}).call(this,null,this.formNodes[_13].node);
|
||
|
return _b(_14);
|
||
|
},_16=function(_17,_18){
|
||
|
var t=this.formNodes[_17],c=t.connections;
|
||
|
if(c.length){
|
||
|
_2.forEach(c,_3.disconnect);
|
||
|
c=t.connections=[];
|
||
|
}
|
||
|
aa(function(_19,n){
|
||
|
var _1a=ce(n);
|
||
|
_2.forEach(_18,function(o){
|
||
|
c.push(_3.connect(n,_1a,this,function(evt){
|
||
|
if(this.watching){
|
||
|
this[o](this.formNodeValue(_17),_17,n,evt);
|
||
|
}
|
||
|
}));
|
||
|
},this);
|
||
|
}).call(this,null,t.node);
|
||
|
};
|
||
|
return _a("dojox.form.manager._NodeMixin",null,{destroy:function(){
|
||
|
for(var _1b in this.formNodes){
|
||
|
_2.forEach(this.formNodes[_1b].connections,_3.disconnect);
|
||
|
}
|
||
|
this.formNodes={};
|
||
|
this.inherited(arguments);
|
||
|
},registerNode:function(_1c){
|
||
|
if(typeof _1c=="string"){
|
||
|
_1c=_4.byId(_1c);
|
||
|
}
|
||
|
var _1d=_e.call(this,_1c);
|
||
|
if(_1d){
|
||
|
_16.call(this,_1d,_12.call(this,_1d));
|
||
|
}
|
||
|
return this;
|
||
|
},unregisterNode:function(_1e){
|
||
|
if(_1e in this.formNodes){
|
||
|
_2.forEach(this.formNodes[_1e].connections,this.disconnect,this);
|
||
|
delete this.formNodes[_1e];
|
||
|
}
|
||
|
return this;
|
||
|
},registerNodeDescendants:function(_1f){
|
||
|
if(typeof _1f=="string"){
|
||
|
_1f=_4.byId(_1f);
|
||
|
}
|
||
|
_6("input, select, textarea, button",_1f).map(function(n){
|
||
|
return _e.call(this,n,_1f);
|
||
|
},this).forEach(function(_20){
|
||
|
if(_20){
|
||
|
_16.call(this,_20,_12.call(this,_20));
|
||
|
}
|
||
|
},this);
|
||
|
return this;
|
||
|
},unregisterNodeDescendants:function(_21){
|
||
|
if(typeof _21=="string"){
|
||
|
_21=_4.byId(_21);
|
||
|
}
|
||
|
_6("input, select, textarea, button",_21).map(function(n){
|
||
|
return _5.get(_21,"name")||null;
|
||
|
}).forEach(function(_22){
|
||
|
if(_22){
|
||
|
this.unregisterNode(_22);
|
||
|
}
|
||
|
},this);
|
||
|
return this;
|
||
|
},formNodeValue:function(_23,_24){
|
||
|
var _25=arguments.length==2&&_24!==undefined,_26;
|
||
|
if(typeof _23=="string"){
|
||
|
_23=this.formNodes[_23];
|
||
|
if(_23){
|
||
|
_23=_23.node;
|
||
|
}
|
||
|
}
|
||
|
if(!_23){
|
||
|
return null;
|
||
|
}
|
||
|
if(_1.isArray(_23)){
|
||
|
if(_25){
|
||
|
_2.forEach(_23,function(_27){
|
||
|
_27.checked="";
|
||
|
});
|
||
|
_2.forEach(_23,function(_28){
|
||
|
_28.checked=_28.value===_24?"checked":"";
|
||
|
});
|
||
|
return this;
|
||
|
}
|
||
|
_2.some(_23,function(_29){
|
||
|
if(_29.checked){
|
||
|
_26=_29;
|
||
|
return true;
|
||
|
}
|
||
|
return false;
|
||
|
});
|
||
|
return _26?_26.value:"";
|
||
|
}
|
||
|
switch(_23.tagName.toLowerCase()){
|
||
|
case "select":
|
||
|
if(_23.multiple){
|
||
|
if(_25){
|
||
|
if(_1.isArray(_24)){
|
||
|
var _2a={};
|
||
|
_2.forEach(_24,function(v){
|
||
|
_2a[v]=1;
|
||
|
});
|
||
|
_6("> option",_23).forEach(function(opt){
|
||
|
opt.selected=opt.value in _2a;
|
||
|
});
|
||
|
return this;
|
||
|
}
|
||
|
_6("> option",_23).forEach(function(opt){
|
||
|
opt.selected=opt.value===_24;
|
||
|
});
|
||
|
return this;
|
||
|
}
|
||
|
var _26=_6("> option",_23).filter(function(opt){
|
||
|
return opt.selected;
|
||
|
}).map(function(opt){
|
||
|
return opt.value;
|
||
|
});
|
||
|
return _26.length==1?_26[0]:_26;
|
||
|
}
|
||
|
if(_25){
|
||
|
_6("> option",_23).forEach(function(opt){
|
||
|
opt.selected=opt.value===_24;
|
||
|
});
|
||
|
return this;
|
||
|
}
|
||
|
return _23.value||"";
|
||
|
case "button":
|
||
|
if(_25){
|
||
|
_23.innerHTML=""+_24;
|
||
|
return this;
|
||
|
}
|
||
|
return _23.innerHTML;
|
||
|
case "input":
|
||
|
if(_23.type.toLowerCase()=="checkbox"){
|
||
|
if(_25){
|
||
|
_23.checked=_24?"checked":"";
|
||
|
return this;
|
||
|
}
|
||
|
return Boolean(_23.checked);
|
||
|
}
|
||
|
}
|
||
|
if(_25){
|
||
|
_23.value=""+_24;
|
||
|
return this;
|
||
|
}
|
||
|
return _23.value;
|
||
|
},inspectFormNodes:function(_2b,_2c,_2d){
|
||
|
var _2e,_2f={};
|
||
|
if(_2c){
|
||
|
if(_1.isArray(_2c)){
|
||
|
_2.forEach(_2c,function(_30){
|
||
|
if(_30 in this.formNodes){
|
||
|
_2f[_30]=_2b.call(this,_30,this.formNodes[_30].node,_2d);
|
||
|
}
|
||
|
},this);
|
||
|
}else{
|
||
|
for(_2e in _2c){
|
||
|
if(_2e in this.formNodes){
|
||
|
_2f[_2e]=_2b.call(this,_2e,this.formNodes[_2e].node,_2c[_2e]);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}else{
|
||
|
for(_2e in this.formNodes){
|
||
|
_2f[_2e]=_2b.call(this,_2e,this.formNodes[_2e].node,_2d);
|
||
|
}
|
||
|
}
|
||
|
return _2f;
|
||
|
}});
|
||
|
});
|