dojox
Version:
Dojo eXtensions, a rollup of many useful sub-projects and varying states of maturity – from very stable and robust, to alpha and experimental. See individual projects contain README files for details.
156 lines (133 loc) • 4.64 kB
JavaScript
define([
"dojo/_base/array",
"dojo/_base/declare",
"dojo/_base/event",
"dojo/_base/lang",
"dojo/_base/window",
"dojo/dom-construct",
"dojo/dom-attr",
"dijit/_Contained",
"dijit/_Container",
"dijit/_WidgetBase"
], function(array, declare, event, lang, win, domConstruct, domAttr, Contained, Container, WidgetBase){
// module:
// dojox/mobile/RoundRectList
return declare("dojox.mobile.RoundRectList", [WidgetBase, Container, Contained], {
// summary:
// A rounded rectangle list.
// description:
// RoundRectList is a rounded rectangle list, which can be used to
// display a group of items. Each item must be a dojox/mobile/ListItem.
// transition: String
// The default animated transition effect for child items.
transition: "slide",
// iconBase: String
// The default icon path for child items.
iconBase: "",
// iconPos: String
// The default icon position for child items.
iconPos: "",
// select: String
// Selection mode of the list. The check mark is shown for the
// selected list item(s). The value can be "single", "multiple", or "".
// If "single", there can be only one selected item at a time.
// If "multiple", there can be multiple selected items at a time.
// If "", the check mark is not shown.
select: "",
// stateful: Boolean
// If true, the last selected item remains highlighted.
stateful: false,
// syncWithViews: [const] Boolean
// If true, this widget listens to view transition events to be
// synchronized with view's visibility.
// Note that changing the value of the property after the widget
// creation has no effect.
syncWithViews: false,
// editable: [const] Boolean
// If true, the list can be reordered.
// Note that changing the value of the property after the widget
// creation has no effect.
editable: false,
// tag: String
// A name of html tag to create as domNode.
tag: "ul",
/* internal properties */
// editableMixinClass: String
// The name of the mixin class.
editableMixinClass: "dojox/mobile/_EditableListMixin",
// baseClass: String
// The name of the CSS class of this widget.
baseClass: "mblRoundRectList",
// filterBoxClass: String
// The name of the CSS class added to the DOM node inside which is placed the
// dojox/mobile/SearchBox created when mixing dojox/mobile/FilteredListMixin.
// The default value is "mblFilteredRoundRectListSearchBox".
filterBoxClass: "mblFilteredRoundRectListSearchBox",
buildRendering: function(){
this.domNode = this.srcNodeRef || domConstruct.create(this.tag);
if(this.select){
domAttr.set(this.domNode, "role", "listbox");
if(this.select === "multiple"){
domAttr.set(this.domNode, "aria-multiselectable", "true");
}
}
this.inherited(arguments);
},
postCreate: function(){
if(this.editable){
require([this.editableMixinClass], lang.hitch(this, function(module){
declare.safeMixin(this, new module());
}));
}
this.connect(this.domNode, "onselectstart", event.stop);
if(this.syncWithViews){ // see also TabBar#postCreate
var f = function(view, moveTo, dir, transition, context, method){
var child = array.filter(this.getChildren(), function(w){
return w.moveTo === "#" + view.id || w.moveTo === view.id; })[0];
if(child){ child.set("selected", true); }
};
this.subscribe("/dojox/mobile/afterTransitionIn", f);
this.subscribe("/dojox/mobile/startView", f);
}
},
resize: function(){
// summary:
// Calls resize() of each child widget.
array.forEach(this.getChildren(), function(child){
if(child.resize){ child.resize(); }
});
},
onCheckStateChanged: function(/*Widget*//*===== listItem, =====*/ /*String*//*===== newState =====*/){
// summary:
// Stub function to connect to from your application.
// description:
// Called when the check state has been changed.
},
_setStatefulAttr: function(stateful){
// tags:
// private
this._set("stateful", stateful);
this.selectOne = stateful;
array.forEach(this.getChildren(), function(child){
child.setArrow && child.setArrow();
});
},
deselectItem: function(/*dojox/mobile/ListItem*/item){
// summary:
// Deselects the given item.
item.set("selected", false);
},
deselectAll: function(){
// summary:
// Deselects all the items.
array.forEach(this.getChildren(), function(child){
child.set("selected", false);
});
},
selectItem: function(/*ListItem*/item){
// summary:
// Selects the given item.
item.set("selected", true);
}
});
});