]> git.pond.sub.org Git - eow/blobdiff - static/dojo-release-1.1.1/dijit/form/MultiSelect.js
add Dojo 1.1.1
[eow] / static / dojo-release-1.1.1 / dijit / form / MultiSelect.js
diff --git a/static/dojo-release-1.1.1/dijit/form/MultiSelect.js b/static/dojo-release-1.1.1/dijit/form/MultiSelect.js
new file mode 100644 (file)
index 0000000..e1f468c
--- /dev/null
@@ -0,0 +1,84 @@
+if(!dojo._hasResource["dijit.form.MultiSelect"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dijit.form.MultiSelect"] = true;
+dojo.provide("dijit.form.MultiSelect");
+
+dojo.require("dijit.form._FormWidget");
+
+dojo.declare("dijit.form.MultiSelect",dijit.form._FormWidget,{
+       // summary: Wrapper for a native select multiple="true" element to
+       //              interact with dijit.form.Form
+
+       // size: Number
+       //              Number of elements to display on a page
+       //              NOTE: may be removed in version 2.0, since elements may have variable height;
+       //              set the size via style="..." or CSS class names instead.
+       size: 7,
+       
+       templateString: "<select multiple='true' dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",
+
+       attributeMap: dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap),
+               {size:"focusNode"}),
+
+       addSelected: function(/* dijit.form.MultiSelect */select){
+               // summary: Move the selected nodes af an passed Select widget
+               //                      instance to this Select widget.
+               //
+               // example:
+               // |    // move all the selected values from "bar" to "foo"
+               // |    dijit.byId("foo").addSelected(dijit.byId("bar"));
+               
+               select.getSelected().forEach(function(n){
+                       this.containerNode.appendChild(n);
+               },this);
+       },
+                                       
+       getSelected: function(){
+               // summary: Access the NodeList of the selected options directly
+               return dojo.query("option",this.containerNode).filter(function(n){
+                       return n.selected; // Boolean
+               });
+       },
+       
+       _getValueDeprecated: false, // remove when _FormWidget:_getValueDeprecated is removed in 2.0
+       getValue: function(){
+               // summary: Returns an array of the selected options' values
+               return this.getSelected().map(function(n){
+                       return n.value;
+               });
+       },
+       
+       _multiValue: true, // for Form
+       setValue: function(/* Array */values){
+               // summary: Set the value(s) of this Select based on passed values
+               dojo.query("option",this.containerNode).forEach(function(n){
+                       n.selected = (dojo.indexOf(values,n.value) != -1);
+               });
+       },
+               
+       invertSelection: function(onChange){
+               // summary: Invert the selection
+               // onChange: Boolean
+               //              If null, onChange is not fired.
+               dojo.query("option",this.containerNode).forEach(function(n){
+                       n.selected = !n.selected;
+               });
+               this._handleOnChange(this.getValue(), onChange==true);
+       },
+
+       _onChange: function(/*Event*/ e){
+               this._handleOnChange(this.getValue(), true);
+       },
+       
+       // for layout widgets:
+       resize: function(/* Object */size){
+               if(size){
+                       dojo.marginBox(this.domNode, size);
+               }
+       },
+       
+       postCreate: function(){
+               this._onChange();
+       }
+});
+
+}