ui.Component Extends goog.events.EventTarget
Default implementation of UI component.

Inheritance

Constructor

goog.ui.Component(opt_domHelper)

Parameters

opt_domHelper :
(goog.dom.DomHelper | null | undefined)
Optional DOM helper.

Instance Methods

Public Protected Private
addChild(childopt_render)
Adds the specified component as the last child of this component. See goog.ui.Component#addChildAt for detailed semantics.
Arguments:
child :
The new child component.
opt_render :
(boolean | undefined)
If true, the child component will be rendered into the parent.
code »
addChildAt(childindexopt_render)
undefined
Adds the specified component as a child of this component at the given 0-based index. Both addChild and addChildAt assume the following contract between parent and child components:
  • the child component's element must be a descendant of the parent component's element, and
  • the DOM state of the child component must be consistent with the DOM state of the parent component (see isInDocument) in the steady state -- the exception is to addChildAt(child, i, false) and then immediately decorate/render the child.
In particular, parent.addChild(child) will throw an error if the child component is already in the document, but the parent isn't. Clients of this API may call addChild and addChildAt with opt_render set to true. If opt_render is true, calling these methods will automatically render the child component's element into the parent component's element. However, parent.addChild(child, true) will throw an error if:
  • the parent component has no DOM (i.e. parent.getElement() is null), or
  • the child component is already in the document, regardless of the parent's DOM state.
If opt_render is true and the parent component is not already in the document, enterDocument will not be called on this component at this point. Finally, this method also throws an error if the new child already has a different parent, or the given index is out of bounds.
Arguments:
child :
The new child component.
index :
0-based index at which the new child component is to be added; must be between 0 and the current child count (inclusive).
opt_render :
(boolean | undefined)
If true, the child component will be rendered into the parent.
Returns: 
undefined
  Nada.
code »
canDecorate(element)
Determines if a given element can be decorated by this type of component. This method should be overridden by inheriting objects.
Arguments:
element :
(Element | null)
Element to decorate.
Returns:   True if the element can be decorated, false otherwise.
code »
createDom()
Creates the initial DOM representation for the component. The default implementation is to set this.element_ = div.
code »
decorate(element)
Decorates the element for the UI component.
Arguments:
element :
(Element | null)
Element to decorate.
code »
decorateInternal(element)
Actually decorates the element. Should be overridden by inheriting objects. This method can assume there are checks to ensure the component has not already been rendered have occurred and that enter document will be called afterwards. This method is considered protected.
Arguments:
element :
(Element | null)
Element to decorate.
code »
disposeInternal()
Disposes of the component. Calls exitDocument, which is expected to remove event handlers and clean up the component. Propagates the call to the component's children, if any. Removes the component's DOM from the document unless it was decorated.
code »
enterDocument()
Called when the component's element is known to be in the document. Anything using document.getElementById etc. should be done at this stage. If the component contains child components, this call is propagated to its children.
code »
exitDocument()
Called by dispose to clean up the elements and listeners created by a component, or by a parent component/application who has removed the component from the document but wants to reuse it later. If the component contains child components, this call is propagated to its children. It should be possible for the component to be rendered again once this method has been called.
code »
forEachChild(fopt_obj)
Calls the given function on each of this component's children in order. If opt_obj is provided, it will be used as the 'this' object in the function when called. The function should take two arguments: the child component and its 0-based index. The return value is ignored.
Arguments:
f :
?function (this:T, ?, number):
The function to call for every child component; should take 2 arguments (the child and its index).
opt_obj :
(T | undefined)
Used as the 'this' object in f when called.
code »
getChild(id)
Returns the child with the given ID, or null if no such child exists.
Arguments:
id :
Child component ID.
Returns:   The child with the given ID; null if none.
code »
getChildAt(index)
Returns the child at the given index, or null if the index is out of bounds.
Arguments:
index :
0-based index.
Returns:   The child at the given index; null if none.
code »
getChildCount()
Returns the number of children of this component.
Returns:   The number of children.
code »
getChildIds()
(Array.<string> | null)
Returns an array containing the IDs of the children of this component, or an empty array if the component has no children.
Returns: 
(Array.<string> | null)
  Child component IDs.
code »
getContentElement()
(Element | null)
Returns the DOM element into which child components are to be rendered, or null if the component itself hasn't been rendered yet. This default implementation returns the component's root element. Subclasses with complex DOM structures must override this method.
Returns: 
(Element | null)
  Element to contain child elements (null if none).
code »
getDomHelper()
Returns the dom helper that is being used on this component.
Returns:   The dom helper used on this component.
code »
getElement()
(Element | null)
Gets the component's element.
Returns: 
(Element | null)
  The element for the component.
code »
getElementByClass(className)
(Element | null)
Returns the first element in this component's DOM with the provided className.
Arguments:
className :
The name of the class to look for.
Returns: 
(Element | null)
  The first item with the class name provided.
code »
getElementByFragment(idFragment)
(Element | null)
Helper function for returning an element in the document with a unique id generated using makeId().
Arguments:
idFragment :
The partial id.
Returns: 
(Element | null)
  The element with the unique id, or null if it cannot be found.
code »
getElementsByClass(className)
{length: number}
Returns an array of all the elements in this component's DOM with the provided className.
Arguments:
className :
The name of the class to look for.
Returns: 
{length: number}
  The items found with the class name provided.
code »
getFragmentFromId(id)
Helper function for returning the fragment portion of an id generated using makeId().
Arguments:
id :
Id generated with makeId().
Returns:   Fragment.
code »
getHandler()
Returns the event handler for this component, lazily created the first time this method is called.
Returns:   Event handler for this component.
code »
getId()
Gets the unique ID for the instance of this component. If the instance doesn't already have an ID, generates one on the fly.
Returns:   Unique component ID.
code »
getModel()
*
Returns the model associated with the UI component.
Returns: 
*
  The model.
code »
getParent()
Returns the component's parent, if any.
Returns:   The parent component.
code »
hasChildren()
Returns true if the component has children.
Returns:   True if the component has children.
code »
indexOfChild(child)
Returns the 0-based index of the given child component, or -1 if no such child is found.
Arguments:
child :
The child component.
Returns:   0-based index of the child component; -1 if not found.
code »
isInDocument()
Determines whether the component has been added to the document.
Returns:   TRUE if rendered. Otherwise, FALSE.
code »
isRightToLeft()
Returns true if the component is rendered right-to-left, false otherwise. The first time this function is invoked, the right-to-left rendering property is set if it has not been already.
Returns:   Whether the control is rendered right-to-left.
code »
makeId(idFragment)
Helper function for subclasses that gets a unique id for a given fragment, this can be used by components to generate unique string ids for DOM elements.
Arguments:
idFragment :
A partial id.
Returns:   Unique element id.
code »
makeIds(object)
(Object | null)
Makes a collection of ids. This is a convenience method for makeId. The object's values are the id fragments and the new values are the generated ids. The key will remain the same.
Arguments:
object :
(Object | null)
The object that will be used to create the ids.
Returns: 
(Object | null)
  An object of id keys to generated ids.
code »
removeChild(childopt_unrender)
Removes the given child from this component, and returns it. Throws an error if the argument is invalid or if the specified child isn&#39;t found in the parent component. The argument can either be a string (interpreted as the ID of the child component to remove) or the child component itself. If opt_unrender is true, calls goog.ui.component#exitDocument on the removed child, and subsequently detaches the child&amp;#39;s DOM from the document. Otherwise it is the caller&amp;#39;s responsibility to clean up the child component&amp;#39;s DOM.
Arguments:
child :
(goog.ui.Component | null | string)
The ID of the child to remove, or the child component itself.
opt_unrender :
(boolean | undefined)
If true, calls exitDocument on the removed child component, and detaches its DOM from the document.
Returns:   The removed component, if any.
code »
removeChildAt(indexopt_unrender)
Removes the child at the given index from this component, and returns it. Throws an error if the argument is out of bounds, or if the specified child isn&#39;t found in the parent. See goog.ui.Component#removeChild for detailed semantics.
Arguments:
index :
0-based index of the child to remove.
opt_unrender :
(boolean | undefined)
If true, calls exitDocument on the removed child component, and detaches its DOM from the document.
Returns:   The removed component, if any.
code »
removeChildren(opt_unrender)
Removes every child component attached to this one and returns them.
Arguments:
opt_unrender :
(boolean | undefined)
If true, calls #exitDocument on the removed child components, and detaches their DOM from the document.
Returns:   The removed components if any.
code »
render(opt_parentElement)
Renders the component. If a parent element is supplied, the component&#39;s element will be appended to it. If there is no optional parent element and the element doesn&#39;t have a parentNode then it will be appended to the document body. If this component has a parent component, and the parent component is not in the document already, then this will not call enterDocument on this component. Throws an Error if the component is already rendered.
Arguments:
opt_parentElement :
(Element | null | undefined)
Optional parent element to render the component into.
code »
renderBefore(sibling)
Renders the component before another element. The other element should be in the document already. Throws an Error if the component is already rendered.
Arguments:
sibling :
(Node | null)
Node to render the component before.
code »
render_(opt_parentElementopt_beforeNode)
Renders the component. If a parent element is supplied, the component&#39;s element will be appended to it. If there is no optional parent element and the element doesn&#39;t have a parentNode then it will be appended to the document body. If this component has a parent component, and the parent component is not in the document already, then this will not call enterDocument on this component. Throws an Error if the component is already rendered.
Arguments:
opt_parentElement :
(Element | null | undefined)
Optional parent element to render the component into.
opt_beforeNode :
(Node | null | undefined)
Node before which the component is to be rendered. If left out the node is appended to the parent element.
code »
setElementInternal(element)
Sets the component's root element to the given element. Considered protected and final. This should generally only be called during createDom. Setting the element does not actually change which element is rendered, only the element that is associated with this UI component.
Arguments:
element :
(Element | null)
Root element for the component.
code »
setId(id)
Assigns an ID to this component instance. It is the caller's responsibility to guarantee that the ID is unique. If the component is a child of a parent component, then the parent component's child index is updated to reflect the new ID; this may throw an error if the parent already has a child with an ID that conflicts with the new ID.
Arguments:
id :
Unique component ID.
code »
setModel(obj)
Sets the model associated with the UI component.
Arguments:
obj :
*
The model.
code »
setParent(parent)
Sets the parent of this component to use for event bubbling. Throws an error if the component already has a parent or if an attempt is made to add a component to itself as a child. Callers must use removeChild or removeChildAt to remove components from their containers before calling this method.
Arguments:
parent :
The parent component.
code »
setParentEventTarget(parent)
Overrides goog.events.EventTarget#setParentEventTarget to throw an error if the parent component is set, and the argument is not the parent.
Arguments:
parent :
No description.
code »
setRightToLeft(rightToLeft)
Set is right-to-left. This function should be used if the component needs to know the rendering direction during dom creation (i.e. before #enterDocument is called and is right-to-left is set).
Arguments:
rightToLeft :
Whether the component is rendered right-to-left.
code »
wasDecorated()
No description.
Returns:   Whether the component was decorated.
code »
addEventListener(typehandleropt_captureopt_handlerScope)
Adds an event listener to the event target. The same handler can only be added once per the type. Even if you add the same handler multiple times using the same type then it will only be called once when the event is dispatched. Supported for legacy but use goog.events.listen(src, type, handler) instead.
Arguments:
type :
The type of the event to listen for.
handler :
(Object | null)
The function to handle the event. The handler can also be an object that implements the handleEvent method which takes the event object as argument.
opt_capture :
(boolean | undefined)
In DOM-compliant browsers, this determines whether the listener is fired during the capture or bubble phase of the event.
opt_handlerScope :
(Object | null | undefined)
Object in whose scope to call the listener.
code »
dispatchEvent(e)
Dispatches an event (or event like object) and calls all listeners listening for events of this type. The type of the event is decided by the type property on the event object. If any of the listeners returns false OR calls preventDefault then this function will return false. If one of the capture listeners calls stopPropagation, then the bubble listeners won't fire.
Arguments:
e :
(Object | null | string)
Event object.
Returns:   If anyone called preventDefault on the event object (or if any of the handlers returns false this will also return false.
code »
disposeInternal()
Unattach listeners from this object. Classes that extend EventTarget may need to override this method in order to remove references to DOM Elements and additional listeners, it should be something like this:
MyClass.prototype.disposeInternal = function() {
MyClass.superClass_.disposeInternal.call(this);
// Dispose logic for MyClass
};
code »
getParentEventTarget()
Returns the parent of this event target to use for bubbling.
Returns:   The parent EventTarget or null if there is no parent.
code »
removeEventListener(typehandleropt_captureopt_handlerScope)
Removes an event listener from the event target. The handler must be the same object as the one added. If the handler has not been added then nothing is done.
Arguments:
type :
The type of the event to listen for.
handler :
(Object | null)
The function to handle the event. The handler can also be an object that implements the handleEvent method which takes the event object as argument.
opt_capture :
(boolean | undefined)
In DOM-compliant browsers, this determines whether the listener is fired during the capture or bubble phase of the event.
opt_handlerScope :
(Object | null | undefined)
Object in whose scope to call the listener.
code »
setParentEventTarget(parent)
Sets the parent of this event target to use for bubbling.
Arguments:
parent :
Parent EventTarget (null if none).
code »
addOnDisposeCallback(callbackopt_scope)
Invokes a callback function when this object is disposed. Callbacks are invoked in the order in which they were added.
Arguments:
callback :
?function (this:T):
The callback function.
opt_scope :
(T | undefined)
An optional scope to call the callback in.
code »
dispose()
undefined
Disposes of the object. If the object hasn&amp;#39;t already been disposed of, calls #disposeInternal. Classes that extend goog.Disposable should override #disposeInternal in order to delete references to COM objects, DOM nodes, and other disposable objects. Reentrant.
Returns: 
undefined
  Nothing.
code »
disposeInternal()
Deletes or nulls out any references to COM objects, DOM nodes, or other disposable objects. Classes that extend goog.Disposable should override this method. Not reentrant. To avoid calling it twice, it must only be called from the subclass&amp;#39; disposeInternal method. Everywhere else the public dispose method must be used. For example:
mypackage.MyClass = function() {
goog.base(this);
// Constructor logic specific to MyClass.
...
};
goog.inherits(mypackage.MyClass, goog.Disposable);

mypackage.MyClass.prototype.disposeInternal = function() {
// Dispose logic specific to MyClass.
...
// Call superclass&#39;s disposeInternal at the end of the subclass&#39;s, like
// in C++, to avoid hard-to-catch issues.
goog.base(this, &#39;disposeInternal&#39;);
};
code »
getDisposed()
Use #isDisposed instead. No description.
Returns:   Whether the object has been disposed of.
code »
isDisposed()
No description.
Returns:   Whether the object has been disposed of.
code »
registerDisposable(disposable)
Associates a disposable object with this object so that they will be disposed together.
Arguments:
disposable :
that will be disposed when this object is disposed.
code »

Instance Properties

childIndex_ :
(Object | null)
Map of child component IDs to child components. Used for constant-time random access to child components by ID. Lazily initialized on first use. Must be kept in sync with children_. This property is strictly private and must not be accessed directly outside of this class! We use a plain Object, not a goog.structs.Map, for simplicity. This means components can&amp;#39;t have children with IDs such as &amp;#39;constructor&amp;#39; or &amp;#39;valueOf&amp;#39;, but this shouldn&amp;#39;t really be an issue in practice, and if it is, we can always fix it later without changing the API.
Code »
children_ :
(Array.<(goog.ui.Component | null)> | null)
Array of child components. Lazily initialized on first use. Must be kept in sync with childIndex_. This property is strictly private and must not be accessed directly outside of this class!
Code »
DomHelper used to interact with the document, allowing components to be created in a different window.
Code »
element_ :
(Element | null)
The DOM element for the component.
Code »
googUiComponentHandler_ :
Event handler. TODO(user): rename it to handler_ after all component subclasses in inside Google have been cleaned up. Code search: http://go/component_code_search
Code »
idGenerator_ :
Generator for unique IDs.
Code »
id_ :
(null | string)
Unique ID of the component, lazily initialized in goog.ui.Component#getId if needed. This property is strictly private and must not be accessed directly outside of this class!
Code »
inDocument_ :
Whether the component is in the document.
Code »
model_ :
*
Arbitrary data object associated with the component. Such as meta-data.
Code »
parent_ :
Parent component to which events will be propagated. This property is strictly private and must not be accessed directly outside of this class!
Code »
rightToLeft_ :
(boolean | null)
Whether the component is rendered right-to-left. Right-to-left is set lazily when #isRightToLeft is called the first time, unless it has been set by calling #setRightToLeft explicitly.
Code »
wasDecorated_ :
Flag used to keep track of whether a component decorated an already existing element or whether it created the DOM itself. If an element is decorated, dispose will leave the node in the document. It is up to the app to remove the node. If an element was rendered, dispose will remove the node automatically.
Code »
customEvent_ :
Used to tell if an event is a real event in goog.events.listen() so we don't get listen() calling addEventListener() and vice-versa.
Code »
parentEventTarget_ :
Parent event target, used during event bubbling.
Code »
creationStack :
If monitoring the goog.Disposable instances is enabled, stores the creation stack trace of the Disposable instance.
Code »
dependentDisposables_ :
(Array.<(goog.disposable.IDisposable | null)> | null)
Disposables that should be disposed when this object is disposed.
Code »
disposed_ :
Whether the object has been disposed of.
Code »
onDisposeCallbacks_ :
(Array.<Function> | null)
Callbacks to invoke when this object is disposed.
Code »

Static Methods

goog.ui.Component.call()
No description.
code »
goog.ui.Component.getStateTransitionEvent(stateisEntering)
goog.ui.Component.EventType.<string>
Static helper method; returns the type of event components are expected to dispatch when transitioning to or from the given state.
Arguments:
state :
goog.ui.Component.State.<number>
State to/from which the component is transitioning.
isEntering :
Whether the component is entering or leaving the state.
Returns: 
goog.ui.Component.EventType.<string>
  Event type to dispatch.
code »
goog.ui.Component.setDefaultRightToLeft(rightToLeft)
Set the default right-to-left value. This causes all component's created from this point foward to have the given value. This is useful for cases where a given page is always in one directionality, avoiding unnecessary right to left determinations.
Arguments:
rightToLeft :
(boolean | null)
Whether the components should be rendered right-to-left. Null iff components should determine their directionality.
code »

Static Properties

goog.ui.Component.defaultRightToLeft_ :
(boolean | null)
The default right to left value.
Code »

Enumerations

goog.ui.Component.Error :
Errors thrown by the component.
Constants:
NOT_IN_DOCUMENT
Error when an operation requiring DOM interaction is made when the component is not in the document
PARENT_UNABLE_TO_BE_SET
Error when an attempt is made to set the parent of a component in a way that would result in an inconsistent object graph.
DECORATE_INVALID
Error when the given element can not be decorated.
NOT_SUPPORTED
Error when a method is not supported.
STATE_INVALID
Error when an invalid component state is encountered.
NOT_OUR_CHILD
Error when an attempt is made to remove a child component from a component other than its parent.
CHILD_INDEX_OUT_OF_BOUNDS
Error when an attempt is made to add a child component at an out-of-bounds index. We don't support sparse child arrays.
ALREADY_RENDERED
Error when the component is already rendered and another render attempt is made.
Code »
goog.ui.Component.EventType :
Common events fired by components so that event propagation is useful. Not all components are expected to dispatch or listen for all event types. Events dispatched before a state transition should be cancelable to prevent the corresponding state change.
Constants:
ENABLE
Dispatched before the component becomes enabled.
CHANGE
Dispatched after the external-facing state of a component is changed.
ENTER
Dispatched after a component is moused over.
UNSELECT
Dispatched before the component becomes un-selected.
HIDE
Dispatched before the component becomes hidden.
SELECT
Dispatched before the component becomes selected.
CHECK
Dispatched before a component becomes checked.
BEFORE_SHOW
Dispatched before the component becomes visible.
SHOW
Dispatched after the component becomes visible. NOTE(user): For goog.ui.Container, this actually fires before containers are shown. Use goog.ui.Container.EventType.AFTER_SHOW if you want an event that fires after a goog.ui.Container is shown.
UNCHECK
Dispatched before a component becomes un-checked.
UNHIGHLIGHT
Dispatched before the component becomes un-highlighted.
ACTIVATE
Dispatched before the component becomes activated.
LEAVE
Dispatched after a component is moused out of.
ACTION
Dispatched after the user activates the component.
HIGHLIGHT
Dispatched before the component becomes highlighted.
BLUR
Dispatched before a component becomes blurred.
OPEN
Dispatched before a component is opened (expanded).
DISABLE
Dispatched before the component becomes disabled.
CLOSE
Dispatched before a component is closed (collapsed).
FOCUS
Dispatched before a component becomes focused.
DEACTIVATE
Dispatched before the component becomes deactivated.
Code »
goog.ui.Component.State :
Common component states. Components may have distinct appearance depending on what state(s) apply to them. Not all components are expected to support all states.
Constants:
CHECKED
Component is checked.goog.ui.Component.EventType.CHECKgoog.ui.Component.EventType.UNCHECK
SELECTED
Component is selected.goog.ui.Component.EventType.SELECTgoog.ui.Component.EventType.UNSELECT
OPENED
Component is opened (expanded). Applies to tree nodes, menu buttons, submenus, zippys (zippies?), etc.goog.ui.Component.EventType.OPENgoog.ui.Component.EventType.CLOSE
ACTIVE
Component is active (or &quot;pressed&quot;).goog.ui.Component.EventType.ACTIVATEgoog.ui.Component.EventType.DEACTIVATE
DISABLED
Component is disabled.goog.ui.Component.EventType.DISABLEgoog.ui.Component.EventType.ENABLE
FOCUSED
Component has focus.goog.ui.Component.EventType.FOCUSgoog.ui.Component.EventType.BLUR
HOVER
Component is highlighted.goog.ui.Component.EventType.HIGHLIGHTgoog.ui.Component.EventType.UNHIGHLIGHT
ALL
Union of all supported component states.
Code »

Package ui

Package Reference