UNPKG

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
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); } }); });