dijit
Version:
Dijit provides a complete collection of user interface controls based on Dojo, giving you the power to create web applications that are highly optimized for usability, performance, internationalization, accessibility, but above all deliver an incredible u
71 lines (61 loc) • 1.96 kB
JavaScript
define([
"dojo/_base/declare", // declare
"dojo/dom", // dom.byId
"dojo/_base/lang", // lang.trim
"dojo/query", // query
"dojo/store/Memory",
"../registry" // registry.add registry.remove
], function(declare, dom, lang, query, MemoryStore, registry){
// module:
// dijit/form/DataList
function toItem(/*DOMNode*/ option){
// summary:
// Convert `<option>` node to hash
return {
id: option.value,
value: option.value,
name: lang.trim(option.innerText || option.textContent || '')
};
}
return declare("dijit.form.DataList", MemoryStore, {
// summary:
// Inefficient but small data store specialized for inlined data via OPTION tags
//
// description:
// Provides a store for inlined data like:
//
// | <datalist>
// | <option value="AL">Alabama</option>
// | ...
constructor: function(params, srcNodeRef){
// summary:
// Create the widget.
// params: Object|null
// Hash of initialization parameters for widget, including scalar values (like title, duration etc.)
// and functions, typically callbacks like onClick.
// The hash can contain any of the widget's properties, excluding read-only properties.
// srcNodeRef: DOMNode|String
// Attach widget to this DOM node.
// store pointer to original DOM tree
this.domNode = dom.byId(srcNodeRef);
lang.mixin(this, params);
if(this.id){
registry.add(this); // add to registry so it can be easily found by id
}
this.domNode.style.display = "none";
this.inherited(arguments, [{
data: query("option", this.domNode).map(toItem)
}]);
},
destroy: function(){
registry.remove(this.id);
},
fetchSelectedItem: function(){
// summary:
// Get the option marked as selected, like `<option selected>`.
// Not part of dojo.data API.
var option = query("> option[selected]", this.domNode)[0] || query("> option", this.domNode)[0];
return option && toItem(option);
}
});
});