1 if(!dojo._hasResource["dijit.form.MultiSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
2 dojo._hasResource["dijit.form.MultiSelect"] = true;
3 dojo.provide("dijit.form.MultiSelect");
5 dojo.require("dijit.form._FormWidget");
7 dojo.declare("dijit.form.MultiSelect",dijit.form._FormWidget,{
8 // summary: Wrapper for a native select multiple="true" element to
9 // interact with dijit.form.Form
12 // Number of elements to display on a page
13 // NOTE: may be removed in version 2.0, since elements may have variable height;
14 // set the size via style="..." or CSS class names instead.
17 templateString: "<select multiple='true' dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",
19 attributeMap: dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap),
22 addSelected: function(/* dijit.form.MultiSelect */select){
23 // summary: Move the selected nodes af an passed Select widget
24 // instance to this Select widget.
27 // | // move all the selected values from "bar" to "foo"
28 // | dijit.byId("foo").addSelected(dijit.byId("bar"));
30 select.getSelected().forEach(function(n){
31 this.containerNode.appendChild(n);
35 getSelected: function(){
36 // summary: Access the NodeList of the selected options directly
37 return dojo.query("option",this.containerNode).filter(function(n){
38 return n.selected; // Boolean
42 _getValueDeprecated: false, // remove when _FormWidget:_getValueDeprecated is removed in 2.0
44 // summary: Returns an array of the selected options' values
45 return this.getSelected().map(function(n){
50 _multiValue: true, // for Form
51 setValue: function(/* Array */values){
52 // summary: Set the value(s) of this Select based on passed values
53 dojo.query("option",this.containerNode).forEach(function(n){
54 n.selected = (dojo.indexOf(values,n.value) != -1);
58 invertSelection: function(onChange){
59 // summary: Invert the selection
61 // If null, onChange is not fired.
62 dojo.query("option",this.containerNode).forEach(function(n){
63 n.selected = !n.selected;
65 this._handleOnChange(this.getValue(), onChange==true);
68 _onChange: function(/*Event*/ e){
69 this._handleOnChange(this.getValue(), true);
72 // for layout widgets:
73 resize: function(/* Object */size){
75 dojo.marginBox(this.domNode, size);
79 postCreate: function(){