You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tt-rss/lib/dijit/form/DataList.js.uncompressed.js

71 lines
1.9 KiB
JavaScript

define("dijit/form/DataList", [
"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);
}
});
});