]> git.pond.sub.org Git - eow/blob - static/dojo-release-1.1.1/dijit/form/MultiSelect.js
Comment class stub
[eow] / static / dojo-release-1.1.1 / dijit / form / MultiSelect.js
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");
4
5 dojo.require("dijit.form._FormWidget");
6
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
10
11         // size: Number
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.
15         size: 7,
16         
17         templateString: "<select multiple='true' dojoAttachPoint='containerNode,focusNode' dojoAttachEvent='onchange: _onChange'></select>",
18
19         attributeMap: dojo.mixin(dojo.clone(dijit.form._FormWidget.prototype.attributeMap),
20                 {size:"focusNode"}),
21
22         addSelected: function(/* dijit.form.MultiSelect */select){
23                 // summary: Move the selected nodes af an passed Select widget
24                 //                      instance to this Select widget.
25                 //
26                 // example:
27                 // |    // move all the selected values from "bar" to "foo"
28                 // |    dijit.byId("foo").addSelected(dijit.byId("bar"));
29                 
30                 select.getSelected().forEach(function(n){
31                         this.containerNode.appendChild(n);
32                 },this);
33         },
34                                         
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
39                 });
40         },
41         
42         _getValueDeprecated: false, // remove when _FormWidget:_getValueDeprecated is removed in 2.0
43         getValue: function(){
44                 // summary: Returns an array of the selected options' values
45                 return this.getSelected().map(function(n){
46                         return n.value;
47                 });
48         },
49         
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);
55                 });
56         },
57                 
58         invertSelection: function(onChange){
59                 // summary: Invert the selection
60                 // onChange: Boolean
61                 //              If null, onChange is not fired.
62                 dojo.query("option",this.containerNode).forEach(function(n){
63                         n.selected = !n.selected;
64                 });
65                 this._handleOnChange(this.getValue(), onChange==true);
66         },
67
68         _onChange: function(/*Event*/ e){
69                 this._handleOnChange(this.getValue(), true);
70         },
71         
72         // for layout widgets:
73         resize: function(/* Object */size){
74                 if(size){
75                         dojo.marginBox(this.domNode, size);
76                 }
77         },
78         
79         postCreate: function(){
80                 this._onChange();
81         }
82 });
83
84 }