| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 | define("dijit/form/_RadioButtonMixin", [	"dojo/_base/array", // array.forEach	"dojo/_base/declare", // declare	"dojo/dom-attr", // domAttr.set	"dojo/_base/event", // event.stop	"dojo/_base/lang", // lang.hitch	"dojo/query", // query	"dojo/_base/window", // win.doc	"../registry"	// registry.getEnclosingWidget], function(array, declare, domAttr, event, lang, query, win, registry){	// module:	//		dijit/form/_RadioButtonMixin	// summary:	// 		Mixin to provide widget functionality for an HTML radio button	return declare("dijit.form._RadioButtonMixin", null, {		// summary:		// 		Mixin to provide widget functionality for an HTML radio button		// type: [private] String		//		type attribute on <input> node.		//		Users should not change this value.		type: "radio",		_getRelatedWidgets: function(){			// Private function needed to help iterate over all radio buttons in a group.			var ary = [];			query("input[type=radio]", this.focusNode.form || win.doc).forEach( // can't use name= since query doesn't support [] in the name				lang.hitch(this, function(inputNode){					if(inputNode.name == this.name && inputNode.form == this.focusNode.form){						var widget = registry.getEnclosingWidget(inputNode);						if(widget){							ary.push(widget);						}					}				})			);			return ary;		},		_setCheckedAttr: function(/*Boolean*/ value){			// If I am being checked then have to deselect currently checked radio button			this.inherited(arguments);			if(!this._created){ return; }			if(value){				array.forEach(this._getRelatedWidgets(), lang.hitch(this, function(widget){					if(widget != this && widget.checked){						widget.set('checked', false);					}				}));			}		},		_onClick: function(/*Event*/ e){			if(this.checked || this.disabled){ // nothing to do				event.stop(e);				return false;			}			if(this.readOnly){ // ignored by some browsers so we have to resync the DOM elements with widget values				event.stop(e);				array.forEach(this._getRelatedWidgets(), lang.hitch(this, function(widget){					domAttr.set(this.focusNode || this.domNode, 'checked', widget.checked);				}));				return false;			}			return this.inherited(arguments);		}	});});
 |