summaryrefslogtreecommitdiff
path: root/includes/js/dijit/form/MultiSelect.js
diff options
context:
space:
mode:
authormensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>2008-11-13 09:49:11 +0000
committermensonge <mensonge@b3834d28-1941-0410-a4f8-b48e95affb8f>2008-11-13 09:49:11 +0000
commite44a7e37b6c7b5961adaffc62b9042b8d442938e (patch)
tree95b67c356e93163467db2451f2b8cce84ed5d582 /includes/js/dijit/form/MultiSelect.js
parenta62b9742ee5e28bcec6872d88f50f25b820914f6 (diff)
downloadsemanticscuttle-e44a7e37b6c7b5961adaffc62b9042b8d442938e.tar.gz
semanticscuttle-e44a7e37b6c7b5961adaffc62b9042b8d442938e.tar.bz2
New feature: basic Ajax suggestion for tags and implementation of Dojo toolkit
git-svn-id: https://semanticscuttle.svn.sourceforge.net/svnroot/semanticscuttle/trunk@151 b3834d28-1941-0410-a4f8-b48e95affb8f
Diffstat (limited to 'includes/js/dijit/form/MultiSelect.js')
-rw-r--r--includes/js/dijit/form/MultiSelect.js84
1 files changed, 84 insertions, 0 deletions
diff --git a/includes/js/dijit/form/MultiSelect.js b/includes/js/dijit/form/MultiSelect.js
new file mode 100644
index 0000000..e1f468c
--- /dev/null
+++ b/includes/js/dijit/form/MultiSelect.js
@@ -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();
+ }
+});
+
+}