1 define("dijit/form/DataList", [
2 "dojo/_base/declare", // declare
3 "dojo/dom", // dom.byId
4 "dojo/_base/lang", // lang.trim
6 "dojo/store/Memory", // dojo.store.Memory
7 "../registry" // registry.add registry.remove
8 ], function(declare, dom, lang, query, MemoryStore, registry){
11 // dijit/form/DataList
13 // Inefficient but small data store specialized for inlined data via OPTION tags
15 function toItem(/*DOMNode*/ option){
17 // Convert <option> node to hash
21 name: lang.trim(option.innerText || option.textContent || '')
25 return declare("dijit.form.DataList", MemoryStore, {
27 // Inefficient but small data store specialized for inlined data via OPTION tags
30 // Provides a store for inlined data like:
33 // | <option value="AL">Alabama</option>
36 constructor: function(/*Object?*/ params, /*DomNode|String*/ srcNodeRef){
37 // store pointer to original DOM tree
38 this.domNode = dom.byId(srcNodeRef);
40 lang.mixin(this, params);
42 registry.add(this); // add to registry so it can be easily found by id
44 this.domNode.style.display = "none";
46 this.inherited(arguments, [{
47 data: query("option", this.domNode).map(toItem)
52 registry.remove(this.id);
55 fetchSelectedItem: function(){
57 // Get the option marked as selected, like `<option selected>`.
58 // Not part of dojo.data API.
59 var option = query("> option[selected]", this.domNode)[0] || query("> option", this.domNode)[0];
60 return option && toItem(option);