123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- define("dijit/form/_ToggleButtonMixin", [
- "dojo/_base/declare", // declare
- "dojo/dom-attr" // domAttr.set
- ], function(declare, domAttr){
- // module:
- // dijit/form/_ToggleButtonMixin
- // summary:
- // A mixin to provide functionality to allow a button that can be in two states (checked or not).
- 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 <input> 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);
- domAttr.set(this.focusNode || this.domNode, "checked", value);
- (this.focusNode || this.domNode).setAttribute(this._aria_attr, value ? "true" : "false"); // 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);
- }
- });
- });
|