An icon item widget.
IconItem represents an item that has an application component and its icon image. You can tap the icon to open the corresponding application component. You can also use the icon to move to a different view by specifying either of the moveTo, href or url parameters.
Parameter | Type | Description |
---|---|---|
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 |
Optional If a srcNodeRef (DOM node) is specified:
|
See the dojox/mobile/IconItem reference documentation for more information.
Path to a blank 1x1 image.
Used by <img>
nodes in templates that really get their image via CSS background-image.
If true, selection is delayed 100ms and canceled if dragged in order to avoid selection when flick operation is performed.
Deprecated. Instead of attributeMap, widget should have a _setXXXAttr attribute for each XXX attribute to be mapped to the DOM.
attributeMap sets up a "binding" between attributes (aka properties) of the widget and the widget's DOM. Changes to widget attributes listed in attributeMap will be reflected into the DOM.
For example, calling set('title', 'hello') on a TitlePane will automatically cause the TitlePane's DOM to update with the new title.
attributeMap is a hash where the key is an attribute of the widget, and the value reflects a binding to a:
DOM node attribute
focus: {node: "focusNode", type: "attribute"} Maps this.focus to this.focusNode.focus
DOM node innerHTML
title: { node: "titleNode", type: "innerHTML" } Maps this.title to this.titleNode.innerHTML
DOM node innerText
title: { node: "titleNode", type: "innerText" } Maps this.title to this.titleNode.innerText
DOM node CSS class
myClass: { node: "domNode", type: "class" } Maps this.myClass to this.domNode.className
If the value is an array, then each element in the array matches one of the formats of the above list.
There are also some shorthands for backwards compatibility:
1 | "focusNode" ---> { node: "focusNode" , type: "attribute" } |
A callback function that is called when the transition has been finished. A function reference, or name of a function in context.
If true, this item becomes clickable even if a transition destination (moveTo, etc.) is not specified.
Designates where children of the source DOM node will be placed. "Children" in this case refers to both DOM nodes and widgets. For example, for myWidget:
1 2 3 4 5 | < div data-dojo-type = myWidget > < b > here's a plain DOM node < span data-dojo-type = subWidget >and a widget</ span > < i > and another plain DOM node </ i > </ div > |
containerNode would point to:
1 2 3 | < b > here's a plain DOM node < span data-dojo-type = subWidget >and a widget</ span > < i > and another plain DOM node </ i > |
In templated widgets, "containerNode" is set via a data-dojo-attach-point assignment.
containerNode must be defined for any widget that accepts innerHTML (like ContentPane or BorderContainer or even Button), and conversely is null for widgets that don't, like TextBox.
If true, you can delete this IconItem by clicking on the delete icon during edit mode. If false, the delete icon is not displayed during edit mode so that it cannot be deleted.
A delete icon to display at the top-left corner of the item during edit mode. The value can be either a path for an image file or a class name of a DOM button.
Bi-directional support, as defined by the HTML DIR attribute. Either left-to-right "ltr" or right-to-left "rtl". If undefined, widgets renders in page's default direction.
This is our visible representation of the widget! Other DOM Nodes may by assigned to other properties, usually through the template system's data-dojo-attach-point syntax, but the domNode property is the canonical "top level" node in widget UI.
This widget or a widget it contains has focus, or is "active" because it was recently clicked.
A target that specifies where to open a page specified by href. The value will be passed to the 2nd argument of window.open().
An icon image to display. The value can be either a path for an image file or a class name of a DOM button. If icon is not specified, the iconBase parameter of the parent widget is used.
The position of an aggregated icon. IconPos is comma separated values like top,left,width,height (ex. "0,0,29,29"). If iconPos is not specified, the iconPos parameter of the parent widget is used.
A unique, opaque ID string that can be assigned by users or by the system. If the developer passes an ID which is known not to be unique, the specified ID is ignored and the system-generated ID is used instead.
A label of the item. If the label is not specified, innerHTML is used as a label.
If true, the content of the widget, which includes dojo markup, is instantiated lazily. That is, only when the widget is opened by the user, the required modules are loaded and the content widgets are instantiated. This option works both in the sync and async loader mode.
The id of the transition destination view which resides in the current page.
If the value has a hash sign ('#') before the id (e.g. #view1) and the dojo/hash module is loaded by the user application, the view transition updates the hash in the browser URL so that the user can bookmark the destination view. In this case, the user can also use the browser's back/forward button to navigate through the views in the browser history.
If null, transitions to a blank view. If '#', returns immediately without transition.
The document this widget belongs to. If not specified to constructor, will default to srcNodeRef.ownerDocument, or if no sourceRef specified, then to the document global
Comma-separated required module names to be lazily loaded. This property is effective only when lazy=true. All the modules specified with data-dojo-type and their depending modules are automatically loaded by the IconItem when it is opened. However, if you need other extra modules to be loaded, use this parameter. This option works both in the sync and async loader mode.
If true, the item is highlighted to indicate it is selected.
Tabindex setting for the item so users can hit the tab key to focus on it.
HTML title attribute.
For form widgets this specifies a tooltip to display when hovering over the widget (just like the native HTML title attribute).
For TitlePane or for when this widget is a child of a TabContainer, AccordionContainer, etc., it's used to specify the tab label, accordion pane title, etc. In this case it's interpreted as HTML.
When this widget's title attribute is used to for a tab label, accordion pane title, etc., this specifies the tooltip to appear when the mouse is hovered over that text.
A type of animated transition effect. You can choose from the standard transition types, "slide", "fade", "flip", or from the extended transition types, "cover", "coverv", "dissolve", "reveal", "revealv", "scaleIn", "scaleOut", "slidev", "swirl", "zoomIn", "zoomOut", "cube", and "swap". If "none" is specified, transition occurs immediately without animation.
The transition direction. If 1, transition forward. If -1, transition backward. For example, the slide transition slides the view from right to left when dir == 1, and from left to right when dir == -1.
A URL of an html fragment page or JSON data that represents a new view content. The view content is loaded with XHR and inserted in the current page. Then a view transition occurs to the newly created view. The view is cached so that subsequent requests would not load the content again.
Node id under which a new view will be created according to the url parameter. If not specified, The new view will be created as a sibling of the current view.
Step during widget creation to copy widget attributes to the DOM according to attributeMap and _setXXXAttr objects, and also to call custom _setXXXAttr() methods.
Skips over blank/false attribute values, unless they were explicitly specified as parameters to the widget, since those are the default anyway, and setting tabIndex="" is different than not setting tabIndex at all.
For backwards-compatibility reasons attributeMap overrides _setXXXAttr when _setXXXAttr is a hash/string/array, but _setXXXAttr as a functions override attributeMap.
Reflect a widget attribute (title, tabIndex, duration etc.) to the widget DOM, as specified by commands parameter. If commands isn't specified then it's looked up from attributeMap. Note some attributes like "type" cannot be processed this way as they are not mutable.
Parameter | Type | Description |
---|---|---|
attr | String | Name of member variable (ex: "focusNode" maps to this.focusNode) pointing to DOMNode inside the widget, or alternately pointing to a subwidget |
value | String | |
commands | Object |
Optional
|
Internal helper for directly changing an attribute value.
Directly change the value of an attribute on an object, bypassing any accessor setter. Also handles the calling of watch and emitting events. It is designed to be used by descendant class when there are two values of attributes that are linked, but calling .set() is not appropriate.
Parameter | Type | Description |
---|---|---|
name | String | The property to set. |
value | Mixed | The value to set in the property. |
Internal helper for directly changing an attribute value.
Internal handler for click events.
Parameter | Type | Description |
---|---|---|
e | undefined |
Helper function to get value for specified property stored by this._set(), i.e. for properties with custom setters. Used mainly by custom getters.
For example, CheckBox._getValueAttr() calls this._get("value").
Parameter | Type | Description |
---|---|---|
name | String |
Helper function for get() and set(). Caches attribute name values so we don't do the string ops every time.
Parameter | Type | Description |
---|---|---|
name | undefined |
Returns next or previous sibling
Parameter | Type | Description |
---|---|---|
which | String | Either "next" or "previous" |
Get the next or previous widget sibling of child
Parameter | Type | Description |
---|---|---|
child | dijit/_WidgetBase | |
dir | int | if 1, get the next sibling if -1, get the previous sibling |
Collect metadata about this widget (only once per class, not once per instance):
1 2 | - list of attributes with custom setters, storing in this .constructor._setterAttrs - generate this .constructor._onMap, mapping names like "mousedown" to functions like onMouseDown |
Parameter | Type | Description |
---|---|---|
e | undefined | |
transOpts | undefined |
Helper function to set new value for specified property, and call handlers registered with watch() if the value has changed.
Parameter | Type | Description |
---|---|---|
name | String | |
value | anything |
Parameter | Type | Description |
---|---|---|
data | String | DomNode |
Makes this widget in the selected or unselected state.
Parameter | Type | Description |
---|---|---|
selected | Boolean |
Sets the style attribute of the widget according to value, which is either a hash like {height: "5px", width: "3px"} or a plain string
Determines which node to set the style on based on style setting in attributeMap.
Parameter | Type | Description |
---|---|---|
value | String | Object |
Makes the given widget a child of this widget.
Inserts specified child widget's dom node as a child of this widget's container node, and possibly does other processing (such as layout).
Parameter | Type | Description |
---|---|---|
widget | dijit/_WidgetBase | |
insertIndex | int |
Optional
|
Closes the icon content.
Parameter | Type | Description |
---|---|---|
noAnimation | Boolean |
Optional
|
User-defined function to handle clicks for the close icon.
Parameter | Type | Description |
---|---|---|
e | Event |
Deprecated, will be removed in 2.0, use this.own(on(...)) or this.own(aspect.after(...)) instead.
Connects specified obj/event to specified method of this object and registers for disconnect() on widget destroy.
Provide widget-specific analog to dojo.connect, except with the
implicit use of this widget as the target object.
Events connected with this.connect
are disconnected upon
destruction.
Parameter | Type | Description |
---|---|---|
obj | Object | null | |
event | String | Function | |
method | String | Function |
A handle that can be passed to disconnect
in order to disconnect before
the widget is destroyed.
1 2 3 4 5 6 | var btn = new Button(); // when foo.bar() is called, call the listener we're going to // provide in the scope of btn btn.connect(foo, "bar" , function (){ console.debug( this .toString()); }); |
Kick off the life-cycle of a widget
Create calls a number of widget methods (postMixInProperties, buildRendering, postCreate, etc.), some of which of you'll want to override. See http://dojotoolkit.org/reference-guide/dijit/_WidgetBase.html for a discussion of the widget creation lifecycle.
Of course, adventurous developers could override create entirely, but this should only be done as a last resort.
Parameter | Type | Description |
---|---|---|
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 |
Optional If a srcNodeRef (DOM node) is specified:
|
The default action of this item.
Parameter | Type | Description |
---|---|---|
e | Event |
Wrapper to setTimeout to avoid deferred functions executing after the originating widget has been destroyed. Returns an object handle with a remove method (that returns null) (replaces clearTimeout).
Parameter | Type | Description |
---|---|---|
fcn | Function | Function reference. |
delay | Number |
Optional Delay, defaults to 0. |
Recursively destroy the children of this widget and their descendants.
Parameter | Type | Description |
---|---|---|
preserveDom | Boolean |
Optional If true, the preserveDom attribute is passed to all descendant widget's .destroy() method. Not for use with _Templated widgets. |
Destroy this widget and its descendants
This is the generic "destructor" function that all widget users should call to cleanly discard with a widget. Once a widget is destroyed, it is removed from the manager object.
Parameter | Type | Description |
---|---|---|
preserveDom | Boolean |
Optional If true, this method will leave the original DOM structure alone of descendant Widgets. Note: This will NOT work with dijit._TemplatedMixin widgets. |
Destroys the DOM nodes associated with this widget.
Parameter | Type | Description |
---|---|---|
preserveDom | Boolean |
Optional If true, this method will leave the original DOM structure alone during tear-down. Note: this will not work with _Templated widgets yet. |
Deprecated, will be removed in 2.0, use handle.remove() instead.
Disconnects handle created by connect
.
Parameter | Type | Description |
---|---|---|
handle | undefined |
Used by widgets to signal that a synthetic event occurred, ex:
1 | myWidget.emit( "attrmodified-selectedChildWidget" , {}). |
Emits an event on this.domNode named type.toLowerCase(), based on eventObj. Also calls onType() method, if present, and returns value from that method. By default passes eventObj to callback, but will pass callbackArgs instead, if specified. Modifies eventObj by adding missing parameters (bubbles, cancelable, widget).
Parameter | Type | Description |
---|---|---|
type | String | |
eventObj | Object |
Optional
|
callbackArgs | Array |
Optional
|
Get a property from a widget.
Get a named property from a widget. The property may potentially be retrieved via a getter method. If no getter is defined, this just retrieves the object's property.
For example, if the widget has properties foo
and bar
and a method named _getFooAttr()
, calling:
myWidget.get("foo")
would be equivalent to calling
widget._getFooAttr()
and myWidget.get("bar")
would be equivalent to the expression
widget.bar2
Parameter | Type | Description |
---|---|---|
name | undefined | The property to get. |
Returns all direct children of this widget, i.e. all widgets underneath this.containerNode whose parent is this widget. Note that it does not return all descendants, but rather just direct children. Analogous to Node.childNodes, except containing widgets rather than DOMNodes.
The result intentionally excludes internally created widgets (a.k.a. supporting widgets) outside of this.containerNode.
Note that the array returned is a simple array. Application code should not assume existence of methods like forEach().
Returns the index of this widget within its container parent. It returns -1 if the parent does not exist, or if the parent is not a dijit/_Container
Gets the index of the child in this container or -1 if not found
Parameter | Type | Description |
---|---|---|
child | dijit/_WidgetBase |
Returns null if this is the last child of the parent, otherwise returns the next element sibling to the "right".
Returns null if this is the first child of the parent, otherwise returns the next element sibling to the "left".
Copies from the parent and returns the values of parameters
specified by the property paramsToInherit.
Handles this items selection state.
Parameter | Type | Description |
---|---|---|
e | Event |
Returns true if widget has child widgets, i.e. if this.containerNode contains widgets.
Shakes the icon 10 seconds.
Parameter | Type | Description |
---|---|---|
timeout | Number |
Optional
|
Copies from the parent the values of parameters specified by the property paramsToInherit.
Return true if this widget can currently be focused and false if not
Return this widget's explicit or implicit orientation (true for LTR, false for RTL)
Returns true if the icon is open.
Parameter | Type | Description |
---|---|---|
e | undefined |
Call specified function when event occurs, ex: myWidget.on("click", function(){ ... }).
Call specified function when event type
occurs, ex: myWidget.on("click", function(){ ... })
.
Note that the function is not run in any particular scope, so if (for example) you want it to run in the
widget's scope you must do myWidget.on("click", lang.hitch(myWidget, func))
.
Parameter | Type | Description |
---|---|---|
type | String | Function | Name of event (ex: "click") or extension event like touch.press. |
func | Function |
Opens the icon content, or makes a transition.
Parameter | Type | Description |
---|---|---|
e | undefined |
Track specified handles and remove/destroy them when this instance is destroyed, unless they were already removed/destroyed manually.
The array of specified handles, so you can do for example:
1 | var handle = this .own(on(...))[0]; |
Place this widget somewhere in the DOM based on standard domConstruct.place() conventions.
A convenience function provided in all _Widgets, providing a simple shorthand mechanism to put an existing (or newly created) Widget somewhere in the dom, and allow chaining.
Parameter | Type | Description |
---|---|---|
reference | String | DomNode | DocumentFragment | dijit/_WidgetBase | Widget, DOMNode, DocumentFragment, or id of widget or DOMNode |
position | String | Int |
Optional If reference is a widget (or id of widget), and that widget has an ".addChild" method, it will be called passing this widget instance into that method, supplying the optional position index passed. In this case position (if specified) should be an integer. If reference is a DOMNode (or id matching a DOMNode but not a widget), the position argument can be a numeric index or a string "first", "last", "before", or "after", same as dojo/dom-construct::place(). |
Provides a useful return of the newly created dijit._Widget instance so you can "chain" this function by instantiating, placing, then saving the return value to a variable.
1 2 3 4 | // create a Button with no srcNodeRef, and place it in the body: var button = new Button({ label: "click" }).placeAt(win.body()); // now, 'button' is still the widget reference to the newly created button button.on( "click" , function (e){ console.log( 'click' ); })); |
1 2 | // create a button out of a node with id="src" and append it to id="wrapper": var button = new Button({}, "src" ).placeAt( "wrapper" ); |
1 2 | // place a new button as the first element of some div var button = new Button({ label: "click" }).placeAt( "wrapper" , "first" ); |
1 2 3 | // create a contentpane and add it to a TabContainer var tc = dijit.byId( "myTabs" ); new ContentPane({ href: "foo.html" , title: "Wow!" }).placeAt(tc) |
Processing after the DOM fragment is created
Called after the DOM fragment has been created, but not necessarily added to the document. Do not include any operations which rely on node dimensions or placement.
Called after the parameters to the widget have been read-in, but before the widget template is instantiated. Especially useful to set properties that are referenced in the widget template.
Kicks off widget instantiation. See create() for details.
Parameter | Type | Description |
---|---|---|
params | Object |
Optional
|
srcNodeRef | DomNode | String |
Removes the passed widget instance from this widget but does not destroy it. You can also pass in an integer indicating the index within the container to remove (ie, removeChild(5) removes the sixth widget).
Parameter | Type | Description |
---|---|---|
widget | Widget | int |
Scrolls until the given node is in the view.
Parameter | Type | Description |
---|---|---|
node | DomNode |
Set a property on a widget
Sets named properties on a widget which may potentially be handled by a setter in the widget.
For example, if the widget has properties foo
and bar
and a method named _setFooAttr()
, calling
myWidget.set("foo", "Howdy!")
would be equivalent to calling
widget._setFooAttr("Howdy!")
and myWidget.set("bar", 3)
would be equivalent to the statement widget.bar = 3;
set() may also be called with a hash of name/value pairs, ex:
1 2 3 4 | myWidget.set({ foo: "Howdy" , bar: 3 }); |
This is equivalent to calling set(foo, "Howdy")
and set(bar, 3)
Parameter | Type | Description |
---|---|---|
name | undefined | The property to set. |
value | undefined | The value to set in the property. |
Set a property on a widget
Stores the clicked position for later use.
Some of the transition animations (e.g. ScaleIn) need the clicked position.
Parameter | Type | Description |
---|---|---|
e | undefined |
Deprecated, will be removed in 2.0, use this.own(topic.subscribe()) instead.
Subscribes to the specified topic and calls the specified method of this object and registers for unsubscribe() on widget destroy.
Provide widget-specific analog to dojo.subscribe, except with the implicit use of this widget as the target object.
Parameter | Type | Description |
---|---|---|
t | String | The topic |
method | Function | The callback |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Returns a string that represents the widget.
When a widget is cast to a string, this method will be used to generate the output. Currently, it does not implement any sort of reversible serialization.
Performs a view transition.
Given a transition destination, this method performs a view transition. This method is typically called when this item is clicked.
Parameter | Type | Description |
---|---|---|
moveTo | String | Object | |
href | String | |
url | String | |
scene | String |
Deprecated. Override destroy() instead to implement custom widget tear-down behavior.
Deprecated, will be removed in 2.0, use handle.remove() instead.
Unsubscribes handle created by this.subscribe. Also removes handle from this widget's list of subscriptions
Parameter | Type | Description |
---|---|---|
handle | Object |
Watches a property for changes
Parameter | Type | Description |
---|---|---|
name | String |
Optional Indicates the property to watch. This is optional (the callback may be the only parameter), and if omitted, all the properties will be watched |
callback | Function | The function to execute when the property changes. This will be called after the property has been changed. The callback will be called with the |this| set to the instance, the first argument as the name of the property, the second argument as the old value and the third argument as the new value. |
An object handle for the watch. The unwatch method of this object can be used to discontinue watching this property:
1 2 | var watchHandle = obj.watch( "foo" , callback); watchHandle.unwatch(); // callback won't be called now |
This is where widgets do processing for when they stop being active, such as changing CSS classes. See onBlur() for more details.
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Internal handler for click events.
Parameter | Type | Description |
---|---|---|
e | undefined |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
This is where widgets do processing for when they are active, such as changing CSS classes. See onFocus() for more details.
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Maps on() type parameter (ex: "mousemove") to method name (ex: "onMouseMove"). If type is a synthetic event like touch.press then returns undefined.
Parameter | Type | Description |
---|---|---|
type | String | Function |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Parameter | Type | Description |
---|---|---|
e | undefined |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Parameter | Type | Description |
---|---|---|
e | undefined |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Parameter | Type | Description |
---|---|---|
e | undefined |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Parameter | Type | Description |
---|---|---|
e | undefined |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Called when the widget stops being "active" because focus moved to something outside of it, or the user clicked somewhere outside of it, or the widget was hidden.
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
User-defined function to handle clicks.
Parameter | Type | Description |
---|---|---|
e | Event |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Stub method to allow the application to connect.
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Called when the widget becomes "active" because it or a widget inside of it either has focus, or has recently been clicked.
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
Stub method to allow the application to connect.
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |
User-defined function to handle touchStart events.
Parameter | Type | Description |
---|---|---|
e | Event |
1 2 3 4 5 6 | var btn = new Button(); // when /my/topic is published, this button changes its label to // be the parameter of the topic. btn.subscribe( "/my/topic" , function (v){ this .set( "label" , v); }); |