define("dijit/form/_ToggleButtonMixin", [ "dojo/_base/declare", // declare "dojo/dom-attr" // domAttr.set ], function(declare, domAttr){ // module: // dijit/form/_ToggleButtonMixin return declare("dijit.form._ToggleButtonMixin", null, { // summary: // A mixin to provide functionality to allow a button that can be in two states (checked or not). // checked: Boolean // Corresponds to the native HTML `` element's attribute. // In markup, specified as "checked='checked'" or just "checked". // True if the button is depressed, or the checkbox is checked, // or the radio button is selected, etc. checked: false, // aria-pressed for toggle buttons, and aria-checked for checkboxes _aria_attr: "aria-pressed", _onClick: function(/*Event*/ evt){ var original = this.checked; this._set('checked', !original); // partially set the toggled value, assuming the toggle will work, so it can be overridden in the onclick handler var ret = this.inherited(arguments); // the user could reset the value here this.set('checked', ret ? this.checked : original); // officially set the toggled or user value, or reset it back return ret; }, _setCheckedAttr: function(/*Boolean*/ value, /*Boolean?*/ priorityChange){ this._set("checked", value); var node = this.focusNode || this.domNode; domAttr.set(node, "checked", !!value); // "mixed" -> true if(value){ node.setAttribute("checked", ""); }else{ node.removeAttribute("checked"); } node.setAttribute(this._aria_attr, String(value)); // aria values should be strings this._handleOnChange(value, priorityChange); }, reset: function(){ // summary: // Reset the widget's value to what it was at initialization time this._hasBeenBlurred = false; // set checked state to original setting this.set('checked', this.params.checked || false); } }); });