Mixin for widgets that manage a list of selected data items.
Extends
Show inheritedMembers
-
<protected> _started :boolean
-
Set to true when startup() has completed.
Type:
- boolean
- Inherited From:
- Source:
-
<protected> baseClass :string
-
Root CSS class of the widget (ex: d-text-box)
Type:
- string
- Inherited From:
- Source:
-
<protected> focused :boolean
-
This widget or a widget it contains has focus, or is "active" because it was recently clicked.
Type:
- boolean
- Inherited From:
- Default Value:
- false
- Source:
-
selectedItem :Object
-
In single selection mode, the selected item or in multiple selection mode the last selected item.
Type:
- Object
- Default Value:
- null
- Source:
-
selectedItems :Array.<Object>
-
The list of selected items.
Type:
- Array.<Object>
- Default Value:
- null
- Source:
-
selectionMode :string
-
The chosen selection mode.
Valid values are:
- "none": No selection can be done.
- "single": Only one or zero items can be selected at a time. Interactively selecting a new item deselects the previously selected one.
- "radio": Initially only one or zero items can be selected. Once an item has been selected, interactively selecting another item deselects the previously selected item, and the user cannot deselect the currently selected item.
- "multiple": Multiple items can be selected. By default ctrl key must be used to select additional items. However that behavior might be specialized by subclasses.
Changing this value impacts the current selected items to adapt the selection to the new mode. However whatever the selection mode is you can always set several selected items using the selectItem(s) API. The mode will be enforced only when using setSelected and/or selectFromEvent APIs.
Type:
- string
- Default Value:
- "single"
- Source:
-
<protected> template :function
-
Value returned by delite/handlebars! or compatible template engine. Specifies how to build the widget DOM initially and also how to update the DOM when widget properties change.
Type:
- function
- Inherited From:
- Source:
-
<protected, constant> widgetId :number
-
Unique id for this widget, separate from id attribute (which may or may not be set). Useful when widget creates subnodes that need unique id's.
Type:
- number
- Inherited From:
- Source:
Methods
-
<protected> _get(name) → {*}
-
Internal helper for directly accessing an attribute value.
Directly get the value of an attribute on an object, bypassing any accessor getter. It is designed to be used by descendant class if they want to access the value in their custom getter before returning it.
Parameters:
Name Type Description name
string Name of property.
- Inherited From:
- Source:
Returns:
Value of property.
- Type
- *
-
<protected> _onBlur()
-
This is where widgets do processing for when they stop being active, such as changing CSS classes. See
onBlur()
for more details.- Inherited From:
- Source:
-
<protected> _onFocus()
-
This is where widgets do processing for when they are active, such as changing CSS classes. See
onFocus()
for more details.- Inherited From:
- Source:
-
<protected> _parseAttr(name, value)
-
Helper for _mapAttributes(). Interpret a given attribute specified in markup, returning either:
- undefined: ignore
- {prop: prop, value: value}: set this[prop] = value
- {event: event, callback: callback}: call this.on(event, callback);
Parameters:
Name Type Description name
string Attribute name.
value
string Attribute value.
- Inherited From:
- Source:
-
<protected> _parseFunctionAttr(value, params)
-
Helper to parse function attribute in markup. Unlike _parsePrototypeAttr(), does not require a corresponding widget property. Functions can be specified as global variables or as inline javascript:
Parameters:
Name Type Description value
string Value of the attribute.
params
Array.<string> When generating a function from inline javascript, give it these parameter names.
- Inherited From:
- Source:
-
<protected> _set(name, value)
-
Internal helper for directly setting a property value without calling the custom setter.
Directly change the value of an attribute on an object, bypassing any accessor setter. Also notifies callbacks registered via observe(). Custom setters should call
_set
to actually record the new value.Parameters:
Name Type Description name
string The property to set.
value
* Value to set the property to.
- Inherited From:
- Source:
-
<protected> attachedCallback()
-
Called when the widget is first inserted into the document. If widget is created programatically then app must call startup() to trigger this method.
- Inherited From:
- Source:
-
<protected> buildRendering()
-
Construct the UI for this widget, filling in subnodes and/or text inside of this. Most widgets will leverage delite/handlebars! to set
template
, rather than defining this method.- Inherited From:
- Source:
-
computeProperties(newValues, oldValues)
-
Callback function to calculate computed properties upon property changes.
Parameters:
Name Type Description newValues
Object The hash table of new property values, keyed by property names.
oldValues
Object The hash table of old property values, keyed by property names.
- Inherited From:
- Source:
-
<protected> createdCallback()
-
Kick off the life-cycle of a widget.
Calls a number of widget methods (
preCreate()
,buildRendering()
, andpostCreate()
), some of which of you'll want to override.Of course, adventurous developers could override createdCallback entirely, but this should only be done as a last resort.
- Inherited From:
- Source:
-
<protected> defer(fcn, delay) → {Object}
-
Wrapper to setTimeout to avoid deferred functions executing after the originating widget has been destroyed.
Parameters:
Name Type Description fcn
function Function to be executed after specified delay (or 0ms if no delay specified).
delay
number Delay in ms, defaults to 0.
- Inherited From:
- Source:
Returns:
Handle with a remove method that deschedules the callback from being called.
- Type
- Object
-
deliver()
-
Synchronously deliver change records for computed properties and then UI rendering so that
refreshingRendering()
is called if there are pending change records.- Inherited From:
- Source:
-
deliverComputing()
-
Synchronously deliver change records for computed properties so that
refreshingComputing()
is called if there are pending change records.- Inherited From:
- Source:
-
destroy()
-
Destroy this widget and its descendants.
- Inherited From:
- Source:
-
discardChanges()
-
Discard change records.
- Inherited From:
- Source:
-
discardComputing()
-
Discard change records for computed properties.
- Inherited From:
- Source:
-
<protected> dispatchSelectionChange(oldSelectedItem, newSelectedItem, renderer, triggerEvent)
-
Dispatch a selection change event.
Parameters:
Name Type Description oldSelectedItem
Object The previously selected item.
newSelectedItem
Object The new selected item.
renderer
Object The visual renderer of the selected/deselected item.
triggerEvent
Event The event that lead to the selection of the item.
-
<protected> emit(type, eventObj) → {boolean}
-
Signal that a synthetic event occurred.
Emits an event of specified type, based on eventObj. Also calls onType() method, if present, and returns value from that method. Modifies eventObj by adding missing parameters (bubbles, cancelable, widget).
Parameters:
Name Type Argument Description type
string Name of event.
eventObj
Object <optional>
Properties to mix in to emitted event.
- Inherited From:
- Source:
Returns:
True if the event was not canceled, false if it was canceled.
- Type
- boolean
Example
myWidget.emit("query-success", {});
-
findCustomElements(root)
-
Search subtree under root returning custom elements found.
Parameters:
Name Type Argument Description root
Element <optional>
Node to search under.
- Inherited From:
- Source:
-
getEnclosingWidget(node)
-
Returns the widget whose DOM tree contains the specified DOMNode, or null if the node is not contained within the DOM tree of any widget
Parameters:
Name Type Description node
Element - Inherited From:
- Source:
-
getIdentity(object) → {string}
-
This function must be implemented to return the id of a item.
Parameters:
Name Type Description object
item The item the identity of must be returned.
Returns:
The identity of the item.
- Type
- string
-
getParent()
-
Returns the parent widget of this widget.
- Inherited From:
- Source:
-
<protected> hasSelectionModifier(event) → {boolean}
-
Tests if an event has a selection modifier.
If it has a selection modifier, that means that:
- if selectionMode is "single", the event will be able to deselect a selected item
- if selectionMode is "multiple", the event will trigger the selection state of the item
The default implementation of this method returns true if the event.ctrlKey attribute is true, which means that:
- if selectionMode is "single", the Ctrl (or Command on MacOS) key must be pressed for the
- event to deselect the currently selected item
- if selectionMode is "multiple", the Ctrl (or Command on MacOS) key must be pressed for the event to toggle the selection status of the item.
Parameters:
Name Type Description event
Event The event that led to the selection .
Returns:
Whether the event has selection modifier.
- Type
- boolean
-
<protected> isLeftToRight() → {boolean}
-
Return this widget's explicit or implicit orientation (true for LTR, false for RTL).
- Inherited From:
- Source:
Returns:
- Type
- boolean
-
isSelected(object) → {Object}
-
Returns whether an item is selected or not.
Parameters:
Name Type Description object
item The item to test.
Returns:
The item to test the selection for.
- Type
- Object
-
mix(hash)
-
Set a hash of properties on a Stateful instance.
Parameters:
Name Type Description hash
Object Hash of properties.
- Inherited From:
- Source:
Example
myObj.mix({ foo: "Howdy", bar: 3 });
-
notifyCurrentValue(name)
-
Notify current value to observers. Handy to manually schedule invocation of observer callbacks when there is no change in value.
Parameters:
Name Type Description name
string The property name.
- Inherited From:
- Source:
-
observe(callback) → {module:decor/Stateful.PropertyListObserver}
-
Observe for change in properties. Callback is called at the end of micro-task of changes with a hash table of old values keyed by changed property. Multiple changes to a property in a micro-task is squashed .
Parameters:
Name Type Description callback
function The callback.
- Inherited From:
- Source:
Returns:
The observer that can be used to stop observation or synchronously deliver/discard pending change records.
Example
var stateful = new (dcl(Stateful, { foo: undefined, bar: undefined, baz: undefined }))({ foo: 3, bar: 5, baz: 7 }); stateful.observe(function (oldValues) { // oldValues is {foo: 3, bar: 5, baz: 7} }); stateful.foo = 4; stateful.bar = 6; stateful.baz = 8; stateful.foo = 6; stateful.bar = 8; stateful.baz = 10;
-
on(type, func, node) → {Object}
-
Call specified function when event occurs.
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", myWidget.func.bind(myWidget))
.Parameters:
Name Type Argument Description type
string | function Name of event (ex: "click") or extension event like
touch.press
.func
function Callback function.
node
Element <optional>
Element to attach handler to, defaults to
this
.- Inherited From:
- Source:
Returns:
Handle with
remove()
method to cancel the event.- Type
- Object
-
onBlur()
-
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.
- Inherited From:
- Source:
-
onFocus(evt)
-
Called when the widget becomes "active" because it or a widget inside of it either has focus, or has recently been clicked.
Parameters:
Name Type Description evt
Event A focus event.
- Inherited From:
- Source:
-
<protected> own() → {Array.<Object>}
-
Track specified handles and remove/destroy them when this instance is destroyed, unless they were already removed/destroyed manually.
- Inherited From:
- Source:
Returns:
The array of specified handles, so you can do for example:
var handle = this.own(on(...))[0];
- Type
- Array.<Object>
-
<protected> placeAt(reference, position) → {module:delite/Widget}
-
Place this widget somewhere in the dom, and allow chaining.
Parameters:
Name Type Argument Description reference
string | Element | DocumentFragment Element, DocumentFragment, or id of Element to place this widget relative to.
position
string | number <optional>
Numeric index or a string with the values:
- number - place this widget as n'th child of
reference
node - "first" - place this widget as first child of
reference
node - "last" - place this widget as last child of
reference
node - "before" - place this widget as previous sibling of
reference
node - "after" - place this widget as next sibling of
reference
node - "replace" - replace specified reference node with this widget
- "only" - replace all children of
reference
node with this widget
- Inherited From:
- Source:
Returns:
This widget, for chaining.
- Type
- module:delite/Widget
Examples
// create a Button with no srcNodeRef, and place it in the body: var button = new Button({ label:"click" }).placeAt(document.body);
// place a new button as the first element of some div var button = new Button({ label:"click" }).placeAt("wrapper","first");
// create a contentpane and add it to a TabContainer var tc = document.getElementById("myTabs"); new ContentPane({ href:"foo.html", title:"Wow!" }).placeAt(tc)
- number - place this widget as n'th child of
-
<protected> postCreate()
-
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.
- Inherited From:
- Source:
-
<protected> preCreate()
-
Processing before
buildRendering()
.- Inherited From:
- Source:
-
<protected> processConstructorParameters()
-
Called after Object is created to process parameters passed to constructor.
- Inherited From:
- Source:
-
refreshRendering(newValues, oldValues)
-
Callback function to render UI upon property changes.
Parameters:
Name Type Description newValues
Object The hash table of new property values, keyed by property names.
oldValues
Object The hash table of old property values, keyed by property names.
- Inherited From:
- Source:
-
<protected> selectFromEvent(event, item, renderer, dispatch) → {boolean}
-
Applies selection triggered by an user interaction.
Parameters:
Name Type Description event
Event The source event of the user interaction.
item
Object The item that has been selected/deselected.
renderer
Object The visual renderer of the selected/deselected item.
dispatch
boolean Whether an event must be dispatched or not.
Returns:
True if the selection has changed and false otherwise.
- Type
- boolean
-
<protected> setClassComponent(component, value, node)
-
Helper method to set a class (or classes) on a given node, removing the class (or classes) set by the previous call to
setClassComponent()
for the specified component and node. Used mainly by template.js to set classes without overwriting classes set by the user or other code (ex: CssState).Parameters:
Name Type Argument Description component
string Specifies the category.
value
string Class (or classes) to set.
node
HTMLElement <optional>
The node to set the property on; defaults to widget root node.
- Inherited From:
- Source:
-
<protected> setOrRemoveAttribute(node, name, value)
-
Helper method to set/remove an attribute based on the given value:
- If value is undefined, the attribute is removed. Useful for attributes like aria-valuenow.
- If value is boolean, the attribute is set to "true" or "false". Useful for attributes like aria-selected.
- If value is a number, it's converted to a string.
Parameters:
Name Type Description node
Element The node to set the property on.
name
string Name of the property.
value
string Value of the property.
- Inherited From:
- Source:
-
setSelected(item, value)
-
Change the selection state of an item.
Parameters:
Name Type Description item
Object The item to change the selection state for.
value
boolean True to select the item, false to deselect it.
-
startup()
-
Processing after the DOM fragment is added to the document.
Called after a widget and its children have been created and added to the page, and all related widgets have finished their create() cycle, up through
postCreate()
.Note that
startup()
may be called while the widget is still hidden, for example if the widget is inside a hidden deliteful/Dialog or an unselected tab of a deliteful/TabContainer. For widgets that need to do layout, it's best to put that layout code insideresize()
, and then extend delite/LayoutWidget so thatresize()
is called when the widget is visible.- Inherited From:
- Source:
-
<protected> updateRenderers(items)
-
This function must be implemented to update the rendering of the items based on whether they are selected or not. The implementation must check for their new selection state and update accordingly.
Parameters:
Name Type Description items
Array.<Object> The array of items changing their selection state.
Events
-
selection-change
-
Selection change event. Dispatched after the selection has been modified through user interaction.
- Source:
Properties:
Name Type Description oldValue
number The previously selected item.
newValue-
number The new selected item.
renderer
Object The visual renderer of the selected/deselected item.
triggerEvent
Event The event that lead to the selection of the item.
Example
widget.on("selection-change", function (evt) { console.log("old value: " + evt.oldValue); console.log("new value: " + evt.newValue); }