define("dojox/mobile/IconMenuItem", [ "dojo/_base/declare", "dojo/_base/lang", "dojo/dom-class", "dojo/dom-construct", "./iconUtils", "./_ItemBase" ], function(declare, lang, domClass, domConstruct, iconUtils, ItemBase){ // module: // dojox/mobile/IconMenuItem return declare("dojox.mobile.IconMenuItem", ItemBase, { // summary: // An item of IconMenu. // description: // IconMenuItem represents a menu item of // dojox/mobile/MenuItem. This widget inherits from // dojox/mobile/_ItemBase. Basic usage is same as the other // subclasses such as dojox/mobile/ListItem. // closeOnAction: Boolean // Calls the hide() method of the parent widget, which is typically // a SimpleDialog. closeOnAction: false, // tag: String // A name of html tag to create as domNode. tag: "li", /* internal properties */ // Note these are overrides for similar properties defined in _ItemBase. baseClass: "mblIconMenuItem", selColor: "mblIconMenuItemSel", _selStartMethod: "touch", _selEndMethod: "touch", buildRendering: function(){ this.domNode = this.srcNodeRef || domConstruct.create(this.tag); this.inherited(arguments); if(this.selected){ domClass.add(this.domNode, this.selColor); } if(this.srcNodeRef){ if(!this.label){ this.label = lang.trim(this.srcNodeRef.innerHTML); } this.srcNodeRef.innerHTML = ""; } var a = this.anchorNode = this.containerNode = domConstruct.create("a", { className: "mblIconMenuItemAnchor", href: "javascript:void(0)" }); var tbl = domConstruct.create("table", { className: "mblIconMenuItemTable" }, a); var cell = this.iconParentNode = tbl.insertRow(-1).insertCell(-1); this.iconNode = domConstruct.create("div", { className: "mblIconMenuItemIcon" }, cell); this.labelNode = this.refNode = domConstruct.create("div", { className: "mblIconMenuItemLabel" }, cell); this.position = "before"; this.domNode.appendChild(a); }, startup: function(){ if(this._started){ return; } this._keydownHandle = this.connect(this.domNode, "onkeydown", "_onClick"); // for desktop browsers this.inherited(arguments); if(!this._isOnLine){ this._isOnLine = true; // retry applying the attribute for which the custom setter delays the actual // work until _isOnLine is true. this.set("icon", this._pendingIcon !== undefined ? this._pendingIcon : this.icon); // Not needed anymore (this code executes only once per life cycle): delete this._pendingIcon; } }, _onClick: function(e){ // summary: // Internal handler for click events. // tags: // private if(e && e.type === "keydown" && e.keyCode !== 13){ return; } if(this.onClick(e) === false){ return; } // user's click action if(this.closeOnAction){ var p = this.getParent(); // maybe SimpleDialog if(p && p.hide){ p.hide(); } } this.defaultClickAction(e); }, onClick: function(/*Event*/ /*===== e =====*/){ // summary: // User-defined function to handle clicks. // tags: // callback }, _setSelectedAttr: function(/*Boolean*/selected){ // summary: // Makes this widget in the selected or unselected state. // tags: // private this.inherited(arguments); domClass.toggle(this.domNode, this.selColor, selected); } }); });