(function(mod) { if (typeof exports == "object" && typeof module == "object") // CommonJS return mod(require("tern/lib/infer"), require("tern/lib/tern")); if (typeof define == "function" && define.amd) // AMD return define([ "tern/lib/infer", "tern/lib/tern" ], mod); mod(tern, tern); })(function(infer, tern) { "use strict"; tern.registerPlugin("extjs_4.2.1", function(server, options) { server.on("completion", findCompletions); server.addDefs(defs); }); function findCompletions(file, query) { var wordEnd = tern.resolvePos(file, query.end); var expressionsAround = { expr: infer.findExpressionAround(file.ast, null, wordEnd, file.scope), callExpr: infer.findExpressionAround(file.ast, null, wordEnd, file.scope, 'CallExpression'), propExpr: infer.findExpressionAround(file.ast, null, wordEnd, file.scope, 'Property') }; // probably worth to make modules at some point return ( findCompletionsForXtypeStrings(file, query, wordEnd, expressionsAround) || findCompletionsForXtypeObjectProperties(file, query, wordEnd, expressionsAround) || findCompletionsForExtDefine(file, query, wordEnd, expressionsAround) ); } // ************************************************** // Utils // ************************************************** function getPropertyNameToComplete(propExpr) { return propExpr ? propExpr.node.key.name : ''; } function extractPropertyValue(objExpr, propName) { var className; var properties = objExpr.node.properties; if (!properties) { return; } properties.some(function (node) { if (node.key.name === propName) { var val = node.value; if (val.type === 'Literal' && val.value) { className = val.value; } return true; } return false; }); return className; } function getConfigDefForClass(className) { var classConfigDef; var cx = infer.cx(); if (className) { var parentDefinitionName = className.replace(/\./g, '_') + '_cfg'; classConfigDef = cx.definitions.extjs[parentDefinitionName]; } else { configDef = cx.definitions.Ext_cfg; } return classConfigDef; } function getConfigCompletionsFor(query, propNameToComplete, curProto) { var completions = []; var depth = 0; for (; curProto; curProto = curProto.proto) { for (var name in curProto.props) { if (name.lastIndexOf(propNameToComplete, 0) === 0) { tern.addCompletion(query, completions, name, curProto.props[name], depth); } } depth++; } return completions; } function isObjParentOf(parentExpr, childExpr) { var properties = parentExpr.node.properties; return properties && properties.indexOf(childExpr.node) !== -1; } function getAliases() { var extDefs = null; infer.cx().parent.defs.some(function (curDefs) { if (curDefs['!name'] === 'extjs') { extDefs = curDefs; return true; } }); return extDefs && extDefs['!data'] && extDefs['!data'].aliases; } // ************************************************** // xtypes // ************************************************** function findCompletionsForXtypeObjectProperties(file, query, wordEnd, expressionsAround) { var objExpr = expressionsAround.expr; var propExpr = expressionsAround.propExpr; if (!objExpr || !objExpr.node.type === 'ObjectExpression' || !propExpr) { return; } if (!isObjParentOf(objExpr, propExpr)) { return; } var propNode = propExpr.node; var xtype = extractPropertyValue(objExpr, 'xtype'); if (!xtype) { return; } var classDef = getConfigClassDefForXtype(xtype, propExpr); var propNameToComplete = getPropertyNameToComplete(propExpr); var completions = getConfigCompletionsFor(query, propNameToComplete, classDef); var propNode = propExpr && propExpr.node; var start = propNode ? propNode.start : wordEnd; var end = propNode ? propNode.end : wordEnd; return { start: tern.outputPos(query, file, start), end: tern.outputPos(query, file, end), isProperty: true, isObjectKey: true, completions: completions }; } function findCompletionsForXtypeStrings(file, query, wordEnd, expressionsAround) { var thisExpr = expressionsAround.expr; var propExpr = expressionsAround.propExpr; if (!thisExpr || thisExpr.node.type !== 'Literal' || !propExpr ) { return; } var propNode = propExpr.node; if (propNode.value !== thisExpr.node || propNode.key.name !== 'xtype') { return; } var aliases = getAliases(); if (!aliases || !aliases.widget) { return; } var start = thisExpr.start; var end = thisExpr.end; return { start: tern.outputPos(query, file, start), end: tern.outputPos(query, file, end), isProperty: false, isObjectKey: false, completions: Object.keys(aliases.widget).reduce(function (completions, xtype) { if (xtype.lastIndexOf(thisExpr.node.value, 0) === 0) { completions.push({ origin: 'extjs', name: xtype }); } return completions; }, []) }; } function getConfigClassDefForXtype(xtype, propExpr) { var aliases = getAliases(); if (!aliases || !aliases.widget) { return; } var widgets = aliases.widget; var className = widgets[xtype]; if (!className) { return; } return getConfigDefForClass(className); } // ************************************************** // Ext.define // ************************************************** function findCompletionsForExtDefine(file, query, wordEnd, expressionsAround) { var callExpr = expressionsAround.callExpr; var objExpr = expressionsAround.expr; if (!objExpr || !objExpr.node.type === 'ObjectExpression') { return; } var propExpr = expressionsAround.propExpr; if (!isExtDefineCallExpression(callExpr, objExpr)) { return; } // Is the object expression the parent of the property being auto-completed? if (propExpr && !isObjParentOf(objExpr, propExpr)) { return; } var parentDef = getParentClassConfigDefinition(objExpr); var propNameToComplete = getPropertyNameToComplete(propExpr); var completions = getConfigCompletionsFor(query, propNameToComplete, parentDef); var propNode = propExpr && propExpr.node; var start = propNode ? propNode.start : wordEnd; var end = propNode ? propNode.end : wordEnd; return { start: tern.outputPos(query, file, start), end: tern.outputPos(query, file, end), isProperty: true, isObjectKey: true, completions: completions }; } function getParentClassConfigDefinition(objExpr) { var parentClass = extractPropertyValue(objExpr, 'extend'); return getConfigDefForClass(parentClass); } function isExtDefineCallExpression(callExpr, objExpr) { // check we're going to autocomplete direct properties if (!callExpr) { return false; } var callee = callExpr.node.callee; if (!callee || !callee.object.name === 'Ext' || !callee.property.name === 'define') { return false; } if (callExpr.node.arguments[1] !== objExpr.node) { return false; } return true; } var defs = {"!name":"extjs","!define":{"Ext_AbstractComponent_cfg":{"!proto":"Ext_Base_cfg","autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"autoLoad":{"!type":"+Ext.ComponentLoader|?|string|bool","!doc":"

An alias for loader config which also allows to specify just a string which will be\nused as the url that's automatically loaded:

\n\n
Ext.create('Ext.Component', {\n    autoLoad: 'content.html',\n    renderTo: Ext.getBody()\n});\n
\n\n

The above is the same as:

\n\n
Ext.create('Ext.Component', {\n    loader: {\n        url: 'content.html',\n        autoLoad: true\n    },\n    renderTo: Ext.getBody()\n});\n
\n\n

Don't use it together with loader config.

\n"},"autoRender":{"!type":"bool|string|+HTMLElement|+Ext.Element","!doc":"

This config is intended mainly for non-floating Components which may or may not be shown. Instead of using\nrenderTo in the configuration, and rendering upon construction, this allows a Component to render itself\nupon first show. If floating is true, the value of this config is omitted as if it is true.

\n\n

Specify as true to have this Component render to the document body upon first show.

\n\n

Specify as an element, or the ID of an element to have this Component render to a specific element upon first\nshow.

\n"},"autoShow":{"!type":"bool","!doc":"

true to automatically show the component upon creation. This config option may only be used for\nfloating components or components that use autoRender.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"childEls":{"!type":"[?]","!doc":"

An array describing the child elements of the Component. Each member of the array\nis an object with these properties:

\n\n\n\n\n

If the array member is a string, it is equivalent to { name: m, itemId: m }.

\n\n

For example, a Component which renders a title and body text:

\n\n
Ext.create('Ext.Component', {\n    renderTo: Ext.getBody(),\n    renderTpl: [\n        '<h1 id=\"{id}-title\">{title}</h1>',\n        '<p>{msg}</p>',\n    ],\n    renderData: {\n        title: \"Error\",\n        msg: \"Something went wrong\"\n    },\n    childEls: [\"title\"],\n    listeners: {\n        afterrender: function(cmp){\n            // After rendering the component will have a title property\n            cmp.title.setStyle({color: \"red\"});\n        }\n    }\n});\n
\n\n

A more flexible, but somewhat slower, approach is renderSelectors.

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"contentEl":{"!type":"string","!doc":"

Specify an existing HTML element, or the id of an existing HTML element to use as the content for this component.

\n\n

This config option is used to take an existing HTML element and place it in the layout element of a new component\n(it simply moves the specified DOM element after the Component is rendered to use as the content.

\n\n

Notes:

\n\n

The specified HTML element is appended to the layout element of the component after any configured\nHTML has been inserted, and so the document will not contain this element at the time\nthe render event is fired.

\n\n

The specified HTML element used will not participate in any layout\nscheme that the Component may use. It is just HTML. Layouts operate on child\nitems.

\n\n

Add either the x-hidden or the x-hide-display CSS class to prevent a brief flicker of the content before it\nis rendered to the panel.

\n"},"data":{"!type":"?","!doc":"

The initial set of data to apply to the tpl to update the content area of the Component.

\n"},"disabled":{"!type":"bool","!doc":"

true to disable the component.

\n"},"disabledCls":{"!type":"string","!doc":"

CSS class to add when the Component is disabled.

\n"},"draggable":{"!type":"bool","!doc":"

Allows the component to be dragged.

\n"},"floating":{"!type":"bool","!doc":"

Create the Component as a floating and use absolute positioning.

\n\n

The z-index of floating Components is handled by a ZIndexManager. If you simply render a floating Component into the DOM, it will be managed\nby the global WindowManager.

\n\n

If you include a floating Component as a child item of a Container, then upon render, Ext JS will seek an ancestor floating Component to house a new\nZIndexManager instance to manage its descendant floaters. If no floating ancestor can be found, the global WindowManager will be used.

\n\n

When a floating Component which has a ZindexManager managing descendant floaters is destroyed, those descendant floaters will also be destroyed.

\n"},"frame":{"!type":"bool","!doc":"

Specify as true to have the Component inject framing elements within the Component at render time to provide a\ngraphical rounded frame around the Component content.

\n\n

This is only necessary when running on outdated, or non standard-compliant browsers such as Microsoft's Internet\nExplorer prior to version 9 which do not support rounded corners natively.

\n\n

The extra space taken up by this framing is available from the read only property frameSize.

\n"},"height":{"!type":"number","!doc":"

The height of this component in pixels.

\n"},"hidden":{"!type":"bool","!doc":"

true to hide the component.

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Component's encapsulating DOM element will be hidden. Values may be:

\n\n\n\n"},"html":{"!type":"string|?","!doc":"

An HTML fragment, or a DomHelper specification to use as the layout element content.\nThe HTML content is added after the component is rendered, so the document will not contain this HTML at the time\nthe render event is fired. This content is inserted into the body before any configured contentEl\nis appended.

\n"},"id":{"!type":"string","!doc":"

The unique id of this component instance.

\n\n

It should not be necessary to use this configuration except for singleton objects in your application. Components\ncreated with an id may be accessed globally using Ext.getCmp.

\n\n

Instead of using assigned ids, use the itemId config, and ComponentQuery\nwhich provides selector-based searching for Sencha Components analogous to DOM querying. The Container class contains shortcut methods to query\nits descendant Components by selector.

\n\n

Note that this id will also be used as the element id for the containing HTML element that is rendered to the\npage for this component. This allows you to write id-based CSS rules to style the specific instance of this\ncomponent uniquely, and also to select sub-elements using this component's id as the parent.

\n\n

Note: To avoid complications imposed by a unique id also see itemId.

\n\n

Note: To access the container of a Component see ownerCt.

\n\n

Defaults to an auto-assigned id.

\n"},"itemId":{"!type":"string","!doc":"

An itemId can be used as an alternative way to get a reference to a component when no object reference is\navailable. Instead of using an id with Ext.getCmp, use itemId with\nExt.container.Container.getComponent which will retrieve\nitemId's or id's. Since itemId's are an index to the container's internal MixedCollection, the\nitemId is scoped locally to the container -- avoiding potential conflicts with Ext.ComponentManager\nwhich requires a unique id.

\n\n
var c = new Ext.panel.Panel({ //\n    height: 300,\n    renderTo: document.body,\n    layout: 'auto',\n    items: [\n        {\n            itemId: 'p1',\n            title: 'Panel 1',\n            height: 150\n        },\n        {\n            itemId: 'p2',\n            title: 'Panel 2',\n            height: 150\n        }\n    ]\n})\np1 = c.getComponent('p1'); // not the same as Ext.getCmp()\np2 = p1.ownerCt.getComponent('p2'); // reference via a sibling\n
\n\n

Also see id, Ext.container.Container.query, Ext.container.Container.down and\nExt.container.Container.child.

\n\n

Note: to access the container of an item see ownerCt.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"loader":{"!type":"+Ext.ComponentLoader|?","!doc":"

A configuration object or an instance of a Ext.ComponentLoader to load remote content\nfor this Component.

\n\n
Ext.create('Ext.Component', {\n    loader: {\n        url: 'content.html',\n        autoLoad: true\n    },\n    renderTo: Ext.getBody()\n});\n
\n"},"margin":{"!type":"number|string","!doc":"

Specifies the margin for this component. The margin can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n"},"maxHeight":{"!type":"number","!doc":"

The maximum value in pixels which this Component will set its height to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"maxWidth":{"!type":"number","!doc":"

The maximum value in pixels which this Component will set its width to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"minHeight":{"!type":"number","!doc":"

The minimum value in pixels which this Component will set its height to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"minWidth":{"!type":"number","!doc":"

The minimum value in pixels which this Component will set its width to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"overCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element when the mouse moves over the Element,\nand removed when the mouse moves out. This can be useful for adding customized 'active' or 'hover' styles to the\ncomponent or any of its children using standard CSS rules.

\n"},"padding":{"!type":"number|string","!doc":"

Specifies the padding for this component. The padding can be a single numeric value to apply to all sides or it\ncan be a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n"},"plugins":{"!type":"[+Ext.AbstractPlugin]|+Ext.AbstractPlugin|[?]|?|[+Ext.enums.Plugin]|+Ext.enums.Plugin","!doc":"

An array of plugins to be added to this component. Can also be just a single plugin instead of array.

\n\n

Plugins provide custom functionality for a component. The only requirement for\na valid plugin is that it contain an init method that accepts a reference of type Ext.Component. When a component\nis created, if any plugins are available, the component will call the init method on each plugin, passing a\nreference to itself. Each plugin can then call methods or respond to events on the component as needed to provide\nits functionality.

\n\n

Plugins can be added to component by either directly referencing the plugin instance:

\n\n
plugins: [Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 1})],\n
\n\n

By using config object with ptype:

\n\n
plugins: [{ptype: 'cellediting', clicksToEdit: 1}],\n
\n\n

Or with just a ptype:

\n\n
plugins: ['cellediting', 'gridviewdragdrop'],\n
\n\n

See Ext.enums.Plugin for list of all ptypes.

\n"},"renderData":{"!type":"?","!doc":"

The data used by renderTpl in addition to the following property values of the component:

\n\n\n\n\n

See renderSelectors and childEls for usage examples.

\n"},"renderSelectors":{"!type":"?","!doc":"

An object containing properties specifying DomQuery selectors which identify child elements\ncreated by the render process.

\n\n

After the Component's internal structure is rendered according to the renderTpl, this object is iterated through,\nand the found Elements are added as properties to the Component using the renderSelector property name.

\n\n

For example, a Component which renders a title and description into its element:

\n\n
Ext.create('Ext.Component', {\n    renderTo: Ext.getBody(),\n    renderTpl: [\n        '<h1 class=\"title\">{title}</h1>',\n        '<p>{desc}</p>'\n    ],\n    renderData: {\n        title: \"Error\",\n        desc: \"Something went wrong\"\n    },\n    renderSelectors: {\n        titleEl: 'h1.title',\n        descEl: 'p'\n    },\n    listeners: {\n        afterrender: function(cmp){\n            // After rendering the component will have a titleEl and descEl properties\n            cmp.titleEl.setStyle({color: \"red\"});\n        }\n    }\n});\n
\n\n

For a faster, but less flexible, alternative that achieves the same end result (properties for child elements on the\nComponent after render), see childEls and addChildEls.

\n"},"renderTo":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

Specify the id of the element, a DOM element or an existing Element that this component will be rendered into.

\n\n

Notes:

\n\n

Do not use this option if the Component is to be a child item of a Container.\nIt is the responsibility of the Container's\nlayout manager to render and manage its child items.

\n\n

When using this config, a call to render() is not required.

\n\n

See also: render.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"rtl":{"!type":"bool","!doc":"

True to layout this component and its descendants in \"rtl\" (right-to-left) mode.\nCan be explicitly set to false to override a true value inherited from an ancestor.

\n\n

Defined in override Ext.rtl.AbstractComponent.

\n"},"saveDelay":{"!type":"number","!doc":"

A buffer to be applied if many state events are fired within a short period.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"stateEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should trigger this object to\nsave its state. Defaults to none. stateEvents may be any type\nof event supported by this object, including browser or custom events\n(e.g., ['click', 'customerchange']).

\n\n\n

See stateful for an explanation of saving and\nrestoring object state.

\n\n"},"stateId":{"!type":"string","!doc":"

The unique id for this object to use for state management purposes.

\n\n

See stateful for an explanation of saving and restoring state.

\n\n"},"stateful":{"!type":"bool","!doc":"

A flag which causes the object to attempt to restore the state of\ninternal properties from a saved state on startup. The object must have\na stateId for state to be managed.

\n\n

Auto-generated ids are not guaranteed to be stable across page loads and\ncannot be relied upon to save and restore the same state for a object.

\n\n

For state saving to work, the state manager's provider must have been\nset to an implementation of Ext.state.Provider which overrides the\nset and get\nmethods to save and recall name/value pairs. A built-in implementation,\nExt.state.CookieProvider is available.

\n\n

To set the state provider for the current page:

\n\n

Ext.state.Manager.setProvider(new Ext.state.CookieProvider({\n expires: new Date(new Date().getTime()+(10006060247)), //7 days from now\n }));

\n\n

A stateful object attempts to save state when one of the events\nlisted in the stateEvents configuration fires.

\n\n

To save state, a stateful object first serializes its state by\ncalling getState.

\n\n

The Component base class implements getState to save its width and height within the state\nonly if they were initially configured, and have changed from the configured value.

\n\n

The Panel class saves its collapsed state in addition to that.

\n\n

The Grid class saves its column state in addition to its superclass state.

\n\n

If there is more application state to be save, the developer must provide an implementation which\nfirst calls the superclass method to inherit the above behaviour, and then injects new properties\ninto the returned object.

\n\n

The value yielded by getState is passed to Ext.state.Manager.set\nwhich uses the configured Ext.state.Provider to save the object\nkeyed by the stateId.

\n\n

During construction, a stateful object attempts to restore its state by calling\nExt.state.Manager.get passing the stateId

\n\n

The resulting object is passed to applyState*. The default implementation of\napplyState simply copies properties into the object, but a developer may\noverride this to support restoration of more complex application state.

\n\n

You can perform extra processing on state save and restore by attaching\nhandlers to the beforestaterestore, staterestore,\nbeforestatesave and statesave events.

\n"},"style":{"!type":"string|?","!doc":"

A custom style specification to be applied to this component's Element. Should be a valid argument to\nExt.Element.applyStyles.

\n\n
new Ext.panel.Panel({\n    title: 'Some Title',\n    renderTo: Ext.getBody(),\n    width: 400, height: 300,\n    layout: 'form',\n    items: [{\n        xtype: 'textarea',\n        style: {\n            width: '95%',\n            marginBottom: '10px'\n        }\n    },\n    new Ext.button.Button({\n        text: 'Send',\n        minWidth: '100',\n        style: {\n            marginBottom: '10px'\n        }\n    })\n    ]\n});\n
\n"},"tpl":{"!type":"+Ext.XTemplate|+Ext.Template|string|[string]","!doc":"

An Ext.Template, Ext.XTemplate or an array of strings to form an Ext.XTemplate. Used in\nconjunction with the data and tplWriteMode configurations.

\n"},"tplWriteMode":{"!type":"string","!doc":"

The Ext.(X)Template method to use when updating the content area of the Component.\nSee Ext.XTemplate.overwrite for information on default mode.

\n"},"ui":{"!type":"string","!doc":"

A UI style for a component.

\n"},"uiCls":{"!type":"[string]","!doc":"

An array of of classNames which are currently applied to this component.

\n"},"width":{"!type":"number","!doc":"

The width of this component in pixels.

\n"},"xtype":{"!type":"+Ext.enums.Widget","!doc":"

This property provides a shorter alternative to creating objects than using a full\nclass name. Using xtype is the most common way to define component instances,\nespecially in a container. For example, the items in a form containing text fields\ncould be created explicitly like so:

\n\n
 items: [\n     Ext.create('Ext.form.field.Text', {\n         fieldLabel: 'Foo'\n     }),\n     Ext.create('Ext.form.field.Text', {\n         fieldLabel: 'Bar'\n     }),\n     Ext.create('Ext.form.field.Number', {\n         fieldLabel: 'Num'\n     })\n ]\n
\n\n

But by using xtype, the above becomes:

\n\n
 items: [\n     {\n         xtype: 'textfield',\n         fieldLabel: 'Foo'\n     },\n     {\n         xtype: 'textfield',\n         fieldLabel: 'Bar'\n     },\n     {\n         xtype: 'numberfield',\n         fieldLabel: 'Num'\n     }\n ]\n
\n\n

When the xtype is common to many items, Ext.container.AbstractContainer.defaultType\nis another way to specify the xtype for all items that don't have an explicit xtype:

\n\n
 defaultType: 'textfield',\n items: [\n     { fieldLabel: 'Foo' },\n     { fieldLabel: 'Bar' },\n     { fieldLabel: 'Num', xtype: 'numberfield' }\n ]\n
\n\n

Each member of the items array is now just a \"configuration object\". These objects\nare used to create and configure component instances. A configuration object can be\nmanually used to instantiate a component using Ext.widget:

\n\n
 var text1 = Ext.create('Ext.form.field.Text', {\n     fieldLabel: 'Foo'\n });\n\n // or alternatively:\n\n var text1 = Ext.widget({\n     xtype: 'textfield',\n     fieldLabel: 'Foo'\n });\n
\n\n

This conversion of configuration objects into instantiated components is done when\na container is created as part of its {Ext.container.AbstractContainer.initComponent}\nprocess. As part of the same process, the items array is converted from its raw\narray form into a Ext.util.MixedCollection instance.

\n\n

You can define your own xtype on a custom component by specifying\nthe xtype property in Ext.define. For example:

\n\n
Ext.define('MyApp.PressMeButton', {\n    extend: 'Ext.button.Button',\n    xtype: 'pressmebutton',\n    text: 'Press Me'\n});\n
\n\n

Care should be taken when naming an xtype in a custom component because there is\na single, shared scope for all xtypes. Third part components should consider using\na prefix to avoid collisions.

\n\n
Ext.define('Foo.form.CoolButton', {\n    extend: 'Ext.button.Button',\n    xtype: 'ux-coolbutton',\n    text: 'Cool!'\n});\n
\n\n

See Ext.enums.Widget for list of all available xtypes.

\n"}},"Ext_AbstractManager_cfg":{"!proto":"Ext_Base_cfg"},"Ext_AbstractPlugin_cfg":{"!proto":"Ext_Base_cfg","pluginId":{"!type":"string","!doc":"

A name for the plugin that can be set at creation time to then retrieve the plugin\nthrough getPlugin method. For example:

\n\n
var grid = Ext.create('Ext.grid.Panel', {\n    plugins: [{\n        ptype: 'cellediting',\n        clicksToEdit: 2,\n        pluginId: 'cellplugin'\n    }]\n});\n\n// later on:\nvar plugin = grid.getPlugin('cellplugin');\n
\n"}},"Ext_Action_cfg":{"!proto":"Ext_Base_cfg","disabled":{"!type":"bool","!doc":"

True to disable all components configured by this Action, false to enable them.

\n"},"handler":{"!type":"fn()","!doc":"

The function that will be invoked by each component tied to this Action\nwhen the component's primary event is triggered.

\n"},"hidden":{"!type":"bool","!doc":"

True to hide all components configured by this Action, false to show them.

\n"},"iconCls":{"!type":"string","!doc":"

The CSS class selector that specifies a background image to be used as the header icon for\nall components configured by this Action.

\n\n

An example of specifying a custom icon class would be something like:

\n\n
// specify the property in the config for the class:\n     ...\n     iconCls: 'do-something'\n\n// css class that specifies background image to be used as the icon image:\n.do-something { background-image: url(../images/my-icon.gif) 0 6px no-repeat !important; }\n
\n"},"itemId":{"!type":"string","!doc":"

See Ext.Component.itemId.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler is executed.\nDefaults to the browser window.

\n"},"text":{"!type":"string","!doc":"

The text to set for all components configured by this Action.

\n"}},"Ext_Ajax_cfg":{"!proto":"Ext_data_Connection_cfg"},"Ext_Component_cfg":{"!proto":"Ext_AbstractComponent_cfg","autoScroll":{"!type":"bool","!doc":"

true to use overflow:'auto' on the components layout element and show scroll bars automatically when necessary,\nfalse to clip any overflowing content.\nThis should not be combined with overflowX or overflowY.

\n"},"columnWidth":{"!type":"number|string","!doc":"

Defines the column width inside column layout.

\n\n

Can be specified as a number or as a percentage.

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain this Components within its containing element, false to allow it to fall outside of its containing\nelement. By default this Component will be rendered to document.body. To render and constrain this Component within\nanother element specify renderTo.

\n"},"constrainTo":{"!type":"+Ext.util.Region|+Ext.Element","!doc":"

A Region (or an element from which a Region measurement will be read) which is used\nto constrain the component. Only applies when the component is floating.

\n"},"constraintInsets":{"!type":"?|string","!doc":"

An object or a string (in TRBL order) specifying insets from the configured constrain region\nwithin which this component must be constrained when positioning or sizing.\nexample:

\n\n

constraintInsets: '10 10 10 10' // Constrain with 10px insets from parent

\n"},"defaultAlign":{"!type":"string","!doc":"

The default Ext.Element#getAlignToXY anchor position value for this menu\nrelative to its element of origin. Used in conjunction with showBy.

\n"},"draggable":{"!type":"bool|?","!doc":"

Specify as true to make a floating Component draggable using the Component's encapsulating element as\nthe drag handle.

\n\n

This may also be specified as a config object for the ComponentDragger which is\ninstantiated to perform dragging.

\n\n

For example to create a Component which may only be dragged around using a certain internal element as the drag\nhandle, use the delegate option:

\n\n
new Ext.Component({\n    constrain: true,\n    floating: true,\n    style: {\n        backgroundColor: '#fff',\n        border: '1px solid black'\n    },\n    html: '<h1 style=\"cursor:move\">The title</h1><p>The content</p>',\n    draggable: {\n        delegate: 'h1'\n    }\n}).show();\n
\n"},"fixed":{"!type":"bool","!doc":"

Configure as true to have this Component fixed at its X, Y coordinates in the browser viewport, immune\nto scrolling the document.

\n\n

Only in browsers that support position:fixed

\n\n

IE6 and IE7, 8 and 9 quirks do not support position: fixed

\n"},"floating":{"!type":"bool","!doc":"

Specify as true to float the Component outside of the document flow using CSS absolute positioning.

\n\n

Components such as Windows and Menus are floating by default.

\n\n

Floating Components that are programatically rendered will register\nthemselves with the global ZIndexManager

\n\n

Floating Components as child items of a Container

\n\n

A floating Component may be used as a child item of a Container. This just allows the floating Component to seek\na ZIndexManager by examining the ownerCt chain.

\n\n

When configured as floating, Components acquire, at render time, a ZIndexManager which\nmanages a stack of related floating Components. The ZIndexManager brings a single floating Component to the top\nof its stack when the Component's toFront method is called.

\n\n

The ZIndexManager is found by traversing up the ownerCt chain to find an ancestor which itself is\nfloating. This is so that descendant floating Components of floating Containers (Such as a ComboBox dropdown\nwithin a Window) can have its zIndex managed relative to any siblings, but always above that floating\nancestor Container.

\n\n

If no floating ancestor is found, a floating Component registers itself with the default ZIndexManager.

\n\n

Floating components do not participate in the Container's layout. Because of this, they are not rendered until\nyou explicitly show them.

\n\n

After rendering, the ownerCt reference is deleted, and the floatParent property is set to the found\nfloating ancestor Container. If no floating ancestor Container was found the floatParent property will\nnot be set.

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Specifies whether the floated component should be automatically focused when\nit is brought to the front.

\n"},"formBind":{"!type":"bool","!doc":"

When inside FormPanel, any component configured with formBind: true will\nbe enabled/disabled depending on the validity state of the form.\nSee Ext.form.Panel for more information and example.

\n"},"overflowX":{"!type":"string","!doc":"

Possible values are:\n * 'auto' to enable automatic horizontal scrollbar (overflow-x: 'auto').\n * 'scroll' to always enable horizontal scrollbar (overflow-x: 'scroll').\nThe default is overflow-x: 'hidden'. This should not be combined with autoScroll.

\n"},"overflowY":{"!type":"string","!doc":"

Possible values are:\n * 'auto' to enable automatic vertical scrollbar (overflow-y: 'auto').\n * 'scroll' to always enable vertical scrollbar (overflow-y: 'scroll').\nThe default is overflow-y: 'hidden'. This should not be combined with autoScroll.

\n"},"region":{"!type":"string|string|string|string|string","!doc":"

Defines the region inside border layout.

\n\n

Possible values:

\n\n\n\n"},"resizable":{"!type":"bool|?","!doc":"

Specify as true to apply a Resizer to this Component after rendering.

\n\n

May also be specified as a config object to be passed to the constructor of Resizer\nto override any defaults. By default the Component passes its minimum and maximum size, and uses\nExt.resizer.Resizer.dynamic: false

\n"},"resizeHandles":{"!type":"string","!doc":"

A valid Ext.resizer.Resizer handles config string. Only applies when resizable = true.

\n"},"shadow":{"!type":"string|bool","!doc":"

Specifies whether the floating component should be given a shadow. Set to true to automatically create an\nExt.Shadow, or a string indicating the shadow's display Ext.Shadow.mode. Set to false to\ndisable the shadow.

\n"},"shadowOffset":{"!type":"number","!doc":"

Number of pixels to offset the shadow.

\n"},"toFrontOnShow":{"!type":"bool","!doc":"

True to automatically call toFront when the show method is called on an already visible,\nfloating component.

\n"}},"Ext_ComponentLoader_cfg":{"!proto":"Ext_ElementLoader_cfg","loadMask":{"!type":"bool|?","!doc":"

True or a Ext.LoadMask configuration to enable masking during loading.

\n"},"renderer":{"!type":"string|fn()","!doc":"

The type of content that is to be loaded into, which can be one of 3 types:

\n\n\n\n\n

Alternatively, you can pass a function which is called with the following parameters.

\n\n\n\n\n

The function must return false is loading is not successful. Below is a sample of using a custom renderer:

\n\n
new Ext.Component({\n    loader: {\n        url: 'myPage.php',\n        renderer: function(loader, response, active) {\n            var text = response.responseText;\n            loader.getTarget().update('The response is ' + text);\n            return true;\n        }\n    }\n});\n
\n"},"scripts":{"!type":"bool","!doc":"

True to parse any inline script tags in the response. This only used when using the html\nrenderer.

\n"},"target":{"!type":"+Ext.Component|string","!doc":"

The target Ext.Component for the loader.\nIf a string is passed it will be looked up via the id.

\n"}},"Ext_ComponentManager_cfg":{"!proto":"Ext_AbstractManager_cfg"},"Ext_Editor_cfg":{"!proto":"Ext_container_Container_cfg","alignment":{"!type":"string","!doc":"

The position to align to (see Ext.util.Positionable.alignTo for more details).

\n"},"allowBlur":{"!type":"bool","!doc":"

True to complete the editing process if in edit mode when the\nfield is blurred.

\n"},"autoSize":{"!type":"bool|?","!doc":"

True for the editor to automatically adopt the size of the underlying field. Otherwise, an object\ncan be passed to indicate where to get each dimension. The available properties are 'boundEl' and\n'field'. If a dimension is not specified, it will use the underlying height/width specified on\nthe editor object.\nExamples:

\n\n
autoSize: true // The editor will be sized to the height/width of the field\n\nheight: 21,\nautoSize: {\n    width: 'boundEl' // The width will be determined by the width of the boundEl, the height from the editor (21)\n}\n\nautoSize: {\n    width: 'field', // Width from the field\n    height: 'boundEl' // Height from the boundEl\n}\n
\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"cancelOnEsc":{"!type":"bool","!doc":"

True to cancel the edit when the escape key is pressed.

\n"},"completeOnEnter":{"!type":"bool","!doc":"

True to complete the edit when the enter key is pressed.

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the editor to the viewport

\n"},"field":{"!type":"+Ext.form.field.Field","!doc":"

The Field object (or descendant) or config object for field

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Do not participate in the ZIndexManager's focus switching operations.\nWhen an editor is hidden, the ZIndexManager will not automatically activate\nthe last visible floater on the stack.

\n"},"hidden":{"!type":"bool","!doc":"

private overrides

\n"},"hideEl":{"!type":"bool","!doc":"

False to keep the bound element visible while the editor is displayed

\n"},"ignoreNoChange":{"!type":"bool","!doc":"

True to skip the edit completion process (no save, no events fired) if the user completes an edit and\nthe value has not changed. Applies only to string values - edits for other data types\nwill never be ignored.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

End Definitions

\n"},"offsets":{"!type":"[number]","!doc":"

The offsets to use when aligning (see Ext.util.Positionable.alignTo for more details.

\n"},"parentEl":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

An element to render to.

\n"},"revertInvalid":{"!type":"bool","!doc":"

True to automatically revert the field value and cancel the edit when the user completes an edit and the field\nvalidation fails

\n"},"shadow":{"!type":"bool|string","!doc":"

\"sides\" for sides/bottom only, \"frame\" for 4-way shadow, and \"drop\" for bottom-right shadow.

\n"},"swallowKeys":{"!type":"bool","!doc":"

Handle the keydown/keypress events so they don't propagate

\n"},"updateEl":{"!type":"bool","!doc":"

True to update the innerHTML of the bound element when the update completes

\n"},"value":{"!type":"?","!doc":"

The data value of the underlying field

\n"}},"Ext_ElementLoader_cfg":{"!proto":"Ext_Base_cfg","ajaxOptions":{"!type":"?","!doc":"

Any additional options to be passed to the request, for example timeout or headers.

\n"},"autoLoad":{"!type":"bool|?","!doc":"

True to have the loader make a request as soon as it is created.\nThis argument can also be a set of options that will be passed to load is called.

\n"},"baseParams":{"!type":"?","!doc":"

Params that will be attached to every request. These parameters\nwill not be overridden by any params in the load options.

\n"},"callback":{"!type":"fn()","!doc":"

A function to be called when a load request finishes.\nWill be called with the following config parameters:

\n\n\n\n"},"failure":{"!type":"fn()","!doc":"

A function to be called when a load request fails.\nWill be called with the following config parameters:

\n\n\n\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"loadMask":{"!type":"bool|string","!doc":"

True or a string to show when the element is loading.

\n"},"params":{"!type":"?","!doc":"

Any params to be attached to the Ajax request. These parameters will\nbe overridden by any params in the load options.

\n"},"renderer":{"!type":"fn()","!doc":"

A custom function to render the content to the element. The function should\nreturn false if the renderer could not be applied. The passed parameters are:

\n\n\n\n"},"scope":{"!type":"?","!doc":"

The scope to execute the success and failure functions in.

\n"},"scripts":{"!type":"bool","!doc":"

True to parse any inline script tags in the response.

\n"},"success":{"!type":"fn()","!doc":"

A function to be called when a load request is successful.\nWill be called with the following config parameters:

\n\n\n\n"},"target":{"!type":"+HTMLElement|+Ext.Element|string","!doc":"

The target element for the loader. It can be the DOM element, the id or an Ext.Element.

\n"},"url":{"!type":"string","!doc":"

The url to retrieve the content from.

\n"}},"Ext_Error_cfg":{"!proto":"Error_cfg"},"Ext_FocusManager_cfg":{"!proto":"Ext_Base_cfg","listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"}},"Ext_Img_cfg":{"!proto":"Ext_Component_cfg","alt":{"!type":"string","!doc":"

The descriptive text for non-visual UI description.

\n"},"autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to serve as the image. If this option is used\nThe image will be rendered using a div with innerHTML set to the html entity\nfor the given character code. The default font-family for glyphs can be set\nglobally using Ext.setGlyphFontFamily(). Alternatively,\nthis config option accepts a string with the charCode and font-family separated by\nthe @ symbol. For example '65@My Font Family'.

\n"},"imgCls":{"!type":"string","!doc":"

Optional CSS classes to add to the img element.

\n"},"src":{"!type":"string","!doc":"

The image src.

\n"},"title":{"!type":"string","!doc":"

Specifies addtional information about the image.

\n"}},"Ext_LoadMask_cfg":{"!proto":"Ext_Component_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain this Components within its containing element, false to allow it to fall outside of its containing\nelement. By default this Component will be rendered to document.body. To render and constrain this Component within\nanother element specify renderTo.

\n"},"fixed":{"!type":"bool","!doc":"

Configure as true to have this Component fixed at its X, Y coordinates in the browser viewport, immune\nto scrolling the document.

\n\n

Only in browsers that support position:fixed

\n\n

IE6 and IE7, 8 and 9 quirks do not support position: fixed

\n"},"floating":{"!type":"bool","!doc":"

Obviously, it's floating.

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Masks are not focusable

\n"},"maskCls":{"!type":"string","!doc":"

The CSS class to apply to the mask element

\n"},"msg":{"!type":"string","!doc":"

The text to display in a centered loading message box.

\n"},"msgCls":{"!type":"string","!doc":"

The CSS class to apply to the loading message element.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shadow":{"!type":"string|bool","!doc":"

Specifies whether the floating component should be given a shadow. Set to true to automatically create an\nExt.Shadow, or a string indicating the shadow's display Ext.Shadow.mode. Set to false to\ndisable the shadow.

\n"},"shadowOffset":{"!type":"number","!doc":"

Number of pixels to offset the shadow.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

Optional Store to which the mask is bound. The mask is displayed when a load request is issued, and\nhidden on either load success, or load fail.

\n"},"target":{"!type":"+Ext.Component","!doc":"

The Component you wish to mask. The the mask will be automatically sized\nupon Component resize, and the message box will be kept centered.

\n"},"useMsg":{"!type":"bool","!doc":"

Whether or not to use a loading message class or simply mask the bound element.

\n"},"useTargetEl":{"!type":"bool","!doc":"

True to mask the targetEl of the bound Component. By default,\nthe el will be masked.

\n"}},"Ext_ModelManager_cfg":{"!proto":"Ext_AbstractManager_cfg"},"Ext_PluginManager_cfg":{"!proto":"Ext_AbstractManager_cfg"},"Ext_ProgressBar_cfg":{"!proto":"Ext_Component_cfg","animate":{"!type":"bool|?","!doc":"

True to animate the progress bar during transitions, or an animation configuration\n(see the animate method for details).

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to the progress bar's wrapper element.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"id":{"!type":"string","!doc":"

The progress bar element's id (defaults to an auto-generated id)

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"text":{"!type":"string","!doc":"

The text shown in the progress bar.

\n"},"textEl":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The element to render the progress text to (defaults to the progress bar's internal text element)

\n"},"value":{"!type":"number","!doc":"

A floating point value between 0 and 1 (e.g., .5)

\n"}},"Ext_Shadow_cfg":{"!proto":"Ext_Base_cfg","mode":{"!type":"string","!doc":"

The shadow display mode. Supports the following options:

\n\n\n\n"},"offset":{"!type":"number","!doc":"

The number of pixels to offset the shadow from the element

\n"}},"Ext_Template_cfg":{"!proto":"Ext_Base_cfg","compiled":{"!type":"bool","!doc":"

True to immediately compile the template. Defaults to false.

\n"},"disableFormats":{"!type":"bool","!doc":"

True to disable format functions in the template. If the template doesn't contain\nformat functions, setting disableFormats to true will reduce apply time. Defaults to false.

\n"}},"Ext_XTemplate_cfg":{"!proto":"Ext_Template_cfg","definitions":{"!type":"string|[?]","!doc":"

Optional. A statement, or array of statements which set up vars which may then\nbe accessed within the scope of the generated function.

\n"}},"Ext_XTemplateCompiler_cfg":{"!proto":"Ext_XTemplateParser_cfg"},"Ext_XTemplateParser_cfg":{"!proto":"Ext_Base_cfg"},"Ext_app_Application_cfg":{"!proto":"Ext_app_Controller_cfg","appFolder":{"!type":"string","!doc":"

The path to the directory which contains all application's classes.\nThis path will be registered via Ext.Loader.setPath for the namespace specified\nin the name config.

\n"},"appProperty":{"!type":"string","!doc":"

The name of a property to be assigned to the main namespace to gain a reference to\nthis application. Can be set to an empty value to prevent the reference from\nbeing created

\n\n
Ext.application({\n    name: 'MyApp',\n    appProperty: 'myProp',\n\n    launch: function() {\n        console.log(MyApp.myProp === this);\n    }\n});\n
\n"},"autoCreateViewport":{"!type":"bool","!doc":"

True to automatically load and instantiate AppName.view.Viewport before firing the launch\nfunction.

\n"},"controllers":{"!type":"string|[string]","!doc":"

Names of controllers that the app uses.

\n"},"enableQuickTips":{"!type":"bool","!doc":"

True to automatically set up Ext.tip.QuickTip support.

\n"},"name":{"!type":"string","!doc":"

The name of your application. This will also be the namespace for your views, controllers\nmodels and stores. Don't use spaces or special characters in the name. Application name\nis mandatory.

\n"},"namespaces":{"!type":"string|[string]","!doc":"

The list of namespace prefixes used in the application to resolve dependencies\nlike Views and Stores:

\n\n
 Ext.application({\n     name: 'MyApp',\n\n     namespaces: ['Common.code'],\n\n     controllers: [ 'Common.code.controller.Foo', 'Bar' ]\n });\n\n Ext.define('Common.code.controller.Foo', {\n     extend: 'Ext.app.Controller',\n\n     models: ['Foo'],    // Loads Common.code.model.Foo\n     views:  ['Bar']     // Loads Common.code.view.Bar\n });\n\n Ext.define('MyApp.controller.Bar', {\n     extend: 'Ext.app.Controller',\n\n     models: ['Foo'],    // Loads MyApp.model.Foo\n     views:  ['Bar']     // Loads MyApp.view.Bar\n });\n
\n\n

You don't need to include main namespace (MyApp), it will be added to the list\nautomatically.

\n"},"paths":{"!type":"?","!doc":"

Additional load paths to add to Ext.Loader.\nSee Ext.Loader.paths config for more details.

\n"},"scope":{"!type":"?","!doc":"

The scope to execute the launch function in. Defaults to the Application instance.

\n"}},"Ext_app_Controller_cfg":{"!proto":"Ext_Base_cfg","id":{"!type":"string","!doc":"

The id of this controller. You can use this id when dispatching.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"models":{"!type":"string|[string]","!doc":"

Array of models to require from AppName.model namespace. For example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     models: ['User', 'Vehicle']\n });\n
\n\n

This is equivalent of:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     requires: ['MyApp.model.User', 'MyApp.model.Vehicle'],\n\n     getUserModel: function() {\n         return this.getModel(\"User\");\n     },\n\n     getVehicleModel: function() {\n         return this.getModel(\"Vehicle\");\n     }\n });\n
\n"},"refs":{"!type":"[?]","!doc":"

Array of configs to build up references to views on page. For example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n\n     refs: [{\n         ref: 'list',\n         selector: 'grid'\n     }],\n });\n
\n\n

This will add method getList to the controller which will internally use\nExt.ComponentQuery to reference the grid component on page.

\n\n

The following fields can be used in ref definition:

\n\n\n\n"},"stores":{"!type":"string|[string]","!doc":"

Array of stores to require from AppName.store namespace and to generate getter methods for.\nFor example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     stores: ['Users', 'Vehicles']\n });\n
\n\n

This is equivalent to:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n\n     requires: [\n         'MyApp.store.Users',\n         'MyApp.store.Vehicles'\n     ]\n\n     getUsersStore: function() {\n         return this.getStore(\"Users\");\n     },\n\n     getVehiclesStore: function() {\n         return this.getStore(\"Vehicles\");\n     }\n });\n
\n"},"views":{"!type":"string|[string]","!doc":"

Array of views to require from AppName.view namespace and to generate getter methods for.\nFor example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     views: ['List', 'Detail']\n });\n
\n\n

This is equivalent of:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     requires: ['MyApp.view.List', 'MyApp.view.Detail'],\n\n     getListView: function() {\n         return this.getView(\"List\");\n     },\n\n     getDetailView: function() {\n         return this.getView(\"Detail\");\n     }\n });\n
\n"}},"Ext_button_Button_cfg":{"!proto":"Ext_Component_cfg","allowDepress":{"!type":"bool","!doc":"

False to not allow a pressed Button to be depressed. Only valid when enableToggle is true.

\n"},"arrowAlign":{"!type":"string","!doc":"

The side of the Button box to render the arrow if the button has an associated menu. Two\nvalues are allowed:

\n\n\n\n"},"arrowCls":{"!type":"string","!doc":"

The className used for the inner arrow element if the button has a menu.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to add to all buttons.

\n"},"baseParams":{"!type":"?","!doc":"

An object literal of parameters to pass to the url when the href property is specified.

\n"},"clickEvent":{"!type":"string","!doc":"

The DOM event that will fire the handler of the button. This can be any valid event name (dblclick, contextmenu).

\n"},"cls":{"!type":"string","!doc":"

A CSS class string to apply to the button's main element.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"destroyMenu":{"!type":"bool","!doc":"

Whether or not to destroy any associated menu when this button is destroyed. The menu\nwill be destroyed unless this is explicitly set to false.

\n"},"disabled":{"!type":"bool","!doc":"

True to start disabled.

\n"},"enableToggle":{"!type":"bool","!doc":"

True to enable pressed/not pressed toggling. If a toggleGroup is specified, this\noption will be set to true.

\n"},"focusCls":{"!type":"string","!doc":"

The CSS class to add to a button when it is in the focussed state.

\n"},"frame":{"!type":"bool","!doc":"

Specify as true to have the Component inject framing elements within the Component at render time to provide a\ngraphical rounded frame around the Component content.

\n\n

This is only necessary when running on outdated, or non standard-compliant browsers such as Microsoft's Internet\nExplorer prior to version 9 which do not support rounded corners natively.

\n\n

The extra space taken up by this framing is available from the read only property frameSize.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for this button. The default\nfont-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"handleMouseEvents":{"!type":"bool","!doc":"

False to disable visual cues on mouseover, mouseout and mousedown.

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the button is clicked (can be used instead of click event).

\n"},"hidden":{"!type":"bool","!doc":"

True to start hidden.

\n"},"href":{"!type":"string","!doc":"

The URL to open when the button is clicked. Specifying this config causes the Button to be\nrendered with the specified URL as the href attribute of its <a> Element.

\n\n

This is better than specifying a click handler of

\n\n
function() { window.location = \"http://www.sencha.com\" }\n
\n\n

because the UI will provide meaningful hints to the user as to what to expect upon clicking\nthe button, and will also allow the user to open in a new tab or window, bookmark or drag the URL, or directly save\nthe URL stream to disk.

\n\n

See also the hrefTarget config.

\n"},"hrefTarget":{"!type":"string","!doc":"

The target attribute to use for the underlying anchor. Only used if the href\nproperty is specified.

\n"},"icon":{"!type":"string","!doc":"

The path to an image to display in the button.

\n"},"iconAlign":{"!type":"string","!doc":"

The side of the Button box to render the icon. Four values are allowed:

\n\n\n\n"},"iconCls":{"!type":"string","!doc":"

A css class which sets a background image to be used as the icon for this button.

\n"},"menu":{"!type":"+Ext.menu.Menu|string|?","!doc":"

Standard menu attribute consisting of a reference to a menu object, a menu id or a menu config blob.

\n"},"menuActiveCls":{"!type":"string","!doc":"

The CSS class to add to a button when it's menu is active.

\n"},"menuAlign":{"!type":"string","!doc":"

The position to align the menu to (see Ext.util.Positionable.alignTo for more details).

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width for this button (used to give a set of buttons a common width).\nSee also Ext.panel.Panel.minButtonWidth.

\n"},"overCls":{"!type":"string","!doc":"

The CSS class to add to a button when it is in the over (hovered) state.

\n"},"overflowText":{"!type":"string","!doc":"

If used in a Toolbar, the text to be used if this item is shown in the overflow menu.\nSee also Ext.toolbar.Item.overflowText.

\n"},"params":{"!type":"?","!doc":"

An object literal of parameters to pass to the url when the href property is specified. Any params\noverride baseParams. New params can be set using the setParams method.

\n"},"pressed":{"!type":"bool","!doc":"

True to start pressed (only if enableToggle = true)

\n"},"pressedCls":{"!type":"string","!doc":"

The CSS class to add to a button when it is in the pressed state.

\n"},"preventDefault":{"!type":"bool","!doc":"

True to prevent the default action when the clickEvent is processed.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

We have to keep \"unselectable\" attribute on all elements because it's not inheritable.\nWithout it, clicking anywhere on a button disrupts current selection and cursor position\nin HtmlEditor.

\n"},"repeat":{"!type":"bool|?","!doc":"

True to repeat fire the click event while the mouse is down. This can also be a\nClickRepeater config object.

\n"},"scale":{"!type":"string|string|string","!doc":"

The size of the Button. Three values are allowed:

\n\n\n\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler and toggleHandler is executed.\nDefaults to this Button.

\n"},"showEmptyMenu":{"!type":"bool","!doc":"

True to force an attached menu with no items to be shown when clicking\nthis button. By default, the menu will not show if it is empty.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"tabIndex":{"!type":"number","!doc":"

Set a DOM tabIndex for this button.

\n"},"text":{"!type":"string","!doc":"

The button text to be used as innerHTML (html tags are accepted).

\n"},"textAlign":{"!type":"string","!doc":"

The text alignment for this button (center, left, right).

\n"},"toggleGroup":{"!type":"string","!doc":"

The group this toggle button is a member of (only 1 per group can be pressed). If a toggleGroup\nis specified, the enableToggle configuration will automatically be set to true.

\n"},"toggleHandler":{"!type":"fn()","!doc":"

Function called when a Button with enableToggle set to true is clicked.

\n"},"tooltip":{"!type":"string|?","!doc":"

The tooltip for the button - can be a string to be used as innerHTML (html tags are accepted) or\nQuickTips config object.

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' for QuickTips or 'title' for title attribute.

\n"}},"Ext_button_Cycle_cfg":{"!proto":"Ext_button_Split_cfg","changeHandler":{"!type":"fn()","!doc":"

A callback function that will be invoked each time the active menu item in the button's menu has changed. If this\ncallback is not supplied, the SplitButton will instead fire the change event on active item change. The\nchangeHandler function will be called with the following argument list: (SplitButton this, Ext.menu.CheckItem\nitem)

\n"},"forceGlyph":{"!type":"number|string","!doc":"

The charCode to be used as the static icon for this button. This icon will always be\ndisplayed regardless of which item is selected in the dropdown list. This override\nthe default behavior of changing the button's icon to match the selected item's icon\non change. This property expects a format consistent with that of glyph

\n"},"forceIcon":{"!type":"string","!doc":"

A css class which sets an image to be used as the static icon for this button. This icon will always be displayed\nregardless of which item is selected in the dropdown list. This overrides the default behavior of changing the\nbutton's icon to match the selected item's icon on change.

\n"},"items":{"!type":"[?]","!doc":"

An array of Ext.menu.CheckItem config objects to be used when creating the button's menu items (e.g.,\n{text:'Foo', iconCls:'foo-icon'})

\n"},"prependText":{"!type":"string","!doc":"

A static string to prepend before the active item's text when displayed as the button's text (only applies when\nshowText = true).

\n"},"showText":{"!type":"bool","!doc":"

True to display the active item's text as the button text. The Button will show its\nconfigured text if this config is omitted.

\n"}},"Ext_button_Split_cfg":{"!proto":"Ext_button_Button_cfg","arrowCls":{"!type":"string","!doc":"

The className used for the inner arrow element if the button has a menu.

\n"},"arrowHandler":{"!type":"fn()","!doc":"

A function called when the arrow button is clicked (can be used instead of click event)

\n"},"arrowTooltip":{"!type":"string","!doc":"

The title attribute of the arrow.

\n"}},"Ext_chart_Callout_cfg":{"!proto":"Ext_Base_cfg"},"Ext_chart_Chart_cfg":{"!proto":"Ext_draw_Component_cfg","animate":{"!type":"bool|?","!doc":"

True for the default animation (easing: 'ease' and duration: 500) or a standard animation config\nobject to be used for default chart animations. Defaults to false.

\n"},"axes":{"!type":"[+Ext.chart.axis.Axis]","!doc":"

Array of Axis instances or config objects. For example:

\n\n
axes: [{\n    type: 'Numeric',\n    position: 'left',\n    fields: ['data1'],\n    title: 'Number of Hits',\n    minimum: 0,\n    //one minor tick between two major ticks\n    minorTickSteps: 1\n}, {\n    type: 'Category',\n    position: 'bottom',\n    fields: ['name'],\n    title: 'Month of the Year'\n}]\n
\n"},"background":{"!type":"?|bool","!doc":"

The chart background. This can be a gradient object, image, or color. Defaults to false for no\nbackground. For example, if background were to be a color we could set the object as

\n\n
background: {\n    //color string\n    fill: '#ccc'\n}\n
\n\n

You can specify an image by using:

\n\n
background: {\n    image: 'http://path.to.image/'\n}\n
\n\n

Also you can specify a gradient by using the gradient object syntax:

\n\n
background: {\n    gradient: {\n        id: 'gradientId',\n        angle: 45,\n        stops: {\n            0: {\n                color: '#555'\n            }\n            100: {\n                color: '#ddd'\n            }\n        }\n    }\n}\n
\n"},"gradients":{"!type":"[?]","!doc":"

Define a set of gradients that can be used as fill property in sprites. The gradients array is an\narray of objects with the following properties:

\n\n\n\n\n

For example:

\n\n
gradients: [{\n    id: 'gradientId',\n    angle: 45,\n    stops: {\n        0: {\n            color: '#555'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}, {\n    id: 'gradientId2',\n    angle: 0,\n    stops: {\n        0: {\n            color: '#590'\n        },\n        20: {\n            color: '#599'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}]\n
\n\n

Then the sprites can use gradientId and gradientId2 by setting the fill attributes to those ids, for example:

\n\n
sprite.setAttributes({\n    fill: 'url(#gradientId)'\n}, true);\n
\n"},"insetPadding":{"!type":"number","!doc":"

The amount of inset padding in pixels for the chart. Defaults to 10.

\n"},"legend":{"!type":"bool|?","!doc":"

True for the default legend display or a legend config object. Defaults to false.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"mask":{"!type":"bool|string","!doc":"

Enables selecting a region on chart. True to enable any selection,\n'horizontal' or 'vertical' to restrict the selection to X or Y axis.

\n\n

The mask in itself will do nothing but fire 'select' event.\nSee Ext.chart.Mask for example.

\n"},"series":{"!type":"[+Ext.chart.series.Series]","!doc":"

Array of Series instances or config objects. For example:

\n\n
series: [{\n    type: 'column',\n    axis: 'left',\n    listeners: {\n        'afterrender': function() {\n            console('afterrender');\n        }\n    },\n    xField: 'category',\n    yField: 'data1'\n}]\n
\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The store that supplies data to this chart.

\n"},"theme":{"!type":"string","!doc":"

The name of the theme to be used. A theme defines the colors and other visual displays of tick marks\non axis, text, title text, line colors, marker colors and styles, etc. Possible theme values are 'Base', 'Green',\n'Sky', 'Red', 'Purple', 'Blue', 'Yellow' and also six category themes 'Category1' to 'Category6'. Default value\nis 'Base'.

\n"},"viewBox":{"!type":"bool","!doc":"

Turn on view box support which will scale and position items in the draw component to fit to the component while\nmaintaining aspect ratio. Note that this scaling can override other sizing settings on your items.

\n"}},"Ext_chart_Highlight_cfg":{"!proto":"Ext_Base_cfg","highlight":{"!type":"bool|?","!doc":"

Set to true to enable highlighting using the default highlight attributes.

\n\n

Can also be an object with style properties (i.e fill, stroke, stroke-width, radius) which are may override the default highlight attributes.

\n"}},"Ext_chart_Label_cfg":{"!proto":"Ext_Base_cfg","label":{"!type":"?","!doc":"

Object with the following properties:

\n"}},"Ext_chart_Legend_cfg":{"!proto":"Ext_Base_cfg","boxFill":{"!type":"string","!doc":"

Fill style for the legend box

\n"},"boxStroke":{"!type":"string","!doc":"

Style of the stroke for the legend box

\n"},"boxStrokeWidth":{"!type":"string","!doc":"

Width of the stroke for the legend box

\n"},"boxZIndex":{"!type":"number","!doc":"

Sets the z-index for the legend. Defaults to 100.

\n"},"itemSpacing":{"!type":"number","!doc":"

Amount of space between legend items

\n"},"labelColor":{"!type":"string","!doc":"

Color to be used for the legend labels, eg '#000'

\n"},"labelFont":{"!type":"string","!doc":"

Font to be used for the legend labels, eg '12px Helvetica'

\n"},"padding":{"!type":"number","!doc":"

Amount of padding between the legend box's border and its items

\n"},"position":{"!type":"string","!doc":"

The position of the legend in relation to the chart. One of: \"top\",\n\"bottom\", \"left\", \"right\", or \"float\". If set to \"float\", then the legend\nbox will be positioned at the point denoted by the x and y parameters.

\n"},"update":{"!type":"bool","!doc":"

If set to true the legend will be refreshed when the chart is.\nThis is useful to update the legend items if series are\nadded/removed/updated from the chart. Default is true.

\n"},"visible":{"!type":"bool","!doc":"

Whether or not the legend should be displayed.

\n"},"x":{"!type":"number","!doc":"

X-position of the legend box. Used directly if position is set to \"float\", otherwise\nit will be calculated dynamically.

\n"},"y":{"!type":"number","!doc":"

Y-position of the legend box. Used directly if position is set to \"float\", otherwise\nit will be calculated dynamically.

\n"}},"Ext_chart_LegendItem_cfg":{"!proto":"Ext_draw_CompositeSprite_cfg"},"Ext_chart_Mask_cfg":{"!proto":"Ext_Base_cfg","mask":{"!type":"bool|string","!doc":"

Enables selecting a region on chart. True to enable any selection,\n'horizontal' or 'vertical' to restrict the selection to X or Y axis.

\n\n

The mask in itself will do nothing but fire 'select' event.\nSee Ext.chart.Mask for example.

\n"}},"Ext_chart_MaskLayer_cfg":{"!proto":"Ext_Component_cfg"},"Ext_chart_Tip_cfg":{"!proto":"Ext_Base_cfg"},"Ext_chart_TipSurface_cfg":{"!proto":"Ext_draw_Component_cfg"},"Ext_chart_axis_Abstract_cfg":{"!proto":"Ext_Base_cfg","fields":{"!type":"[string]","!doc":"

The fields of model to bind to this axis.

\n\n

For example if you have a data set of lap times per car, each having the fields:\n'carName', 'avgSpeed', 'maxSpeed'. Then you might want to show the data on chart\nwith ['carName'] on Name axis and ['avgSpeed', 'maxSpeed'] on Speed axis.

\n"},"label":{"!type":"+Ext.chart.Label","!doc":"

The config for chart label.

\n"}},"Ext_chart_axis_Axis_cfg":{"!proto":"Ext_chart_axis_Abstract_cfg","adjustEnd":{"!type":"bool","!doc":"

Whether to adjust the label at the end of the axis.

\n"},"dashSize":{"!type":"number","!doc":"

The size of the dash marker. Default's 3.

\n"},"grid":{"!type":"bool|?","!doc":"

The grid configuration enables you to set a background grid for an axis.\nIf set to true on a vertical axis, vertical lines will be drawn.\nIf set to true on a horizontal axis, horizontal lines will be drawn.\nIf both are set, a proper grid with horizontal and vertical lines will be drawn.

\n\n

You can set specific options for the grid configuration for odd and/or even lines/rows.\nSince the rows being drawn are rectangle sprites, you can set to an odd or even property\nall styles that apply to Ext.draw.Sprite. For more information on all the style\nproperties you can set please take a look at Ext.draw.Sprite. Some useful style\nproperties are opacity, fill, stroke, stroke-width, etc.

\n\n

The possible values for a grid option are then true, false, or an object with { odd, even } properties\nwhere each property contains a sprite style descriptor object that is defined in Ext.draw.Sprite.

\n\n

For example:

\n\n
axes: [{\n    type: 'Numeric',\n    position: 'left',\n    fields: ['data1', 'data2', 'data3'],\n    title: 'Number of Hits',\n    grid: {\n        odd: {\n            opacity: 1,\n            fill: '#ddd',\n            stroke: '#bbb',\n            'stroke-width': 1\n        }\n    }\n}, {\n    type: 'Category',\n    position: 'bottom',\n    fields: ['name'],\n    title: 'Month of the Year',\n    grid: true\n}]\n
\n"},"hidden":{"!type":"bool","!doc":"

true to hide the axis.

\n"},"length":{"!type":"number","!doc":"

Offset axis position. Default's 0.

\n"},"majorTickSteps":{"!type":"number","!doc":"

If minimum and maximum are specified it forces the number of major ticks to the specified value.\nIf a number of major ticks is forced, it wont search for pretty numbers at the ticks.

\n"},"minorTickSteps":{"!type":"number","!doc":"

The number of small ticks between two major ticks. Default is zero.

\n"},"position":{"!type":"string","!doc":"

Where to set the axis. Available options are left, bottom, right, top. Default's bottom.

\n"},"title":{"!type":"string","!doc":"

The title for the Axis

\n"},"width":{"!type":"number","!doc":"

Offset axis width. Default's 0.

\n"}},"Ext_chart_axis_Category_cfg":{"!proto":"Ext_chart_axis_Axis_cfg","calculateCategoryCount":{"!type":"bool","!doc":"

Indicates whether or not to calculate the number of categories (ticks and\nlabels) when there is not enough room to display all labels on the axis.\nIf set to true, the axis will determine the number of categories to plot.\nIf not, all categories will be plotted.

\n"},"categoryNames":{"!type":"string","!doc":"

A list of category names to display along this axis.

\n"}},"Ext_chart_axis_Gauge_cfg":{"!proto":"Ext_chart_axis_Abstract_cfg","margin":{"!type":"number","!doc":"

The offset positioning of the tick marks and labels in pixels.

\n"},"maximum":{"!type":"number","!doc":"

The maximum value of the interval to be displayed in the axis.

\n"},"minimum":{"!type":"number","!doc":"

The minimum value of the interval to be displayed in the axis.

\n"},"steps":{"!type":"number","!doc":"

The number of steps and tick marks to add to the interval.

\n"},"title":{"!type":"string","!doc":"

The title for the Axis.

\n"}},"Ext_chart_axis_Numeric_cfg":{"!proto":"Ext_chart_axis_Axis_cfg","adjustMaximumByMajorUnit":{"!type":"bool","!doc":"

Indicates whether to extend maximum beyond data's maximum to the nearest\nmajorUnit.

\n"},"adjustMinimumByMajorUnit":{"!type":"bool","!doc":"

Indicates whether to extend the minimum beyond data's minimum to the\nnearest majorUnit.

\n"},"constrain":{"!type":"bool","!doc":"

If true, the values of the chart will be rendered only if they belong between minimum and maximum.\nIf false, all values of the chart will be rendered, regardless of whether they belong between minimum and maximum or not.\nDefault's true if maximum and minimum is specified. It is ignored for stacked charts.

\n"},"decimals":{"!type":"number","!doc":"

The number of decimals to round the value to.

\n"},"maximum":{"!type":"number","!doc":"

The maximum value drawn by the axis. If not set explicitly, the axis\nmaximum will be calculated automatically. It is ignored for stacked charts.

\n"},"minimum":{"!type":"number","!doc":"

The minimum value drawn by the axis. If not set explicitly, the axis\nminimum will be calculated automatically. It is ignored for stacked charts.

\n"},"position":{"!type":"string","!doc":"

Indicates the position of the axis relative to the chart

\n"},"scale":{"!type":"string","!doc":"

The scaling algorithm to use on this axis. May be \"linear\" or\n\"logarithmic\". Currently only linear scale is implemented.

\n"}},"Ext_chart_axis_Radial_cfg":{"!proto":"Ext_chart_axis_Numeric_cfg","maximum":{"!type":"number","!doc":"

The maximum value drawn by the axis. If not set explicitly, the axis\nmaximum will be calculated automatically.

\n"},"position":{"!type":"string","!doc":"

End Definitions

\n"},"steps":{"!type":"number","!doc":"

The number of circles to draw outward from the center.

\n"}},"Ext_chart_axis_Time_cfg":{"!proto":"Ext_chart_axis_Numeric_cfg","constrain":{"!type":"bool","!doc":"

If true, the values of the chart will be rendered only if they belong between the fromDate and toDate.\nIf false, the time axis will adapt to the new values by adding/removing steps.

\n"},"dateFormat":{"!type":"string|bool","!doc":"

Indicates the format the date will be rendered on.\nFor example: 'M d' will render the dates as 'Jan 30', etc.\nFor a list of possible format strings see Date

\n"},"fromDate":{"!type":"+Date","!doc":"

The starting date for the time axis.

\n"},"step":{"!type":"[?]","!doc":"

An array with two components: The first is the unit of the step (day, month, year, etc). The second one is a number.\nIf the number is an integer, it represents the number of units for the step ([Ext.Date.DAY, 2] means \"Every other day\").\nIf the number is a fraction, it represents the number of steps per unit ([Ext.Date.DAY, 1/2] means \"Twice a day\").\nIf the unit is the month, the steps may be adjusted depending on the month. For instance [Ext.Date.MONTH, 1/3], which means \"Three times a month\",\ngenerates steps on the 1st, the 10th and the 20th of every month regardless of whether a month has 28 days or 31 days. The steps are generated\nas follows:\n- [Ext.Date.MONTH, n]: on the current date every 'n' months, maxed to the number of days in the month.\n- [Ext.Date.MONTH, 1/2]: on the 1st and 15th of every month.\n- [Ext.Date.MONTH, 1/3]: on the 1st, 10th and 20th of every month.\n- [Ext.Date.MONTH, 1/4]: on the 1st, 8th, 15th and 22nd of every month.

\n\n

Defaults to: [Ext.Date.DAY, 1].

\n"},"toDate":{"!type":"+Date","!doc":"

The ending date for the time axis.

\n"}},"Ext_chart_series_Area_cfg":{"!proto":"Ext_chart_series_Cartesian_cfg","style":{"!type":"?","!doc":"

Append styling properties to this object for it to override theme properties.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"}},"Ext_chart_series_Bar_cfg":{"!proto":"Ext_chart_series_Cartesian_cfg","column":{"!type":"bool","!doc":"

Whether to set the visualization as column chart or horizontal bar chart.

\n"},"groupGutter":{"!type":"number","!doc":"

The gutter space between groups of bars, as a percentage of the bar width

\n"},"gutter":{"!type":"number","!doc":"

The gutter space between single bars, as a percentage of the bar width

\n"},"stacked":{"!type":"bool","!doc":"

If set to true then bars for multiple yField values will be rendered stacked on top of one another.\nOtherwise, they will be rendered side-by-side. Defaults to false.

\n"},"style":{"!type":"?","!doc":"

Style properties that will override the theming series styles.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xPadding":{"!type":"number|?","!doc":"

Padding between the left/right axes and the bars.\nThe possible values are a number (the number of pixels for both left and right padding)\nor an object with { left, right } properties.

\n"},"yPadding":{"!type":"number|?","!doc":"

Padding between the top/bottom axes and the bars.\nThe possible values are a number (the number of pixels for both top and bottom padding)\nor an object with { top, bottom } properties.

\n"}},"Ext_chart_series_Cartesian_cfg":{"!proto":"Ext_chart_series_Series_cfg","axis":{"!type":"string|[string]","!doc":"

The position of the axis to bind the values to. Possible values are 'left', 'bottom', 'top' and 'right'.\nYou must explicitly set this value to bind the values of the line series to the ones in the axis, otherwise a\nrelative scale will be used. For example, if you're using a Scatter or Line series and you'd like to have the\nvalues in the chart relative to the bottom and left axes then axis should be ['left', 'bottom'].

\n"},"xField":{"!type":"string","!doc":"

The name of the data Model field corresponding to the x-axis value.

\n"},"yField":{"!type":"string|[string]","!doc":"

The name(s) of the data Model field(s) corresponding to the y-axis value(s).

\n"}},"Ext_chart_series_Column_cfg":{"!proto":"Ext_chart_series_Bar_cfg","axis":{"!type":"string","!doc":"

The position of the axis to bind the values to. Possible values are 'left', 'bottom', 'top' and 'right'.\nYou must explicitly set this value to bind the values of the column series to the ones in the axis, otherwise a\nrelative scale will be used.

\n"},"column":{"!type":"bool","!doc":"

Whether to set the visualization as column chart or horizontal bar chart.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xPadding":{"!type":"number|?","!doc":"

Padding between the left/right axes and the bars.\nThe possible values are a number (the number of pixels for both left and right padding)\nor an object with { left, right } properties.

\n"},"yPadding":{"!type":"number|?","!doc":"

Padding between the top/bottom axes and the bars.\nThe possible values are a number (the number of pixels for both top and bottom padding)\nor an object with { top, bottom } properties.

\n"}},"Ext_chart_series_Gauge_cfg":{"!proto":"Ext_chart_series_Series_cfg","angleField":{"!type":"string","!doc":"

The store record field name to be used for the pie angles.\nThe values bound to this field name must be positive real numbers.

\n"},"donut":{"!type":"bool|number","!doc":"

Use the entire disk or just a fraction of it for the gauge. Default's false.

\n"},"highlightDuration":{"!type":"number","!doc":"

The duration for the pie slice highlight effect.

\n"},"needle":{"!type":"bool","!doc":"

Use the Gauge Series as an area series or add a needle to it. Default's false.

\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to add the pie chart elements as legend items. Default's false.

\n"},"style":{"!type":"?","!doc":"

An object containing styles for overriding series styles from Theming.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"}},"Ext_chart_series_Line_cfg":{"!proto":"Ext_chart_series_Cartesian_cfg","fill":{"!type":"bool","!doc":"

If true, the area below the line will be filled in using the eefill and\nopacity config properties. Defaults to false.

\n"},"markerConfig":{"!type":"?","!doc":"

The display style for the markers. Only used if showMarkers is true.\nThe markerConfig is a configuration object containing the same set of properties defined in\nthe Sprite class. For example, if we were to set red circles as markers to the line series we could\npass the object:

\n\n
        markerConfig: {\n            type: 'circle',\n            radius: 4,\n            'fill': '#f00'\n        }\n     
\n\n"},"selectionTolerance":{"!type":"number","!doc":"

The offset distance from the cursor position to the line series to trigger events (then used for highlighting series, etc).

\n"},"showMarkers":{"!type":"bool","!doc":"

Whether markers should be displayed at the data points along the line. If true,\nthen the markerConfig config item will determine the markers' styling.

\n"},"smooth":{"!type":"bool|number","!doc":"

If set to true or a non-zero number, the line will be smoothed/rounded around its points; otherwise\nstraight line segments will be drawn.

\n\n

A numeric value is interpreted as a divisor of the horizontal distance between consecutive points in\nthe line; larger numbers result in sharper curves while smaller numbers result in smoother curves.

\n\n

If set to true then a default numeric value of 3 will be used. Defaults to false.

\n"},"style":{"!type":"?","!doc":"

An object containing style properties for the visualization lines and fill.\nThese styles will override the theme styles. The following are valid style properties:

\n\n\n\n\n

Example usage:

\n\n
style: {\n    stroke: '#00ff00',\n    'stroke-width': 10,\n    fill: '#80A080',\n    opacity: 0.2\n}\n
\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"}},"Ext_chart_series_Pie_cfg":{"!proto":"Ext_chart_series_Series_cfg","angleField":{"!type":"string","!doc":"

The store record field name to be used for the pie angles.\nThe values bound to this field name must be positive real numbers.

\n"},"colorSet":{"!type":"[?]","!doc":"

An array of color values which will be used, in order, as the pie slice fill colors.

\n"},"donut":{"!type":"bool|number","!doc":"

Whether to set the pie chart as donut chart.\nDefault's false. Can be set to a particular percentage to set the radius\nof the donut chart.

\n"},"field":{"!type":"string","!doc":"

Alias for angleField.

\n"},"highlightDuration":{"!type":"number","!doc":"

The duration for the pie slice highlight effect.

\n"},"lengthField":{"!type":"string","!doc":"

The store record field name to be used for the pie slice lengths.\nThe values bound to this field name must be positive real numbers.

\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to add the pie chart elements as legend items. Default's false.

\n"},"style":{"!type":"?","!doc":"

An object containing styles for overriding series styles from Theming.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xField":{"!type":"string","!doc":"

Alias for angleField.

\n"}},"Ext_chart_series_Radar_cfg":{"!proto":"Ext_chart_series_Series_cfg","markerConfig":{"!type":"?","!doc":"

The display style for the markers. Only used if showMarkers is true.\nThe markerConfig is a configuration object containing the same set of properties defined in\nthe Sprite class. For example, if we were to set red circles as markers to the series we could\npass the object:

\n\n
markerConfig: {\n    type: 'circle',\n    radius: 4,\n    'fill': '#f00'\n}\n
\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to show this series in the legend.

\n"},"showMarkers":{"!type":"bool","!doc":"

Whether markers should be displayed at the data points of the series. If true,\nthen the markerConfig config item will determine the markers' styling.

\n"},"style":{"!type":"?","!doc":"

An object containing styles for overriding series styles from Theming.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xField":{"!type":"string","!doc":"

The name of the data Model field corresponding to the x-axis (angle) value.

\n"},"yField":{"!type":"string","!doc":"

The name of the data Model field corresponding to the y-axis (radius) value.

\n"}},"Ext_chart_series_Scatter_cfg":{"!proto":"Ext_chart_series_Cartesian_cfg","markerConfig":{"!type":"?","!doc":"

The display style for the scatter series markers.

\n"},"style":{"!type":"?","!doc":"

Append styling properties to this object for it to override theme properties.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"}},"Ext_chart_series_Series_cfg":{"!proto":"Ext_Base_cfg","highlight":{"!type":"bool|?","!doc":"

If set to true it will highlight the markers or the series when hovering\nwith the mouse. This parameter can also be an object with the same style\nproperties you would apply to a Ext.draw.Sprite to apply custom\nstyles to markers and series.

\n"},"label":{"!type":"?","!doc":"

Object with the following properties:

\n"},"listeners":{"!type":"?","!doc":"

An (optional) object with event callbacks. All event callbacks get the target item as first parameter. The callback functions are:

\n\n\n\n"},"renderer":{"!type":"fn()","!doc":"

A function that can be overridden to set custom styling properties to each rendered element.\nPasses in (sprite, record, attributes, index, store) to the function.

\n"},"shadowAttributes":{"!type":"[?]","!doc":"

An array with shadow attributes

\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to show this series in the legend.

\n"},"tips":{"!type":"?","!doc":"

Add tooltips to the visualization's markers. The options for the tips are the\nsame configuration used with Ext.tip.ToolTip. For example:

\n\n
tips: {\n  trackMouse: true,\n  width: 140,\n  height: 28,\n  renderer: function(storeItem, item) {\n    this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data1') + ' views');\n  }\n},\n
\n"},"title":{"!type":"string","!doc":"

The human-readable name of the series.

\n"},"type":{"!type":"string","!doc":"

The type of series. Set in subclasses.

\n"}},"Ext_chart_theme_Base_cfg":{"!proto":"Ext_Base_cfg"},"Ext_container_AbstractContainer_cfg":{"!proto":"Ext_Component_cfg","activeItem":{"!type":"string|number","!doc":"

A string component id or the numeric index of the component that should be\ninitially activated within the container's layout on render. For example,\nactiveItem: 'item-1' or activeItem: 0 (index 0 = the first item in the\ncontainer's collection). activeItem only applies to layout styles that can\ndisplay items one at a time (like Ext.layout.container.Card and\nExt.layout.container.Fit).

\n"},"autoDestroy":{"!type":"bool","!doc":"

If true the container will automatically destroy any contained component that is removed\nfrom it, else destruction must be handled manually.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"bubbleEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should be bubbled to any parent container.\nSee Ext.util.Observable.enableBubble.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"defaults":{"!type":"?|fn()","!doc":"

This option is a means of applying default settings to all added items whether added\nthrough the items config or via the add or insert methods.

\n\n

Defaults are applied to both config objects and instantiated components conditionally\nso as not to override existing properties in the item (see Ext.applyIf).

\n\n

If the defaults option is specified as a function, then the function will be called\nusing this Container as the scope (this reference) and passing the added item as\nthe first parameter. Any resulting object from that call is then applied to the item\nas default properties.

\n\n

For example, to automatically apply padding to the body of each of a set of\ncontained Ext.panel.Panel items, you could pass:\ndefaults: {bodyStyle:'padding:15px'}.

\n\n

Usage:

\n\n
defaults: { // defaults are applied to items, not the container\n    autoScroll: true\n},\nitems: [\n    // default will not be applied here, panel1 will be autoScroll: false\n    {\n        xtype: 'panel',\n        id: 'panel1',\n        autoScroll: false\n    },\n    // this component will have autoScroll: true\n    new Ext.panel.Panel({\n        id: 'panel2'\n    })\n]\n
\n"},"detachOnRemove":{"!type":"bool","!doc":"

True to move any component to the detachedBody when the component is\nremoved from this container. This option is only applicable when the component is not destroyed while\nbeing removed, see autoDestroy and remove. If this option is set to false, the DOM\nof the component will remain in the current place until it is explicitly moved.

\n"},"items":{"!type":"?|[?]","!doc":"

A single item, or an array of child Components to be added to this container

\n\n

Unless configured with a layout, a Container simply renders child\nComponents serially into its encapsulating element and performs no sizing or\npositioning upon them.

\n\n

Example:

\n\n
// specifying a single item\nitems: {...},\nlayout: 'fit',    // The single items is sized to fit\n\n// specifying multiple items\nitems: [{...}, {...}],\nlayout: 'hbox', // The items are arranged horizontally\n
\n\n

Each item may be:

\n\n\n\n\n

If a configuration object is specified, the actual type of Component to be\ninstantiated my be indicated by using the xtype option.

\n\n

Every Component class has its own xtype.

\n\n

If an xtype is not explicitly specified, the\ndefaultType for the Container is used, which by default is usually panel.

\n\n

Notes:

\n\n

Ext uses lazy rendering. Child Components will only be rendered\nshould it become necessary. Items are automatically laid out when they are first\nshown (no sizing is done while hidden), or in response to a doLayout call.

\n\n

Do not specify contentEl or\nhtml with items.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

End Definitions

\n"},"suspendLayout":{"!type":"bool","!doc":"

If true, suspend calls to doLayout. Useful when batching multiple adds to a container\nand not passing them as multiple arguments or an array.

\n"}},"Ext_container_ButtonGroup_cfg":{"!proto":"Ext_panel_Panel_cfg","animCollapse":{"!type":"bool"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"closable":{"!type":"bool"},"collapseMode":{"!type":"bool"},"collapsible":{"!type":"bool"},"columns":{"!type":"number","!doc":"

The columns configuration property passed to the configured layout manager.\nSee Ext.layout.container.Table.columns.

\n"},"defaultButtonUI":{"!type":"string","!doc":"

A default ui to use for Button items

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"frame":{"!type":"bool","!doc":"

True to apply a frame to the panel.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"titleAlign":{"!type":"string","!doc":"

The alignment of the title text within the available space between the\nicon and the tools.

\n\n

May be \"left\", \"right\" or \"center\". Defaults to the browser's natural\nbehavior depending on the css direction property - \"left\" when direction\nis ltr and \"right\" when direction is rtl\n(see Ext.AbstractComponent.rtl).

\n"},"tools":{"!type":"[?]"}},"Ext_container_Container_cfg":{"!proto":"Ext_container_AbstractContainer_cfg","anchorSize":{"!type":"number|?","!doc":"

Defines the anchoring size of container.\nEither a number to define the width of the container or an object with width and height fields.

\n"}},"Ext_container_Monitor_cfg":{"!proto":"Ext_Base_cfg"},"Ext_container_Viewport_cfg":{"!proto":"Ext_container_Container_cfg","allowDomMove":{"!type":"bool"},"applyTo":{"!type":"string|+HTMLElement|+Ext.Element"},"height":{"!type":"number","!doc":"

Sets itself to viewport width.

\n"},"renderTo":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

Always renders to document body.

\n"},"width":{"!type":"number","!doc":"

Sets itself to viewport height.

\n"}},"Ext_data_AbstractStore_cfg":{"!proto":"Ext_Base_cfg","autoLoad":{"!type":"bool|?","!doc":"

If data is not specified, and if autoLoad is true or an Object, this store's load method is automatically called\nafter creation. If the value of autoLoad is an Object, this Object will be passed to the store's load method.

\n"},"autoSync":{"!type":"bool","!doc":"

True to automatically sync the Store with its Proxy after every edit to one of its Records. Defaults to false.

\n"},"batchUpdateMode":{"!type":"string","!doc":"

Sets the updating behavior based on batch synchronization. 'operation' (the default) will update the Store's\ninternal representation of the data after each operation of the batch has completed, 'complete' will wait until\nthe entire batch has been completed before updating the Store's data. 'complete' is a good choice for local\nstorage proxies, 'operation' is better for remote proxies, where there is a comparatively high latency.

\n"},"defaultSortDirection":{"!type":"string","!doc":"

The default sort direction to use if one is not specified.

\n"},"fields":{"!type":"[?]","!doc":"

This may be used in place of specifying a model configuration. The fields should be a\nset of Ext.data.Field configuration objects. The store will automatically create a Ext.data.Model\nwith these fields. In general this configuration option should only be used for simple stores like\na two-field store of ComboBox. For anything more complicated, such as specifying a particular id property or\nassociations, a Ext.data.Model should be defined and specified for the model\nconfig.

\n"},"filterOnLoad":{"!type":"bool","!doc":"

If true, any filters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, ignored if remoteFilter is true

\n"},"filters":{"!type":"[?]|[fn()]","!doc":"

Array of Filters for this store. Can also be passed array of\nfunctions which will be used as the filterFn config\nfor filters:

\n\n
filters: [\n    function(item) {\n        return item.weight > 0;\n    }\n]\n
\n\n

To filter after the grid is loaded use the filterBy function.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"model":{"!type":"string","!doc":"

Name of the Model associated with this store.\nThe string is used as an argument for Ext.ModelManager.getModel.

\n"},"proxy":{"!type":"string|+Ext.data.proxy.Proxy|?","!doc":"

The Proxy to use for this Store. This can be either a string, a config object or a Proxy instance -\nsee setProxy for details.

\n"},"remoteFilter":{"!type":"bool","!doc":"

True to defer any filtering operation to the server. If false, filtering is done locally on the client.

\n"},"remoteSort":{"!type":"bool","!doc":"

True to defer any sorting operation to the server. If false, sorting is done locally on the client.

\n"},"sortOnLoad":{"!type":"bool","!doc":"

If true, any sorters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, igored if remoteSort is true

\n"},"sortRoot":{"!type":"string","!doc":"

The property in each item that contains the data to sort.

\n"},"sorters":{"!type":"[+Ext.util.Sorter]|[?]","!doc":"

The initial set of Sorters

\n"},"statefulFilters":{"!type":"bool","!doc":"

Configure as true to have the filters saved when a client grid saves its state.

\n"},"storeId":{"!type":"string","!doc":"

Unique identifier for this store. If present, this Store will be registered with the Ext.data.StoreManager,\nmaking it easy to reuse elsewhere.

\n\n

Note that when store is instatiated by Controller, the storeId will be overridden by the name of the store.

\n"}},"Ext_data_ArrayStore_cfg":{"!proto":"Ext_data_Store_cfg"},"Ext_data_Batch_cfg":{"!proto":"Ext_Base_cfg","autoStart":{"!type":"bool","!doc":"

True to immediately start processing the batch as soon as it is constructed (defaults to false)

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"pauseOnException":{"!type":"bool","!doc":"

True to pause the execution of the batch if any operation encounters an exception\n(defaults to false). If you set this to true you are responsible for implementing the appropriate\nhandling logic and restarting or discarding the batch as needed. There are different ways you could\ndo this, e.g. by handling the batch's exception event directly, or perhaps by overriding\nonBatchException at the store level. If you do pause\nand attempt to handle the exception you can call retry to process the same operation again.

\n\n

Note that operations are atomic, so any operations that may have succeeded\nprior to an exception (and up until pausing the batch) will be finalized at the server level and will\nnot be automatically reversible. Any transactional / rollback behavior that might be desired would have\nto be implemented at the application level. Pausing on exception will likely be most beneficial when\nused in coordination with such a scheme, where an exception might actually affect subsequent operations\nin the same batch and so should be handled before continuing with the next operation.

\n\n

If you have not implemented transactional operation handling then this option should typically be left\nto the default of false (e.g. process as many operations as possible, and handle any exceptions\nasynchronously without holding up the rest of the batch).

\n"}},"Ext_data_Connection_cfg":{"!proto":"Ext_Base_cfg","autoAbort":{"!type":"bool","!doc":"

Whether this request should abort any pending requests.

\n"},"binary":{"!type":"bool","!doc":"

True if the response should be treated as binary data. If true, the binary\ndata will be accessible as a \"responseBytes\" property on the response object.

\n"},"cors":{"!type":"bool","!doc":"

True to enable CORS support on the XHR object. Currently the only effect of this option\nis to use the XDomainRequest object instead of XMLHttpRequest if the browser is IE8 or above.

\n"},"defaultHeaders":{"!type":"?","!doc":"

An object containing request headers which are added to each request made by this object.

\n"},"disableCaching":{"!type":"bool","!doc":"

True to add a unique cache-buster param to GET requests.

\n"},"disableCachingParam":{"!type":"string","!doc":"

Change the parameter which is sent went disabling caching through a cache buster.

\n"},"extraParams":{"!type":"?","!doc":"

Any parameters to be appended to the request.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"method":{"!type":"string","!doc":"

The default HTTP method to be used for requests.

\n\n

If not set, but request params are present, POST will be used;\notherwise, GET will be used.

\n"},"timeout":{"!type":"number","!doc":"

The timeout in milliseconds to be used for requests.

\n"},"withCredentials":{"!type":"bool","!doc":"

True to set withCredentials = true on the XHR object

\n"}},"Ext_data_DirectStore_cfg":{"!proto":"Ext_data_Store_cfg"},"Ext_data_Errors_cfg":{"!proto":"Ext_util_MixedCollection_cfg"},"Ext_data_Field_cfg":{"!proto":"Ext_Base_cfg","allowBlank":{"!type":"bool","!doc":"

Used for validating a model. Defaults to true. An empty value here will cause\nExt.data.Model.isValid to evaluate to false.

\n"},"convert":{"!type":"fn()","!doc":"

A function which converts the value provided by the Reader into an object that will be stored in the Model.

\n\n

If configured as null, then no conversion will be applied to the raw data property when this Field\nis read. This will increase performance. but you must ensure that the data is of the correct type and does\nnot need converting.

\n\n

It is passed the following parameters:

\n\n\n\n\n

Example of convert functions:

\n\n
function fullName(v, record){\n    return record.data.last + ', ' + record.data.first;\n}\n\nfunction location(v, record){\n    return !record.data.city ? '' : (record.data.city + ', ' + record.data.state);\n}\n\nExt.define('Dude', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'fullname',  convert: fullName},\n        {name: 'firstname', mapping: 'name.first'},\n        {name: 'lastname',  mapping: 'name.last'},\n        {name: 'city', defaultValue: 'homeless'},\n        'state',\n        {name: 'location',  convert: location}\n    ]\n});\n\n// create the data store\nvar store = Ext.create('Ext.data.Store', {\n    reader: {\n        type: 'json',\n        model: 'Dude',\n        idProperty: 'key',\n        root: 'daRoot',\n        totalProperty: 'total'\n    }\n});\n\nvar myData = [\n    { key: 1,\n      name: { first: 'Fat',    last:  'Albert' }\n      // notice no city, state provided in data object\n    },\n    { key: 2,\n      name: { first: 'Barney', last:  'Rubble' },\n      city: 'Bedrock', state: 'Stoneridge'\n    },\n    { key: 3,\n      name: { first: 'Cliff',  last:  'Claven' },\n      city: 'Boston',  state: 'MA'\n    }\n];\n
\n"},"dateFormat":{"!type":"string","!doc":"

Serves as a default for the dateReadFormat and dateWriteFormat config options. This\nwill be used in place of those other configurations if not specified.

\n\n

A format string for the Ext.Date.parse function, or \"timestamp\" if the value provided by\nthe Reader is a UNIX timestamp, or \"time\" if the value provided by the Reader is a javascript millisecond\ntimestamp. See Ext.Date.

\n\n

It is quite important to note that while this config is optional, it will default to using the base\nJavaScript Date object's parse function if not specified, rather than Ext.Date.parse.\nThis can cause unexpected issues, especially when converting between timezones, or when converting dates that\ndo not have a timezone specified. The behavior of the native Date.parse is implementation-specific, and\ndepending on the value of the date string, it might return the UTC date or the local date. For this reason\nit is strongly recommended that you always specify an explicit date format when parsing dates.

\n"},"dateReadFormat":{"!type":"string","!doc":"

Used when converting received data into a Date when the type is specified as \"date\".\nThis configuration takes precedence over dateFormat.\nSee dateFormat for more information.

\n"},"dateWriteFormat":{"!type":"string","!doc":"

Used to provide a custom format when serializing dates with a Ext.data.writer.Writer.\nIf this is not specified, the dateFormat will be used. See the Ext.data.writer.Writer\ndocs for more information on writing dates.

\n\n

Note that to use a JsonWriter to send Microsoft format \"JSON\" dates, which are in fact\ninvalid JSON, it is not possible to use the standard date serialization pathway or\nnative browser JSON production.

\n\n

To use a JsonWriter to write dates in a JSON packet in the form \"\\/Date(1357372800000)\\/\"\nconfigure the field like this:

\n\n

{\n type: 'date',\n dateFormat: 'MS', // To parse incoming dates from server correctly\n serialize: Ext.identityFn // An ExtJS-supplied function which returns the arg unchanged\n }

\n\n

Then override ExtJS's JSON date serialize function:

\n\n

Ext.JSON.encodeDate = function (d) {\n return '\"' + Ext.Date.format(d, 'MS') + '\"';\n };

\n"},"defaultValue":{"!type":"?","!doc":"

The default value used when the creating an instance from a raw data object, and the property referenced by the\nmapping does not exist in that data object.

\n\n

May be specified as undefined to prevent defaulting in a value.

\n"},"mapping":{"!type":"string|number","!doc":"

(Optional) A path expression for use by the Ext.data.reader.Reader implementation that is creating the\nModel to extract the Field value from the data object. If the path expression is the same\nas the field name, the mapping may be omitted.

\n\n

The form of the mapping expression depends on the Reader being used.

\n\n\n\n\n

If a more complex value extraction strategy is required, then configure the Field with a convert\nfunction. This is passed the whole row object, and may interrogate it in whatever way is necessary in order to\nreturn the desired data.

\n"},"name":{"!type":"string","!doc":"

The name by which the field is referenced within the Model. This is referenced by, for example, the dataIndex\nproperty in column definition objects passed to Ext.grid.property.HeaderContainer.

\n\n

Note: In the simplest case, if no properties other than name are required, a field definition may consist of\njust a String for the field name.

\n"},"persist":{"!type":"bool","!doc":"

False to exclude this field from the Ext.data.Model.modified fields in a model. This will also exclude\nthe field from being written using a Ext.data.writer.Writer. This option is useful when model fields are\nused to keep state on the client but do not need to be persisted to the server. Defaults to true.

\n"},"serialize":{"!type":"fn()","!doc":"

A function which converts the Model's value for this Field into a form which can be used by whatever Writer\nis being used to sync data with the server.

\n\n

The function should return a string which represents the Field's value.

\n\n

It is passed the following parameters:

\n\n\n\n"},"sortDir":{"!type":"string","!doc":"

Initial direction to sort (\"ASC\" or \"DESC\"). Defaults to \"ASC\".

\n"},"sortType":{"!type":"string|fn()","!doc":"

A function which converts a Field's value to a comparable value in order to ensure correct sort ordering.\nPredefined functions are provided in Ext.data.SortTypes. A custom sort example:

\n\n
// current sort     after sort we want\n// +-+------+          +-+------+\n// |1|First |          |1|First |\n// |2|Last  |          |3|Second|\n// |3|Second|          |2|Last  |\n// +-+------+          +-+------+\n\nsortType: function(value) {\n   switch (value.toLowerCase()) // native toLowerCase():\n   {\n      case 'first': return 1;\n      case 'second': return 2;\n      default: return 3;\n   }\n}\n
\n\n

May also be set to a String value, corresponding to one of the named sort types in Ext.data.SortTypes.

\n"},"type":{"!type":"string|?","!doc":"

The data type for automatic conversion from received data to the stored value if\nconvert has not been specified. This may be specified as a string value.\nPossible values are

\n\n\n\n\n

This may also be specified by referencing a member of the Ext.data.Types class.

\n\n

Developers may create their own application-specific data types by defining new members of the Ext.data.Types class.

\n"},"useNull":{"!type":"bool","!doc":"

Use when converting received data into a INT, FLOAT, BOOL or STRING type. If the value cannot be\nparsed, null will be used if useNull is true, otherwise a default value for that type will be used:

\n\n\n\n\n

Note that when parsing of DATE type fails, the value will be null regardless of this setting.

\n"}},"Ext_data_IdGenerator_cfg":{"!proto":"Ext_Base_cfg","id":{"!type":"string","!doc":"

The id by which to register a new instance. This instance can be found using the\nget static method.

\n"}},"Ext_data_JsonPStore_cfg":{"!proto":"Ext_data_Store_cfg"},"Ext_data_JsonStore_cfg":{"!proto":"Ext_data_Store_cfg"},"Ext_data_NodeStore_cfg":{"!proto":"Ext_data_Store_cfg","node":{"!type":"+Ext.data.Model","!doc":"

The Record you want to bind this Store to. Note that\nthis record will be decorated with the Ext.data.NodeInterface if this is not the\ncase yet.

\n"},"recursive":{"!type":"bool","!doc":"

Set this to true if you want this NodeStore to represent\nall the descendents of the node in its flat data collection. This is useful for\nrendering a tree structure to a DataView and is being used internally by\nthe TreeView. Any records that are moved, removed, inserted or appended to the\nnode at any depth below the node this store is bound to will be automatically\nupdated in this Store's internal flat data structure.

\n"},"rootVisible":{"!type":"bool","!doc":"

False to not include the root node in this Stores collection.

\n"},"treeStore":{"!type":"+Ext.data.TreeStore","!doc":"

The TreeStore that is used by this NodeStore's Ext.tree.View.

\n"}},"Ext_data_Operation_cfg":{"!proto":"Ext_Base_cfg","action":{"!type":"string","!doc":"

The action being performed by this Operation. Should be one of 'create', 'read', 'update' or 'destroy'.

\n"},"batch":{"!type":"+Ext.data.Batch","!doc":"

The batch that this Operation is a part of.

\n"},"callback":{"!type":"fn()","!doc":"

Function to execute when operation completed.

\n"},"filters":{"!type":"[+Ext.util.Filter]","!doc":"

Optional array of filter objects. Only applies to 'read' actions.

\n"},"groupers":{"!type":"[+Ext.util.Grouper]","!doc":"

Optional grouping configuration. Only applies to 'read' actions where grouping is desired.

\n"},"limit":{"!type":"number","!doc":"

The number of records to load. Used on 'read' actions when paging is being used.

\n"},"params":{"!type":"?","!doc":"

Parameters to pass along with the request when performing the operation.

\n"},"scope":{"!type":"?","!doc":"

Scope for the callback function.

\n"},"sorters":{"!type":"[+Ext.util.Sorter]","!doc":"

Optional array of sorter objects. Only applies to 'read' actions.

\n"},"start":{"!type":"number","!doc":"

The start index (offset), used in paging when running a 'read' action.

\n"},"synchronous":{"!type":"bool","!doc":"

True if this Operation is to be executed synchronously. This property is inspected by a\nBatch to see if a series of Operations can be executed in parallel or not.

\n"}},"Ext_data_PageMap_cfg":{"!proto":"Ext_util_LruCache_cfg"},"Ext_data_Request_cfg":{"!proto":"Ext_Base_cfg","action":{"!type":"string","!doc":"

The name of the action this Request represents. Usually one of 'create', 'read', 'update' or 'destroy'.

\n"},"method":{"!type":"string","!doc":"

The HTTP method to use on this Request. Should be one of 'GET', 'POST', 'PUT' or 'DELETE'.

\n"},"params":{"!type":"?","!doc":"

HTTP request params. The Proxy and its Writer have access to and can modify this object.

\n"},"url":{"!type":"string","!doc":"

The url to access on this Request

\n"}},"Ext_data_ResultSet_cfg":{"!proto":"Ext_Base_cfg","count":{"!type":"number","!doc":"

The number of records in this ResultSet. Note that total may differ from this number.

\n"},"loaded":{"!type":"bool","!doc":"

True if the records have already been loaded. This is only meaningful when dealing with\nSQL-backed proxies.

\n"},"records":{"!type":"[+Ext.data.Model]","!doc":"

The array of record instances.

\n"},"success":{"!type":"bool","!doc":"

True if the ResultSet loaded successfully, false if any errors were encountered.

\n"},"total":{"!type":"number","!doc":"

The total number of records reported by the data source. This ResultSet may form a subset of\nthose records (see count).

\n"}},"Ext_data_Store_cfg":{"!proto":"Ext_data_AbstractStore_cfg","autoDestroy":{"!type":"bool","!doc":"

When a Store is used by only one DataView, and should only exist for the lifetime of that view, then\nconfigure the autoDestroy flag as true. This causes the destruction of the view to trigger the destruction of its Store.

\n"},"buffered":{"!type":"bool","!doc":"

Allows the Store to prefetch and cache in a page cache, pages of Records, and to then satisfy\nloading requirements from this page cache.

\n\n

To use buffered Stores, initiate the process by loading the first page. The number of rows rendered are\ndetermined automatically, and the range of pages needed to keep the cache primed for scrolling is\nrequested and cached.\nExample:

\n\n
myStore.loadPage(1); // Load page 1\n
\n\n

A BufferedRenderer is instantiated which will monitor the scrolling in the grid, and\nrefresh the view's rows from the page cache as needed. It will also pull new data into the page\ncache when scrolling of the view draws upon data near either end of the prefetched data.

\n\n

The margins which trigger view refreshing from the prefetched data are Ext.grid.plugin.BufferedRenderer.numFromEdge,\nExt.grid.plugin.BufferedRenderer.leadingBufferZone and Ext.grid.plugin.BufferedRenderer.trailingBufferZone.

\n\n

The margins which trigger loading more data into the page cache are, leadingBufferZone and\ntrailingBufferZone.

\n\n

By default, only 5 pages of data are cached in the page cache, with pages \"scrolling\" out of the buffer\nas the view moves down through the dataset.\nSetting this value to zero means that no pages are ever scrolled out of the page cache, and\nthat eventually the whole dataset may become present in the page cache. This is sometimes desirable\nas long as datasets do not reach astronomical proportions.

\n\n

Selection state may be maintained across page boundaries by configuring the SelectionModel not to discard\nrecords from its collection when those Records cycle out of the Store's primary collection. This is done\nby configuring the SelectionModel like this:

\n\n
selModel: {\n    pruneRemoved: false\n}\n
\n"},"clearOnPageLoad":{"!type":"bool","!doc":"

True to empty the store when loading another page via loadPage,\nnextPage or previousPage. Setting to false keeps existing records, allowing\nlarge data sets to be loaded one page at a time but rendered all together.

\n"},"clearRemovedOnLoad":{"!type":"bool","!doc":"

true to clear anything in the removed record collection when the store loads.

\n"},"data":{"!type":"[?]|[+Ext.data.Model]","!doc":"

Array of Model instances or data objects to load locally. See \"Inline data\" above for details.

\n"},"groupDir":{"!type":"string","!doc":"

The direction in which sorting should be applied when grouping. Supported values are \"ASC\" and \"DESC\".

\n"},"groupField":{"!type":"string","!doc":"

The field by which to group data in the store. Internally, grouping is very similar to sorting - the\ngroupField and groupDir are injected as the first sorter (see sort). Stores support a single\nlevel of grouping, and groups can be fetched via the getGroups method.

\n"},"groupers":{"!type":"+Ext.util.MixedCollection","!doc":"

The collection of Groupers currently applied to this Store.

\n"},"leadingBufferZone":{"!type":"number","!doc":"

When buffered, the number of extra rows to keep cached on the leading side of scrolling buffer\nas scrolling proceeds. A larger number means fewer replenishments from the server.

\n"},"pageSize":{"!type":"number","!doc":"

The number of records considered to form a 'page'. This is used to power the built-in\npaging using the nextPage and previousPage functions when the grid is paged using a\nPagingToolbar Defaults to 25.

\n\n

If this Store is buffered, pages are loaded into a page cache before the Store's\ndata is updated from the cache. The pageSize is the number of rows loaded into the cache in one request.\nThis will not affect the rendering of a buffered grid, but a larger page size will mean fewer loads.

\n\n

In a buffered grid, scrolling is monitored, and the page cache is kept primed with data ahead of the\ndirection of scroll to provide rapid access to data when scrolling causes it to be required. Several pages\nin advance may be requested depending on various parameters.

\n\n

It is recommended to tune the pageSize, trailingBufferZone and\nleadingBufferZone configurations based upon the conditions pertaining in your deployed application.

\n\n

The provided SDK example examples/grid/infinite-scroll-grid-tuner.html can be used to experiment with\ndifferent settings including simulating Ajax latency.

\n"},"proxy":{"!type":"string|+Ext.data.proxy.Proxy|?","!doc":"

The Proxy to use for this Store. This can be either a string, a config object or a Proxy instance -\nsee setProxy for details.

\n"},"purgePageCount":{"!type":"number","!doc":"

Valid only when used with a buffered Store.

\n\n

The number of pages additional to the required buffered range to keep in the prefetch cache before purging least recently used records.

\n\n

For example, if the height of the view area and the configured trailingBufferZone and leadingBufferZone require that there\nare three pages in the cache, then a purgePageCount of 5 ensures that up to 8 pages can be in the page cache any any one time.

\n\n

A value of 0 indicates to never purge the prefetched data.

\n"},"remoteFilter":{"!type":"bool","!doc":"

true if the grouping should be performed on the server side, false if it is local only.

\n\n

Buffered stores automatically set this to true. Buffered stores contain an abitrary\nsubset of the full dataset which depends upon various configurations and which pages have been requested\nfor rendering. Such sparse datasets are ineligible for local filtering.

\n"},"remoteGroup":{"!type":"bool","!doc":"

true if the grouping should apply on the server side, false if it is local only. If the\ngrouping is local, it can be applied immediately to the data. If it is remote, then it will simply act as a\nhelper, automatically sending the grouping information to the server.

\n\n

Buffered stores automatically set this to true. Buffered stores contain an abitrary\nsubset of the full dataset which depends upon various configurations and which pages have been requested\nfor rendering. Such sparse datasets are ineligible for local grouping.

\n"},"remoteSort":{"!type":"bool","!doc":"

true if the sorting should be performed on the server side, false if it is local only.

\n\n

Buffered stores automatically set this to true. Buffered stores contain an abitrary\nsubset of the full dataset which depends upon various configurations and which pages have been requested\nfor rendering. Such sparse datasets are ineligible for local sorting.

\n"},"sortOnFilter":{"!type":"bool","!doc":"

For local filtering only, causes sort to be called whenever filter is called,\ncausing the sorters to be reapplied after filtering.

\n"},"trailingBufferZone":{"!type":"number","!doc":"

When buffered, the number of extra records to keep cached on the trailing side of scrolling buffer\nas scrolling proceeds. A larger number means fewer replenishments from the server.

\n"}},"Ext_data_StoreManager_cfg":{"!proto":"Ext_util_MixedCollection_cfg","listeners":{"!type":"?"}},"Ext_data_TreeStore_cfg":{"!proto":"Ext_data_AbstractStore_cfg","clearOnLoad":{"!type":"bool","!doc":"

Remove previously existing child nodes before loading.

\n"},"clearRemovedOnLoad":{"!type":"bool","!doc":"

If true, when a node is reloaded, any records in the removed record collection that were previously descendants of the node being reloaded will be cleared from the removed collection.\nOnly applicable if clearOnLoad is true.

\n"},"defaultRootId":{"!type":"string","!doc":"

The default root id.

\n"},"defaultRootProperty":{"!type":"string","!doc":"

The root property to specify on the reader if one is not explicitly defined.

\n"},"defaultRootText":{"!type":"string","!doc":"

The default root text (if not specified)/

\n"},"folderSort":{"!type":"bool","!doc":"

Set to true to automatically prepend a leaf sorter.

\n"},"nodeParam":{"!type":"string","!doc":"

The name of the parameter sent to the server which contains the identifier of the node.

\n"},"root":{"!type":"+Ext.data.Model|+Ext.data.NodeInterface|?","!doc":"

The root node for this store. For example:

\n\n
root: {\n    expanded: true,\n    text: \"My Root\",\n    children: [\n        { text: \"Child 1\", leaf: true },\n        { text: \"Child 2\", expanded: true, children: [\n            { text: \"GrandChild\", leaf: true }\n        ] }\n    ]\n}\n
\n\n

Setting the root config option is the same as calling setRootNode.

\n"}},"Ext_data_UuidGenerator_cfg":{"!proto":"Ext_data_IdGenerator_cfg","version":{"!type":"number","!doc":"

The Version of UUID. Supported values are:

\n\n\n\n\n

The default is 4.

\n"}},"Ext_data_XmlStore_cfg":{"!proto":"Ext_data_Store_cfg"},"Ext_data_association_Association_cfg":{"!proto":"Ext_Base_cfg","associatedModel":{"!type":"string","!doc":"

The string name of the model that is being associated with.

\n\n

NB! This config is required when instantiating the Association directly.\nWhen defining the association as a config object inside Model, the model\nconfiguration will shadow this config.

\n"},"associationKey":{"!type":"string","!doc":"

The name of the property in the data to read the association from. Defaults to the name of the associated model.

\n"},"model":{"!type":"string","!doc":"

The string name of the model that is being associated with.

\n\n

This config option is to be used when defining the association as a config\nobject within Model. The value is then mapped to associatedModel when\nAssociation is instantiated inside Model.

\n"},"ownerModel":{"!type":"string","!doc":"

The string name of the model that owns the association.

\n\n

NB! This config is required when instantiating the Association directly.\nHowever, it cannot be used at all when defining the association as a config\nobject inside Model, because the name of the model itself will be supplied\nautomatically as the value of this config.

\n"},"primaryKey":{"!type":"string","!doc":"

The name of the primary key on the associated model. In general this will be the\nExt.data.Model.idProperty of the Model.

\n"},"reader":{"!type":"+Ext.data.reader.Reader","!doc":"

A special reader to read associated data

\n"}},"Ext_data_association_BelongsTo_cfg":{"!proto":"Ext_data_association_Association_cfg","foreignKey":{"!type":"string","!doc":"

The name of the foreign key on the owner model that links it to the associated\nmodel. Defaults to the lowercased name of the associated model plus \"_id\", e.g. an association with a\nmodel called Product would set up a product_id foreign key.

\n\n
Ext.define('Order', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'date'],\n    hasMany: 'Product'\n});\n\nExt.define('Product', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'order_id'], // refers to the id of the order that this product belongs to\n    belongsTo: 'Order'\n});\nvar product = new Product({\n    id: 1,\n    name: 'Product 1',\n    order_id: 22\n}, 1);\nproduct.getOrder(); // Will make a call to the server asking for order_id 22\n
\n"},"getterName":{"!type":"string","!doc":"

The name of the getter function that will be added to the local model's prototype.\nDefaults to 'get' + the name of the foreign model, e.g. getCategory

\n"},"setterName":{"!type":"string","!doc":"

The name of the setter function that will be added to the local model's prototype.\nDefaults to 'set' + the name of the foreign model, e.g. setCategory

\n"},"type":{"!type":"string","!doc":"

The type configuration can be used when creating associations using a configuration object.\nUse 'belongsTo' to create a BelongsTo association.

\n\n
associations: [{\n    type: 'belongsTo',\n    model: 'User'\n}]\n
\n"}},"Ext_data_association_HasMany_cfg":{"!proto":"Ext_data_association_Association_cfg","autoLoad":{"!type":"bool","!doc":"

True to automatically load the related store from a remote source when instantiated.\nDefaults to false.

\n"},"filterProperty":{"!type":"string","!doc":"

Optionally overrides the default filter that is set up on the associated Store. If\nthis is not set, a filter is automatically created which filters the association based on the configured\nforeignKey. See intro docs for more details. Defaults to undefined

\n"},"foreignKey":{"!type":"string","!doc":"

The name of the foreign key on the associated model that links it to the owner\nmodel. Defaults to the lowercased name of the owner model plus \"_id\", e.g. an association with a where a\nmodel called Group hasMany Users would create 'group_id' as the foreign key. When the remote store is loaded,\nthe store is automatically filtered so that only records with a matching foreign key are included in the\nresulting child store. This can be overridden by specifying the filterProperty.

\n\n
Ext.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name'],\n    hasMany: 'User'\n});\n\nExt.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'group_id'], // refers to the id of the group that this user belongs to\n    belongsTo: 'Group'\n});\n
\n\n"},"name":{"!type":"string","!doc":"

The name of the function to create on the owner model to retrieve the child store.\nIf not specified, the pluralized name of the child model is used.

\n\n
// This will create a users() method on any Group model instance\nExt.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name'],\n    hasMany: 'User'\n});\nvar group = new Group();\nconsole.log(group.users());\n\n// The method to retrieve the users will now be getUserList\nExt.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name'],\n    hasMany: {model: 'User', name: 'getUserList'}\n});\nvar group = new Group();\nconsole.log(group.getUserList());\n
\n\n"},"storeConfig":{"!type":"?","!doc":"

Optional configuration object that will be passed to the generated Store. Defaults to\nundefined.

\n"},"type":{"!type":"string","!doc":"

The type configuration can be used when creating associations using a configuration object.\nUse 'hasMany' to create a HasMany association

\n\n
associations: [{\n    type: 'hasMany',\n    model: 'User'\n}]\n
\n\n"}},"Ext_data_association_HasOne_cfg":{"!proto":"Ext_data_association_Association_cfg","foreignKey":{"!type":"string","!doc":"

The name of the foreign key on the owner model that links it to the associated\nmodel. Defaults to the lowercased name of the associated model plus \"_id\", e.g. an association with a\nmodel called Person would set up a address_id foreign key.

\n\n
Ext.define('Person', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'address_id'], // refers to the id of the address object\n    hasOne: 'Address'\n});\n\nExt.define('Address', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'number', 'street', 'city', 'zip'], \n    belongsTo: 'Person'\n});\nvar Person = new Person({\n    id: 1,\n    name: 'John Smith',\n    address_id: 13\n}, 1);\nperson.getAddress(); // Will make a call to the server asking for address_id 13\n
\n"},"getterName":{"!type":"string","!doc":"

The name of the getter function that will be added to the local model's prototype.\nDefaults to 'get' + the name of the foreign model, e.g. getAddress

\n"},"setterName":{"!type":"string","!doc":"

The name of the setter function that will be added to the local model's prototype.\nDefaults to 'set' + the name of the foreign model, e.g. setAddress

\n"},"type":{"!type":"string","!doc":"

The type configuration can be used when creating associations using a configuration object.\nUse 'hasOne' to create a HasOne association.

\n\n
associations: [{\n    type: 'hasOne',\n    model: 'Address'\n}]\n
\n"}},"Ext_data_flash_BinaryXhr_cfg":{"!proto":"Ext_Base_cfg"},"Ext_data_proxy_Ajax_cfg":{"!proto":"Ext_data_proxy_Server_cfg","binary":{"!type":"bool","!doc":"

True to request binary data from the server. This feature requires\nthe use of a binary reader such as AMF Reader

\n"},"headers":{"!type":"?","!doc":"

Any headers to add to the Ajax request. Defaults to undefined.

\n"}},"Ext_data_proxy_Client_cfg":{"!proto":"Ext_data_proxy_Proxy_cfg"},"Ext_data_proxy_Direct_cfg":{"!proto":"Ext_data_proxy_Server_cfg","api":{"!type":"?","!doc":"

The same as Ext.data.proxy.Server.api, however instead of providing urls, you should provide a direct\nfunction call. See directFn.

\n"},"directFn":{"!type":"string|fn()","!doc":"

Function to call when executing a request. directFn is a simple alternative to defining the api configuration-parameter\nfor Store's which will not implement a full CRUD api. The directFn may also be a string reference to the fully qualified\nname of the function, for example: 'MyApp.company.GetProfile'. This can be useful when using dynamic loading. The string\nwill be looked up when the proxy is created.

\n"},"extraParams":{"!type":"?","!doc":"

Extra parameters that will be included on every read request. Individual requests with params\nof the same name will override these params when they are in conflict.

\n"},"paramOrder":{"!type":"string|[string]","!doc":"

Defaults to undefined. A list of params to be executed server side. Specify the params in the order in\nwhich they must be executed on the server-side as either (1) an Array of String values, or (2) a String\nof params delimited by either whitespace, comma, or pipe. For example, any of the following would be\nacceptable:

\n\n
paramOrder: ['param1','param2','param3']\nparamOrder: 'param1 param2 param3'\nparamOrder: 'param1,param2,param3'\nparamOrder: 'param1|param2|param'\n
\n"},"paramsAsHash":{"!type":"bool","!doc":"

Send parameters as a collection of named arguments.\nProviding a paramOrder nullifies this configuration.

\n"}},"Ext_data_proxy_LocalStorage_cfg":{"!proto":"Ext_data_proxy_WebStorage_cfg"},"Ext_data_proxy_Memory_cfg":{"!proto":"Ext_data_proxy_Client_cfg","data":{"!type":"?","!doc":"

Optional data to pass to configured Reader.

\n"},"enablePaging":{"!type":"bool","!doc":"

Configure as true to enable this MemoryProxy to honour a read operation's start and limit options.

\n\n

When true, read operations will be able to read pages of records from the data object.

\n"}},"Ext_data_proxy_Proxy_cfg":{"!proto":"Ext_Base_cfg","batchActions":{"!type":"bool","!doc":"

True to batch actions of a particular type when synchronizing the store. Defaults to true.

\n"},"batchOrder":{"!type":"string","!doc":"

Comma-separated ordering 'create', 'update' and 'destroy' actions when batching. Override this to set a different\norder for the batched CRUD actions to be executed in. Defaults to 'create,update,destroy'.

\n"},"defaultReaderType":{"!type":"string","!doc":"

The default registered reader type. Defaults to 'json'.

\n"},"defaultWriterType":{"!type":"string","!doc":"

The default registered writer type. Defaults to 'json'.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"model":{"!type":"string|+Ext.data.Model","!doc":"

The name of the Model to tie to this Proxy. Can be either the string name of the Model, or a reference to the\nModel constructor. Required.

\n"},"reader":{"!type":"?|string|+Ext.data.reader.Reader","!doc":"

The Ext.data.reader.Reader to use to decode the server's response or data read from client. This can either be a\nReader instance, a config object or just a valid Reader type name (e.g. 'json', 'xml').

\n"},"writer":{"!type":"?|string|+Ext.data.writer.Writer","!doc":"

The Ext.data.writer.Writer to use to encode any request sent to the server or saved to client. This can either be\na Writer instance, a config object or just a valid Writer type name (e.g. 'json', 'xml').

\n"}},"Ext_data_proxy_Rest_cfg":{"!proto":"Ext_data_proxy_Ajax_cfg","appendId":{"!type":"bool","!doc":"

True to automatically append the ID of a Model instance when performing a request based on that single instance.\nSee Rest proxy intro docs for more details. Defaults to true.

\n"},"batchActions":{"!type":"bool","!doc":"

True to batch actions of a particular type when synchronizing the store. Defaults to false.

\n"},"format":{"!type":"string","!doc":"

Optional data format to send to the server when making any request (e.g. 'json'). See the Rest proxy intro docs\nfor full details. Defaults to undefined.

\n"}},"Ext_data_proxy_Server_cfg":{"!proto":"Ext_data_proxy_Proxy_cfg","api":{"!type":"?","!doc":"

Specific urls to call on CRUD action methods \"create\", \"read\", \"update\" and \"destroy\". Defaults to:

\n\n
api: {\n    create  : undefined,\n    read    : undefined,\n    update  : undefined,\n    destroy : undefined\n}\n
\n\n

The url is built based upon the action being executed [create|read|update|destroy] using the commensurate\napi property, or if undefined default to the configured\nExt.data.Store.url.

\n\n

For example:

\n\n
api: {\n    create  : '/controller/new',\n    read    : '/controller/load',\n    update  : '/controller/update',\n    destroy : '/controller/destroy_action'\n}\n
\n\n

If the specific URL for a given CRUD action is undefined, the CRUD action request will be directed to the\nconfigured url.

\n"},"cacheString":{"!type":"string","!doc":"

The name of the cache param added to the url when using noCache. Defaults to \"_dc\".

\n"},"directionParam":{"!type":"string","!doc":"

The name of the direction parameter to send in a request. This is only used when simpleSortMode is set to\ntrue.

\n"},"extraParams":{"!type":"?","!doc":"

Extra parameters that will be included on every request. Individual requests with params of the same name\nwill override these params when they are in conflict.

\n"},"filterParam":{"!type":"string","!doc":"

The name of the 'filter' parameter to send in a request. Defaults to 'filter'. Set this to undefined if you don't\nwant to send a filter parameter.

\n"},"groupDirectionParam":{"!type":"string","!doc":"

The name of the direction parameter to send in a request. This is only used when simpleGroupMode is set to\ntrue.

\n"},"groupParam":{"!type":"string","!doc":"

The name of the 'group' parameter to send in a request. Defaults to 'group'. Set this to undefined if you don't\nwant to send a group parameter.

\n"},"idParam":{"!type":"string","!doc":"

The name of the parameter which carries the id of the entity being operated upon.

\n"},"limitParam":{"!type":"string","!doc":"

The name of the 'limit' parameter to send in a request. Defaults to 'limit'. Set this to undefined if you don't\nwant to send a limit parameter.

\n"},"noCache":{"!type":"bool","!doc":"

Disable caching by adding a unique parameter name to the request. Set to false to allow caching. Defaults to true.

\n"},"pageParam":{"!type":"string","!doc":"

The name of the 'page' parameter to send in a request. Defaults to 'page'. Set this to undefined if you don't\nwant to send a page parameter.

\n"},"simpleGroupMode":{"!type":"bool","!doc":"

Enabling simpleGroupMode in conjunction with remoteGroup will only send one group property and a direction when a\nremote group is requested. The groupDirectionParam and groupParam will be sent with the property name and either 'ASC'\nor 'DESC'.

\n"},"simpleSortMode":{"!type":"bool","!doc":"

Enabling simpleSortMode in conjunction with remoteSort will only send one sort property and a direction when a\nremote sort is requested. The directionParam and sortParam will be sent with the property name\nand either 'ASC' or 'DESC'.

\n"},"sortParam":{"!type":"string","!doc":"

The name of the 'sort' parameter to send in a request. Defaults to 'sort'. Set this to undefined if you don't\nwant to send a sort parameter.

\n"},"startParam":{"!type":"string","!doc":"

The name of the 'start' parameter to send in a request. Defaults to 'start'. Set this to undefined if you don't\nwant to send a start parameter.

\n"},"timeout":{"!type":"number","!doc":"

The number of milliseconds to wait for a response. Defaults to 30000 milliseconds (30 seconds).

\n"},"url":{"!type":"string","!doc":"

The URL from which to request the data object.

\n"}},"Ext_data_proxy_SessionStorage_cfg":{"!proto":"Ext_data_proxy_WebStorage_cfg"},"Ext_data_proxy_WebStorage_cfg":{"!proto":"Ext_data_proxy_Client_cfg","id":{"!type":"string","!doc":"

The unique ID used as the key in which all record data are stored in the local storage object.

\n"}},"Ext_data_reader_Json_cfg":{"!proto":"Ext_data_reader_Reader_cfg","metaProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the metaData attribute. See metaData.

\n"},"record":{"!type":"string","!doc":"

The optional location within the JSON response that the record data itself can be found at.\nSee the JsonReader intro docs for more details. This is not often needed.

\n"},"root":{"!type":"string","!doc":"

The name of the property which contains the data items corresponding to the Model(s) for which this\nReader is configured. For JSON reader it's a property name (or a dot-separated list of property names\nif the root is nested). For XML reader it's a CSS selector. For Array reader the root is not applicable\nsince the data is assumed to be a single-level array of arrays.

\n\n

By default the natural root of the data will be used: the root JSON array, the root XML element, or the array.

\n\n

The data packet value for this property should be an empty array to clear the data or show no data.

\n"},"useSimpleAccessors":{"!type":"bool","!doc":"

True to ensure that field names/mappings are treated as literals when\nreading values.

\n\n

For example, by default, using the mapping \"foo.bar.baz\" will try and read a property foo from the root, then a property bar\nfrom foo, then a property baz from bar. Setting the simple accessors to true will read the property with the name\n\"foo.bar.baz\" direct from the root object.

\n"}},"Ext_data_reader_Reader_cfg":{"!proto":"Ext_Base_cfg","idProperty":{"!type":"string","!doc":"

Name of the property within a row object that contains a record identifier value. Defaults to the id of the\nmodel. If an idProperty is explicitly specified it will take precedence over idProperty defined on the model.

\n"},"implicitIncludes":{"!type":"bool","!doc":"

True to automatically parse models nested within other models in a response object. See the\nExt.data.reader.Reader intro docs for full explanation.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"messageProperty":{"!type":"string","!doc":"

The name of the property which contains a response message. This property is optional.

\n"},"readRecordsOnFailure":{"!type":"bool","!doc":"

True to extract the records from a data packet even if the successProperty returns false.

\n"},"root":{"!type":"string","!doc":"

The name of the property which contains the data items corresponding to the Model(s) for which this\nReader is configured. For JSON reader it's a property name (or a dot-separated list of property names\nif the root is nested). For XML reader it's a CSS selector. For Array reader the root is not applicable\nsince the data is assumed to be a single-level array of arrays.

\n\n

By default the natural root of the data will be used: the root JSON array, the root XML element, or the array.

\n\n

The data packet value for this property should be an empty array to clear the data or show no data.

\n"},"successProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the success attribute, the value of which indicates\nwhether a given request succeeded or failed (typically a boolean or 'true'|'false'). See\nExt.data.proxy.Server.exception for additional information.

\n"},"totalProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the total number of records in the dataset. This is only needed if\nthe whole dataset is not passed in one go, but is being paged from the remote server.

\n"}},"Ext_data_reader_Xml_cfg":{"!proto":"Ext_data_reader_Reader_cfg","namespace":{"!type":"string","!doc":"

A namespace prefix that will be prepended to the field name when reading a\nfield from an XML node. Take, for example, the following Model:

\n\n
Ext.define('Foo', {\n    extend: 'Ext.data.Model',\n    fields: ['bar', 'baz']\n});\n
\n\n

The reader would need to be configured with a namespace of 'n' in order to read XML\ndata in the following format:

\n\n
<foo>\n    <n:bar>bar</n:bar>\n    <n:baz>baz</n:baz>\n</foo>\n
\n"},"record":{"!type":"string","!doc":"

The DomQuery path to the repeated element which contains record information.

\n\n

By default, the elements which match the selector may be nested at any level below the root

\n\n

If this Reader is being used by a TreeStore to read tree-structured data,\nthen only first generation child nodes of the root element must be selected, so the record selector must be\nspecified with a more specific selector which will not select all descendants. For example:

\n\n

record: '>node'

\n"}},"Ext_data_writer_Json_cfg":{"!proto":"Ext_data_writer_Writer_cfg","allowSingle":{"!type":"bool","!doc":"

Configure with false to ensure that records are always wrapped in an array, even if there is only\none record being sent. When there is more than one record, they will always be encoded into an array.

\n"},"encode":{"!type":"bool","!doc":"

Configure true to send record data (all record fields if writeAllFields is true)\nas a JSON encoded HTTP parameter named by the root configuration.

\n\n

The encode option should only be set to true when a root is defined, because the values will be\nsent as part of the request parameters as opposed to a raw post. The root will be the name of the parameter\nsent to the server.

\n"},"expandData":{"!type":"bool","!doc":"

By default, when dot-delimited field mappings are\nused (e.g. name: 'myProperty', mapping: 'my.nested.property') the writer will simply output a flat data\nobject containing the mapping string literal as the property name (e.g. { 'my.nested.property': 'foo' }).

\n\n

Mappings are used to map incoming nested JSON to flat Ext models. In many case, the data output by the\nwriter should preferrably match the original nested data format. Setting this config to true will ensure\nthat the output will instead look like { my: { nested: { property: 'foo' }}}. The output is generated\nby getExpandedData, which can optionally be overridden to apply more customized logic.

\n"},"root":{"!type":"string","!doc":"

The HTTP parameter name by which JSON encoded records will be passed to the server if the\nencode option is true.

\n"}},"Ext_data_writer_Writer_cfg":{"!proto":"Ext_Base_cfg","dateFormat":{"!type":"string","!doc":"

This is used for each field of type date in the model to format the value before\nit is sent to the server.

\n"},"nameProperty":{"!type":"string","!doc":"

This property is used to read the key for each value that will be sent to the server. For example:

\n\n
Ext.define('Person', {\n    extend: 'Ext.data.Model',\n    fields: [{\n        name: 'first',\n        mapping: 'firstName'\n    }, {\n        name: 'last',\n        mapping: 'lastName'\n    }, {\n        name: 'age'\n    }]\n});\nnew Ext.data.writer.Writer({\n    writeAllFields: true,\n    nameProperty: 'mapping'\n});\n\n// This will be sent to the server\n{\n    firstName: 'first name value',\n    lastName: 'last name value',\n    age: 1\n}\n
\n\n

If the value is not present, the field name will always be used.

\n"},"writeAllFields":{"!type":"bool","!doc":"

True to write all fields from the record to the server. If set to false it will only send the fields that were\nmodified. Note that any fields that have Ext.data.Field.persist set to false will still be ignored.

\n"},"writeRecordId":{"!type":"bool","!doc":"

By default, each record's id is always included in the output for non-phantom records since in most\ncases the id will be required on the server to process the record action. This is helpful since the id\nwill normally not be modified, and so would not be sent to the server unless writeAllFields\nwas explicitly enabled.

\n\n

However, there are cases where it is not desirable for the record id to be passed in the data directly.\nFor example, when using a RESTful API the record id would typically be appended to the url instead.

\n"}},"Ext_data_writer_Xml_cfg":{"!proto":"Ext_data_writer_Writer_cfg","defaultDocumentRoot":{"!type":"string","!doc":"

The root to be used if documentRoot is empty and a root is required\nto form a valid XML document.

\n"},"documentRoot":{"!type":"string","!doc":"

The name of the root element of the document. Defaults to 'xmlData'.\nIf there is more than 1 record and the root is not specified, the default document root will still be used\nto ensure a valid XML document is created.

\n"},"header":{"!type":"string","!doc":"

A header to use in the XML document (such as setting the encoding or version).\nDefaults to ''.

\n"},"record":{"!type":"string","!doc":"

The name of the node to use for each record. Defaults to 'record'.

\n"}},"Ext_dd_DD_cfg":{"!proto":"Ext_dd_DragDrop_cfg"},"Ext_dd_DDProxy_cfg":{"!proto":"Ext_dd_DD_cfg"},"Ext_dd_DDTarget_cfg":{"!proto":"Ext_dd_DragDrop_cfg"},"Ext_dd_DragDrop_cfg":{"!proto":"Ext_Base_cfg"},"Ext_dd_DragSource_cfg":{"!proto":"Ext_dd_DDProxy_cfg","animRepair":{"!type":"bool","!doc":"

If true, animates the proxy element back to the position of the handle element used to trigger the drag.

\n"},"ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then this object will only\ninteract with other drag drop objects in the same group.

\n"},"dropAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is allowed.

\n"},"dropNotAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is not allowed.

\n"},"repairHighlightColor":{"!type":"string","!doc":"

The color to use when visually highlighting the drag source in the afterRepair\nmethod after a failed drop (defaults to light blue). The color must be a 6 digit hex value, without\na preceding '#'.

\n"}},"Ext_dd_DragZone_cfg":{"!proto":"Ext_dd_DragSource_cfg","containerScroll":{"!type":"?|bool","!doc":"

True to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"scrollEl":{"!type":"string|+HTMLElement|+Ext.dom.Element","!doc":"

An element to register with the ScrollManager if containerScroll\nis set. Defaults to the drag element.

\n"}},"Ext_dd_DropTarget_cfg":{"!proto":"Ext_dd_DDTarget_cfg","ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then this object will only\ninteract with other drag drop objects in the same group.

\n"},"dropAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is allowed.

\n"},"dropNotAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is not allowed.

\n"},"overClass":{"!type":"string","!doc":"

The CSS class applied to the drop target element while the drag source is over it.

\n"}},"Ext_dd_DropZone_cfg":{"!proto":"Ext_dd_DropTarget_cfg"},"Ext_dd_StatusProxy_cfg":{"!proto":"Ext_Component_cfg","dropAllowed":{"!type":"string","!doc":"

The CSS class to apply to the status element when drop is allowed.

\n"},"dropNotAllowed":{"!type":"string","!doc":"

The CSS class to apply to the status element when drop is not allowed.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"}},"Ext_direct_Event_cfg":{"!proto":"Ext_Base_cfg"},"Ext_direct_ExceptionEvent_cfg":{"!proto":"Ext_direct_RemotingEvent_cfg"},"Ext_direct_RemotingEvent_cfg":{"!proto":"Ext_direct_Event_cfg"},"Ext_direct_RemotingMethod_cfg":{"!proto":"Ext_Base_cfg"},"Ext_direct_Transaction_cfg":{"!proto":"Ext_Base_cfg","provider":{"!type":"+Ext.direct.Provider","!doc":"

Provider to use with this Transaction.

\n"}},"Ext_dom_Layer_cfg":{"!proto":"Ext_Element_cfg","cls":{"!type":"string","!doc":"

CSS class to add to the element

\n"},"constrain":{"!type":"bool","!doc":"

False to disable constrain to viewport.

\n"},"dh":{"!type":"?","!doc":"

DomHelper object config to create element with.

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Layer will be hidden.\nValues may be:

\n\n\n\n"},"shadow":{"!type":"string|bool","!doc":"

True to automatically create an Ext.Shadow, or a string indicating the\nshadow's display Ext.Shadow.mode. False to disable the shadow.

\n"},"shadowOffset":{"!type":"number","!doc":"

Number of pixels to offset the shadow

\n"},"shim":{"!type":"bool","!doc":"

False to disable the iframe shim in browsers which need one.

\n"},"useDisplay":{"!type":"bool","!doc":"

Defaults to use css offsets to hide the Layer. Specify true\nto use css style 'display:none;' to hide the Layer.

\n"},"visibilityCls":{"!type":"string","!doc":"

The CSS class name to add in order to hide this Layer if this layer\nis configured with hideMode: 'asclass'

\n"},"zindex":{"!type":"number","!doc":"

Starting z-index.

\n"}},"Ext_draw_Component_cfg":{"!proto":"Ext_Component_cfg","autoSize":{"!type":"bool","!doc":"

Turn on autoSize support which will set the bounding div's size to the natural size of the contents.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"enginePriority":{"!type":"[string]","!doc":"

Defines the priority order for which Surface implementation to use. The first\none supported by the current environment will be used.

\n"},"gradients":{"!type":"[?]","!doc":"

(optional) Define a set of gradients that can be used as fill property in sprites.\nThe gradients array is an array of objects with the following properties:

\n\n\n\n\n

Example

\n\n
gradients: [{\n    id: 'gradientId',\n    angle: 45,\n    stops: {\n        0: {\n            color: '#555'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}, {\n    id: 'gradientId2',\n    angle: 0,\n    stops: {\n        0: {\n            color: '#590'\n        },\n        20: {\n            color: '#599'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}]\n
\n\n

Then the sprites can use gradientId and gradientId2 by setting the fill attributes to those ids, for example:

\n\n
sprite.setAttributes({\n    fill: 'url(#gradientId)'\n}, true);\n
\n"},"items":{"!type":"[+Ext.draw.Sprite]","!doc":"

Array of sprites or sprite config objects to add initially to the surface.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"viewBox":{"!type":"bool","!doc":"

Turn on view box support which will scale and position items in the draw component to fit to the component while\nmaintaining aspect ratio. Note that this scaling can override other sizing settings on your items.

\n"}},"Ext_draw_CompositeSprite_cfg":{"!proto":"Ext_util_MixedCollection_cfg"},"Ext_draw_Sprite_cfg":{"!proto":"Ext_Base_cfg","draggable":{"!type":"bool","!doc":"

True to make the sprite draggable.

\n"},"fill":{"!type":"string","!doc":"

The fill color.

\n"},"font":{"!type":"string","!doc":"

Used with text type sprites. The full font description.\nUses the same syntax as the CSS font parameter

\n"},"group":{"!type":"string|[string]","!doc":"

The group that this sprite belongs to, or an array of groups.\nOnly relevant when added to a Surface.

\n"},"height":{"!type":"number","!doc":"

The height of the rect or image sprite.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"opacity":{"!type":"number","!doc":"

The opacity of the sprite. A number between 0 and 1.

\n"},"path":{"!type":"string","!doc":"

The path of the path sprite written in SVG-like path syntax.

\n"},"radius":{"!type":"number","!doc":"

The radius of the circle sprite. Or in case of rect sprite, the border radius.

\n"},"radiusX":{"!type":"number","!doc":"

The radius of the ellipse sprite along x-axis.

\n"},"radiusY":{"!type":"number","!doc":"

The radius of the ellipse sprite along y-axis.

\n"},"src":{"!type":"string","!doc":"

Path to the image to show in image sprites.

\n"},"stroke":{"!type":"string","!doc":"

The stroke color.

\n"},"stroke-width":{"!type":"number","!doc":"

The width of the stroke.

\n\n

Note that this attribute needs to be quoted when used. Like so:

\n\n
\"stroke-width\": 12,\n
\n"},"text":{"!type":"string","!doc":"

The actual text to render in text sprites.

\n"},"type":{"!type":"string","!doc":"

The type of the sprite.\nPossible options are 'circle', 'ellipse', 'path', 'rect', 'text', 'image'.

\n\n

See Ext.draw.Sprite class documentation for examples of all types.

\n"},"width":{"!type":"number","!doc":"

The width of the rect or image sprite.

\n"},"x":{"!type":"number","!doc":"

Sprite position along the x-axis.

\n"},"y":{"!type":"number","!doc":"

Sprite position along the y-axis.

\n"}},"Ext_draw_Surface_cfg":{"!proto":"Ext_Base_cfg","height":{"!type":"number","!doc":"

The height of this component in pixels (defaults to auto).

\n"},"items":{"!type":"[+Ext.draw.Sprite]","!doc":"

Array of sprites or sprite config objects to add initially to the surface.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"width":{"!type":"number","!doc":"

The width of this component in pixels (defaults to auto).

\n"}},"Ext_draw_engine_Svg_cfg":{"!proto":"Ext_draw_Surface_cfg"},"Ext_draw_engine_Vml_cfg":{"!proto":"Ext_draw_Surface_cfg"},"Ext_flash_Component_cfg":{"!proto":"Ext_Component_cfg","backgroundColor":{"!type":"string","!doc":"

The background color of the SWF movie.

\n"},"expressInstall":{"!type":"bool","!doc":"

True to prompt the user to install flash if not installed. Note that this uses\nExt.FlashComponent.EXPRESS_INSTALL_URL, which should be set to the local resource.

\n"},"flashAttributes":{"!type":"?","!doc":"

A set of key value pairs to be passed to the flash object as attributes.

\n"},"flashParams":{"!type":"?","!doc":"

A set of key value pairs to be passed to the flash object as parameters. Possible parameters can be found here:\nhttp://kb2.adobe.com/cps/127/tn_12701.html

\n"},"flashVars":{"!type":"?","!doc":"

A set of key value pairs to be passed to the flash object as flash variables.

\n"},"flashVersion":{"!type":"string","!doc":"

Indicates the version the flash content was published for.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

Have to create a placeholder div with the swfId, which SWFObject will replace with the object/embed element.

\n"},"swfHeight":{"!type":"string|number","!doc":"

The height of the embedded SWF movie inside the component.

\n\n

Defaults to \"100%\" so that the movie matches the height of the component.

\n"},"swfWidth":{"!type":"string|number","!doc":"

The width of the embedded SWF movie inside the component.

\n\n

Defaults to \"100%\" so that the movie matches the width of the component.

\n"},"url":{"!type":"string","!doc":"

The URL of the SWF file to include.

\n"},"wmode":{"!type":"string","!doc":"

The wmode of the flash object. This can be used to control layering.\nSet to 'transparent' to ignore the backgroundColor and make the background of the Flash\nmovie transparent.

\n"}},"Ext_form_Basic_cfg":{"!proto":"Ext_util_Observable_cfg","api":{"!type":"?","!doc":"

If specified, load and submit actions will be handled with DirectLoad\nand DirectSubmit. Methods which have been imported by\nExt.direct.Manager can be specified here to load and submit forms. API methods may also be\nspecified as strings. See Ext.data.proxy.Direct.directFn. Such as the following:

\n\n
api: {\n    load: App.ss.MyProfile.load,\n    submit: App.ss.MyProfile.submit\n}\n
\n\n

Load actions can use paramOrder or paramsAsHash to customize how the load method\nis invoked. Submit actions will always use a standard form submit. The formHandler configuration\n(see Ext.direct.RemotingProvider#action) must be set on the associated server-side method which has\nbeen imported by Ext.direct.Manager.

\n"},"baseParams":{"!type":"?","!doc":"

Parameters to pass with all requests. e.g. baseParams: {id: '123', foo: 'bar'}.

\n\n

Parameters are encoded as standard HTTP parameters using Ext.Object.toQueryString.

\n"},"errorReader":{"!type":"?|+Ext.data.reader.Reader","!doc":"

An Ext.data.reader.Reader (e.g. Ext.data.reader.Xml) instance or\nconfiguration to be used to read field error messages returned from 'submit' actions.\nThis is optional as there is built-in support for processing JSON responses.

\n\n

The Records which provide messages for the invalid Fields must use the\nField name (or id) as the Record ID, and must contain a field called 'msg'\nwhich contains the error message.

\n\n

The errorReader does not have to be a full-blown implementation of a\nReader. It simply needs to implement a read(xhr) function\nwhich returns an Array of Records in an object with the following\nstructure:

\n\n
{\n    records: recordArray\n}\n
\n"},"jsonSubmit":{"!type":"bool","!doc":"

If set to true, the field values are sent as JSON in the request body.\nAll of the field values, plus any additional params configured via baseParams\nand/or the options to submit, will be included in the values POSTed in the body of the request.

\n"},"method":{"!type":"string","!doc":"

The request method to use (GET or POST) for form actions if one isn't supplied in the action options.

\n"},"paramOrder":{"!type":"string|[string]","!doc":"

A list of params to be executed server side. Only used for the api load\nconfiguration.

\n\n

Specify the params in the order in which they must be executed on the\nserver-side as either (1) an Array of String values, or (2) a String of params\ndelimited by either whitespace, comma, or pipe. For example,\nany of the following would be acceptable:

\n\n
paramOrder: ['param1','param2','param3']\nparamOrder: 'param1 param2 param3'\nparamOrder: 'param1,param2,param3'\nparamOrder: 'param1|param2|param'\n
\n"},"paramsAsHash":{"!type":"bool","!doc":"

Only used for the api load configuration. If true, parameters will be sent as a\nsingle hash collection of named arguments. Providing a paramOrder nullifies this\nconfiguration.

\n"},"reader":{"!type":"?|+Ext.data.reader.Reader","!doc":"

An Ext.data.reader.Reader (e.g. Ext.data.reader.Xml) instance or\nconfiguration to be used to read data when executing 'load' actions. This\nis optional as there is built-in support for processing JSON responses.

\n"},"standardSubmit":{"!type":"bool","!doc":"

If set to true, a standard HTML form submit is used instead of a XHR (Ajax) style form submission.\nAll of the field values, plus any additional params configured via baseParams\nand/or the options to submit, will be included in the values submitted in the form.

\n"},"timeout":{"!type":"number","!doc":"

Timeout for form actions in seconds.

\n"},"trackResetOnLoad":{"!type":"bool","!doc":"

If set to true, reset() resets to the last loaded or setValues() data instead of\nwhen the form was first created.

\n"},"url":{"!type":"string","!doc":"

The URL to use for form actions if one isn't supplied in the\ndoAction options.

\n"},"waitMsgTarget":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

By default wait messages are displayed with Ext.MessageBox.wait. You can target a specific\nelement by passing it or its id or mask the form itself by passing in true.

\n"},"waitTitle":{"!type":"string","!doc":"

The default title to show for the waiting message box

\n"}},"Ext_form_CheckboxGroup_cfg":{"!proto":"Ext_form_FieldContainer_cfg","allowBlank":{"!type":"bool","!doc":"

False to validate that at least one item in the group is checked. If no items are selected at\nvalidation time, blankText will be used as the error text.

\n"},"blankText":{"!type":"string","!doc":"

Error text to display if the allowBlank validation fails

\n"},"columns":{"!type":"string|number|[number]","!doc":"

Specifies the number of columns to use when displaying grouped checkbox/radio controls using automatic layout.\nThis config can take several types of values:

\n\n\n\n"},"componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"defaultType":{"!type":"string","!doc":"

private

\n"},"disabled":{"!type":"bool","!doc":"

True to disable the field. Disabled Fields will not be submitted.

\n"},"items":{"!type":"[+Ext.form.field.Checkbox]|[?]","!doc":"

An Array of Checkboxes or Checkbox config objects to arrange in the group.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

private

\n"},"name":{"!type":"string"},"submitValue":{"!type":"bool","!doc":"

Setting this to false will prevent the field from being submitted even when it is\nnot disabled.

\n"},"validateOnChange":{"!type":"bool","!doc":"

Specifies whether this field should be validated immediately whenever a change in its value is detected.\nIf the validation results in a change in the field's validity, a validitychange event will be\nfired. This allows the field to show feedback about the validity of its contents immediately as the user is\ntyping.

\n\n

When set to false, feedback will not be immediate. However the form will still be validated before submitting if\nthe clientValidation option to Ext.form.Basic.doAction is enabled, or if the field or form are validated\nmanually.

\n\n

See also Ext.form.field.Base.checkChangeEvents for controlling how changes to the field's value are\ndetected.

\n"},"value":{"!type":"?","!doc":"

A value to initialize this field with.

\n"},"vertical":{"!type":"bool","!doc":"

True to distribute contained controls across columns, completely filling each column top to bottom before\nstarting on the next column. The number of controls in each column will be automatically calculated to keep\ncolumns as even as possible. The default value is false, so that controls will be added to columns one at a time,\ncompletely filling each row left to right before starting on the next row.

\n"}},"Ext_form_CheckboxManager_cfg":{"!proto":"Ext_util_MixedCollection_cfg"},"Ext_form_FieldContainer_cfg":{"!proto":"Ext_container_Container_cfg","activeError":{"!type":"string","!doc":"

If specified, then the component will be displayed with this value as its active error when first rendered. Use\nsetActiveError or unsetActiveError to change it after component creation.

\n"},"activeErrorsTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The template used to format the Array of error messages passed to setActiveErrors into a single HTML\nstring. if the msgTarget is title, it defaults to a list separated by new lines. Otherwise, it\nrenders each message as an item in an unordered list.

\n"},"afterBodyEl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nat the end of the input containing element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the label text. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the label element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterSubTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the subTpl markup. If an XTemplate is used, the\ncomponent's render data serves as the context.

\n"},"autoFitErrors":{"!type":"bool","!doc":"

Whether to adjust the component's body area to make room for 'side' or 'under' error messages.

\n"},"baseBodyCls":{"!type":"string","!doc":"

The CSS class to be applied to the body content element.

\n"},"beforeBodyEl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nat the beginning of the input containing element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the label text. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the label element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeSubTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the subTpl markup. If an XTemplate is used, the\ncomponent's render data serves as the context.

\n"},"clearCls":{"!type":"string","!doc":"

The CSS class to be applied to the special clearing div rendered directly after the field contents wrapper to\nprovide field clearing.

\n"},"combineErrors":{"!type":"bool","!doc":"

If set to true, the field container will automatically combine and display the validation errors from\nall the fields it contains as a single error on the container, according to the configured\nmsgTarget. Defaults to false.

\n"},"combineLabels":{"!type":"bool","!doc":"

If set to true, and there is no defined fieldLabel, the field container will automatically\ngenerate its label by combining the labels of all the fields it contains. Defaults to false.

\n"},"componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"errorMsgCls":{"!type":"string","!doc":"

The CSS class to be applied to the error message element.

\n"},"fieldBodyCls":{"!type":"string","!doc":"

An extra CSS class to be applied to the body content element in addition to baseBodyCls.

\n"},"fieldDefaults":{"!type":"?","!doc":"

If specified, the properties in this object are used as default config values for each Ext.form.Labelable\ninstance (e.g. Ext.form.field.Base or Ext.form.FieldContainer) that is added as a descendant of\nthis container. Corresponding values specified in an individual field's own configuration, or from the defaults config of its parent container, will take precedence. See the\ndocumentation for Ext.form.Labelable to see what config options may be specified in the fieldDefaults.

\n\n

Example:

\n\n
new Ext.form.Panel({\n    fieldDefaults: {\n        labelAlign: 'left',\n        labelWidth: 100\n    },\n    items: [{\n        xtype: 'fieldset',\n        defaults: {\n            labelAlign: 'top'\n        },\n        items: [{\n            name: 'field1'\n        }, {\n            name: 'field2'\n        }]\n    }, {\n        xtype: 'fieldset',\n        items: [{\n            name: 'field3',\n            labelWidth: 150\n        }, {\n            name: 'field4'\n        }]\n    }]\n});\n
\n\n

In this example, field1 and field2 will get labelAlign:'top' (from the fieldset's defaults) and labelWidth:100\n(from fieldDefaults), field3 and field4 will both get labelAlign:'left' (from fieldDefaults and field3 will use\nthe labelWidth:150 from its own config.

\n"},"fieldLabel":{"!type":"string","!doc":"

The label for the field. It gets appended with the labelSeparator, and its position and sizing is\ndetermined by the labelAlign, labelWidth, and labelPad configs.

\n"},"formItemCls":{"!type":"string","!doc":"

A CSS class to be applied to the outermost element to denote that it is participating in the form field layout.

\n"},"hideEmptyLabel":{"!type":"bool","!doc":"

When set to true, the label element (fieldLabel and labelSeparator) will be automatically\nhidden if the fieldLabel is empty. Setting this to false will cause the empty label element to be\nrendered and space to be reserved for it; this is useful if you want a field without a label to line up with\nother labeled fields in the same form.

\n\n

If you wish to unconditionall hide the label even if a non-empty fieldLabel is configured, then set the\nhideLabel config to true.

\n"},"hideLabel":{"!type":"bool","!doc":"

Set to true to completely hide the label element (fieldLabel and labelSeparator). Also see\nhideEmptyLabel, which controls whether space will be reserved for an empty fieldLabel.

\n"},"invalidCls":{"!type":"string","!doc":"

If we allow this to mark with the invalidCls it will cascade to all\nchild fields, let them handle themselves

\n"},"labelAlign":{"!type":"string","!doc":"

Controls the position and alignment of the fieldLabel. Valid values are:

\n\n\n\n"},"labelAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the label element (as attributes). If an XTemplate is used, the component's\nrender data serves as the context.

\n"},"labelCls":{"!type":"string","!doc":"

The CSS class to be applied to the label element. This (single) CSS class is used to formulate the renderSelector\nand drives the field layout where it is concatenated with a hyphen ('-') and labelAlign. To add\nadditional classes, use labelClsExtra.

\n"},"labelClsExtra":{"!type":"string","!doc":"

An optional string of one or more additional CSS classes to add to the label element. Defaults to empty.

\n"},"labelConnector":{"!type":"string","!doc":"

The string to use when joining the labels of individual sub-fields, when combineLabels is\nset to true. Defaults to ', '.

\n"},"labelPad":{"!type":"number","!doc":"

The amount of space in pixels between the fieldLabel and the input field.

\n"},"labelSeparator":{"!type":"string","!doc":"

Character(s) to be inserted at the end of the label text.

\n\n

Set to empty string to hide the separator completely.

\n"},"labelStyle":{"!type":"string","!doc":"

A CSS style specification string to apply directly to this field's label.

\n"},"labelWidth":{"!type":"number","!doc":"

The width of the fieldLabel in pixels. Only applicable if the labelAlign is set to \"left\" or\n\"right\".

\n"},"labelableRenderTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The rendering template for the field decorations. Component classes using this mixin\nshould include logic to use this as their renderTpl,\nand implement the getSubTplMarkup method to generate the field body content.

\n\n

The structure of a field is a table as follows:

\n\n

If labelAlign: 'left',msgTarget: 'side'`

\n\n
 +----------------------+----------------------+-------------+\n | Label:               | InputField           | sideErrorEl |\n +----------------------+----------------------+-------------+\n
\n\n

If labelAlign: 'left',msgTarget: 'under'`

\n\n
 +----------------------+------------------------------------+\n | Label:               | InputField      (colspan=2)        |\n |                      | underErrorEl                       |\n +----------------------+------------------------------------+\n
\n\n

If labelAlign: 'top',msgTarget: 'side'`

\n\n
 +---------------------------------------------+-------------+\n | label                                       |             |\n | InputField                                  | sideErrorEl |\n +---------------------------------------------+-------------+\n
\n\n

If labelAlign: 'top',msgTarget: 'under'`

\n\n
 +-----------------------------------------------------------+\n | label                                                     |\n | InputField                      (colspan=2)               |\n | underErrorEl                                              |\n +-----------------------------------------------------------+\n
\n\n

The total columns always the same for fields with each setting of labelAlign because when\nrendered into a Ext.layout.container.Form layout, just the TR of the table\nwill be placed into the form's main TABLE, and the columns of all the siblings\nmust match so that they all line up. In a Ext.layout.container.Form layout, different\nsettings of labelAlign are not supported because of the incompatible column structure.

\n\n

When the triggerCell or side error cell are hidden or shown, the input cell's colspan\nis recalculated to maintain the correct 3 visible column count.

\n"},"msgTarget":{"!type":"string","!doc":"

The location where the error message text should display. Must be one of the following values:

\n\n\n\n"},"preventMark":{"!type":"bool","!doc":"

true to disable displaying any error message set on this object.

\n"}},"Ext_form_FieldSet_cfg":{"!proto":"Ext_container_Container_cfg","autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class applied to the fieldset.

\n"},"checkboxName":{"!type":"string","!doc":"

The name to assign to the fieldset's checkbox if checkboxToggle = true\n(defaults to '[fieldset id]-checkbox').

\n"},"checkboxToggle":{"!type":"bool","!doc":"

Set to true to render a checkbox into the fieldset frame just in front of the legend to expand/collapse the\nfieldset when the checkbox is toggled.. This checkbox will be included in form submits using\nthe checkboxName.

\n"},"collapsed":{"!type":"bool","!doc":"

Set to true to render the fieldset as collapsed by default. If checkboxToggle is specified, the checkbox\nwill also be unchecked by default.

\n"},"collapsible":{"!type":"bool","!doc":"

Set to true to make the fieldset collapsible and have the expand/collapse toggle button automatically rendered\ninto the legend element, false to keep the fieldset statically sized with no collapse button.\nAnother option is to configure checkboxToggle. Use the collapsed config to collapse the\nfieldset by default.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"fieldDefaults":{"!type":"?","!doc":"

If specified, the properties in this object are used as default config values for each Ext.form.Labelable\ninstance (e.g. Ext.form.field.Base or Ext.form.FieldContainer) that is added as a descendant of\nthis container. Corresponding values specified in an individual field's own configuration, or from the defaults config of its parent container, will take precedence. See the\ndocumentation for Ext.form.Labelable to see what config options may be specified in the fieldDefaults.

\n\n

Example:

\n\n
new Ext.form.Panel({\n    fieldDefaults: {\n        labelAlign: 'left',\n        labelWidth: 100\n    },\n    items: [{\n        xtype: 'fieldset',\n        defaults: {\n            labelAlign: 'top'\n        },\n        items: [{\n            name: 'field1'\n        }, {\n            name: 'field2'\n        }]\n    }, {\n        xtype: 'fieldset',\n        items: [{\n            name: 'field3',\n            labelWidth: 150\n        }, {\n            name: 'field4'\n        }]\n    }]\n});\n
\n\n

In this example, field1 and field2 will get labelAlign:'top' (from the fieldset's defaults) and labelWidth:100\n(from fieldDefaults), field3 and field4 will both get labelAlign:'left' (from fieldDefaults and field3 will use\nthe labelWidth:150 from its own config.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

The Ext.container.Container.layout for the fieldset's immediate child items.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"stateEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should trigger this object to\nsave its state. Defaults to none. stateEvents may be any type\nof event supported by this object, including browser or custom events\n(e.g., ['click', 'customerchange']).

\n\n\n

See stateful for an explanation of saving and\nrestoring object state.

\n\n"},"title":{"!type":"string","!doc":"

A title to be displayed in the fieldset's legend. May contain HTML markup.

\n"},"toggleOnTitleClick":{"!type":"bool","!doc":"

Set to true will add a listener to the titleCmp property for the click event which will execute the\ntoggle method. This option is only used when the collapsible property is set to true.

\n"}},"Ext_form_Label_cfg":{"!proto":"Ext_Component_cfg","autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"forId":{"!type":"string","!doc":"

The id of the input element to which this label will be bound via the standard HTML 'for'\nattribute. If not specified, the attribute will not be added to the label. In most cases you will be\nassociating the label with a Ext.form.field.Base component, so you should make sure this matches\nthe inputId of that field.

\n"},"html":{"!type":"string","!doc":"

An HTML fragment that will be used as the label's innerHTML.\nNote that if text is specified it will take precedence and this value will be ignored.

\n"},"text":{"!type":"string","!doc":"

The plain text to display within the label. If you need to include HTML\ntags within the label's innerHTML, use the html config instead.

\n"}},"Ext_form_Panel_cfg":{"!proto":"Ext_panel_Panel_cfg","fieldDefaults":{"!type":"?","!doc":"

If specified, the properties in this object are used as default config values for each Ext.form.Labelable\ninstance (e.g. Ext.form.field.Base or Ext.form.FieldContainer) that is added as a descendant of\nthis container. Corresponding values specified in an individual field's own configuration, or from the defaults config of its parent container, will take precedence. See the\ndocumentation for Ext.form.Labelable to see what config options may be specified in the fieldDefaults.

\n\n

Example:

\n\n
new Ext.form.Panel({\n    fieldDefaults: {\n        labelAlign: 'left',\n        labelWidth: 100\n    },\n    items: [{\n        xtype: 'fieldset',\n        defaults: {\n            labelAlign: 'top'\n        },\n        items: [{\n            name: 'field1'\n        }, {\n            name: 'field2'\n        }]\n    }, {\n        xtype: 'fieldset',\n        items: [{\n            name: 'field3',\n            labelWidth: 150\n        }, {\n            name: 'field4'\n        }]\n    }]\n});\n
\n\n

In this example, field1 and field2 will get labelAlign:'top' (from the fieldset's defaults) and labelWidth:100\n(from fieldDefaults), field3 and field4 will both get labelAlign:'left' (from fieldDefaults and field3 will use\nthe labelWidth:150 from its own config.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

The Ext.container.Container.layout for the form panel's immediate child items.

\n"},"pollForChanges":{"!type":"bool","!doc":"

If set to true, sets up an interval task (using the pollInterval) in which the\npanel's fields are repeatedly checked for changes in their values. This is in addition to the normal detection\neach field does on its own input element, and is not needed in most cases. It does, however, provide a\nmeans to absolutely guarantee detection of all changes including some edge cases in some browsers which\ndo not fire native events. Defaults to false.

\n"},"pollInterval":{"!type":"number","!doc":"

Interval in milliseconds at which the form's fields are checked for value changes. Only used if\nthe pollForChanges option is set to true. Defaults to 500 milliseconds.

\n"}},"Ext_form_RadioGroup_cfg":{"!proto":"Ext_form_CheckboxGroup_cfg","allowBlank":{"!type":"bool","!doc":"

True to allow every item in the group to be blank.\nIf allowBlank = false and no items are selected at validation time, blankText will\nbe used as the error text.

\n"},"blankText":{"!type":"string","!doc":"

Error text to display if the allowBlank validation fails

\n"},"defaultType":{"!type":"string","!doc":"

private

\n"},"items":{"!type":"[+Ext.form.field.Radio]|[?]","!doc":"

An Array of Radios or Radio config objects to arrange in the group.

\n"}},"Ext_form_RadioManager_cfg":{"!proto":"Ext_util_MixedCollection_cfg"},"Ext_form_action_Action_cfg":{"!proto":"Ext_Base_cfg","failure":{"!type":"fn()","!doc":"

The function to call when a failure packet was received, or when an error ocurred in the Ajax communication.

\n"},"form":{"!type":"+Ext.form.Basic","!doc":"

The BasicForm instance that is invoking this Action. Required.

\n"},"headers":{"!type":"?","!doc":"

Extra headers to be sent in the AJAX request for submit and load actions.\nSee Ext.data.proxy.Ajax.headers.

\n\n

Note: Headers are not sent during file upload.

\n"},"method":{"!type":"string","!doc":"

The HTTP method to use to access the requested URL.\nDefaults to the BasicForm's method, or 'POST' if not specified.

\n"},"params":{"!type":"?|string","!doc":"

Extra parameter values to pass. These are added to the Form's Ext.form.Basic.baseParams and passed to the\nspecified URL along with the Form's input fields.

\n\n

Parameters are encoded as standard HTTP parameters using Ext.Object.toQueryString.

\n"},"reset":{"!type":"bool","!doc":"

When set to true, causes the Form to be reset on Action success. If specified,\nthis happens before the success callback is called and before the Form's\nactioncomplete event fires.

\n"},"scope":{"!type":"?","!doc":"

The scope in which to call the configured success and failure callback functions\n(the this reference for the callback functions).

\n"},"submitEmptyText":{"!type":"bool","!doc":"

If set to true, the emptyText value will be sent with the form when it is submitted.

\n"},"success":{"!type":"fn()","!doc":"

The function to call when a valid success return packet is received.

\n"},"timeout":{"!type":"number","!doc":"

The number of seconds to wait for a server response before failing with the failureType as\nCONNECT_FAILURE. If not specified, defaults to the configured\ntimeout of the form.

\n"},"url":{"!type":"string","!doc":"

The URL that the Action is to invoke. Will default to the url configured on the\nform.

\n"},"waitMsg":{"!type":"string","!doc":"

The message to be displayed by a call to Ext.window.MessageBox.wait during the time the action is being\nprocessed.

\n"},"waitTitle":{"!type":"string","!doc":"

The title to be displayed by a call to Ext.window.MessageBox.wait during the time the action is being\nprocessed.

\n"}},"Ext_form_action_DirectLoad_cfg":{"!proto":"Ext_form_action_Load_cfg"},"Ext_form_action_DirectSubmit_cfg":{"!proto":"Ext_form_action_Submit_cfg"},"Ext_form_action_Load_cfg":{"!proto":"Ext_form_action_Action_cfg"},"Ext_form_action_StandardSubmit_cfg":{"!proto":"Ext_form_action_Submit_cfg","target":{"!type":"string","!doc":"

Optional target attribute to be used for the form when submitting.

\n\n

Defaults to the current window/frame.

\n"}},"Ext_form_action_Submit_cfg":{"!proto":"Ext_form_action_Action_cfg","clientValidation":{"!type":"bool","!doc":"

Determines whether a Form's fields are validated in a final call to isValid prior\nto submission. Pass false in the Form's submit options to prevent this.

\n"}},"Ext_form_field_Base_cfg":{"!proto":"Ext_Component_cfg","activeError":{"!type":"string","!doc":"

If specified, then the component will be displayed with this value as its active error when first rendered. Use\nsetActiveError or unsetActiveError to change it after component creation.

\n"},"activeErrorsTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The template used to format the Array of error messages passed to setActiveErrors into a single HTML\nstring. if the msgTarget is title, it defaults to a list separated by new lines. Otherwise, it\nrenders each message as an item in an unordered list.

\n"},"afterBodyEl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nat the end of the input containing element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the label text. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the label element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterSubTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the subTpl markup. If an XTemplate is used, the\ncomponent's render data serves as the context.

\n"},"autoFitErrors":{"!type":"bool","!doc":"

Whether to adjust the component's body area to make room for 'side' or 'under' error messages.

\n"},"baseBodyCls":{"!type":"string","!doc":"

The CSS class to be applied to the body content element.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"beforeBodyEl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nat the beginning of the input containing element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the label text. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the label element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeSubTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the subTpl markup. If an XTemplate is used, the\ncomponent's render data serves as the context.

\n"},"checkChangeBuffer":{"!type":"number","!doc":"

Defines a timeout in milliseconds for buffering checkChangeEvents that fire in rapid succession.\nDefaults to 50 milliseconds.

\n"},"checkChangeEvents":{"!type":"[string]","!doc":"

A list of event names that will be listened for on the field's input element, which will cause\nthe field's value to be checked for changes. If a change is detected, the change event will be\nfired, followed by validation if the validateOnChange option is enabled.

\n\n

Defaults to ['change', 'propertychange', 'keyup'] in Internet Explorer, and ['change', 'input', 'textInput', 'keyup',\n'dragdrop'] in other browsers. This catches all the ways that field values can be changed in most supported\nbrowsers; the only known exceptions at the time of writing are:

\n\n\n\n\n

If you need to guarantee on-the-fly change notifications including these edge cases, you can call the\ncheckChange method on a repeating interval, e.g. using Ext.TaskManager, or if the field is within\na Ext.form.Panel, you can use the FormPanel's Ext.form.Panel.pollForChanges configuration to set up\nsuch a task automatically.

\n"},"clearCls":{"!type":"string","!doc":"

The CSS class to be applied to the special clearing div rendered directly after the field contents wrapper to\nprovide field clearing.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"dirtyCls":{"!type":"string","!doc":"

The CSS class to use when the field value is dirty.

\n"},"disabled":{"!type":"bool","!doc":"

True to disable the field. Disabled Fields will not be submitted.

\n"},"errorMsgCls":{"!type":"string","!doc":"

The CSS class to be applied to the error message element.

\n"},"fieldBodyCls":{"!type":"string","!doc":"

An extra CSS class to be applied to the body content element in addition to baseBodyCls.

\n"},"fieldCls":{"!type":"string","!doc":"

The default CSS class for the field input

\n"},"fieldLabel":{"!type":"string","!doc":"

The label for the field. It gets appended with the labelSeparator, and its position and sizing is\ndetermined by the labelAlign, labelWidth, and labelPad configs.

\n"},"fieldStyle":{"!type":"string","!doc":"

Optional CSS style(s) to be applied to the field input element. Should be a valid argument to\nExt.Element.applyStyles. Defaults to undefined. See also the setFieldStyle method for changing\nthe style after initialization.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

The content of the field body is defined by this config option.

\n"},"focusCls":{"!type":"string","!doc":"

The CSS class to use when the field receives focus

\n"},"formItemCls":{"!type":"string","!doc":"

A CSS class to be applied to the outermost element to denote that it is participating in the form field layout.

\n"},"hideEmptyLabel":{"!type":"bool","!doc":"

When set to true, the label element (fieldLabel and labelSeparator) will be automatically\nhidden if the fieldLabel is empty. Setting this to false will cause the empty label element to be\nrendered and space to be reserved for it; this is useful if you want a field without a label to line up with\nother labeled fields in the same form.

\n\n

If you wish to unconditionall hide the label even if a non-empty fieldLabel is configured, then set the\nhideLabel config to true.

\n"},"hideLabel":{"!type":"bool","!doc":"

Set to true to completely hide the label element (fieldLabel and labelSeparator). Also see\nhideEmptyLabel, which controls whether space will be reserved for an empty fieldLabel.

\n"},"inputAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the input element (as attributes). If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"inputId":{"!type":"string","!doc":"

The id that will be given to the generated input DOM element. Defaults to an automatically generated id. If you\nconfigure this manually, you must make sure it is unique in the document.

\n"},"inputType":{"!type":"string","!doc":"

The type attribute for input fields -- e.g. radio, text, password, file. The extended types\nsupported by HTML5 inputs (url, email, etc.) may also be used, though using them will cause older browsers to\nfall back to 'text'.

\n\n

The type 'password' must be used to render that field type currently -- there is no separate Ext component for\nthat. You can use Ext.form.field.File which creates a custom-rendered file upload field, but if you want\na plain unstyled file input you can use a Base with inputType:'file'.

\n"},"invalidCls":{"!type":"string","!doc":"

The CSS class to use when marking the component invalid.

\n"},"invalidText":{"!type":"string","!doc":"

The error text to use when marking a field invalid and no message is provided

\n"},"labelAlign":{"!type":"string","!doc":"

Controls the position and alignment of the fieldLabel. Valid values are:

\n\n\n\n"},"labelAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the label element (as attributes). If an XTemplate is used, the component's\nrender data serves as the context.

\n"},"labelCls":{"!type":"string","!doc":"

The CSS class to be applied to the label element. This (single) CSS class is used to formulate the renderSelector\nand drives the field layout where it is concatenated with a hyphen ('-') and labelAlign. To add\nadditional classes, use labelClsExtra.

\n"},"labelClsExtra":{"!type":"string","!doc":"

An optional string of one or more additional CSS classes to add to the label element. Defaults to empty.

\n"},"labelPad":{"!type":"number","!doc":"

The amount of space in pixels between the fieldLabel and the input field.

\n"},"labelSeparator":{"!type":"string","!doc":"

Character(s) to be inserted at the end of the label text.

\n\n

Set to empty string to hide the separator completely.

\n"},"labelStyle":{"!type":"string","!doc":"

A CSS style specification string to apply directly to this field's label.

\n"},"labelWidth":{"!type":"number","!doc":"

The width of the fieldLabel in pixels. Only applicable if the labelAlign is set to \"left\" or\n\"right\".

\n"},"labelableRenderTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The rendering template for the field decorations. Component classes using this mixin\nshould include logic to use this as their renderTpl,\nand implement the getSubTplMarkup method to generate the field body content.

\n\n

The structure of a field is a table as follows:

\n\n

If labelAlign: 'left',msgTarget: 'side'`

\n\n
 +----------------------+----------------------+-------------+\n | Label:               | InputField           | sideErrorEl |\n +----------------------+----------------------+-------------+\n
\n\n

If labelAlign: 'left',msgTarget: 'under'`

\n\n
 +----------------------+------------------------------------+\n | Label:               | InputField      (colspan=2)        |\n |                      | underErrorEl                       |\n +----------------------+------------------------------------+\n
\n\n

If labelAlign: 'top',msgTarget: 'side'`

\n\n
 +---------------------------------------------+-------------+\n | label                                       |             |\n | InputField                                  | sideErrorEl |\n +---------------------------------------------+-------------+\n
\n\n

If labelAlign: 'top',msgTarget: 'under'`

\n\n
 +-----------------------------------------------------------+\n | label                                                     |\n | InputField                      (colspan=2)               |\n | underErrorEl                                              |\n +-----------------------------------------------------------+\n
\n\n

The total columns always the same for fields with each setting of labelAlign because when\nrendered into a Ext.layout.container.Form layout, just the TR of the table\nwill be placed into the form's main TABLE, and the columns of all the siblings\nmust match so that they all line up. In a Ext.layout.container.Form layout, different\nsettings of labelAlign are not supported because of the incompatible column structure.

\n\n

When the triggerCell or side error cell are hidden or shown, the input cell's colspan\nis recalculated to maintain the correct 3 visible column count.

\n"},"msgTarget":{"!type":"string","!doc":"

The location where the error message text should display. Must be one of the following values:

\n\n\n\n"},"name":{"!type":"string","!doc":"

The name of the field. This is used as the parameter name when including the field value\nin a form submit(). If no name is configured, it falls back to the inputId.\nTo prevent the field from being included in the form submit, set submitValue to false.

\n"},"preventMark":{"!type":"bool","!doc":"

true to disable displaying any error message set on this object.

\n"},"readOnly":{"!type":"bool","!doc":"

true to mark the field as readOnly in HTML.

\n\n

Note: this only sets the element's readOnly DOM attribute. Setting readOnly=true, for example, will not\ndisable triggering a ComboBox or Date; it gives you the option of forcing the user to choose via the trigger\nwithout typing in the text box. To hide the trigger use hideTrigger.

\n"},"readOnlyCls":{"!type":"string","!doc":"

The CSS class applied to the component's main element when it is readOnly.

\n"},"submitValue":{"!type":"bool","!doc":"

Setting this to false will prevent the field from being submitted even when it is\nnot disabled.

\n"},"tabIndex":{"!type":"number","!doc":"

The tabIndex for this field. Note this only applies to fields that are rendered, not those which are built via\napplyTo

\n"},"validateOnBlur":{"!type":"bool","!doc":"

Whether the field should validate when it loses focus. This will cause fields to be validated\nas the user steps through the fields in the form regardless of whether they are making changes to those fields\nalong the way. See also validateOnChange.

\n"},"validateOnChange":{"!type":"bool","!doc":"

Specifies whether this field should be validated immediately whenever a change in its value is detected.\nIf the validation results in a change in the field's validity, a validitychange event will be\nfired. This allows the field to show feedback about the validity of its contents immediately as the user is\ntyping.

\n\n

When set to false, feedback will not be immediate. However the form will still be validated before submitting if\nthe clientValidation option to Ext.form.Basic.doAction is enabled, or if the field or form are validated\nmanually.

\n\n

See also Ext.form.field.Base.checkChangeEvents for controlling how changes to the field's value are\ndetected.

\n"},"value":{"!type":"?","!doc":"

A value to initialize this field with.

\n"}},"Ext_form_field_Checkbox_cfg":{"!proto":"Ext_form_field_Base_cfg","afterBoxLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the box label text. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"afterBoxLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the box label element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"beforeBoxLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the box label text. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"beforeBoxLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the box label element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"boxLabel":{"!type":"string","!doc":"

An optional text label that will appear next to the checkbox. Whether it appears before or after the checkbox is\ndetermined by the boxLabelAlign config.

\n"},"boxLabelAlign":{"!type":"string","!doc":"

The position relative to the checkbox where the boxLabel should appear. Recognized values are 'before'\nand 'after'.

\n"},"boxLabelAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the box label element (as attributes). If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"boxLabelCls":{"!type":"string","!doc":"

The CSS class to be applied to the boxLabel element

\n"},"checkChangeEvents":{"!type":"[string]","!doc":"

private overrides

\n"},"checked":{"!type":"bool","!doc":"

true if the checkbox should render initially checked

\n"},"checkedCls":{"!type":"string","!doc":"

The CSS class(es) added to the component's main element when it is in the checked state.\nYou can add your own class (checkedCls='myClass x-form-cb-checked') or replace the default\nclass altogether (checkedCls='myClass').

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"fieldCls":{"!type":"string","!doc":"

The default CSS class for the checkbox

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

note: {id} here is really {inputId}, but {cmpId} is available

\n"},"focusCls":{"!type":"string","!doc":"

The CSS class to use when the checkbox receives focus

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the checked value changes (can be used instead of handling the change event).

\n"},"inputType":{"!type":"string","!doc":"

The type attribute for input fields -- e.g. radio, text, password, file. The extended types\nsupported by HTML5 inputs (url, email, etc.) may also be used, though using them will cause older browsers to\nfall back to 'text'.

\n\n

The type 'password' must be used to render that field type currently -- there is no separate Ext component for\nthat. You can use Ext.form.field.File which creates a custom-rendered file upload field, but if you want\na plain unstyled file input you can use a Base with inputType:'file'.

\n"},"inputValue":{"!type":"string","!doc":"

The value that should go into the generated input element's value attribute and should be used as the parameter\nvalue when submitting as part of a form.

\n"},"scope":{"!type":"?","!doc":"

An object to use as the scope ('this' reference) of the handler function.

\n\n

Defaults to this Checkbox.

\n"},"uncheckedValue":{"!type":"string","!doc":"

If configured, this will be submitted as the checkbox's value during form submit if the checkbox is unchecked. By\ndefault this is undefined, which results in nothing being submitted for the checkbox field when the form is\nsubmitted (the default behavior of HTML checkboxes).

\n"}},"Ext_form_field_ComboBox_cfg":{"!proto":"Ext_form_field_Picker_cfg","allQuery":{"!type":"string","!doc":"

The text query to send to the server to return all records for the list with no filtering

\n"},"anyMatch":{"!type":"bool","!doc":"

Configure as true to allow match the typed characters at any position in the valueField's value.

\n"},"autoSelect":{"!type":"bool","!doc":"

true to automatically highlight the first result gathered by the data store in the dropdown list when it is\nopened. A false value would cause nothing in the list to be highlighted automatically, so\nthe user would have to manually highlight an item before pressing the enter or tab key to\nselect it (unless the value of (typeAhead) were true), or use the mouse to select a value.

\n"},"caseSensitive":{"!type":"bool","!doc":"

Configure as true to make the filtering match with exact case matching

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"defaultListConfig":{"!type":"?","!doc":"

Set of options that will be used as defaults for the user-configured listConfig object.

\n"},"delimiter":{"!type":"string","!doc":"

The character(s) used to separate the display values of multiple selected items when\nmultiSelect = true.

\n"},"displayField":{"!type":"string","!doc":"

The underlying data field name to bind to this ComboBox.

\n\n

See also valueField.

\n"},"enableRegEx":{"!type":"bool","!doc":"

When queryMode is 'local' only

\n\n

Set to true to have the ComboBox use the typed value as a RegExp source to filter the store to get possible matches.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

The content of the field body is defined by this config option.

\n"},"forceSelection":{"!type":"bool","!doc":"

true to restrict the selected value to one of the values in the list, false to allow the user to set\narbitrary text into the field.

\n"},"growToLongestValue":{"!type":"bool","!doc":"

false to not allow the component to resize itself when its data changes\n(and its grow property is true)

\n"},"hiddenDataCls":{"!type":"string","!doc":"

CSS class used to find the hiddenDataEl

\n"},"hiddenName":{"!type":"string","!doc":"

The name of an underlying hidden field which will be synchronized with the underlying value of the combo.\nThis option is useful if the combo is part of a form element doing a regular form post. The hidden field\nwill not be created unless a hiddenName is specified.

\n"},"listConfig":{"!type":"?","!doc":"

An optional set of configuration properties that will be passed to the Ext.view.BoundList's constructor.\nAny configuration that is valid for BoundList can be included. Some of the more useful ones are:

\n\n\n\n"},"minChars":{"!type":"number","!doc":"

The minimum number of characters the user must type before autocomplete and typeAhead activate.

\n\n

Defaults to 4 if queryMode = 'remote' or 0 if queryMode = 'local',\ndoes not apply if editable = false.

\n"},"multiSelect":{"!type":"bool","!doc":"

If set to true, allows the combo field to hold more than one value at a time, and allows selecting multiple\nitems from the dropdown list. The combo's text field will show all selected values separated by the\ndelimiter.

\n"},"pageSize":{"!type":"number","!doc":"

If greater than 0, a Ext.toolbar.Paging is displayed in the footer of the dropdown list and the\nfilter queries will execute with page start and limit\nparameters. Only applies when queryMode = 'remote'.

\n"},"queryCaching":{"!type":"bool","!doc":"

When true, this prevents the combo from re-querying (either locally or remotely) when the current query\nis the same as the previous query.

\n"},"queryDelay":{"!type":"number","!doc":"

The length of time in milliseconds to delay between the start of typing and sending the query to filter the\ndropdown list.

\n\n

Defaults to 500 if queryMode = 'remote' or 10 if queryMode = 'local'

\n"},"queryMode":{"!type":"string","!doc":"

The mode in which the ComboBox uses the configured Store. Acceptable values are:

\n\n\n\n"},"queryParam":{"!type":"string","!doc":"

Name of the parameter used by the Store to pass the typed string when the ComboBox is configured with\nqueryMode: 'remote'. If explicitly set to a falsy value it will not be sent.

\n"},"selectOnTab":{"!type":"bool","!doc":"

Whether the Tab key should select the currently highlighted item.

\n"},"store":{"!type":"+Ext.data.Store|string|[?]","!doc":"

The data source to which this combo is bound. Acceptable values for this property are:

\n\n\n\n\n

See also queryMode.

\n"},"transform":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The id, DOM node or Ext.Element of an existing HTML <select> element to convert into a ComboBox. The\ntarget select's options will be used to build the options in the ComboBox dropdown; a configured store\nwill take precedence over this.

\n"},"triggerAction":{"!type":"string","!doc":"

The action to execute when the trigger is clicked.

\n\n\n\n\n

See also queryParam.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the triggerBaseCls\nby default and triggerCls will be appended if specified.

\n"},"typeAhead":{"!type":"bool","!doc":"

true to populate and autoselect the remainder of the text being typed after a configurable delay\n(typeAheadDelay) if it matches a known value.

\n"},"typeAheadDelay":{"!type":"number","!doc":"

The length of time in milliseconds to wait until the typeahead text is displayed if typeAhead = true

\n"},"valueField":{"!type":"string","!doc":"

The underlying data value name to bind to this ComboBox.

\n\n

Note: use of a valueField requires the user to make a selection in order for a value to be mapped. See also\ndisplayField.

\n\n

Defaults to match the value of the displayField config.

\n"},"valueNotFoundText":{"!type":"string","!doc":"

When using a name/value combo, if the value passed to setValue is not found in the store, valueNotFoundText will\nbe displayed as the field text if defined. If this default text is used, it means there\nis no value set and no validation will occur on this field.

\n"}},"Ext_form_field_Date_cfg":{"!proto":"Ext_form_field_Picker_cfg","altFormats":{"!type":"string","!doc":"

Multiple date formats separated by \"|\" to try when parsing a user input value and it does not match the defined\nformat.

\n"},"disabledDates":{"!type":"[string]","!doc":"

An array of \"dates\" to disable, as strings. These strings will be used to build a dynamic regular expression so\nthey are very powerful. Some examples:

\n\n
// disable these exact dates:\ndisabledDates: [\"03/08/2003\", \"09/16/2003\"]\n// disable these days for every year:\ndisabledDates: [\"03/08\", \"09/16\"]\n// only match the beginning (useful if you are using short years):\ndisabledDates: [\"^03/08\"]\n// disable every day in March 2006:\ndisabledDates: [\"03/../2006\"]\n// disable every day in every March:\ndisabledDates: [\"^03\"]\n
\n\n

Note that the format of the dates included in the array should exactly match the format config. In order\nto support regular expressions, if you are using a date format that has \".\" in it, you will have\nto escape the dot when restricting dates. For example: [\"03\\\\.08\\\\.03\"].

\n"},"disabledDatesText":{"!type":"string","!doc":"

The tooltip text to display when the date falls on a disabled date.

\n"},"disabledDays":{"!type":"[number]","!doc":"

An array of days to disable, 0 based. Some examples:

\n\n
// disable Sunday and Saturday:\ndisabledDays:  [0, 6]\n// disable weekdays:\ndisabledDays: [1,2,3,4,5]\n
\n"},"disabledDaysText":{"!type":"string","!doc":"

The tooltip to display when the date falls on a disabled day.

\n"},"format":{"!type":"string","!doc":"

The default date format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse.

\n"},"grow":{"!type":"bool"},"growMax":{"!type":"number"},"growMin":{"!type":"number"},"invalidText":{"!type":"string","!doc":"

The error text to display when the date in the field is invalid.

\n"},"matchFieldWidth":{"!type":"bool","!doc":"

Whether the picker dropdown's width should be explicitly set to match the width of the field. Defaults to true.

\n"},"maxText":{"!type":"string","!doc":"

The error text to display when the date in the cell is after maxValue.

\n"},"maxValue":{"!type":"+Date|string","!doc":"

The maximum allowed date. Can be either a Javascript date object or a string date in a valid format.

\n"},"minText":{"!type":"string","!doc":"

The error text to display when the date in the cell is before minValue.

\n"},"minValue":{"!type":"+Date|string","!doc":"

The minimum allowed date. Can be either a Javascript date object or a string date in a valid format.

\n"},"showToday":{"!type":"bool","!doc":"

false to hide the footer area of the Date picker containing the Today button and disable the keyboard handler for\nspacebar that selects the current date.

\n"},"startDay":{"!type":"number","!doc":"

Day index at which the week should begin, 0-based.

\n\n

Defaults to 0 (Sunday).

\n"},"submitFormat":{"!type":"string","!doc":"

The date format string which will be submitted to the server. The format must be valid according to\nExt.Date.parse.

\n\n

Defaults to format.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the class 'x-form-trigger'\nand triggerCls will be appended if specified (default class displays a calendar icon).

\n"},"useStrict":{"!type":"bool","!doc":"

True to enforce strict date parsing to prevent the default Javascript \"date rollover\".\nDefaults to the useStrict parameter set on Ext.Date\nSee Ext.Date.parse.

\n"}},"Ext_form_field_Display_cfg":{"!proto":"Ext_form_field_Base_cfg","checkChangeBuffer":{"!type":"number"},"checkChangeEvents":{"!type":"number"},"disabled":{"!type":"bool"},"fieldBodyCls":{"!type":"string","!doc":"

An extra CSS class to be applied to the body content element in addition to baseBodyCls.

\n"},"fieldCls":{"!type":"string","!doc":"

The default CSS class for the field.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

The content of the field body is defined by this config option.

\n"},"htmlEncode":{"!type":"bool","!doc":"

True to escape HTML in text when rendering it.

\n"},"inputType":{"!type":"string"},"readOnly":{"!type":"bool"},"renderer":{"!type":"fn()","!doc":"

A function to transform the raw value for display in the field. The function will receive 2 arguments, the raw value\nand the Ext.form.field.Display object.

\n"},"scope":{"!type":"?","!doc":"

The scope to execute the renderer function. Defaults to this.

\n"},"submitValue":{"!type":"bool","!doc":"

Setting this to false will prevent the field from being submitted even when it is\nnot disabled.

\n"},"validateOnChange":{"!type":"bool"}},"Ext_form_field_File_cfg":{"!proto":"Ext_form_field_Trigger_cfg","buttonConfig":{"!type":"?","!doc":"

A standard Ext.button.Button config object.

\n"},"buttonMargin":{"!type":"number","!doc":"

The number of pixels of space reserved between the button and the text field. Note that this only\napplies if buttonOnly = false.

\n"},"buttonOnly":{"!type":"bool","!doc":"

True to display the file upload field as a button with no visible text field. If true, all\ninherited Text members will still be available.

\n"},"buttonText":{"!type":"string","!doc":"

The button text to display on the upload button. Note that if you supply a value for\nbuttonConfig, the buttonConfig.text value will be used instead if available.

\n"},"clearOnSubmit":{"!type":"bool","!doc":"

True to clear the selected file value when the form this field belongs to\nis submitted to the server.

\n"},"componentLayout":{"!type":"string|?","!doc":"

private

\n"},"readOnly":{"!type":"bool","!doc":"

Unlike with other form fields, the readOnly config defaults to true in File field.

\n"}},"Ext_form_field_FileButton_cfg":{"!proto":"Ext_button_Button_cfg","cls":{"!type":"string","!doc":"

A CSS class string to apply to the button's main element.

\n"},"preventDefault":{"!type":"bool","!doc":"

True to prevent the default action when the clickEvent is processed.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"}},"Ext_form_field_Hidden_cfg":{"!proto":"Ext_form_field_Base_cfg","hidden":{"!type":"bool","!doc":"

true to hide the component.

\n"},"hideLabel":{"!type":"bool","!doc":"

Set to true to completely hide the label element (fieldLabel and labelSeparator). Also see\nhideEmptyLabel, which controls whether space will be reserved for an empty fieldLabel.

\n"},"inputType":{"!type":"string","!doc":"

private

\n"}},"Ext_form_field_HtmlEditor_cfg":{"!proto":"Ext_form_FieldContainer_cfg","afterIFrameTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the iframe element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"afterTextAreaTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the textarea element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"allowDomMove":{"!type":"bool"},"applyTo":{"!type":"string"},"autoCreate":{"!type":"string"},"beforeIFrameTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the iframe element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"beforeTextAreaTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the textarea element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"createLinkText":{"!type":"string","!doc":"

The default text for the create link prompt

\n"},"defaultButtonUI":{"!type":"string","!doc":"

A default ui to use for the HtmlEditor's toolbar\nButtons

\n"},"defaultLinkValue":{"!type":"string","!doc":"

The default value for the create link prompt

\n"},"defaultValue":{"!type":"string","!doc":"

A default value to be put into the editor to resolve focus issues.

\n\n

Defaults to (Non-breaking space) in Opera and IE6,\n(Zero-width space) in all other browsers.

\n"},"disabled":{"!type":"bool","!doc":"

True to disable the field. Disabled Fields will not be submitted.

\n"},"enableAlignments":{"!type":"bool","!doc":"

Enable the left, center, right alignment buttons

\n"},"enableColors":{"!type":"bool","!doc":"

Enable the fore/highlight color buttons

\n"},"enableFont":{"!type":"bool","!doc":"

Enable font selection. Not available in Safari 2.

\n"},"enableFontSize":{"!type":"bool","!doc":"

Enable the increase/decrease font size buttons

\n"},"enableFormat":{"!type":"bool","!doc":"

Enable the bold, italic and underline buttons

\n"},"enableLinks":{"!type":"bool","!doc":"

Enable the create link button. Not available in Safari 2.

\n"},"enableLists":{"!type":"bool","!doc":"

Enable the bullet and numbered list buttons. Not available in Safari 2.

\n"},"enableSourceEdit":{"!type":"bool","!doc":"

Enable the switch to source edit button. Not available in Safari 2.

\n"},"fieldCls":{"!type":"string"},"focusCls":{"!type":"string"},"fontFamilies":{"!type":"[string]","!doc":"

An array of available font families

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Component's encapsulating DOM element will be hidden. Values may be:

\n\n\n\n"},"iframeAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the iframe element (as attributes). If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"inputType":{"!type":"string"},"invalidCls":{"!type":"string"},"invalidText":{"!type":"string"},"msgFx":{"!type":"string"},"name":{"!type":"string","!doc":"

The name of the field. By default this is used as the parameter name when including the\nfield value in a form submit(). To prevent the field from\nbeing included in the form submit, set submitValue to false.

\n"},"readOnly":{"!type":"string"},"submitValue":{"!type":"bool","!doc":"

Setting this to false will prevent the field from being submitted even when it is\nnot disabled.

\n"},"tabIndex":{"!type":"string"},"validateOnChange":{"!type":"bool","!doc":"

Specifies whether this field should be validated immediately whenever a change in its value is detected.\nIf the validation results in a change in the field's validity, a validitychange event will be\nfired. This allows the field to show feedback about the validity of its contents immediately as the user is\ntyping.

\n\n

When set to false, feedback will not be immediate. However the form will still be validated before submitting if\nthe clientValidation option to Ext.form.Basic.doAction is enabled, or if the field or form are validated\nmanually.

\n\n

See also Ext.form.field.Base.checkChangeEvents for controlling how changes to the field's value are\ndetected.

\n"},"value":{"!type":"?","!doc":"

A value to initialize this field with.

\n"}},"Ext_form_field_Number_cfg":{"!proto":"Ext_form_field_Spinner_cfg","allowDecimals":{"!type":"bool","!doc":"

False to disallow decimal values

\n"},"allowExponential":{"!type":"bool","!doc":"

Set to false to disallow Exponential number notation

\n"},"autoStripChars":{"!type":"bool","!doc":"

True to automatically strip not allowed characters from the field.

\n"},"baseChars":{"!type":"string","!doc":"

The base set of characters to evaluate as valid numbers.

\n"},"decimalPrecision":{"!type":"number","!doc":"

The maximum precision to display after the decimal separator

\n"},"decimalSeparator":{"!type":"string","!doc":"

Character(s) to allow as the decimal separator

\n"},"maskRe":{"!type":"+RegExp"},"maxText":{"!type":"string","!doc":"

Error text to display if the maximum value validation fails.

\n"},"maxValue":{"!type":"number","!doc":"

The maximum allowed value. Will be used by the field's validation logic, and for\nenabling/disabling the up spinner button.

\n\n

Defaults to Number.MAX_VALUE.

\n"},"minText":{"!type":"string","!doc":"

Error text to display if the minimum value validation fails.

\n"},"minValue":{"!type":"number","!doc":"

The minimum allowed value. Will be used by the field's validation logic,\nand for enabling/disabling the down spinner button.

\n\n

Defaults to Number.NEGATIVE_INFINITY.

\n"},"nanText":{"!type":"string","!doc":"

Error text to display if the value is not a valid number. For example, this can happen if a valid character like\n'.' or '-' is left in the field with no number.

\n"},"negativeText":{"!type":"string","!doc":"

Error text to display if the value is negative and minValue is set to 0. This is used instead of the\nminText in that circumstance only.

\n"},"step":{"!type":"number","!doc":"

Specifies a numeric interval by which the field's value will be incremented or decremented when the user invokes\nthe spinner.

\n"},"stripCharsRe":{"!type":"+RegExp"},"submitLocaleSeparator":{"!type":"bool","!doc":"

False to ensure that the getSubmitValue method strips\nalways uses . as the separator, regardless of the decimalSeparator\nconfiguration.

\n"}},"Ext_form_field_Picker_cfg":{"!proto":"Ext_form_field_Trigger_cfg","editable":{"!type":"bool","!doc":"

False to prevent the user from typing text directly into the field; the field can only have its value set via\nselecting a value from the picker. In this state, the picker can also be opened by clicking directly on the input\nfield itself.

\n"},"matchFieldWidth":{"!type":"bool","!doc":"

Whether the picker dropdown's width should be explicitly set to match the width of the field. Defaults to true.

\n"},"openCls":{"!type":"string","!doc":"

A class to be added to the field's bodyEl element when the picker is opened.

\n"},"pickerAlign":{"!type":"string","!doc":"

The alignment position with which to align the picker. Defaults to \"tl-bl?\"

\n"},"pickerOffset":{"!type":"[number]","!doc":"

An offset [x,y] to use in addition to the pickerAlign when positioning the picker.\nDefaults to undefined.

\n"}},"Ext_form_field_Radio_cfg":{"!proto":"Ext_form_field_Checkbox_cfg","focusCls":{"!type":"string","!doc":"

The CSS class to use when the radio field receives focus

\n"},"inputType":{"!type":"string","!doc":"

private

\n"},"uncheckedValue":{"!type":"string"}},"Ext_form_field_Spinner_cfg":{"!proto":"Ext_form_field_Trigger_cfg","keyNavEnabled":{"!type":"bool","!doc":"

Specifies whether the up and down arrow keys should trigger spinning up and down. Defaults to true.

\n"},"mouseWheelEnabled":{"!type":"bool","!doc":"

Specifies whether the mouse wheel should trigger spinning up and down while the field has focus.\nDefaults to true.

\n"},"repeatTriggerClick":{"!type":"bool","!doc":"

Whether a click repeater should be attached to the spinner buttons.\nDefaults to true.

\n"},"spinDownEnabled":{"!type":"bool","!doc":"

Specifies whether the down spinner button is enabled. Defaults to true. To change this after the component is\ncreated, use the setSpinDownEnabled method.

\n"},"spinUpEnabled":{"!type":"bool","!doc":"

Specifies whether the up spinner button is enabled. Defaults to true. To change this after the component is\ncreated, use the setSpinUpEnabled method.

\n"}},"Ext_form_field_Text_cfg":{"!proto":"Ext_form_field_Base_cfg","allowBlank":{"!type":"bool","!doc":"

Specify false to validate that the value's length must be > 0. If true, then a blank value is always taken to be valid regardless of any vtype\nvalidation that may be applied.

\n\n

If vtype validation must still be applied to blank values, configure validateBlank as true;

\n"},"allowOnlyWhitespace":{"!type":"bool","!doc":"

Specify false to automatically trim the value before validating\nthe whether the value is blank. Setting this to false automatically\nsets allowBlank to false.

\n"},"blankText":{"!type":"string","!doc":"

The error text to display if the allowBlank validation fails

\n"},"disableKeyFilter":{"!type":"bool","!doc":"

Specify true to disable input keystroke filtering

\n"},"emptyCls":{"!type":"string","!doc":"

The CSS class to apply to an empty field to style the emptyText.\nThis class is automatically added and removed as needed depending on the current field value.

\n"},"emptyText":{"!type":"string","!doc":"

The default text to place into an empty field.

\n\n

Note that normally this value will be submitted to the server if this field is enabled; to prevent this you can\nset the submitEmptyText option of Ext.form.Basic.submit to\nfalse.

\n\n

Also note that if you use inputType:'file', emptyText is not supported and should be\navoided.

\n\n

Note that for browsers that support it, setting this property will use the HTML 5 placeholder attribute, and for\nolder browsers that don't support the HTML 5 placeholder attribute the value will be placed directly into the input\nelement itself as the raw value. This means that older browsers will obfuscate the emptyText value for\npassword input fields.

\n"},"enableKeyEvents":{"!type":"bool","!doc":"

true to enable the proxying of key events for the HTML input field

\n"},"enforceMaxLength":{"!type":"bool","!doc":"

True to set the maxLength property on the underlying input field. Defaults to false

\n"},"grow":{"!type":"bool","!doc":"

true if this field should automatically grow and shrink to its content

\n"},"growAppend":{"!type":"string","!doc":"

A string that will be appended to the field's current value for the purposes of calculating the target field\nsize. Only used when the grow config is true. Defaults to a single capital \"W\" (the widest character in\ncommon fonts) to leave enough space for the next typed character and avoid the field value shifting before the\nwidth is adjusted.

\n"},"growMax":{"!type":"number","!doc":"

The maximum width to allow when grow = true

\n"},"growMin":{"!type":"number","!doc":"

The minimum width to allow when grow = true

\n"},"maskRe":{"!type":"+RegExp","!doc":"

An input mask regular expression that will be used to filter keystrokes (character being\ntyped) that do not match.\nNote: It does not filter characters already in the input.

\n"},"maxLength":{"!type":"number","!doc":"

Maximum input field length allowed by validation. This behavior is intended to\nprovide instant feedback to the user by improving usability to allow pasting and editing or overtyping and back\ntracking. To restrict the maximum number of characters that can be entered into the field use the\nenforceMaxLength option.

\n\n

Defaults to Number.MAX_VALUE.

\n"},"maxLengthText":{"!type":"string","!doc":"

Error text to display if the maximum length validation fails

\n"},"minLength":{"!type":"number","!doc":"

Minimum input field length required

\n"},"minLengthText":{"!type":"string","!doc":"

Error text to display if the minimum length validation fails.

\n"},"regex":{"!type":"+RegExp","!doc":"

A JavaScript RegExp object to be tested against the field value during validation.\nIf the test fails, the field will be marked invalid using\neither regexText or invalidText.

\n"},"regexText":{"!type":"string","!doc":"

The error text to display if regex is used and the test fails during validation

\n"},"requiredCls":{"!type":"string","!doc":"

The CSS class to apply to a required field, i.e. a field where allowBlank is false.

\n"},"selectOnFocus":{"!type":"bool","!doc":"

true to automatically select any existing field text when the field receives input focus

\n"},"size":{"!type":"number","!doc":"

An initial value for the 'size' attribute on the text input element. This is only used if the field has no\nconfigured width and is not given a width by its container's layout. Defaults to 20.

\n"},"stripCharsRe":{"!type":"+RegExp","!doc":"

A JavaScript RegExp object used to strip unwanted content from the value\nduring input. If stripCharsRe is specified,\nevery character sequence matching stripCharsRe will be removed.

\n"},"validateBlank":{"!type":"bool","!doc":"

Specify as true to modify the behaviour of allowBlank so that blank values are not passed as valid, but are subject to any configure vtype validation.

\n"},"validator":{"!type":"fn()","!doc":"

A custom validation function to be called during field validation (getErrors).\nIf specified, this function will be called first, allowing the developer to override the default validation\nprocess.

\n\n

This function will be passed the following parameters:

\n"},"vtype":{"!type":"string","!doc":"

A validation type name as defined in Ext.form.field.VTypes

\n"},"vtypeText":{"!type":"string","!doc":"

A custom error message to display in place of the default message provided for the vtype currently\nset for this field. Note: only applies if vtype is set, else ignored.

\n"}},"Ext_form_field_TextArea_cfg":{"!proto":"Ext_form_field_Text_cfg","cols":{"!type":"number","!doc":"

An initial value for the 'cols' attribute on the textarea element. This is only used if the component has no\nconfigured width and is not given a width by its container's layout.

\n"},"componentLayout":{"!type":"string|?","!doc":"

private

\n"},"enterIsSpecial":{"!type":"bool","!doc":"

True if you want the ENTER key to be classed as a special key and the specialkey event to be fired\nwhen ENTER is pressed.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

This template includes a \\n after <textarea> opening tag so that an\ninitial value starting with \\n does not lose its first character when\nthe markup is parsed. Both textareas below have the same value:

\n\n
<textarea>initial value</textarea>\n\n<textarea>\ninitial value\n</textarea>\n
\n"},"growAppend":{"!type":"string","!doc":"

A string that will be appended to the field's current value for the purposes of calculating the target field\nsize. Only used when the grow config is true. Defaults to a newline for TextArea to ensure there is\nalways a space below the current line.

\n"},"growMax":{"!type":"number","!doc":"

The maximum height to allow when grow=true

\n"},"growMin":{"!type":"number","!doc":"

The minimum height to allow when grow=true

\n"},"preventScrollbars":{"!type":"bool","!doc":"

true to prevent scrollbars from appearing regardless of how much text is in the field. This option is only\nrelevant when grow is true. Equivalent to setting overflow: hidden.

\n"},"rows":{"!type":"number","!doc":"

An initial value for the 'rows' attribute on the textarea element. This is only used if the component has no\nconfigured height and is not given a height by its container's layout. Defaults to 4.

\n"}},"Ext_form_field_Time_cfg":{"!proto":"Ext_form_field_ComboBox_cfg","altFormats":{"!type":"string","!doc":"

Multiple date formats separated by \"|\" to try when parsing a user input value and it doesn't match the defined\nformat.

\n"},"displayField":{"!type":"string","!doc":"

The underlying data field name to bind to this ComboBox.

\n\n

See also valueField.

\n"},"format":{"!type":"string","!doc":"

The default time format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse.

\n\n

Defaults to 'g:i A', e.g., '3:15 PM'. For 24-hour time format try 'H:i' instead.

\n"},"increment":{"!type":"number","!doc":"

The number of minutes between each time value in the list.

\n"},"invalidText":{"!type":"string","!doc":"

The error text to display when the time in the field is invalid.

\n"},"maxText":{"!type":"string","!doc":"

The error text to display when the entered time is after maxValue.

\n"},"maxValue":{"!type":"+Date|string","!doc":"

The maximum allowed time. Can be either a Javascript date object with a valid time value or a string time in a\nvalid format -- see format and altFormats.

\n"},"minText":{"!type":"string","!doc":"

The error text to display when the entered time is before minValue.

\n"},"minValue":{"!type":"+Date|string","!doc":"

The minimum allowed time. Can be either a Javascript date object with a valid time value or a string time in a\nvalid format -- see format and altFormats.

\n"},"pickerMaxHeight":{"!type":"number","!doc":"

The maximum height of the Ext.picker.Time dropdown.

\n"},"queryMode":{"!type":"string","!doc":"

The mode in which the ComboBox uses the configured Store. Acceptable values are:

\n\n\n\n"},"selectOnTab":{"!type":"bool","!doc":"

Whether the Tab key should select the currently highlighted item.

\n"},"snapToIncrement":{"!type":"bool","!doc":"

Specify as true to enforce that only values on the increment boundary are accepted.

\n"},"submitFormat":{"!type":"string","!doc":"

The date format string which will be submitted to the server. The format must be valid according to\nExt.Date.parse.

\n\n

Defaults to format.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the triggerBaseCls\nby default and triggerCls will be appended if specified.

\n"},"valueField":{"!type":"string","!doc":"

The underlying data value name to bind to this ComboBox.

\n\n

Note: use of a valueField requires the user to make a selection in order for a value to be mapped. See also\ndisplayField.

\n\n

Defaults to match the value of the displayField config.

\n"}},"Ext_form_field_Trigger_cfg":{"!proto":"Ext_form_field_Text_cfg","componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"editable":{"!type":"bool","!doc":"

false to prevent the user from typing text directly into the field; the field can only have its value set via an\naction invoked by the trigger.

\n"},"grow":{"!type":"bool"},"growMax":{"!type":"number"},"growMin":{"!type":"number"},"hideTrigger":{"!type":"bool","!doc":"

true to hide the trigger element and display only the base text field

\n"},"readOnly":{"!type":"bool","!doc":"

true to prevent the user from changing the field, and hides the trigger. Supercedes the editable and hideTrigger\noptions if the value is true.

\n"},"repeatTriggerClick":{"!type":"bool","!doc":"

true to attach a click repeater to the trigger.

\n"},"selectOnFocus":{"!type":"bool","!doc":"

true to select any existing text in the field immediately on focus. Only applies when\neditable = true

\n"},"triggerBaseCls":{"!type":"string","!doc":"

The base CSS class that is always added to the trigger button. The triggerCls will be appended in\naddition to this class.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the triggerBaseCls\nby default and triggerCls will be appended if specified.

\n"},"triggerNoEditCls":{"!type":"string","!doc":"

The CSS class that is added to the text field when component is read-only or not editable.

\n"},"triggerWrapCls":{"!type":"string","!doc":"

The CSS class that is added to the div wrapping the trigger button(s).

\n"}},"Ext_fx_Anim_cfg":{"!proto":"Ext_Base_cfg","alternate":{"!type":"bool","!doc":"

Used in conjunction with iterations to reverse the animation each time an iteration completes.

\n"},"callback":{"!type":"fn()","!doc":"

A function to be run after the animation has completed.

\n"},"delay":{"!type":"number","!doc":"

Time to delay before starting the animation.

\n"},"duration":{"!type":"number","!doc":"

Time in milliseconds for a single animation to last. If the iterations property is\nspecified, then each animate will take the same duration for each iteration.

\n"},"dynamic":{"!type":"bool","!doc":"

Currently only for Component Animation: Only set a component's outer element size bypassing layouts.\nSet to true to do full layouts for every frame of the animation.

\n"},"easing":{"!type":"string","!doc":"

This describes how the intermediate values used during a transition will be calculated.\nIt allows for a transition to change speed over its duration.

\n\n\n\n\n

Note that cubic-bezier will create a custom easing curve following the CSS3 transition-timing-function\nspecification. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2). All values must\nbe in the range [0, 1] or the definition is invalid.

\n"},"from":{"!type":"?","!doc":"

An object containing property/value pairs for the beginning of the animation. If not specified, the current state of the\nExt.fx.target will be used. For example:

\n\n
from: {\n    opacity: 0,       // Transparent\n    color: '#ffffff', // White\n    left: 0\n}\n
\n"},"iterations":{"!type":"number","!doc":"

Number of times to execute the animation.

\n"},"keyframes":{"!type":"?","!doc":"

Animation keyframes follow the CSS3 Animation configuration pattern. 'from' is always considered '0%' and 'to'\nis considered '100%'. Every keyframe declaration must have a keyframe rule for 0% and 100%, possibly defined using\n\"from\" or \"to\". A keyframe declaration without these keyframe selectors is invalid and will not be available for\nanimation. The keyframe declaration for a keyframe rule consists of properties and values. Properties that are unable to\nbe animated are ignored in these rules, with the exception of 'easing' which can be changed at each keyframe. For example:

\n\n
keyframes : {\n    '0%': {\n        left: 100\n    },\n    '40%': {\n        left: 150\n    },\n    '60%': {\n        left: 75\n    },\n    '100%': {\n        left: 100\n    }\n}\n
\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"reverse":{"!type":"bool","!doc":"

Run the animation from the end to the beginning\nDefaults to false.

\n"},"scope":{"!type":"fn()","!doc":"

The scope that the callback function will be called with

\n"},"target":{"!type":"string|?","!doc":"

The Ext.fx.target.Target to apply the animation to. This should only be specified when creating an Ext.fx.Anim directly.\nThe target does not need to be a Ext.fx.target.Target instance, it can be the underlying object. For example, you can\npass a Component, Element or Sprite as the target and the Anim will create the appropriate Ext.fx.target.Target object\nautomatically.

\n"},"to":{"!type":"?","!doc":"

An object containing property/value pairs for the end of the animation. For example:

\n\n
to: {\n    opacity: 1,       // Opaque\n    color: '#00ff00', // Green\n    left: 500\n}\n
\n"}},"Ext_grid_CellEditor_cfg":{"!proto":"Ext_Editor_cfg","alignment":{"!type":"string","!doc":"

The position to align to (see Ext.util.Positionable.alignTo for more details).

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"hideEl":{"!type":"bool","!doc":"

False to keep the bound element visible while the editor is displayed

\n"},"shadow":{"!type":"bool|string","!doc":"

\"sides\" for sides/bottom only, \"frame\" for 4-way shadow, and \"drop\" for bottom-right shadow.

\n"}},"Ext_grid_ColumnComponentLayout_cfg":{"!proto":"Ext_layout_component_Auto_cfg","setWidthInDom":{"!type":"bool","!doc":"

When publishing width of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"}},"Ext_grid_ColumnLayout_cfg":{"!proto":"Ext_layout_container_HBox_cfg"},"Ext_grid_Panel_cfg":{"!proto":"Ext_panel_Table_cfg","columns":{"!type":"[+Ext.grid.column.Column]|?","!doc":"

An array of column definition objects which define all columns that appear in this\ngrid. Each column definition provides the header text for the column, and a definition of where the data for that\ncolumn comes from.

\n\n

This can also be a configuration object for a {Ext.grid.header.Container HeaderContainer} which may override\ncertain default configurations if necessary. For example, the special layout may be overridden to use a simpler\nlayout, or one can set default values shared by all columns:

\n\n
columns: {\n    items: [\n        {\n            text: \"Column A\"\n            dataIndex: \"field_A\"\n        },{\n            text: \"Column B\",\n            dataIndex: \"field_B\"\n        }, \n        ...\n    ],\n    defaults: {\n        flex: 1\n    }\n}\n
\n"},"rowLines":{"!type":"bool","!doc":"

False to remove row line styling

\n"},"viewType":{"!type":"string","!doc":"

An xtype of view to use. This is automatically set to 'gridview' by Grid\nand to 'treeview' by Tree.

\n"}},"Ext_grid_RowEditor_cfg":{"!proto":"Ext_form_Panel_cfg","border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"hideMode":{"!type":"string","!doc":"

Change the hideMode to offsets so that we get accurate measurements when\nthe roweditor is hidden for laying out things like a TriggerField.

\n"}},"Ext_grid_RowEditorButtons_cfg":{"!proto":"Ext_container_Container_cfg","frame":{"!type":"bool","!doc":"

Specify as true to have the Component inject framing elements within the Component at render time to provide a\ngraphical rounded frame around the Component content.

\n\n

This is only necessary when running on outdated, or non standard-compliant browsers such as Microsoft's Internet\nExplorer prior to version 9 which do not support rounded corners natively.

\n\n

The extra space taken up by this framing is available from the read only property frameSize.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"}},"Ext_grid_View_cfg":{"!proto":"Ext_view_Table_cfg","autoScroll":{"!type":"bool","!doc":"

true to use overflow:'auto' on the components layout element and show scroll bars automatically when necessary,\nfalse to clip any overflowing content.\nThis should not be combined with overflowX or overflowY.

\n"},"stripeRows":{"!type":"bool","!doc":"

True to stripe the rows.

\n\n

This causes the CSS class x-grid-row-alt to be added to alternate rows of the grid. A default CSS rule is\nprovided which sets a background color, but you can override this with a rule which either overrides the\nbackground-color style using the !important modifier, or which uses a CSS selector of higher specificity.

\n"}},"Ext_grid_ViewDropZone_cfg":{"!proto":"Ext_view_DropZone_cfg"},"Ext_grid_column_Action_cfg":{"!proto":"Ext_grid_column_Column_cfg","altText":{"!type":"string","!doc":"

The alt text to use for the image element.

\n"},"disabled":{"!type":"bool","!doc":"

If true, the action will not respond to click events, and will be displayed semi-opaque.

\n\n

This Column may also be disabled on a row by row basis by configuring a isDisabled method.

\n"},"getClass":{"!type":"fn()","!doc":"

A function which returns the CSS class to apply to the icon image.

\n"},"getTip":{"!type":"fn()","!doc":"

A function which returns the tooltip string for any row.

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the icon is clicked.

\n"},"icon":{"!type":"string","!doc":"

The URL of an image to display as the clickable element in the column.

\n\n

Defaults to Ext.BLANK_IMAGE_URL.

\n"},"iconCls":{"!type":"string","!doc":"

A CSS class to apply to the icon image. To determine the class dynamically, configure the Column with\na getClass function.

\n"},"isDisabled":{"!type":"fn()","!doc":"

A function which determines whether the action item for any row is disabled and returns true or false.

\n"},"items":{"!type":"[?]","!doc":"

An Array which may contain multiple icon definitions, each element of which may contain:

\n"},"menuText":{"!type":"string","!doc":"

Text to display in this column's menu item if no text was specified as a header.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler, getClass, isDisabled and getTip fuctions are executed.\nDefaults to this Column.

\n"},"sortable":{"!type":"bool","!doc":"

False to disable sorting of this column. Whether local/remote sorting is used is specified in\nExt.data.Store.remoteSort.

\n"},"stopSelection":{"!type":"bool","!doc":"

Prevent grid selection upon mousedown.

\n"},"tooltip":{"!type":"string","!doc":"

A tooltip message to be displayed on hover. Ext.tip.QuickTipManager must\nhave been initialized.

\n\n

The tooltip may also be determined on a row by row basis by configuring a getTip method.

\n"}},"Ext_grid_column_Boolean_cfg":{"!proto":"Ext_grid_column_Column_cfg","falseText":{"!type":"string","!doc":"

The string returned by the renderer when the column value is falsey (but not undefined).

\n"},"trueText":{"!type":"string","!doc":"

The string returned by the renderer when the column value is not falsey.

\n"},"undefinedText":{"!type":"string","!doc":"

The string returned by the renderer when the column value is undefined.

\n"}},"Ext_grid_column_Column_cfg":{"!proto":"Ext_grid_header_Container_cfg","align":{"!type":"string","!doc":"

Sets the alignment of the header and rendered columns.\nPossible values are: 'left', 'center', and 'right'.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"columns":{"!type":"[?]","!doc":"

An optional array of sub-column definitions. This column becomes a group, and houses the columns defined in the\ncolumns config.

\n\n

Group columns may not be sortable. But they may be hideable and moveable. And you may move headers into and out\nof a group. Note that if all sub columns are dragged out of a group, the group is destroyed.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"dataIndex":{"!type":"string","!doc":"

The name of the field in the grid's Ext.data.Store's Ext.data.Model definition from\nwhich to draw the column's value. Required.

\n"},"detachOnRemove":{"!type":"bool","!doc":"

So that when removing from group headers which are then empty and then get destroyed, there's no child DOM left

\n"},"draggable":{"!type":"bool","!doc":"

False to disable drag-drop reordering of this column.

\n"},"editRenderer":{"!type":"fn()","!doc":"

A renderer to be used in conjunction with RowEditing. This renderer is used to\ndisplay a custom value for non-editable fields.

\n"},"editor":{"!type":"?|string","!doc":"

An optional xtype or config object for a Field to use for editing.\nOnly applicable if the grid is using an Editing plugin.

\n"},"emptyCellText":{"!type":"string","!doc":"

The text to diplay in empty cells (cells with a value of undefined, null, or '').

\n\n

Defaults to &#160; aka &nbsp;.

\n"},"field":{"!type":"?|string","!doc":"

Alias for editor.

\n"},"fixed":{"!type":"bool","!doc":"

True to prevent the column from being resizable.

\n"},"groupable":{"!type":"bool","!doc":"

If the grid uses a Ext.grid.feature.Grouping, this option may be used to disable the header menu\nitem to group by the column selected. By default, the header menu group option is enabled. Set to false to\ndisable (but still show) the group option in the header menu for the column.

\n"},"header":{"!type":"string","!doc":"

The header text.

\n"},"hideable":{"!type":"bool","!doc":"

False to prevent the user from hiding this column.

\n"},"lockable":{"!type":"bool","!doc":"

If the grid is configured with enableLocking, or has columns which are\nconfigured with a locked value, this option may be used to disable user-driven locking or unlocking\nof this column. This column will remain in the side into which its own locked configuration placed it.

\n"},"locked":{"!type":"bool","!doc":"

True to lock this column in place. Implicitly enables locking on the grid.\nSee also Ext.grid.Panel.enableLocking.

\n"},"menuDisabled":{"!type":"bool","!doc":"

True to disable the column header menu containing sort/hide options.

\n"},"menuText":{"!type":"string","!doc":"

The text to render in the column visibility selection menu for this column. If not\nspecified, will default to the text value.

\n"},"noWrap":{"!type":"bool","!doc":"

The default setting indicates that external CSS rules dictate that the title is white-space: nowrap and\ntherefore, width cannot affect the measured height by causing text wrapping. This is what the Sencha-supplied\nstyles set. If you change those styles to allow text wrapping, you must set this to false.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"renderer":{"!type":"string|fn()","!doc":"

A renderer is an 'interceptor' method which can be used to transform data (value, appearance, etc.)\nbefore it is rendered. Example:

\n\n
{\n    renderer: function(value){\n        if (value === 1) {\n            return '1 person';\n        }\n        return value + ' people';\n    }\n}\n
\n\n

Additionally a string naming an Ext.util.Format method can be passed:

\n\n
{\n    renderer: 'uppercase'\n}\n
\n"},"resizable":{"!type":"bool","!doc":"

False to prevent the column from being resizable.

\n"},"scope":{"!type":"?","!doc":"

The scope to use when calling the renderer function.

\n"},"sortable":{"!type":"bool","!doc":"

False to disable sorting of this column. Whether local/remote sorting is used is specified in\nExt.data.Store.remoteSort.

\n"},"stateId":{"!type":"string","!doc":"

An identifier which identifies this column uniquely within the owning grid's state.

\n\n

This does not have to be globally unique. A column's state is not saved standalone. It is encapsulated within\nthe owning grid's state.

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"},"text":{"!type":"string","!doc":"

The header text to be used as innerHTML (html tags are accepted) to display in the Grid.\nNote: to have a clickable header with no text displayed you can use the default of &#160; aka &nbsp;.

\n"},"tooltip":{"!type":"string","!doc":"

A tooltip to display for this column header

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' for QuickTips or 'title' for title attribute.

\n"}},"Ext_grid_column_Date_cfg":{"!proto":"Ext_grid_column_Column_cfg","format":{"!type":"string","!doc":"

A formatting string as used by Ext.Date.format to format a Date for this Column.

\n\n

Defaults to the default date from Ext.Date.defaultFormat which itself my be overridden\nin a locale file.

\n"}},"Ext_grid_column_Number_cfg":{"!proto":"Ext_grid_column_Column_cfg","format":{"!type":"string","!doc":"

A formatting string as used by Ext.util.Format.number to format a numeric value for this Column.

\n"}},"Ext_grid_column_RowNumberer_cfg":{"!proto":"Ext_grid_column_Column_cfg","align":{"!type":"string","!doc":"

Sets the alignment of the header and rendered columns.\nPossible values are: 'left', 'center', and 'right'.

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"dataIndex":{"!type":"string","!doc":"

The name of the field in the grid's Ext.data.Store's Ext.data.Model definition from\nwhich to draw the column's value. Required.

\n"},"draggable":{"!type":"bool","!doc":"

False to disable drag-drop reordering of this column.

\n"},"hideable":{"!type":"bool","!doc":"

False to prevent the user from hiding this column.

\n"},"lockable":{"!type":"bool","!doc":"

May not be moved from its preferred locked side when grid is enableLocking:true

\n"},"menuDisabled":{"!type":"bool","!doc":"

True to disable the column header menu containing sort/hide options.

\n"},"resizable":{"!type":"bool","!doc":"

private

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"},"text":{"!type":"string","!doc":"

Any valid text or HTML fragment to display in the header cell for the row number column.

\n"},"width":{"!type":"number","!doc":"

The default width in pixels of the row number column.

\n"}},"Ext_grid_column_Template_cfg":{"!proto":"Ext_grid_column_Column_cfg","tpl":{"!type":"string|+Ext.XTemplate","!doc":"

An XTemplate, or an XTemplate definition string to use to process a\nModel's data to produce a\ncolumn's rendered value.

\n"}},"Ext_grid_feature_AbstractSummary_cfg":{"!proto":"Ext_grid_feature_Feature_cfg","remoteRoot":{"!type":"string","!doc":"

The name of the property which contains the Array of summary objects.\nIt allows to use server-side calculated summaries.

\n"},"showSummaryRow":{"!type":"bool","!doc":"

True to show the summary row.

\n"}},"Ext_grid_feature_Feature_cfg":{"!proto":"Ext_util_Observable_cfg"},"Ext_grid_feature_RowBody_cfg":{"!proto":"Ext_grid_feature_Feature_cfg"},"Ext_grid_feature_RowWrap_cfg":{"!proto":"Ext_grid_feature_Feature_cfg"},"Ext_grid_feature_Summary_cfg":{"!proto":"Ext_grid_feature_AbstractSummary_cfg","dock":{"!type":"string","!doc":"

Configure 'top' or 'bottom' top create a fixed summary row either above or below the scrollable table.

\n"}},"Ext_grid_header_Container_cfg":{"!proto":"Ext_container_Container_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"defaultWidth":{"!type":"number","!doc":"

Width of the header if no width or flex is specified.

\n"},"detachOnRemove":{"!type":"bool","!doc":"

True to move any component to the detachedBody when the component is\nremoved from this container. This option is only applicable when the component is not destroyed while\nbeing removed, see autoDestroy and remove. If this option is set to false, the DOM\nof the component will remain in the current place until it is explicitly moved.

\n"},"enableColumnHide":{"!type":"bool","!doc":"

False to disable column hiding within this grid.

\n"},"sealed":{"!type":"bool","!doc":"

Specify as true to constrain column dragging so that a column cannot be dragged into or out of this column.

\n\n

Note that this config is only valid for column headers which contain child column headers, eg:\n {\n sealed: true\n text: 'ExtJS',\n columns: [{\n text: '3.0.4',\n dataIndex: 'ext304'\n }, {\n text: '4.1.0',\n dataIndex: 'ext410'\n }\n }

\n"},"sortable":{"!type":"bool","!doc":"

Provides the default sortable state for all Headers within this HeaderContainer.\nAlso turns on or off the menus in the HeaderContainer. Note that the menu is\nshared across every header and therefore turning it off will remove the menu\nitems for every header.

\n"},"weight":{"!type":"number","!doc":"

HeaderContainer overrides the default weight of 0 for all docked items to 100.\nThis is so that it has more priority over things like toolbars.

\n"}},"Ext_grid_locking_View_cfg":{"!proto":"Ext_Base_cfg","listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"}},"Ext_grid_plugin_BufferedRenderer_cfg":{"!proto":"Ext_AbstractPlugin_cfg","leadingBufferZone":{"!type":"number","!doc":"

The number of extra rows to render on the leading side of scrolling\noutside the numFromEdge buffer as scrolling proceeds.

\n"},"numFromEdge":{"!type":"number","!doc":"

The zone which causes new rows to be appended to the view. As soon as the edge\nof the rendered grid is this number of rows from the edge of the viewport, the view is moved.

\n"},"percentageFromEdge":{"!type":"number"},"scrollToLoadBuffer":{"!type":"number","!doc":"

This is the time in milliseconds to buffer load requests when scrolling the PagingScrollbar.

\n"},"synchronousRender":{"!type":"bool","!doc":"

By default, on detection of a scroll event which brings the end of the rendered table within\nnumFromEdge rows of the grid viewport, if the required rows are available in the Store,\nthe BufferedRenderer will render rows from the Store immediately before returning from the event handler.\nThis setting helps avoid the impression of whitespace appearing during scrolling.

\n\n

Set this to true to defer the render until the scroll event handler exits. This allows for faster\nscrolling, but also allows whitespace to be more easily scrolled into view.

\n"},"trailingBufferZone":{"!type":"number","!doc":"

The number of extra rows to render on the trailing side of scrolling\noutside the numFromEdge buffer as scrolling proceeds.

\n"},"variableRowHeight":{"!type":"bool","!doc":"

Configure as true if the row heights are not all the same height as the first row. Only configure this is needed - this will be if the\nrows contain unpredictably sized data, or you have changed the cell's text overflow stype to 'wrap'.

\n"}},"Ext_grid_plugin_CellEditing_cfg":{"!proto":"Ext_grid_plugin_Editing_cfg"},"Ext_grid_plugin_DragDrop_cfg":{"!proto":"Ext_AbstractPlugin_cfg","containerScroll":{"!type":"?|bool","!doc":"

true to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then both the DragZones and\nDropZone used by this plugin will only interact with other drag drop objects in the same group.

\n"},"dragGroup":{"!type":"string","!doc":"

The ddGroup to which the DragZone will belong.

\n\n

This defines which other DropZones the DragZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"dragText":{"!type":"string","!doc":"

The text to show while dragging.

\n\n

Two placeholders can be used in the text:

\n\n\n\n"},"dropGroup":{"!type":"string","!doc":"

The ddGroup to which the DropZone will belong.

\n\n

This defines which other DragZones the DropZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"enableDrag":{"!type":"bool","!doc":"

false to disallow dragging items from the View.

\n"},"enableDrop":{"!type":"bool","!doc":"

false to disallow the View from accepting drop gestures.

\n"}},"Ext_grid_plugin_Editing_cfg":{"!proto":"Ext_AbstractPlugin_cfg","clicksToEdit":{"!type":"number","!doc":"

The number of clicks on a grid required to display the editor.\nThe only accepted values are 1 and 2.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"triggerEvent":{"!type":"string","!doc":"

The event which triggers editing. Supercedes the clicksToEdit configuration. Maybe one of:

\n\n\n\n"}},"Ext_grid_plugin_HeaderReorderer_cfg":{"!proto":"Ext_AbstractPlugin_cfg"},"Ext_grid_plugin_HeaderResizer_cfg":{"!proto":"Ext_AbstractPlugin_cfg","dynamic":{"!type":"bool","!doc":"

True to resize on the fly rather than using a proxy marker.

\n"}},"Ext_grid_plugin_RowExpander_cfg":{"!proto":"Ext_AbstractPlugin_cfg","expandOnDblClick":{"!type":"bool","!doc":"

true to toggle a row between expanded/collapsed when double clicked\n(defaults to true).

\n"},"expandOnEnter":{"!type":"bool","!doc":"

true to toggle selected row(s) between expanded/collapsed when the enter\nkey is pressed (defaults to true).

\n"},"selectRowOnExpand":{"!type":"bool","!doc":"

true to select a row when clicking on the expander icon\n(defaults to false).

\n"}},"Ext_grid_property_Grid_cfg":{"!proto":"Ext_grid_Panel_cfg","columnLines":{"!type":"bool","!doc":"

Adds column line styling

\n"},"columns":{"!type":"?"},"customEditors":{"!type":"?","!doc":"

An object containing name/value pairs of custom editor type definitions that allow\nthe grid to support additional types of editable fields. By default, the grid supports strongly-typed editing\nof strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and\nassociated with a custom input control by specifying a custom editor. The name of the editor\ntype should correspond with the name of the property that will use the editor. Example usage:

\n\n
var grid = new Ext.grid.property.Grid({\n\n    // Custom editors for certain property names\n    customEditors: {\n        evtStart: Ext.create('Ext.form.TimeField', {selectOnFocus: true})\n    },\n\n    // Displayed name for property names in the source\n    propertyNames: {\n        evtStart: 'Start Time'\n    },\n\n    // Data object containing properties to edit\n    source: {\n        evtStart: '10:00 AM'\n    }\n});\n
\n"},"customRenderers":{"!type":"?","!doc":"

An object containing name/value pairs of custom renderer type definitions that allow\nthe grid to support custom rendering of fields. By default, the grid supports strongly-typed rendering\nof strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and\nassociated with the type of the value. The name of the renderer type should correspond with the name of the property\nthat it will render. Example usage:

\n\n
var grid = Ext.create('Ext.grid.property.Grid', {\n    customRenderers: {\n        Available: function(v){\n            if (v) {\n                return '<span style=\"color: green;\">Yes</span>';\n            } else {\n                return '<span style=\"color: red;\">No</span>';\n            }\n        }\n    },\n    source: {\n        Available: true\n    }\n});\n
\n"},"enableColumnMove":{"!type":"bool","!doc":"

private config overrides

\n"},"inferTypes":{"!type":"bool","!doc":"

True to automatically infer the type based on the initial value passed\nfor each field. This ensures the editor remains the correct type even if the value is blanked\nand becomes empty.

\n"},"nameColumnWidth":{"!type":"number|string","!doc":"

Specify the width for the name column. The value column will take any remaining space.

\n"},"nameField":{"!type":"string","!doc":"

The name of the field from the property store to use as the property field name.\nThis may be useful if you do not configure the property Grid from an object, but use your own store configuration.

\n"},"propertyNames":{"!type":"?","!doc":"

An object containing custom property name/display name pairs.\nIf specified, the display name will be shown in the name column instead of the property name.

\n"},"source":{"!type":"?","!doc":"

A data object to use as the data source of the grid (see setSource for details).

\n"},"sourceConfig":{"!type":"?","!doc":"

This option allows various configurations to be set for each field in the property grid.\nNone of these configurations are required

\n\n

displayName

\n\n

A custom name to appear as label for this field. If specified, the display name will be shown\nin the name column instead of the property name. Example usage:

\n\n
new Ext.grid.property.Grid({\n    source: {\n        clientIsAvailable: true\n    },\n    sourceConfig: {\n        clientIsAvailable: {\n            // Custom name different to the field\n            displayName: 'Available'\n        }\n    }\n});\n
\n\n

renderer

\n\n

A function used to transform the underlying value before it is displayed in the grid.\nBy default, the grid supports strongly-typed rendering of strings, dates, numbers and booleans using built-in form editors,\nbut any custom type can be supported and associated with the type of the value. Example usage:

\n\n
new Ext.grid.property.Grid({\n    source: {\n        clientIsAvailable: true\n    },\n    sourceConfig: {\n        clientIsAvailable: {\n            // Custom renderer to change the color based on the value\n            renderer: function(v){\n                var color = v ? 'green' : 'red';\n                return '<span style=\"color: ' + color + ';\">' + v + '</span>';\n            }\n        }\n    }\n});\n
\n\n

type

\n\n

Used to explicitly specify the editor type for a particular value. By default, the type is\nautomatically inferred from the value. See inferTypes. Accepted values are:

\n\n\n\n\n

For more advanced control an editor configuration can be passed (see the next section).\nExample usage:

\n\n
new Ext.grid.property.Grid({\n    source: {\n        attending: null\n    },\n    sourceConfig: {\n        attending: {\n            // Force the type to be a numberfield, a null value would otherwise default to a textfield\n            type: 'number'\n        }\n    }\n});\n
\n\n

editor

\n\n

Allows the grid to support additional types of editable fields. By default, the grid supports strongly-typed editing\nof strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and\nassociated with a custom input control by specifying a custom editor. Example usage

\n\n
new Ext.grid.property.Grid({\n    // Data object containing properties to edit\n    source: {\n        evtStart: '10:00 AM'\n    },\n\n    sourceConfig: {\n        evtStart: {\n            editor: Ext.create('Ext.form.field.Time', {selectOnFocus: true}),\n            displayName: 'Start Time'\n        }\n    }\n});\n
\n"},"store":{"!type":"?"},"valueField":{"!type":"string","!doc":"

The name of the field from the property store to use as the value field name.\nThis may be useful if you do not configure the property Grid from an object, but use your own store configuration.

\n"}},"Ext_grid_property_Property_cfg":{"!proto":"Ext_data_Model_cfg","idProperty":{"!type":"string|?|+Ext.data.Field","!doc":"

The name of the field treated as this Model's unique id. Defaults to 'id'.

\n\n

This may also be specified as a Field config object. This means that the identifying field can be calculated\nusing a convert function which might aggregate several values from the\nraw data object to use as an identifier.

\n\n

The resulting Field is added to the Model's field collection unless there is already\na configured field with a mapping that reads the same property.

\n\n

If defining an abstract base Model class, the idProperty may be configured as null which will mean that\nno identifying field will be generated.

\n"}},"Ext_layout_Context_cfg":{"!proto":"Ext_Base_cfg"},"Ext_layout_ContextItem_cfg":{"!proto":"Ext_Base_cfg"},"Ext_layout_Layout_cfg":{"!proto":"Ext_Base_cfg"},"Ext_layout_SizeModel_cfg":{"!proto":"Ext_Base_cfg"},"Ext_layout_component_Auto_cfg":{"!proto":"Ext_layout_component_Component_cfg","setHeightInDom":{"!type":"bool","!doc":"

When publishing height of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"setWidthInDom":{"!type":"bool","!doc":"

When publishing width of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"}},"Ext_layout_component_Body_cfg":{"!proto":"Ext_layout_component_Auto_cfg"},"Ext_layout_component_BoundList_cfg":{"!proto":"Ext_layout_component_Auto_cfg"},"Ext_layout_component_Button_cfg":{"!proto":"Ext_layout_component_Auto_cfg"},"Ext_layout_component_Component_cfg":{"!proto":"Ext_layout_Layout_cfg"},"Ext_layout_component_Dock_cfg":{"!proto":"Ext_layout_component_Component_cfg"},"Ext_layout_component_Draw_cfg":{"!proto":"Ext_layout_component_Auto_cfg","setHeightInDom":{"!type":"bool","!doc":"

When publishing height of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"setWidthInDom":{"!type":"bool","!doc":"

When publishing width of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"}},"Ext_layout_component_FieldSet_cfg":{"!proto":"Ext_layout_component_Body_cfg"},"Ext_layout_component_ProgressBar_cfg":{"!proto":"Ext_layout_component_Auto_cfg"},"Ext_layout_component_field_ComboBox_cfg":{"!proto":"Ext_layout_component_field_Trigger_cfg"},"Ext_layout_component_field_Field_cfg":{"!proto":"Ext_layout_component_Auto_cfg"},"Ext_layout_component_field_FieldContainer_cfg":{"!proto":"Ext_layout_component_field_Field_cfg"},"Ext_layout_component_field_HtmlEditor_cfg":{"!proto":"Ext_layout_component_field_FieldContainer_cfg"},"Ext_layout_component_field_Slider_cfg":{"!proto":"Ext_layout_component_field_Field_cfg"},"Ext_layout_component_field_Text_cfg":{"!proto":"Ext_layout_component_field_Field_cfg"},"Ext_layout_component_field_TextArea_cfg":{"!proto":"Ext_layout_component_field_Text_cfg"},"Ext_layout_component_field_Trigger_cfg":{"!proto":"Ext_layout_component_field_Field_cfg"},"Ext_layout_container_Box_cfg":{"!proto":"Ext_layout_container_Container_cfg","defaultMargins":{"!type":"?","!doc":"

If the individual contained items do not have a margins property specified or margin specified via CSS, the\ndefault margins from this property will be applied to each item.

\n\n

This property may be specified as an object containing margins to apply in the format:

\n\n
{\n    top: (top margin),\n    right: (right margin),\n    bottom: (bottom margin),\n    left: (left margin)\n}\n
\n\n

This property may also be specified as a string containing space-separated, numeric margin values. The order of\nthe sides associated with each value matches the way CSS processes margin values:

\n\n\n\n"},"flex":{"!type":"number","!doc":"

This configuration option is to be applied to child items of the container managed by this layout. Each child\nitem with a flex property will be flexed (horizontally in hbox, vertically in vbox) according to each item's\nrelative flex value compared to the sum of all items with a flex value specified. Any child items that have\neither a flex = 0 or flex = undefined will not be 'flexed' (the initial size will not be changed).

\n"},"itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"pack":{"!type":"string","!doc":"

Controls how the child items of the container are packed together. Acceptable configuration values for this\nproperty are:

\n\n\n\n"},"padding":{"!type":"string","!doc":"

Sets the padding to be applied to all child items managed by this layout.

\n\n

This property must be specified as a string containing space-separated, numeric padding values. The order of the\nsides associated with each value matches the way CSS processes padding values:

\n\n\n\n"},"stretchMaxPartner":{"!type":"string|+Ext.Component","!doc":"

Allows stretchMax calculation to take into account the max perpendicular size (height for HBox layout and width\nfor VBox layout) of another Box layout when calculating its maximum perpendicular child size.

\n\n

If specified as a string, this may be either a known Container ID, or a ComponentQuery selector which is rooted\nat this layout's Container (ie, to find a sibling, use \"^>#siblingItemId).

\n"}},"Ext_layout_container_HBox_cfg":{"!proto":"Ext_layout_container_Box_cfg","align":{"!type":"string","!doc":"

Controls how the child items of the container are aligned. Acceptable configuration values for this property are:

\n\n\n\n"},"alignRoundingMethod":{"!type":"string|string|string","!doc":"

The Math method to use\nfor rounding fractional pixels when align:middle is used.

\n"},"constrainAlign":{"!type":"bool","!doc":"

Limits the size of aligned components to the size of the container under certain circumstances.\nFirstly, the container height must not be determined by the height of the child components. Secondly, the child\ncomponents must have their height shrinkwrapped.

\n"}},"Ext_layout_container_VBox_cfg":{"!proto":"Ext_layout_container_Box_cfg","align":{"!type":"string","!doc":"

Controls how the child items of the container are aligned. Acceptable configuration values for this property are:

\n\n\n\n"},"alignRoundingMethod":{"!type":"string|string|string","!doc":"

The Math method to use\nfor rounding fractional pixels when align:center is used.

\n"},"constrainAlign":{"!type":"bool","!doc":"

Limits the size of aligned components to the size of the container under certain circumstances.\nFirstly, the container width must not be determined by the width of the child components. Secondly, the child\ncomponents must have their width shrinkwrapped.

\n"}},"Ext_layout_container_boxOverflow_None_cfg":{"!proto":"Ext_Base_cfg"},"Ext_layout_container_boxOverflow_Scroller_cfg":{"!proto":"Ext_layout_container_boxOverflow_None_cfg","afterCtCls":{"!type":"string","!doc":"

CSS class added to the afterCt element. This is the element that holds any special items such as scrollers,\nwhich must always be present at the rightmost edge of the Container

\n"},"afterScrollerCls":{"!type":"string","!doc":"

CSS class added to the right scroller element if enableScroll is used

\n"},"animateScroll":{"!type":"bool","!doc":"

True to animate the scrolling of items within the layout (ignored if enableScroll is false)

\n"},"beforeCtCls":{"!type":"string","!doc":"

CSS class added to the beforeCt element. This is the element that holds any special items such as scrollers,\nwhich must always be present at the leftmost edge of the Container

\n"},"beforeScrollerCls":{"!type":"string","!doc":"

CSS class added to the left scroller element if enableScroll is used

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"scrollDuration":{"!type":"number","!doc":"

Number of milliseconds that each scroll animation lasts

\n"},"scrollIncrement":{"!type":"number","!doc":"

The number of pixels to scroll by on scroller click

\n"},"scrollRepeatInterval":{"!type":"number","!doc":"

Number of milliseconds between each scroll while a scroller button is held down

\n"},"scrollerCls":{"!type":"string","!doc":"

CSS class added to both scroller elements if enableScroll is used

\n"},"wheelIncrement":{"!type":"number","!doc":"

The number of pixels to increment on mouse wheel scrolling.

\n"}},"Ext_menu_CheckItem_cfg":{"!proto":"Ext_menu_Item_cfg","checkChangeDisabled":{"!type":"bool","!doc":"

True to prevent the checked item from being toggled. Any submenu will still be accessible.

\n"},"checkHandler":{"!type":"fn()","!doc":"

Alternative for the checkchange event. Gets called with the same parameters.

\n"},"checked":{"!type":"bool","!doc":"

True to render the menuitem initially checked.

\n"},"checkedCls":{"!type":"string","!doc":"

The CSS class used by cls to show the checked state.\nDefaults to Ext.baseCSSPrefix + 'menu-item-checked'.

\n"},"group":{"!type":"string","!doc":"

Name of a radio group that the item belongs.

\n\n

Specifying this option will turn check item into a radio item.

\n\n

Note that the group name must be globally unique.

\n"},"groupCls":{"!type":"string","!doc":"

The CSS class applied to this item's icon image to denote being a part of a radio group.\nDefaults to Ext.baseCSSClass + 'menu-group-icon'.\nAny specified iconCls overrides this.

\n"},"hideOnClick":{"!type":"bool","!doc":"

Whether to not to hide the owning menu when this item is clicked.\nDefaults to false for checkbox items, and to true for radio group items.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

Scope for the checkHandler callback.

\n"},"uncheckedCls":{"!type":"string","!doc":"

The CSS class used by cls to show the unchecked state.\nDefaults to Ext.baseCSSPrefix + 'menu-item-unchecked'.

\n"}},"Ext_menu_ColorPicker_cfg":{"!proto":"Ext_menu_Menu_cfg","hideOnClick":{"!type":"bool","!doc":"

False to continue showing the menu after a color is selected.

\n"},"maxHeight":{"!type":"number"},"pickerId":{"!type":"string","!doc":"

An id to assign to the underlying color picker.

\n"}},"Ext_menu_DatePicker_cfg":{"!proto":"Ext_menu_Menu_cfg","hideOnClick":{"!type":"bool","!doc":"

False to continue showing the menu after a date is selected.

\n"},"maxHeight":{"!type":"number"},"pickerId":{"!type":"string","!doc":"

An id to assign to the underlying date picker.

\n"}},"Ext_menu_Item_cfg":{"!proto":"Ext_Component_cfg","activeCls":{"!type":"string","!doc":"

The CSS class added to the menu item when the item is activated (focused/mouseover).

\n"},"ariaRole":{"!type":"string"},"canActivate":{"!type":"bool","!doc":"

Whether or not this menu item can be activated when focused/mouseovered.

\n"},"clickHideDelay":{"!type":"number","!doc":"

The delay in milliseconds to wait before hiding the menu after clicking the menu item.\nThis only has an effect when hideOnClick: true.

\n"},"destroyMenu":{"!type":"bool","!doc":"

Whether or not to destroy any associated sub-menu when this item is destroyed.

\n"},"disabledCls":{"!type":"string","!doc":"

The CSS class added to the menu item when the item is disabled.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for this item. The default\nfont-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the menu item is clicked (can be used instead of click event).

\n"},"hideOnClick":{"!type":"bool","!doc":"

Whether to not to hide the owning menu when this item is clicked.

\n"},"href":{"!type":"string","!doc":"

The href attribute to use for the underlying anchor link.

\n"},"hrefTarget":{"!type":"string","!doc":"

The target attribute to use for the underlying anchor link.

\n"},"icon":{"!type":"string","!doc":"

The path to an icon to display in this item.

\n\n

Defaults to Ext.BLANK_IMAGE_URL.

\n"},"iconCls":{"!type":"string","!doc":"

A CSS class that specifies a background-image to use as the icon for this item.

\n"},"menu":{"!type":"+Ext.menu.Menu|?","!doc":"

Either an instance of Ext.menu.Menu or a config object for an Ext.menu.Menu\nwhich will act as a sub-menu to this item.

\n"},"menuAlign":{"!type":"string","!doc":"

The default Ext.util.Positionable.getAlignToXY anchor position value for this\nitem's sub-menu relative to this item's position.

\n"},"menuExpandDelay":{"!type":"number","!doc":"

The delay in milliseconds before this item's sub-menu expands after this item is moused over.

\n"},"menuHideDelay":{"!type":"number","!doc":"

The delay in milliseconds before this item's sub-menu hides after this item is moused out.

\n"},"plain":{"!type":"bool","!doc":"

Whether or not this item is plain text/html with no icon or visual activation.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"text":{"!type":"string","!doc":"

The text/html to display in this item.

\n"},"tooltip":{"!type":"string|?","!doc":"

The tooltip for the button - can be a string to be used as innerHTML (html tags are accepted) or\nQuickTips config object.

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' for QuickTips or 'title' for title attribute.

\n"}},"Ext_menu_KeyNav_cfg":{"!proto":"Ext_util_KeyNav_cfg"},"Ext_menu_Menu_cfg":{"!proto":"Ext_panel_Panel_cfg","allowOtherMenus":{"!type":"bool","!doc":"

True to allow multiple menus to be displayed at the same time.

\n"},"ariaRole":{"!type":"string"},"autoRender":{"!type":"bool","!doc":"

Floating is true, so autoRender always happens.

\n"},"constrain":{"!type":"bool","!doc":"

Menus are constrained to the document body by default.

\n"},"enableKeyNav":{"!type":"bool","!doc":"

True to enable keyboard navigation for controlling the menu.\nThis option should generally be disabled when form fields are\nbeing used inside the menu.

\n"},"floating":{"!type":"bool","!doc":"

A Menu configured as floating: true (the default) will be rendered as an absolutely positioned,\nfloating Component. If configured as floating: false, the Menu may be\nused as a child item of another Container.

\n"},"hidden":{"!type":"bool","!doc":"

True to initially render the Menu as hidden, requiring to be shown manually.

\n\n

Defaults to true when floating: true, and defaults to false when floating: false.

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Component's encapsulating DOM element will be hidden. Values may be:

\n\n\n\n"},"ignoreParentClicks":{"!type":"bool","!doc":"

True to ignore clicks on any item in this menu that is a parent item (displays a submenu)\nso that the submenu is not dismissed when clicking the parent item.

\n"},"layout":{"!type":"+Ext.enums.Layout|?"},"minWidth":{"!type":"number","!doc":"

The minimum width of the Menu. The default minWidth only applies when the floating config is true.

\n"},"plain":{"!type":"bool","!doc":"

True to remove the incised line down the left side of the menu and to not indent general Component items.

\n\n

MenuItems will always have space at their start for an icon. With the plain setting,\nnon MenuItem child components will not be indented to line up.

\n\n

Basically, plain:true makes a Menu behave more like a regular HBox layout\nPanel which just has the same background as a Menu.

\n\n

See also the showSeparator config.

\n"},"showSeparator":{"!type":"bool","!doc":"

True to show the icon separator.

\n"}},"Ext_menu_Separator_cfg":{"!proto":"Ext_menu_Item_cfg","activeCls":{"!type":"string"},"canActivate":{"!type":"bool"},"clickHideDelay":{"!type":"bool"},"destroyMenu":{"!type":"bool"},"disabledCls":{"!type":"bool"},"hideOnClick":{"!type":"bool"},"href":{"!type":"string"},"hrefTarget":{"!type":"string"},"icon":{"!type":"string"},"iconCls":{"!type":"string"},"menu":{"!type":"?"},"menuAlign":{"!type":"string"},"menuExpandDelay":{"!type":"number"},"menuHideDelay":{"!type":"number"},"plain":{"!type":"bool"},"separatorCls":{"!type":"string","!doc":"

The CSS class used by the separator item to show the incised line.

\n"},"text":{"!type":"string"}},"Ext_panel_AbstractPanel_cfg":{"!proto":"Ext_container_Container_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"bodyBorder":{"!type":"bool","!doc":"

A shortcut to add or remove the border on the body of a panel. In the classic theme\nthis only applies to a panel which has the frame configuration set to true.

\n"},"bodyCls":{"!type":"string|[string]","!doc":"

A CSS class, space-delimited string of classes, or array of classes to be applied to the panel's body element.\nThe following examples are all valid:

\n\n
bodyCls: 'foo'\nbodyCls: 'foo bar'\nbodyCls: ['foo', 'bar']\n
\n\n"},"bodyPadding":{"!type":"number|string","!doc":"

A shortcut for setting a padding style on the body element. The value can either be\na number to be applied to all sides, or a normal css string describing padding.\nDefaults to undefined.

\n"},"bodyStyle":{"!type":"string|?|fn()","!doc":"

Custom CSS styles to be applied to the panel's body element, which can be supplied as a valid CSS style string,\nan object containing style property name/value pairs or a function that returns such a string or object.\nFor example, these two formats are interpreted to be equivalent:

\n\n
bodyStyle: 'background:#ffc; padding:10px;'\n\nbodyStyle: {\n    background: '#ffc',\n    padding: '10px'\n}\n
\n\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"defaultDockWeights":{"!type":"?","!doc":"

This object holds the default weights applied to dockedItems that have no weight. These start with a\nweight of 1, to allow negative weights to insert before top items and are odd numbers\nso that even weights can be used to get between different dock orders.

\n\n

To make default docking order match border layout, do this:

\n\n
 Ext.panel.AbstractPanel.prototype.defaultDockWeights = { top: 1, bottom: 3, left: 5, right: 7 };\n
\n\n

Changing these defaults as above or individually on this object will effect all Panels.\nTo change the defaults on a single panel, you should replace the entire object:

\n\n
 initComponent: function () {\n     // NOTE: Don't change members of defaultDockWeights since the object is shared.\n     this.defaultDockWeights = { top: 1, bottom: 3, left: 5, right: 7 };\n\n     this.callParent();\n }\n
\n\n

To change only one of the default values, you do this:

\n\n
 initComponent: function () {\n     // NOTE: Don't change members of defaultDockWeights since the object is shared.\n     this.defaultDockWeights = Ext.applyIf({ top: 10 }, this.defaultDockWeights);\n\n     this.callParent();\n }\n
\n"},"dockedItems":{"!type":"?|[?]","!doc":"

A component or series of components to be added as docked items to this panel.\nThe docked items can be docked to either the top, right, left or bottom of a panel.\nThis is typically used for things like toolbars or tab bars:

\n\n
var panel = new Ext.panel.Panel({\n    fullscreen: true,\n    dockedItems: [{\n        xtype: 'toolbar',\n        dock: 'top',\n        items: [{\n            text: 'Docked to the top'\n        }]\n    }]\n});
\n\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shrinkWrapDock":{"!type":"bool|number","!doc":"

Allows for this panel to include the dockedItems when trying to determine the overall\nsize of the panel. This option is only applicable when this panel is also shrink wrapping in the\nsame dimensions. See Ext.AbstractComponent.shrinkWrap for an explanation of the configuration options.

\n"}},"Ext_panel_Header_cfg":{"!proto":"Ext_container_Container_cfg","componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for the panel header. The\ndefault font-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"icon":{"!type":"string","!doc":"

Path to image for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"iconCls":{"!type":"string","!doc":"

CSS class for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"title":{"!type":"string","!doc":"

The title text to display.

\n"},"titleAlign":{"!type":"string","!doc":"

The alignment of the title text within the available space between the\nicon and the tools.

\n\n

May be \"left\", \"right\" or \"center\". Defaults to the browser's natural\nbehavior depending on the css direction property - \"left\" when direction\nis ltr and \"right\" when direction is rtl\n(see Ext.AbstractComponent.rtl).

\n"},"titlePosition":{"!type":"number","!doc":"

The ordinal position among the header items (tools and other components specified using the items config)\nat which the title component is inserted. See Panel's header config.

\n\n

If not specified, the title is inserted after any items, but before any Ext.panel.Panel.tools.

\n\n

Note that if an icon or iconCls has been configured, then the icon component will be the\nfirst item before all specified tools or items. This configuration does not include the icon.

\n"}},"Ext_panel_Panel_cfg":{"!proto":"Ext_panel_AbstractPanel_cfg","animCollapse":{"!type":"bool","!doc":"

true to animate the transition when the panel is collapsed, false to skip the animation (defaults to true\nif the Ext.fx.Anim class is available, otherwise false). May also be specified as the animation\nduration in milliseconds.

\n"},"bbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Bottom Bar'.

\n\n
bbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'bottom',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"buttonAlign":{"!type":"string","!doc":"

The alignment of any buttons added to this panel. Valid values are 'right', 'left' and 'center' (defaults to\n'right' for buttons/fbar, 'left' for other toolbar types).

\n\n

NOTE: The prefered way to specify toolbars is to use the dockedItems config. Instead of buttonAlign you\nwould add the layout: { pack: 'start' | 'center' | 'end' } option to the dockedItem config.

\n"},"buttons":{"!type":"?|[?]","!doc":"

Convenience config used for adding buttons docked to the bottom of the panel. This is a\nsynonym for the fbar config.

\n\n
buttons: [\n  { text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'bottom',\n    ui: 'footer',\n    defaults: {minWidth: minButtonWidth},\n    items: [\n        { xtype: 'component', flex: 1 },\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n\n

The minButtonWidth is used as the default minWidth for\neach of the buttons in the buttons toolbar.

\n"},"closable":{"!type":"bool","!doc":"

True to display the 'close' tool button and allow the user to close the window, false to hide the button and\ndisallow closing the window.

\n\n

By default, when close is requested by clicking the close button in the header, the close method will be\ncalled. This will destroy the Panel and its content meaning that it may not be\nreused.

\n\n

To make closing a Panel hide the Panel so that it may be reused, set closeAction to 'hide'.

\n"},"closeAction":{"!type":"string","!doc":"

The action to take when the close header tool is clicked:

\n\n\n\n\n

Note: This behavior has changed! setting does affect the close method which will invoke the\napproriate closeAction.

\n"},"collapseDirection":{"!type":"string","!doc":"

The direction to collapse the Panel when the toggle button is clicked.

\n\n

Defaults to the headerPosition

\n\n

Important: This config is ignored for collapsible Panels which are direct child items of a border layout.

\n\n

Specify as 'top', 'bottom', 'left' or 'right'.

\n"},"collapseFirst":{"!type":"bool","!doc":"

true to make sure the collapse/expand toggle button always renders first (to the left of) any other tools in\nthe panel's title bar, false to render it last.

\n"},"collapseMode":{"!type":"string","!doc":"

Important: this config is only effective for collapsible Panels which are direct child items of a\nborder layout.

\n\n

When not a direct child item of a border layout, then the Panel's header\nremains visible, and the body is collapsed to zero dimensions. If the Panel has no header, then a new header\n(orientated correctly depending on the collapseDirection) will be inserted to show a the title and a re-\nexpand tool.

\n\n

When a child item of a border layout, this config has three possible values:

\n\n\n\n"},"collapsed":{"!type":"bool","!doc":"

true to render the panel collapsed, false to render it expanded.

\n"},"collapsedCls":{"!type":"string","!doc":"

A CSS class to add to the panel's element after it has been collapsed.

\n"},"collapsible":{"!type":"bool","!doc":"

True to make the panel collapsible and have an expand/collapse toggle Tool added into the header tool button\narea. False to keep the panel sized either statically, or by an owning layout manager, with no toggle Tool.\nWhen a panel is used in a border layout, the floatable option\ncan influence the behavior of collapsing.\nSee collapseMode and collapseDirection

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the panel within its containing element, false to allow it to fall outside of its containing\nelement. By default floating components such as Windows will be rendered to document.body. To render and constrain the window within\nanother element specify renderTo. Optionally the header only can be constrained\nusing constrainHeader.

\n"},"constrainHeader":{"!type":"bool","!doc":"

True to constrain the panel header within its containing element (allowing the panel body to fall outside of\nits containing element) or false to allow the header to fall outside its containing element.\nOptionally the entire panel can be constrained using constrain.

\n"},"dockedItems":{"!type":"?|[?]","!doc":"

A component or series of components to be added as docked items to this panel. The docked items can be docked to\neither the top, right, left or bottom of a panel. This is typically used for things like toolbars or tab bars:

\n\n
var panel = new Ext.panel.Panel({\n    dockedItems: [{\n        xtype: 'toolbar',\n        dock: 'top',\n        items: [{\n            text: 'Docked to the top'\n        }]\n    }]\n});\n
\n"},"fbar":{"!type":"?|[?]","!doc":"

Convenience config used for adding items to the bottom of the panel. Short for Footer Bar.

\n\n
fbar: [\n  { type: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'bottom',\n    ui: 'footer',\n    defaults: {minWidth: minButtonWidth},\n    items: [\n        { xtype: 'component', flex: 1 },\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n\n

The minButtonWidth is used as the default minWidth for\neach of the buttons in the fbar.

\n"},"floatable":{"!type":"bool","!doc":"

Important: This config is only effective for collapsible Panels which are direct child items of a\nborder layout.

\n\n

true to allow clicking a collapsed Panel's placeholder to display the Panel floated above the layout,\nfalse to force the user to fully expand a collapsed region by clicking the expand button to see it again.

\n"},"frame":{"!type":"bool","!doc":"

True to apply a frame to the panel.

\n"},"frameHeader":{"!type":"bool","!doc":"

True to apply a frame to the panel panels header (if 'frame' is true).

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for the panel header. The\ndefault font-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"header":{"!type":"bool|?","!doc":"

Pass as false to prevent a Header from being created and shown.

\n\n

Pass as a config object (optionally containing an xtype) to custom-configure this Panel's header.

\n\n

See Ext.panel.Header for all the options that may be specified here.

\n\n

A panel header is a Ext.container.Container which contains the Panel's title and tools.\nYou may also configure the Panel's header option with its own child items which go before the tools

\n\n

By default the panel title is inserted after items configured in this config, but before any tools.\nTo insert the title at any point in the full array, specify the #titlePosition config:

\n\n

new Ext.panel.Panel({\n title: 'Test',\n tools: [{\n type: 'refresh\n }, {\n type: 'help'\n }],\n titlePosition: 2 // Title will come AFTER the two tools\n ...\n });

\n"},"headerOverCls":{"!type":"string","!doc":"

Optional CSS class to apply to the header element on mouseover

\n"},"headerPosition":{"!type":"string","!doc":"

Specify as 'top', 'bottom', 'left' or 'right'.

\n"},"hideCollapseTool":{"!type":"bool","!doc":"

true to hide the expand/collapse toggle button when collapsible == true, false to display it.

\n"},"icon":{"!type":"string","!doc":"

Path to image for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"iconCls":{"!type":"string","!doc":"

CSS class for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"lbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Left Bar' (left-docked, vertical toolbar).

\n\n
lbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'left',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"manageHeight":{"!type":"bool","!doc":"

When true, the dock component layout writes\nheight information to the panel's DOM elements based on its shrink wrap height\ncalculation. This ensures that the browser respects the calculated height.\nWhen false, the dock component layout will not write heights on the panel or its\nbody element. In some simple layout cases, not writing the heights to the DOM may\nbe desired because this allows the browser to respond to direct DOM manipulations\n(like animations).

\n"},"minButtonWidth":{"!type":"number","!doc":"

Minimum width of all footer toolbar buttons in pixels. If set, this will be used as the default\nvalue for the Ext.button.Button.minWidth config of each Button added to the footer toolbar via the\nfbar or buttons configurations. It will be ignored for buttons that have a minWidth configured\nsome other way, e.g. in their own config object or via the defaults of\ntheir parent container.

\n"},"overlapHeader":{"!type":"bool","!doc":"

True to overlap the header in a panel over the framing of the panel itself. This is needed when frame:true (and\nis done automatically for you). Otherwise it is undefined. If you manually add rounded corners to a panel header\nwhich does not have frame:true, this will need to be set to true.

\n"},"placeholder":{"!type":"+Ext.Component|?","!doc":"

Important: This config is only effective for collapsible Panels which are direct child items of a\nborder layout when not using the 'header' collapseMode.

\n\n

Optional. A Component (or config object for a Component) to show in place of this Panel when this Panel is\ncollapsed by a border layout. Defaults to a generated Header containing a Tool to re-expand the Panel.

\n"},"placeholderCollapseHideMode":{"!type":"number","!doc":"

The mode for hiding collapsed panels when\nusing collapseMode \"placeholder\".

\n"},"preventHeader":{"!type":"bool"},"rbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Right Bar' (right-docked, vertical toolbar).

\n\n
rbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'right',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"simpleDrag":{"!type":"bool","!doc":"

When draggable is true, Specify this as true to cause the draggable config\nto work the same as it does in Window. This Panel\njust becomes movable. No DragDrop instances receive any notifications.\nFor example:

\n\n
var win = Ext.create('widget.window', {\n    height: 300,\n    width: 300,\n    title: 'Constraining Window',\n    closable: false,\n    items: {\n        title: \"Floating Panel\",\n        width: 100,\n        height: 100,\n        floating: true,\n        draggable: true,\n        constrain: true,\n        simpleDrag: true\n    }\n});\nwin.show();\n// Floating components begin life hidden\nwin.child('[title=Floating Panel]').show();\n
\n"},"tbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Top Bar'.

\n\n
tbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'top',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"title":{"!type":"string","!doc":"

The title text to be used to display in the panel header. When a\ntitle is specified the Ext.panel.Header will automatically be created and displayed unless\nheader is set to false.

\n"},"titleAlign":{"!type":"string","!doc":"

The alignment of the title text within the available space between the\nicon and the tools.

\n\n

May be \"left\", \"right\" or \"center\". Defaults to the browser's natural\nbehavior depending on the css direction property - \"left\" when direction\nis ltr and \"right\" when direction is rtl\n(see Ext.AbstractComponent.rtl).

\n"},"titleCollapse":{"!type":"bool","!doc":"

true to allow expanding and collapsing the panel (when collapsible = true) by clicking anywhere in\nthe header bar, false) to allow it only by clicking to tool button). When a panel is used in a\nborder layout, the floatable option can influence the behavior of collapsing.

\n"},"tools":{"!type":"[?]|[+Ext.panel.Tool]","!doc":"

An array of Ext.panel.Tool configs/instances to be added to the header tool area. The tools are stored as\nchild components of the header container. They can be accessed using down and {query}, as well as the\nother component methods. The toggle tool is automatically created if collapsible is set to true.

\n\n

Note that, apart from the toggle tool which is provided when a panel is collapsible, these tools only provide the\nvisual button. Any required functionality must be provided by adding handlers that implement the necessary\nbehavior.

\n\n

Example usage:

\n\n
tools:[{\n    type:'refresh',\n    tooltip: 'Refresh form Data',\n    // hidden:true,\n    handler: function(event, toolEl, panelHeader) {\n        // refresh logic\n    }\n},\n{\n    type:'help',\n    tooltip: 'Get Help',\n    callback: function(panel, tool, event) {\n        // show help here\n    }\n}]\n
\n\n

The difference between handler and callback is the signature. For details on\nthe distinction, see Ext.panel.Tool.

\n"}},"Ext_panel_Proxy_cfg":{"!proto":"Ext_Base_cfg","insertProxy":{"!type":"bool","!doc":"

True to insert a placeholder proxy element while dragging the panel, false to drag with no proxy.\nMost Panels are not absolute positioned and therefore we need to reserve this space.

\n"},"moveOnDrag":{"!type":"bool","!doc":"

True to move the panel to the dragged position when dropped

\n"}},"Ext_panel_Table_cfg":{"!proto":"Ext_panel_Panel_cfg","allowDeselect":{"!type":"bool","!doc":"

True to allow deselecting a record. This config is forwarded to Ext.selection.Model.allowDeselect.

\n"},"columnLines":{"!type":"bool","!doc":"

Adds column line styling

\n"},"columns":{"!type":"[+Ext.grid.column.Column]|?","!doc":"

An array of column definition objects which define all columns that appear in this\ngrid. Each column definition provides the header text for the column, and a definition of where the data for that\ncolumn comes from.

\n\n

This can also be a configuration object for a {Ext.grid.header.Container HeaderContainer} which may override\ncertain default configurations if necessary. For example, the special layout may be overridden to use a simpler\nlayout, or one can set default values shared by all columns:

\n\n
columns: {\n    items: [\n        {\n            text: \"Column A\"\n            dataIndex: \"field_A\"\n        },{\n            text: \"Column B\",\n            dataIndex: \"field_B\"\n        }, \n        ...\n    ],\n    defaults: {\n        flex: 1\n    }\n}\n
\n"},"deferRowRender":{"!type":"bool","!doc":"

Defaults to true to enable deferred row rendering.

\n\n

This allows the View to execute a refresh quickly, with the expensive update of the row structure deferred so\nthat layouts with GridPanels appear, and lay out more quickly.

\n"},"disableSelection":{"!type":"bool","!doc":"

True to disable selection model.

\n"},"emptyText":{"!type":"string","!doc":"

Default text (html tags are accepted) to display in the Panel body when the Store\nis empty. When specified, and the Store is empty, the text will be rendered inside a DIV with the CSS class \"x-grid-empty\".

\n"},"enableColumnHide":{"!type":"bool","!doc":"

False to disable column hiding within this grid.

\n"},"enableColumnMove":{"!type":"bool","!doc":"

False to disable column dragging within this grid.

\n"},"enableColumnResize":{"!type":"bool","!doc":"

False to disable column resizing within this grid.

\n"},"enableLocking":{"!type":"bool","!doc":"

Configure as true to enable locking support for this grid. Alternatively, locking will also be automatically\nenabled if any of the columns in the columns configuration contain a locked config option.

\n\n

A locking grid is processed in a special way. The configuration options are cloned and two grids are created to be the locked (left) side\nand the normal (right) side. This Panel becomes merely a container which arranges both in an HBox layout.

\n\n

Plugins may be targeted at either locked, or unlocked grid, or, both, in which case the plugin is cloned and used on both sides.

\n\n

Plugins may also be targeted at the containing locking Panel.

\n\n

This is configured by specifying a lockableScope property in your plugin which may have the following values:

\n\n\n\n\n

If both is specified, then each copy of the plugin gains a property lockingPartner which references its sibling on the other side so that they\ncan synchronize operations is necessary.

\n\n

Features may also be configured with lockableScope and may target the locked grid, the normal grid or both grids. Features\nalso get a lockingPartner reference injected.

\n"},"features":{"!type":"[+Ext.grid.feature.Feature]|[?]|[+Ext.enums.Feature]","!doc":"

An array of grid Features to be added to this grid. Can also be just a single feature instead of array.

\n\n

Features config behaves much like plugins.\nA feature can be added by either directly referencing the instance:

\n\n
features: [Ext.create('Ext.grid.feature.GroupingSummary', {groupHeaderTpl: 'Subject: {name}'})],\n
\n\n

By using config object with ftype:

\n\n
features: [{ftype: 'groupingsummary', groupHeaderTpl: 'Subject: {name}'}],\n
\n\n

Or with just a ftype:

\n\n
features: ['grouping', 'groupingsummary'],\n
\n\n

See Ext.enums.Feature for list of all ftypes.

\n"},"forceFit":{"!type":"bool","!doc":"

True to force the columns to fit into the available width. Headers are first sized according to configuration,\nwhether that be a specific width, or flex. Then they are all proportionally changed in width so that the entire\ncontent width is used. For more accurate control, it is more optimal to specify a flex setting on the columns\nthat are to be stretched & explicit widths on columns that are not.

\n"},"hideHeaders":{"!type":"bool","!doc":"

True to hide column headers.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"lockedGridConfig":{"!type":"?","!doc":"

Any special configuration options for the locked part of the grid

\n"},"lockedViewConfig":{"!type":"?","!doc":"

A view configuration to be applied to the\nlocked side of the grid. Any conflicting configurations between lockedViewConfig\nand viewConfig will be overwritten by the lockedViewConfig.

\n"},"multiSelect":{"!type":"bool","!doc":"

True to enable 'MULTI' selection mode on selection model.

\n"},"normalGridConfig":{"!type":"?","!doc":"

Any special configuration options for the normal part of the grid

\n"},"normalViewConfig":{"!type":"?","!doc":"

A view configuration to be applied to the\nnormal/unlocked side of the grid. Any conflicting configurations between normalViewConfig\nand viewConfig will be overwritten by the normalViewConfig.

\n"},"rowLines":{"!type":"bool","!doc":"

Adds row line styling

\n"},"scroll":{"!type":"string|bool","!doc":"

Scrollers configuration. Valid values are 'both', 'horizontal' or 'vertical'.\nTrue implies 'both'. False implies 'none'.

\n"},"scrollDelta":{"!type":"number","!doc":"

Number of pixels to scroll when scrolling the locked section with mousewheel.

\n"},"sealedColumns":{"!type":"bool","!doc":"

True to constrain column dragging so that a column cannot be dragged in or out of it's\ncurrent group. Only relevant while enableColumnMove is enabled.

\n"},"selModel":{"!type":"+Ext.selection.Model|?","!doc":"

A selection model instance or config object. In latter case the selType\nconfig option determines to which type of selection model this config is applied.

\n"},"selType":{"!type":"string","!doc":"

An xtype of selection model to use. Defaults to 'rowmodel'. This is used to create selection model if just\na config object or nothing at all given in selModel config.

\n"},"simpleSelect":{"!type":"bool","!doc":"

True to enable 'SIMPLE' selection mode on selection model.

\n"},"sortableColumns":{"!type":"bool","!doc":"

False to disable column sorting via clicking the header and via the Sorting menu items.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Store the grid should use as its data source.

\n"},"subGridXType":{"!type":"string","!doc":"

The xtype of the subgrid to specify. If this is\nnot specified lockable will determine the subgrid xtype to create by the\nfollowing rule. Use the superclasses xtype if the superclass is NOT\ntablepanel, otherwise use the xtype itself.

\n"},"syncRowHeight":{"!type":"bool","!doc":"

Synchronize rowHeight between the normal and\nlocked grid view. This is turned on by default. If your grid is guaranteed\nto have rows of all the same height, you should set this to false to\noptimize performance.

\n"},"verticalScroller":{"!type":"?","!doc":"

A config object to be used when configuring the scroll monitor to control\nrefreshing of data in an \"infinite grid\".

\n\n

Configurations of this object allow fine tuning of data caching which can improve performance and usability\nof the infinite grid.

\n"},"view":{"!type":"+Ext.view.Table","!doc":"

The Ext.view.Table used by the grid. Use viewConfig to just supply some config options to\nview (instead of creating an entire View instance).

\n"},"viewConfig":{"!type":"?","!doc":"

A config object that will be applied to the grid's UI view. Any of the config options available for\nExt.view.Table can be specified here. This option is ignored if view is specified.

\n"},"viewType":{"!type":"string","!doc":"

An xtype of view to use. This is automatically set to 'gridview' by Grid\nand to 'treeview' by Tree.

\n"}},"Ext_panel_Tool_cfg":{"!proto":"Ext_Component_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"callback":{"!type":"fn()","!doc":"

A function to execute when the tool is clicked.

\n"},"disabledCls":{"!type":"string","!doc":"

CSS class to add when the Component is disabled.

\n"},"handler":{"!type":"fn()","!doc":"

A function to execute when the tool is clicked. Arguments passed are:

\n\n\n\n"},"height":{"!type":"number","!doc":"

Tool size is fixed so that Box layout can avoid measurements.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

The scope to execute the callback or handler function. Defaults\nto the tool.

\n"},"stopEvent":{"!type":"bool","!doc":"

Specify as false to allow click event to propagate.

\n"},"toolOverCls":{"!type":"string"},"toolOwner":{"!type":"+Ext.Component","!doc":"

The owner to report to the callback method. Default is null for the ownerCt.

\n"},"toolPressedCls":{"!type":"string"},"tooltip":{"!type":"string|?","!doc":"

The tooltip for the tool - can be a string to be used as innerHTML (html tags are accepted) or QuickTips config\nobject

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' (default) for QuickTips or 'title' for title attribute.

\n"},"type":{"!type":"string","!doc":"

The type of tool to render. The following types are available:

\n\n\n\n"},"width":{"!type":"number","!doc":"

The width of this component in pixels.

\n"}},"Ext_picker_Color_cfg":{"!proto":"Ext_Component_cfg","allowReselect":{"!type":"bool","!doc":"

If set to true then reselecting a color that is already selected fires the select event

\n"},"clickEvent":{"!type":"string","!doc":"

The DOM event that will cause a color to be selected. This can be any valid event name (dblclick, contextmenu).

\n"},"componentCls":{"!type":"string","!doc":"

The CSS class to apply to the containing element.

\n"},"handler":{"!type":"fn()","!doc":"

A function that will handle the select event of this picker. The handler is passed the following parameters:

\n\n\n\n"},"itemCls":{"!type":"string","!doc":"

The CSS class to apply to the color picker's items

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler function will be called.

\n\n

Defaults to this Color picker instance.

\n"},"selectedCls":{"!type":"string","!doc":"

The CSS class to apply to the selected element

\n"},"value":{"!type":"string","!doc":"

The initial color to highlight (should be a valid 6-digit color hex code without the # symbol). Note that the hex\ncodes are case-sensitive.

\n"}},"Ext_picker_Date_cfg":{"!proto":"Ext_Component_cfg","ariaTitle":{"!type":"string","!doc":"

The text to display for the aria title

\n"},"ariaTitleDateFormat":{"!type":"string","!doc":"

The date format to display for the current value in the ariaTitle

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this components element.

\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"dayNames":{"!type":"[string]","!doc":"

An array of textual day names which can be overriden for localization support (defaults to Ext.Date.dayNames)

\n"},"disableAnim":{"!type":"bool","!doc":"

True to disable animations when showing the month picker.

\n"},"disabledCellCls":{"!type":"string","!doc":"

The class to apply to disabled cells.

\n"},"disabledDates":{"!type":"[string]","!doc":"

An array of 'dates' to disable, as strings. These strings will be used to build a dynamic regular expression so\nthey are very powerful. Some examples:

\n\n\n\n\n

Note that the format of the dates included in the array should exactly match the format config. In order\nto support regular expressions, if you are using a date format that has '.' in it, you will have to escape the\ndot when restricting dates. For example: ['03\\.08\\.03'].

\n"},"disabledDatesRE":{"!type":"+RegExp","!doc":"

JavaScript regular expression used to disable a pattern of dates. The disabledDates\nconfig will generate this regex internally, but if you specify disabledDatesRE it will take precedence over the\ndisabledDates value.

\n"},"disabledDatesText":{"!type":"string","!doc":"

The tooltip text to display when the date falls on a disabled date.

\n"},"disabledDays":{"!type":"[number]","!doc":"

An array of days to disable, 0-based. For example, [0, 6] disables Sunday and Saturday.

\n"},"disabledDaysText":{"!type":"string","!doc":"

The tooltip to display when the date falls on a disabled day.

\n"},"focusOnShow":{"!type":"bool","!doc":"

True to automatically focus the picker on show.

\n"},"format":{"!type":"string","!doc":"

The default date format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse (defaults to Ext.Date.defaultFormat).

\n"},"handler":{"!type":"fn()","!doc":"

Optional. A function that will handle the select event of this picker. The handler is passed the following\nparameters:

\n\n\n\n\n

This Date picker.

\n\n\n\n\n

The selected date.

\n"},"keyNavConfig":{"!type":"?","!doc":"

Specifies optional custom key event handlers for the Ext.util.KeyNav attached to this date picker. Must\nconform to the config format recognized by the Ext.util.KeyNav constructor. Handlers specified in this\nobject will replace default handlers of the same name.

\n"},"longDayFormat":{"!type":"string","!doc":"

The format for displaying a date in a longer format.

\n"},"maxDate":{"!type":"+Date","!doc":"

Maximum allowable date (JavaScript date object)

\n"},"maxText":{"!type":"string","!doc":"

The error text to display if the maxDate validation fails.

\n"},"minDate":{"!type":"+Date","!doc":"

Minimum allowable date (JavaScript date object)

\n"},"minText":{"!type":"string","!doc":"

The error text to display if the minDate validation fails.

\n"},"monthNames":{"!type":"[string]","!doc":"

An array of textual month names which can be overriden for localization support (defaults to Ext.Date.monthNames)

\n"},"monthYearFormat":{"!type":"string","!doc":"

The date format for the header month

\n"},"monthYearText":{"!type":"string","!doc":"

The header month selector tooltip

\n"},"nextText":{"!type":"string","!doc":"

The next month navigation button tooltip

\n"},"prevText":{"!type":"string","!doc":"

The previous month navigation button tooltip

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler function will be called.

\n\n

Defaults to this DatePicker instance.

\n"},"selectedCls":{"!type":"string","!doc":"

The class to apply to the selected cell.

\n"},"showToday":{"!type":"bool","!doc":"

False to hide the footer area containing the Today button and disable the keyboard handler for spacebar that\nselects the current date.

\n"},"startDay":{"!type":"number","!doc":"

Day index at which the week should begin, 0-based.

\n\n

Defaults to 0 (Sunday).

\n"},"todayText":{"!type":"string","!doc":"

The text to display on the button that selects the current date

\n"},"todayTip":{"!type":"string","!doc":"

A string used to format the message for displaying in a tooltip over the button that selects the current date.\nThe {0} token in string is replaced by today's date.

\n"}},"Ext_picker_Month_cfg":{"!proto":"Ext_Component_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to the picker element.

\n"},"cancelText":{"!type":"string","!doc":"

The text to display on the cancel button.

\n"},"okText":{"!type":"string","!doc":"

The text to display on the ok button.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"selectedCls":{"!type":"string","!doc":"

The class to be added to selected items in the picker.

\n"},"showButtons":{"!type":"bool","!doc":"

True to show ok and cancel buttons below the picker.

\n"},"value":{"!type":"+Date|[number]","!doc":"

The default value to set. See setValue

\n"}},"Ext_picker_Time_cfg":{"!proto":"Ext_view_BoundList_cfg","componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"format":{"!type":"string","!doc":"

The default time format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse.

\n\n

Defaults to 'g:i A', e.g., '3:15 PM'. For 24-hour time format try 'H:i' instead.

\n"},"increment":{"!type":"number","!doc":"

The number of minutes between each time value in the list.

\n"},"loadMask":{"!type":"bool"},"maxValue":{"!type":"+Date","!doc":"

The maximum time to be shown in the list of times. This must be a Date object (only the time fields will be\nused); no parsing of String values will be done.

\n"},"minValue":{"!type":"+Date","!doc":"

The minimum time to be shown in the list of times. This must be a Date object (only the time fields will be\nused); no parsing of String values will be done.

\n"}},"Ext_resizer_BorderSplitter_cfg":{"!proto":"Ext_resizer_Splitter_cfg","collapseTarget":{"!type":"string|+Ext.panel.Panel","!doc":"

must be configured in by the border layout:

\n"}},"Ext_resizer_Handle_cfg":{"!proto":"Ext_Component_cfg","region":{"!type":"string|string|string|string|string","!doc":"

Ext.resizer.Resizer.prototype.possiblePositions define the regions\nwhich will be passed in as a region configuration.

\n"}},"Ext_resizer_ResizeTracker_cfg":{"!proto":"Ext_dd_DragTracker_cfg","constrainTo":{"!type":"+Ext.util.Region|+Ext.Element","!doc":"

Default to no constraint

\n"}},"Ext_resizer_Splitter_cfg":{"!proto":"Ext_Component_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"collapseOnDblClick":{"!type":"bool","!doc":"

True to enable dblclick to toggle expand and collapse on the collapseTarget Panel.

\n"},"collapseTarget":{"!type":"string|+Ext.panel.Panel","!doc":"

A string describing the relative position of the immediate sibling Panel to collapse. May be 'prev' or 'next'.

\n\n

Or the immediate sibling Panel to collapse.

\n\n

The orientation of the mini-collapse tool will be inferred from this setting.

\n\n

Note that only Panels may be collapsed.

\n"},"collapsedCls":{"!type":"string","!doc":"

A class to add to the splitter when it is collapsed. See collapsible.

\n"},"collapsible":{"!type":"bool","!doc":"

True to show a mini-collapse tool in the Splitter to toggle expand and collapse on the collapseTarget Panel.\nDefaults to the collapsible setting of the Panel.

\n"},"defaultSplitMax":{"!type":"number","!doc":"

Provides a default maximum width or height for the two components\nthat the splitter is between.

\n"},"defaultSplitMin":{"!type":"number","!doc":"

Provides a default minimum width or height for the two components\nthat the splitter is between.

\n"},"performCollapse":{"!type":"bool","!doc":"

Set to false to prevent this Splitter's mini-collapse tool from managing the collapse\nstate of the collapseTarget.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"size":{"!type":"number","!doc":"

The size of the splitter. This becomes the height for vertical splitters and\nwidth for horizontal splitters.

\n"}},"Ext_slider_Multi_cfg":{"!proto":"Ext_form_field_Base_cfg","animate":{"!type":"bool","!doc":"

Turn on or off animation.

\n"},"clickToChange":{"!type":"bool","!doc":"

Determines whether or not clicking on the Slider axis will change the slider.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"constrainThumbs":{"!type":"bool","!doc":"

True to disallow thumbs from overlapping one another.

\n"},"decimalPrecision":{"!type":"number|bool","!doc":"

The number of decimal places to which to round the Slider's value.

\n\n

To disable rounding, configure as false.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

note: {id} here is really {inputId}, but {cmpId} is available

\n"},"increment":{"!type":"number","!doc":"

How many units to change the slider when adjusting by drag and drop. Use this option to enable 'snapping'.

\n"},"keyIncrement":{"!type":"number","!doc":"

How many units to change the Slider when adjusting with keyboard navigation. If the increment\nconfig is larger, it will be used instead.

\n"},"maxValue":{"!type":"number","!doc":"

The maximum value for the Slider.

\n"},"minValue":{"!type":"number","!doc":"

The minimum value for the Slider.

\n"},"tipText":{"!type":"fn()","!doc":"

A function used to display custom text for the slider tip.

\n\n

Defaults to null, which will use the default on the plugin.

\n"},"useTips":{"!type":"?|bool","!doc":"

True to use an Ext.slider.Tip to display tips for the value. This option may also\nprovide a configuration object for an Ext.slider.Tip.

\n"},"value":{"!type":"number","!doc":"

A value with which to initialize the slider. Setting this will only result in the creation\nof a single slider thumb; if you want multiple thumbs then use the values config instead.

\n\n

Defaults to minValue.

\n"},"values":{"!type":"[number]","!doc":"

Array of Number values with which to initalize the slider. A separate slider thumb will be created for each value\nin this array. This will take precedence over the single value config.

\n"},"vertical":{"!type":"bool","!doc":"

Orient the Slider vertically rather than horizontally.

\n"},"zeroBasedSnapping":{"!type":"bool","!doc":"

Set to true to calculate snap points based on increments from zero as opposed to\nfrom this Slider's minValue.

\n\n

By Default, valid snap points are calculated starting increments from the minValue

\n"}},"Ext_slider_Single_cfg":{"!proto":"Ext_slider_Multi_cfg"},"Ext_slider_Thumb_cfg":{"!proto":"Ext_Base_cfg","constrain":{"!type":"bool","!doc":"

True to constrain the thumb so that it cannot overlap its siblings

\n"},"slider":{"!type":"+Ext.slider.MultiSlider","!doc":"

The Slider to render to.

\n"}},"Ext_slider_Tip_cfg":{"!proto":"Ext_tip_Tip_cfg","align":{"!type":"string","!doc":"

Alignment configuration for the tip to the slider. See Ext.util.Positionable.alignTo. Default\nvalues for alignment are provided by specifying the position config.

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width of the tip in pixels.

\n"},"offsets":{"!type":"[?]","!doc":"

Offsets for aligning the tip to the slider. See Ext.util.Positionable.alignTo. Default values\nfor offsets are provided by specifying the position config.

\n"},"position":{"!type":"string","!doc":"

Sets the position for where the tip will be displayed related to the thumb. This sets\ndefaults for align and offsets configurations. If align or\noffsets configurations are specified, they will override the defaults defined\nby position.

\n"}},"Ext_state_CookieProvider_cfg":{"!proto":"Ext_state_Provider_cfg","domain":{"!type":"string","!doc":"

The domain to save the cookie for. Note that you cannot specify a different domain than your page is on, but you can\nspecify a sub-domain, or simply the domain itself like 'sencha.com' to include all sub-domains if you need to access\ncookies across different sub-domains. Defaults to null which uses the same domain the page is running on including\nthe 'www' like 'www.sencha.com'.

\n"},"expires":{"!type":"+Date","!doc":"

The cookie expiration date. Defaults to 7 days from now.

\n"},"path":{"!type":"string","!doc":"

The path for which the cookie is active. Defaults to root '/' which makes it active for all pages in the site.

\n"},"secure":{"!type":"bool","!doc":"

True if the site is using SSL

\n"}},"Ext_state_Provider_cfg":{"!proto":"Ext_Base_cfg","listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"prefix":{"!type":"string","!doc":"

A string to prefix to items stored in the underlying state store.\nDefaults to 'ext-'

\n"}},"Ext_state_Stateful_cfg":{"!proto":"Ext_Base_cfg","listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"saveDelay":{"!type":"number","!doc":"

A buffer to be applied if many state events are fired within a short period.

\n"},"stateEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should trigger this object to\nsave its state. Defaults to none. stateEvents may be any type\nof event supported by this object, including browser or custom events\n(e.g., ['click', 'customerchange']).

\n\n\n

See stateful for an explanation of saving and\nrestoring object state.

\n\n"},"stateId":{"!type":"string","!doc":"

The unique id for this object to use for state management purposes.

\n\n

See stateful for an explanation of saving and restoring state.

\n\n"},"stateful":{"!type":"bool","!doc":"

A flag which causes the object to attempt to restore the state of\ninternal properties from a saved state on startup. The object must have\na stateId for state to be managed.

\n\n

Auto-generated ids are not guaranteed to be stable across page loads and\ncannot be relied upon to save and restore the same state for a object.

\n\n

For state saving to work, the state manager's provider must have been\nset to an implementation of Ext.state.Provider which overrides the\nset and get\nmethods to save and recall name/value pairs. A built-in implementation,\nExt.state.CookieProvider is available.

\n\n

To set the state provider for the current page:

\n\n

Ext.state.Manager.setProvider(new Ext.state.CookieProvider({\n expires: new Date(new Date().getTime()+(10006060247)), //7 days from now\n }));

\n\n

A stateful object attempts to save state when one of the events\nlisted in the stateEvents configuration fires.

\n\n

To save state, a stateful object first serializes its state by\ncalling getState.

\n\n

The Component base class implements getState to save its width and height within the state\nonly if they were initially configured, and have changed from the configured value.

\n\n

The Panel class saves its collapsed state in addition to that.

\n\n

The Grid class saves its column state in addition to its superclass state.

\n\n

If there is more application state to be save, the developer must provide an implementation which\nfirst calls the superclass method to inherit the above behaviour, and then injects new properties\ninto the returned object.

\n\n

The value yielded by getState is passed to Ext.state.Manager.set\nwhich uses the configured Ext.state.Provider to save the object\nkeyed by the stateId.

\n\n

During construction, a stateful object attempts to restore its state by calling\nExt.state.Manager.get passing the stateId

\n\n

The resulting object is passed to applyState*. The default implementation of\napplyState simply copies properties into the object, but a developer may\noverride this to support restoration of more complex application state.

\n\n

You can perform extra processing on state save and restore by attaching\nhandlers to the beforestaterestore, staterestore,\nbeforestatesave and statesave events.

\n"}},"Ext_tab_Bar_cfg":{"!proto":"Ext_panel_Header_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"maxTabWidth":{"!type":"number","!doc":"

The maximum width for a tab in this tab Bar. Defaults to the tab Panel's maxTabWidth value.

\n"},"minTabWidth":{"!type":"number","!doc":"

The minimum width for a tab in this tab Bar. Defaults to the tab Panel's minTabWidth value.

\n"},"plain":{"!type":"bool","!doc":"

True to not show the full background on the tabbar

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"}},"Ext_tab_Panel_cfg":{"!proto":"Ext_panel_Panel_cfg","activeItem":{"!type":"string|number","!doc":"

Doesn't apply for TabPanel, use activeTab instead.

\n"},"activeTab":{"!type":"string|number|+Ext.Component","!doc":"

The tab to activate initially. Either an ID, index or the tab component itself.

\n"},"deferredRender":{"!type":"bool","!doc":"

True by default to defer the rendering of child items to the browsers DOM\nuntil a tab is activated. False will render all contained items as soon as\nthe layout is rendered. If there is a significant amount of content or a lot of\nheavy controls being rendered into panels that are not displayed by default, setting this to true might improve\nperformance.

\n\n

The deferredRender property is internally passed to the layout manager for TabPanels (Ext.layout.container.Card) as its Ext.layout.container.Card.deferredRender configuration value.

\n\n

Note: leaving deferredRender as true means that the content within an unactivated tab will not be available

\n"},"itemCls":{"!type":"string","!doc":"

The class added to each child item of this TabPanel.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Optional configuration object for the internal card layout.\nIf present, this is passed straight through to the layout's constructor

\n"},"maxTabWidth":{"!type":"number","!doc":"

The maximum width for each tab.

\n"},"minTabWidth":{"!type":"number","!doc":"

The minimum width for a tab in the tabBar.

\n"},"plain":{"!type":"bool","!doc":"

True to not show the full background on the TabBar.

\n"},"removePanelHeader":{"!type":"bool","!doc":"

True to instruct each Panel added to the TabContainer to not render its header element.\nThis is to ensure that the title of the panel does not appear twice.

\n"},"tabBar":{"!type":"?","!doc":"

Optional configuration object for the internal Ext.tab.Bar.\nIf present, this is passed straight through to the TabBar's constructor

\n"},"tabPosition":{"!type":"string|string|string|string","!doc":"

The position where the tab strip should be rendered. Can be top, bottom,\nleft or right

\n"}},"Ext_tab_Tab_cfg":{"!proto":"Ext_button_Button_cfg","activeCls":{"!type":"string","!doc":"

The CSS class to be applied to a Tab when it is active.\nProviding your own CSS for this class enables you to customize the active state.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to add to all buttons.

\n"},"closable":{"!type":"bool","!doc":"

True to make the Tab start closable (the close icon will be visible).

\n"},"closableCls":{"!type":"string","!doc":"

The CSS class which is added to the tab when it is closable

\n"},"closeText":{"!type":"string","!doc":"

The accessible text label for the close button link; only used when closable = true.

\n"},"disabledCls":{"!type":"string","!doc":"

The CSS class to be applied to a Tab when it is disabled.

\n"},"scale":{"!type":"string|string|string","!doc":"

The size of the Button. Three values are allowed:

\n\n\n\n"}},"Ext_tip_QuickTip_cfg":{"!proto":"Ext_tip_ToolTip_cfg","interceptTitles":{"!type":"bool","!doc":"

true to automatically use the element's DOM title value if available.

\n"},"target":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The target HTMLElement, Ext.Element or id to associate with this Quicktip.

\n\n

Defaults to the document.

\n"},"title":{"!type":"string","!doc":"

Force creation of header Component

\n"}},"Ext_tip_Tip_cfg":{"!proto":"Ext_panel_Panel_cfg","autoRender":{"!type":"bool|string|+HTMLElement|+Ext.Element","!doc":"

private panel overrides

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"closable":{"!type":"bool","!doc":"

True to render a close tool button into the tooltip header.

\n"},"closeAction":{"!type":"string","!doc":"

The action to take when the close header tool is clicked:

\n\n\n\n\n

Note: This behavior has changed! setting does affect the close method\nwhich will invoke the approriate closeAction.

\n"},"constrainPosition":{"!type":"bool","!doc":"

If true, then the tooltip will be automatically constrained to stay within\nthe browser viewport.

\n"},"defaultAlign":{"!type":"string","!doc":"

Experimental. The default Ext.util.Positionable.alignTo anchor position value\nfor this tip relative to its element of origin.

\n"},"floating":{"!type":"bool","!doc":"

Specify as true to float the Component outside of the document flow using CSS absolute positioning.

\n\n

Components such as Windows and Menus are floating by default.

\n\n

Floating Components that are programatically rendered will register\nthemselves with the global ZIndexManager

\n\n

Floating Components as child items of a Container

\n\n

A floating Component may be used as a child item of a Container. This just allows the floating Component to seek\na ZIndexManager by examining the ownerCt chain.

\n\n

When configured as floating, Components acquire, at render time, a ZIndexManager which\nmanages a stack of related floating Components. The ZIndexManager brings a single floating Component to the top\nof its stack when the Component's toFront method is called.

\n\n

The ZIndexManager is found by traversing up the ownerCt chain to find an ancestor which itself is\nfloating. This is so that descendant floating Components of floating Containers (Such as a ComboBox dropdown\nwithin a Window) can have its zIndex managed relative to any siblings, but always above that floating\nancestor Container.

\n\n

If no floating ancestor is found, a floating Component registers itself with the default ZIndexManager.

\n\n

Floating components do not participate in the Container's layout. Because of this, they are not rendered until\nyou explicitly show them.

\n\n

After rendering, the ownerCt reference is deleted, and the floatParent property is set to the found\nfloating ancestor Container. If no floating ancestor Container was found the floatParent property will\nnot be set.

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Specifies whether the floated component should be automatically focused when\nit is brought to the front.

\n"},"frameHeader":{"!type":"bool","!doc":"

True to apply a frame to the panel panels header (if 'frame' is true).

\n"},"hidden":{"!type":"bool","!doc":"

true to hide the component.

\n"},"maxWidth":{"!type":"number","!doc":"

The maximum width of the tip in pixels. The maximum supported value is 500.

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width of the tip in pixels.

\n"},"shadow":{"!type":"bool|string","!doc":"

true or \"sides\" for the default effect, \"frame\" for 4-way shadow, and \"drop\"\nfor bottom-right shadow.

\n"},"width":{"!type":"number","!doc":"

Width in pixels of the tip. Width will be ignored if it\nexceeds the bounds of minWidth or maxWidth.

\n"}},"Ext_tip_ToolTip_cfg":{"!proto":"Ext_tip_Tip_cfg","anchor":{"!type":"string","!doc":"

If specified, indicates that the tip should be anchored to a\nparticular side of the target element or mouse pointer (\"top\", \"right\", \"bottom\",\nor \"left\"), with an arrow pointing back at the target or mouse pointer. If\nconstrainPosition is enabled, this will be used as a preferred value\nonly and may be flipped as needed.

\n"},"anchorOffset":{"!type":"number","!doc":"

A numeric pixel value used to offset the default position of the anchor arrow. When the anchor\nposition is on the top or bottom of the tooltip, anchorOffset will be used as a horizontal offset.\nLikewise, when the anchor position is on the left or right side, anchorOffset will be used as\na vertical offset.

\n"},"anchorToTarget":{"!type":"bool","!doc":"

True to anchor the tooltip to the target element, false to anchor it relative to the mouse coordinates.\nWhen anchorToTarget is true, use defaultAlign to control tooltip alignment to the\ntarget element. When anchorToTarget is false, use anchor instead to control alignment.

\n"},"autoHide":{"!type":"bool","!doc":"

True to automatically hide the tooltip after the\nmouse exits the target element or after the dismissDelay\nhas expired if set. If closable = true\na close tool button will be rendered into the tooltip header.

\n"},"delegate":{"!type":"string","!doc":"

A DomQuery selector which allows selection of individual elements within the\ntarget element to trigger showing and hiding the ToolTip as the mouse moves within the\ntarget.

\n\n

When specified, the child element of the target which caused a show event is placed into the\ntriggerElement property before the ToolTip is shown.

\n\n

This may be useful when a Component has regular, repeating elements in it, each of which need a\nToolTip which contains information specific to that element.

\n\n

See the delegate example in class documentation of Ext.tip.ToolTip.

\n"},"dismissDelay":{"!type":"number","!doc":"

Delay in milliseconds before the tooltip automatically hides. To disable automatic hiding, set\ndismissDelay = 0.

\n"},"hideDelay":{"!type":"number","!doc":"

Delay in milliseconds after the mouse exits the target element but before the tooltip actually hides.\nSet to 0 for the tooltip to hide immediately.

\n"},"mouseOffset":{"!type":"[number]","!doc":"

An XY offset from the mouse position where the tooltip should be shown.

\n"},"showDelay":{"!type":"number","!doc":"

Delay in milliseconds before the tooltip displays after the mouse enters the target element.

\n"},"target":{"!type":"+HTMLElement|+Ext.Element|string","!doc":"

The target element or string id to monitor for mouseover events to trigger\nshowing this ToolTip.

\n"},"trackMouse":{"!type":"bool","!doc":"

True to have the tooltip follow the mouse as it moves over the target element.

\n"}},"Ext_toolbar_Fill_cfg":{"!proto":"Ext_Component_cfg"},"Ext_toolbar_Item_cfg":{"!proto":"Ext_Component_cfg","overflowText":{"!type":"string","!doc":"

Text to be used for the menu if the item is overflowed.

\n"}},"Ext_toolbar_Paging_cfg":{"!proto":"Ext_toolbar_Toolbar_cfg","afterPageText":{"!type":"string","!doc":"

Customizable piece of the default paging text. Note that this string is formatted using\n{0} as a token that is replaced by the number of total pages. This token should be preserved when overriding this\nstring if showing the total page count is desired.

\n"},"beforePageText":{"!type":"string","!doc":"

The text displayed before the input item.

\n"},"displayInfo":{"!type":"bool","!doc":"

true to display the displayMsg

\n"},"displayMsg":{"!type":"string","!doc":"

The paging status message to display. Note that this string is\nformatted using the braced numbers {0}-{2} as tokens that are replaced by the values for start, end and total\nrespectively. These tokens should be preserved when overriding this string if showing those values is desired.

\n"},"emptyMsg":{"!type":"string","!doc":"

The message to display when no records are found.

\n"},"firstText":{"!type":"string","!doc":"

The quicktip text displayed for the first page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"inputItemWidth":{"!type":"number","!doc":"

The width in pixels of the input field used to display and change the current page number.

\n"},"lastText":{"!type":"string","!doc":"

The quicktip text displayed for the last page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"nextText":{"!type":"string","!doc":"

The quicktip text displayed for the next page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"prependButtons":{"!type":"bool","!doc":"

true to insert any configured items before the paging buttons.

\n"},"prevText":{"!type":"string","!doc":"

The quicktip text displayed for the previous page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"refreshText":{"!type":"string","!doc":"

The quicktip text displayed for the Refresh button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Ext.data.Store the paging toolbar should use as its data source.

\n"}},"Ext_toolbar_Separator_cfg":{"!proto":"Ext_toolbar_Item_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"}},"Ext_toolbar_Spacer_cfg":{"!proto":"Ext_Component_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"}},"Ext_toolbar_Toolbar_cfg":{"!proto":"Ext_container_Container_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"defaultButtonUI":{"!type":"string","!doc":"

A default ui to use for Button items

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"enableOverflow":{"!type":"bool","!doc":"

Configure true to make the toolbar provide a button which activates a dropdown Menu to show\nitems which overflow the Toolbar's width.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

This class assigns a default layout (layout: 'hbox').\nDevelopers may override this configuration option if another layout\nis required (the constructor must be passed a configuration object in this\ncase instead of an array).\nSee Ext.container.Container.layout for additional information.

\n"},"menuTriggerCls":{"!type":"string","!doc":"

Configure the icon class of the overflow button.

\n"},"vertical":{"!type":"bool","!doc":"

Set to true to make the toolbar vertical. The layout will become a vbox.

\n"}},"Ext_tree_Column_cfg":{"!proto":"Ext_grid_column_Column_cfg","hideable":{"!type":"bool","!doc":"

False to prevent the user from hiding this column.

\n"},"lockable":{"!type":"bool","!doc":"

If the grid is configured with enableLocking, or has columns which are\nconfigured with a locked value, this option may be used to disable user-driven locking or unlocking\nof this column. This column will remain in the side into which its own locked configuration placed it.

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"}},"Ext_tree_Panel_cfg":{"!proto":"Ext_panel_Table_cfg","animate":{"!type":"bool","!doc":"

True to enable animated expand/collapse. Defaults to the value of Ext.enableFx.

\n"},"deferRowRender":{"!type":"bool","!doc":"

Defaults to true to enable deferred row rendering.

\n\n

This allows the View to execute a refresh quickly, with the expensive update of the row structure deferred so\nthat layouts with GridPanels appear, and lay out more quickly.

\n"},"displayField":{"!type":"string","!doc":"

The field inside the model that will be used as the node's text.

\n"},"folderSort":{"!type":"bool","!doc":"

True to automatically prepend a leaf sorter to the store.

\n"},"hideHeaders":{"!type":"bool","!doc":"

True to hide the headers.

\n"},"lines":{"!type":"bool","!doc":"

False to disable tree lines.

\n"},"root":{"!type":"+Ext.data.Model|+Ext.data.NodeInterface|?","!doc":"

Allows you to not specify a store on this TreePanel. This is useful for creating a simple tree with preloaded\ndata without having to specify a TreeStore and Model. A store and model will be created and root will be passed\nto that store. For example:

\n\n
Ext.create('Ext.tree.Panel', {\n    title: 'Simple Tree',\n    root: {\n        text: \"Root node\",\n        expanded: true,\n        children: [\n            { text: \"Child 1\", leaf: true },\n            { text: \"Child 2\", leaf: true }\n        ]\n    },\n    renderTo: Ext.getBody()\n});\n
\n"},"rootVisible":{"!type":"bool","!doc":"

False to hide the root node.

\n"},"rowLines":{"!type":"bool","!doc":"

False so that rows are not separated by lines.

\n"},"selType":{"!type":"string","!doc":"

An xtype of selection model to use. Defaults to 'rowmodel'. This is used to create selection model if just\na config object or nothing at all given in selModel config.

\n"},"singleExpand":{"!type":"bool","!doc":"

True if only 1 node per branch may be expanded.

\n"},"store":{"!type":"+Ext.data.TreeStore","!doc":"

The Store the tree should use as its data source.

\n"},"useArrows":{"!type":"bool","!doc":"

True to use Vista-style arrows in the tree.

\n"},"viewType":{"!type":"string","!doc":"

An xtype of view to use. This is automatically set to 'gridview' by Grid\nand to 'treeview' by Tree.

\n"}},"Ext_tree_View_cfg":{"!proto":"Ext_view_Table_cfg","animate":{"!type":"bool","!doc":"

True to enable animated expand/collapse (defaults to the value of Ext.enableFx)

\n"},"blockRefresh":{"!type":"bool","!doc":"

Set this to true to ignore refresh events on the bound store. This is useful if\nyou wish to provide custom transition animations via a plugin

\n"},"deferInitialRefresh":{"!type":"bool","!doc":"

Must be false for Tree Views because the root node must be rendered in order to be updated with its child nodes.

\n"},"loadMask":{"!type":"bool","!doc":"

False to disable a load mask from displaying while the view is loading. This can also be a\nExt.LoadMask configuration object.

\n"},"loadingCls":{"!type":"string","!doc":"

The CSS class to apply to the loading message element. Defaults to Ext.LoadMask.prototype.msgCls \"x-mask-loading\".

\n"},"rootVisible":{"!type":"bool","!doc":"

False to hide the root node.

\n"},"stripeRows":{"!type":"bool","!doc":"

True to stripe the rows.

\n\n

This causes the CSS class x-grid-row-alt to be added to alternate rows of\nthe grid. A default CSS rule is provided which sets a background color, but you can override this\nwith a rule which either overrides the background-color style using the !important\nmodifier, or which uses a CSS selector of higher specificity.

\n"}},"Ext_tree_ViewDragZone_cfg":{"!proto":"Ext_view_DragZone_cfg"},"Ext_tree_ViewDropZone_cfg":{"!proto":"Ext_view_DropZone_cfg","allowContainerDrop":{"!type":"bool","!doc":"

True if drops on the tree container (outside of a specific tree node) are allowed.

\n"},"allowParentInserts":{"!type":"bool","!doc":"

Allow inserting a dragged node between an expanded parent node and its first child that will become a\nsibling of the parent when dropped.

\n"},"appendOnly":{"!type":"bool","!doc":"

True if the tree should only allow append drops (use for trees which are sorted).

\n"},"expandDelay":{"!type":"number","!doc":"

The delay in milliseconds to wait before expanding a target tree node while dragging a droppable node\nover the target.

\n"}},"Ext_tree_plugin_TreeViewDragDrop_cfg":{"!proto":"Ext_AbstractPlugin_cfg","allowContainerDrops":{"!type":"bool","!doc":"

True if drops on the tree container (outside of a specific tree node) are allowed.

\n"},"allowParentInserts":{"!type":"bool","!doc":"

Allow inserting a dragged node between an expanded parent node and its first child that will become a sibling of\nthe parent when dropped.

\n"},"appendOnly":{"!type":"bool","!doc":"

True if the tree should only allow append drops (use for trees which are sorted).

\n"},"containerScroll":{"!type":"?|bool","!doc":"

True to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then both the DragZones and\nDropZone used by this plugin will only interact with other drag drop objects in the same group.

\n"},"displayField":{"!type":"string","!doc":"

The name of the model field that is used to display the text for the nodes

\n"},"dragGroup":{"!type":"string","!doc":"

The ddGroup to which the DragZone will belong.

\n\n

This defines which other DropZones the DragZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"dragText":{"!type":"string","!doc":"

The text to show while dragging.

\n\n

Two placeholders can be used in the text:

\n\n\n\n"},"dropGroup":{"!type":"string","!doc":"

The ddGroup to which the DropZone will belong.

\n\n

This defines which other DragZones the DropZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"enableDrag":{"!type":"bool","!doc":"

Set to false to disallow dragging items from the View.

\n"},"enableDrop":{"!type":"bool","!doc":"

Set to false to disallow the View from accepting drop gestures.

\n"},"expandDelay":{"!type":"number","!doc":"

The delay in milliseconds to wait before expanding a target tree node while dragging a droppable node over the\ntarget.

\n"},"nodeHighlightColor":{"!type":"string","!doc":"

The color to use when visually highlighting the dragged or dropped node (default value is light blue).\nThe color must be a 6 digit hex value, without a preceding '#'. See also nodeHighlightOnDrop and\nnodeHighlightOnRepair.

\n"},"nodeHighlightOnDrop":{"!type":"bool","!doc":"

Whether or not to highlight any nodes after they are\nsuccessfully dropped on their target. Defaults to the value of Ext.enableFx.\nSee also nodeHighlightColor and nodeHighlightOnRepair.

\n"},"nodeHighlightOnRepair":{"!type":"bool","!doc":"

Whether or not to highlight any nodes after they are\nrepaired from an unsuccessful drag/drop. Defaults to the value of Ext.enableFx.\nSee also nodeHighlightColor and nodeHighlightOnDrop.

\n"},"sortOnDrop":{"!type":"bool","!doc":"

Configure as true to sort the target node into the current tree sort order after the dropped node is added.

\n"}},"Ext_util_ClickRepeater_cfg":{"!proto":"Ext_util_Observable_cfg","accelerate":{"!type":"bool","!doc":"

True if autorepeating should start slowly and accelerate.\n\"interval\" and \"delay\" are ignored.

\n"},"delay":{"!type":"number","!doc":"

The initial delay before the repeating event begins firing.\nSimilar to an autorepeat key delay.

\n"},"el":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The element to act as a button.

\n"},"interval":{"!type":"number","!doc":"

The interval between firings of the \"click\" event (in milliseconds).

\n"},"pressedCls":{"!type":"string","!doc":"

A CSS class name to be applied to the element while pressed.

\n"},"preventDefault":{"!type":"bool","!doc":"

True to prevent the default click event

\n"},"stopDefault":{"!type":"bool","!doc":"

True to stop the default click event

\n"}},"Ext_util_ComponentDragger_cfg":{"!proto":"Ext_dd_DragTracker_cfg","constrain":{"!type":"bool","!doc":"

Specify as true to constrain the Component to within the bounds of the constrainTo region.

\n"},"constrainDelegate":{"!type":"bool","!doc":"

Specify as true to constrain the drag handles within the constrainTo region.

\n"},"delegate":{"!type":"string|+Ext.Element","!doc":"

A DomQuery selector which identifies child elements within the Component's encapsulating\nElement which are the drag handles. This limits dragging to only begin when the matching elements are\nmousedowned.

\n\n

This may also be a specific child element within the Component's encapsulating element to use as the drag handle.

\n"}},"Ext_util_Filter_cfg":{"!proto":"Ext_Base_cfg","anyMatch":{"!type":"bool","!doc":"

True to allow any match - no regex start/end line anchors will be added.

\n"},"caseSensitive":{"!type":"bool","!doc":"

True to make the regex case sensitive (adds 'i' switch to regex).

\n"},"exactMatch":{"!type":"bool","!doc":"

True to force exact match (^ and $ characters added to the regex). Ignored if anyMatch is true.

\n"},"filterFn":{"!type":"fn()","!doc":"

A custom filter function which is passed each item in the Ext.util.MixedCollection in turn. Should return\ntrue to accept each item or false to reject it.

\n"},"id":{"!type":"string","!doc":"

An identifier by which this Filter is indexed in a Store's filters collection

\n\n

Identified Filters may be individually removed from a Store's filter set by using Ext.data.Store.removeFilter.

\n\n

Anonymous Filters may be removed en masse by passing null to Ext.data.Store.removeFilter.

\n"},"operator":{"!type":"string","!doc":"

The operator to use to compare the property to this Filter's value

\n\n

Possible values are:\n * <\n * <=\n * =\n * >=\n * >\n * !=

\n"},"property":{"!type":"string","!doc":"

The property to filter on. Required unless a filterFn is passed

\n"},"root":{"!type":"string","!doc":"

Optional root property. This is mostly useful when filtering a Store, in which case we set the root to 'data' to\nmake the filter pull the property out of the data object of each item

\n"},"value":{"!type":"+Mixed","!doc":"

The value to filter on. Required unless a filterFn is passed.

\n"}},"Ext_util_Grouper_cfg":{"!proto":"Ext_util_Sorter_cfg"},"Ext_util_HashMap_cfg":{"!proto":"Ext_Base_cfg","keyFn":{"!type":"fn()","!doc":"

A function that is used to retrieve a default key for a passed object.\nA default is provided that returns the id property on the object. This function is only used\nif the add method is called with a single argument.

\n"},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"}},"Ext_util_KeyMap_cfg":{"!proto":"Ext_Base_cfg","binding":{"!type":"?|[[?]]","!doc":"

Either a single object describing a handling function for s specified key (or set of keys), or\nan array of such objects.

\n"},"eventName":{"!type":"string","!doc":"

The event to listen for to pick up key events.

\n"},"ignoreInputFields":{"!type":"bool","!doc":"

Configure this as true if there are any input fields within the target, and this KeyNav\nshould not process events from input fields, (&lt;input>, &lt;textarea> and elements withcontentEditable=\"true\"`)

\n"},"processEvent":{"!type":"fn()","!doc":"

An optional event processor function which accepts the argument list provided by the\nconfigured event of the target, and returns a keyEvent for processing by the KeyMap.

\n\n

This may be useful when the target is a Component with s complex event signature, where the event is not\nthe first parameter. Extra information from the event arguments may be injected into the event for use by the handler\nfunctions before returning it.

\n"},"processEventScope":{"!type":"?","!doc":"

The scope (this context) in which the processEvent method is executed.

\n"},"target":{"!type":"+Ext.Component|+Ext.Element|+HTMLElement|string","!doc":"

The object on which to listen for the event specified by the eventName config option.

\n"}},"Ext_util_KeyNav_cfg":{"!proto":"Ext_Base_cfg","defaultEventAction":{"!type":"string","!doc":"

The method to call on the Ext.EventObject after this KeyNav intercepts a key. Valid values are Ext.EventObject.stopEvent, Ext.EventObject.preventDefault and Ext.EventObject.stopPropagation.

\n\n

If a falsy value is specified, no method is called on the key event.

\n"},"disabled":{"!type":"bool","!doc":"

True to disable this KeyNav instance.

\n"},"eventName":{"!type":"string","!doc":"

The event to listen for to pick up key events.

\n"},"forceKeyDown":{"!type":"bool","!doc":"

Handle the keydown event instead of keypress. KeyNav automatically does this for IE since IE does not propagate\nspecial keys on keypress, but setting this to true will force other browsers to also handle keydown instead of\nkeypress.

\n"},"ignoreInputFields":{"!type":"bool","!doc":"

Configure this as true if there are any input fields within the target, and this KeyNav\nshould not process events from input fields, (&lt;input>, &lt;textarea> and elements withcontentEditable=\"true\"`)

\n"},"keyMap":{"!type":"+Ext.util.KeyMap","!doc":"

An optional pre-existing KeyMap to use to listen for key events. If not specified,\none is created.

\n"},"processEvent":{"!type":"fn()","!doc":"

An optional event processor function which accepts the argument list provided by the configured\nevent of the target, and returns a keyEvent for processing by the KeyMap.

\n\n

This may be useful when the target is a Component with s complex event signature. Extra information from\nthe event arguments may be injected into the event for use by the handler functions before returning it.

\n"},"processEventScope":{"!type":"?","!doc":"

The scope (this context) in which the processEvent method is executed.

\n"},"target":{"!type":"+Ext.Component|+Ext.Element|+HTMLElement|string","!doc":"

The object on which to listen for the event specified by the eventName config option.

\n"}},"Ext_util_LruCache_cfg":{"!proto":"Ext_util_HashMap_cfg","maxSize":{"!type":"number","!doc":"

The maximum size the cache is allowed to grow to before further additions cause\nremoval of the least recently used entry.

\n"}},"Ext_util_MixedCollection_cfg":{"!proto":"Ext_util_AbstractMixedCollection_cfg","allowFunctions":{"!type":"bool","!doc":"

Configure as true if the addAll function should add function references to the collection.

\n"},"defaultSortDirection":{"!type":"string","!doc":"

The default sort direction to use if one is not specified.

\n"},"sortRoot":{"!type":"string","!doc":"

The property in each item that contains the data to sort.

\n"},"sorters":{"!type":"[+Ext.util.Sorter]|[?]","!doc":"

The initial set of Sorters

\n"}},"Ext_util_Sorter_cfg":{"!proto":"Ext_Base_cfg","direction":{"!type":"string","!doc":"

The direction to sort by.

\n"},"property":{"!type":"string","!doc":"

The property to sort by. Required unless sorterFn is provided. The property is extracted from the object\ndirectly and compared for sorting using the built in comparison operators.

\n"},"root":{"!type":"string","!doc":"

Optional root property. This is mostly useful when sorting a Store, in which case we set the root to 'data' to\nmake the filter pull the property out of the data object of each item

\n"},"sorterFn":{"!type":"fn()","!doc":"

A specific sorter function to execute. Can be passed instead of property. This sorter function allows\nfor any kind of custom/complex comparisons. The sorterFn receives two arguments, the objects being compared. The\nfunction should return:

\n\n\n\n"},"transform":{"!type":"fn()","!doc":"

A function that will be run on each value before it is compared in the sorter. The function will receive a single\nargument, the value.

\n"}},"Ext_view_AbstractView_cfg":{"!proto":"Ext_Component_cfg","blockRefresh":{"!type":"bool","!doc":"

Set this to true to ignore refresh events on the bound store. This is useful if\nyou wish to provide custom transition animations via a plugin

\n"},"deferEmptyText":{"!type":"bool","!doc":"

True to defer emptyText being applied until the store's first load.

\n"},"deferInitialRefresh":{"!type":"bool","!doc":"

Defaults to true to defer the initial refresh of the view.

\n\n\n

This allows the View to execute its render and initial layout more quickly because the process will not be encumbered\nby the expensive update of the view structure.

\n\n\n

Important: Be aware that this will mean that the View's item elements will not be available immediately upon render, so\nselection may not take place at render time. To access a View's item elements as soon as possible, use the viewready event.\nOr set deferInitialrefresh to false, but this will be at the cost of slower rendering.

\n\n"},"disableSelection":{"!type":"bool","!doc":"

True to disable selection within the DataView. This configuration will lock the selection model\nthat the DataView uses.

\n"},"emptyText":{"!type":"string","!doc":"

The text to display in the view when there is no data to display.\nNote that when using local data the emptyText will not be displayed unless you set\nthe deferEmptyText option to false.

\n"},"itemCls":{"!type":"string","!doc":"

Specifies the class to be assigned to each element in the view when used in conjunction with the\nitemTpl configuration.

\n"},"itemSelector":{"!type":"string","!doc":"

This is a required setting. A simple CSS selector (e.g. div.some-class or\nspan:first-child) that will be used to determine what nodes this DataView will be\nworking with. The itemSelector is used to map DOM nodes to records. As such, there should\nonly be one root level element that matches the selector for each record.

\n"},"itemTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The inner portion of the item template to be rendered. Follows an XTemplate\nstructure and will be placed inside of a tpl.

\n"},"loadMask":{"!type":"bool|?","!doc":"

False to disable a load mask from displaying while the view is loading. This can also be a\nExt.LoadMask configuration object.

\n"},"loadingCls":{"!type":"string","!doc":"

The CSS class to apply to the loading message element. Defaults to Ext.LoadMask.prototype.msgCls \"x-mask-loading\".

\n"},"loadingHeight":{"!type":"number","!doc":"

If specified, gives an explicit height for the data view when it is showing the loadingText,\nif that is specified. This is useful to prevent the view's height from collapsing to zero when the\nloading mask is applied and there are no other contents in the data view.

\n"},"loadingText":{"!type":"string","!doc":"

A string to display during data load operations. If specified, this text will be\ndisplayed in a loading div and the view's contents will be cleared while loading, otherwise the view's\ncontents will continue to display normally until the new data is loaded and the contents are replaced.

\n"},"loadingUseMsg":{"!type":"bool","!doc":"

Whether or not to use the loading message.

\n"},"multiSelect":{"!type":"bool","!doc":"

True to allow selection of more than one item at a time, false to allow selection of only a single item\nat a time or no selection at all, depending on the value of singleSelect.

\n"},"overItemCls":{"!type":"string","!doc":"

A CSS class to apply to each item in the view on mouseover.\nSetting this will automatically set trackOver to true.

\n"},"preserveScrollOnRefresh":{"!type":"bool","!doc":"

True to preserve scroll position across refresh operations.

\n"},"selectedItemCls":{"!type":"string","!doc":"

A CSS class to apply to each selected item in the view.

\n"},"simpleSelect":{"!type":"bool","!doc":"

True to enable multiselection by clicking on multiple items without requiring the user to hold Shift or Ctrl,\nfalse to force the user to hold Ctrl or Shift to select more than on item.

\n"},"singleSelect":{"!type":"bool","!doc":"

Allows selection of exactly one item at a time. As this is the default selection mode anyway, this config\nis completely ignored.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Ext.data.Store to bind this DataView to.

\n"},"tpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The HTML fragment or an array of fragments that will make up the template used by this DataView. This should\nbe specified in the same format expected by the constructor of Ext.XTemplate.

\n"},"trackOver":{"!type":"bool","!doc":"

When true the overItemCls will be applied to rows when hovered over.\nThis in return will also cause highlightitem and\nunhighlightitem events to be fired.

\n\n

Enabled automatically when the overItemCls config is set.

\n"}},"Ext_view_BoundList_cfg":{"!proto":"Ext_view_View_cfg","baseCls":{"!type":"string","!doc":"

private overrides

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"deferInitialRefresh":{"!type":"bool","!doc":"

This Component is used as a popup, not part of a complex layout. Display data immediately.

\n"},"displayField":{"!type":"string","!doc":"

The field from the store to show in the view.

\n"},"itemCls":{"!type":"string","!doc":"

Specifies the class to be assigned to each element in the view when used in conjunction with the\nitemTpl configuration.

\n"},"pageSize":{"!type":"number","!doc":"

If greater than 0, a Ext.toolbar.Paging is displayed at the bottom of the list and store\nqueries will execute with page start and\nlimit parameters.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shadow":{"!type":"string|bool","!doc":"

Specifies whether the floating component should be given a shadow. Set to true to automatically create an\nExt.Shadow, or a string indicating the shadow's display Ext.Shadow.mode. Set to false to\ndisable the shadow.

\n"},"tpl":{"!type":"string|+Ext.XTemplate","!doc":"

A String or Ext.XTemplate instance to apply to inner template.

\n\n

Ext.view.BoundList is used for the dropdown list of Ext.form.field.ComboBox.\nTo customize the template you can do this:

\n\n
Ext.create('Ext.form.field.ComboBox', {\n    fieldLabel   : 'State',\n    queryMode    : 'local',\n    displayField : 'text',\n    valueField   : 'abbr',\n    store        : Ext.create('StateStore', {\n        fields : ['abbr', 'text'],\n        data   : [\n            {\"abbr\":\"AL\", \"name\":\"Alabama\"},\n            {\"abbr\":\"AK\", \"name\":\"Alaska\"},\n            {\"abbr\":\"AZ\", \"name\":\"Arizona\"}\n            //...\n        ]\n    }),\n    listConfig : {\n        tpl : '<tpl for=\".\"><div class=\"x-boundlist-item\">{abbr}</div></tpl>'\n    }\n});\n
\n\n

Defaults to:

\n\n
Ext.create('Ext.XTemplate',\n    '<ul><tpl for=\".\">',\n        '<li role=\"option\" class=\"' + itemCls + '\">' + me.getInnerTpl(me.displayField) + '</li>',\n    '</tpl></ul>'\n);\n
\n"},"trackOver":{"!type":"bool","!doc":"

When true the overItemCls will be applied to rows when hovered over.\nThis in return will also cause highlightitem and\nunhighlightitem events to be fired.

\n\n

Enabled automatically when the overItemCls config is set.

\n"}},"Ext_view_BoundListKeyNav_cfg":{"!proto":"Ext_util_KeyNav_cfg","boundList":{"!type":"+Ext.view.BoundList","!doc":"

The Ext.view.BoundList instance for which key navigation will be managed.

\n"}},"Ext_view_DragZone_cfg":{"!proto":"Ext_dd_DragZone_cfg","containerScroll":{"!type":"?|bool","!doc":"

True to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"}},"Ext_view_DropZone_cfg":{"!proto":"Ext_dd_DropZone_cfg"},"Ext_view_Table_cfg":{"!proto":"Ext_view_View_cfg","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"enableTextSelection":{"!type":"bool","!doc":"

True to enable text selections.

\n"},"firstCls":{"!type":"string","!doc":"

A CSS class to add to the first cell in every row to enable special styling for the first column.\nIf no styling is needed on the first column, this may be configured as null.

\n"},"itemSelector":{"!type":"string","!doc":"

view item (may be a wrapper)

\n"},"lastCls":{"!type":"string","!doc":"

A CSS class to add to the last cell in every row to enable special styling for the last column.\nIf no styling is needed on the last column, this may be configured as null.

\n"},"markDirty":{"!type":"bool","!doc":"

True to show the dirty cell indicator when a cell has been modified.

\n"},"overItemCls":{"!type":"string","!doc":"

A CSS class to apply to each item in the view on mouseover.\nSetting this will automatically set trackOver to true.

\n"},"selectedItemCls":{"!type":"string","!doc":"

A CSS class to apply to each selected item in the view.

\n"},"stripeRows":{"!type":"bool","!doc":"

True to stripe the rows.

\n\n

This causes the CSS class x-grid-row-alt to be added to alternate rows of\nthe grid. A default CSS rule is provided which sets a background color, but you can override this\nwith a rule which either overrides the background-color style using the !important\nmodifier, or which uses a CSS selector of higher specificity.

\n"},"trackOver":{"!type":"bool","!doc":"

cfg docs inherited

\n"}},"Ext_view_TableLayout_cfg":{"!proto":"Ext_layout_component_Auto_cfg"},"Ext_view_View_cfg":{"!proto":"Ext_view_AbstractView_cfg","mouseOverOutBuffer":{"!type":"number","!doc":"

The number of milliseconds to buffer mouseover and mouseout event handling on view items.

\n\n

Configure this as false to process mouseover and mouseout events immediately.

\n"}},"Ext_window_Window_cfg":{"!proto":"Ext_panel_Panel_cfg","animateTarget":{"!type":"string|+Ext.Element","!doc":"

Id or element from which the window should animate while opening.

\n"},"autoRender":{"!type":"bool","!doc":"

Windows render to the body on first show.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"closable":{"!type":"bool","!doc":"

True to display the 'close' tool button and allow the user to close the window, false to hide the button and\ndisallow closing the window.

\n\n

By default, when close is requested by either clicking the close button in the header or pressing ESC when the\nWindow has focus, the close method will be called. This will destroy the\nWindow and its content meaning that it may not be reused.

\n\n

To make closing a Window hide the Window so that it may be reused, set closeAction to 'hide'.

\n"},"collapsed":{"!type":"bool","!doc":"

True to render the window collapsed, false to render it expanded. Note that if expandOnShow\nis true (the default) it will override the collapsed config and the window will always be\nexpanded when shown.

\n"},"collapsible":{"!type":"bool","!doc":"

inherited docs, same default

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the window within its containing element, false to allow it to fall outside of its containing\nelement. By default the window will be rendered to document.body. To render and constrain the window within\nanother element specify renderTo. Optionally the header only can be constrained\nusing constrainHeader.

\n"},"constrainHeader":{"!type":"bool","!doc":"

True to constrain the window header within its containing element (allowing the window body to fall outside of\nits containing element) or false to allow the header to fall outside its containing element.\nOptionally the entire window can be constrained using constrain.

\n"},"defaultFocus":{"!type":"string|number|+Ext.Component","!doc":"

Specifies a Component to receive focus when this Window is focused.

\n\n

This may be one of:

\n\n\n\n"},"draggable":{"!type":"bool","!doc":"

True to allow the window to be dragged by the header bar, false to disable dragging. Note that\nby default the window will be centered in the viewport, so if dragging is disabled the window may need to be\npositioned programmatically after render (e.g., myWindow.setPosition(100, 100);).

\n"},"expandOnShow":{"!type":"bool","!doc":"

True to always expand the window when it is displayed, false to keep it in its current state (which may be\ncollapsed) when displayed.

\n"},"ghost":{"!type":"bool|fn()","!doc":"

Set to false to disable the ghost panel during dragging the window.\nDo note that you should not set this to true, by default it is a function.

\n"},"hidden":{"!type":"bool","!doc":"

Render this Window hidden. If true, the hide method will be called internally.

\n"},"hideMode":{"!type":"string","!doc":"

Windows hide using offsets in order to preserve the scroll positions of their descendants.

\n"},"hideShadowOnDeactivate":{"!type":"bool","!doc":"

True to hide this Window's shadow when another floating item in the same z-index stack is activated.

\n"},"maximizable":{"!type":"bool","!doc":"

True to display the 'maximize' tool button and allow the user to maximize the window, false to hide the button\nand disallow maximizing the window. Note that when a window is maximized, the tool button\nwill automatically change to a 'restore' button with the appropriate behavior already built-in that will restore\nthe window to its previous size.

\n"},"maximized":{"!type":"bool","!doc":"

True to initially display the window in a maximized state.

\n"},"minHeight":{"!type":"number","!doc":"

inherit docs

\n"},"minWidth":{"!type":"number","!doc":"

inherit docs

\n"},"minimizable":{"!type":"bool","!doc":"

True to display the 'minimize' tool button and allow the user to minimize the window, false to hide the button\nand disallow minimizing the window. Note that this button provides no implementation -- the\nbehavior of minimizing a window is implementation-specific, so the minimize event must be handled and a custom\nminimize behavior implemented for this option to be useful.

\n"},"modal":{"!type":"bool","!doc":"

True to make the window modal and mask everything behind it when displayed, false to display it without\nrestricting access to other UI elements.

\n"},"onEsc":{"!type":"fn()","!doc":"

Allows override of the built-in processing for the escape key. Default action is to close the Window (performing\nwhatever action is specified in closeAction. To prevent the Window closing when the escape key is\npressed, specify this as Ext.emptyFn.

\n"},"overlapHeader":{"!type":"bool","!doc":"

True to overlap the header in a panel over the framing of the panel itself. This is needed when frame:true (and\nis done automatically for you). Otherwise it is undefined. If you manually add rounded corners to a panel header\nwhich does not have frame:true, this will need to be set to true.

\n"},"plain":{"!type":"bool","!doc":"

True to render the window body with a transparent background so that it will blend into the framing elements,\nfalse to add a lighter background color to visually highlight the body element and separate it more distinctly\nfrom the surrounding frame.

\n"},"resizable":{"!type":"bool|?","!doc":"

Specify as true to allow user resizing at each edge and corner of the window, false to disable resizing.

\n\n

This may also be specified as a config object to Ext.resizer.Resizer

\n"},"x":{"!type":"number","!doc":"

The X position of the left edge of the window on initial showing. Defaults to centering the Window within the\nwidth of the Window's container Element (The Element that the Window is rendered to).

\n"},"y":{"!type":"number","!doc":"

The Y position of the top edge of the window on initial showing. Defaults to centering the Window within the\nheight of the Window's container Element (The Element that the Window is rendered to).

\n"}}},"!data":{"aliases":{"widget":{"component":"Ext.Component","box":"Ext.Component","editor":"Ext.Editor","image":"Ext.Img","imagecomponent":"Ext.Img","loadmask":"Ext.LoadMask","progressbar":"Ext.ProgressBar","button":"Ext.button.Button","cycle":"Ext.button.Cycle","splitbutton":"Ext.button.Split","chart":"Ext.chart.Chart","buttongroup":"Ext.container.ButtonGroup","container":"Ext.container.Container","viewport":"Ext.container.Viewport","jsonpstore":"Ext.data.JsonPStore","draw":"Ext.draw.Component","text":"Ext.draw.Text","flash":"Ext.flash.Component","checkboxgroup":"Ext.form.CheckboxGroup","fieldcontainer":"Ext.form.FieldContainer","fieldset":"Ext.form.FieldSet","label":"Ext.form.Label","form":"Ext.form.Panel","radiogroup":"Ext.form.RadioGroup","field":"Ext.form.field.Base","checkboxfield":"Ext.form.field.Checkbox","checkbox":"Ext.form.field.Checkbox","combobox":"Ext.form.field.ComboBox","combo":"Ext.form.field.ComboBox","datefield":"Ext.form.field.Date","displayfield":"Ext.form.field.Display","filefield":"Ext.form.field.File","fileuploadfield":"Ext.form.field.File","filebutton":"Ext.form.field.FileButton","hiddenfield":"Ext.form.field.Hidden","hidden":"Ext.form.field.Hidden","htmleditor":"Ext.form.field.HtmlEditor","numberfield":"Ext.form.field.Number","pickerfield":"Ext.form.field.Picker","radiofield":"Ext.form.field.Radio","radio":"Ext.form.field.Radio","spinnerfield":"Ext.form.field.Spinner","textfield":"Ext.form.field.Text","textareafield":"Ext.form.field.TextArea","textarea":"Ext.form.field.TextArea","timefield":"Ext.form.field.Time","triggerfield":"Ext.form.field.Trigger","trigger":"Ext.form.field.Trigger","gridpanel":"Ext.grid.Panel","grid":"Ext.grid.Panel","roweditor":"Ext.grid.RowEditor","roweditorbuttons":"Ext.grid.RowEditorButtons","gridview":"Ext.grid.View","actioncolumn":"Ext.grid.column.Action","booleancolumn":"Ext.grid.column.Boolean","checkcolumn":"Ext.grid.column.CheckColumn","gridcolumn":"Ext.grid.column.Column","datecolumn":"Ext.grid.column.Date","numbercolumn":"Ext.grid.column.Number","rownumberer":"Ext.grid.column.RowNumberer","templatecolumn":"Ext.grid.column.Template","headercontainer":"Ext.grid.header.Container","propertygrid":"Ext.grid.property.Grid","menucheckitem":"Ext.menu.CheckItem","colormenu":"Ext.menu.ColorPicker","datemenu":"Ext.menu.DatePicker","menuitem":"Ext.menu.Item","menu":"Ext.menu.Menu","menuseparator":"Ext.menu.Separator","header":"Ext.panel.Header","panel":"Ext.panel.Panel","tablepanel":"Ext.panel.Table","tool":"Ext.panel.Tool","colorpicker":"Ext.picker.Color","datepicker":"Ext.picker.Date","monthpicker":"Ext.picker.Month","timepicker":"Ext.picker.Time","bordersplitter":"Ext.resizer.BorderSplitter","splitter":"Ext.resizer.Splitter","multislider":"Ext.slider.Multi","slider":"Ext.slider.Single","sliderfield":"Ext.slider.Single","slidertip":"Ext.slider.Tip","tabbar":"Ext.tab.Bar","tabpanel":"Ext.tab.Panel","tab":"Ext.tab.Tab","quicktip":"Ext.tip.QuickTip","tip":"Ext.tip.Tip","tooltip":"Ext.tip.ToolTip","tbfill":"Ext.toolbar.Fill","tbitem":"Ext.toolbar.Item","pagingtoolbar":"Ext.toolbar.Paging","tbseparator":"Ext.toolbar.Separator","tbspacer":"Ext.toolbar.Spacer","tbtext":"Ext.toolbar.TextItem","toolbar":"Ext.toolbar.Toolbar","treecolumn":"Ext.tree.Column","treepanel":"Ext.tree.Panel","treeview":"Ext.tree.View","boundlist":"Ext.view.BoundList","tableview":"Ext.view.Table","dataview":"Ext.view.View","messagebox":"Ext.window.MessageBox","window":"Ext.window.Window"},"axis":{"category":"Ext.chart.axis.Category","gauge":"Ext.chart.axis.Gauge","numeric":"Ext.chart.axis.Numeric","radial":"Ext.chart.axis.Radial","time":"Ext.chart.axis.Time"},"series":{"area":"Ext.chart.series.Area","bar":"Ext.chart.series.Bar","column":"Ext.chart.series.Column","gauge":"Ext.chart.series.Gauge","line":"Ext.chart.series.Line","pie":"Ext.chart.series.Pie","radar":"Ext.chart.series.Radar","scatter":"Ext.chart.series.Scatter"},"store":{"array":"Ext.data.ArrayStore","buffer":"Ext.data.BufferStore","direct":"Ext.data.DirectStore","json":"Ext.data.JsonStore","node":"Ext.data.NodeStore","store":"Ext.data.Store","tree":"Ext.data.TreeStore","xml":"Ext.data.XmlStore"},"data":{"field":"Ext.data.Field","tree":"Ext.data.Tree"},"idgen":{"sequential":"Ext.data.SequentialIdGenerator"},"association":{"belongsto":"Ext.data.association.BelongsTo","hasmany":"Ext.data.association.HasMany","hasone":"Ext.data.association.HasOne"},"proxy":{"ajax":"Ext.data.proxy.Ajax","direct":"Ext.data.proxy.Direct","jsonp":"Ext.data.proxy.JsonP","scripttag":"Ext.data.proxy.JsonP","localstorage":"Ext.data.proxy.LocalStorage","memory":"Ext.data.proxy.Memory","proxy":"Ext.data.proxy.Proxy","rest":"Ext.data.proxy.Rest","server":"Ext.data.proxy.Server","sessionstorage":"Ext.data.proxy.SessionStorage"},"reader":{"array":"Ext.data.reader.Array","json":"Ext.data.reader.Json","xml":"Ext.data.reader.Xml"},"writer":{"json":"Ext.data.writer.Json","base":"Ext.data.writer.Writer","xml":"Ext.data.writer.Xml"},"direct":{"event":"Ext.direct.Event","exception":"Ext.direct.ExceptionEvent","rpc":"Ext.direct.RemotingEvent","transaction":"Ext.direct.Transaction"},"formaction":{"directload":"Ext.form.action.DirectLoad","directsubmit":"Ext.form.action.DirectSubmit","load":"Ext.form.action.Load","standardsubmit":"Ext.form.action.StandardSubmit","submit":"Ext.form.action.Submit"},"layout":{"columncomponent":"Ext.grid.ColumnComponentLayout","gridcolumn":"Ext.grid.ColumnLayout","autocomponent":"Ext.layout.component.Auto","body":"Ext.layout.component.Body","boundlist":"Ext.layout.component.BoundList","button":"Ext.layout.component.Button","dock":"Ext.layout.component.Dock","draw":"Ext.layout.component.Draw","fieldset":"Ext.layout.component.FieldSet","progressbar":"Ext.layout.component.ProgressBar","combobox":"Ext.layout.component.field.ComboBox","field":"Ext.layout.component.field.Field","fieldcontainer":"Ext.layout.component.field.FieldContainer","htmleditor":"Ext.layout.component.field.HtmlEditor","sliderfield":"Ext.layout.component.field.Slider","textfield":"Ext.layout.component.field.Text","textareafield":"Ext.layout.component.field.TextArea","triggerfield":"Ext.layout.component.field.Trigger","absolute":"Ext.layout.container.Absolute","accordion":"Ext.layout.container.Accordion","anchor":"Ext.layout.container.Anchor","auto":"Ext.layout.container.Auto","autocontainer":"Ext.layout.container.Auto","border":"Ext.layout.container.Border","box":"Ext.layout.container.Box","card":"Ext.layout.container.Card","checkboxgroup":"Ext.layout.container.CheckboxGroup","column":"Ext.layout.container.Column","container":"Ext.layout.container.Container","editor":"Ext.layout.container.Editor","fit":"Ext.layout.container.Fit","form":"Ext.layout.container.Form","hbox":"Ext.layout.container.HBox","table":"Ext.layout.container.Table","vbox":"Ext.layout.container.VBox","tableview":"Ext.view.TableLayout"},"feature":{"abstractsummary":"Ext.grid.feature.AbstractSummary","feature":"Ext.grid.feature.Feature","grouping":"Ext.grid.feature.Grouping","groupingsummary":"Ext.grid.feature.GroupingSummary","rowbody":"Ext.grid.feature.RowBody","rowwrap":"Ext.grid.feature.RowWrap","summary":"Ext.grid.feature.Summary"},"plugin":{"bufferedrenderer":"Ext.grid.plugin.BufferedRenderer","cellediting":"Ext.grid.plugin.CellEditing","gridviewdragdrop":"Ext.grid.plugin.DragDrop","gridheaderreorderer":"Ext.grid.plugin.HeaderReorderer","gridheaderresizer":"Ext.grid.plugin.HeaderResizer","rowediting":"Ext.grid.plugin.RowEditing","rowexpander":"Ext.grid.plugin.RowExpander","treeviewdragdrop":"Ext.tree.plugin.TreeViewDragDrop"},"editing":{"editing":"Ext.grid.plugin.Editing"},"selection":{"cellmodel":"Ext.selection.CellModel","checkboxmodel":"Ext.selection.CheckboxModel","rowmodel":"Ext.selection.RowModel","treemodel":"Ext.selection.TreeModel"},"state":{"localstorage":"Ext.state.LocalStorageProvider"}}},"Ext":{"AbstractComponent":{"!doc":"

An abstract base class which provides shared methods for Components across the Sencha product line.

\n\n

Please refer to sub class's documentation.

\n\n

From override Ext.rtl.AbstractComponent: This override adds RTL support and the rtl config option to AbstactComponent.

\n","!type":"fn(config?: Ext_AbstractComponent_cfg)","prototype":{"!proto":"Ext.Base.prototype","autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"autoLoad":{"!type":"+Ext.ComponentLoader|?|string|bool","!doc":"

An alias for loader config which also allows to specify just a string which will be\nused as the url that's automatically loaded:

\n\n
Ext.create('Ext.Component', {\n    autoLoad: 'content.html',\n    renderTo: Ext.getBody()\n});\n
\n\n

The above is the same as:

\n\n
Ext.create('Ext.Component', {\n    loader: {\n        url: 'content.html',\n        autoLoad: true\n    },\n    renderTo: Ext.getBody()\n});\n
\n\n

Don't use it together with loader config.

\n"},"autoRender":{"!type":"bool|string|+HTMLElement|+Ext.Element","!doc":"

This config is intended mainly for non-floating Components which may or may not be shown. Instead of using\nrenderTo in the configuration, and rendering upon construction, this allows a Component to render itself\nupon first show. If floating is true, the value of this config is omitted as if it is true.

\n\n

Specify as true to have this Component render to the document body upon first show.

\n\n

Specify as an element, or the ID of an element to have this Component render to a specific element upon first\nshow.

\n"},"autoShow":{"!type":"bool","!doc":"

true to automatically show the component upon creation. This config option may only be used for\nfloating components or components that use autoRender.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"childEls":{"!type":"[?]","!doc":"

An array describing the child elements of the Component. Each member of the array\nis an object with these properties:

\n\n\n\n\n

If the array member is a string, it is equivalent to { name: m, itemId: m }.

\n\n

For example, a Component which renders a title and body text:

\n\n
Ext.create('Ext.Component', {\n    renderTo: Ext.getBody(),\n    renderTpl: [\n        '<h1 id=\"{id}-title\">{title}</h1>',\n        '<p>{msg}</p>',\n    ],\n    renderData: {\n        title: \"Error\",\n        msg: \"Something went wrong\"\n    },\n    childEls: [\"title\"],\n    listeners: {\n        afterrender: function(cmp){\n            // After rendering the component will have a title property\n            cmp.title.setStyle({color: \"red\"});\n        }\n    }\n});\n
\n\n

A more flexible, but somewhat slower, approach is renderSelectors.

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"contentEl":{"!type":"string","!doc":"

Specify an existing HTML element, or the id of an existing HTML element to use as the content for this component.

\n\n

This config option is used to take an existing HTML element and place it in the layout element of a new component\n(it simply moves the specified DOM element after the Component is rendered to use as the content.

\n\n

Notes:

\n\n

The specified HTML element is appended to the layout element of the component after any configured\nHTML has been inserted, and so the document will not contain this element at the time\nthe render event is fired.

\n\n

The specified HTML element used will not participate in any layout\nscheme that the Component may use. It is just HTML. Layouts operate on child\nitems.

\n\n

Add either the x-hidden or the x-hide-display CSS class to prevent a brief flicker of the content before it\nis rendered to the panel.

\n"},"data":{"!type":"?","!doc":"

The initial set of data to apply to the tpl to update the content area of the Component.

\n"},"disabled":{"!type":"bool","!doc":"

true to disable the component.

\n"},"disabledCls":{"!type":"string","!doc":"

CSS class to add when the Component is disabled.

\n"},"draggable":{"!type":"bool","!doc":"

Indicates whether or not the component can be dragged.

\n"},"floating":{"!type":"bool","!doc":"

Create the Component as a floating and use absolute positioning.

\n\n

The z-index of floating Components is handled by a ZIndexManager. If you simply render a floating Component into the DOM, it will be managed\nby the global WindowManager.

\n\n

If you include a floating Component as a child item of a Container, then upon render, Ext JS will seek an ancestor floating Component to house a new\nZIndexManager instance to manage its descendant floaters. If no floating ancestor can be found, the global WindowManager will be used.

\n\n

When a floating Component which has a ZindexManager managing descendant floaters is destroyed, those descendant floaters will also be destroyed.

\n"},"frame":{"!type":"bool","!doc":"

Specify as true to have the Component inject framing elements within the Component at render time to provide a\ngraphical rounded frame around the Component content.

\n\n

This is only necessary when running on outdated, or non standard-compliant browsers such as Microsoft's Internet\nExplorer prior to version 9 which do not support rounded corners natively.

\n\n

The extra space taken up by this framing is available from the read only property frameSize.

\n"},"height":{"!type":"number","!doc":"

The height of this component in pixels.

\n"},"hidden":{"!type":"bool","!doc":"

true to hide the component.

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Component's encapsulating DOM element will be hidden. Values may be:

\n\n\n\n"},"html":{"!type":"string|?","!doc":"

An HTML fragment, or a DomHelper specification to use as the layout element content.\nThe HTML content is added after the component is rendered, so the document will not contain this HTML at the time\nthe render event is fired. This content is inserted into the body before any configured contentEl\nis appended.

\n"},"id":{"!type":"string","!doc":"

The unique id of this component instance.

\n\n

It should not be necessary to use this configuration except for singleton objects in your application. Components\ncreated with an id may be accessed globally using Ext.getCmp.

\n\n

Instead of using assigned ids, use the itemId config, and ComponentQuery\nwhich provides selector-based searching for Sencha Components analogous to DOM querying. The Container class contains shortcut methods to query\nits descendant Components by selector.

\n\n

Note that this id will also be used as the element id for the containing HTML element that is rendered to the\npage for this component. This allows you to write id-based CSS rules to style the specific instance of this\ncomponent uniquely, and also to select sub-elements using this component's id as the parent.

\n\n

Note: To avoid complications imposed by a unique id also see itemId.

\n\n

Note: To access the container of a Component see ownerCt.

\n\n

Defaults to an auto-assigned id.

\n"},"itemId":{"!type":"string","!doc":"

An itemId can be used as an alternative way to get a reference to a component when no object reference is\navailable. Instead of using an id with Ext.getCmp, use itemId with\nExt.container.Container.getComponent which will retrieve\nitemId's or id's. Since itemId's are an index to the container's internal MixedCollection, the\nitemId is scoped locally to the container -- avoiding potential conflicts with Ext.ComponentManager\nwhich requires a unique id.

\n\n
var c = new Ext.panel.Panel({ //\n    height: 300,\n    renderTo: document.body,\n    layout: 'auto',\n    items: [\n        {\n            itemId: 'p1',\n            title: 'Panel 1',\n            height: 150\n        },\n        {\n            itemId: 'p2',\n            title: 'Panel 2',\n            height: 150\n        }\n    ]\n})\np1 = c.getComponent('p1'); // not the same as Ext.getCmp()\np2 = p1.ownerCt.getComponent('p2'); // reference via a sibling\n
\n\n

Also see id, Ext.container.Container.query, Ext.container.Container.down and\nExt.container.Container.child.

\n\n

Note: to access the container of an item see ownerCt.

\n"},"loader":{"!type":"+Ext.ComponentLoader|?","!doc":"

A configuration object or an instance of a Ext.ComponentLoader to load remote content\nfor this Component.

\n\n
Ext.create('Ext.Component', {\n    loader: {\n        url: 'content.html',\n        autoLoad: true\n    },\n    renderTo: Ext.getBody()\n});\n
\n"},"margin":{"!type":"number|string","!doc":"

Specifies the margin for this component. The margin can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n"},"maxHeight":{"!type":"number","!doc":"

The maximum value in pixels which this Component will set its height to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"maxWidth":{"!type":"number","!doc":"

The maximum value in pixels which this Component will set its width to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"minHeight":{"!type":"number","!doc":"

The minimum value in pixels which this Component will set its height to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"minWidth":{"!type":"number","!doc":"

The minimum value in pixels which this Component will set its width to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"overCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element when the mouse moves over the Element,\nand removed when the mouse moves out. This can be useful for adding customized 'active' or 'hover' styles to the\ncomponent or any of its children using standard CSS rules.

\n"},"padding":{"!type":"number|string","!doc":"

Specifies the padding for this component. The padding can be a single numeric value to apply to all sides or it\ncan be a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n"},"plugins":{"!type":"[+Ext.AbstractPlugin]|+Ext.AbstractPlugin|[?]|?|[+Ext.enums.Plugin]|+Ext.enums.Plugin","!doc":"

An array of plugins to be added to this component. Can also be just a single plugin instead of array.

\n\n

Plugins provide custom functionality for a component. The only requirement for\na valid plugin is that it contain an init method that accepts a reference of type Ext.Component. When a component\nis created, if any plugins are available, the component will call the init method on each plugin, passing a\nreference to itself. Each plugin can then call methods or respond to events on the component as needed to provide\nits functionality.

\n\n

Plugins can be added to component by either directly referencing the plugin instance:

\n\n
plugins: [Ext.create('Ext.grid.plugin.CellEditing', {clicksToEdit: 1})],\n
\n\n

By using config object with ptype:

\n\n
plugins: [{ptype: 'cellediting', clicksToEdit: 1}],\n
\n\n

Or with just a ptype:

\n\n
plugins: ['cellediting', 'gridviewdragdrop'],\n
\n\n

See Ext.enums.Plugin for list of all ptypes.

\n"},"renderData":{"!type":"?","!doc":"

The data used by renderTpl in addition to the following property values of the component:

\n\n\n\n\n

See renderSelectors and childEls for usage examples.

\n"},"renderSelectors":{"!type":"?","!doc":"

An object containing properties specifying DomQuery selectors which identify child elements\ncreated by the render process.

\n\n

After the Component's internal structure is rendered according to the renderTpl, this object is iterated through,\nand the found Elements are added as properties to the Component using the renderSelector property name.

\n\n

For example, a Component which renders a title and description into its element:

\n\n
Ext.create('Ext.Component', {\n    renderTo: Ext.getBody(),\n    renderTpl: [\n        '<h1 class=\"title\">{title}</h1>',\n        '<p>{desc}</p>'\n    ],\n    renderData: {\n        title: \"Error\",\n        desc: \"Something went wrong\"\n    },\n    renderSelectors: {\n        titleEl: 'h1.title',\n        descEl: 'p'\n    },\n    listeners: {\n        afterrender: function(cmp){\n            // After rendering the component will have a titleEl and descEl properties\n            cmp.titleEl.setStyle({color: \"red\"});\n        }\n    }\n});\n
\n\n

For a faster, but less flexible, alternative that achieves the same end result (properties for child elements on the\nComponent after render), see childEls and addChildEls.

\n"},"renderTo":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

Specify the id of the element, a DOM element or an existing Element that this component will be rendered into.

\n\n

Notes:

\n\n

Do not use this option if the Component is to be a child item of a Container.\nIt is the responsibility of the Container's\nlayout manager to render and manage its child items.

\n\n

When using this config, a call to render() is not required.

\n\n

See also: render.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"rtl":{"!type":"bool","!doc":"

True to layout this component and its descendants in \"rtl\" (right-to-left) mode.\nCan be explicitly set to false to override a true value inherited from an ancestor.

\n\n

Defined in override Ext.rtl.AbstractComponent.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"style":{"!type":"string|?","!doc":"

A custom style specification to be applied to this component's Element. Should be a valid argument to\nExt.Element.applyStyles.

\n\n
new Ext.panel.Panel({\n    title: 'Some Title',\n    renderTo: Ext.getBody(),\n    width: 400, height: 300,\n    layout: 'form',\n    items: [{\n        xtype: 'textarea',\n        style: {\n            width: '95%',\n            marginBottom: '10px'\n        }\n    },\n    new Ext.button.Button({\n        text: 'Send',\n        minWidth: '100',\n        style: {\n            marginBottom: '10px'\n        }\n    })\n    ]\n});\n
\n"},"tpl":{"!type":"+Ext.XTemplate|+Ext.Template|string|[string]","!doc":"

An Ext.Template, Ext.XTemplate or an array of strings to form an Ext.XTemplate. Used in\nconjunction with the data and tplWriteMode configurations.

\n"},"tplWriteMode":{"!type":"string","!doc":"

The Ext.(X)Template method to use when updating the content area of the Component.\nSee Ext.XTemplate.overwrite for information on default mode.

\n"},"ui":{"!type":"string","!doc":"

A UI style for a component.

\n"},"uiCls":{"!type":"[string]","!doc":"

An array of of classNames which are currently applied to this component.

\n"},"width":{"!type":"number","!doc":"

The width of this component in pixels.

\n"},"xtype":{"!type":"+Ext.enums.Widget","!doc":"

This property provides a shorter alternative to creating objects than using a full\nclass name. Using xtype is the most common way to define component instances,\nespecially in a container. For example, the items in a form containing text fields\ncould be created explicitly like so:

\n\n
 items: [\n     Ext.create('Ext.form.field.Text', {\n         fieldLabel: 'Foo'\n     }),\n     Ext.create('Ext.form.field.Text', {\n         fieldLabel: 'Bar'\n     }),\n     Ext.create('Ext.form.field.Number', {\n         fieldLabel: 'Num'\n     })\n ]\n
\n\n

But by using xtype, the above becomes:

\n\n
 items: [\n     {\n         xtype: 'textfield',\n         fieldLabel: 'Foo'\n     },\n     {\n         xtype: 'textfield',\n         fieldLabel: 'Bar'\n     },\n     {\n         xtype: 'numberfield',\n         fieldLabel: 'Num'\n     }\n ]\n
\n\n

When the xtype is common to many items, Ext.container.AbstractContainer.defaultType\nis another way to specify the xtype for all items that don't have an explicit xtype:

\n\n
 defaultType: 'textfield',\n items: [\n     { fieldLabel: 'Foo' },\n     { fieldLabel: 'Bar' },\n     { fieldLabel: 'Num', xtype: 'numberfield' }\n ]\n
\n\n

Each member of the items array is now just a \"configuration object\". These objects\nare used to create and configure component instances. A configuration object can be\nmanually used to instantiate a component using Ext.widget:

\n\n
 var text1 = Ext.create('Ext.form.field.Text', {\n     fieldLabel: 'Foo'\n });\n\n // or alternatively:\n\n var text1 = Ext.widget({\n     xtype: 'textfield',\n     fieldLabel: 'Foo'\n });\n
\n\n

This conversion of configuration objects into instantiated components is done when\na container is created as part of its {Ext.container.AbstractContainer.initComponent}\nprocess. As part of the same process, the items array is converted from its raw\narray form into a Ext.util.MixedCollection instance.

\n\n

You can define your own xtype on a custom component by specifying\nthe xtype property in Ext.define. For example:

\n\n
Ext.define('MyApp.PressMeButton', {\n    extend: 'Ext.button.Button',\n    xtype: 'pressmebutton',\n    text: 'Press Me'\n});\n
\n\n

Care should be taken when naming an xtype in a custom component because there is\na single, shared scope for all xtypes. Third part components should consider using\na prefix to avoid collisions.

\n\n
Ext.define('Foo.form.CoolButton', {\n    extend: 'Ext.button.Button',\n    xtype: 'ux-coolbutton',\n    text: 'Cool!'\n});\n
\n\n

See Ext.enums.Widget for list of all available xtypes.

\n"},"_isLayoutRoot":{"!type":"bool","!doc":"

Setting this property to true causes the isLayoutRoot method to return\ntrue and stop the search for the top-most component for a layout.

\n"},"allowDomMove":{"!type":"bool"},"autoGenId":{"!type":"bool","!doc":"

true indicates an id was auto-generated rather than provided by configuration.

\n"},"borderBoxCls":{"!type":"string","!doc":"

private

\n"},"componentLayoutCounter":{"!type":"number","!doc":"

The number of component layout calls made on this object.

\n"},"contentPaddingProperty":{"!type":"string","!doc":"

The name of the padding property that is used by the layout to manage\npadding. See managePadding

\n"},"deferLayouts":{"!type":"bool"},"frameElementsArray":{"!type":"[?]"},"frameSize":{"!type":"?","!doc":"

Indicates the width of any framing elements which were added within the encapsulating\nelement to provide graphical, rounded borders. See the frame config. This\nproperty is null if the component is not framed.

\n\n

This is an object containing the frame width in pixels for all four sides of the\nComponent containing the following properties:

\n"},"horizontalPosProp":{"!type":"string"},"isComponent":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Component, or subclass thereof.

\n"},"layoutSuspendCount":{"!type":"number"},"maskOnDisable":{"!type":"bool","!doc":"

This is an internal flag that you use when creating custom components. By default this is set to true which means\nthat every component gets a mask when it's disabled. Components like FieldContainer, FieldSet, Field, Button, Tab\noverride this property to false since they want to implement custom disable logic.

\n"},"ownerCt":{"!type":"+Ext.Container","!doc":"

This Component's owner Container (is set automatically\nwhen this Component is added to a Container).

\n\n

Important. This is not a universal upwards navigation pointer. It indicates the Container which owns and manages\nthis Component if any. There are other similar relationships such as the button which activates a menu, or the\nmenu item which activated a submenu, or the\ncolumn header which activated the column menu.

\n\n

These differences are abstracted away by the up method.

\n\n

Note: to access items within the Container see itemId.

\n"},"rendered":{"!type":"bool","!doc":"

Indicates whether or not the component has been rendered.

\n"},"weight":{"!type":"number"},"addClass":{"!type":"fn(cls: string|[string]) -> +Ext.Component","!doc":"

Adds a CSS class to the top level element representing this component.

\n"},"addCls":{"!type":"fn(cls: string|[string]) -> +Ext.Component","!doc":"

Adds a CSS class to the top level element representing this component.

\n"},"addClsWithUI":{"!type":"fn(classes: string|[string], skip: ?) -> !this","!doc":"

Adds a cls to the uiCls array, which will also call addUIClsToElement and adds to all elements of this\ncomponent.

\n"},"addFocusListener":{"!type":"fn() -> !this","!doc":"

Sets up the focus listener on this Component's focusEl if it has one.

\n\n

Form Components which must implicitly participate in tabbing order usually have a naturally focusable\nelement as their focusEl, and it is the DOM event of that receiving focus which drives\nthe Component's onFocus handling, and the DOM event of it being blurred which drives the onBlur handling.

\n\n

If the focusEl is not naturally focusable, then the listeners are only added\nif the FocusManager is enabled.

\n"},"addListener":{"!type":"fn(element: ?, listeners: ?, scope: ?, options: ?) -> ?","!doc":"

Appends an event handler to this object. For example:

\n\n
myGridPanel.on(\"mouseover\", this.onMouseOver, this);\n
\n\n

The method also allows for a single argument to be passed which is a config object\ncontaining properties which specify multiple events. For example:

\n\n
myGridPanel.on({\n    cellClick: this.onCellClick,\n    mouseover: this.onMouseOver,\n    mouseout: this.onMouseOut,\n    scope: this // Important. Ensure \"this\" is correct during handler execution\n});\n
\n\n

One can also specify options for each event handler separately:

\n\n
myGridPanel.on({\n    cellClick: {fn: this.onCellClick, scope: this, single: true},\n    mouseover: {fn: panel.onMouseOver, scope: panel}\n});\n
\n\n

Names of methods in a specified scope may also be used. Note that\nscope MUST be specified to use this option:

\n\n
myGridPanel.on({\n    cellClick: {fn: 'onCellClick', scope: this, single: true},\n    mouseover: {fn: 'onMouseOver', scope: panel}\n});\n
\n"},"addOverCls":{"!type":"fn() -> !this","!doc":"

\n"},"addPlugin":{"!type":"fn(plugin: ?) -> !this","!doc":"

Adds a plugin. May be called at any time in the component's lifecycle.

\n"},"addPropertyToState":{"!type":"fn(state: ?, propName: string, value?: string) -> bool","!doc":"

Save a property to the given state object if it is not its default or configured\nvalue.

\n"},"addUIClsToElement":{"!type":"fn(ui: string) -> !this","!doc":"

Method which adds a specified UI + uiCls to the components element. Can be overridden to remove the UI from more\nthan just the components element.

\n"},"addUIToElement":{"!type":"fn() -> !this","!doc":"

Method which adds a specified UI to the components element.

\n"},"afterComponentLayout":{"!type":"fn(width: number, height: number, oldWidth: number|+undefined, oldHeight: number|+undefined) -> !this","!doc":"

Called by the layout system after the Component has been laid out.

\n"},"afterSetPosition":{"!type":"fn(x: number, y: number) -> !this","!doc":"

Template method called after a Component has been positioned.

\n"},"animate":{"!type":"fn(animObj: ?) -> ?","!doc":"

Performs custom animation on this object.

\n\n

This method is applicable to both the Component class and the Sprite\nclass. It performs animated transitions of certain properties of this object over a specified timeline.

\n\n

Animating a Component

\n\n

When animating a Component, the following properties may be specified in from, to, and keyframe objects:

\n\n\n\n\n

For example, to animate a Window to a new size, ensuring that its internal layout and any shadow is correct:

\n\n
myWindow = Ext.create('Ext.window.Window', {\n    title: 'Test Component animation',\n    width: 500,\n    height: 300,\n    layout: {\n        type: 'hbox',\n        align: 'stretch'\n    },\n    items: [{\n        title: 'Left: 33%',\n        margins: '5 0 5 5',\n        flex: 1\n    }, {\n        title: 'Left: 66%',\n        margins: '5 5 5 5',\n        flex: 2\n    }]\n});\nmyWindow.show();\nmyWindow.header.el.on('click', function() {\n    myWindow.animate({\n        to: {\n            width: (myWindow.getWidth() == 500) ? 700 : 500,\n            height: (myWindow.getHeight() == 300) ? 400 : 300\n        }\n    });\n});\n
\n\n

For performance reasons, by default, the internal layout is only updated when the Window reaches its final \"to\"\nsize. If dynamic updating of the Window's child Components is required, then configure the animation with\ndynamic: true and the two child items will maintain their proportions during the animation.

\n"},"beforeBlur":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method to do any pre-blur processing.

\n"},"beforeComponentLayout":{"!type":"fn(adjWidth: number, adjHeight: number) -> !this","!doc":"

Occurs before componentLayout is run. Returning false from this method will prevent the componentLayout from\nbeing executed.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeFocus":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method to do any pre-focus processing.

\n"},"beforeLayout":{"!type":"fn() -> !this","!doc":"

Occurs before componentLayout is run. In previous releases, this method could\nreturn false to prevent its layout but that is not supported in Ext JS 4.1 or\nhigher. This method is simply a notification of the impending layout to give the\ncomponent a chance to adjust the DOM. Ideally, DOM reads should be avoided at this\ntime to reduce expensive document reflows.

\n"},"beforeSetPosition":{"!type":"fn(x: ?, y: ?, animate: ?) -> !this","!doc":"

Template method called before a Component is positioned.

\n\n

Ensures that the position is adjusted so that the Component is constrained if so configured.

\n"},"constructPlugin":{"!type":"fn(ptype: string|?) -> !this"},"constructPlugins":{"!type":"fn() -> !this","!doc":"

Returns an array of fully constructed plugin instances. This converts any configs into their\nappropriate instances.

\n\n

It does not mutate the plugins array. It creates a new array.

\n"},"convertPositionSpec":{"!type":"fn(posSpec: ?) -> !this","!doc":"

Defined in override Ext.rtl.AbstractComponent.

\n"},"destroy":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component is destroyed.

\n"},"disable":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component is disabled.

\n"},"doComponentLayout":{"!type":"fn() -> +Ext.container.Container","!doc":"

This method needs to be called whenever you change something on this component that requires the Component's\nlayout to be recalculated.

\n"},"enable":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component is enabled.

\n"},"findPlugin":{"!type":"fn(ptype: string) -> +Ext.AbstractPlugin","!doc":"

Retrieves plugin from this component's collection by its ptype.

\n"},"forceComponentLayout":{"!type":"fn() -> !this","!doc":"

Forces this component to redo its componentLayout.

\n"},"getAnchorToXY":{"!type":"fn(el: +Ext.dom.Element, anchor?: string, local?: bool, size?: ?) -> [number]","!doc":"
\n\n

Begin Positionable methods

\n\n
\n\n

Overridden in Ext.rtl.AbstractComponent.

\n"},"getAutoId":{"!type":"fn() -> !this"},"getBorderPadding":{"!type":"fn() -> ?","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"getBubbleTarget":{"!type":"fn() -> +Ext.container.Container","!doc":"

Provides the link for Observable's fireEvent method to bubble up the ownership hierarchy.

\n"},"getComponentLayout":{"!type":"fn() -> !this"},"getEl":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Retrieves the top level element representing this component.

\n"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

Returns the focus holder element associated with this Component. At the Component base class level, this function returns undefined.

\n\n

Subclasses which use embedded focusable elements (such as Window, Field and Button) should override this\nfor use by the focus method.

\n\n

Containers which need to participate in the FocusManager's navigation and Container focusing scheme also\nneed to return a focusEl, although focus is only listened for in this case if the FocusManager is enabled.

\n"},"getHeight":{"!type":"fn() -> number","!doc":"

Gets the current height of the component's underlying element.

\n"},"getHierarchyState":{"!type":"fn(inner: ?) -> !this","!doc":"

A component's hierarchyState is used to keep track of aspects of a component's\nstate that affect its descendants hierarchically like \"collapsed\" and \"hidden\".\nFor example, if this.hierarchyState.hidden == true, it means that either this\ncomponent, or one of its ancestors is hidden.

\n\n

Hierarchical state management is implemented by chaining each component's\nhierarchyState property to its parent container's hierarchyState property via the\nprototype. The result is such that if a component's hierarchyState does not have\nit's own property, it inherits the property from the nearest ancestor that does.

\n\n

To set a hierarchical \"hidden\" value:

\n\n
this.getHierarchyState().hidden = true;\n
\n\n

It is important to remember when unsetting hierarchyState properties to delete\nthem instead of just setting them to a falsy value. This ensures that the\nhierarchyState returns to a state of inheriting the value instead of overriding it\nTo unset the hierarchical \"hidden\" value:

\n\n
delete this.getHierarchyState().hidden;\n
\n\n

IMPORTANT! ALWAYS access hierarchyState using this method, not by accessing\nthis.hierarchyState directly. The hierarchyState property does not exist until\nthe first time getHierarchyState() is called. At that point getHierarchyState()\nwalks up the component tree to establish the hierarchyState prototype chain.\nAdditionally the hierarchyState property should NOT be relied upon even after\nthe initial call to getHierarchyState() because it is possible for the\nhierarchyState to be invalidated. Invalidation typically happens when a component\nis moved to a new container. In such a case the hierarchy state remains invalid\nuntil the next time getHierarchyState() is called on the component or one of its\ndescendants.

\n"},"getId":{"!type":"fn() -> string","!doc":"

Retrieves the id of this component. Will auto-generate an id if one has not already been set.

\n"},"getItemId":{"!type":"fn() -> string","!doc":"

Returns the value of itemId assigned to this component, or when that\nis not set, returns the value of id.

\n"},"getLoader":{"!type":"fn() -> +Ext.ComponentLoader","!doc":"

Gets the Ext.ComponentLoader for this Component.

\n"},"getLocalX":{"!type":"fn() -> number","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"getLocalXY":{"!type":"fn() -> [number]","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"getLocalY":{"!type":"fn() -> number","!doc":"

Returns the y coordinate of this element reletive to its offsetParent.

\n"},"getMaskTarget":{"!type":"fn() -> !this"},"getOverflowEl":{"!type":"fn() -> !this","!doc":"

Get an el for overflowing, defaults to the target el

\n"},"getOverflowStyle":{"!type":"fn() -> !this","!doc":"

Returns the CSS style object which will set the Component's scroll styles. This must be applied\nto the target element.

\n"},"getPlugin":{"!type":"fn(pluginId: string) -> +Ext.AbstractPlugin","!doc":"

Retrieves a plugin from this component's collection by its pluginId.

\n"},"getSize":{"!type":"fn() -> ?","!doc":"

Gets the current size of the component's underlying element.

\n"},"getSizeModel":{"!type":"fn(ownerCtSizeModel: ?) -> ?","!doc":"

Returns an object that describes how this component's width and height are managed.\nAll of these objects are shared and should not be modified.

\n"},"getState":{"!type":"fn() -> ?","!doc":"

The supplied default state gathering method for the AbstractComponent class.

\n\n

This method returns dimension settings such as flex, anchor, width and height along with collapsed\nstate.

\n\n

Subclasses which implement more complex state should call the superclass's implementation, and apply their state\nto the result if this basic state is to be saved.

\n\n

Note that Component state will only be saved if the Component has a stateId and there as a StateProvider\nconfigured for the document.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"getTpl":{"!type":"fn(name: ?) -> !this"},"getWidth":{"!type":"fn() -> number","!doc":"

Gets the current width of the component's underlying element.

\n"},"getX":{"!type":"fn() -> number","!doc":"

Gets the current X position of the DOM element based on page coordinates.

\n"},"getXTypes":{"!type":"fn() -> string","!doc":"

Returns this Component's xtype hierarchy as a slash-delimited string. For a list of all available xtypes, see the\nExt.Component header.

\n\n

If using your own subclasses, be aware that a Component must register its own xtype to participate in\ndetermination of inherited xtypes.

\n\n

Example usage:

\n\n
var t = new Ext.form.field.Text();\nalert(t.getXTypes());  // alerts 'component/field/textfield'\n
\n"},"getXY":{"!type":"fn() -> [number]","!doc":"

Gets the current position of the DOM element based on page coordinates.

\n"},"getY":{"!type":"fn() -> number","!doc":"

Gets the current Y position of the DOM element based on page coordinates.

\n"},"hasCls":{"!type":"fn(className: string) -> bool","!doc":"

Checks if the specified CSS class exists on this element's DOM node.

\n"},"hasUICls":{"!type":"fn(cls: string) -> !this","!doc":"

Checks if there is currently a specified uiCls.

\n"},"initCls":{"!type":"fn() -> !this"},"initComponent":{"!type":"fn() -> !this"},"initEvents":{"!type":"fn() -> !this","!doc":"

Initialize any events on this component

\n"},"initHierarchyState":{"!type":"fn(hierarchyState: ?) -> !this","!doc":"

Called by getHierarchyState to initialize the hierarchyState the first\ntime it is requested.

\n\n

Overridden in Ext.rtl.AbstractComponent.

\n"},"initPadding":{"!type":"fn(targetEl: ?) -> !this","!doc":"

Initializes padding by applying it to the target element, or if the layout manages\npadding ensures that the padding on the target element is \"0\".

\n"},"initPlugin":{"!type":"fn(plugin: ?) -> !this"},"initStyles":{"!type":"fn(targetEl: ?) -> !this","!doc":"

Applies padding, margin, border, top, left, height, and width configs to the\nappropriate elements.

\n"},"is":{"!type":"fn(selector: string) -> bool","!doc":"

Tests whether this Component matches the selector string.

\n"},"isDescendant":{"!type":"fn(ancestor: ?) -> !this"},"isDescendantOf":{"!type":"fn(container: +Ext.Container) -> bool","!doc":"

Determines whether this component is the descendant of a particular container.

\n"},"isDisabled":{"!type":"fn() -> bool","!doc":"

Method to determine whether this Component is currently disabled.

\n"},"isDraggable":{"!type":"fn() -> bool","!doc":"

Method to determine whether this Component is draggable.

\n"},"isDroppable":{"!type":"fn() -> bool","!doc":"

Method to determine whether this Component is droppable.

\n"},"isFloating":{"!type":"fn() -> bool","!doc":"

Method to determine whether this Component is floating.

\n"},"isFocusable":{"!type":"fn() -> !this"},"isHidden":{"!type":"fn() -> bool","!doc":"

Method to determine whether this Component is currently set to hidden.

\n"},"isHierarchicallyHidden":{"!type":"fn() -> !this"},"isLayoutRoot":{"!type":"fn() -> !this","!doc":"

Determines whether this Component is the root of a layout. This returns true if\nthis component can run its layout without assistance from or impact on its owner.\nIf this component cannot run its layout given these restrictions, false is returned\nand its owner will be considered as the next candidate for the layout root.

\n\n

Setting the _isLayoutRoot property to true causes this method to always\nreturn true. This may be useful when updating a layout of a Container which shrink\nwraps content, and you know that it will not change size, and so can safely be the\ntopmost participant in the layout run.

\n"},"isLayoutSuspended":{"!type":"fn() -> bool","!doc":"

Returns true if layout is suspended for this component. This can come from direct\nsuspension of this component's layout activity (Ext.Container.suspendLayout) or if one\nof this component's containers is suspended.

\n"},"isLocalRtl":{"!type":"fn() -> bool","!doc":"

Returns true if this component's local coordinate system is rtl. For normal\ncomponents this equates to the value of isParentRtl(). Floaters are a bit different\nbecause a floater's element can be a childNode of something other than its\nparent component's element. For floaters we have to read the dom to see if the\ncomponent's element's parentNode has a css direction value of \"rtl\".

\n\n

Defined in override Ext.rtl.AbstractComponent.

\n"},"isOppositeRootDirection":{"!type":"fn() -> !this","!doc":"

Defined in override Ext.rtl.AbstractComponent.

\n"},"isParentRtl":{"!type":"fn() -> bool","!doc":"

Returns true if this component's parent container is rtl. Used by rtl positioning\nmethods to determine if the component should be positioned using a right-to-left\ncoordinate system.

\n\n

Defined in override Ext.rtl.AbstractComponent.

\n"},"isVisible":{"!type":"fn(deep?: bool) -> bool","!doc":"

Returns true if this component is visible.

\n"},"isXType":{"!type":"fn(xtype: string, shallow?: bool) -> bool","!doc":"

Tests whether or not this Component is of a specific xtype. This can test whether this Component is descended\nfrom the xtype (default) or whether it is directly of the xtype specified (shallow = true).

\n\n

If using your own subclasses, be aware that a Component must register its own xtype to participate in\ndetermination of inherited xtypes.

\n\n

For a list of all available xtypes, see the Ext.Component header.

\n\n

Example usage:

\n\n
var t = new Ext.form.field.Text();\nvar isText = t.isXType('textfield');        // true\nvar isBoxSubclass = t.isXType('field');       // true, descended from Ext.form.field.Base\nvar isBoxInstance = t.isXType('field', true); // false, not a direct Ext.form.field.Base instance\n
\n"},"mask":{"!type":"fn() -> !this"},"nextNode":{"!type":"fn(selector?: string) -> +Ext.Component","!doc":"

Returns the next node in the Component tree in tree traversal order.

\n\n

Note that this is not limited to siblings, and if invoked upon a node with no matching siblings, will walk the\ntree to attempt to find a match. Contrast with nextSibling.

\n"},"nextSibling":{"!type":"fn(selector?: string) -> +Ext.Component","!doc":"

Returns the next sibling of this Component.

\n\n

Optionally selects the next sibling which matches the passed ComponentQuery selector.

\n\n

May also be referred to as next()

\n\n

Note that this is limited to siblings, and if no siblings of the item match, null is returned. Contrast with\nnextNode

\n"},"onAdded":{"!type":"fn(container: +Ext.container.Container, pos: number) -> !this","!doc":"

Method to manage awareness of when components are added to their\nrespective Container, firing an added event. References are\nestablished at add time rather than at render time.

\n\n

Allows addition of behavior when a Component is added to a\nContainer. At this stage, the Component is in the parent\nContainer's collection of child items. After calling the\nsuperclass's onAdded, the ownerCt reference will be present,\nand if configured with a ref, the refOwner will be set.

\n"},"onBlur":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onBoxReady":{"!type":"fn(width: ?, height: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this"},"onDisable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the disable operation.\nAfter calling the superclass's onDisable, the Component will be disabled.

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the enable operation.\nAfter calling the superclass's onEnable, the Component will be enabled.

\n"},"onFocus":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onHide":{"!type":"fn() -> !this"},"onPosition":{"!type":"fn(x: number, y: number) -> !this","!doc":"

Called after the component is moved, this method is empty by default but can be implemented by any\nsubclass that needs to perform custom logic after a move occurs.

\n"},"onRemoved":{"!type":"fn(destroying: bool) -> !this","!doc":"

Method to manage awareness of when components are removed from their\nrespective Container, firing a removed event. References are properly\ncleaned up after removing a component from its owning container.

\n\n

Allows addition of behavior when a Component is removed from\nits parent Container. At this stage, the Component has been\nremoved from its parent Container's collection of child items,\nbut has not been destroyed (It will be destroyed if the parent\nContainer's autoDestroy is true, or if the remove call was\npassed a truthy second parameter). After calling the\nsuperclass's onRemoved, the ownerCt and the refOwner will not\nbe present.

\n"},"onResize":{"!type":"fn(width: ?, height: ?, oldWidth: ?, oldHeight: ?) -> !this","!doc":"

Allows addition of behavior to the resize operation.

\n\n

Called when Ext.resizer.Resizer#drag event is fired.

\n"},"onShow":{"!type":"fn() -> !this"},"parseBox":{"!type":"fn(box: ?) -> !this","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"postBlur":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method to do any post-blur processing.

\n"},"previousNode":{"!type":"fn(selector?: string) -> +Ext.Component","!doc":"

Returns the previous node in the Component tree in tree traversal order.

\n\n

Note that this is not limited to siblings, and if invoked upon a node with no matching siblings, will walk the\ntree in reverse order to attempt to find a match. Contrast with previousSibling.

\n"},"previousSibling":{"!type":"fn(selector?: string) -> +Ext.Component","!doc":"

Returns the previous sibling of this Component.

\n\n

Optionally selects the previous sibling which matches the passed ComponentQuery\nselector.

\n\n

May also be referred to as prev()

\n\n

Note that this is limited to siblings, and if no siblings of the item match, null is returned. Contrast with\npreviousNode

\n"},"registerFloatingItem":{"!type":"fn(cmp: ?) -> !this","!doc":"

Called by Component#doAutoRender

\n\n

Register a Container configured floating: true with this Component's ZIndexManager.

\n\n

Components added in this way will not participate in any layout, but will be rendered\nupon first show in the way that Windows are.

\n"},"removeClass":{"!type":"fn() -> !this","!doc":"

\n"},"removeCls":{"!type":"fn(cls: string|[string]) -> +Ext.Component","!doc":"

Removes a CSS class from the top level element representing this component.

\n"},"removeClsWithUI":{"!type":"fn(cls: string|[string]) -> !this","!doc":"

Removes a cls to the uiCls array, which will also call removeUIClsFromElement and removes it from all\nelements of this component.

\n"},"removeManagedListenerItem":{"!type":"fn(isClear: bool, managedListener: ?) -> !this","!doc":"

inherit docs

\n"},"removeOverCls":{"!type":"fn() -> !this"},"removePlugin":{"!type":"fn(plugin: ?) -> !this"},"removeUIClsFromElement":{"!type":"fn(ui: string) -> !this","!doc":"

Method which removes a specified UI + uiCls from the components element. The cls which is added to the element\nwill be: this.baseCls + '-' + ui.

\n"},"removeUIFromElement":{"!type":"fn() -> !this","!doc":"

Method which removes a specified UI from the components element.

\n"},"resumeLayouts":{"!type":"fn(flushOptions: ?) -> !this"},"setBorder":{"!type":"fn(border: string|number) -> !this"},"setComponentLayout":{"!type":"fn(layout: ?) -> !this"},"setDisabled":{"!type":"fn(disabled: bool) -> !this","!doc":"

Enable or disable the component.

\n"},"setDocked":{"!type":"fn(dock: ?, layoutParent?: bool) -> +Ext.Component","!doc":"

Sets the dock position of this component in its parent panel. Note that this only has effect if this item is part\nof the dockedItems collection of a parent that has a DockLayout (note that any Panel has a DockLayout by default)

\n"},"setHeight":{"!type":"fn(height: number) -> +Ext.Component","!doc":"

Sets the height of the component. This method fires the resize event.

\n"},"setHiddenState":{"!type":"fn(hidden: ?) -> !this"},"setLocalX":{"!type":"fn(x: ?) -> +Ext.util.Positionable","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"setLocalXY":{"!type":"fn(x: ?, y: ?) -> +Ext.util.Positionable","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"setLocalY":{"!type":"fn(y: ?) -> +Ext.util.Positionable","!doc":"

Sets the local y coordinate of this element using CSS style. When used on an\nabsolute positioned element this method is symmetrical with getLocalY, but\nmay not be symmetrical when used on a relatively positioned element.

\n"},"setMargin":{"!type":"fn(margin: number|string) -> !this","!doc":"

Sets the margin on the target element.

\n"},"setSize":{"!type":"fn(width: number|string|?, height: number|string) -> +Ext.Component","!doc":"

Sets the width and height of this Component. This method fires the resize event. This method can accept\neither width and height as separate arguments, or you can pass a size object like {width:10, height:20}.

\n"},"setUI":{"!type":"fn(ui: string) -> !this","!doc":"

Sets the UI for the component. This will remove any existing UIs on the component. It will also loop through any\nuiCls set on the component and rename them so they include the new UI.

\n"},"setVisible":{"!type":"fn(visible: bool) -> +Ext.Component","!doc":"

Convenience function to hide or show this component by Boolean.

\n"},"setWidth":{"!type":"fn(width: number) -> +Ext.Component","!doc":"

Sets the width of the component. This method fires the resize event.

\n"},"setX":{"!type":"fn(x: ?, animate: ?) -> +Ext.util.Positionable","!doc":"

Sets the X position of the DOM element based on page coordinates.

\n"},"setXY":{"!type":"fn(xy: ?, animate: ?) -> +Ext.util.Positionable","!doc":"

Sets the position of the DOM element in page coordinates.

\n"},"setY":{"!type":"fn(y: ?, animate: ?) -> +Ext.util.Positionable","!doc":"

Sets the Y position of the DOM element based on page coordinates.

\n"},"setupProtoEl":{"!type":"fn() -> !this"},"show":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component is shown when calling the show method.

\n"},"suspendLayouts":{"!type":"fn() -> !this"},"unitizeBox":{"!type":"fn(box: ?) -> !this","!doc":"

Overridden in Ext.rtl.AbstractComponent.

\n"},"unmask":{"!type":"fn() -> !this"},"unregisterFloatingItem":{"!type":"fn(cmp: ?) -> !this"},"up":{"!type":"fn(selector?: string|+Ext.Component, limit?: string|number|+Ext.Component) -> +Ext.container.Container","!doc":"

Navigates up the ownership hierarchy searching for an ancestor Container which matches any passed simple selector or component.

\n\n

Important. There is not a universal upwards navigation pointer. There are several upwards relationships\nsuch as the button which activates a menu, or the\nmenu item which activated a submenu, or the\ncolumn header which activated the column menu.

\n\n

These differences are abstracted away by this method.

\n\n

Example:

\n\n
var owningTabPanel = grid.up('tabpanel');\n
\n"},"update":{"!type":"fn(htmlOrData: string|?, loadScripts?: bool, callback?: fn()) -> !this","!doc":"

Update the content area of a component.

\n"},"updateAria":{"!type":"fn() -> !this","!doc":"

Injected as an override by Ext.Aria.initialize

\n"},"updateLayout":{"!type":"fn(options?: ?) -> !this","!doc":"

Updates this component's layout. If this update affects this components ownerCt,\nthat component's updateLayout method will be called to perform the layout instead.\nOtherwise, just this component (and its child items) will layout.

\n"},"activate":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after a Component has been visually activated.

\n"},"added":{"!type":"fn(this: +Ext.Component, container: +Ext.container.Container, pos: number, eOpts: ?)","!doc":"

Fires after a Component had been added to a Container.

\n"},"afterrender":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component rendering is finished.

\n\n

The afterrender event is fired after this Component has been rendered, been postprocessed by any\nafterRender method defined for the Component.

\n"},"beforeactivate":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires before a Component has been visually activated. Returning false from an event listener can prevent\nthe activate from occurring.

\n"},"beforedeactivate":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires before a Component has been visually deactivated. Returning false from an event listener can\nprevent the deactivate from occurring.

\n"},"beforedestroy":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires before the component is destroyed. Return false from an event handler to stop the\ndestroy.

\n"},"beforehide":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires before the component is hidden when calling the hide method. Return false from an event\nhandler to stop the hide.

\n"},"beforerender":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires before the component is rendered. Return false from an event handler to stop the\nrender.

\n"},"beforeshow":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires before the component is shown when calling the show method. Return false from an event\nhandler to stop the show.

\n"},"blur":{"!type":"fn(this: +Ext.Component, The: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when this Component loses focus.

\n"},"boxready":{"!type":"fn(this: +Ext.Component, width: number, height: number, eOpts: ?)","!doc":"

Fires one time - after the component has been laid out for the first time at its initial size.

\n"},"deactivate":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after a Component has been visually deactivated.

\n"},"focus":{"!type":"fn(this: +Ext.Component, The: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when this Component receives focus.

\n"},"hide":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component is hidden. Fires after the component is hidden when calling the hide\nmethod.

\n"},"move":{"!type":"fn(this: +Ext.Component, x: number, y: number, eOpts: ?)","!doc":"

Fires after the component is moved.

\n"},"removed":{"!type":"fn(this: +Ext.Component, ownerCt: +Ext.container.Container, eOpts: ?)","!doc":"

Fires when a component is removed from an Ext.container.Container

\n"},"render":{"!type":"fn(this: +Ext.Component, eOpts: ?)","!doc":"

Fires after the component markup is rendered.

\n"},"resize":{"!type":"fn(this: +Ext.Component, width: number, height: number, oldWidth: number, oldHeight: number, eOpts: ?)","!doc":"

Fires after the component is resized. Note that this does not fire when the component is first laid out at its initial\nsize. To hook that point in the life cycle, use the boxready event.

\n"}},"AUTO_ID":{"!type":"number"},"layoutSuspendCount":{"!type":"number"},"pendingLayouts":{"!type":"?"},"cancelLayout":{"!type":"fn(comp: +Ext.Component) -> !this","!doc":"

Cancels layout of a component.

\n"},"flushLayouts":{"!type":"fn() -> !this","!doc":"

Performs all pending layouts that were scheduled while\nsuspendLayouts was in effect.

\n"},"resumeLayouts":{"!type":"fn(flush?: bool) -> !this","!doc":"

Resumes layout activity in the whole framework.

\n\n

Ext.suspendLayouts is alias of suspendLayouts.

\n"},"suspendLayouts":{"!type":"fn() -> !this","!doc":"

Stops layouts from happening in the whole framework.

\n\n

It's useful to suspend the layout activity while updating multiple components and\ncontainers:

\n\n
Ext.suspendLayouts();\n// batch of updates...\nExt.resumeLayouts(true);\n
\n\n

Ext.suspendLayouts is alias of suspendLayouts.

\n\n

See also Ext.batchLayouts for more abstract way of doing this.

\n"},"updateLayout":{"!type":"fn(comp: +Ext.Component, defer?: bool) -> !this","!doc":"

Updates layout of a component.

\n"}},"util":{"Observable":{"prototype":{"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"eventsSuspended":{"!type":"number","!doc":"

Initial suspended call count. Incremented when suspendEvents is called, decremented when resumeEvents is called.

\n"},"hasListeners":{"!type":"?","!doc":"

This object holds a key for any event that has a listener. The listener may be set\ndirectly on the instance, or on its class or a super class (via observe) or\non the MVC EventBus. The values of this object are truthy\n(a non-zero number) and falsy (0 or undefined). They do not represent an exact count\nof listeners. The value for an event is truthy if the event must be fired and is\nfalsy if there is no need to fire the event.

\n\n

The intended use of this property is to avoid the expense of fireEvent calls when\nthere are no listeners. This can be particularly helpful when one would otherwise\nhave to call fireEvent hundreds or thousands of times. It is used like this:

\n\n
 if (this.hasListeners.foo) {\n     this.fireEvent('foo', this, arg1);\n }\n
\n"},"isObservable":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Observable, or subclass thereof.

\n"},"addEvents":{"!type":"fn(eventNames: ?|string) -> !this","!doc":"

Adds the specified events to the list of events which this Observable may fire.

\n"},"addManagedListener":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Adds listeners to any Observable object (or Ext.Element) which are automatically removed when this Component is\ndestroyed.

\n"},"captureArgs":{"!type":"fn(o: ?, fn: ?, scope: ?) -> !this"},"clearListeners":{"!type":"fn() -> !this","!doc":"

Removes all listeners for this object including the managed listeners

\n"},"clearManagedListeners":{"!type":"fn() -> !this","!doc":"

Removes all managed listeners for this object.

\n"},"continueFireEvent":{"!type":"fn(eventName: string, args: [?], bubbles: bool) -> !this","!doc":"

Continue to fire event.

\n"},"createRelayer":{"!type":"fn(newName: string, beginEnd?: [?]) -> fn()","!doc":"

Creates an event handling function which refires the event from this object as the passed event name.

\n"},"enableBubble":{"!type":"fn(eventNames: string|[string]) -> !this","!doc":"

Enables events fired by this Observable to bubble up an owner hierarchy by calling this.getBubbleTarget() if\npresent. There is no implementation in the Observable base class.

\n\n

This is commonly used by Ext.Components to bubble events to owner Containers.\nSee Ext.Component.getBubbleTarget. The default implementation in Ext.Component returns the\nComponent's immediate owner. But if a known target is required, this can be overridden to access the\nrequired target more quickly.

\n\n

Example:

\n\n
Ext.define('Ext.overrides.form.field.Base', {\n    override: 'Ext.form.field.Base',\n\n    //  Add functionality to Field's initComponent to enable the change event to bubble\n    initComponent: function () {\n        this.callParent();\n        this.enableBubble('change');\n    }\n});\n\nvar myForm = Ext.create('Ext.form.Panel', {\n    title: 'User Details',\n    items: [{\n        ...\n    }],\n    listeners: {\n        change: function() {\n            // Title goes red if form has been modified.\n            myForm.header.setStyle('color', 'red');\n        }\n    }\n});\n
\n"},"fireEvent":{"!type":"fn(eventName: string, args: ?) -> bool","!doc":"

Fires the specified event with the passed parameters (minus the event name, plus the options object passed\nto addListener).

\n\n

An event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget) by\ncalling enableBubble.

\n"},"fireEventArgs":{"!type":"fn(eventName: string, args: [?]) -> bool","!doc":"

Fires the specified event with the passed parameter list.

\n\n

An event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget) by\ncalling enableBubble.

\n"},"getBubbleParent":{"!type":"fn() -> +Ext.util.Observable","!doc":"

Gets the bubbling parent for an Observable

\n"},"hasListener":{"!type":"fn(eventName: string) -> bool","!doc":"

Checks to see if this object has any listeners for a specified event, or whether the event bubbles. The answer\nindicates whether the event needs firing or not.

\n"},"mon":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Shorthand for addManagedListener.

\n"},"mun":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?) -> !this","!doc":"

Shorthand for removeManagedListener.

\n"},"on":{"!type":"fn(eventName: string|?, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Shorthand for addListener.

\n"},"prepareClass":{"!type":"fn(T: fn()) -> !this","!doc":"

Prepares a given class for observable instances. This method is called when a\nclass derives from this class or uses this class as a mixin.

\n"},"relayEvents":{"!type":"fn(origin: ?, events: [string], prefix?: string) -> ?","!doc":"

Relays selected events from the specified Observable as if the events were fired by this.

\n\n

For example if you are extending Grid, you might decide to forward some events from store.\nSo you can do this inside your initComponent:

\n\n
this.relayEvents(this.getStore(), ['load']);\n
\n\n

The grid instance will then have an observable 'load' event which will be passed the\nparameters of the store's load event and any function fired with the grid's load event\nwould have access to the grid using the this keyword.

\n"},"removeListener":{"!type":"fn(eventName: string, fn: fn(), scope?: ?) -> !this","!doc":"

Removes an event handler.

\n"},"removeManagedListener":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?) -> !this","!doc":"

Removes listeners that were added by the mon method.

\n"},"resumeEvent":{"!type":"fn(eventName: string) -> !this","!doc":"

Resumes firing of the named event(s).

\n\n

After calling this method to resume events, the events will fire when requested to fire.

\n\n

Note that if the suspendEvent method is called multiple times for a certain event,\nthis converse method will have to be called the same number of times for it to resume firing.

\n"},"resumeEvents":{"!type":"fn() -> !this","!doc":"

Resumes firing events (see suspendEvents).

\n\n

If events were suspended using the queueSuspended parameter, then all events fired\nduring event suspension will be sent to any listeners now.

\n"},"suspendEvent":{"!type":"fn(eventName: string) -> !this","!doc":"

Suspends firing of the named event(s).

\n\n

After calling this method to suspend events, the events will no longer fire when requested to fire.

\n\n

Note that if this is called multiple times for a certain event, the converse method\nresumeEvent will have to be called the same number of times for it to resume firing.

\n"},"suspendEvents":{"!type":"fn(queueSuspended: bool) -> !this","!doc":"

Suspends the firing of all events. (see resumeEvents)

\n"},"un":{"!type":"fn(eventName: string, fn: fn(), scope?: ?) -> !this","!doc":"

Shorthand for removeListener.

\n"},"addListener":{"!type":"fn(eventName: string|?, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Appends an event handler to this object. For example:

\n\n
myGridPanel.on(\"mouseover\", this.onMouseOver, this);\n
\n\n

The method also allows for a single argument to be passed which is a config object\ncontaining properties which specify multiple events. For example:

\n\n
myGridPanel.on({\n    cellClick: this.onCellClick,\n    mouseover: this.onMouseOver,\n    mouseout: this.onMouseOut,\n    scope: this // Important. Ensure \"this\" is correct during handler execution\n});\n
\n\n

One can also specify options for each event handler separately:

\n\n
myGridPanel.on({\n    cellClick: {fn: this.onCellClick, scope: this, single: true},\n    mouseover: {fn: panel.onMouseOver, scope: panel}\n});\n
\n\n

Names of methods in a specified scope may also be used. Note that\nscope MUST be specified to use this option:

\n\n
myGridPanel.on({\n    cellClick: {fn: 'onCellClick', scope: this, single: true},\n    mouseover: {fn: 'onMouseOver', scope: panel}\n});\n
\n"},"removeManagedListenerItem":{"!type":"fn(isClear: bool, managedListener: ?) -> !this","!doc":"

Remove a single managed listener item

\n"}},"listeners":{"!type":"?","!doc":"

A config object containing one or more event handlers to be added to this object during initialization. This\nshould be a valid listeners config object as specified in the addListener example for attaching multiple\nhandlers at once.

\n\n

DOM events from Ext JS Components

\n\n

While some Ext JS Component classes export selected DOM events (e.g. \"click\", \"mouseover\" etc), this is usually\nonly done when extra value can be added. For example the DataView's itemclick event passing the node clicked on. To access DOM events directly from a\nchild element of a Component, we need to specify the element option to identify the Component property to add a\nDOM listener to:

\n\n
new Ext.panel.Panel({\n    width: 400,\n    height: 200,\n    dockedItems: [{\n        xtype: 'toolbar'\n    }],\n    listeners: {\n        click: {\n            element: 'el', //bind to the underlying el property on the panel\n            fn: function(){ console.log('click el'); }\n        },\n        dblclick: {\n            element: 'body', //bind to the underlying body property on the panel\n            fn: function(){ console.log('dblclick body'); }\n        }\n    }\n});\n
\n"},"eventsSuspended":{"!type":"number","!doc":"

Initial suspended call count. Incremented when suspendEvents is called, decremented when resumeEvents is called.

\n"},"hasListeners":{"!type":"?","!doc":"

This object holds a key for any event that has a listener. The listener may be set\ndirectly on the instance, or on its class or a super class (via observe) or\non the MVC EventBus. The values of this object are truthy\n(a non-zero number) and falsy (0 or undefined). They do not represent an exact count\nof listeners. The value for an event is truthy if the event must be fired and is\nfalsy if there is no need to fire the event.

\n\n

The intended use of this property is to avoid the expense of fireEvent calls when\nthere are no listeners. This can be particularly helpful when one would otherwise\nhave to call fireEvent hundreds or thousands of times. It is used like this:

\n\n
 if (this.hasListeners.foo) {\n     this.fireEvent('foo', this, arg1);\n }\n
\n"},"isObservable":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Observable, or subclass thereof.

\n"},"addEvents":{"!type":"fn(eventNames: ?|string) -> !this","!doc":"

Adds the specified events to the list of events which this Observable may fire.

\n"},"addListener":{"!type":"fn(eventName: string|?, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Appends an event handler to this object. For example:

\n\n
myGridPanel.on(\"mouseover\", this.onMouseOver, this);\n
\n\n

The method also allows for a single argument to be passed which is a config object\ncontaining properties which specify multiple events. For example:

\n\n
myGridPanel.on({\n    cellClick: this.onCellClick,\n    mouseover: this.onMouseOver,\n    mouseout: this.onMouseOut,\n    scope: this // Important. Ensure \"this\" is correct during handler execution\n});\n
\n\n

One can also specify options for each event handler separately:

\n\n
myGridPanel.on({\n    cellClick: {fn: this.onCellClick, scope: this, single: true},\n    mouseover: {fn: panel.onMouseOver, scope: panel}\n});\n
\n\n

Names of methods in a specified scope may also be used. Note that\nscope MUST be specified to use this option:

\n\n
myGridPanel.on({\n    cellClick: {fn: 'onCellClick', scope: this, single: true},\n    mouseover: {fn: 'onMouseOver', scope: panel}\n});\n
\n"},"addManagedListener":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Adds listeners to any Observable object (or Ext.Element) which are automatically removed when this Component is\ndestroyed.

\n"},"captureArgs":{"!type":"fn(o: ?, fn: ?, scope: ?) -> !this"},"clearListeners":{"!type":"fn() -> !this","!doc":"

Removes all listeners for this object including the managed listeners

\n"},"clearManagedListeners":{"!type":"fn() -> !this","!doc":"

Removes all managed listeners for this object.

\n"},"continueFireEvent":{"!type":"fn(eventName: string, args: [?], bubbles: bool) -> !this","!doc":"

Continue to fire event.

\n"},"createRelayer":{"!type":"fn(newName: string, beginEnd?: [?]) -> fn()","!doc":"

Creates an event handling function which refires the event from this object as the passed event name.

\n"},"enableBubble":{"!type":"fn(eventNames: string|[string]) -> !this","!doc":"

Enables events fired by this Observable to bubble up an owner hierarchy by calling this.getBubbleTarget() if\npresent. There is no implementation in the Observable base class.

\n\n

This is commonly used by Ext.Components to bubble events to owner Containers.\nSee Ext.Component.getBubbleTarget. The default implementation in Ext.Component returns the\nComponent's immediate owner. But if a known target is required, this can be overridden to access the\nrequired target more quickly.

\n\n

Example:

\n\n
Ext.define('Ext.overrides.form.field.Base', {\n    override: 'Ext.form.field.Base',\n\n    //  Add functionality to Field's initComponent to enable the change event to bubble\n    initComponent: function () {\n        this.callParent();\n        this.enableBubble('change');\n    }\n});\n\nvar myForm = Ext.create('Ext.form.Panel', {\n    title: 'User Details',\n    items: [{\n        ...\n    }],\n    listeners: {\n        change: function() {\n            // Title goes red if form has been modified.\n            myForm.header.setStyle('color', 'red');\n        }\n    }\n});\n
\n"},"fireEvent":{"!type":"fn(eventName: string, args: ?) -> bool","!doc":"

Fires the specified event with the passed parameters (minus the event name, plus the options object passed\nto addListener).

\n\n

An event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget) by\ncalling enableBubble.

\n"},"fireEventArgs":{"!type":"fn(eventName: string, args: [?]) -> bool","!doc":"

Fires the specified event with the passed parameter list.

\n\n

An event may be set to bubble up an Observable parent hierarchy (See Ext.Component.getBubbleTarget) by\ncalling enableBubble.

\n"},"getBubbleParent":{"!type":"fn() -> +Ext.util.Observable","!doc":"

Gets the bubbling parent for an Observable

\n"},"hasListener":{"!type":"fn(eventName: string) -> bool","!doc":"

Checks to see if this object has any listeners for a specified event, or whether the event bubbles. The answer\nindicates whether the event needs firing or not.

\n"},"mon":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Shorthand for addManagedListener.

\n"},"mun":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?) -> !this","!doc":"

Shorthand for removeManagedListener.

\n"},"on":{"!type":"fn(eventName: string|?, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Shorthand for addListener.

\n"},"prepareClass":{"!type":"fn(T: fn()) -> !this","!doc":"

Prepares a given class for observable instances. This method is called when a\nclass derives from this class or uses this class as a mixin.

\n"},"relayEvents":{"!type":"fn(origin: ?, events: [string], prefix?: string) -> ?","!doc":"

Relays selected events from the specified Observable as if the events were fired by this.

\n\n

For example if you are extending Grid, you might decide to forward some events from store.\nSo you can do this inside your initComponent:

\n\n
this.relayEvents(this.getStore(), ['load']);\n
\n\n

The grid instance will then have an observable 'load' event which will be passed the\nparameters of the store's load event and any function fired with the grid's load event\nwould have access to the grid using the this keyword.

\n"},"removeListener":{"!type":"fn(eventName: string, fn: fn(), scope?: ?) -> !this","!doc":"

Removes an event handler.

\n"},"removeManagedListener":{"!type":"fn(item: +Ext.util.Observable|+Ext.Element, ename: ?|string, fn?: fn(), scope?: ?) -> !this","!doc":"

Removes listeners that were added by the mon method.

\n"},"removeManagedListenerItem":{"!type":"fn(isClear: bool, managedListener: ?) -> !this","!doc":"

Remove a single managed listener item

\n"},"resumeEvent":{"!type":"fn(eventName: string) -> !this","!doc":"

Resumes firing of the named event(s).

\n\n

After calling this method to resume events, the events will fire when requested to fire.

\n\n

Note that if the suspendEvent method is called multiple times for a certain event,\nthis converse method will have to be called the same number of times for it to resume firing.

\n"},"resumeEvents":{"!type":"fn() -> !this","!doc":"

Resumes firing events (see suspendEvents).

\n\n

If events were suspended using the queueSuspended parameter, then all events fired\nduring event suspension will be sent to any listeners now.

\n"},"suspendEvent":{"!type":"fn(eventName: string) -> !this","!doc":"

Suspends firing of the named event(s).

\n\n

After calling this method to suspend events, the events will no longer fire when requested to fire.

\n\n

Note that if this is called multiple times for a certain event, the converse method\nresumeEvent will have to be called the same number of times for it to resume firing.

\n"},"suspendEvents":{"!type":"fn(queueSuspended: bool) -> !this","!doc":"

Suspends the firing of all events. (see resumeEvents)

\n"},"un":{"!type":"fn(eventName: string, fn: fn(), scope?: ?) -> !this","!doc":"

Shorthand for removeListener.

\n"},"!doc":"

Base class that provides a common interface for publishing events. Subclasses are expected to to have a property\n\"events\" with all the events defined, and, optionally, a property \"listeners\" with configured listeners defined.

\n\n

For example:

\n\n
Ext.define('Employee', {\n    mixins: {\n        observable: 'Ext.util.Observable'\n    },\n\n    constructor: function (config) {\n        // The Observable constructor copies all of the properties of `config` on\n        // to `this` using Ext.apply. Further, the `listeners` property is\n        // processed to add listeners.\n        //\n        this.mixins.observable.constructor.call(this, config);\n\n        this.addEvents(\n            'fired',\n            'quit'\n        );\n    }\n});\n
\n\n

This could then be used like this:

\n\n
var newEmployee = new Employee({\n    name: employeeName,\n    listeners: {\n        quit: function() {\n            // By default, \"this\" will be the object that fired the event.\n            alert(this.name + \" has quit!\");\n        }\n    }\n});\n
\n","capture":{"!type":"fn(o: +Ext.util.Observable, fn: fn(), scope?: ?) -> !this","!doc":"

Starts capture on the specified Observable. All events will be passed to the supplied function with the event\nname + standard signature of the event before the event is fired. If the supplied function returns false,\nthe event will not fire.

\n"},"observe":{"!type":"fn(c: fn(), listeners: ?) -> !this","!doc":"

Sets observability on the passed class constructor.

\n\n

This makes any event fired on any instance of the passed class also fire a single event through\nthe class allowing for central handling of events on many instances at once.

\n\n

Usage:

\n\n
Ext.util.Observable.observe(Ext.data.Connection);\nExt.data.Connection.on('beforerequest', function(con, options) {\n    console.log('Ajax request made to ' + options.url);\n});\n
\n"},"releaseCapture":{"!type":"fn(o: +Ext.util.Observable) -> !this","!doc":"

Removes all added captures from the Observable.

\n"}},"Positionable":{"prototype":{"_alignRe":{"!type":"+RegExp"},"_positionTopLeft":{"!type":"[?]"},"convertPositionSpec":{"!type":"?","!doc":"

By default this method does nothing but return the position spec passed to it. In\nrtl mode it is overridden to convert \"l\" to \"r\" and vice versa when required.

\n"},"adjustForConstraints":{"!type":"fn(xy: ?, parent: ?) -> !this","!doc":"

private ==> used outside of core\nTODO: currently only used by ToolTip. does this method belong here?

\n"},"alignTo":{"!type":"fn(element: +Ext.util.Positionable|+HTMLElement|string, position?: string, offsets?: [number], animate?: bool|?) -> +Ext.util.Positionable","!doc":"

Aligns the element with another element relative to the specified anchor points. If\nthe other element is the document it aligns it to the viewport. The position\nparameter is optional, and can be specified in any one of the following formats:

\n\n\n\n\n

In addition to the anchor points, the position parameter also supports the \"?\"\ncharacter. If \"?\" is passed at the end of the position string, the element will\nattempt to align as specified, but the position will be adjusted to constrain to\nthe viewport if necessary. Note that the element being aligned might be swapped to\nalign to a different position than that specified in order to enforce the viewport\nconstraints. Following are all of the supported anchor positions:

\n\n
Value  Description\n-----  -----------------------------\ntl     The top left corner (default)\nt      The center of the top edge\ntr     The top right corner\nl      The center of the left edge\nc      In the center of the element\nr      The center of the right edge\nbl     The bottom left corner\nb      The center of the bottom edge\nbr     The bottom right corner\n
\n\n\n

Example Usage:

\n\n
// align el to other-el using the default positioning\n// (\"tl-bl\", non-constrained)\nel.alignTo(\"other-el\");\n\n// align the top left corner of el with the top right corner of other-el\n// (constrained to viewport)\nel.alignTo(\"other-el\", \"tr?\");\n\n// align the bottom right corner of el with the center left edge of other-el\nel.alignTo(\"other-el\", \"br-l?\");\n\n// align the center of el with the bottom left corner of other-el and\n// adjust the x position by -6 pixels (and the y position by 0)\nel.alignTo(\"other-el\", \"c-bl\", [-6, 0]);\n
\n"},"anchorTo":{"!type":"fn(element: +Ext.util.Positionable|+HTMLElement|string, position?: string, offsets?: [number], animate?: bool|?, monitorScroll?: bool|number, callback?: fn()) -> +Ext.util.Positionable","!doc":"

Anchors an element to another element and realigns it when the window is resized.

\n"},"calculateAnchorXY":{"!type":"fn(anchor?: string, extraX?: number, extraY?: number, size?: ?) -> [number]","!doc":"

Calculates x,y coordinates specified by the anchor position on the element, adding\nextraX and extraY values.

\n"},"calculateConstrainedPosition":{"!type":"fn(constrainTo?: string|+HTMLElement|+Ext.Element|+Ext.util.Region, proposedPosition?: [number], local?: bool, proposedSize?: [number]) -> [number]","!doc":"

Calculates the new [x,y] position to move this Positionable into a constrain region.

\n\n

By default, this Positionable is constrained to be within the container it was added to, or the element it was\nrendered to.

\n\n

Priority is given to constraining the top and left within the constraint.

\n\n

An alternative constraint may be passed.

\n"},"getAlignToXY":{"!type":"fn(element: +Ext.util.Positionable|+HTMLElement|string, position?: string, offsets?: [number]) -> [number]","!doc":"

Gets the x,y coordinates to align this element with another element. See\nalignTo for more info on the supported position values.

\n"},"getAnchor":{"!type":"fn() -> !this","!doc":"

private

\n"},"getAnchorXY":{"!type":"fn(anchor?: string, local?: bool, size?: ?) -> [number]","!doc":"

Gets the x,y coordinates specified by the anchor position on the element.

\n"},"getBox":{"!type":"fn(contentBox?: bool, local?: bool) -> ?","!doc":"

Return an object defining the area of this Element which can be passed to\nsetBox to set another Element's size/location to match this element.

\n"},"getConstrainVector":{"!type":"fn(constrainTo?: +Ext.util.Positionable|+HTMLElement|string|+Ext.util.Region, proposedPosition?: [number], proposedSize?: [number]) -> [number]|bool","!doc":"

Returns the [X, Y] vector by which this Positionable's element must be translated to make a best\nattempt to constrain within the passed constraint. Returns false if the element\ndoes not need to be moved.

\n\n

Priority is given to constraining the top and left within the constraint.

\n\n

The constraint may either be an existing element into which the element is to be\nconstrained, or a Region into which this element is to be\nconstrained.

\n\n

By default, any extra shadow around the element is not included in the constrain calculations - the edges\nof the element are used as the element bounds. To constrain the shadow within the constrain region, set the\nconstrainShadow property on this element to true.

\n"},"getOffsetsTo":{"!type":"fn(offsetsTo: +Ext.util.Positionable|+HTMLElement|string) -> [number]","!doc":"

Returns the offsets of this element from the passed element. The element must both\nbe part of the DOM tree and not have display:none to have page coordinates.

\n"},"getRegion":{"!type":"fn() -> +Ext.util.Region","!doc":"

Returns a region object that defines the area of this element.

\n"},"getViewRegion":{"!type":"fn() -> +Ext.util.Region","!doc":"

Returns the content region of this element. That is the region within the borders\nand padding.

\n"},"move":{"!type":"fn(direction: string, distance: number, animate?: bool|?) -> !this","!doc":"

Move the element relative to its current position.

\n"},"removeAnchor":{"!type":"fn() -> +Ext.util.Positionable","!doc":"

Remove any anchor to this element. See anchorTo.

\n"},"setBox":{"!type":"fn(box: ?, animate?: bool|?) -> +Ext.util.Positionable","!doc":"

Sets the element's box. If animate is true then x, y, width, and height will be\nanimated concurrently.

\n"},"setRegion":{"!type":"fn(region: +Ext.util.Region, animate?: bool|?) -> +Ext.util.Positionable","!doc":"

Sets the element's position and size to the specified region. If animation is true\nthen width, height, x and y will be animated concurrently.

\n"},"translatePoints":{"!type":"fn(x: number|[?], y?: number) -> ?","!doc":"

Translates the passed page coordinates into left/top css values for the element

\n"},"translateXY":{"!type":"fn(x: number|[?], y?: number) -> ?","!doc":"

Translates the passed page coordinates into x and y css values for the element

\n"},"afterSetPosition":{"!type":"fn() -> !this","!doc":"

Stub implementation called after positioning.\nMay be implemented in subclasses. AbstractComponent has an implementation.

\n"},"getAnchorToXY":{"!type":"fn(el: +Ext.dom.Element, anchor?: string, local?: bool, size?: ?) -> [number]","!doc":"

Gets the x,y coordinates of an element specified by the anchor position on the\nelement.

\n"},"getBorderPadding":{"!type":"fn() -> ?","!doc":"

Returns the size of the element's borders and padding.

\n"},"getLocalX":{"!type":"fn() -> number","!doc":"

Returns the x coordinate of this element reletive to its offsetParent.

\n"},"getLocalXY":{"!type":"fn() -> [number]","!doc":"

Returns the x and y coordinates of this element relative to its offsetParent.

\n"},"getLocalY":{"!type":"fn() -> number","!doc":"

Returns the y coordinate of this element reletive to its offsetParent.

\n"},"getX":{"!type":"fn() -> number","!doc":"

Gets the current X position of the DOM element based on page coordinates.

\n"},"getXY":{"!type":"fn() -> [number]","!doc":"

Gets the current position of the DOM element based on page coordinates.

\n"},"getY":{"!type":"fn() -> number","!doc":"

Gets the current Y position of the DOM element based on page coordinates.

\n"},"setLocalX":{"!type":"fn(x: number) -> +Ext.util.Positionable","!doc":"

Sets the local x coordinate of this element using CSS style. When used on an\nabsolute positioned element this method is symmetrical with getLocalX, but\nmay not be symmetrical when used on a relatively positioned element.

\n"},"setLocalXY":{"!type":"fn(x: number|[?], y?: number) -> +Ext.util.Positionable","!doc":"

Sets the local x and y coordinates of this element using CSS style. When used on an\nabsolute positioned element this method is symmetrical with getLocalXY, but\nmay not be symmetrical when used on a relatively positioned element.

\n"},"setLocalY":{"!type":"fn(y: number) -> +Ext.util.Positionable","!doc":"

Sets the local y coordinate of this element using CSS style. When used on an\nabsolute positioned element this method is symmetrical with getLocalY, but\nmay not be symmetrical when used on a relatively positioned element.

\n"},"setX":{"!type":"fn(The: number, animate?: bool|?) -> +Ext.util.Positionable","!doc":"

Sets the X position of the DOM element based on page coordinates.

\n"},"setXY":{"!type":"fn(pos: [number], animate?: bool|?) -> +Ext.util.Positionable","!doc":"

Sets the position of the DOM element in page coordinates.

\n"},"setY":{"!type":"fn(The: number, animate?: bool|?) -> +Ext.util.Positionable","!doc":"

Sets the Y position of the DOM element based on page coordinates.

\n"}},"!doc":"

This mixin provides a common interface for objects that can be positioned, e.g.\nComponents and Elements

\n"},"ElementContainer":{"prototype":{"!proto":"Ext.Base.prototype","childEls":{"!type":"[?]"},"addChildEls":{"!type":"fn() -> !this","!doc":"

Adds each argument passed to this method to the childEls array.

\n"},"applyChildEls":{"!type":"fn(el: ?, id: ?) -> !this","!doc":"

Sets references to elements inside the component.

\n"},"destroy":{"!type":"fn() -> !this"},"getChildEls":{"!type":"fn() -> !this"},"getClassChildEls":{"!type":"fn(cls: ?) -> !this"},"prune":{"!type":"fn(childEls: ?, shared: ?) -> !this"},"removeChildEls":{"!type":"fn(testFn: fn()) -> !this","!doc":"

Removes items in the childEls array based on the return value of a supplied test\nfunction. The function is called with a entry in childEls and if the test function\nreturn true, that entry is removed. If false, that entry is kept.

\n"}},"!doc":"

This mixin enables classes to declare relationships to child elements and provides the\nmechanics for acquiring the elements and storing them on an object\ninstance as properties.

\n\n

This class is used by components and container layouts to\nmanage their child elements.

\n\n

A typical component that uses these features might look something like this:

\n\n
 Ext.define('Ext.ux.SomeComponent', {\n     extend: 'Ext.Component',\n\n     childEls: [\n         'bodyEl'\n     ],\n\n     renderTpl: [\n         '<div id=\"{id}-bodyEl\"></div>'\n     ],\n\n     // ...\n });\n
\n\n

The childEls array lists one or more relationships to child elements managed by the\ncomponent. The items in this array can be either of the following types:

\n\n\n\n\n

The example above could have used this instead to achieve the same result:

\n\n
 childEls: [\n     { name: 'bodyEl', itemId: 'bodyEl' }\n ]\n
\n\n

When using select, the property will be an instance of Ext.CompositeElement. In\nall other cases, the property will be an Ext.Element or null if not found.

\n\n

Care should be taken when using select or selectNode to find child elements. The\nfollowing issues should be considered:

\n\n\n\n\n

This above issues are most important when using select since it returns multiple\nelements.

\n\n

IMPORTANT\nUnlike a renderTpl where there is a single value for an instance, childEls are aggregated\nup the class hierarchy so that they are effectively inherited. In other words, if a\nclass where to derive from Ext.ux.SomeComponent in the example above, it could also\nhave a childEls property in the same way as Ext.ux.SomeComponent.

\n\n
 Ext.define('Ext.ux.AnotherComponent', {\n     extend: 'Ext.ux.SomeComponent',\n\n     childEls: [\n         // 'bodyEl' is inherited\n         'innerEl'\n     ],\n\n     renderTpl: [\n         '<div id=\"{id}-bodyEl\">'\n             '<div id=\"{id}-innerEl\"></div>'\n         '</div>'\n     ],\n\n     // ...\n });\n
\n\n

The renderTpl contains both child elements and unites them in the desired markup, but\nthe childEls only contains the new child element. The applyChildEls method\ntakes care of looking up all childEls for an instance and considers childEls\nproperties on all the super classes and mixins.

\n","!type":"fn()"},"Renderable":{"prototype":{"frameCls":{"!type":"string"},"frameElNames":{"!type":"[?]"},"frameIdRegex":{"!type":"+RegExp"},"frameInfoCache":{"!type":"?","!doc":"

Cache the frame information object so as not to cause style recalculations

\n"},"frameTableTpl":{"!type":"?"},"frameTpl":{"!type":"[?]"},"afterFirstLayout":{"!type":"fn(width: ?, height: ?) -> !this"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"applyRenderSelectors":{"!type":"fn() -> !this","!doc":"

Sets references to elements inside the component. This applies renderSelectors\nas well as childEls.

\n"},"beforeRender":{"!type":"fn() -> !this"},"doApplyRenderTpl":{"!type":"fn(out: ?, values: ?) -> !this","!doc":"

Called from the selected frame generation template to insert this Component's inner structure inside the framing structure.

\n\n

When framing is used, a selected frame generation template is used as the primary template of the getElConfig instead\nof the configured renderTpl. The renderTpl is invoked by this method which is injected into the framing template.

\n"},"doAutoRender":{"!type":"fn() -> !this","!doc":"

Handles autoRender.\nFloating Components may have an ownerCt. If they are asking to be constrained, constrain them within that\nownerCt, and have their z-index managed locally. Floating Components are always rendered to document.body

\n"},"doRenderContent":{"!type":"fn(out: ?, renderData: ?) -> !this"},"doRenderFramingDockedItems":{"!type":"fn(out: ?, renderData: ?, after: ?) -> !this"},"ensureAttachedToBody":{"!type":"fn(runLayout?: bool) -> !this","!doc":"

Ensures that this component is attached to document.body. If the component was\nrendered to Ext.getDetachedBody, then it will be appended to document.body.\nAny configured position is also restored.

\n"},"finishRender":{"!type":"fn(containerIdx: number) -> !this","!doc":"

This method visits the rendered component tree in a \"top-down\" order. That is, this\ncode runs on a parent component before running on a child. This method calls the\nonRender method of each component.

\n"},"finishRenderChildren":{"!type":"fn() -> !this"},"getElConfig":{"!type":"fn() -> !this"},"getFrameInfo":{"!type":"fn() -> !this","!doc":"

On render, reads an encoded style attribute, \"filter\" from the style of this Component's element.\nThis information is memoized based upon the CSS class name of this Component's element.\nBecause child Components are rendered as textual HTML as part of the topmost Container, a dummy div is inserted\ninto the document to receive the document element's CSS class name, and therefore style attributes.

\n"},"getFrameRenderData":{"!type":"fn() -> !this"},"getFrameTpl":{"!type":"fn(table: ?) -> !this"},"getFramingInfoCls":{"!type":"fn() -> !this"},"getInsertPosition":{"!type":"fn(position: string|number|+Ext.dom.Element|+HTMLElement) -> +HTMLElement","!doc":"

This function takes the position argument passed to onRender and returns a\nDOM element that you can use in the insertBefore.

\n"},"getRenderTree":{"!type":"fn() -> !this"},"getStyleProxy":{"!type":"fn(cls: ?) -> !this","!doc":"

Returns an offscreen div with the same class name as the element this is being rendered.\nThis is because child item rendering takes place in a detached div which, being not\npart of the document, has no styling.

\n"},"initContainer":{"!type":"fn(container: ?) -> !this"},"initFrame":{"!type":"fn() -> !this"},"initFramingTpl":{"!type":"fn(table: ?) -> !this","!doc":"

Create the framingTpl from the string.\nPoke in a reference to applyRenderTpl(frameInfo, out)

\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"initRenderTpl":{"!type":"fn() -> +Ext.XTemplate","!doc":"

Initializes the renderTpl.

\n"},"onRender":{"!type":"fn(parentNode: +Ext.core.Element, containerIdx: number) -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"render":{"!type":"fn(container?: +Ext.Element|+HTMLElement|string, position?: string|number) -> !this","!doc":"

Renders the Component into the passed HTML element.

\n\n

If you are using a Container object to house this\nComponent, then do not use the render method.

\n\n

A Container's child Components are rendered by that Container's\nlayout manager when the Container is first rendered.

\n\n

If the Container is already rendered when a new child Component is added, you may need to call\nthe Container's doLayout to refresh the view which\ncauses any unrendered child Components to be rendered. This is required so that you can add\nmultiple child components if needed while only refreshing the layout once.

\n\n

When creating complex UIs, it is important to remember that sizing and positioning\nof child items is the responsibility of the Container's layout\nmanager. If you expect child items to be sized in response to user interactions, you must\nconfigure the Container with a layout manager which creates and manages the type of layout you\nhave in mind.

\n\n

Omitting the Container's layout config means that a basic\nlayout manager is used which does nothing but render child components sequentially into the\nContainer. No sizing or positioning will be performed in this situation.

\n"},"setupFramingTpl":{"!type":"fn(frameTpl: ?) -> !this","!doc":"

Inject a reference to the function which applies the render template into the framing template. The framing template\nwraps the content.

\n"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"},"updateFrame":{"!type":"fn() -> !this"},"wrapPrimaryEl":{"!type":"fn(dom: ?) -> !this"}},"!doc":"

Given a component hierarchy of this:

\n\n
 {\n     xtype: 'panel',\n     id: 'ContainerA',\n     layout: 'hbox',\n     renderTo: Ext.getBody(),\n     items: [\n         {\n             id: 'ContainerB',\n             xtype: 'container',\n             items: [\n                 { id: 'ComponentA' }\n             ]\n         }\n     ]\n }\n
\n\n

The rendering of the above proceeds roughly like this:

\n\n\n\n"},"Animate":{"prototype":{"isAnimate":{"!type":"bool"},"anim":{"!type":"fn(config: ?) -> !this","!doc":"\n\n"},"getActiveAnimation":{"!type":"fn() -> +Ext.fx.Anim|bool","!doc":"

Returns the current animation if this object has any effects actively running or queued, else returns false.

\n"},"hasActiveFx":{"!type":"fn() -> +Ext.fx.Anim|bool","!doc":"

Returns the current animation if this object has any effects actively running or queued, else returns false.

\n"},"sequenceFx":{"!type":"fn() -> ?","!doc":"

Ensures that all effects queued after sequenceFx is called on this object are run in sequence. This is the\nopposite of syncFx.

\n"},"stopAnimation":{"!type":"fn() -> +Ext.Element","!doc":"

Stops any running effects and clears this object's internal effects queue if it contains any additional effects\nthat haven't started yet.

\n"},"stopFx":{"!type":"fn() -> +Ext.Element","!doc":"

Stops any running effects and clears this object's internal effects queue if it contains any additional effects\nthat haven't started yet.

\n"},"syncFx":{"!type":"fn() -> ?","!doc":"

Ensures that all effects queued after syncFx is called on this object are run concurrently. This is the opposite\nof sequenceFx.

\n"},"animate":{"!type":"fn(config: ?) -> ?","!doc":"

Performs custom animation on this object.

\n\n

This method is applicable to both the Component class and the Sprite\nclass. It performs animated transitions of certain properties of this object over a specified timeline.

\n\n

Animating a Component

\n\n

When animating a Component, the following properties may be specified in from, to, and keyframe objects:

\n\n\n\n\n

For example, to animate a Window to a new size, ensuring that its internal layout and any shadow is correct:

\n\n
myWindow = Ext.create('Ext.window.Window', {\n    title: 'Test Component animation',\n    width: 500,\n    height: 300,\n    layout: {\n        type: 'hbox',\n        align: 'stretch'\n    },\n    items: [{\n        title: 'Left: 33%',\n        margins: '5 0 5 5',\n        flex: 1\n    }, {\n        title: 'Left: 66%',\n        margins: '5 5 5 5',\n        flex: 2\n    }]\n});\nmyWindow.show();\nmyWindow.header.el.on('click', function() {\n    myWindow.animate({\n        to: {\n            width: (myWindow.getWidth() == 500) ? 700 : 500,\n            height: (myWindow.getHeight() == 300) ? 400 : 300\n        }\n    });\n});\n
\n\n

For performance reasons, by default, the internal layout is only updated when the Window reaches its final \"to\"\nsize. If dynamic updating of the Window's child Components is required, then configure the animation with\ndynamic: true and the two child items will maintain their proportions during the animation.

\n"}},"!doc":"

This animation class is a mixin.

\n\n

Ext.util.Animate provides an API for the creation of animated transitions of properties and styles.\nThis class is used as a mixin and currently applied to Ext.Element, Ext.CompositeElement,\nExt.draw.Sprite, Ext.draw.CompositeSprite, and Ext.Component. Note that Components\nhave a limited subset of what attributes can be animated such as top, left, x, y, height, width, and\nopacity (color, paddings, and margins can not be animated).

\n\n

Animation Basics

\n\n

All animations require three things - easing, duration, and to (the final end value for each property)\nyou wish to animate. Easing and duration are defaulted values specified below.\nEasing describes how the intermediate values used during a transition will be calculated.\nEasing allows for a transition to change speed over its duration.\nYou may use the defaults for easing and duration, but you must always set a\nto property which is the end value for all animations.

\n\n

Popular element 'to' configurations are:

\n\n\n\n\n

Popular sprite 'to' configurations are:

\n\n\n\n\n

The default duration for animations is 250 (which is a 1/4 of a second). Duration is denoted in\nmilliseconds. Therefore 1 second is 1000, 1 minute would be 60000, and so on. The default easing curve\nused for all animations is 'ease'. Popular easing functions are included and can be found in Easing.

\n\n

For example, a simple animation to fade out an element with a default easing and duration:

\n\n
var p1 = Ext.get('myElementId');\n\np1.animate({\n    to: {\n        opacity: 0\n    }\n});\n
\n\n

To make this animation fade out in a tenth of a second:

\n\n
var p1 = Ext.get('myElementId');\n\np1.animate({\n   duration: 100,\n    to: {\n        opacity: 0\n    }\n});\n
\n\n

Animation Queues

\n\n

By default all animations are added to a queue which allows for animation via a chain-style API.\nFor example, the following code will queue 4 animations which occur sequentially (one right after the other):

\n\n
p1.animate({\n    to: {\n        x: 500\n    }\n}).animate({\n    to: {\n        y: 150\n    }\n}).animate({\n    to: {\n        backgroundColor: '#f00'  //red\n    }\n}).animate({\n    to: {\n        opacity: 0\n    }\n});\n
\n\n

You can change this behavior by calling the syncFx method and all\nsubsequent animations for the specified target will be run concurrently (at the same time).

\n\n
p1.syncFx();  //this will make all animations run at the same time\n\np1.animate({\n    to: {\n        x: 500\n    }\n}).animate({\n    to: {\n        y: 150\n    }\n}).animate({\n    to: {\n        backgroundColor: '#f00'  //red\n    }\n}).animate({\n    to: {\n        opacity: 0\n    }\n});\n
\n\n

This works the same as:

\n\n
p1.animate({\n    to: {\n        x: 500,\n        y: 150,\n        backgroundColor: '#f00'  //red\n        opacity: 0\n    }\n});\n
\n\n

The stopAnimation method can be used to stop any\ncurrently running animations and clear any queued animations.

\n\n

Animation Keyframes

\n\n

You can also set up complex animations with keyframes which follow the\nCSS3 Animation configuration pattern. Note rotation, translation, and scaling can only be done for sprites.\nThe previous example can be written with the following syntax:

\n\n
p1.animate({\n    duration: 1000,  //one second total\n    keyframes: {\n        25: {     //from 0 to 250ms (25%)\n            x: 0\n        },\n        50: {   //from 250ms to 500ms (50%)\n            y: 0\n        },\n        75: {  //from 500ms to 750ms (75%)\n            backgroundColor: '#f00'  //red\n        },\n        100: {  //from 750ms to 1sec\n            opacity: 0\n        }\n    }\n});\n
\n\n

Animation Events

\n\n

Each animation you create has events for beforeanimate,\nafteranimate, and lastframe.\nKeyframed animations adds an additional keyframe event which\nfires for each keyframe in your animation.

\n\n

All animations support the listeners configuration to attact functions to these events.

\n\n
startAnimate: function() {\n    var p1 = Ext.get('myElementId');\n    p1.animate({\n       duration: 100,\n        to: {\n            opacity: 0\n        },\n        listeners: {\n            beforeanimate:  function() {\n                // Execute my custom method before the animation\n                this.myBeforeAnimateFn();\n            },\n            afteranimate: function() {\n                // Execute my custom method after the animation\n                this.myAfterAnimateFn();\n            },\n            scope: this\n    });\n},\nmyBeforeAnimateFn: function() {\n  // My custom logic\n},\nmyAfterAnimateFn: function() {\n  // My custom logic\n}\n
\n\n

Due to the fact that animations run asynchronously, you can determine if an animation is currently\nrunning on any target by using the getActiveAnimation\nmethod. This method will return false if there are no active animations or return the currently\nrunning Ext.fx.Anim instance.

\n\n

In this example, we're going to wait for the current animation to finish, then stop any other\nqueued animations before we fade our element's opacity to 0:

\n\n
var curAnim = p1.getActiveAnimation();\nif (curAnim) {\n    curAnim.on('afteranimate', function() {\n        p1.stopAnimation();\n        p1.animate({\n            to: {\n                opacity: 0\n            }\n        });\n    });\n}\n
\n"},"Floating":{"prototype":{"constrain":{"!type":"bool","!doc":"

True to constrain this Components within its containing element, false to allow it to fall outside of its containing\nelement. By default this Component will be rendered to document.body. To render and constrain this Component within\nanother element specify renderTo.

\n"},"fixed":{"!type":"bool","!doc":"

Configure as true to have this Component fixed at its X, Y coordinates in the browser viewport, immune\nto scrolling the document.

\n\n

Only in browsers that support position:fixed

\n\n

IE6 and IE7, 8 and 9 quirks do not support position: fixed

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Specifies whether the floated component should be automatically focused when\nit is brought to the front.

\n"},"shadow":{"!type":"string|bool","!doc":"

Specifies whether the floating component should be given a shadow. Set to true to automatically create an\nExt.Shadow, or a string indicating the shadow's display Ext.Shadow.mode. Set to false to\ndisable the shadow.

\n"},"shadowOffset":{"!type":"number","!doc":"

Number of pixels to offset the shadow.

\n"},"center":{"!type":"fn() -> +Ext.Component","!doc":"

Center this Component in its container.

\n"},"doConstrain":{"!type":"fn(constrainTo?: string|+HTMLElement|+Ext.Element|+Ext.util.Region) -> !this","!doc":"

Moves this floating Component into a constrain region.

\n\n

By default, this Component is constrained to be within the container it was added to, or the element it was\nrendered to.

\n\n

An alternative constraint may be passed.

\n"},"fitContainer":{"!type":"fn(animate: ?) -> !this"},"initHierarchyEvents":{"!type":"fn() -> !this"},"onAfterFloatLayout":{"!type":"fn() -> !this"},"onBeforeFloatLayout":{"!type":"fn() -> !this"},"onFloatShow":{"!type":"fn() -> !this"},"onKeyDown":{"!type":"fn(e: ?) -> !this","!doc":"

Listen for TAB events and wrap round if tabbing of either end of the Floater

\n"},"onMouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

Mousedown brings to front, and programatically grabs focus unless the mousedown was on a focusable element

\n"},"registerWithOwnerCt":{"!type":"fn() -> !this"},"setActive":{"!type":"fn(active?: bool, newActive?: +Ext.Component) -> !this","!doc":"

This method is called internally by Ext.ZIndexManager to signal that a floating Component has either been\nmoved to the top of its zIndex stack, or pushed from the top of its zIndex stack.

\n\n

If a Window is superceded by another Window, deactivating it hides its shadow.

\n\n

This method also fires the activate or\ndeactivate event depending on which action occurred.

\n"},"setFloatParent":{"!type":"fn(floatParent: ?) -> !this"},"setZIndex":{"!type":"fn(index: ?) -> !this","!doc":"

z-index is managed by the zIndexManager and may be overwritten at any time.\nReturns the next z-index to be used.\nIf this is a Container, then it will have rebased any managed floating Components,\nand so the next available z-index will be approximately 10000 above that.

\n"},"syncHidden":{"!type":"fn() -> !this","!doc":"

synchronizes the hidden state of this component with the state of its hierarchy

\n"},"syncShadow":{"!type":"fn() -> !this"},"toBack":{"!type":"fn() -> +Ext.Component","!doc":"

Sends this Component to the back of (lower z-index than) any other visible windows

\n"},"toFront":{"!type":"fn(preventFocus?: bool) -> +Ext.Component","!doc":"

Brings this floating Component to the front of any other visible, floating Components managed by the same\nZIndexManager

\n\n

If this Component is modal, inserts the modal mask just below this Component in the z-index stack.

\n"}},"!doc":"

A mixin to add floating capability to a Component.

\n"},"Bindable":{"prototype":{"bindStoreListeners":{"!type":"fn(store: +Ext.data.AbstractStore) -> !this","!doc":"

Binds listeners for this component to the store. By default it will add\nanything bound by the getStoreListeners method, however it can be overridden\nin a subclass to provide any more complicated handling.

\n"},"getStore":{"!type":"fn() -> +Ext.data.AbstractStore","!doc":"

Gets the current store instance.

\n"},"onBindStore":{"!type":"fn(store: +Ext.data.AbstractStore, initial: bool) -> !this","!doc":"

Template method, it is called when a new store is bound\nto the current instance.

\n"},"onUnbindStore":{"!type":"fn(store: +Ext.data.AbstractStore, initial: bool) -> !this","!doc":"

Template method, it is called when an existing store is unbound\nfrom the current instance.

\n"},"unbindStoreListeners":{"!type":"fn(store: +Ext.data.AbstractStore) -> !this","!doc":"

Unbinds listeners from this component to the store. By default it will remove\nanything bound by the bindStoreListeners method, however it can be overridden\nin a subclass to provide any more complicated handling.

\n"},"bindStore":{"!type":"fn(store?: +Ext.data.AbstractStore|string) -> !this","!doc":"

Binds a store to this instance.

\n"},"getStoreListeners":{"!type":"fn(store: +Ext.data.Store) -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"}},"!doc":"

This class is used as a mixin.

\n\n

This class is to be used to provide basic methods for binding/unbinding stores to other\nclasses. In general it will not be used directly.

\n"},"Sortable":{"prototype":{"defaultSortDirection":{"!type":"string","!doc":"

The default sort direction to use if one is not specified.

\n"},"sortRoot":{"!type":"string","!doc":"

The property in each item that contains the data to sort.

\n"},"sorters":{"!type":"+Ext.util.MixedCollection","!doc":"

The collection of Sorters currently applied to this Store

\n"},"isSortable":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Sortable, or subclass thereof.

\n"},"decodeSorters":{"!type":"fn(sorters: [?]) -> [+Ext.util.Sorter]","!doc":"

Normalizes an array of sorter objects, ensuring that they are all Ext.util.Sorter instances

\n"},"emptyComparator":{"!type":"fn() -> !this"},"generateComparator":{"!type":"fn() -> !this","!doc":"

Returns a comparator function which compares two items and returns -1, 0, or 1 depending\non the currently defined set of sorters.

\n\n

If there are no sorters defined, it returns a function which returns 0 meaning\nthat no sorting will occur.

\n"},"getFirstSorter":{"!type":"fn() -> +Ext.util.Sorter","!doc":"

Gets the first sorter from the sorters collection, excluding\nany groupers that may be in place

\n"},"getSorters":{"!type":"fn() -> !this"},"initSortable":{"!type":"fn() -> !this","!doc":"

Performs initialization of this mixin. Component classes using this mixin should call this method during their\nown initialization.

\n"},"onBeforeSort":{"!type":"fn() -> !this"},"sort":{"!type":"fn(sorters?: string|[+Ext.util.Sorter], direction?: string) -> [+Ext.util.Sorter]","!doc":"

Sorts the data in the Store by one or more of its properties. Example usage:

\n\n
//sort by a single field\nmyStore.sort('myField', 'DESC');\n\n//sorting by multiple fields\nmyStore.sort([\n    {\n        property : 'age',\n        direction: 'ASC'\n    },\n    {\n        property : 'name',\n        direction: 'DESC'\n    }\n]);\n
\n\n

Internally, Store converts the passed arguments into an array of Ext.util.Sorter instances, and delegates\nthe actual sorting to its internal Ext.util.MixedCollection.

\n\n

When passing a single string argument to sort, Store maintains a ASC/DESC toggler per field, so this code:

\n\n
store.sort('myField');\nstore.sort('myField');\n
\n\n

Is equivalent to this code, because Store handles the toggling automatically:

\n\n
store.sort('myField', 'ASC');\nstore.sort('myField', 'DESC');\n
\n"}},"!doc":"

A mixin which allows a data component to be sorted. This is used by e.g. Ext.data.Store and Ext.data.TreeStore.

\n\n

NOTE: This mixin is mainly for internal use and most users should not need to use it directly. It\nis more likely you will want to use one of the component classes that import this mixin, such as\nExt.data.Store or Ext.data.TreeStore.

\n","createComparator":{"!type":"fn(sorters: [+Ext.util.Sorter]) -> fn()","!doc":"

Creates a single comparator function which encapsulates the passed Sorter array.

\n"}},"AbstractMixedCollection":{"!type":"fn(allowFunctions: ?, keyFn: ?)","prototype":{"!proto":"Ext.Base.prototype","allowFunctions":{"!type":"bool","!doc":"

Specify true if the addAll\nfunction should add function references to the collection. Defaults to\nfalse.

\n"},"generation":{"!type":"number","!doc":"

Mutation counter which is incremented upon add and remove.

\n"},"indexGeneration":{"!type":"number","!doc":"

Mutation counter for the index map which is synchronized with the collection's mutation counter\nwhen the index map is interrogated and found to be out of sync and needed a rebuild.

\n"},"isMixedCollection":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated MixedCollection, or subclass thereof.

\n"},"add":{"!type":"fn(index: number, o: ?, key: string, eOpts: ?)","!doc":"

Fires when an item is added to the collection.

\n"},"addAll":{"!type":"fn(objs: ?|[?]) -> !this","!doc":"

Adds all elements of an Array or an Object to the collection.

\n"},"clear":{"!type":"fn(eOpts: ?)","!doc":"

Fires when the collection is cleared.

\n"},"clone":{"!type":"fn() -> +Ext.util.MixedCollection","!doc":"

Creates a shallow copy of this collection

\n"},"collect":{"!type":"fn(property: string, root?: string, allowBlank?: bool) -> [?]","!doc":"

Collects unique values of a particular property in this MixedCollection

\n"},"contains":{"!type":"fn(o: ?) -> bool","!doc":"

Returns true if the collection contains the passed Object as an item.

\n"},"containsKey":{"!type":"fn(key: string) -> bool","!doc":"

Returns true if the collection contains the passed Object as a key.

\n"},"createValueMatcher":{"!type":"fn(value: string, anyMatch: bool, caseSensitive: bool, exactMatch: bool) -> !this","!doc":"

Returns a regular expression based on the given value and matching options. This is used internally for finding and filtering,\nand by Ext.data.Store.filter

\n"},"doInsert":{"!type":"fn(index: ?, keys: ?, objects: ?) -> !this","!doc":"

Private multi insert implementation.

\n"},"each":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Executes the specified function once for every item in the collection.\nThe function should return a boolean value.\nReturning false from the function will stop the iteration.

\n"},"eachKey":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Executes the specified function once for every key in the collection, passing each\nkey, and its associated item as the first two parameters.

\n"},"extractValues":{"!type":"fn(property: string, root?: string) -> [?]","!doc":"

Extracts all of the given property values from the items in the MC. Mainly used as a supporting method for\nfunctions like sum and collect.

\n"},"filter":{"!type":"fn(property: [+Ext.util.Filter]|string, value: string|+RegExp, anyMatch?: bool, caseSensitive?: bool) -> +Ext.util.MixedCollection","!doc":"

Filters the objects in this collection by a set of Filters, or by a single\nproperty/value pair with optional parameters for substring matching and case sensitivity. See\nFilter for an example of using Filter objects (preferred). Alternatively,\nMixedCollection can be easily filtered by property like this:

\n\n\n

//create a simple store with a few people defined\n var people = new Ext.util.MixedCollection();\n people.addAll([\n {id: 1, age: 25, name: 'Ed'},\n {id: 2, age: 24, name: 'Tommy'},\n {id: 3, age: 24, name: 'Arne'},\n {id: 4, age: 26, name: 'Aaron'}\n ]);

\n\n

//a new MixedCollection containing only the items where age == 24\n var middleAged = people.filter('age', 24);

\n"},"filterBy":{"!type":"fn(fn: fn(), scope?: ?) -> +Ext.util.MixedCollection","!doc":"

Filter by a function. Returns a new collection that has been filtered.\nThe passed function will be called with each object in the collection.\nIf the function returns true, the value is included otherwise it is filtered.

\n"},"find":{"!type":"fn() -> !this","!doc":"

Returns the first item in the collection which elicits a true return value from the passed selection function.

\n"},"findBy":{"!type":"fn(fn: fn(), scope?: ?) -> ?","!doc":"

Returns the first item in the collection which elicits a true return value from the\npassed selection function.

\n"},"findIndex":{"!type":"fn(property: string, value: string|+RegExp, start?: number, anyMatch?: bool, caseSensitive?: bool) -> number","!doc":"

Finds the index of the first matching object in this collection by a specific property/value.

\n"},"findIndexBy":{"!type":"fn(fn: fn(), scope?: ?, start?: number) -> number","!doc":"

Find the index of the first matching object in this collection by a function.\nIf the function returns true it is considered a match.

\n"},"first":{"!type":"fn() -> ?","!doc":"

Returns the first item in the collection.

\n"},"get":{"!type":"fn(key: string|number) -> ?","!doc":"

Returns the item associated with the passed key OR index.\nKey has priority over index. This is the equivalent\nof calling getByKey first, then if nothing matched calling getAt.

\n"},"getAt":{"!type":"fn(index: number) -> ?","!doc":"

Returns the item at the specified index.

\n"},"getByKey":{"!type":"fn(key: string|number) -> ?","!doc":"

Returns the item associated with the passed key.

\n"},"getCount":{"!type":"fn() -> number","!doc":"

Returns the number of items in the collection.

\n"},"getKey":{"!type":"fn(item: ?) -> ?","!doc":"

A function which will be called, passing a newly added object\nwhen the object is added without a separate id. The function\nshould yield the key by which that object will be indexed.

\n\n

If no key is yielded, then the object will be added, but it\ncannot be accessed or removed quickly. Finding it in this\ncollection for interrogation or removal will require a linear\nscan of this collection's items.

\n\n

The default implementation simply returns item.id but you can\nprovide your own implementation to return a different value as\nin the following examples:

\n\n
// normal way\nvar mc = new Ext.util.MixedCollection();\nmc.add(someEl.dom.id, someEl);\nmc.add(otherEl.dom.id, otherEl);\n//and so on\n\n// using getKey\nvar mc = new Ext.util.MixedCollection({\n    getKey: function(el){\n        return el.dom.id;\n    }\n});\nmc.add(someEl);\nmc.add(otherEl);\n
\n"},"getRange":{"!type":"fn(startIndex?: number, endIndex?: number) -> [?]","!doc":"

Returns a range of items in this collection

\n"},"hasRange":{"!type":"fn(start: ?, end: ?) -> !this","!doc":"

For API parity with Store's PageMap class. Buffered rendering checks if the Store has the range\nrequired to render. The Store delegates this question to its backing data object which may be an instance\nof its private PageMap class, or a MixedCollection.

\n"},"indexOf":{"!type":"fn(o: ?) -> number","!doc":"

Returns index within the collection of the passed Object.

\n"},"indexOfKey":{"!type":"fn(key: string) -> number","!doc":"

Returns index within the collection of the passed key.

\n"},"insert":{"!type":"fn(index: number, key: string|?|[string]|[?], o?: ?|[?]) -> ?","!doc":"

Inserts an item at the specified index in the collection. Fires the add event when complete.

\n"},"last":{"!type":"fn() -> ?","!doc":"

Returns the last item in the collection.

\n"},"rebuildIndexMap":{"!type":"fn() -> !this"},"remove":{"!type":"fn(o: ?, key?: string, eOpts: ?)","!doc":"

Fires when an item is removed from the collection.

\n"},"removeAll":{"!type":"fn(items?: [?]) -> +Ext.util.MixedCollection","!doc":"

Remove all items in the collection. Can also be used\nto remove only the items in the passed array.

\n"},"removeAt":{"!type":"fn(index: number) -> ?","!doc":"

Remove an item from a specified index in the collection. Fires the remove event when complete.

\n"},"removeAtKey":{"!type":"fn(key: string) -> ?","!doc":"

Removes an item associated with the passed key fom the collection.

\n"},"removeRange":{"!type":"fn(index: number, removeCount?: number) -> ?","!doc":"

Remove a range of items starting at a specified index in the collection.\nDoes not fire the remove event.

\n"},"replace":{"!type":"fn(key: string, old: ?, new: ?, eOpts: ?)","!doc":"

Fires when an item is replaced in the collection.

\n"},"sum":{"!type":"fn(property: string, root?: string, start?: number, end?: number) -> number","!doc":"

Collects all of the values of the given property and returns their sum

\n"},"updateKey":{"!type":"fn(oldKey: ?, newKey: ?) -> !this","!doc":"

Change the key for an existing item in the collection. If the old key\ndoes not exist this is a no-op.

\n"}}},"CSS":{"!doc":"

Utility class for manipulating CSS rules

\n","createRule":{"!type":"fn(styleSheet: +CSSStyleSheet, selector: string, property: string) -> +CSSStyleRule","!doc":"

Creates a rule.

\n"},"createStyleSheet":{"!type":"fn(cssText: string, id: string) -> +CSSStyleSheet","!doc":"

Creates a stylesheet from a text blob of rules.\nThese rules will be wrapped in a STYLE tag and appended to the HEAD of the document.

\n"},"getRule":{"!type":"fn(selector: string|[string], refreshCache: bool) -> +CSSStyleRule","!doc":"

Gets an an individual CSS rule by selector(s)

\n"},"getRules":{"!type":"fn(refreshCache: bool) -> ?","!doc":"

Gets all css rules for the document

\n"},"refreshCache":{"!type":"fn() -> ?","!doc":"

Refresh the rule cache if you have dynamically added stylesheets

\n"},"removeStyleSheet":{"!type":"fn(id: string) -> !this","!doc":"

Removes a style or link tag by id

\n"},"swapStyleSheet":{"!type":"fn(id: string, url: string) -> !this","!doc":"

Dynamically swaps an existing stylesheet reference for a new one

\n"},"updateRule":{"!type":"fn(selector: string|[string], property: string, value: string) -> bool","!doc":"

Updates a rule property

\n"}},"ClickRepeater":{"!doc":"

A wrapper class which can be applied to any element. Fires a \"click\" event while the\nmouse is pressed. The interval between firings may be specified in the config but\ndefaults to 20 milliseconds.

\n\n

Optionally, a CSS class may be applied to the element during the time it is pressed.

\n","!type":"fn(el: string|+HTMLElement|+Ext.Element, config?: Ext_util_ClickRepeater_cfg)","prototype":{"!proto":"Ext.util.Observable.prototype","accelerate":{"!type":"bool","!doc":"

True if autorepeating should start slowly and accelerate.\n\"interval\" and \"delay\" are ignored.

\n"},"delay":{"!type":"number","!doc":"

The initial delay before the repeating event begins firing.\nSimilar to an autorepeat key delay.

\n"},"el":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The element to act as a button.

\n"},"interval":{"!type":"number","!doc":"

The interval between firings of the \"click\" event (in milliseconds).

\n"},"pressedCls":{"!type":"string","!doc":"

A CSS class name to be applied to the element while pressed.

\n"},"preventDefault":{"!type":"bool","!doc":"

True to prevent the default click event

\n"},"stopDefault":{"!type":"bool","!doc":"

True to stop the default click event

\n"},"timer":{"!type":"number"},"click":{"!type":"fn(this: +Ext.util.ClickRepeater, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires on a specified interval during the time the element is pressed.

\n"},"destroy":{"!type":"fn() -> !this"},"disable":{"!type":"fn(force: ?) -> !this","!doc":"

Disables the repeater and stops events from firing.

\n"},"easeOutExpo":{"!type":"fn(t: ?, b: ?, c: ?, d: ?) -> !this"},"enable":{"!type":"fn() -> !this","!doc":"

Enables the repeater and allows events to fire.

\n"},"eventOptions":{"!type":"fn(e: ?) -> !this"},"handleDblClick":{"!type":"fn(e: ?) -> !this"},"handleMouseDown":{"!type":"fn(e: ?) -> !this"},"handleMouseOut":{"!type":"fn() -> !this"},"handleMouseReturn":{"!type":"fn() -> !this"},"handleMouseUp":{"!type":"fn(e: ?) -> !this"},"setDisabled":{"!type":"fn(disabled: bool) -> !this","!doc":"

Convenience function for setting disabled/enabled by boolean.

\n"},"mousedown":{"!type":"fn(this: +Ext.util.ClickRepeater, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse button is depressed.

\n"},"mouseup":{"!type":"fn(this: +Ext.util.ClickRepeater, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse key is released.

\n"}}},"ComponentDragger":{"!doc":"

A subclass of Ext.dd.DragTracker which handles dragging any Component.

\n\n

This is configured with a Component to be made draggable, and a config object for the Ext.dd.DragTracker\nclass.

\n\n

A delegate may be provided which may be either the element to use as the mousedown target or a Ext.DomQuery selector to activate multiple mousedown targets.

\n\n

When the Component begins to be dragged, its beginDrag method will be called if implemented.

\n\n

When the drag ends, its endDrag method will be called if implemented.

\n","!type":"fn(comp: ?, config?: Ext_util_ComponentDragger_cfg)","prototype":{"!proto":"Ext.dd.DragTracker.prototype","constrain":{"!type":"bool","!doc":"

Specify as true to constrain the Component to within the bounds of the constrainTo region.

\n"},"constrainDelegate":{"!type":"bool","!doc":"

Specify as true to constrain the drag handles within the constrainTo region.

\n"},"delegate":{"!type":"string|+Ext.Element","!doc":"

A DomQuery selector which identifies child elements within the Component's encapsulating\nElement which are the drag handles. This limits dragging to only begin when the matching elements are\nmousedowned.

\n\n

This may also be a specific child element within the Component's encapsulating element to use as the drag handle.

\n"},"calculateConstrainRegion":{"!type":"fn() -> !this"},"onDrag":{"!type":"fn(e: ?) -> !this","!doc":"

Move either the ghost Component or the target Component to its new position on drag

\n"},"onEnd":{"!type":"fn(e: ?) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when a drag operation has been completed\n(e.g. the user clicked and held the mouse down, dragged the element and then released the mouse button)

\n"},"onStart":{"!type":"fn(e: ?) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when a drag operation starts\n(e.g. the user has moved the tracked element beyond the specified tolerance)

\n"}}},"Cookies":{"!doc":"

Utility class for setting/reading values from browser cookies.\nValues can be written using the set method.\nValues can be read using the get method.\nA cookie can be invalidated on the client machine using the clear method.

\n","clear":{"!type":"fn(name: string, path?: string) -> !this","!doc":"

Removes a cookie with the provided name from the browser\nif found by setting its expiration date to sometime in the past.

\n"},"get":{"!type":"fn(name: string) -> ?","!doc":"

Retrieves cookies that are accessible by the current page. If a cookie does not exist, get() returns null. The\nfollowing example retrieves the cookie called \"valid\" and stores the String value in the variable validStatus.

\n\n
var validStatus = Ext.util.Cookies.get(\"valid\");\n
\n"},"getCookieVal":{"!type":"fn(offset: ?) -> !this"},"set":{"!type":"fn(name: string, value: ?, expires?: ?, path?: string, domain?: string, secure?: bool) -> !this","!doc":"

Creates a cookie with the specified name and value. Additional settings for the cookie may be optionally specified\n(for example: expiration, access restriction, SSL).

\n"}},"DelayedTask":{"!doc":"

The DelayedTask class provides a convenient way to \"buffer\" the execution of a method,\nperforming setTimeout where a new timeout cancels the old timeout. When called, the\ntask will wait the specified time period before executing. If durng that time period,\nthe task is called again, the original call will be cancelled. This continues so that\nthe function is only called a single time for each iteration.

\n\n

This method is especially useful for things like detecting whether a user has finished\ntyping in a text field. An example would be performing validation on a keypress. You can\nuse this class to buffer the keypress events for a certain number of milliseconds, and\nperform only if they stop for that amount of time.

\n\n

Usage

\n\n
var task = new Ext.util.DelayedTask(function(){\n    alert(Ext.getDom('myInputField').value.length);\n});\n\n// Wait 500ms before calling our function. If the user presses another key\n// during that 500ms, it will be cancelled and we'll wait another 500ms.\nExt.get('myInputField').on('keypress', function() {\n    task.delay(500);\n});\n
\n\n

Note that we are using a DelayedTask here to illustrate a point. The configuration\noption buffer for addListener/on will\nalso setup a delayed task for you to buffer events.

\n","!type":"fn(fn?: fn(), scope?: ?, args?: [?], cancelOnDelay?: bool)","prototype":{"id":{"!type":"number","!doc":"

The id of the currently pending invocation. Will be set to null if there is no\ninvocation pending.

\n"},"cancel":{"!type":"fn() -> !this","!doc":"

Cancel the last queued timeout

\n"},"delay":{"!type":"fn(newDelay: number, newFn?: fn(), newScope?: ?, newArgs?: [?]) -> !this","!doc":"

By default, cancels any pending timeout and queues a new one.

\n\n

If the cancelOnDelay parameter was specified as false in the constructor, this does not cancel and\nreschedule, but just updates the call settings, newDelay, newFn, newScope or newArgs, whichever are passed.

\n"}}},"Event":{"!doc":"

Represents single event type that an Observable object listens to.\nAll actual listeners are tracked inside here. When the event fires,\nit calls all the registered listener functions.

\n","prototype":{"isEvent":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Event, or subclass thereof.

\n"}}},"Filter":{"!doc":"

Represents a filter that can be applied to a MixedCollection. Can either simply\nfilter on a property/value pair or pass in a filter function with custom logic. Filters are always used in the\ncontext of MixedCollections, though Stores frequently create them when filtering and searching\non their records. Example usage:

\n\n
//set up a fictional MixedCollection containing a few people to filter on\nvar allNames = new Ext.util.MixedCollection();\nallNames.addAll([\n    {id: 1, name: 'Ed',    age: 25},\n    {id: 2, name: 'Jamie', age: 37},\n    {id: 3, name: 'Abe',   age: 32},\n    {id: 4, name: 'Aaron', age: 26},\n    {id: 5, name: 'David', age: 32}\n]);\n\nvar ageFilter = new Ext.util.Filter({\n    property: 'age',\n    value   : 32\n});\n\nvar longNameFilter = new Ext.util.Filter({\n    filterFn: function(item) {\n        return item.name.length > 4;\n    }\n});\n\n//a new MixedCollection with the 3 names longer than 4 characters\nvar longNames = allNames.filter(longNameFilter);\n\n//a new MixedCollection with the 2 people of age 32:\nvar youngFolk = allNames.filter(ageFilter);\n
\n","!type":"fn(config?: Ext_util_Filter_cfg)","prototype":{"!proto":"Ext.Base.prototype","anyMatch":{"!type":"bool","!doc":"

True to allow any match - no regex start/end line anchors will be added.

\n"},"caseSensitive":{"!type":"bool","!doc":"

True to make the regex case sensitive (adds 'i' switch to regex).

\n"},"exactMatch":{"!type":"bool","!doc":"

True to force exact match (^ and $ characters added to the regex). Ignored if anyMatch is true.

\n"},"filterFn":{"!type":"fn()","!doc":"

A custom filter function which is passed each item in the Ext.util.MixedCollection in turn. Should return\ntrue to accept each item or false to reject it.

\n"},"id":{"!type":"string","!doc":"

An identifier by which this Filter is indexed in a Store's filters collection

\n\n

Identified Filters may be individually removed from a Store's filter set by using Ext.data.Store.removeFilter.

\n\n

Anonymous Filters may be removed en masse by passing null to Ext.data.Store.removeFilter.

\n"},"operator":{"!type":"string","!doc":"

The operator to use to compare the property to this Filter's value

\n\n

Possible values are:\n * <\n * <=\n * =\n * >=\n * >\n * !=

\n"},"property":{"!type":"string","!doc":"

The property to filter on. Required unless a filterFn is passed

\n"},"root":{"!type":"string","!doc":"

Optional root property. This is mostly useful when filtering a Store, in which case we set the root to 'data' to\nmake the filter pull the property out of the data object of each item

\n"},"value":{"!type":"+Mixed","!doc":"

The value to filter on. Required unless a filterFn is passed.

\n"},"disabled":{"!type":"bool","!doc":"

Setting this property to true disables this individual Filter so that it no longer contributes to a Store's filter set

\n\n

When disabled, the next time the store is filtered, the Filter plays no part in filtering and records eliminated by it may rejoin the dataset.

\n"},"operatorFns":{"!type":"?"},"createFilterFn":{"!type":"fn() -> !this","!doc":"

Creates a filter function for the configured property/value/anyMatch/caseSensitive options for this Filter

\n"},"createValueMatcher":{"!type":"fn() -> !this","!doc":"

Returns a regular expression based on the given value and matching options

\n"},"getRoot":{"!type":"fn(item: ?) -> ?","!doc":"

Returns the root property of the given item, based on the configured root property

\n"},"serialize":{"!type":"fn() -> !this"},"setFilterFn":{"!type":"fn(filterFn: fn()) -> !this","!doc":"

Changes the filtering function which this Filter uses to choose items to include.

\n\n

This replaces any configured filterFn and overrides any property and {@link #cfg-value) settings.

\n"},"setValue":{"!type":"fn(value: +Mixed) -> !this","!doc":"

Changes the value that this filter tests its configured (@link #cfg-property} with.

\n"}},"createFilterFn":{"!type":"fn(filters: [+Ext.util.Filter]) -> fn()","!doc":"

Creates a single filter function which encapsulates the passed Filter array.

\n"}},"Format":{"!doc":"

This class is a centralized place for formatting functions. It includes\nfunctions to format various different types of data, such as text, dates and numeric values.

\n\n

Localization

\n\n

This class contains several options for localization. These can be set once the library has loaded,\nall calls to the functions from that point will use the locale settings that were specified.

\n\n

Options include:

\n\n\n\n\n

This class also uses the default date format defined here: Ext.Date.defaultFormat.

\n\n

Using with renderers

\n\n

There are two helper functions that return a new function that can be used in conjunction with\ngrid renderers:

\n\n
columns: [{\n    dataIndex: 'date',\n    renderer: Ext.util.Format.dateRenderer('Y-m-d')\n}, {\n    dataIndex: 'time',\n    renderer: Ext.util.Format.numberRenderer('0.000')\n}]\n
\n\n

Functions that only take a single argument can also be passed directly:

\n\n
columns: [{\n    dataIndex: 'cost',\n    renderer: Ext.util.Format.usMoney\n}, {\n    dataIndex: 'productCode',\n    renderer: Ext.util.Format.uppercase\n}]\n
\n\n

Using with XTemplates

\n\n

XTemplates can also directly use Ext.util.Format functions:

\n\n
new Ext.XTemplate([\n    'Date: {startDate:date(\"Y-m-d\")}',\n    'Cost: {cost:usMoney}'\n]);\n
\n","currencyAtEnd":{"!type":"bool","!doc":"

This may be set to true to make the currency function\nappend the currency sign to the formatted value.

\n\n

This may be overridden in a locale file.

\n"},"currencyPrecision":{"!type":"number","!doc":"

The number of decimal places that the currency function displays.

\n\n

This may be overridden in a locale file.

\n"},"currencySign":{"!type":"string","!doc":"

The currency sign that the currency function displays.

\n\n

This may be overridden in a locale file.

\n"},"decimalSeparator":{"!type":"string","!doc":"

The character that the number function uses as a decimal point.

\n\n

This may be overridden in a locale file.

\n"},"thousandSeparator":{"!type":"string","!doc":"

The character that the number function uses as a thousand separator.

\n\n

This may be overridden in a locale file.

\n"},"attributes":{"!type":"fn(attributes: ?) -> !this","!doc":"

Formats an object of name value properties as HTML element attribute values suitable for using when creating textual markup.

\n"},"capitalize":{"!type":"fn(string: string) -> string","!doc":"

Alias for Ext.String.capitalize.

\n"},"currency":{"!type":"fn(value: number|string, sign?: string, decimals?: number, end?: bool) -> string","!doc":"

Format a number as a currency.

\n"},"date":{"!type":"fn(value: string|+Date, format?: string) -> string","!doc":"

Formats the passed date using the specified format pattern.

\n"},"dateRenderer":{"!type":"fn(format: string) -> fn()","!doc":"

Returns a date rendering function that can be reused to apply a date format multiple times efficiently.

\n"},"defaultValue":{"!type":"fn(value: ?, defaultValue?: string) -> string","!doc":"

Checks a reference and converts it to the default value if it's empty.

\n"},"ellipsis":{"!type":"fn(value: string, length: number, word?: bool) -> string","!doc":"

Alias for Ext.String.ellipsis.

\n"},"escapeRegex":{"!type":"fn(str: string) -> string","!doc":"

Escapes the passed string for use in a regular expression.

\n"},"fileSize":{"!type":"fn(size: number|string) -> string","!doc":"

Simple format for a file size (xxx bytes, xxx KB, xxx MB).

\n"},"format":{"!type":"fn(string: string, values: +Mixed) -> string","!doc":"

Alias for Ext.String.format.

\n"},"htmlDecode":{"!type":"fn(value: string) -> string","!doc":"

Alias for Ext.String.htmlDecode.

\n"},"htmlEncode":{"!type":"fn(value: string) -> string","!doc":"

Alias for Ext.String.htmlEncode.

\n"},"leftPad":{"!type":"fn(string: string, size: number, character?: string) -> string","!doc":"

Alias for Ext.String.leftPad.

\n"},"lowercase":{"!type":"fn(value: string) -> string","!doc":"

Converts a string to all lower case letters.

\n"},"math":{"!type":"fn() -> fn()","!doc":"

It does simple math for use in a template, for example:

\n\n
var tpl = new Ext.Template('{value} * 10 = {value:math(\"* 10\")}');\n
\n"},"nl2br":{"!type":"fn(v: string) -> string","!doc":"

Converts newline characters to the HTML tag <br/>

\n"},"number":{"!type":"fn(v: number, format: string) -> string","!doc":"

Formats the passed number according to the passed format string.

\n\n

The number of digits after the decimal separator character specifies the number of\ndecimal places in the resulting string. The local-specific decimal character is\nused in the result.

\n\n

The presence of a thousand separator character in the format string specifies that\nthe locale-specific thousand separator (if any) is inserted separating thousand groups.

\n\n

By default, \",\" is expected as the thousand separator, and \".\" is expected as the decimal separator.

\n\n

New to Ext JS 4

\n\n

Locale-specific characters are always used in the formatted output when inserting\nthousand and decimal separators.

\n\n

The format string must specify separator characters according to US/UK conventions (\",\" as the\nthousand separator, and \".\" as the decimal separator)

\n\n

To allow specification of format strings according to local conventions for separator characters, add\nthe string /i to the end of the format string.

\n\n

examples (123456.789):

\n\n\n\n"},"numberRenderer":{"!type":"fn(format: string) -> fn()","!doc":"

Returns a number rendering function that can be reused to apply a number format multiple\ntimes efficiently.

\n"},"parseBox":{"!type":"fn(v: number|string) -> ?","!doc":"

Parses a number or string representing margin sizes into an object.\nSupports CSS-style margin declarations (e.g. 10, \"10\", \"10 10\", \"10 10 10\" and\n\"10 10 10 10\" are all valid options and would return the same result).

\n"},"plural":{"!type":"fn(value: number, singular: string, plural?: string) -> !this","!doc":"

Selectively do a plural form of a word based on a numeric value. For example, in a template,\n{commentCount:plural(\"Comment\")} would result in \"1 Comment\" if commentCount was 1 or\nwould be \"x Comments\" if the value is 0 or greater than 1.

\n"},"round":{"!type":"fn(value: number|string, precision: number) -> number","!doc":"

Rounds the passed number to the required decimal precision.

\n"},"stripScripts":{"!type":"fn(value: ?) -> string","!doc":"

Strips all script tags.

\n"},"stripTags":{"!type":"fn(value: ?) -> string","!doc":"

Strips all HTML tags.

\n"},"substr":{"!type":"fn(value: string, start: number, length: number) -> string","!doc":"

Returns a substring from within an original string.

\n"},"trim":{"!type":"fn(string: string) -> string","!doc":"

Alias for Ext.String.trim.

\n"},"undef":{"!type":"fn(value: ?) -> ?","!doc":"

Checks a reference and converts it to empty string if it is undefined.

\n"},"uppercase":{"!type":"fn(value: string) -> string","!doc":"

Converts a string to all upper case letters.

\n"},"usMoney":{"!type":"fn(value: number|string) -> string","!doc":"

Format a number as US currency.

\n"}},"Grouper":{"!doc":"

Represents a single grouper that can be applied to a Store. The grouper works\nin the same fashion as the Ext.util.Sorter.

\n","!type":"fn(config: Ext_util_Grouper_cfg)","prototype":{"!proto":"Ext.util.Sorter.prototype","isGrouper":{"!type":"bool","!doc":"

End Definitions

\n"},"getGroupString":{"!type":"fn(instance: +Ext.data.Model) -> string","!doc":"

Returns the value for grouping to be used.

\n"}}},"HashMap":{"!doc":"

Represents a collection of a set of key and value pairs. Each key in the HashMap\nmust be unique, the same key cannot exist twice. Access to items is provided via\nthe key only. Sample usage:

\n\n
var map = new Ext.util.HashMap();\nmap.add('key1', 1);\nmap.add('key2', 2);\nmap.add('key3', 3);\n\nmap.each(function(key, value, length){\n    console.log(key, value, length);\n});\n
\n\n

The HashMap is an unordered class,\nthere is no guarantee when iterating over the items that they will be in any particular\norder. If this is required, then use a Ext.util.MixedCollection.

\n","!type":"fn(config?: Ext_util_HashMap_cfg)","prototype":{"!proto":"Ext.Base.prototype","keyFn":{"!type":"fn()","!doc":"

A function that is used to retrieve a default key for a passed object.\nA default is provided that returns the id property on the object. This function is only used\nif the add method is called with a single argument.

\n"},"generation":{"!type":"number","!doc":"

Mutation counter which is incremented upon add and remove.

\n"},"add":{"!type":"fn(this: +Ext.util.HashMap, key: string, value: ?, eOpts: ?)","!doc":"

Fires when a new item is added to the hash.

\n"},"clear":{"!type":"fn(this: +Ext.util.HashMap, eOpts: ?)","!doc":"

Fires when the hash is cleared.

\n"},"clone":{"!type":"fn() -> +Ext.util.HashMap","!doc":"

Performs a shallow copy on this hash.

\n"},"contains":{"!type":"fn(value: ?) -> bool","!doc":"

Checks whether a value exists in the hash.

\n"},"containsKey":{"!type":"fn(key: string) -> bool","!doc":"

Checks whether a key exists in the hash.

\n"},"each":{"!type":"fn(fn: fn(), scope?: ?) -> +Ext.util.HashMap","!doc":"

Executes the specified function once for each item in the hash.\nReturning false from the function will cease iteration.

\n"},"findKey":{"!type":"fn(value: ?) -> ?","!doc":"

Find the key for a value.

\n"},"get":{"!type":"fn(key: string) -> ?","!doc":"

Retrieves an item with a particular key.

\n"},"getArray":{"!type":"fn(isKey: bool) -> [?]","!doc":"

Gets either the keys/values in an array from the hash.

\n"},"getCount":{"!type":"fn() -> number","!doc":"

Gets the number of items in the hash.

\n"},"getData":{"!type":"fn(key: string, value: ?) -> [?]","!doc":"

Implementation for being able to extract the key from an object if only\na single argument is passed.

\n"},"getKey":{"!type":"fn(o: ?) -> string","!doc":"

Extracts the key from an object. This is a default implementation, it may be overridden

\n"},"getKeys":{"!type":"fn() -> [?]","!doc":"

Return all of the keys in the hash.

\n"},"getValues":{"!type":"fn() -> [?]","!doc":"

Return all of the values in the hash.

\n"},"remove":{"!type":"fn(this: +Ext.util.HashMap, key: string, value: ?, eOpts: ?)","!doc":"

Fires when an item is removed from the hash.

\n"},"removeAtKey":{"!type":"fn(key: string) -> bool","!doc":"

Remove an item from the hash.

\n"},"replace":{"!type":"fn(this: +Ext.util.HashMap, key: string, value: ?, old: ?, eOpts: ?)","!doc":"

Fires when an item is replaced in the hash.

\n"}}},"History":{"!doc":"

History management component that allows you to register arbitrary tokens that signify application\nhistory state on navigation actions. You can then handle the history change event in order\nto reset your application UI to the appropriate state when the user navigates forward or backward through\nthe browser history stack.

\n\n

Initializing

\n\n

The init method of the History object must be called before using History. This sets up the internal\nstate and must be the first thing called before using History.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"fieldId":{"!type":"string","!doc":"

The id of the hidden field required for storing the current history token.

\n"},"iframeId":{"!type":"string","!doc":"

The id of the iframe required by IE to manage the history stack.

\n"},"useTopWindow":{"!type":"bool","!doc":"

True to use window.top.location.hash or false to use window.location.hash.

\n"},"add":{"!type":"fn(token: string, preventDuplicates?: bool) -> !this","!doc":"

Add a new token to the history stack. This can be any arbitrary value, although it would\ncommonly be the concatenation of a component id and another id marking the specific history\nstate of that component. Example usage:

\n\n
// Handle tab changes on a TabPanel\ntabPanel.on('tabchange', function(tabPanel, tab){\n     Ext.History.add(tabPanel.id + ':' + tab.id);\n});\n
\n"},"back":{"!type":"fn() -> !this","!doc":"

Programmatically steps back one step in browser history (equivalent to the user pressing the Back button).

\n"},"checkIFrame":{"!type":"fn() -> !this"},"doSave":{"!type":"fn() -> !this"},"forward":{"!type":"fn() -> !this","!doc":"

Programmatically steps forward one step in browser history (equivalent to the user pressing the Forward button).

\n"},"getHash":{"!type":"fn() -> !this"},"getToken":{"!type":"fn() -> string","!doc":"

Retrieves the currently-active history token.

\n"},"handleStateChange":{"!type":"fn(token: ?) -> !this"},"init":{"!type":"fn(onReady?: fn(), scope?: ?) -> !this","!doc":"

Initializes the global History instance.

\n"},"setHash":{"!type":"fn(hash: ?) -> !this"},"startUp":{"!type":"fn() -> !this"},"updateIFrame":{"!type":"fn(token: ?) -> !this"},"change":{"!type":"fn(token: string, eOpts: ?)","!doc":"

Fires when navigation back or forwards within the local page's history occurs.

\n"},"ready":{"!type":"fn(The: +Ext.util.History, eOpts: ?)","!doc":"

Fires when the Ext.util.History singleton has been initialized and is ready for use.

\n"}},"Inflector":{"!doc":"

General purpose inflector class that pluralizes, singularizes and\nordinalizes words. Sample usage:

\n\n
//turning singular words into plurals\nExt.util.Inflector.pluralize('word'); //'words'\nExt.util.Inflector.pluralize('person'); //'people'\nExt.util.Inflector.pluralize('sheep'); //'sheep'\n\n//turning plurals into singulars\nExt.util.Inflector.singularize('words'); //'word'\nExt.util.Inflector.singularize('people'); //'person'\nExt.util.Inflector.singularize('sheep'); //'sheep'\n\n//ordinalizing numbers\nExt.util.Inflector.ordinalize(11); //\"11th\"\nExt.util.Inflector.ordinalize(21); //\"21st\"\nExt.util.Inflector.ordinalize(1043); //\"1043rd\"\n
\n\n

Customization

\n\n

The Inflector comes with a default set of US English pluralization rules. These can be augmented with additional\nrules if the default rules do not meet your application's requirements, or swapped out entirely for other languages.\nHere is how we might add a rule that pluralizes \"ox\" to \"oxen\":

\n\n
Ext.util.Inflector.plural(/^(ox)$/i, \"$1en\");\n
\n\n

Each rule consists of two items - a regular expression that matches one or more rules, and a replacement string. In\nthis case, the regular expression will only match the string \"ox\", and will replace that match with \"oxen\". Here's\nhow we could add the inverse rule:

\n\n
Ext.util.Inflector.singular(/^(ox)en$/i, \"$1\");\n
\n\n

Note that the ox/oxen rules are present by default.

\n","plurals":{"!type":"[?]","!doc":"

The registered plural tuples. Each item in the array should contain two items - the first must be a regular\nexpression that matchers the singular form of a word, the second must be a String that replaces the matched\npart of the regular expression. This is managed by the plural method.

\n"},"singulars":{"!type":"[?]","!doc":"

The set of registered singular matchers. Each item in the array should contain two items - the first must be a\nregular expression that matches the plural form of a word, the second must be a String that replaces the\nmatched part of the regular expression. This is managed by the singular method.

\n"},"uncountable":{"!type":"[string]","!doc":"

The registered uncountable words

\n"},"classify":{"!type":"fn(word: string) -> string","!doc":"

Returns the correct Model name for a given string. Mostly used internally by the data\npackage

\n"},"clearPlurals":{"!type":"fn() -> !this","!doc":"

Removes all registered pluralization rules

\n"},"clearSingulars":{"!type":"fn() -> !this","!doc":"

Removes all registered singularization rules

\n"},"isTransnumeral":{"!type":"fn(word: string) -> bool","!doc":"

Returns true if the given word is transnumeral (the word is its own singular and plural form - e.g. sheep, fish)

\n"},"ordinalize":{"!type":"fn(number: number) -> string","!doc":"

Ordinalizes a given number by adding a prefix such as 'st', 'nd', 'rd' or 'th' based on the last digit of the\nnumber. 21 -> 21st, 22 -> 22nd, 23 -> 23rd, 24 -> 24th etc

\n"},"plural":{"!type":"fn(matcher: +RegExp, replacer: string) -> !this","!doc":"

Adds a new pluralization rule to the Inflector. See the intro docs for more information

\n"},"pluralize":{"!type":"fn(word: string) -> string","!doc":"

Returns the pluralized form of a word (e.g. Ext.util.Inflector.pluralize('word') returns 'words')

\n"},"singular":{"!type":"fn(matcher: +RegExp, replacer: string) -> !this","!doc":"

Adds a new singularization rule to the Inflector. See the intro docs for more information

\n"},"singularize":{"!type":"fn(word: string) -> string","!doc":"

Returns the singularized form of a word (e.g. Ext.util.Inflector.singularize('words') returns 'word')

\n"}},"KeyMap":{"!doc":"

Handles mapping key events to handling functions for an element or a Component. One KeyMap can be used for multiple\nactions.

\n\n

A KeyMap must be configured with a target as an event source which may be an Element or a Component.

\n\n

If the target is an element, then the keydown event will trigger the invocation of bindings.

\n\n

It is possible to configure the KeyMap with a custom eventName to listen for. This may be useful when the\ntarget is a Component.

\n\n

The KeyMap's event handling requires that the first parameter passed is a key event. So if the Component's event\nsignature is different, specify a processEvent configuration which accepts the event's parameters and\nreturns a key event.

\n\n

Functions specified in bindings are called with this signature : (String key, Ext.EventObject e) (if the\nmatch is a multi-key combination the callback will still be called only once). A KeyMap can also handle a string\nrepresentation of keys. By default KeyMap starts enabled.

\n\n

Usage:

\n\n
// map one key by key code\nvar map = new Ext.util.KeyMap({\n    target: \"my-element\",\n    key: 13, // or Ext.EventObject.ENTER\n    fn: myHandler,\n    scope: myObject\n});\n\n// map multiple keys to one action by string\nvar map = new Ext.util.KeyMap({\n    target: \"my-element\",\n    key: \"a\\r\\n\\t\",\n    fn: myHandler,\n    scope: myObject\n});\n\n// map multiple keys to multiple actions by strings and array of codes\nvar map = new Ext.util.KeyMap({\n    target: \"my-element\",\n    binding: [{\n        key: [10,13],\n        fn: function(){ alert(\"Return was pressed\"); }\n    }, {\n        key: \"abc\",\n        fn: function(){ alert('a, b or c was pressed'); }\n    }, {\n        key: \"\\t\",\n        ctrl:true,\n        shift:true,\n        fn: function(){ alert('Control + shift + tab was pressed.'); }\n    }]\n});\n
\n\n

Since 4.1.0, KeyMaps can bind to Components and process key-based events fired by Components.

\n\n

To bind to a Component, use the single parameter form of constructor and include the Component event name\nto listen for, and a processEvent implementation which returns the key event for further processing by\nthe KeyMap:

\n\n
var map = new Ext.util.KeyMap({\n    target: myGridView,\n    eventName: 'itemkeydown',\n    processEvent: function(view, record, node, index, event) {\n\n        // Load the event with the extra information needed by the mappings\n        event.view = view;\n        event.store = view.getStore();\n        event.record = record;\n        event.index = index;\n        return event;\n    },\n    binding: {\n        key: Ext.EventObject.DELETE,\n        fn: function(keyCode, e) {\n            e.store.remove(e.record);\n\n            // Attempt to select the record that's now in its place\n            e.view.getSelectionModel().select(e.index);\n            e.view.el.focus();\n        }\n    }\n});\n
\n","!type":"fn(config: Ext_util_KeyMap_cfg)","prototype":{"!proto":"Ext.Base.prototype","binding":{"!type":"?|[[?]]","!doc":"

Either a single object describing a handling function for s specified key (or set of keys), or\nan array of such objects.

\n"},"eventName":{"!type":"string","!doc":"

The event to listen for to pick up key events.

\n"},"ignoreInputFields":{"!type":"bool","!doc":"

Configure this as true if there are any input fields within the target, and this KeyNav\nshould not process events from input fields, (&lt;input>, &lt;textarea> and elements withcontentEditable=\"true\"`)

\n"},"processEvent":{"!type":"fn()","!doc":"

An optional event processor function which accepts the argument list provided by the\nconfigured event of the target, and returns a keyEvent for processing by the KeyMap.

\n\n

This may be useful when the target is a Component with s complex event signature, where the event is not\nthe first parameter. Extra information from the event arguments may be injected into the event for use by the handler\nfunctions before returning it.

\n"},"processEventScope":{"!type":"?","!doc":"

The scope (this context) in which the processEvent method is executed.

\n"},"target":{"!type":"+Ext.Component|+Ext.Element|+HTMLElement|string","!doc":"

The object on which to listen for the event specified by the eventName config option.

\n"},"addBinding":{"!type":"fn(binding: ?|[?]) -> !this","!doc":"

Add a new binding to this KeyMap.

\n\n

Usage:

\n\n
// Create a KeyMap\nvar map = new Ext.util.KeyMap(document, {\n    key: Ext.EventObject.ENTER,\n    fn: handleKey,\n    scope: this\n});\n\n//Add a new binding to the existing KeyMap later\nmap.addBinding({\n    key: 'abc',\n    shift: true,\n    fn: handleKey,\n    scope: this\n});\n
\n"},"checkModifiers":{"!type":"fn(binding: ?, event: +Ext.EventObject) -> bool","!doc":"

Check if the modifiers on the event match those on the binding

\n"},"destroy":{"!type":"fn(removeTarget: bool) -> !this","!doc":"

Destroys the KeyMap instance and removes all handlers.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

Disable this KeyMap

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enables this KeyMap

\n"},"handleTargetEvent":{"!type":"fn(event: +Ext.EventObject) -> !this","!doc":"

Process the event from the target.

\n"},"isEnabled":{"!type":"fn() -> bool","!doc":"

Returns true if this KeyMap is enabled

\n"},"legacyConstructor":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|+Ext.Component, binding: ?, eventName?: string) -> !this","!doc":"

Old constructor signature

\n"},"on":{"!type":"fn(key: number|[number]|?, fn: fn(), scope?: ?) -> !this","!doc":"

Shorthand for adding a single key listener.

\n"},"processBinding":{"!type":"fn(binding: ?, event: +Ext.EventObject) -> !this","!doc":"

Process a particular binding and fire the handler if necessary.

\n"},"processKeys":{"!type":"fn(keyCode: ?) -> !this"},"removeBinding":{"!type":"fn(binding: ?) -> !this","!doc":"

Remove a binding from this KeyMap.

\n"},"setDisabled":{"!type":"fn(disabled: bool) -> !this","!doc":"

Convenience function for setting disabled/enabled by boolean.

\n"},"un":{"!type":"fn(key: number|[number]|?, fn: fn(), scope?: ?) -> !this","!doc":"

Shorthand for removing a single key listener.

\n"}}},"KeyNav":{"!doc":"

Provides a convenient wrapper for normalized keyboard navigation. KeyNav allows you to bind navigation keys to\nfunction calls that will get called when the keys are pressed, providing an easy way to implement custom navigation\nschemes for any UI component.

\n\n

The following are all of the possible keys that can be implemented: enter, space, left, right, up, down, tab, esc,\npageUp, pageDown, del, backspace, home, end.

\n\n

Usage:

\n\n
var nav = new Ext.util.KeyNav({\n    target : \"my-element\",\n    left   : function(e){\n        this.moveLeft(e.ctrlKey);\n    },\n    right  : function(e){\n        this.moveRight(e.ctrlKey);\n    },\n    enter  : function(e){\n        this.save();\n    },\n\n    // Binding may be a function specifiying fn, scope and defaultAction\n    esc: {\n        fn: this.onEsc,\n        defaultEventAction: false\n    },\n    scope : this\n});\n
\n","!type":"fn(config: Ext_util_KeyNav_cfg)","prototype":{"!proto":"Ext.Base.prototype","defaultEventAction":{"!type":"string","!doc":"

The method to call on the Ext.EventObject after this KeyNav intercepts a key. Valid values are Ext.EventObject.stopEvent, Ext.EventObject.preventDefault and Ext.EventObject.stopPropagation.

\n\n

If a falsy value is specified, no method is called on the key event.

\n"},"disabled":{"!type":"bool","!doc":"

True to disable this KeyNav instance.

\n"},"eventName":{"!type":"string","!doc":"

The event to listen for to pick up key events.

\n"},"forceKeyDown":{"!type":"bool","!doc":"

Handle the keydown event instead of keypress. KeyNav automatically does this for IE since IE does not propagate\nspecial keys on keypress, but setting this to true will force other browsers to also handle keydown instead of\nkeypress.

\n"},"ignoreInputFields":{"!type":"bool","!doc":"

Configure this as true if there are any input fields within the target, and this KeyNav\nshould not process events from input fields, (&lt;input>, &lt;textarea> and elements withcontentEditable=\"true\"`)

\n"},"keyMap":{"!type":"+Ext.util.KeyMap","!doc":"

An optional pre-existing KeyMap to use to listen for key events. If not specified,\none is created.

\n"},"processEvent":{"!type":"fn()","!doc":"

An optional event processor function which accepts the argument list provided by the configured\nevent of the target, and returns a keyEvent for processing by the KeyMap.

\n\n

This may be useful when the target is a Component with s complex event signature. Extra information from\nthe event arguments may be injected into the event for use by the handler functions before returning it.

\n"},"processEventScope":{"!type":"?","!doc":"

The scope (this context) in which the processEvent method is executed.

\n"},"target":{"!type":"+Ext.Component|+Ext.Element|+HTMLElement|string","!doc":"

The object on which to listen for the event specified by the eventName config option.

\n"},"destroy":{"!type":"fn(removeEl: bool) -> !this","!doc":"

Destroy this KeyNav.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

Disables this KeyNav.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enables this KeyNav.

\n"},"getKeyEvent":{"!type":"fn(forceKeyDown: ?, configuredEventName: ?) -> string","!doc":"

Determines the event to bind to listen for keys. Defaults to the eventName value, but\nmay be overridden the forceKeyDown setting.

\n\n

The useKeyDown option on the EventManager modifies the default eventName to be keydown,\nbut a configured eventName takes priority over this.

\n"},"handleEvent":{"!type":"fn(keyCode: number, event: +Ext.EventObject, options: ?) -> !this","!doc":"

Method for filtering out the map argument

\n"},"legacyConstructor":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, config: ?) -> !this","!doc":"

Old constructor signature.

\n"},"setConfig":{"!type":"fn(config: ?) -> !this","!doc":"

Sets up a configuration for the KeyNav.

\n"},"setDisabled":{"!type":"fn(disabled: bool) -> !this","!doc":"

Convenience function for setting disabled/enabled by boolean.

\n"}},"keyOptions":{"!type":"?"}},"LruCache":{"!doc":"

A linked HashMap implementation which maintains most recently accessed\nitems at the end of the list, and purges the cache down to the most recently accessed maxSize items\nupon add.

\n","!type":"fn(config?: Ext_util_LruCache_cfg)","prototype":{"!proto":"Ext.util.HashMap.prototype","maxSize":{"!type":"number","!doc":"

The maximum size the cache is allowed to grow to before further additions cause\nremoval of the least recently used entry.

\n"},"add":{"!type":"fn(key: ?, newValue: ?) -> ?","!doc":"

Adds an item to the collection. Fires the add event when complete.

\n"},"clear":{"!type":"fn(initial: ?) -> +Ext.util.HashMap","!doc":"

Removes all items from the hash.

\n"},"clone":{"!type":"fn() -> +Ext.util.HashMap","!doc":"

Performs a shallow copy on this haLruCachesh.

\n"},"contains":{"!type":"fn()"},"containsKey":{"!type":"fn()"},"each":{"!type":"fn(fn: fn(), scope: ?, reverse?: bool) -> +Ext.util.LruCache","!doc":"

Executes the specified function once for each item in the cache.\nReturning false from the function will cease iteration.

\n\n

By default, iteration is from least recently used to most recent.

\n\n

The paramaters passed to the function are:

\n\n
\n\n"},"findKey":{"!type":"fn(value: ?) -> !this"},"get":{"!type":"fn(key: ?) -> ?","!doc":"

Retrieves an item with a particular key.

\n"},"getArray":{"!type":"fn(isKey: bool) -> [?]","!doc":"

Gets either the keys/values in an array from the hash.

\n"},"getKeys":{"!type":"fn()"},"getValues":{"!type":"fn()"},"insertBefore":{"!type":"fn(key: ?, newValue: ?, sibling: ?) -> !this"},"moveToEnd":{"!type":"fn(entry: ?) -> !this","!doc":"

private. Only used by internal methods.

\n"},"prune":{"!type":"fn() -> !this","!doc":"

Purge the least recently used entries if the maxSize has been exceeded.

\n"},"removeAtKey":{"!type":"fn(key: ?) -> bool","!doc":"

Remove an item from the hash.

\n"},"unlinkEntry":{"!type":"fn(entry: ?) -> !this","!doc":"

private. Only used by internal methods.

\n"}}},"Memento":{"!doc":"

This class manages a set of captured properties from an object. These captured properties\ncan later be restored to an object.

\n","!type":"fn(target: ?, props: string|[string])","prototype":{"!proto":"Ext.Base.prototype","data":{"!type":"?","!doc":"

The collection of captured properties.

\n"},"target":{"!type":"?","!doc":"

The default target object for capture/restore (passed to the constructor).

\n"},"capture":{"!type":"fn(props: string|[string], target: ?) -> !this","!doc":"

Captures the specified properties from the target object in this memento.

\n"},"remove":{"!type":"fn(props: string|[string]) -> !this","!doc":"

Removes the specified properties from this memento. These properties will not be\nrestored later without re-capturing their values.

\n"},"restore":{"!type":"fn(props: string|[string], clear: bool, target: ?) -> !this","!doc":"

Restores the specified properties from this memento to the target object.

\n"},"restoreAll":{"!type":"fn(clear: bool, target: ?) -> !this","!doc":"

Restores all captured properties in this memento to the target object.

\n"}}},"MixedCollection":{"!doc":"

Represents a collection of a set of key and value pairs. Each key in the MixedCollection\nmust be unique, the same key cannot exist twice. This collection is ordered, items in the\ncollection can be accessed by index or via the key. Newly added items are added to\nthe end of the collection. This class is similar to Ext.util.HashMap however it\nis heavier and provides more functionality. Sample usage:

\n\n
var coll = new Ext.util.MixedCollection();\ncoll.add('key1', 'val1');\ncoll.add('key2', 'val2');\ncoll.add('key3', 'val3');\n\nconsole.log(coll.get('key1')); // prints 'val1'\nconsole.log(coll.indexOfKey('key3')); // prints 2\n
\n\n

The MixedCollection also has support for sorting and filtering of the values in the collection.

\n\n
var coll = new Ext.util.MixedCollection();\ncoll.add('key1', 100);\ncoll.add('key2', -100);\ncoll.add('key3', 17);\ncoll.add('key4', 0);\nvar biggerThanZero = coll.filterBy(function(value){\n    return value > 0;\n});\nconsole.log(biggerThanZero.getCount()); // prints 2\n
\n","!type":"fn(config: Ext_util_MixedCollection_cfg)","prototype":{"!proto":"Ext.util.AbstractMixedCollection.prototype","allowFunctions":{"!type":"bool","!doc":"

Configure as true if the addAll function should add function references to the collection.

\n"},"_sort":{"!type":"fn(property: string, dir?: string, fn?: fn()) -> !this","!doc":"

Performs the actual sorting based on a direction and a sorting function. Internally,\nthis creates a temporary array of all items in the MixedCollection, sorts it and then writes\nthe sorted array data back into this.items and this.keys

\n"},"doSort":{"!type":"fn(sorterFn: ?) -> !this"},"findInsertionIndex":{"!type":"fn(newItem: ?, sorterFn?: fn()) -> number","!doc":"

Calculates the insertion index of the new item based upon the comparison function passed, or the current sort order.

\n"},"reorder":{"!type":"fn(mapping: ?) -> !this","!doc":"

Reorders each of the items based on a mapping from old index to new index. Internally this\njust translates into a sort. The 'sort' event is fired whenever reordering has occured.

\n"},"sortBy":{"!type":"fn(sorterFn: fn()) -> !this","!doc":"

Sorts the collection by a single sorter function

\n"},"sortByKey":{"!type":"fn(direction?: string, fn?: fn()) -> !this","!doc":"

Sorts this collection by keys.

\n"}}},"Offset":{"!type":"fn(x: ?, y: ?)","prototype":{"!proto":"Ext.Base.prototype","copy":{"!type":"fn() -> !this"},"copyFrom":{"!type":"fn(p: ?) -> !this"},"equals":{"!type":"fn(offset: ?) -> !this"},"isZero":{"!type":"fn() -> !this"},"round":{"!type":"fn(to: ?) -> !this"},"toString":{"!type":"fn() -> !this"}},"fromObject":{"!type":"fn(obj: ?) -> !this"}},"Point":{"!doc":"

Represents a 2D point with x and y properties, useful for comparison and instantiation\nfrom an event:

\n\n
var point = Ext.util.Point.fromEvent(e);\n
\n","!type":"fn(x: number, y: number)","prototype":{"!proto":"Ext.util.Region.prototype","equals":{"!type":"fn(p: +Ext.util.Point|?) -> bool","!doc":"

Compare this point and another point

\n"},"isContainedBy":{"!type":"fn(region: +Ext.util.Region|+Ext.Component|+Ext.dom.Element|+HTMLElement) -> bool","!doc":"

Determins whether this Point contained by the passed Region, Component or element.

\n"},"isWithin":{"!type":"fn(p: +Ext.util.Point|?, threshold: ?|number) -> bool","!doc":"

Whether the given point is not away from this point within the given threshold amount.

\n"},"roundedEquals":{"!type":"fn(p: +Ext.util.Point|?) -> bool","!doc":"

Compare this point with another point when the x and y values of both points are rounded. E.g:\n[100.3,199.8] will equals to [100, 200]

\n"},"toString":{"!type":"fn() -> string","!doc":"

Returns a human-eye-friendly string that represents this point,\nuseful for debugging

\n"},"translate":{"!type":"fn(x: +Ext.util.Offset|?, y: number) -> +Ext.util.Region","!doc":"

Alias for translateBy

\n"}},"fromEvent":{"!type":"fn(e: +Ext.EventObject|+Event) -> +Ext.util.Point","!doc":"

Returns a new instance of Ext.util.Point base on the pageX / pageY values of the given event

\n"}},"ProtoElement":{"!doc":"

Manages certain element-like data prior to rendering. These values are passed\non to the render process. This is currently used to manage the \"class\" and \"style\" attributes\nof a component's primary el as well as the bodyEl of panels. This allows things like\naddBodyCls in Panel to share logic with addCls in AbstractComponent.

\n","prototype":{"clsProp":{"!type":"string","!doc":"

The property name for the className on the data object passed to writeTo.

\n"},"removedProp":{"!type":"string","!doc":"

The property name for the removed classes on the data object passed to writeTo.

\n"},"styleIsText":{"!type":"bool","!doc":"

True if the style must be converted to text during writeTo. When used to\npopulate tpl data, this will be true. When used to populate Ext.DomHelper\nspecs, this will be false (the default).

\n"},"styleProp":{"!type":"string","!doc":"

The property name for the style on the data object passed to writeTo.

\n"},"addCls":{"!type":"fn(cls: string) -> +Ext.util.ProtoElement","!doc":"

Adds class to the element.

\n"},"flush":{"!type":"fn() -> !this","!doc":"

Indicates that the current state of the object has been flushed to the DOM, so we need\nto track any subsequent changes

\n"},"hasCls":{"!type":"fn(cls: string) -> bool","!doc":"

True if the element has given class.

\n"},"removeCls":{"!type":"fn(cls: string) -> +Ext.util.ProtoElement","!doc":"

Removes class from the element.

\n"},"setStyle":{"!type":"fn(prop: string|?, value?: string) -> +Ext.util.ProtoElement","!doc":"

Adds styles to the element.

\n"},"writeTo":{"!type":"fn(to: ?) -> ?","!doc":"

Writes style and class properties to given object.\nStyles will be written to styleProp and class names to clsProp.

\n"}}},"Queue":{"!doc":"

An internal Queue class.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype","add":{"!type":"fn(obj: ?) -> !this"},"clear":{"!type":"fn() -> !this","!doc":"

Removes all items from the collection.

\n"},"contains":{"!type":"fn(obj: ?) -> !this"},"getCount":{"!type":"fn() -> number","!doc":"

Returns the number of items in the collection.

\n"},"getKey":{"!type":"fn(obj: ?) -> !this"},"remove":{"!type":"fn(obj: ?) -> ?","!doc":"

Remove an item from the collection.

\n"}}},"Region":{"!doc":"

This class represents a rectangular region in X,Y space, and performs geometric\ntransformations or tests upon the region.

\n\n

This class may be used to compare the document regions occupied by elements.

\n","!type":"fn(top: number, right: number, bottom: number, left: number)","prototype":{"!proto":"Ext.Base.prototype","adjust":{"!type":"fn(top: number, right: number, bottom: number, left: number) -> +Ext.util.Region","!doc":"

Modifies the current region to be adjusted by offsets.

\n"},"constrainTo":{"!type":"fn(targetRegion: +Ext.util.Region) -> +Ext.util.Region","!doc":"

Modifies the current region to be constrained to the targetRegion.

\n"},"contains":{"!type":"fn(region: +Ext.util.Region) -> bool","!doc":"

Checks if this region completely contains the region that is passed in.

\n"},"copy":{"!type":"fn() -> +Ext.util.Region","!doc":"

Create a copy of this Region.

\n"},"copyFrom":{"!type":"fn(p: +Ext.util.Region) -> +Ext.util.Region","!doc":"

Copy the values of another Region to this Region

\n"},"equals":{"!type":"fn(region: +Ext.util.Region) -> bool","!doc":"

Check whether this region is equivalent to the given region

\n"},"getOutOfBoundOffset":{"!type":"fn(axis?: string, p?: +Ext.util.Point) -> +Ext.util.Offset","!doc":"

Get the offset amount of a point outside the region

\n"},"getOutOfBoundOffsetX":{"!type":"fn(p: number) -> number","!doc":"

Get the offset amount on the x-axis

\n"},"getOutOfBoundOffsetY":{"!type":"fn(p: number) -> number","!doc":"

Get the offset amount on the y-axis

\n"},"getSize":{"!type":"fn() -> ?","!doc":"

Get the width / height of this region

\n"},"intersect":{"!type":"fn(region: +Ext.util.Region) -> +Ext.util.Region|bool","!doc":"

Checks if this region intersects the region passed in.

\n"},"isOutOfBound":{"!type":"fn(axis?: string, p?: +Ext.util.Point|number) -> bool","!doc":"

Check whether the point / offset is out of bound

\n"},"isOutOfBoundX":{"!type":"fn(p: number) -> bool","!doc":"

Check whether the offset is out of bound in the x-axis

\n"},"isOutOfBoundY":{"!type":"fn(p: number) -> bool","!doc":"

Check whether the offset is out of bound in the y-axis

\n"},"restrict":{"!type":"fn(axis?: string, p?: +Ext.util.Point|+Ext.util.Offset|?, factor?: number) -> +Ext.util.Point|+Ext.util.Offset|?|number","!doc":"

Restrict a point within the region by a certain factor.

\n"},"restrictX":{"!type":"fn(p: number, factor?: number) -> number","!doc":"

Restrict an offset within the region by a certain factor, on the x-axis

\n"},"restrictY":{"!type":"fn(p: number, factor?: number) -> number","!doc":"

Restrict an offset within the region by a certain factor, on the y-axis

\n"},"round":{"!type":"fn() -> +Ext.util.Region","!doc":"

Round all the properties of this region

\n"},"toString":{"!type":"fn() -> string","!doc":"

Dump this to an eye-friendly string, great for debugging

\n"},"translateBy":{"!type":"fn(x: +Ext.util.Offset|?, y: number) -> +Ext.util.Region","!doc":"

Translate this region by the given offset amount

\n"},"union":{"!type":"fn(region: +Ext.util.Region) -> +Ext.util.Region","!doc":"

Returns the smallest region that contains the current AND targetRegion.

\n"}},"from":{"!type":"fn(o: ?) -> +Ext.util.Region","!doc":"

Creates a Region from a \"box\" Object which contains four numeric properties top, right, bottom and left.

\n"},"getRegion":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> +Ext.util.Region","!doc":"

Retrieves an Ext.util.Region for a particular element.

\n"}},"Sorter":{"!doc":"

Represents a single sorter that can be applied to a Store. The sorter is used\nto compare two values against each other for the purpose of ordering them. Ordering\nis achieved by specifying either:

\n\n\n\n\n

As a contrived example, we can specify a custom sorter that sorts by rank:

\n\n
Ext.define('Person', {\n    extend: 'Ext.data.Model',\n    fields: ['name', 'rank']\n});\n\nExt.create('Ext.data.Store', {\n    model: 'Person',\n    proxy: 'memory',\n    sorters: [{\n        sorterFn: function(o1, o2){\n            var getRank = function(o){\n                var name = o.get('rank');\n                if (name === 'first') {\n                    return 1;\n                } else if (name === 'second') {\n                    return 2;\n                } else {\n                    return 3;\n                }\n            },\n            rank1 = getRank(o1),\n            rank2 = getRank(o2);\n\n            if (rank1 === rank2) {\n                return 0;\n            }\n\n            return rank1 < rank2 ? -1 : 1;\n        }\n    }],\n    data: [{\n        name: 'Person1',\n        rank: 'second'\n    }, {\n        name: 'Person2',\n        rank: 'third'\n    }, {\n        name: 'Person3',\n        rank: 'first'\n    }]\n});\n
\n","!type":"fn(config: Ext_util_Sorter_cfg)","prototype":{"!proto":"Ext.Base.prototype","direction":{"!type":"string","!doc":"

The direction to sort by.

\n"},"property":{"!type":"string","!doc":"

The property to sort by. Required unless sorterFn is provided. The property is extracted from the object\ndirectly and compared for sorting using the built in comparison operators.

\n"},"root":{"!type":"string","!doc":"

Optional root property. This is mostly useful when sorting a Store, in which case we set the root to 'data' to\nmake the filter pull the property out of the data object of each item

\n"},"sorterFn":{"!type":"fn()","!doc":"

A specific sorter function to execute. Can be passed instead of property. This sorter function allows\nfor any kind of custom/complex comparisons. The sorterFn receives two arguments, the objects being compared. The\nfunction should return:

\n\n\n\n"},"transform":{"!type":"fn()","!doc":"

A function that will be run on each value before it is compared in the sorter. The function will receive a single\nargument, the value.

\n"},"createSortFunction":{"!type":"fn(sorterFn: ?) -> fn()","!doc":"

Creates and returns a function which sorts an array by the given property and direction

\n"},"defaultSorterFn":{"!type":"fn(o1: ?, o2: ?) -> !this","!doc":"

Basic default sorter function that just compares the defined property of each object

\n"},"getRoot":{"!type":"fn(item: ?) -> ?","!doc":"

Returns the root property of the given item, based on the configured root property

\n"},"serialize":{"!type":"fn() -> !this"},"setDirection":{"!type":"fn(direction: string) -> !this","!doc":"

Set the sorting direction for this sorter.

\n"},"toggle":{"!type":"fn() -> !this","!doc":"

Toggles the sorting direction for this sorter.

\n"},"updateSortFunction":{"!type":"fn(fn?: fn()) -> !this","!doc":"

Update the sort function for this sorter.

\n"}}},"TaskManager":{"!doc":"

A static Ext.util.TaskRunner instance that can be used to start and stop\narbitrary tasks. See Ext.util.TaskRunner for supported methods and task\nconfig properties.

\n\n

// Start a simple clock task that updates a div once per second\n var task = {\n run: function(){\n Ext.fly('clock').update(new Date().format('g:i:s A'));\n },\n interval: 1000 //1 second\n }

\n\n

Ext.TaskManager.start(task);

\n\n

See the start method for details about how to configure a task object.

\n","!type":"fn(interval?: number|?)","prototype":{"!proto":"Ext.util.TaskRunner.prototype"}},"TaskRunner":{"Task":{"!doc":"

Instances of this class are created by Ext.util.TaskRunner.newTask method.

\n\n

For details on config properties, see Ext.util.TaskRunner.start.

\n","prototype":{"fireOnStart":{"!type":"bool","!doc":"

Override default behavior

\n"},"stopped":{"!type":"bool","!doc":"

This flag is set to true by stop.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys this instance, stopping this task's execution.

\n"},"restart":{"!type":"fn(interval?: number) -> !this","!doc":"

Restarts this task, clearing it duration, expiration and run count.

\n"},"start":{"!type":"fn(interval?: number) -> !this","!doc":"

Starts this task if it is not already started.

\n"},"stop":{"!type":"fn() -> !this","!doc":"

Stops this task.

\n"}}},"!doc":"

Provides the ability to execute one or more arbitrary tasks in a asynchronous manner.\nGenerally, you can use the singleton Ext.TaskManager instead, but if needed,\nyou can create separate instances of TaskRunner. Any number of separate tasks can be\nstarted at any time and will run independently of each other.

\n\n

Example usage:

\n\n
 // Start a simple clock task that updates a div once per second\n var updateClock = function () {\n     Ext.fly('clock').update(new Date().format('g:i:s A'));\n }\n\n var runner = new Ext.util.TaskRunner();\n var task = runner.start({\n     run: updateClock,\n     interval: 1000\n }\n
\n\n

The equivalent using TaskManager:

\n\n
 var task = Ext.TaskManager.start({\n     run: updateClock,\n     interval: 1000\n });\n
\n\n

To end a running task:

\n\n
 task.destroy();\n
\n\n

If a task needs to be started and stopped repeated over time, you can create a\nTask instance.

\n\n
 var task = runner.newTask({\n     run: function () {\n         // useful code\n     },\n     interval: 1000\n });\n\n task.start();\n\n // ...\n\n task.stop();\n\n // ...\n\n task.start();\n
\n\n

A re-usable, one-shot task can be managed similar to the above:

\n\n
 var task = runner.newTask({\n     run: function () {\n         // useful code to run once\n     },\n     repeat: 1\n });\n\n task.start();\n\n // ...\n\n task.start();\n
\n\n

See the start method for details about how to configure a task object.

\n\n

Also see Ext.util.DelayedTask.

\n","!type":"fn(interval?: number|?)","prototype":{"!proto":"Ext.Base.prototype","fireIdleEvent":{"!type":"bool","!doc":"

This may be configured false to inhibit firing of the idle event after task invocation.

\n"},"interval":{"!type":"number","!doc":"

The timer resolution.

\n"},"firing":{"!type":"bool","!doc":"
\n"},"nextExpires":{"!type":"number"},"timerId":{"!type":"?","!doc":"

The id of the current timer.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys this instance, stopping all tasks that are currently running.

\n"},"newTask":{"!type":"fn(config: ?) -> !this","!doc":"

Creates a new Task instance. These instances can\nbe easily started and stopped.

\n"},"onTick":{"!type":"fn() -> !this","!doc":"

private

\n"},"start":{"!type":"fn(task: ?) -> ?","!doc":"

Starts a new task.

\n\n

Before each invocation, Ext injects the property taskRunCount into the task object\nso that calculations based on the repeat count can be performed.

\n\n

The returned task will contain a destroy method that can be used to destroy the\ntask and cancel further calls. This is equivalent to the stop method.

\n"},"startTimer":{"!type":"fn(timeout: ?, now: ?) -> !this","!doc":"

private

\n"},"stop":{"!type":"fn(task: ?) -> ?","!doc":"

Stops an existing running task.

\n"},"stopAll":{"!type":"fn() -> !this","!doc":"

Stops all tasks that are currently running.

\n"}}},"TextMetrics":{"!doc":"

Provides precise pixel measurements for blocks of text so that you can determine exactly how high and\nwide, in pixels, a given block of text will be. Note that when measuring text, it should be plain text and\nshould not contain any HTML, otherwise it may not be measured correctly.

\n\n

The measurement works by copying the relevant CSS styles that can affect the font related display,\nthen checking the size of an element that is auto-sized. Note that if the text is multi-lined, you must\nprovide a fixed width when doing the measurement.

\n\n

If multiple measurements are being done on the same element, you create a new instance to initialize\nto avoid the overhead of copying the styles to the element repeatedly.

\n","!type":"fn(bindTo: string|+HTMLElement|+Ext.Element, fixedWidth?: number)","prototype":{"!proto":"Ext.Base.prototype","bind":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Binds this TextMetrics instance to a new element

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy this instance

\n"},"getHeight":{"!type":"fn(text: string) -> number","!doc":"

Returns the measured height of the specified text

\n"},"getSize":{"!type":"fn(text: string) -> ?","!doc":"

Returns the size of the specified text based on the internal element's style and width properties

\n"},"getWidth":{"!type":"fn(text: string) -> number","!doc":"

Returns the measured width of the specified text

\n"},"setFixedWidth":{"!type":"fn(width: number) -> !this","!doc":"

Sets a fixed width on the internal measurement element. If the text will be multiline, you have\nto set a fixed width in order to accurately measure the text height.

\n"}},"shared":{"!type":"?"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy the TextMetrics instance created by measure.

\n"},"measure":{"!type":"fn(el: string|+HTMLElement, text: string, fixedWidth?: number) -> ?","!doc":"

Measures the size of the specified text

\n"}}},"state":{"Stateful":{"prototype":{"!proto":"Ext.Base.prototype","saveDelay":{"!type":"number","!doc":"

A buffer to be applied if many state events are fired within a short period.

\n"},"stateEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should trigger this object to\nsave its state. Defaults to none. stateEvents may be any type\nof event supported by this object, including browser or custom events\n(e.g., ['click', 'customerchange']).

\n\n\n

See stateful for an explanation of saving and\nrestoring object state.

\n\n"},"stateId":{"!type":"string","!doc":"

The unique id for this object to use for state management purposes.

\n\n

See stateful for an explanation of saving and restoring state.

\n\n"},"stateful":{"!type":"bool","!doc":"

A flag which causes the object to attempt to restore the state of\ninternal properties from a saved state on startup. The object must have\na stateId for state to be managed.

\n\n

Auto-generated ids are not guaranteed to be stable across page loads and\ncannot be relied upon to save and restore the same state for a object.

\n\n

For state saving to work, the state manager's provider must have been\nset to an implementation of Ext.state.Provider which overrides the\nset and get\nmethods to save and recall name/value pairs. A built-in implementation,\nExt.state.CookieProvider is available.

\n\n

To set the state provider for the current page:

\n\n

Ext.state.Manager.setProvider(new Ext.state.CookieProvider({\n expires: new Date(new Date().getTime()+(10006060247)), //7 days from now\n }));

\n\n

A stateful object attempts to save state when one of the events\nlisted in the stateEvents configuration fires.

\n\n

To save state, a stateful object first serializes its state by\ncalling getState.

\n\n

The Component base class implements getState to save its width and height within the state\nonly if they were initially configured, and have changed from the configured value.

\n\n

The Panel class saves its collapsed state in addition to that.

\n\n

The Grid class saves its column state in addition to its superclass state.

\n\n

If there is more application state to be save, the developer must provide an implementation which\nfirst calls the superclass method to inherit the above behaviour, and then injects new properties\ninto the returned object.

\n\n

The value yielded by getState is passed to Ext.state.Manager.set\nwhich uses the configured Ext.state.Provider to save the object\nkeyed by the stateId.

\n\n

During construction, a stateful object attempts to restore its state by calling\nExt.state.Manager.get passing the stateId

\n\n

The resulting object is passed to applyState*. The default implementation of\napplyState simply copies properties into the object, but a developer may\noverride this to support restoration of more complex application state.

\n\n

You can perform extra processing on state save and restore by attaching\nhandlers to the beforestaterestore, staterestore,\nbeforestatesave and statesave events.

\n"},"addStateEvents":{"!type":"fn(events: string|[string]) -> !this","!doc":"

Add events that will trigger the state to be saved. If the first argument is an\narray, each element of that array is the name of a state event. Otherwise, each\nargument passed to this method is the name of a state event.

\n"},"applyState":{"!type":"fn(state: ?) -> !this","!doc":"

Applies the state to the object. This should be overridden in subclasses to do\nmore complex state operations. By default it applies the state properties onto\nthe current object.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys this stateful object.

\n"},"getState":{"!type":"fn() -> ?","!doc":"

Gets the current state of the object. By default this function returns null,\nit should be overridden in subclasses to implement methods for getting the state.

\n"},"getStateId":{"!type":"fn() -> string","!doc":"

Gets the state id for this object.

\n"},"initState":{"!type":"fn() -> !this","!doc":"

Initializes the state of the object upon construction.

\n"},"onStateChange":{"!type":"fn() -> !this","!doc":"

This method is called when any of the stateEvents are fired.

\n"},"savePropToState":{"!type":"fn(propName: string, state: ?, stateName?: string) -> bool","!doc":"

Conditionally saves a single property from this object to the given state object.\nThe idea is to only save state which has changed from the initial state so that\ncurrent software settings do not override future software settings. Only those\nvalues that are user-changed state should be saved.

\n"},"savePropsToState":{"!type":"fn(propNames: string|[string], state: ?) -> ?","!doc":"

Gathers additional named properties of the instance and adds their current values\nto the passed state object.

\n"},"saveState":{"!type":"fn() -> !this","!doc":"

Saves the state of the object to the persistence store.

\n"},"beforestaterestore":{"!type":"fn(this: +Ext.state.Stateful, state: ?, eOpts: ?)","!doc":"

Fires before the state of the object is restored. Return false from an event handler to stop the restore.

\n"},"beforestatesave":{"!type":"fn(this: +Ext.state.Stateful, state: ?, eOpts: ?)","!doc":"

Fires before the state of the object is saved to the configured state provider. Return false to stop the save.

\n"},"staterestore":{"!type":"fn(this: +Ext.state.Stateful, state: ?, eOpts: ?)","!doc":"

Fires after the state of the object is restored.

\n"},"statesave":{"!type":"fn(this: +Ext.state.Stateful, state: ?, eOpts: ?)","!doc":"

Fires after the state of the object is saved to the configured state provider.

\n"}},"!doc":"

A mixin for being able to save the state of an object to an underlying\nExt.state.Provider.

\n","!type":"fn(config: Ext_state_Stateful_cfg)"},"CookieProvider":{"!doc":"

A Provider implementation which saves and retrieves state via cookies. The CookieProvider supports the usual cookie\noptions, such as:

\n\n\n\n\n

Example:

\n\n
var cp = Ext.create('Ext.state.CookieProvider', {\n    path: \"/cgi-bin/\",\n    expires: new Date(new Date().getTime()+(1000*60*60*24*30)), //30 days\n    domain: \"sencha.com\"\n});\n\nExt.state.Manager.setProvider(cp);\n
\n","!type":"fn(config?: Ext_state_CookieProvider_cfg)","prototype":{"!proto":"Ext.state.Provider.prototype","domain":{"!type":"string","!doc":"

The domain to save the cookie for. Note that you cannot specify a different domain than your page is on, but you can\nspecify a sub-domain, or simply the domain itself like 'sencha.com' to include all sub-domains if you need to access\ncookies across different sub-domains. Defaults to null which uses the same domain the page is running on including\nthe 'www' like 'www.sencha.com'.

\n"},"expires":{"!type":"+Date","!doc":"

The cookie expiration date. Defaults to 7 days from now.

\n"},"path":{"!type":"string","!doc":"

The path for which the cookie is active. Defaults to root '/' which makes it active for all pages in the site.

\n"},"secure":{"!type":"bool","!doc":"

True if the site is using SSL

\n"},"clear":{"!type":"fn(name: ?) -> !this","!doc":"

private

\n"},"clearCookie":{"!type":"fn(name: ?) -> !this","!doc":"

private

\n"},"readCookies":{"!type":"fn() -> !this","!doc":"

private

\n"},"set":{"!type":"fn(name: ?, value: ?) -> !this","!doc":"

private

\n"},"setCookie":{"!type":"fn(name: ?, value: ?) -> !this","!doc":"

private

\n"}}},"LocalStorageProvider":{"!doc":"

A Provider implementation which saves and retrieves state via the HTML5 localStorage object.\nIf the browser does not support local storage, there will be no attempt to read the state.\nBefore creating this class, a check should be made to Ext.supports.LocalStorage.

\n","!type":"fn()","prototype":{"!proto":"Ext.state.Provider.prototype","clear":{"!type":"fn(name: ?) -> !this","!doc":"

private

\n"},"getStorageObject":{"!type":"fn() -> !this"},"readLocalStorage":{"!type":"fn() -> !this"},"set":{"!type":"fn(name: ?, value: ?) -> !this","!doc":"

Sets the value for a key

\n"}}},"Manager":{"!doc":"

This is the global state manager. By default all components that are \"state aware\" check this class\nfor state information if you don't pass them a custom state provider. In order for this class\nto be useful, it must be initialized with a provider when your application initializes. Example usage:

\n\n
// in your initialization function\ninit : function(){\n   Ext.state.Manager.setProvider(new Ext.state.CookieProvider());\n}\n 
\n\n\n

This class passes on calls from components to the underlying Ext.state.Provider so that\nthere is a common interface that can be used without needing to refer to a specific provider instance\nin every component.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"clear":{"!type":"fn(name: string) -> !this","!doc":"

Clears a value from the state

\n"},"get":{"!type":"fn(name: string, defaultValue: ?) -> ?","!doc":"

Returns the current value for a key

\n"},"getProvider":{"!type":"fn() -> +Ext.state.Provider","!doc":"

Gets the currently configured state provider

\n"},"set":{"!type":"fn(name: string, value: ?) -> !this","!doc":"

Sets the value for a key

\n"},"setProvider":{"!type":"fn(stateProvider: +Ext.state.Provider) -> !this","!doc":"

Configures the default state provider for your application

\n"}},"Provider":{"!doc":"

Abstract base class for state provider implementations. The provider is responsible\nfor setting values and extracting values to/from the underlying storage source. The \nstorage source can vary and the details should be implemented in a subclass. For example\na provider could use a server side database or the browser localstorage where supported.

\n\n\n\n\n

This class provides methods for encoding and decoding typed variables including \ndates and defines the Provider interface. By default these methods put the value and the\ntype information into a delimited string that can be stored. These should be overridden in \na subclass if you want to change the format of the encoded value and subsequent decoding.

\n\n","!type":"fn(config: Ext_state_Provider_cfg)","prototype":{"!proto":"Ext.Base.prototype","prefix":{"!type":"string","!doc":"

A string to prefix to items stored in the underlying state store.\nDefaults to 'ext-'

\n"},"clear":{"!type":"fn(name: string) -> !this","!doc":"

Clears a value from the state

\n"},"decodeValue":{"!type":"fn(value: string) -> ?","!doc":"

Decodes a string previously encoded with encodeValue.

\n"},"encodeValue":{"!type":"fn(value: ?) -> string","!doc":"

Encodes a value including type information. Decode with decodeValue.

\n"},"get":{"!type":"fn(name: string, defaultValue: ?) -> ?","!doc":"

Returns the current value for a key

\n"},"set":{"!type":"fn(name: string, value: ?) -> !this","!doc":"

Sets the value for a key

\n"},"statechange":{"!type":"fn(this: +Ext.state.Provider, key: string, value: string, eOpts: ?)","!doc":"

Fires when a state change occurs.

\n"}}}},"AbstractManager":{"!doc":"

Base Manager class

\n","!type":"fn(config: Ext_AbstractManager_cfg)","prototype":{"!proto":"Ext.Base.prototype","all":{"!type":"+Ext.util.HashMap","!doc":"

Contains all of the items currently managed

\n"},"typeName":{"!type":"string","!doc":"

End Definitions

\n"},"create":{"!type":"fn(config: ?, defaultType: string) -> ?","!doc":"

Creates and returns an instance of whatever this manager manages, based on the supplied type and\nconfig object.

\n"},"each":{"!type":"fn(fn: fn(), scope: ?) -> !this","!doc":"

Executes the specified function once for each item in the collection.

\n"},"get":{"!type":"fn(id: string) -> ?","!doc":"

Returns an item by id.\nFor additional details see Ext.util.HashMap.get.

\n"},"getCount":{"!type":"fn() -> number","!doc":"

Gets the number of items in the collection.

\n"},"isRegistered":{"!type":"fn(type: string) -> bool","!doc":"

Checks if an item type is registered.

\n"},"onAvailable":{"!type":"fn(id: string, fn: fn(), scope: ?) -> !this","!doc":"

Registers a function that will be called when an item with the specified id is added to the manager.\nThis will happen on instantiation.

\n"},"register":{"!type":"fn(item: ?) -> !this","!doc":"

Registers an item to be managed

\n"},"registerType":{"!type":"fn(type: string, cls: fn()) -> !this","!doc":"

Registers a new item constructor, keyed by a type key.

\n"},"unregister":{"!type":"fn(item: ?) -> !this","!doc":"

Unregisters an item by removing it from this manager

\n"}}},"AbstractPlugin":{"!doc":"

The AbstractPlugin class is the base class from which user-implemented plugins should inherit.

\n\n

This class defines the essential API of plugins as used by Components by defining the following methods:

\n\n\n\n","!type":"fn(config?: Ext_AbstractPlugin_cfg)","prototype":{"!proto":"Ext.Base.prototype","pluginId":{"!type":"string","!doc":"

A name for the plugin that can be set at creation time to then retrieve the plugin\nthrough getPlugin method. For example:

\n\n
var grid = Ext.create('Ext.grid.Panel', {\n    plugins: [{\n        ptype: 'cellediting',\n        clicksToEdit: 2,\n        pluginId: 'cellplugin'\n    }]\n});\n\n// later on:\nvar plugin = grid.getPlugin('cellplugin');\n
\n"},"disabled":{"!type":"bool"},"isPlugin":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Plugin, or subclass thereof.

\n"},"clonePlugin":{"!type":"fn(overrideCfg?: ?) -> !this","!doc":"

Creates clone of the plugin.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

The destroy method is invoked by the owning Component at the time the Component is being destroyed.

\n\n

The supplied implementation is empty. Subclasses should perform plugin cleanup in their own implementation of\nthis method.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to true

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to false

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"getCmp":{"!type":"fn() -> +Ext.Component","!doc":"

Returns the component to which this plugin is attached.

\n"},"init":{"!type":"fn(client: +Ext.Component) -> !this","!doc":"

The init method is invoked after initComponent method has been run for the client Component.

\n\n

The supplied implementation is empty. Subclasses should perform plugin initialization, and set up bidirectional\nlinks between the plugin and its client Component in their own implementation of this method.

\n"},"onClassExtended":{"!type":"fn(cls: ?, data: ?, hooks: ?) -> !this","!doc":"

Private.\nInject a ptype property so that AbstractComponent.findPlugin(ptype) works.

\n"},"setCmp":{"!type":"fn(cmp: +Ext.Component) -> !this","!doc":"

Sets the component to which this plugin is attached.

\n"}}},"Action":{"!doc":"

An Action is a piece of reusable functionality that can be abstracted out of any particular component so that it\ncan be usefully shared among multiple components. Actions let you share handlers, configuration options and UI\nupdates across any components that support the Action interface (primarily Ext.toolbar.Toolbar,\nExt.button.Button and Ext.menu.Menu components).

\n\n

Use a single Action instance as the config object for any number of UI Components which share the same configuration. The\nAction not only supplies the configuration, but allows all Components based upon it to have a common set of methods\ncalled at once through a single call to the Action.

\n\n

Any Component that is to be configured with an Action must also support\nthe following methods:

\n\n\n\n\n

This allows the Action to control its associated Components.

\n\n

Example usage:

\n\n
// Define the shared Action.  Each Component below will have the same\n// display text and icon, and will display the same message on click.\nvar action = new Ext.Action({\n    text: 'Do something',\n    handler: function(){\n        Ext.Msg.alert('Click', 'You did something.');\n    },\n    iconCls: 'do-something',\n    itemId: 'myAction'\n});\n\nvar panel = new Ext.panel.Panel({\n    title: 'Actions',\n    width: 500,\n    height: 300,\n    tbar: [\n        // Add the Action directly to a toolbar as a menu button\n        action,\n        {\n            text: 'Action Menu',\n            // Add the Action to a menu as a text item\n            menu: [action]\n        }\n    ],\n    items: [\n        // Add the Action to the panel body as a standard button\n        new Ext.button.Button(action)\n    ],\n    renderTo: Ext.getBody()\n});\n\n// Change the text for all components using the Action\naction.setText('Something else');\n\n// Reference an Action through a container using the itemId\nvar btn = panel.getComponent('myAction');\nvar aRef = btn.baseAction;\naRef.setText('New text');\n
\n","!type":"fn(config: Ext_Action_cfg)","prototype":{"!proto":"Ext.Base.prototype","disabled":{"!type":"bool","!doc":"

True to disable all components configured by this Action, false to enable them.

\n"},"handler":{"!type":"fn()","!doc":"

The function that will be invoked by each component tied to this Action\nwhen the component's primary event is triggered.

\n"},"hidden":{"!type":"bool","!doc":"

True to hide all components configured by this Action, false to show them.

\n"},"iconCls":{"!type":"string","!doc":"

The CSS class selector that specifies a background image to be used as the header icon for\nall components configured by this Action.

\n\n

An example of specifying a custom icon class would be something like:

\n\n
// specify the property in the config for the class:\n     ...\n     iconCls: 'do-something'\n\n// css class that specifies background image to be used as the icon image:\n.do-something { background-image: url(../images/my-icon.gif) 0 6px no-repeat !important; }\n
\n"},"itemId":{"!type":"string","!doc":"

See Ext.Component.itemId.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler is executed.\nDefaults to the browser window.

\n"},"text":{"!type":"string","!doc":"

The text to set for all components configured by this Action.

\n"},"isAction":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Action, or subclass thereof.

\n"},"addComponent":{"!type":"fn(comp: ?) -> !this"},"callEach":{"!type":"fn(fnName: ?, args: ?) -> !this"},"disable":{"!type":"fn() -> !this","!doc":"

Disables all components configured by this Action.

\n"},"each":{"!type":"fn(fn: fn(), scope: ?) -> !this","!doc":"

Executes the specified function once for each Component currently tied to this Action. The function passed\nin should accept a single argument that will be an object that supports the basic Action config/method interface.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enables all components configured by this Action.

\n"},"execute":{"!type":"fn(args: ?) -> !this","!doc":"

Executes this Action manually using the handler function specified in the original config object\nor the handler function set with setHandler. Any arguments passed to this\nfunction will be passed on to the handler function.

\n"},"getIconCls":{"!type":"fn() -> !this","!doc":"

Gets the icon CSS class currently used by all components configured by this Action.

\n"},"getText":{"!type":"fn() -> !this","!doc":"

Gets the text currently displayed by all components configured by this Action.

\n"},"hide":{"!type":"fn() -> !this","!doc":"

Hides all components configured by this Action.

\n"},"isDisabled":{"!type":"fn() -> !this","!doc":"

Returns true if the components using this Action are currently disabled, else returns false.

\n"},"isHidden":{"!type":"fn() -> !this","!doc":"

Returns true if the components configured by this Action are currently hidden, else returns false.

\n"},"removeComponent":{"!type":"fn(comp: ?) -> !this"},"setDisabled":{"!type":"fn(disabled: bool) -> !this","!doc":"

Sets the disabled state of all components configured by this Action. Shortcut method\nfor enable and disable.

\n"},"setHandler":{"!type":"fn(fn: fn(), scope: ?) -> !this","!doc":"

Sets the function that will be called by each Component using this action when its primary event is triggered.

\n"},"setHidden":{"!type":"fn(hidden: bool) -> !this","!doc":"

Sets the hidden state of all components configured by this Action. Shortcut method\nfor hide and show.

\n"},"setIconCls":{"!type":"fn(cls: string) -> !this","!doc":"

Sets the icon CSS class for all components configured by this Action. The class should supply\na background image that will be used as the icon image.

\n"},"setText":{"!type":"fn(text: string) -> !this","!doc":"

Sets the text to be displayed by all components configured by this Action.

\n"},"show":{"!type":"fn() -> !this","!doc":"

Shows all components configured by this Action.

\n"}}},"Ajax":{"!doc":"

A singleton instance of an Ext.data.Connection. This class\nis used to communicate with your server side code. It can be used as follows:

\n\n
Ext.Ajax.request({\n    url: 'page.php',\n    params: {\n        id: 1\n    },\n    success: function(response){\n        var text = response.responseText;\n        // process server response here\n    }\n});\n
\n\n

Default options for all requests can be set by changing a property on the Ext.Ajax class:

\n\n
Ext.Ajax.timeout = 60000; // 60 seconds\n
\n\n

Any options specified in the request method for the Ajax request will override any\ndefaults set on the Ext.Ajax class. In the code sample below, the timeout for the\nrequest will be 60 seconds.

\n\n
Ext.Ajax.timeout = 120000; // 120 seconds\nExt.Ajax.request({\n    url: 'page.aspx',\n    timeout: 60000\n});\n
\n\n

In general, this class will be used for all Ajax requests in your application.\nThe main reason for creating a separate Ext.data.Connection is for a\nseries of requests that share common settings that are different to all other\nrequests in the application.

\n","!type":"fn(config: Ext_Ajax_cfg)","prototype":{"!proto":"Ext.data.Connection.prototype"},"autoAbort":{"!type":"bool","!doc":"

Whether a new request should abort any pending requests.

\n"},"defaultHeaders":{"!type":"?","!doc":"

An object containing request headers which are added to each request made by this object.

\n"},"disableCaching":{"!type":"bool","!doc":"

True to add a unique cache-buster param to GET requests. Defaults to true.

\n"},"extraParams":{"!type":"?","!doc":"

An object containing properties which are used as extra parameters to each request made\nby this object. Session information and other data that you need\nto pass with each request are commonly put here.

\n"},"method":{"!type":"string","!doc":"

The default HTTP method to be used for requests. Note that this is case-sensitive and\nshould be all caps (if not set but params are present will use\n\"POST\", otherwise will use \"GET\".)

\n"},"timeout":{"!type":"number","!doc":"

The timeout in milliseconds to be used for requests. Defaults to 30000.

\n"},"url":{"!type":"string","!doc":"

The default URL to be used for requests to the server.\nIf the server receives all requests through one URL, setting this once is easier than\nentering it on every request.

\n"}},"Array":{"!doc":"

A set of useful static methods to deal with arrays; provide missing methods for older browsers.

\n","clean":{"!type":"fn(array: [?]) -> [?]","!doc":"

Filter through an array and remove empty item as defined in Ext.isEmpty

\n\n

See filter

\n"},"clone":{"!type":"fn(array: [?]) -> [?]","!doc":"

Clone a flat array without referencing the previous one. Note that this is different\nfrom Ext.clone since it doesn't handle recursive cloning. It's simply a convenient, easy-to-remember method\nfor Array.prototype.slice.call(array)

\n"},"contains":{"!type":"fn(array: [?], item: ?) -> bool","!doc":"

Checks whether or not the given array contains the specified item

\n"},"difference":{"!type":"fn(arrayA: [?], arrayB: [?]) -> [?]","!doc":"

Perform a set difference A-B by subtracting all items in array B from array A.

\n"},"each":{"!type":"fn(iterable: [?]|+NodeList|?, fn: fn(), scope?: ?, reverse?: bool) -> bool","!doc":"

Iterates an array or an iterable value and invoke the given callback function for each item.

\n\n
var countries = ['Vietnam', 'Singapore', 'United States', 'Russia'];\n\nExt.Array.each(countries, function(name, index, countriesItSelf) {\n    console.log(name);\n});\n\nvar sum = function() {\n    var sum = 0;\n\n    Ext.Array.each(arguments, function(value) {\n        sum += value;\n    });\n\n    return sum;\n};\n\nsum(1, 2, 3); // returns 6\n
\n\n

The iteration can be stopped by returning false in the function callback.

\n\n
Ext.Array.each(countries, function(name, index, countriesItSelf) {\n    if (name === 'Singapore') {\n        return false; // break here\n    }\n});\n
\n\n

Ext.each is alias for Ext.Array.each

\n"},"equals":{"!type":"fn(array1: [?], array2: [?]) -> bool","!doc":"

Shallow compares the contents of 2 arrays using strict equality.

\n"},"erase":{"!type":"fn(array: [?], index: number, removeCount: number) -> [?]","!doc":"

Removes items from an array. This is functionally equivalent to the splice method\nof Array, but works around bugs in IE8's splice method and does not copy the\nremoved elements in order to return them (because very often they are ignored).

\n"},"every":{"!type":"fn(array: [?], fn: fn(), scope: ?) -> bool","!doc":"

Executes the specified function for each array element until the function returns a falsy value.\nIf such an item is found, the function will return false immediately.\nOtherwise, it will return true.

\n"},"filter":{"!type":"fn(array: [?], fn: fn(), scope: ?) -> [?]","!doc":"

Creates a new array with all of the elements of this array for which\nthe provided filtering function returns true.

\n"},"findBy":{"!type":"fn(array: [?], fn: fn(), scope?: ?) -> ?","!doc":"

Returns the first item in the array which elicits a true return value from the\npassed selection function.

\n"},"flatten":{"!type":"fn(array: [?]) -> [?]","!doc":"

Recursively flattens into 1-d Array. Injects Arrays inline.

\n"},"forEach":{"!type":"fn(array: [?], fn: fn(), scope?: ?) -> !this","!doc":"

Iterates an array and invoke the given callback function for each item. Note that this will simply\ndelegate to the native Array.prototype.forEach method if supported. It doesn't support stopping the\niteration by returning false in the callback function like each. However, performance\ncould be much better in modern browsers comparing with each

\n"},"from":{"!type":"fn(value: ?, newReference?: bool) -> [?]","!doc":"

Converts a value to an array if it's not already an array; returns:

\n\n\n\n"},"include":{"!type":"fn(array: [?], item: ?) -> !this","!doc":"

Push an item into the array only if the array doesn't contain it yet

\n"},"indexOf":{"!type":"fn(array: [?], item: ?, from?: number) -> number","!doc":"

Get the index of the provided item in the given array, a supplement for the\nmissing arrayPrototype.indexOf in Internet Explorer.

\n"},"insert":{"!type":"fn(array: [?], index: number, items: [?]) -> [?]","!doc":"

Inserts items in to an array.

\n"},"intersect":{"!type":"fn(array1: [?], array2: [?], etc: [?]) -> [?]","!doc":"

Merge multiple arrays into one with unique items that exist in all of the arrays.

\n"},"map":{"!type":"fn(array: [?], fn: fn(), scope?: ?) -> [?]","!doc":"

Creates a new array with the results of calling a provided function on every element in this array.

\n"},"max":{"!type":"fn(array: [?]|+NodeList, comparisonFn?: fn()) -> ?","!doc":"

Returns the maximum value in the Array.

\n"},"mean":{"!type":"fn(array: [?]) -> number","!doc":"

Calculates the mean of all items in the array.

\n"},"merge":{"!type":"fn(array1: [?], array2: [?], etc: [?]) -> [?]","!doc":"

Merge multiple arrays into one with unique items.

\n\n

union is alias for merge

\n"},"min":{"!type":"fn(array: [?]|+NodeList, comparisonFn?: fn()) -> ?","!doc":"

Returns the minimum value in the Array.

\n"},"pluck":{"!type":"fn(array: [?]|+NodeList, propertyName: string) -> [?]","!doc":"

Plucks the value of a property from each item in the Array. Example:

\n\n
Ext.Array.pluck(Ext.query(\"p\"), \"className\"); // [el1.className, el2.className, ..., elN.className]\n
\n"},"push":{"!type":"fn(target: [?], elements: ?) -> [?]","!doc":"

Pushes new items onto the end of an Array.

\n\n

Passed parameters may be single items, or arrays of items. If an Array is found in the argument list, all its\nelements are pushed into the end of the target Array.

\n"},"remove":{"!type":"fn(array: [?], item: ?) -> [?]","!doc":"

Removes the specified item from the array if it exists

\n"},"replace":{"!type":"fn(array: [?], index: number, removeCount: number, insert?: [?]) -> [?]","!doc":"

Replaces items in an array. This is functionally equivalent to the splice method\nof Array, but works around bugs in IE8's splice method and is often more convenient\nto call because it accepts an array of items to insert rather than use a variadic\nargument list.

\n"},"slice":{"!type":"fn(array: [?], begin: number, end: number) -> [?]","!doc":"

Returns a shallow copy of a part of an array. This is equivalent to the native\ncall \"Array.prototype.slice.call(array, begin, end)\". This is often used when \"array\"\nis \"arguments\" since the arguments object does not supply a slice method but can\nbe the context object to Array.prototype.slice.

\n"},"some":{"!type":"fn(array: [?], fn: fn(), scope: ?) -> bool","!doc":"

Executes the specified function for each array element until the function returns a truthy value.\nIf such an item is found, the function will return true immediately. Otherwise, it will return false.

\n"},"sort":{"!type":"fn(array: [?], sortFn?: fn()) -> [?]","!doc":"

Sorts the elements of an Array.\nBy default, this method sorts the elements alphabetically and ascending.

\n"},"splice":{"!type":"fn(array: [?], index: number, removeCount: number, elements: ?) -> [?]","!doc":"

Replaces items in an array. This is equivalent to the splice method of Array, but\nworks around bugs in IE8's splice method. The signature is exactly the same as the\nsplice method except that the array is the first argument. All arguments following\nremoveCount are inserted in the array at index.

\n"},"sum":{"!type":"fn(array: [?]) -> number","!doc":"

Calculates the sum of all items in the given array.

\n"},"toArray":{"!type":"fn(iterable: ?, start?: number, end?: number) -> [?]","!doc":"

Converts any iterable (numeric indices and a length property) into a true array.

\n\n
function test() {\n    var args = Ext.Array.toArray(arguments),\n        fromSecondToLastArgs = Ext.Array.toArray(arguments, 1);\n\n    alert(args.join(' '));\n    alert(fromSecondToLastArgs.join(' '));\n}\n\ntest('just', 'testing', 'here'); // alerts 'just testing here';\n                                 // alerts 'testing here';\n\nExt.Array.toArray(document.getElementsByTagName('div')); // will convert the NodeList into an array\nExt.Array.toArray('splitted'); // returns ['s', 'p', 'l', 'i', 't', 't', 'e', 'd']\nExt.Array.toArray('splitted', 0, 3); // returns ['s', 'p', 'l']\n
\n\n

Ext.toArray is alias for Ext.Array.toArray

\n"},"toMap":{"!type":"fn(array: [?], getKey?: string|fn(), scope?: ?) -> ?","!doc":"

Creates a map (object) keyed by the elements of the given array. The values in\nthe map are the index+1 of the array element. For example:

\n\n
 var map = Ext.Array.toMap(['a','b','c']);\n\n // map = { a: 1, b: 2, c: 3 };\n
\n\n

Or a key property can be specified:

\n\n
 var map = Ext.Array.toMap([\n         { name: 'a' },\n         { name: 'b' },\n         { name: 'c' }\n     ], 'name');\n\n // map = { a: 1, b: 2, c: 3 };\n
\n\n

Lastly, a key extractor can be provided:

\n\n
 var map = Ext.Array.toMap([\n         { name: 'a' },\n         { name: 'b' },\n         { name: 'c' }\n     ], function (obj) { return obj.name.toUpperCase(); });\n\n // map = { A: 1, B: 2, C: 3 };\n
\n"},"toValueMap":{"!type":"fn(array: [?], getKey?: string|fn(), scope?: ?) -> ?","!doc":"

Creates a map (object) keyed by a property of elements of the given array. The values in\nthe map are the array element. For example:

\n\n
 var map = Ext.Array.toMap(['a','b','c']);\n\n // map = { a: 'a', b: 'b', c: 'c' };\n
\n\n

Or a key property can be specified:

\n\n
 var map = Ext.Array.toMap([\n         { name: 'a' },\n         { name: 'b' },\n         { name: 'c' }\n     ], 'name');\n\n // map = { a: {name: 'a'}, b: {name: 'b'}, c: {name: 'c'} };\n
\n\n

Lastly, a key extractor can be provided:

\n\n
 var map = Ext.Array.toMap([\n         { name: 'a' },\n         { name: 'b' },\n         { name: 'c' }\n     ], function (obj) { return obj.name.toUpperCase(); });\n\n // map = { A: {name: 'a'}, B: {name: 'b'}, C: {name: 'c'} };\n
\n"},"union":{"!type":"fn(array1: [?], array2: [?], etc: [?]) -> [?]","!doc":"

Merge multiple arrays into one with unique items.

\n\n

union is alias for merge

\n"},"unique":{"!type":"fn(array: [?]) -> [?]","!doc":"

Returns a new array with unique items

\n"}},"Base":{"!doc":"

The root of all classes created with Ext.define.

\n\n

Ext.Base is the building block of all Ext classes. All classes in Ext inherit from Ext.Base.\nAll prototype and static members of this class are inherited by all other classes.

\n","prototype":{"$className":{"!type":"string"},"configMap":{"!type":"?"},"initConfigList":{"!type":"[?]"},"initConfigMap":{"!type":"?"},"isInstance":{"!type":"bool"},"self":{"!type":"+Ext.Class","!doc":"

Get the reference to the current class from which this object was instantiated. Unlike statics,\nthis.self is scope-dependent and it's meant to be used for dynamic inheritance. See statics\nfor a detailed comparison

\n\n
Ext.define('My.Cat', {\n    statics: {\n        speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n    },\n\n    constructor: function() {\n        alert(this.self.speciesName); // dependent on 'this'\n    },\n\n    clone: function() {\n        return new this.self();\n    }\n});\n\n\nExt.define('My.SnowLeopard', {\n    extend: 'My.Cat',\n    statics: {\n        speciesName: 'Snow Leopard'         // My.SnowLeopard.speciesName = 'Snow Leopard'\n    }\n});\n\nvar cat = new My.Cat();                     // alerts 'Cat'\nvar snowLeopard = new My.SnowLeopard();     // alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone));             // alerts 'My.SnowLeopard'\n
\n"},"callOverridden":{"!type":"fn(args: [?]|+Arguments) -> ?","!doc":"

Call the original method that was previously overridden with override

\n\n
Ext.define('My.Cat', {\n    constructor: function() {\n        alert(\"I'm a cat!\");\n    }\n});\n\nMy.Cat.override({\n    constructor: function() {\n        alert(\"I'm going to be a cat!\");\n\n        this.callOverridden();\n\n        alert(\"Meeeeoooowwww\");\n    }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n                          // alerts \"I'm a cat!\"\n                          // alerts \"Meeeeoooowwww\"\n
\n"},"callParent":{"!type":"fn(args: [?]|+Arguments) -> ?","!doc":"

Call the \"parent\" method of the current method. That is the method previously\noverridden by derivation or by an override (see Ext.define).

\n\n
 Ext.define('My.Base', {\n     constructor: function (x) {\n         this.x = x;\n     },\n\n     statics: {\n         method: function (x) {\n             return x;\n         }\n     }\n });\n\n Ext.define('My.Derived', {\n     extend: 'My.Base',\n\n     constructor: function () {\n         this.callParent([21]);\n     }\n });\n\n var obj = new My.Derived();\n\n alert(obj.x);  // alerts 21\n
\n\n

This can be used with an override as follows:

\n\n
 Ext.define('My.DerivedOverride', {\n     override: 'My.Derived',\n\n     constructor: function (x) {\n         this.callParent([x*2]); // calls original My.Derived constructor\n     }\n });\n\n var obj = new My.Derived();\n\n alert(obj.x);  // now alerts 42\n
\n\n

This also works with static methods.

\n\n
 Ext.define('My.Derived2', {\n     extend: 'My.Base',\n\n     statics: {\n         method: function (x) {\n             return this.callParent([x*2]); // calls My.Base.method\n         }\n     }\n });\n\n alert(My.Base.method(10);     // alerts 10\n alert(My.Derived2.method(10); // alerts 20\n
\n\n

Lastly, it also works with overridden static methods.

\n\n
 Ext.define('My.Derived2Override', {\n     override: 'My.Derived2',\n\n     statics: {\n         method: function (x) {\n             return this.callParent([x*2]); // calls My.Derived2.method\n         }\n     }\n });\n\n alert(My.Derived2.method(10); // now alerts 40\n
\n\n

To override a method and replace it and also call the superclass method, use\ncallSuper. This is often done to patch a method to fix a bug.

\n"},"callSuper":{"!type":"fn(args: [?]|+Arguments) -> ?","!doc":"

This method is used by an override to call the superclass method but bypass any\noverridden method. This is often done to \"patch\" a method that contains a bug\nbut for whatever reason cannot be fixed directly.

\n\n

Consider:

\n\n
 Ext.define('Ext.some.Class', {\n     method: function () {\n         console.log('Good');\n     }\n });\n\n Ext.define('Ext.some.DerivedClass', {\n     method: function () {\n         console.log('Bad');\n\n         // ... logic but with a bug ...\n\n         this.callParent();\n     }\n });\n
\n\n

To patch the bug in DerivedClass.method, the typical solution is to create an\noverride:

\n\n
 Ext.define('App.paches.DerivedClass', {\n     override: 'Ext.some.DerivedClass',\n\n     method: function () {\n         console.log('Fixed');\n\n         // ... logic but with bug fixed ...\n\n         this.callSuper();\n     }\n });\n
\n\n

The patch method cannot use callParent to call the superclass method since\nthat would call the overridden method containing the bug. In other words, the\nabove patch would only produce \"Fixed\" then \"Good\" in the console log, whereas,\nusing callParent would produce \"Fixed\" then \"Bad\" then \"Good\".

\n"},"configClass":{"!type":"fn() -> !this"},"destroy":{"!type":"fn() -> !this"},"getConfig":{"!type":"fn(name: ?) -> !this"},"getInitialConfig":{"!type":"fn(name?: string) -> ?|+Mixed","!doc":"

Returns the initial configuration passed to constructor when instantiating\nthis class.

\n"},"hasConfig":{"!type":"fn(config: ?) -> !this"},"initConfig":{"!type":"fn(config: ?) -> +Ext.Base","!doc":"

Initialize configuration for this class. a typical example:

\n\n
Ext.define('My.awesome.Class', {\n    // The default config\n    config: {\n        name: 'Awesome',\n        isAwesome: true\n    },\n\n    constructor: function(config) {\n        this.initConfig(config);\n    }\n});\n\nvar awesome = new My.awesome.Class({\n    name: 'Super Awesome'\n});\n\nalert(awesome.getName()); // 'Super Awesome'\n
\n"},"onConfigUpdate":{"!type":"fn(names: ?, callback: ?, scope: ?) -> !this"},"setConfig":{"!type":"fn(config: ?, applyIfNotSet: ?) -> +Ext.Base"},"statics":{"!type":"fn() -> +Ext.Class","!doc":"

Get the reference to the class from which this object was instantiated. Note that unlike self,\nthis.statics() is scope-independent and it always returns the class from which it was called, regardless of what\nthis points to during run-time

\n\n
Ext.define('My.Cat', {\n    statics: {\n        totalCreated: 0,\n        speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n    },\n\n    constructor: function() {\n        var statics = this.statics();\n\n        alert(statics.speciesName);     // always equals to 'Cat' no matter what 'this' refers to\n                                        // equivalent to: My.Cat.speciesName\n\n        alert(this.self.speciesName);   // dependent on 'this'\n\n        statics.totalCreated++;\n    },\n\n    clone: function() {\n        var cloned = new this.self;                      // dependent on 'this'\n\n        cloned.groupName = this.statics().speciesName;   // equivalent to: My.Cat.speciesName\n\n        return cloned;\n    }\n});\n\n\nExt.define('My.SnowLeopard', {\n    extend: 'My.Cat',\n\n    statics: {\n        speciesName: 'Snow Leopard'     // My.SnowLeopard.speciesName = 'Snow Leopard'\n    },\n\n    constructor: function() {\n        this.callParent();\n    }\n});\n\nvar cat = new My.Cat();                 // alerts 'Cat', then alerts 'Cat'\n\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone));         // alerts 'My.SnowLeopard'\nalert(clone.groupName);                 // alerts 'Cat'\n\nalert(My.Cat.totalCreated);             // alerts 3\n
\n"}},"$onExtended":{"!type":"[?]"},"addConfig":{"!type":"fn(config: ?) -> !this"},"addInheritableStatics":{"!type":"fn(members: ?) -> !this"},"addMember":{"!type":"fn(name: ?, member: ?) -> !this"},"addMembers":{"!type":"fn(members: ?) -> !this","!doc":"

Add methods / properties to the prototype of this class.

\n\n
Ext.define('My.awesome.Cat', {\n    constructor: function() {\n        ...\n    }\n});\n\n My.awesome.Cat.addMembers({\n     meow: function() {\n        alert('Meowww...');\n     }\n });\n\n var kitty = new My.awesome.Cat;\n kitty.meow();\n
\n"},"addStatics":{"!type":"fn(members: ?) -> +Ext.Base","!doc":"

Add / override static properties of this class.

\n\n
Ext.define('My.cool.Class', {\n    ...\n});\n\nMy.cool.Class.addStatics({\n    someProperty: 'someValue',      // My.cool.Class.someProperty = 'someValue'\n    method1: function() { ... },    // My.cool.Class.method1 = function() { ... };\n    method2: function() { ... }     // My.cool.Class.method2 = function() { ... };\n});\n
\n"},"addXtype":{"!type":"fn(xtype: ?) -> !this"},"borrow":{"!type":"fn(fromClass: +Ext.Base, members: [?]|string) -> +Ext.Base","!doc":"

Borrow another class' members to the prototype of this class.

\n\n
Ext.define('Bank', {\n    money: '$$$',\n    printMoney: function() {\n        alert('$$$$$$$');\n    }\n});\n\nExt.define('Thief', {\n    ...\n});\n\nThief.borrow(Bank, ['money', 'printMoney']);\n\nvar steve = new Thief();\n\nalert(steve.money); // alerts '$$$'\nsteve.printMoney(); // alerts '$$$$$$$'\n
\n"},"create":{"!type":"fn() -> ?","!doc":"

Create a new instance of this Class.

\n\n
Ext.define('My.cool.Class', {\n    ...\n});\n\nMy.cool.Class.create({\n    someConfig: true\n});\n
\n\n

All parameters are passed to the constructor of the class.

\n"},"createAlias":{"!type":"fn(alias: string|?, origin: string|?) -> !this","!doc":"

Create aliases for existing prototype methods. Example:

\n\n
Ext.define('My.cool.Class', {\n    method1: function() { ... },\n    method2: function() { ... }\n});\n\nvar test = new My.cool.Class();\n\nMy.cool.Class.createAlias({\n    method3: 'method1',\n    method4: 'method2'\n});\n\ntest.method3(); // test.method1()\n\nMy.cool.Class.createAlias('method5', 'method3');\n\ntest.method5(); // test.method3() -> test.method1()\n
\n"},"extend":{"!type":"fn(config: ?) -> !this"},"getName":{"!type":"fn() -> string","!doc":"

Get the current class' name in string format.

\n\n
Ext.define('My.cool.Class', {\n    constructor: function() {\n        alert(this.self.getName()); // alerts 'My.cool.Class'\n    }\n});\n\nMy.cool.Class.getName(); // 'My.cool.Class'\n
\n"},"implement":{"!type":"fn() -> !this","!doc":"

Adds members to class.

\n"},"mixin":{"!type":"fn(name: ?, mixinClass: ?) -> !this","!doc":"

Used internally by the mixins pre-processor

\n"},"onExtended":{"!type":"fn(fn: ?, scope: ?) -> !this"},"override":{"!type":"fn(members: ?) -> +Ext.Base","!doc":"

Override members of this class. Overridden methods can be invoked via\ncallParent.

\n\n
Ext.define('My.Cat', {\n    constructor: function() {\n        alert(\"I'm a cat!\");\n    }\n});\n\nMy.Cat.override({\n    constructor: function() {\n        alert(\"I'm going to be a cat!\");\n\n        this.callParent(arguments);\n\n        alert(\"Meeeeoooowwww\");\n    }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n                          // alerts \"I'm a cat!\"\n                          // alerts \"Meeeeoooowwww\"\n
\n\n

As of 4.1, direct use of this method is deprecated. Use Ext.define\ninstead:

\n\n
Ext.define('My.CatOverride', {\n    override: 'My.Cat',\n    constructor: function() {\n        alert(\"I'm going to be a cat!\");\n\n        this.callParent(arguments);\n\n        alert(\"Meeeeoooowwww\");\n    }\n});\n
\n\n

The above accomplishes the same result but can be managed by the Ext.Loader\nwhich can properly order the override and its target class and the build process\ncan determine whether the override is needed based on the required state of the\ntarget class (My.Cat).

\n"},"triggerExtended":{"!type":"fn() -> !this"}},"Class":{"!doc":"

Handles class creation throughout the framework. This is a low level factory that is used by Ext.ClassManager and generally\nshould not be used directly. If you choose to use Ext.Class you will lose out on the namespace, aliasing and depency loading\nfeatures made available by Ext.ClassManager. The only time you would use Ext.Class directly is to create an anonymous class.

\n\n

If you wish to create a class you should use Ext.define which aliases\nExt.ClassManager.create to enable namespacing and dynamic dependency resolution.

\n\n

Ext.Class is the factory and not the superclass of everything. For the base class that all Ext classes inherit\nfrom, see Ext.Base.

\n","!type":"fn(data: ?, onCreated: fn())","prototype":{"alias":{"!type":"[string]","!doc":"

List of short aliases for class names. Most useful for defining xtypes for widgets:

\n\n
Ext.define('MyApp.CoolPanel', {\n    extend: 'Ext.panel.Panel',\n    alias: ['widget.coolpanel'],\n    title: 'Yeah!'\n});\n\n// Using Ext.create\nExt.create('widget.coolpanel');\n\n// Using the shorthand for defining widgets by xtype\nExt.widget('panel', {\n    items: [\n        {xtype: 'coolpanel', html: 'Foo'},\n        {xtype: 'coolpanel', html: 'Bar'}\n    ]\n});\n
\n\n

Besides \"widget\" for xtype there are alias namespaces like \"feature\" for ftype and \"plugin\" for ptype.

\n"},"alternateClassName":{"!type":"string|[string]","!doc":"

Defines alternate names for this class. For example:

\n\n
Ext.define('Developer', {\n    alternateClassName: ['Coder', 'Hacker'],\n    code: function(msg) {\n        alert('Typing... ' + msg);\n    }\n});\n\nvar joe = Ext.create('Developer');\njoe.code('stackoverflow');\n\nvar rms = Ext.create('Hacker');\nrms.code('hack hack');\n
\n"},"config":{"!type":"?","!doc":"

List of configuration options with their default values, for which automatically\naccessor methods are generated. For example:

\n\n
Ext.define('SmartPhone', {\n     config: {\n         hasTouchScreen: false,\n         operatingSystem: 'Other',\n         price: 500\n     },\n     constructor: function(cfg) {\n         this.initConfig(cfg);\n     }\n});\n\nvar iPhone = new SmartPhone({\n     hasTouchScreen: true,\n     operatingSystem: 'iOS'\n});\n\niPhone.getPrice(); // 500;\niPhone.getOperatingSystem(); // 'iOS'\niPhone.getHasTouchScreen(); // true;\n
\n\n

NOTE for when configs are reference types, the getter and setter methods do not make copies.

\n\n

For example, when a config value is set, the reference is stored on the instance. All instances that set\nthe same reference type will share it.

\n\n

In the case of the getter, the value with either come from the prototype if the setter was never called or from\nthe instance as the last value passed to the setter.

\n\n

For some config properties, the value passed to the setter is transformed prior to being stored on the instance.

\n"},"extend":{"!type":"string","!doc":"

The parent class that this class extends. For example:

\n\n
Ext.define('Person', {\n    say: function(text) { alert(text); }\n});\n\nExt.define('Developer', {\n    extend: 'Person',\n    say: function(text) { this.callParent([\"print \"+text]); }\n});\n
\n"},"inheritableStatics":{"!type":"?","!doc":"

List of inheritable static methods for this class.\nOtherwise just like statics but subclasses inherit these methods.

\n"},"mixins":{"!type":"[string]|?","!doc":"

List of classes to mix into this class. For example:

\n\n
Ext.define('CanSing', {\n     sing: function() {\n         alert(\"I'm on the highway to hell...\")\n     }\n});\n\nExt.define('Musician', {\n     mixins: ['CanSing']\n})\n
\n\n

In this case the Musician class will get a sing method from CanSing mixin.

\n\n

But what if the Musician already has a sing method? Or you want to mix\nin two classes, both of which define sing? In such a cases it's good\nto define mixins as an object, where you assign a name to each mixin:

\n\n
Ext.define('Musician', {\n     mixins: {\n         canSing: 'CanSing'\n     },\n\n     sing: function() {\n         // delegate singing operation to mixin\n         this.mixins.canSing.sing.call(this);\n     }\n})\n
\n\n

In this case the sing method of Musician will overwrite the\nmixed in sing method. But you can access the original mixed in method\nthrough special mixins property.

\n"},"requires":{"!type":"[string]","!doc":"

List of classes that have to be loaded before instantiating this class.\nFor example:

\n\n
Ext.define('Mother', {\n    requires: ['Child'],\n    giveBirth: function() {\n        // we can be sure that child class is available.\n        return new Child();\n    }\n});\n
\n"},"singleton":{"!type":"bool","!doc":"

When set to true, the class will be instantiated as singleton. For example:

\n\n
Ext.define('Logger', {\n    singleton: true,\n    log: function(msg) {\n        console.log(msg);\n    }\n});\n\nLogger.log('Hello');\n
\n"},"statics":{"!type":"?","!doc":"

List of static methods for this class. For example:

\n\n
Ext.define('Computer', {\n     statics: {\n         factory: function(brand) {\n             // 'this' in static methods refer to the class itself\n             return new this(brand);\n         }\n     },\n\n     constructor: function() { ... }\n});\n\nvar dellComputer = Computer.factory('Dell');\n
\n"},"uses":{"!type":"[string]","!doc":"

List of optional classes to load together with this class. These aren't neccessarily loaded before\nthis class is created, but are guaranteed to be available before Ext.onReady listeners are\ninvoked. For example:

\n\n
Ext.define('Mother', {\n    uses: ['Child'],\n    giveBirth: function() {\n        // This code might, or might not work:\n        // return new Child();\n\n        // Instead use Ext.create() to load the class at the spot if not loaded already:\n        return Ext.create('Child');\n    }\n});\n
\n"},"defaultPreprocessors":{"!type":"[?]"},"preprocessors":{"!type":"?"},"create":{"!type":"fn(Class: ?, data: ?) -> !this"},"getPreprocessors":{"!type":"fn() -> !this"},"onBeforeCreated":{"!type":"fn(Class: ?, data: ?, hooks: ?) -> !this"},"process":{"!type":"fn(Class: ?, data: ?, onCreated: ?) -> !this"}},"getDefaultPreprocessors":{"!type":"fn() -> [fn()]","!doc":"

Retrieve the array stack of default pre-processors

\n"},"getPreprocessor":{"!type":"fn(name: string) -> fn()","!doc":"

Retrieve a pre-processor callback function by its name, which has been registered before

\n"},"registerPreprocessor":{"!type":"fn(name: string, fn: fn()) -> +Ext.Class","!doc":"

Register a new pre-processor to be used during the class creation process

\n"},"setDefaultPreprocessorPosition":{"!type":"fn(name: string, offset: string, relativeName: string) -> +Ext.Class","!doc":"

Insert this pre-processor at a specific position in the stack, optionally relative to\nany existing pre-processor. For example:

\n\n
Ext.Class.registerPreprocessor('debug', function(cls, data, fn) {\n    // Your code here\n\n    if (fn) {\n        fn.call(this, cls, data);\n    }\n}).setDefaultPreprocessorPosition('debug', 'last');\n
\n"},"setDefaultPreprocessors":{"!type":"fn(preprocessors: [?]) -> +Ext.Class","!doc":"

Set the default array stack of default pre-processors

\n"}},"ClassManager":{"!doc":"

Ext.ClassManager manages all classes and handles mapping from string class name to\nactual class objects throughout the whole framework. It is not generally accessed directly, rather through\nthese convenient shorthands:

\n\n\n\n\n

Basic syntax:

\n\n
Ext.define(className, properties);\n
\n\n

in which properties is an object represent a collection of properties that apply to the class. See\ncreate for more detailed instructions.

\n\n
Ext.define('Person', {\n     name: 'Unknown',\n\n     constructor: function(name) {\n         if (name) {\n             this.name = name;\n         }\n     },\n\n     eat: function(foodType) {\n         alert(\"I'm eating: \" + foodType);\n\n         return this;\n     }\n});\n\nvar aaron = new Person(\"Aaron\");\naaron.eat(\"Sandwich\"); // alert(\"I'm eating: Sandwich\");\n
\n\n

Ext.Class has a powerful set of extensible pre-processors which takes care of\neverything related to class creation, including but not limited to inheritance, mixins, configuration, statics, etc.

\n\n

Inheritance:

\n\n
Ext.define('Developer', {\n     extend: 'Person',\n\n     constructor: function(name, isGeek) {\n         this.isGeek = isGeek;\n\n         // Apply a method from the parent class' prototype\n         this.callParent([name]);\n     },\n\n     code: function(language) {\n         alert(\"I'm coding in: \" + language);\n\n         this.eat(\"Bugs\");\n\n         return this;\n     }\n});\n\nvar jacky = new Developer(\"Jacky\", true);\njacky.code(\"JavaScript\"); // alert(\"I'm coding in: JavaScript\");\n                          // alert(\"I'm eating: Bugs\");\n
\n\n

See Ext.Base.callParent for more details on calling superclass' methods

\n\n

Mixins:

\n\n
Ext.define('CanPlayGuitar', {\n     playGuitar: function() {\n        alert(\"F#...G...D...A\");\n     }\n});\n\nExt.define('CanComposeSongs', {\n     composeSongs: function() { ... }\n});\n\nExt.define('CanSing', {\n     sing: function() {\n         alert(\"I'm on the highway to hell...\")\n     }\n});\n\nExt.define('Musician', {\n     extend: 'Person',\n\n     mixins: {\n         canPlayGuitar: 'CanPlayGuitar',\n         canComposeSongs: 'CanComposeSongs',\n         canSing: 'CanSing'\n     }\n})\n\nExt.define('CoolPerson', {\n     extend: 'Person',\n\n     mixins: {\n         canPlayGuitar: 'CanPlayGuitar',\n         canSing: 'CanSing'\n     },\n\n     sing: function() {\n         alert(\"Ahem....\");\n\n         this.mixins.canSing.sing.call(this);\n\n         alert(\"[Playing guitar at the same time...]\");\n\n         this.playGuitar();\n     }\n});\n\nvar me = new CoolPerson(\"Jacky\");\n\nme.sing(); // alert(\"Ahem...\");\n           // alert(\"I'm on the highway to hell...\");\n           // alert(\"[Playing guitar at the same time...]\");\n           // alert(\"F#...G...D...A\");\n
\n\n

Config:

\n\n
Ext.define('SmartPhone', {\n     config: {\n         hasTouchScreen: false,\n         operatingSystem: 'Other',\n         price: 500\n     },\n\n     isExpensive: false,\n\n     constructor: function(config) {\n         this.initConfig(config);\n     },\n\n     applyPrice: function(price) {\n         this.isExpensive = (price > 500);\n\n         return price;\n     },\n\n     applyOperatingSystem: function(operatingSystem) {\n         if (!(/^(iOS|Android|BlackBerry)$/i).test(operatingSystem)) {\n             return 'Other';\n         }\n\n         return operatingSystem;\n     }\n});\n\nvar iPhone = new SmartPhone({\n     hasTouchScreen: true,\n     operatingSystem: 'iOS'\n});\n\niPhone.getPrice(); // 500;\niPhone.getOperatingSystem(); // 'iOS'\niPhone.getHasTouchScreen(); // true;\niPhone.hasTouchScreen(); // true\n\niPhone.isExpensive; // false;\niPhone.setPrice(600);\niPhone.getPrice(); // 600\niPhone.isExpensive; // true;\n\niPhone.setOperatingSystem('AlienOS');\niPhone.getOperatingSystem(); // 'Other'\n
\n\n

Statics:

\n\n
Ext.define('Computer', {\n     statics: {\n         factory: function(brand) {\n            // 'this' in static methods refer to the class itself\n             return new this(brand);\n         }\n     },\n\n     constructor: function() { ... }\n});\n\nvar dellComputer = Computer.factory('Dell');\n
\n\n

Also see Ext.Base.statics and Ext.Base.self for more details on accessing\nstatic properties within class methods

\n","classes":{"!type":"?","!doc":"

All classes which were defined through the ClassManager. Keys are the\nname of the classes and the values are references to the classes.

\n"},"createdListeners":{"!type":"[?]"},"defaultPostprocessors":{"!type":"[?]"},"enableNamespaceParseCache":{"!type":"bool"},"existCache":{"!type":"?"},"instantiators":{"!type":"[?]"},"maps":{"!type":"?"},"nameCreatedListeners":{"!type":"?"},"namespaceParseCache":{"!type":"?"},"namespaceRewrites":{"!type":"?"},"postprocessors":{"!type":"?"},"addNameAliasMappings":{"!type":"fn(aliases: ?) -> +Ext.ClassManager","!doc":"

Adds a batch of class name to alias mappings

\n"},"addNameAlternateMappings":{"!type":"fn(alternates: ?) -> +Ext.ClassManager"},"create":{"!type":"fn(className: ?, data: ?, createdFn: ?) -> !this","!doc":"

Defines a class.

\n"},"createNamespaces":{"!type":"fn() -> !this","!doc":"

The new Ext.ns, supports namespace rewriting

\n"},"dynInstantiate":{"!type":"fn(name: ?, args: ?) -> !this"},"get":{"!type":"fn(name: string) -> +Ext.Class","!doc":"

Retrieve a class by its name.

\n"},"getAliasesByName":{"!type":"fn(name: string) -> [?]","!doc":"

Get the aliases of a class by the class name

\n"},"getByAlias":{"!type":"fn(alias: string) -> +Ext.Class","!doc":"

Get a reference to the class by its alias.

\n"},"getClass":{"!type":"fn(object: ?) -> +Ext.Class","!doc":"

Get the class of the provided object; returns null if it's not an instance\nof any class created with Ext.define.

\n\n

getClass is usually invoked by the shorthand Ext.getClass.

\n\n
var component = new Ext.Component();\n\nExt.getClass(component); // returns Ext.Component\n
\n"},"getDisplayName":{"!type":"fn(object: ?) -> string","!doc":"

Returns the displayName property or className or object. When all else fails, returns \"Anonymous\".

\n"},"getInstantiator":{"!type":"fn(length: ?) -> !this"},"getName":{"!type":"fn(object: +Ext.Class|?) -> string","!doc":"

Get the name of the class by its reference or its instance;

\n\n

getName is usually invoked by the shorthand Ext.getClassName.

\n\n
Ext.getName(Ext.Action); // returns \"Ext.Action\"\n
\n"},"getNameByAlias":{"!type":"fn(alias: string) -> string","!doc":"

Get the name of a class by its alias.

\n"},"getNameByAlternate":{"!type":"fn(alternate: string) -> string","!doc":"

Get the name of a class by its alternate name.

\n"},"getNamesByExpression":{"!type":"fn(expression: string) -> [string]","!doc":"

Converts a string expression to an array of matching class names. An expression can either refers to class aliases\nor class names. Expressions support wildcards:

\n\n
 // returns ['Ext.window.Window']\nvar window = Ext.ClassManager.getNamesByExpression('widget.window');\n\n// returns ['widget.panel', 'widget.window', ...]\nvar allWidgets = Ext.ClassManager.getNamesByExpression('widget.*');\n\n// returns ['Ext.data.Store', 'Ext.data.ArrayProxy', ...]\nvar allData = Ext.ClassManager.getNamesByExpression('Ext.data.*');\n
\n"},"instantiate":{"!type":"fn() -> !this"},"instantiateByAlias":{"!type":"fn(alias: string, args: ?) -> ?","!doc":"

Instantiate a class by its alias.

\n\n

instantiateByAlias is usually invoked by the shorthand Ext.createByAlias.

\n\n

If Ext.Loader is enabled and the class has not been defined yet, it will\nattempt to load the class via synchronous loading.

\n\n
var window = Ext.createByAlias('widget.window', { width: 600, height: 800, ... });\n
\n"},"isCreated":{"!type":"fn(className: string) -> bool","!doc":"

Checks if a class has already been created.

\n"},"onCreated":{"!type":"fn(fn: ?, scope: ?, className: ?) -> !this"},"parseNamespace":{"!type":"fn(namespace: ?) -> !this","!doc":"

Supports namespace rewriting

\n"},"registerPostprocessor":{"!type":"fn(name: string, postprocessor: fn()) -> +Ext.ClassManager","!doc":"

Register a post-processor function.

\n"},"set":{"!type":"fn(name: string, value: ?) -> +Ext.ClassManager","!doc":"

Sets a name reference to a class.

\n"},"setAlias":{"!type":"fn(cls: +Ext.Class|string, alias: string) -> +Ext.ClassManager","!doc":"

Register the alias for a class.

\n"},"setDefaultPostprocessorPosition":{"!type":"fn(name: string, offset: string, relativeName: string) -> +Ext.ClassManager","!doc":"

Insert this post-processor at a specific position in the stack, optionally relative to\nany existing post-processor

\n"},"setDefaultPostprocessors":{"!type":"fn(postprocessors: string|[?]) -> +Ext.ClassManager","!doc":"

Set the default post processors array stack which are applied to every class.

\n"},"setNamespace":{"!type":"fn(name: string, value: ?) -> !this","!doc":"

Creates a namespace and assign the value to the created object

\n\n
Ext.ClassManager.setNamespace('MyCompany.pkg.Example', someObject);\n\nalert(MyCompany.pkg.Example === someObject); // alerts true\n
\n"},"triggerCreated":{"!type":"fn(className: ?) -> !this"},"undefine":{"!type":"fn(className: string) -> !this","!doc":"

Undefines a class defined using the #define method. Typically used\nfor unit testing where setting up and tearing down a class multiple\ntimes is required. For example:

\n\n
// define a class\nExt.define('Foo', {\n   ...\n});\n\n// run test\n\n// undefine the class\nExt.undefine('Foo');\n
\n"}},"Component":{"!doc":"

Base class for all Ext components.

\n\n

The Component base class has built-in support for basic hide/show and enable/disable and size control behavior.

\n\n

xtypes

\n\n

Every component has a specific xtype, which is its Ext-specific type name, along with methods for checking the xtype\nlike getXType and isXType. See the Component Guide for more information on xtypes and the\nComponent hierarchy.

\n\n

Finding components

\n\n

All Components are registered with the Ext.ComponentManager on construction so that they can be referenced at\nany time via Ext.getCmp, passing the id.

\n\n

Additionally the Ext.ComponentQuery provides a CSS-selectors-like way to look up components by their xtype\nand many other attributes. For example the following code will find all textfield components inside component with\nid: 'myform':

\n\n
Ext.ComponentQuery.query('#myform textfield');\n
\n\n

Extending Ext.Component

\n\n

All subclasses of Component may participate in the automated Ext component\nlifecycle of creation, rendering and destruction which is provided by the Container\nclass. Components may be added to a Container through the items config option\nat the time the Container is created, or they may be added dynamically via the\nadd method.

\n\n

All user-developed visual widgets that are required to participate in automated lifecycle and size management should\nsubclass Component.

\n\n

See the Creating new UI controls chapter in Component Guide for details on how and to either extend\nor augment Ext JS base classes to create custom Components.

\n\n

The Ext.Component class by itself

\n\n

Usually one doesn't need to instantiate the Ext.Component class. There are subclasses which implement\nspecialized use cases, covering most application needs. However it is possible to instantiate a base\nComponent, and it can be rendered to document, or handled by layouts as the child item of a Container:

\n\n
Ext.create('Ext.Component', {\n    html: 'Hello world!',\n    width: 300,\n    height: 200,\n    padding: 20,\n    style: {\n        color: '#FFFFFF',\n        backgroundColor:'#000000'\n    },\n    renderTo: Ext.getBody()\n});\n
\n\n

The Component above creates its encapsulating div upon render, and use the configured HTML as content. More complex\ninternal structure may be created using the renderTpl configuration, although to display database-derived\nmass data, it is recommended that an ExtJS data-backed Component such as a View,\nGridPanel, or TreePanel be used.

\n\n

From override Ext.layout.container.border.Region: This override provides extra, border layout specific methods for Ext.Component. The\nExt.layout.container.Border class requires this override so that the added functions\nare only included in a build when border layout is used.

\n","!type":"fn(config: +Ext.Element|string|Ext_Component_cfg)","prototype":{"!proto":"Ext.AbstractComponent.prototype","autoScroll":{"!type":"bool","!doc":"

true to use overflow:'auto' on the components layout element and show scroll bars automatically when necessary,\nfalse to clip any overflowing content.\nThis should not be combined with overflowX or overflowY.

\n"},"columnWidth":{"!type":"number|string","!doc":"

Defines the column width inside column layout.

\n\n

Can be specified as a number or as a percentage.

\n"},"constrainTo":{"!type":"+Ext.util.Region|+Ext.Element","!doc":"

A Region (or an element from which a Region measurement will be read) which is used\nto constrain the component. Only applies when the component is floating.

\n"},"constraintInsets":{"!type":"?|string","!doc":"

An object or a string (in TRBL order) specifying insets from the configured constrain region\nwithin which this component must be constrained when positioning or sizing.\nexample:

\n\n

constraintInsets: '10 10 10 10' // Constrain with 10px insets from parent

\n"},"defaultAlign":{"!type":"string","!doc":"

The default Ext.Element#getAlignToXY anchor position value for this menu\nrelative to its element of origin. Used in conjunction with showBy.

\n"},"draggable":{"!type":"bool|?","!doc":"

Specify as true to make a floating Component draggable using the Component's encapsulating element as\nthe drag handle.

\n\n

This may also be specified as a config object for the ComponentDragger which is\ninstantiated to perform dragging.

\n\n

For example to create a Component which may only be dragged around using a certain internal element as the drag\nhandle, use the delegate option:

\n\n
new Ext.Component({\n    constrain: true,\n    floating: true,\n    style: {\n        backgroundColor: '#fff',\n        border: '1px solid black'\n    },\n    html: '<h1 style=\"cursor:move\">The title</h1><p>The content</p>',\n    draggable: {\n        delegate: 'h1'\n    }\n}).show();\n
\n"},"floating":{"!type":"bool","!doc":"

Specify as true to float the Component outside of the document flow using CSS absolute positioning.

\n\n

Components such as Windows and Menus are floating by default.

\n\n

Floating Components that are programatically rendered will register\nthemselves with the global ZIndexManager

\n\n

Floating Components as child items of a Container

\n\n

A floating Component may be used as a child item of a Container. This just allows the floating Component to seek\na ZIndexManager by examining the ownerCt chain.

\n\n

When configured as floating, Components acquire, at render time, a ZIndexManager which\nmanages a stack of related floating Components. The ZIndexManager brings a single floating Component to the top\nof its stack when the Component's toFront method is called.

\n\n

The ZIndexManager is found by traversing up the ownerCt chain to find an ancestor which itself is\nfloating. This is so that descendant floating Components of floating Containers (Such as a ComboBox dropdown\nwithin a Window) can have its zIndex managed relative to any siblings, but always above that floating\nancestor Container.

\n\n

If no floating ancestor is found, a floating Component registers itself with the default ZIndexManager.

\n\n

Floating components do not participate in the Container's layout. Because of this, they are not rendered until\nyou explicitly show them.

\n\n

After rendering, the ownerCt reference is deleted, and the floatParent property is set to the found\nfloating ancestor Container. If no floating ancestor Container was found the floatParent property will\nnot be set.

\n"},"formBind":{"!type":"bool","!doc":"

When inside FormPanel, any component configured with formBind: true will\nbe enabled/disabled depending on the validity state of the form.\nSee Ext.form.Panel for more information and example.

\n"},"overflowX":{"!type":"string","!doc":"

Possible values are:\n * 'auto' to enable automatic horizontal scrollbar (overflow-x: 'auto').\n * 'scroll' to always enable horizontal scrollbar (overflow-x: 'scroll').\nThe default is overflow-x: 'hidden'. This should not be combined with autoScroll.

\n"},"overflowY":{"!type":"string","!doc":"

Possible values are:\n * 'auto' to enable automatic vertical scrollbar (overflow-y: 'auto').\n * 'scroll' to always enable vertical scrollbar (overflow-y: 'scroll').\nThe default is overflow-y: 'hidden'. This should not be combined with autoScroll.

\n"},"region":{"!type":"string|string|string|string|string","!doc":"

Defines the region inside border layout.

\n\n

Possible values:

\n\n\n\n"},"resizable":{"!type":"bool|?","!doc":"

Specify as true to apply a Resizer to this Component after rendering.

\n\n

May also be specified as a config object to be passed to the constructor of Resizer\nto override any defaults. By default the Component passes its minimum and maximum size, and uses\nExt.resizer.Resizer.dynamic: false

\n"},"resizeHandles":{"!type":"string","!doc":"

A valid Ext.resizer.Resizer handles config string. Only applies when resizable = true.

\n"},"toFrontOnShow":{"!type":"bool","!doc":"

True to automatically call toFront when the show method is called on an already visible,\nfloating component.

\n"},"bubbleEvents":{"!type":"[?]"},"defaultComponentLayoutType":{"!type":"string"},"floatParent":{"!type":"+Ext.Container","!doc":"

Only present for floating Components which were inserted as child items of Containers.

\n\n

There are other similar relationships such as the button which activates a menu, or the\nmenu item which activated a submenu, or the\ncolumn header which activated the column menu.

\n\n

These differences are abstracted away by the up method.

\n\n

Floating Components that are programatically rendered will not have a floatParent\nproperty.

\n\n

See floating and zIndexManager

\n"},"offsetsCls":{"!type":"string"},"scrollFlags":{"!type":"?","!doc":"

An object property which provides unified information as to which dimensions are scrollable based upon\nthe autoScroll, overflowX and overflowY settings (And for views of trees and grids, the owning panel's scroll setting).

\n\n

Note that if you set overflow styles using the style config or bodyStyle config, this object does not include that information;\nit is best to use autoScroll, overflowX and overflowY if you need to access these flags.

\n\n

This object has the following properties:

\n"},"zIndexManager":{"!type":"+Ext.ZIndexManager","!doc":"

Only present for floating Components after they have been rendered.

\n\n

A reference to the ZIndexManager which is managing this Component's z-index.

\n\n

The ZIndexManager maintains a stack of floating Component z-indices, and also provides\na single modal mask which is insert just beneath the topmost visible modal floating Component.

\n\n

Floating Components may be brought to the front or sent to the back of the\nz-index stack.

\n\n

This defaults to the global ZIndexManager for floating Components that are\nprogramatically rendered.

\n\n

For floating Components which are added to a Container, the ZIndexManager is acquired from the first\nancestor Container found which is floating. If no floating ancestor is found, the global ZIndexManager is\nused.

\n\n

See floating and zIndexParent

\n"},"zIndexParent":{"!type":"+Ext.Container","!doc":"

Only present for floating Components which were inserted as child items of Containers, and which have a floating\nContainer in their containment ancestry.

\n\n

For floating Components which are child items of a Container, the zIndexParent will be a floating\nancestor Container which is responsible for the base z-index value of all its floating descendants. It provides\na ZIndexManager which provides z-indexing services for all its descendant floating\nComponents.

\n\n

Floating Components that are programatically rendered will not have a zIndexParent\nproperty.

\n\n

For example, the dropdown BoundList of a ComboBox which is in a Window will have the\nWindow as its zIndexParent, and will always show above that Window, wherever the Window is placed in the z-index stack.

\n\n

See floating and zIndexManager

\n"},"adjustPosition":{"!type":"fn(x: ?, y: ?) -> !this"},"afterComponentLayout":{"!type":"fn() -> !this","!doc":"

Called by the layout system after the Component has been laid out.

\n"},"afterHide":{"!type":"fn(callback?: fn(), scope?: ?) -> !this","!doc":"

Invoked after the Component has been hidden.

\n\n

Gets passed the same callback and scope parameters that onHide received.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"afterSetPosition":{"!type":"fn(ax: ?, ay: ?) -> !this","!doc":"

Template method called after a Component has been positioned.

\n"},"afterShow":{"!type":"fn(animateTarget?: string|+Ext.Element, callback?: fn(), scope?: ?) -> !this","!doc":"

Invoked after the Component is shown (after onShow is called).

\n\n

Gets passed the same parameters as show.

\n"},"beforeLayout":{"!type":"fn() -> !this","!doc":"

Occurs before componentLayout is run. In previous releases, this method could\nreturn false to prevent its layout but that is not supported in Ext JS 4.1 or\nhigher. This method is simply a notification of the impending layout to give the\ncomponent a chance to adjust the DOM. Ideally, DOM reads should be avoided at this\ntime to reduce expensive document reflows.

\n"},"beforeRender":{"!type":"fn() -> !this"},"beforeSetPosition":{"!type":"fn() -> !this","!doc":"

Template method called before a Component is positioned.

\n\n

Ensures that the position is adjusted so that the Component is constrained if so configured.

\n"},"beforeShow":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is shown.

\n"},"blur":{"!type":"fn() -> +Ext.Component"},"bubble":{"!type":"fn(fn: fn(), scope?: ?, args?: [?]) -> +Ext.Component","!doc":"

Bubbles up the component/container heirarchy, calling the specified function with each component. The scope\n(this) of function call will be the scope provided or the current component. The arguments to the function will\nbe the args provided or the current component. If the function returns false at any point, the bubble is stopped.

\n"},"cancelFocus":{"!type":"fn() -> !this","!doc":"

Cancel any deferred focus on this component

\n"},"cloneConfig":{"!type":"fn(overrides: ?) -> +Ext.Component","!doc":"

Clone the current component using the original config values passed into this instance by default.

\n"},"deleteMembers":{"!type":"fn() -> !this"},"findParentBy":{"!type":"fn(fn: fn()) -> +Ext.container.Container","!doc":"

Find a container above this component at any level by a custom function. If the passed function returns true, the\ncontainer will be returned.

\n\n

See also the up method.

\n"},"findParentByType":{"!type":"fn(xtype: string|+Ext.Class) -> +Ext.container.Container","!doc":"

Find a container above this component at any level by xtype or class

\n\n

See also the up method.

\n"},"fireHierarchyEvent":{"!type":"fn(ename: ?) -> !this","!doc":"

For more information on the hierarchy events, see the note for the\nhierarchyEventSource observer defined in the onClassCreated callback.

\n\n

This functionality is contained in Component (as opposed to Container)\nbecause a Component can be the ownerCt for a floating component (loadmask),\nand the loadmask needs to know when its owner is shown/hidden via the\nhierarchyEventSource so that its hidden state can be synchronized.

\n\n

TODO: merge this functionality with Ext.globalEvents

\n"},"focus":{"!type":"fn(selectText?: bool, delay?: bool|number, callback?: fn(), scope?: fn()) -> +Ext.Component","!doc":"

Try to focus this component.

\n"},"getActionEl":{"!type":"fn() -> !this","!doc":"

Deprecate 5.0

\n"},"getAnimateTarget":{"!type":"fn(target: ?) -> !this"},"getBubbleTarget":{"!type":"fn() -> !this","!doc":"

Implements an upward event bubbling policy. By default a Component bubbles events up to its reference owner.

\n\n

Component subclasses may implement a different bubbling strategy by overriding this method.

\n"},"getContentTarget":{"!type":"fn() -> !this"},"getDragEl":{"!type":"fn() -> !this"},"getEl":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Retrieves the top level element representing this component.

\n"},"getId":{"!type":"fn() -> string","!doc":"

Retrieves the id of this component. Will auto-generate an id if one has not already been set.

\n"},"getOuterSize":{"!type":"fn() -> !this","!doc":"

Include margins

\n"},"getOwningBorderContainer":{"!type":"fn() -> +Ext.container.Container","!doc":"

Returns the owning container if that container uses border layout. Otherwise\nthis method returns null.

\n\n

Defined in override Ext.layout.container.border.Region.

\n"},"getOwningBorderLayout":{"!type":"fn() -> +Ext.layout.container.Border","!doc":"

Returns the owning border (Ext.layout.container.Border) instance if there is\none. Otherwise this method returns null.

\n\n

Defined in override Ext.layout.container.border.Region.

\n"},"getPosition":{"!type":"fn(local?: bool) -> [number]","!doc":"

Gets the current XY position of the component's underlying element.

\n"},"getPositionEl":{"!type":"fn() -> !this","!doc":"

Deprecate 5.0

\n"},"getProxy":{"!type":"fn() -> !this"},"getRefOwner":{"!type":"fn() -> !this","!doc":"

Used by ComponentQuery, and the up method to find the\nowning Component in the linkage hierarchy.

\n\n

By default this returns the Container which contains this Component.

\n\n

This may be overriden by Component authors who implement ownership hierarchies which are not\nbased upon ownerCt, such as BoundLists being owned by Fields or Menus being owned by Buttons.

\n"},"getResizeEl":{"!type":"fn() -> !this","!doc":"

Deprecate 5.0

\n"},"getVisibilityEl":{"!type":"fn() -> !this","!doc":"

Deprecate 5.0

\n"},"getXType":{"!type":"fn() -> string","!doc":"

Gets the xtype for this component as registered with Ext.ComponentManager. For a list of all available\nxtypes, see the Ext.Component header. Example usage:

\n\n
var t = new Ext.form.field.Text();\nalert(t.getXType());  // alerts 'textfield'\n
\n"},"hide":{"!type":"fn(animateTarget?: string|+Ext.Element|+Ext.Component, callback?: fn(), scope?: ?) -> +Ext.Component","!doc":"

Hides this Component, setting it to invisible using the configured hideMode.

\n"},"initBorderRegion":{"!type":"fn() -> !this","!doc":"

This method is called by the Ext.layout.container.Border class when instances are\nadded as regions to the layout. Since it is valid to add any component to a border\nlayout as a region, this method must be added to Ext.Component but is only ever\ncalled when that component is owned by a border layout.

\n\n

Defined in override Ext.layout.container.border.Region.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initDraggable":{"!type":"fn() -> !this"},"initResizable":{"!type":"fn(resizable: ?) -> !this"},"isContainedFloater":{"!type":"fn() -> !this","!doc":"

Utility method to determine if a Component is floating, and has an owning Container whose coordinate system\nit must be positioned in when using setPosition.

\n"},"makeFloating":{"!type":"fn(dom: ?) -> !this"},"onAdded":{"!type":"fn() -> !this","!doc":"

Method to manage awareness of when components are added to their\nrespective Container, firing an added event. References are\nestablished at add time rather than at render time.

\n\n

Allows addition of behavior when a Component is added to a\nContainer. At this stage, the Component is in the parent\nContainer's collection of child items. After calling the\nsuperclass's onAdded, the ownerCt reference will be present,\nand if configured with a ref, the refOwner will be set.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onHide":{"!type":"fn(animateTarget?: string|+Ext.Element|+Ext.Component, callback?: fn(), scope?: ?) -> !this","!doc":"

Possibly animates down to a target element.

\n\n

Allows addition of behavior to the hide operation. After\ncalling the superclass’s onHide, the Component will be hidden.

\n\n

Gets passed the same parameters as hide.

\n"},"onShow":{"!type":"fn(animateTarget?: string|+Ext.Element, callback?: fn(), scope?: ?) -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"onShowComplete":{"!type":"fn(callback?: fn(), scope?: ?) -> !this","!doc":"

Invoked after the afterShow method is complete.

\n\n

Gets passed the same callback and scope parameters that afterShow received.

\n"},"onShowVeto":{"!type":"fn() -> !this"},"scrollBy":{"!type":"fn(deltaX: number|[number]|?, deltaY: number|bool|?, animate: bool|?) -> !this","!doc":"

Scrolls this Component's target element by the passed delta values, optionally animating.

\n\n

All of the following are equivalent:

\n\n
 comp.scrollBy(10, 10, true);\n comp.scrollBy([10, 10], true);\n comp.scrollBy({ x: 10, y: 10 }, true);\n
\n"},"setAutoScroll":{"!type":"fn(scroll: bool) -> +Ext.Component","!doc":"

Sets the overflow on the content element of the component.

\n"},"setBorderRegion":{"!type":"fn(region: string) -> string","!doc":"

This method changes the region config property for this border region. This is\nonly valid if this component is in a border layout (Ext.layout.container.Border).

\n\n

Defined in override Ext.layout.container.border.Region.

\n"},"setLoading":{"!type":"fn(load: bool|?|string, targetEl?: bool) -> +Ext.LoadMask","!doc":"

This method allows you to show or hide a LoadMask on top of this component.

\n"},"setOverflowXY":{"!type":"fn(overflowX: string, overflowY: string) -> +Ext.Component","!doc":"

Sets the overflow x/y on the content element of the component. The x/y overflow\nvalues can be any valid CSS overflow (e.g., 'auto' or 'scroll'). By default, the\nvalue is 'hidden'. Passing null for one of the values will erase the inline style.\nPassing undefined will preserve the current value.

\n"},"setPagePosition":{"!type":"fn(x: number|[number], y?: number, animate?: bool|?) -> +Ext.Component","!doc":"

Sets the page XY position of the component. To set the left and top instead, use setPosition.\nThis method fires the move event.

\n"},"setPosition":{"!type":"fn(x: number|[number]|?, y?: number, animate?: bool|?) -> +Ext.Component","!doc":"

Sets the left and top of the component. To set the page XY position instead, use setPagePosition. This\nmethod fires the move event.

\n"},"setRegionWeight":{"!type":"fn(weight: number) -> number","!doc":"

Sets the weight config property for this component. This is only valid if this\ncomponent is in a border layout (Ext.layout.container.Border).

\n\n

Defined in override Ext.layout.container.border.Region.

\n"},"show":{"!type":"fn(animateTarget?: string|+Ext.Element, callback?: fn(), scope?: ?) -> +Ext.Component","!doc":"

Shows this Component, rendering it first if autoRender or floating are true.

\n\n

After being shown, a floating Component (such as a Ext.window.Window), is activated it and\nbrought to the front of its z-index stack.

\n"},"showAt":{"!type":"fn(x: number|[number], y?: number, animate?: bool|?) -> +Ext.Component","!doc":"

Displays component at specific xy position.\nA floating component (like a menu) is positioned relative to its ownerCt if any.\nUseful for popping up a context menu:

\n\n
listeners: {\n    itemcontextmenu: function(view, record, item, index, event, options) {\n        Ext.create('Ext.menu.Menu', {\n            width: 100,\n            height: 100,\n            margin: '0 0 10 0',\n            items: [{\n                text: 'regular item 1'\n            },{\n                text: 'regular item 2'\n            },{\n                text: 'regular item 3'\n            }]\n        }).showAt(event.getXY());\n    }\n}\n
\n"},"showBy":{"!type":"fn(component: +Ext.Component|+Ext.dom.Element, position?: string, offsets?: [number]) -> +Ext.Component","!doc":"

Shows this component by the specified Component or Element.\nUsed when this component is floating.

\n"},"updateBox":{"!type":"fn(box: ?) -> +Ext.Component","!doc":"

Sets the current box measurements of the component's underlying element.

\n"},"wrapPrimaryEl":{"!type":"fn(dom: ?) -> !this"}},"DIRECTION_BOTTOM":{"!type":"string"},"DIRECTION_LEFT":{"!type":"string"},"DIRECTION_RIGHT":{"!type":"string"},"DIRECTION_TOP":{"!type":"string","!doc":"

Collapse/expand directions

\n"},"INVALID_ID_CHARS_Re":{"!type":"+RegExp","!doc":"

RegExp whih specifies characters in an xtype which must be translated to '-' when generating auto IDs.\nThis includes dot, comma and whitespace

\n"},"VERTICAL_DIRECTION_Re":{"!type":"+RegExp"}},"ComponentLoader":{"!doc":"

This class is used to load content via Ajax into a Ext.Component. In general\nthis class will not be instanced directly, rather a loader configuration will be passed to the\nconstructor of the Ext.Component.

\n\n

HTML Renderer

\n\n

By default, the content loaded will be processed as raw html. The response text\nfrom the request is taken and added to the component. This can be used in\nconjunction with the scripts option to execute any inline scripts in\nthe resulting content. Using this renderer has the same effect as passing the\nExt.Component.html configuration option.

\n\n

Data Renderer

\n\n

This renderer allows content to be added by using JSON data and a Ext.XTemplate.\nThe content received from the response is passed to the Ext.Component.update method.\nThis content is run through the attached Ext.Component.tpl and the data is added to\nthe Component. Using this renderer has the same effect as using the Ext.Component.data\nconfiguration in conjunction with a Ext.Component.tpl.

\n\n

Component Renderer

\n\n

This renderer can only be used with a Ext.container.Container and subclasses. It allows for\nComponents to be loaded remotely into a Container. The response is expected to be a single/series of\nExt.Component configuration objects. When the response is received, the data is decoded\nand then passed to Ext.container.Container.add. Using this renderer has the same effect as specifying\nthe Ext.container.Container.items configuration on a Container.

\n\n

Custom Renderer

\n\n

A custom function can be passed to handle any other special case, see the renderer option.

\n\n

Example Usage

\n\n
var cmp = Ext.create('Ext.Component', {\n    renderTo: Ext.getBody(),\n    tpl: '{firstName} - {lastName}',\n    loader: {\n        url: 'myPage.php',\n        renderer: 'data',\n        params: {\n            userId: 1\n        }\n    }\n});\n\n// call the loader manually (or use autoLoad:true instead)\ncmp.getLoader().load();\n
\n","!type":"fn(config: Ext_ComponentLoader_cfg)","prototype":{"!proto":"Ext.ElementLoader.prototype","loadMask":{"!type":"bool|?","!doc":"

True or a Ext.LoadMask configuration to enable masking during loading.

\n"},"renderer":{"!type":"string|fn()","!doc":"

The type of content that is to be loaded into, which can be one of 3 types:

\n\n\n\n\n

Alternatively, you can pass a function which is called with the following parameters.

\n\n\n\n\n

The function must return false is loading is not successful. Below is a sample of using a custom renderer:

\n\n
new Ext.Component({\n    loader: {\n        url: 'myPage.php',\n        renderer: function(loader, response, active) {\n            var text = response.responseText;\n            loader.getTarget().update('The response is ' + text);\n            return true;\n        }\n    }\n});\n
\n"},"scripts":{"!type":"bool","!doc":"

True to parse any inline script tags in the response. This only used when using the html\nrenderer.

\n"},"target":{"!type":"+Ext.Component|string","!doc":"

The target Ext.Component for the loader.\nIf a string is passed it will be looked up via the id.

\n"},"addMask":{"!type":"fn(mask: bool|?) -> !this","!doc":"

Add the mask on the target

\n"},"getRenderer":{"!type":"fn(renderer: string|fn()) -> fn()","!doc":"

Gets the renderer to use

\n"},"removeMask":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"setOptions":{"!type":"fn(active: ?, options: ?) -> !this","!doc":"

Sets any additional options on the active request

\n"},"setTarget":{"!type":"fn(target: string|+Ext.Component) -> !this","!doc":"

Set a {Ext.Component} as the target of this loader. Note that if the target is changed,\nany active requests will be aborted.

\n"}},"Renderer":{"!type":"?"}},"ComponentManager":{"!doc":"

Provides a registry of all Components (instances of Ext.Component or any subclass\nthereof) on a page so that they can be easily accessed by component\nid (see get, or the convenience method Ext.getCmp).

\n\n\n

This object also provides a registry of available Component classes\nindexed by a mnemonic code known as the Component's xtype.\nThe xtype provides a way to avoid instantiating child Components\nwhen creating a full, nested config object for a complete Ext page.

\n\n\n

A child Component may be specified simply as a config object\nas long as the correct xtype is specified so that if and when the Component\nneeds rendering, the correct type can be looked up for lazy instantiation.

\n\n\n

For a list of all available xtypes, see Ext.Component.

\n\n","!type":"fn(config: Ext_ComponentManager_cfg)","prototype":{"!proto":"Ext.AbstractManager.prototype"},"typeName":{"!type":"string","!doc":"

End Definitions

\n"},"create":{"!type":"fn(config: ?, defaultType?: string) -> +Ext.Component","!doc":"

Creates a new Component from the specified config object using the\nconfig object's xtype to determine the class to instantiate.

\n"},"registerType":{"!type":"fn(type: ?, cls: ?) -> !this","!doc":"

Registers a new item constructor, keyed by a type key.

\n"}},"ComponentQuery":{"!doc":"

Provides searching of Components within Ext.ComponentManager (globally) or a specific\nExt.container.Container on the document with a similar syntax to a CSS selector.\nReturns Array of matching Components, or empty Array.

\n\n

Basic Component lookup

\n\n

Components can be retrieved by using their xtype:

\n\n\n\n\n

Matching by xtype matches inherited types, so in the following code, the previous field\nof any type which inherits from TextField will be found:

\n\n
prevField = myField.previousNode('textfield');\n
\n\n

To match only the exact type, pass the \"shallow\" flag by adding (true) to xtype\n(See AbstractComponent's isXType method):

\n\n
prevTextField = myField.previousNode('textfield(true)');\n
\n\n

You can search Components by their id or itemId property, prefixed with a #:

\n\n
#myContainer\n
\n\n

Component xtype and id or itemId can be used together to avoid possible\nid collisions between Components of different types:

\n\n
panel#myPanel\n
\n\n

Traversing Component tree

\n\n

Components can be found by their relation to other Components. There are several\nrelationship operators, mostly taken from CSS selectors:

\n\n\n\n\n

Expressions between relationship operators are matched left to right, i.e. leftmost\nselector is applied first, then if one or more matches are found, relationship operator\nitself is applied, then next selector expression, etc. It is possible to combine\nrelationship operators in complex selectors:

\n\n
window[title=\"Input form\"] textfield[name=login] ^ form > button[action=submit]\n
\n\n

That selector can be read this way: Find a window with title \"Input form\", in that\nwindow find a TextField with name \"login\" at any depth (including subpanels and/or\nFieldSets), then find an Ext.form.Panel that is a parent of the TextField, and in\nthat form find a direct child that is a button with custom property action set to\nvalue \"submit\".

\n\n

Whitespace on both sides of ^ and > operators is non-significant, i.e. can be\nomitted, but usually is used for clarity.

\n\n

Searching by Component attributes

\n\n

Components can be searched by their object property values (attributes). To do that,\nuse attribute matching expression in square brackets:

\n\n\n\n\n

Attributes can use any of the operators in DomQuery's\noperators to compare values.

\n\n

Prefixing the attribute name with an at sign @ means that the property must be\nthe object's ownProperty, not a property from the prototype chain.

\n\n

Specifications like [propName] check that the property is a truthy value. To check\nthat the object has an ownProperty of a certain name, regardless of the value use\nthe form [?propName].

\n\n

The specified value is coerced to match the type of the property found in the\ncandidate Component using Ext.coerce.

\n\n

If you need to find Components by their itemId property, use #id form; it will\ndo the same but is easier to read.

\n\n

Attribute matching operators

\n\n

The '=' operator will return the results that exactly match the\nspecified object property (attribute):

\n\n
Ext.ComponentQuery.query('panel[cls=my-cls]');\n
\n\n

Will match the following Component:

\n\n
Ext.create('Ext.window.Window', {\n    cls: 'my-cls'\n});\n
\n\n

But will not match the following Component, because 'my-cls' is one value\namong others:

\n\n
 Ext.create('Ext.panel.Panel', {\n     cls: 'foo-cls my-cls bar-cls'\n });\n
\n\n

You can use the '~=' operator instead, it will return Components with\nthe property that exactly matches one of the whitespace-separated\nvalues. This is also true for properties that only have one value:

\n\n
Ext.ComponentQuery.query('panel[cls~=my-cls]');\n
\n\n

Will match both Components:

\n\n
Ext.create('Ext.panel.Panel', {\n    cls: 'foo-cls my-cls bar-cls'\n});\n\nExt.create('Ext.window.Window', {\n    cls: 'my-cls'\n});\n
\n\n

Generally, '=' operator is more suited for object properties other than\nCSS classes, while '~=' operator will work best with properties that\nhold lists of whitespace-separated CSS classes.

\n\n

The '^=' operator will return Components with specified attribute that\nstart with the passed value:

\n\n
Ext.ComponentQuery.query('panel[title^=Sales]');\n
\n\n

Will match the following Component:

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Sales estimate for Q4'\n});\n
\n\n

The '$=' operator will return Components with specified properties that\nend with the passed value:

\n\n
Ext.ComponentQuery.query('field[fieldLabel$=name]');\n
\n\n

Will match the following Component:

\n\n
Ext.create('Ext.form.field.Text', {\n    fieldLabel: 'Enter your name'\n});\n
\n\n

The following test will find panels with their ownProperty collapsed being equal to\nfalse. It will not match a collapsed property from the prototype chain.

\n\n
Ext.ComponentQuery.query('panel[@collapsed=false]');\n
\n\n

Member expressions from candidate Components may be tested. If the expression returns\na truthy value, the candidate Component will be included in the query:

\n\n
var disabledFields = myFormPanel.query(\"{isDisabled()}\");\n
\n\n

Such expressions are executed in Component's context, and the above expression is\nsimilar to running this snippet for every Component in your application:

\n\n
 if (component.isDisabled()) {\n     matches.push(component);\n }\n
\n\n

It is important to use only methods that are available in every Component instance\nto avoid run time exceptions. If you need to match your Components with a custom\ncondition formula, you can augment Ext.Component to provide custom matcher that\nwill return false by default, and override it in your custom classes:

\n\n
 Ext.define('My.Component', {\n     override: 'Ext.Component',\n     myMatcher: function() { return false; }\n });\n\n Ext.define('My.Panel', {\n     extend: 'Ext.panel.Panel',\n     requires: ['My.Component'],     // Ensure that Component override is applied\n     myMatcher: function(selector) {\n         return selector === 'myPanel';\n     }\n });\n
\n\n

After that you can use a selector with your custom matcher to find all instances\nof My.Panel:

\n\n
 Ext.ComponentQuery.query(\"{myMatcher('myPanel')}\");\n
\n\n

However if you really need to use a custom matcher, you may find it easier to implement\na custom Pseudo class instead (see below).

\n\n

Conditional matching

\n\n

Attribute matchers can be combined to select only Components that match all\nconditions (logical AND operator):

\n\n
Ext.ComponentQuery.query('panel[cls~=my-cls][floating=true][title$=\"sales data\"]');\n
\n\n

E.g., the query above will match only a Panel-descended Component that has 'my-cls'\nCSS class and is floating and with a title that ends with \"sales data\".

\n\n

Expressions separated with commas will match any Component that satisfies\neither expression (logical OR operator):

\n\n
Ext.ComponentQuery.query('field[fieldLabel^=User], field[fieldLabel*=password]');\n
\n\n

E.g., the query above will match any field with field label starting with \"User\",\nor any field that has \"password\" in its label.

\n\n

Pseudo classes

\n\n

Pseudo classes may be used to filter results in the same way as in\nExt.dom.Query. There are five default pseudo classes:

\n\n\n\n\n

These pseudo classes can be used with other matchers or without them:

\n\n
 // Select first direct child button in any panel\n Ext.ComponentQuery.query('panel > button:first');\n\n // Select last field in Profile form\n Ext.ComponentQuery.query('form[title=Profile] field:last');\n\n // Find first focusable Component in a panel and focus it\n panel.down(':focusable').focus();\n\n // Select any field that is not hidden in a form\n form.query('field:not(hiddenfield)');\n
\n\n

Pseudo class nth-child can be used to find any child Component by its\nposition relative to its siblings. This class' handler takes one argument\nthat specifies the selection formula as Xn or Xn+Y:

\n\n
 // Find every odd field in a form\n form.query('field:nth-child(2n+1)'); // or use shortcut: :nth-child(odd)\n\n // Find every even field in a form\n form.query('field:nth-child(2n)');   // or use shortcut: :nth-child(even)\n\n // Find every 3rd field in a form\n form.query('field:nth-child(3n)');\n
\n\n

Pseudo classes can be combined to further filter the results, e.g., in the\nform example above we can modify the query to exclude hidden fields:

\n\n
 // Find every 3rd non-hidden field in a form\n form.query('field:not(hiddenfield):nth-child(3n)');\n
\n\n

Note that when combining pseudo classes, whitespace is significant, i.e.\nthere should be no spaces between pseudo classes. This is a common mistake;\nif you accidentally type a space between field and :not, the query\nwill not return any result because it will mean \"find field's children\nComponents that are not hidden fields...\".

\n\n

Custom pseudo classes

\n\n

It is possible to define your own custom pseudo classes. In fact, a\npseudo class is just a property in Ext.ComponentQuery.pseudos object\nthat defines pseudo class name (property name) and pseudo class handler\n(property value):

\n\n
// Function receives array and returns a filtered array.\nExt.ComponentQuery.pseudos.invalid = function(items) {\n    var i = 0, l = items.length, c, result = [];\n    for (; i < l; i++) {\n        if (!(c = items[i]).isValid()) {\n            result.push(c);\n        }\n    }\n    return result;\n};\n\nvar invalidFields = myFormPanel.query('field:invalid');\nif (invalidFields.length) {\n    invalidFields[0].getEl().scrollIntoView(myFormPanel.body);\n    for (var i = 0, l = invalidFields.length; i < l; i++) {\n        invalidFields[i].getEl().frame(\"red\");\n    }\n}\n
\n\n

Pseudo class handlers can be even more flexible, with a selector\nargument used to define the logic:

\n\n
 // Handler receives array of itmes and selector in parentheses\n Ext.ComponentQuery.pseudos.titleRegex = function(components, selector) {\n     var i = 0, l = components.length, c, result = [], regex = new RegExp(selector);\n     for (; i < l; i++) {\n         c = components[i];\n         if (c.title && regex.test(c.title)) {\n             result.push(c);\n         }\n     }\n     return result;\n }\n\n var salesTabs = tabPanel.query('panel:titleRegex(\"sales\\\\s+for\\\\s+201[123]\")');\n
\n\n

Be careful when using custom pseudo classes with MVC Controllers: when\nyou use a pseudo class in Controller's control or listen component\nselectors, the pseudo class' handler function will be called very often\nand may slow down your application significantly. A good rule of thumb\nis to always specify Component xtype with the pseudo class so that the\nhandlers are only called on Components that you need, and try to make\nthe condition checks as cheap in terms of execution time as possible.\nNote how in the example above, handler function checks that Component\nhas a title first, before running regex test on it.

\n\n

Query examples

\n\n

Queries return an array of Components. Here are some example queries:

\n\n
// retrieve all Ext.Panels in the document by xtype\nvar panelsArray = Ext.ComponentQuery.query('panel');\n\n// retrieve all Ext.Panels within the container with an id myCt\nvar panelsWithinmyCt = Ext.ComponentQuery.query('#myCt panel');\n\n// retrieve all direct children which are Ext.Panels within myCt\nvar directChildPanel = Ext.ComponentQuery.query('#myCt > panel');\n\n// retrieve all grids or trees\nvar gridsAndTrees = Ext.ComponentQuery.query('gridpanel, treepanel');\n\n// Focus first Component\nmyFormPanel.child(':focusable').focus();\n\n// Retrieve every odd text field in a form\nmyFormPanel.query('textfield:nth-child(odd)');\n\n// Retrieve every even field in a form, excluding hidden fields\nmyFormPanel.query('field:not(hiddenfield):nth-child(even)');\n
\n\n

For easy access to queries based from a particular Container see the\nExt.container.Container.query, Ext.container.Container.down and\nExt.container.Container.child methods. Also see\nExt.Component.up.

\n","is":{"!type":"fn(component: +Ext.Component, selector: string) -> bool","!doc":"

Tests whether the passed Component matches the selector string.

\n"},"query":{"!type":"fn(selector: string, root?: +Ext.container.Container) -> [+Ext.Component]","!doc":"

Returns an array of matched Components from within the passed root object.

\n\n

This method filters returned Components in a similar way to how CSS selector based DOM\nqueries work using a textual selector string.

\n\n

See class summary for details.

\n"}},"Date":{"!doc":"

A set of useful static methods to deal with date\nNote that if Ext.Date is required and loaded, it will copy all methods / properties to\nthis object for convenience

\n\n

The date parsing and formatting syntax contains a subset of\nPHP's date() function, and the formats that are\nsupported will provide results equivalent to their PHP versions.

\n\n

The following is a list of all currently supported formats:

\n\n
\nFormat      Description                                                               Example returned values\n------      -----------------------------------------------------------------------   -----------------------\n  d         Day of the month, 2 digits with leading zeros                             01 to 31\n  D         A short textual representation of the day of the week                     Mon to Sun\n  j         Day of the month without leading zeros                                    1 to 31\n  l         A full textual representation of the day of the week                      Sunday to Saturday\n  N         ISO-8601 numeric representation of the day of the week                    1 (for Monday) through 7 (for Sunday)\n  S         English ordinal suffix for the day of the month, 2 characters             st, nd, rd or th. Works well with j\n  w         Numeric representation of the day of the week                             0 (for Sunday) to 6 (for Saturday)\n  z         The day of the year (starting from 0)                                     0 to 364 (365 in leap years)\n  W         ISO-8601 week number of year, weeks starting on Monday                    01 to 53\n  F         A full textual representation of a month, such as January or March        January to December\n  m         Numeric representation of a month, with leading zeros                     01 to 12\n  M         A short textual representation of a month                                 Jan to Dec\n  n         Numeric representation of a month, without leading zeros                  1 to 12\n  t         Number of days in the given month                                         28 to 31\n  L         Whether it's a leap year                                                  1 if it is a leap year, 0 otherwise.\n  o         ISO-8601 year number (identical to (Y), but if the ISO week number (W)    Examples: 1998 or 2004\n            belongs to the previous or next year, that year is used instead)\n  Y         A full numeric representation of a year, 4 digits                         Examples: 1999 or 2003\n  y         A two digit representation of a year                                      Examples: 99 or 03\n  a         Lowercase Ante meridiem and Post meridiem                                 am or pm\n  A         Uppercase Ante meridiem and Post meridiem                                 AM or PM\n  g         12-hour format of an hour without leading zeros                           1 to 12\n  G         24-hour format of an hour without leading zeros                           0 to 23\n  h         12-hour format of an hour with leading zeros                              01 to 12\n  H         24-hour format of an hour with leading zeros                              00 to 23\n  i         Minutes, with leading zeros                                               00 to 59\n  s         Seconds, with leading zeros                                               00 to 59\n  u         Decimal fraction of a second                                              Examples:\n            (minimum 1 digit, arbitrary number of digits allowed)                     001 (i.e. 0.001s) or\n                                                                                      100 (i.e. 0.100s) or\n                                                                                      999 (i.e. 0.999s) or\n                                                                                      999876543210 (i.e. 0.999876543210s)\n  O         Difference to Greenwich time (GMT) in hours and minutes                   Example: +1030\n  P         Difference to Greenwich time (GMT) with colon between hours and minutes   Example: -08:00\n  T         Timezone abbreviation of the machine running the code                     Examples: EST, MDT, PDT ...\n  Z         Timezone offset in seconds (negative if west of UTC, positive if east)    -43200 to 50400\n  c         ISO 8601 date\n            Notes:                                                                    Examples:\n            1) If unspecified, the month / day defaults to the current month / day,   1991 or\n               the time defaults to midnight, while the timezone defaults to the      1992-10 or\n               browser's timezone. If a time is specified, it must include both hours 1993-09-20 or\n               and minutes. The \"T\" delimiter, seconds, milliseconds and timezone     1994-08-19T16:20+01:00 or\n               are optional.                                                          1995-07-18T17:21:28-02:00 or\n            2) The decimal fraction of a second, if specified, must contain at        1996-06-17T18:22:29.98765+03:00 or\n               least 1 digit (there is no limit to the maximum number                 1997-05-16T19:23:30,12345-0400 or\n               of digits allowed), and may be delimited by either a '.' or a ','      1998-04-15T20:24:31.2468Z or\n            Refer to the examples on the right for the various levels of              1999-03-14T20:24:32Z or\n            date-time granularity which are supported, or see                         2000-02-13T21:25:33\n            http://www.w3.org/TR/NOTE-datetime for more info.                         2001-01-12 22:26:34\n  U         Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT)                1193432466 or -2138434463\n  MS        Microsoft AJAX serialized dates                                           \\/Date(1238606590509)\\/ (i.e. UTC milliseconds since epoch) or\n                                                                                      \\/Date(1238606590509+0800)\\/\n  time      A javascript millisecond timestamp                                        1350024476440\n  timestamp A UNIX timestamp (same as U)                                              1350024866            \n
\n\n\n

Example usage (note that you must escape format specifiers with '\\' to render them as character literals):

\n\n
// Sample date:\n// 'Wed Jan 10 2007 15:05:01 GMT-0600 (Central Standard Time)'\n\nvar dt = new Date('1/10/2007 03:05:01 PM GMT-0600');\nconsole.log(Ext.Date.format(dt, 'Y-m-d'));                          // 2007-01-10\nconsole.log(Ext.Date.format(dt, 'F j, Y, g:i a'));                  // January 10, 2007, 3:05 pm\nconsole.log(Ext.Date.format(dt, 'l, \\\\t\\\\he jS \\\\of F Y h:i:s A')); // Wednesday, the 10th of January 2007 03:05:01 PM\n
\n\n

Here are some standard date/time patterns that you might find helpful. They\nare not part of the source of Ext.Date, but to use them you can simply copy this\nblock of code into any script that is included after Ext.Date and they will also become\nglobally available on the Date object. Feel free to add or remove patterns as needed in your code.

\n\n
Ext.Date.patterns = {\n    ISO8601Long:\"Y-m-d H:i:s\",\n    ISO8601Short:\"Y-m-d\",\n    ShortDate: \"n/j/Y\",\n    LongDate: \"l, F d, Y\",\n    FullDateTime: \"l, F d, Y g:i:s A\",\n    MonthDay: \"F d\",\n    ShortTime: \"g:i A\",\n    LongTime: \"g:i:s A\",\n    SortableDateTime: \"Y-m-d\\\\TH:i:s\",\n    UniversalSortableDateTime: \"Y-m-d H:i:sO\",\n    YearMonth: \"F, Y\"\n};\n
\n\n

Example usage:

\n\n
var dt = new Date();\nconsole.log(Ext.Date.format(dt, Ext.Date.patterns.ShortDate));\n
\n\n

Developer-written, custom formats may be used by supplying both a formatting and a parsing function\nwhich perform to specialized requirements. The functions are stored in parseFunctions and formatFunctions.

\n","DAY":{"!type":"string","!doc":"

Date interval constant

\n"},"HOUR":{"!type":"string","!doc":"

Date interval constant

\n"},"MILLI":{"!type":"string","!doc":"

Date interval constant

\n"},"MINUTE":{"!type":"string","!doc":"

Date interval constant

\n"},"MONTH":{"!type":"string","!doc":"

Date interval constant

\n"},"SECOND":{"!type":"string","!doc":"

Date interval constant

\n"},"YEAR":{"!type":"string","!doc":"

Date interval constant

\n"},"dayNames":{"!type":"[string]","!doc":"

An array of textual day names.\nOverride these values for international dates.

\n\n

Example:

\n\n
Ext.Date.dayNames = [\n    'SundayInYourLang',\n    'MondayInYourLang'\n    // ...\n];\n
\n"},"defaultFormat":{"!type":"string","!doc":"

The date format string that the Ext.util.Format.dateRenderer\nand Ext.util.Format.date functions use. See Ext.Date for details.

\n\n

This may be overridden in a locale file.

\n"},"defaults":{"!type":"?","!doc":"

An object hash containing default date values used during date parsing.

\n\n

The following properties are available:

\n\n

Override these properties to customize the default date values used by the parse method.

\n\n

Note: In countries which experience Daylight Saving Time (i.e. DST), the h, i, s\nand ms properties may coincide with the exact time in which DST takes effect.\nIt is the responsibility of the developer to account for this.

\n\n

Example Usage:

\n\n
// set default day value to the first day of the month\nExt.Date.defaults.d = 1;\n\n// parse a February date string containing only year and month values.\n// setting the default day value to 1 prevents weird date rollover issues\n// when attempting to parse the following date string on, for example, March 31st 2009.\nExt.Date.parse('2009-02', 'Y-m'); // returns a Date object representing February 1st 2009\n
\n"},"formatCodes":{"!type":"?","!doc":"

The base format-code to formatting-function hashmap used by the format method.\nFormatting functions are strings (or functions which return strings) which\nwill return the appropriate value when evaluated in the context of the Date object\nfrom which the format method is called.\nAdd to / override these mappings for custom date formatting.

\n\n

Note: Ext.Date.format() treats characters as literals if an appropriate mapping cannot be found.

\n\n

Example:

\n\n
Ext.Date.formatCodes.x = \"Ext.util.Format.leftPad(this.getDate(), 2, '0')\";\nconsole.log(Ext.Date.format(new Date(), 'X'); // returns the current day of the month\n
\n"},"formatFunctions":{"!type":"?","!doc":"

An object hash in which each property is a date formatting function. The property name is the\nformat string which corresponds to the produced formatted date string.

\n\n

This object is automatically populated with date formatting functions as\ndate formats are requested for Ext standard formatting strings.

\n\n

Custom formatting functions may be inserted into this object, keyed by a name which from then on\nmay be used as a format string to format.

\n\n

Example:

\n\n
Ext.Date.formatFunctions['x-date-format'] = myDateFormatter;\n
\n\n

A formatting function should return a string representation of the passed Date object, and is passed the following parameters:

\n\n

To enable date strings to also be parsed according to that format, a corresponding\nparsing function must be placed into the parseFunctions property.

\n"},"monthNames":{"!type":"[string]","!doc":"

An array of textual month names.\nOverride these values for international dates.

\n\n

Example:

\n\n
Ext.Date.monthNames = [\n    'JanInYourLang',\n    'FebInYourLang'\n    // ...\n];\n
\n"},"monthNumbers":{"!type":"?","!doc":"

An object hash of zero-based JavaScript month numbers (with short month names as keys. Note: keys are case-sensitive).\nOverride these values for international dates.

\n\n

Example:

\n\n
Ext.Date.monthNumbers = {\n    'LongJanNameInYourLang': 0,\n    'ShortJanNameInYourLang':0,\n    'LongFebNameInYourLang':1,\n    'ShortFebNameInYourLang':1\n    // ...\n};\n
\n"},"parseFunctions":{"!type":"?","!doc":"

An object hash in which each property is a date parsing function. The property name is the\nformat string which that function parses.

\n\n

This object is automatically populated with date parsing functions as\ndate formats are requested for Ext standard formatting strings.

\n\n

Custom parsing functions may be inserted into this object, keyed by a name which from then on\nmay be used as a format string to parse.

\n\n

Example:

\n\n
Ext.Date.parseFunctions['x-date-format'] = myDateParser;\n
\n\n

A parsing function should return a Date object, and is passed the following parameters:

\n\n

To enable Dates to also be formatted according to that format, a corresponding\nformatting function must be placed into the formatFunctions property.

\n"},"useStrict":{"!type":"bool","!doc":"

Global flag which determines if strict date parsing should be used.\nStrict date parsing will not roll-over invalid dates, which is the\ndefault behavior of JavaScript Date objects.\n(see parse for more information)

\n"},"add":{"!type":"fn(date: +Date, interval: string, value: number) -> +Date","!doc":"

Provides a convenient method for performing basic date arithmetic. This method\ndoes not modify the Date instance being called - it creates and returns\na new Date instance containing the resulting date value.

\n\n

Examples:

\n\n
// Basic usage:\nvar dt = Ext.Date.add(new Date('10/29/2006'), Ext.Date.DAY, 5);\nconsole.log(dt); // returns 'Fri Nov 03 2006 00:00:00'\n\n// Negative values will be subtracted:\nvar dt2 = Ext.Date.add(new Date('10/1/2006'), Ext.Date.DAY, -5);\nconsole.log(dt2); // returns 'Tue Sep 26 2006 00:00:00'\n\n // Decimal values can be used:\nvar dt3 = Ext.Date.add(new Date('10/1/2006'), Ext.Date.DAY, 1.25);\nconsole.log(dt3); // returns 'Mon Oct 02 2006 06:00:00'\n
\n"},"between":{"!type":"fn(date: +Date, start: +Date, end: +Date) -> bool","!doc":"

Checks if a date falls on or between the given start and end dates.

\n"},"clearTime":{"!type":"fn(date: +Date, clone?: bool) -> +Date","!doc":"

Attempts to clear all time information from this Date by setting the time to midnight of the same day,\nautomatically adjusting for Daylight Saving Time (DST) where applicable.

\n\n

Note: DST timezone information for the browser's host operating system is assumed to be up-to-date.

\n"},"clone":{"!type":"fn(date: +Date) -> +Date","!doc":"

Creates and returns a new Date instance with the exact same date value as the called instance.\nDates are copied and passed by reference, so if a copied date variable is modified later, the original\nvariable will also be changed. When the intention is to create a new variable that will not\nmodify the original instance, you should create a clone.

\n\n

Example of correctly cloning a date:

\n\n
//wrong way:\nvar orig = new Date('10/1/2006');\nvar copy = orig;\ncopy.setDate(5);\nconsole.log(orig);  // returns 'Thu Oct 05 2006'!\n\n//correct way:\nvar orig = new Date('10/1/2006'),\n    copy = Ext.Date.clone(orig);\ncopy.setDate(5);\nconsole.log(orig);  // returns 'Thu Oct 01 2006'\n
\n"},"format":{"!type":"fn(date: +Date, format: string) -> string","!doc":"

Formats a date given the supplied format string.

\n"},"formatContainsDateInfo":{"!type":"fn(format: string) -> bool","!doc":"

Checks if the specified format contains information about\nanything other than the time.

\n"},"formatContainsHourInfo":{"!type":"fn(format: string) -> bool","!doc":"

Checks if the specified format contains hour information

\n"},"getDayOfYear":{"!type":"fn(date: +Date) -> number","!doc":"

Get the numeric day number of the year, adjusted for leap year.

\n"},"getDaysInMonth":{"!type":"fn(date: +Date) -> number","!doc":"

Get the number of days in the current month, adjusted for leap year.

\n"},"getElapsed":{"!type":"fn(dateA: +Date, dateB?: +Date) -> number","!doc":"

Returns the number of milliseconds between two dates.

\n"},"getFirstDateOfMonth":{"!type":"fn(date: +Date) -> +Date","!doc":"

Get the date of the first day of the month in which this date resides.

\n"},"getFirstDayOfMonth":{"!type":"fn(date: +Date) -> number","!doc":"

Get the first day of the current month, adjusted for leap year. The returned value\nis the numeric day index within the week (0-6) which can be used in conjunction with\nthe monthNames array to retrieve the textual day name.

\n\n

Example:

\n\n
var dt = new Date('1/10/2007'),\n    firstDay = Ext.Date.getFirstDayOfMonth(dt);\nconsole.log(Ext.Date.dayNames[firstDay]); // output: 'Monday'\n
\n"},"getGMTOffset":{"!type":"fn(date: +Date, colon?: bool) -> string","!doc":"

Get the offset from GMT of the current date (equivalent to the format specifier 'O').

\n"},"getLastDateOfMonth":{"!type":"fn(date: +Date) -> +Date","!doc":"

Get the date of the last day of the month in which this date resides.

\n"},"getLastDayOfMonth":{"!type":"fn(date: +Date) -> number","!doc":"

Get the last day of the current month, adjusted for leap year. The returned value\nis the numeric day index within the week (0-6) which can be used in conjunction with\nthe monthNames array to retrieve the textual day name.

\n\n

Example:

\n\n
var dt = new Date('1/10/2007'),\n    lastDay = Ext.Date.getLastDayOfMonth(dt);\nconsole.log(Ext.Date.dayNames[lastDay]); // output: 'Wednesday'\n
\n"},"getMonthNumber":{"!type":"fn(name: string) -> number","!doc":"

Get the zero-based JavaScript month number for the given short/full month name.\nOverride this function for international dates.

\n"},"getShortDayName":{"!type":"fn(day: number) -> string","!doc":"

Get the short day name for the given day number.\nOverride this function for international dates.

\n"},"getShortMonthName":{"!type":"fn(month: number) -> string","!doc":"

Get the short month name for the given month number.\nOverride this function for international dates.

\n"},"getSuffix":{"!type":"fn(date: +Date) -> string","!doc":"

Get the English ordinal suffix of the current day (equivalent to the format specifier 'S').

\n"},"getTimezone":{"!type":"fn(date: +Date) -> string","!doc":"

Get the timezone abbreviation of the current date (equivalent to the format specifier 'T').

\n\n

Note: The date string returned by the JavaScript Date object's toString() method varies\nbetween browsers (e.g. FF vs IE) and system region settings (e.g. IE in Asia vs IE in America).\nFor a given date string e.g. \"Thu Oct 25 2007 22:55:35 GMT+0800 (Malay Peninsula Standard Time)\",\ngetTimezone() first tries to get the timezone abbreviation from between a pair of parentheses\n(which may or may not be present), failing which it proceeds to get the timezone abbreviation\nfrom the GMT offset portion of the date string.

\n"},"getWeekOfYear":{"!type":"fn(date: +Date) -> number","!doc":"

Get the numeric ISO-8601 week number of the year.\n(equivalent to the format specifier 'W', but without a leading zero).

\n"},"isDST":{"!type":"fn(date: +Date) -> bool","!doc":"

Checks if the current date is affected by Daylight Saving Time (DST).

\n"},"isEqual":{"!type":"fn(date1: +Date, date2: +Date) -> bool","!doc":"

Compares if two dates are equal by comparing their values.

\n"},"isLeapYear":{"!type":"fn(date: +Date) -> bool","!doc":"

Checks if the current date falls within a leap year.

\n"},"isValid":{"!type":"fn(year: number, month: number, day: number, hour?: number, minute?: number, second?: number, millisecond?: number) -> bool","!doc":"

Checks if the passed Date parameters will cause a JavaScript Date \"rollover\".

\n"},"now":{"!type":"fn() -> number","!doc":"

Returns the current timestamp.

\n"},"parse":{"!type":"fn(input: string, format: string, strict?: bool) -> +Date","!doc":"

Parses the passed string using the specified date format.\nNote that this function expects normal calendar dates, meaning that months are 1-based (i.e. 1 = January).\nThe defaults hash will be used for any date value (i.e. year, month, day, hour, minute, second or millisecond)\nwhich cannot be found in the passed string. If a corresponding default date value has not been specified in the defaults hash,\nthe current date's year, month, day or DST-adjusted zero-hour time value will be used instead.\nKeep in mind that the input date string must precisely match the specified format string\nin order for the parse operation to be successful (failed parse operations return a null value).

\n\n

Example:

\n\n
//dt = Fri May 25 2007 (current date)\nvar dt = new Date();\n\n//dt = Thu May 25 2006 (today&#39;s month/day in 2006)\ndt = Ext.Date.parse(\"2006\", \"Y\");\n\n//dt = Sun Jan 15 2006 (all date parts specified)\ndt = Ext.Date.parse(\"2006-01-15\", \"Y-m-d\");\n\n//dt = Sun Jan 15 2006 15:20:01\ndt = Ext.Date.parse(\"2006-01-15 3:20:01 PM\", \"Y-m-d g:i:s A\");\n\n// attempt to parse Sun Feb 29 2006 03:20:01 in strict mode\ndt = Ext.Date.parse(\"2006-02-29 03:20:01\", \"Y-m-d H:i:s\", true); // returns null\n
\n"},"subtract":{"!type":"fn(date: +Date, interval: string, value: number) -> +Date","!doc":"

Provides a convenient method for performing basic date arithmetic. This method\ndoes not modify the Date instance being called - it creates and returns\na new Date instance containing the resulting date value.

\n\n

Examples:

\n\n
// Basic usage:\nvar dt = Ext.Date.subtract(new Date('10/29/2006'), Ext.Date.DAY, 5);\nconsole.log(dt); // returns 'Tue Oct 24 2006 00:00:00'\n\n// Negative values will be added:\nvar dt2 = Ext.Date.subtract(new Date('10/1/2006'), Ext.Date.DAY, -5);\nconsole.log(dt2); // returns 'Fri Oct 6 2006 00:00:00'\n\n // Decimal values can be used:\nvar dt3 = Ext.Date.subtract(new Date('10/1/2006'), Ext.Date.DAY, 1.25);\nconsole.log(dt3); // returns 'Fri Sep 29 2006 06:00:00'\n
\n"},"toString":{"!type":"fn(date: ?) -> !this","!doc":"

Private for now

\n"},"unescapeFormat":{"!type":"fn(format: string) -> string","!doc":"

Removes all escaping for a date format string. In date formats,\nusing a '\\' can be used to escape special characters.

\n"}},"DomHelper":{"!doc":"

The DomHelper class provides a layer of abstraction from DOM and transparently supports creating elements via DOM or\nusing HTML fragments. It also has the ability to create HTML fragment templates from your DOM building code.

\n\n

DomHelper element specification object

\n\n

A specification object is used when creating elements. Attributes of this object are assumed to be element\nattributes, except for 4 special attributes:

\n\n\n\n\n

NOTE: For other arbitrary attributes, the value will currently not be automatically HTML-escaped prior to\nbuilding the element's HTML string. This means that if your attribute value contains special characters that would\nnot normally be allowed in a double-quoted attribute value, you must manually HTML-encode it beforehand (see\nExt.String.htmlEncode) or risk malformed HTML being created. This behavior may change in a future release.

\n\n

Insertion methods

\n\n

Commonly used insertion methods:

\n\n\n\n\n

Example

\n\n

This is an example, where an unordered list with 3 children items is appended to an existing element with\nid 'my-div':

\n\n
var dh = Ext.DomHelper; // create shorthand alias\n// specification object\nvar spec = {\n    id: 'my-ul',\n    tag: 'ul',\n    cls: 'my-list',\n    // append children after creating\n    children: [     // may also specify 'cn' instead of 'children'\n        {tag: 'li', id: 'item0', html: 'List Item 0'},\n        {tag: 'li', id: 'item1', html: 'List Item 1'},\n        {tag: 'li', id: 'item2', html: 'List Item 2'}\n    ]\n};\nvar list = dh.append(\n    'my-div', // the context element 'my-div' can either be the id or the actual node\n    spec      // the specification object\n);\n
\n\n

Element creation specification parameters in this class may also be passed as an Array of specification objects. This\ncan be used to insert multiple sibling nodes into an existing container very efficiently. For example, to add more\nlist items to the example above:

\n\n
dh.append('my-ul', [\n    {tag: 'li', id: 'item3', html: 'List Item 3'},\n    {tag: 'li', id: 'item4', html: 'List Item 4'}\n]);\n
\n\n

Templating

\n\n

The real power is in the built-in templating. Instead of creating or appending any elements, createTemplate\nreturns a Template object which can be used over and over to insert new elements. Revisiting the example above, we\ncould utilize templating this time:

\n\n
// create the node\nvar list = dh.append('my-div', {tag: 'ul', cls: 'my-list'});\n// get template\nvar tpl = dh.createTemplate({tag: 'li', id: 'item{0}', html: 'List Item {0}'});\n\nfor(var i = 0; i < 5, i++){\n    tpl.append(list, [i]); // use template to append to the actual node\n}\n
\n\n

An example using a template:

\n\n
var html = '<a id=\"{0}\" href=\"{1}\" class=\"nav\">{2}</a>';\n\nvar tpl = new Ext.DomHelper.createTemplate(html);\ntpl.append('blog-roll', ['link1', 'http://www.edspencer.net/', \"Ed's Site\"]);\ntpl.append('blog-roll', ['link2', 'http://www.dustindiaz.com/', \"Dustin's Site\"]);\n
\n\n

The same example using named parameters:

\n\n
var html = '<a id=\"{id}\" href=\"{url}\" class=\"nav\">{text}</a>';\n\nvar tpl = new Ext.DomHelper.createTemplate(html);\ntpl.append('blog-roll', {\n    id: 'link1',\n    url: 'http://www.edspencer.net/',\n    text: \"Ed's Site\"\n});\ntpl.append('blog-roll', {\n    id: 'link2',\n    url: 'http://www.dustindiaz.com/',\n    text: \"Dustin's Site\"\n});\n
\n\n

Compiling Templates

\n\n

Templates are applied using regular expressions. The performance is great, but if you are adding a bunch of DOM\nelements using the same template, you can increase performance even further by "compiling" the template. The way \"compile()\" works is the template is parsed and\nbroken up at the different variable points and a dynamic function is created and eval'ed. The generated function\nperforms string concatenation of these parts and the passed variables instead of using regular expressions.

\n\n
var html = '<a id=\"{id}\" href=\"{url}\" class=\"nav\">{text}</a>';\n\nvar tpl = new Ext.DomHelper.createTemplate(html);\ntpl.compile();\n\n//... use template like normal\n
\n\n

Performance Boost

\n\n

DomHelper will transparently create HTML fragments when it can. Using HTML fragments instead of DOM can significantly\nboost performance.

\n\n

Element creation specification parameters may also be strings. If useDom is false, then the string is used\nas innerHTML. If useDom is true, a string specification results in the creation of a text node. Usage:

\n\n
Ext.DomHelper.useDom = true; // force it to use DOM; reduces performance\n
\n"},"Editor":{"!doc":"

The Editor class is used to provide inline editing for elements on the page. The editor\nis backed by a Ext.form.field.Field that will be displayed to edit the underlying content.\nThe editor is a floating Component, when the editor is shown it is automatically aligned to\ndisplay over the top of the bound element it is editing. The Editor contains several options\nfor how to handle key presses:

\n\n\n\n\n

It also has options for how to use the value once the editor has been activated:

\n\n\n\n\n

Sample usage:

\n\n
var editor = new Ext.Editor({\n    updateEl: true, // update the innerHTML of the bound element when editing completes\n    field: {\n        xtype: 'textfield'\n    }\n});\nvar el = Ext.get('my-text'); // The element to 'edit'\neditor.startEdit(el); // The value of the field will be taken as the innerHTML of the element.\n
\n\n

\"Ext.Editor

\n","!type":"fn(config: +Ext.Element|string|Ext_Editor_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","alignment":{"!type":"string","!doc":"

The position to align to (see Ext.util.Positionable.alignTo for more details).

\n"},"allowBlur":{"!type":"bool","!doc":"

True to complete the editing process if in edit mode when the\nfield is blurred.

\n"},"autoSize":{"!type":"bool|?","!doc":"

True for the editor to automatically adopt the size of the underlying field. Otherwise, an object\ncan be passed to indicate where to get each dimension. The available properties are 'boundEl' and\n'field'. If a dimension is not specified, it will use the underlying height/width specified on\nthe editor object.\nExamples:

\n\n
autoSize: true // The editor will be sized to the height/width of the field\n\nheight: 21,\nautoSize: {\n    width: 'boundEl' // The width will be determined by the width of the boundEl, the height from the editor (21)\n}\n\nautoSize: {\n    width: 'field', // Width from the field\n    height: 'boundEl' // Height from the boundEl\n}\n
\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"cancelOnEsc":{"!type":"bool","!doc":"

True to cancel the edit when the escape key is pressed.

\n"},"completeOnEnter":{"!type":"bool","!doc":"

True to complete the edit when the enter key is pressed.

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the editor to the viewport

\n"},"field":{"!type":"+Ext.form.field.Field","!doc":"

The Field object (or descendant) or config object for field

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Do not participate in the ZIndexManager's focus switching operations.\nWhen an editor is hidden, the ZIndexManager will not automatically activate\nthe last visible floater on the stack.

\n"},"hidden":{"!type":"bool","!doc":"

private overrides

\n"},"hideEl":{"!type":"bool","!doc":"

False to keep the bound element visible while the editor is displayed

\n"},"ignoreNoChange":{"!type":"bool","!doc":"

True to skip the edit completion process (no save, no events fired) if the user completes an edit and\nthe value has not changed. Applies only to string values - edits for other data types\nwill never be ignored.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

End Definitions

\n"},"offsets":{"!type":"[number]","!doc":"

The offsets to use when aligning (see Ext.util.Positionable.alignTo for more details.

\n"},"parentEl":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

An element to render to.

\n"},"revertInvalid":{"!type":"bool","!doc":"

True to automatically revert the field value and cancel the edit when the user completes an edit and the field\nvalidation fails

\n"},"shadow":{"!type":"bool|string","!doc":"

\"sides\" for sides/bottom only, \"frame\" for 4-way shadow, and \"drop\" for bottom-right shadow.

\n"},"swallowKeys":{"!type":"bool","!doc":"

Handle the keydown/keypress events so they don't propagate

\n"},"updateEl":{"!type":"bool","!doc":"

True to update the innerHTML of the bound element when the update completes

\n"},"value":{"!type":"?","!doc":"

The data value of the underlying field

\n"},"afterRender":{"!type":"fn(ct: ?, position: ?) -> !this","!doc":"

private

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"cancelEdit":{"!type":"fn(remainVisible?: bool) -> !this","!doc":"

Cancels the editing process and hides the editor without persisting any changes. The field value will be\nreverted to the original starting value.

\n"},"completeEdit":{"!type":"fn(remainVisible?: bool) -> !this","!doc":"

Ends the editing process, persists the changed value to the underlying field, and hides the editor.

\n"},"getValue":{"!type":"fn() -> ?","!doc":"

Gets the data value of the editor

\n"},"hideEdit":{"!type":"fn(remainVisible: ?) -> !this","!doc":"

private

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onFieldAutosize":{"!type":"fn() -> !this","!doc":"

private

\n"},"onFieldBlur":{"!type":"fn(field: ?, e: ?) -> !this","!doc":"

private

\n"},"onHide":{"!type":"fn() -> !this","!doc":"

private

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

private

\n"},"onSpecialKey":{"!type":"fn(field: ?, event: ?) -> !this","!doc":"

private

\n"},"realign":{"!type":"fn(autoSize?: bool) -> !this","!doc":"

Realigns the editor to the bound field based on the current alignment config value.

\n"},"setValue":{"!type":"fn(value: ?) -> !this","!doc":"

Sets the data value of the editor

\n"},"startEdit":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, value?: string) -> !this","!doc":"

Starts the editing process and shows the editor.

\n"},"beforecomplete":{"!type":"fn(this: +Ext.Editor, value: ?, startValue: ?, eOpts: ?)","!doc":"

Fires after a change has been made to the field, but before the change is reflected in the underlying\nfield. Saving the change to the field can be canceled by returning false from the handler of this event.\nNote that if the value has not changed and ignoreNoChange = true, the editing will still end but this\nevent will not fire since no edit actually occurred.

\n"},"beforestartedit":{"!type":"fn(this: +Ext.Editor, boundEl: +Ext.Element, value: ?, eOpts: ?)","!doc":"

Fires when editing is initiated, but before the value changes. Editing can be canceled by returning\nfalse from the handler of this event.

\n"},"canceledit":{"!type":"fn(this: +Ext.Editor, value: ?, startValue: ?, eOpts: ?)","!doc":"

Fires after editing has been canceled and the editor's value has been reset.

\n"},"complete":{"!type":"fn(this: +Ext.Editor, value: ?, startValue: ?, eOpts: ?)","!doc":"

Fires after editing is complete and any changed value has been written to the underlying field.

\n"},"specialkey":{"!type":"fn(this: +Ext.Editor, field: +Ext.form.field.Field, event: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when any key related to navigation (arrows, tab, enter, esc, etc.) is pressed. You can check\nExt.EventObject.getKey to determine which key was pressed.

\n"},"startedit":{"!type":"fn(this: +Ext.Editor, boundEl: +Ext.Element, value: ?, eOpts: ?)","!doc":"

Fires when this editor is displayed

\n"}}},"ElementLoader":{"!doc":"

A class used to load remote content to an Element. Sample usage:

\n\n
Ext.get('el').load({\n    url: 'myPage.php',\n    scripts: true,\n    params: {\n        id: 1\n    }\n});\n
\n\n

In general this class will not be instanced directly, rather the Ext.Element.load method\nwill be used.

\n","!type":"fn(config: Ext_ElementLoader_cfg)","prototype":{"!proto":"Ext.Base.prototype","ajaxOptions":{"!type":"?","!doc":"

Any additional options to be passed to the request, for example timeout or headers.

\n"},"autoLoad":{"!type":"bool|?","!doc":"

True to have the loader make a request as soon as it is created.\nThis argument can also be a set of options that will be passed to load is called.

\n"},"baseParams":{"!type":"?","!doc":"

Params that will be attached to every request. These parameters\nwill not be overridden by any params in the load options.

\n"},"callback":{"!type":"fn()","!doc":"

A function to be called when a load request finishes.\nWill be called with the following config parameters:

\n\n\n\n"},"failure":{"!type":"fn()","!doc":"

A function to be called when a load request fails.\nWill be called with the following config parameters:

\n\n\n\n"},"loadMask":{"!type":"bool|string","!doc":"

True or a string to show when the element is loading.

\n"},"params":{"!type":"?","!doc":"

Any params to be attached to the Ajax request. These parameters will\nbe overridden by any params in the load options.

\n"},"renderer":{"!type":"fn()","!doc":"

A custom function to render the content to the element. The function should\nreturn false if the renderer could not be applied. The passed parameters are:

\n\n\n\n"},"scope":{"!type":"?","!doc":"

The scope to execute the success and failure functions in.

\n"},"scripts":{"!type":"bool","!doc":"

True to parse any inline script tags in the response.

\n"},"success":{"!type":"fn()","!doc":"

A function to be called when a load request is successful.\nWill be called with the following config parameters:

\n\n\n\n"},"target":{"!type":"+HTMLElement|+Ext.Element|string","!doc":"

The target element for the loader. It can be the DOM element, the id or an Ext.Element.

\n"},"url":{"!type":"string","!doc":"

The url to retrieve the content from.

\n"},"isLoader":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated ElementLoader, or subclass thereof.

\n"},"abort":{"!type":"fn() -> !this","!doc":"

Aborts the active load request

\n"},"addMask":{"!type":"fn(mask: bool|?) -> !this","!doc":"

Adds the mask on the target

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys the loader. Any active requests will be aborted.

\n"},"getRenderer":{"!type":"fn(renderer: string|fn()) -> fn()","!doc":"

Gets the renderer to use

\n"},"getTarget":{"!type":"fn() -> +Ext.Component","!doc":"

Returns the target of this loader.

\n"},"isAutoRefreshing":{"!type":"fn() -> bool","!doc":"

Checks whether the loader is automatically refreshing. See startAutoRefresh.

\n"},"load":{"!type":"fn(this: +Ext.ElementLoader, response: ?, options: ?, eOpts: ?)","!doc":"

Fires after a successful load.

\n"},"onComplete":{"!type":"fn(options: ?, success: bool, response: ?) -> !this","!doc":"

Parses the response after the request completes

\n"},"removeMask":{"!type":"fn() -> !this","!doc":"

Removes the mask on the target

\n"},"setOptions":{"!type":"fn(active: ?, options: ?) -> !this","!doc":"

Sets any additional options on the active request

\n"},"setTarget":{"!type":"fn(target: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Sets an Ext.Element as the target of this loader.\nNote that if the target is changed, any active requests will be aborted.

\n"},"startAutoRefresh":{"!type":"fn(interval: number, options?: ?) -> !this","!doc":"

Automatically refreshes the content over a specified period.

\n"},"stopAutoRefresh":{"!type":"fn() -> !this","!doc":"

Clears any auto refresh. See startAutoRefresh.

\n"},"beforeload":{"!type":"fn(this: +Ext.ElementLoader, options: ?, eOpts: ?)","!doc":"

Fires before a load request is made to the server.\nReturning false from an event listener can prevent the load\nfrom occurring.

\n"},"exception":{"!type":"fn(this: +Ext.ElementLoader, response: ?, options: ?, eOpts: ?)","!doc":"

Fires after an unsuccessful load.

\n"}},"Renderer":{"!type":"?"}},"Error":{"!doc":"

A wrapper class for the native JavaScript Error object that adds a few useful capabilities for handling\nerrors in an Ext application. When you use Ext.Error to raise an error from within any class that\nuses the Ext 4 class system, the Error class can automatically add the source class and method from which\nthe error was raised. It also includes logic to automatically log the error to the console, if available,\nwith additional metadata about the error. In all cases, the error will always be thrown at the end so that\nexecution will halt.

\n\n

Ext.Error also offers a global error handling method that can be overridden in order to\nhandle application-wide errors in a single spot. You can optionally ignore errors altogether,\nalthough in a real application it's usually a better idea to override the handling function and perform\nlogging or some other method of reporting the errors in a way that is meaningful to the application.

\n\n

At its simplest you can simply raise an error as a simple string from within any code:

\n\n

Example usage:

\n\n
Ext.Error.raise('Something bad happened!');\n
\n\n

If raised from plain JavaScript code, the error will be logged to the console (if available) and the message\ndisplayed. In most cases however you'll be raising errors from within a class, and it may often be useful to add\nadditional metadata about the error being raised. The raise method can also take a config object.\nIn this form the msg attribute becomes the error description, and any other data added to the config gets\nadded to the error object and, if the console is available, logged to the console for inspection.

\n\n

Example usage:

\n\n
Ext.define('Ext.Foo', {\n    doSomething: function(option){\n        if (someCondition === false) {\n            Ext.Error.raise({\n                msg: 'You cannot do that!',\n                option: option,   // whatever was passed into the method\n                'error code': 100 // other arbitrary info\n            });\n        }\n    }\n});\n
\n\n

If a console is available (that supports the console.dir function) you'll see console output like:

\n\n
An error was raised with the following data:\noption:         Object { foo: \"bar\"}\n    foo:        \"bar\"\nerror code:     100\nmsg:            \"You cannot do that!\"\nsourceClass:   \"Ext.Foo\"\nsourceMethod:  \"doSomething\"\n\nuncaught exception: You cannot do that!\n
\n\n

As you can see, the error will report exactly where it was raised and will include as much information as the\nraising code can usefully provide.

\n\n

If you want to handle all application errors globally you can simply override the static handle method\nand provide whatever handling logic you need. If the method returns true then the error is considered handled\nand will not be thrown to the browser. If anything but true is returned then the error will be thrown normally.

\n\n

Example usage:

\n\n
Ext.Error.handle = function(err) {\n    if (err.someProperty == 'NotReallyAnError') {\n        // maybe log something to the application here if applicable\n        return true;\n    }\n    // any non-true return value (including none) will cause the error to be thrown\n}\n
\n","!type":"fn(config: string|Ext_Error_cfg)","prototype":{"!proto":"Error.prototype","name":{"!type":"string","!doc":"

This is the standard property that is the name of the constructor.

\n"},"statics":{"!type":"?"},"toString":{"!type":"fn() -> string","!doc":"

Provides a custom string representation of the error object. This is an override of the base JavaScript\nObject.toString method, which is useful so that when logged to the browser console, an error object will\nbe displayed with a useful message instead of [object Object], the default toString result.

\n\n

The default implementation will include the error message along with the raising class and method, if available,\nbut this can be overridden with a custom implementation either at the prototype level (for all errors) or on\na particular error instance, if you want to provide a custom description that will show up in the console.

\n"}},"ignore":{"!type":"bool","!doc":"

Static flag that can be used to globally disable error reporting to the browser if set to true\n(defaults to false). Note that if you ignore Ext errors it's likely that some other code may fail\nand throw a native JavaScript error thereafter, so use with caution. In most cases it will probably\nbe preferable to supply a custom error handling function instead.

\n\n

Example usage:

\n\n
Ext.Error.ignore = true;\n
\n"},"notify":{"!type":"bool","!doc":"

Static flag that can be used to globally control error notification to the user. Unlike\nEx.Error.ignore, this does not effect exceptions. They are still thrown. This value can be\nset to false to disable the alert notification (default is true for IE6 and IE7).

\n\n

Only the first error will generate an alert. Internally this flag is set to false when the\nfirst error occurs prior to displaying the alert.

\n\n

This flag is not used in a release build.

\n\n

Example usage:

\n\n
Ext.Error.notify = false;\n
\n"},"handle":{"!type":"fn(err: +Ext.Error) -> !this","!doc":"

Globally handle any Ext errors that may be raised, optionally providing custom logic to\nhandle different errors individually. Return true from the function to bypass throwing the\nerror to the browser, otherwise the error will be thrown and execution will halt.

\n\n

Example usage:

\n\n
Ext.Error.handle = function(err) {\n    if (err.someProperty == 'NotReallyAnError') {\n        // maybe log something to the application here if applicable\n        return true;\n    }\n    // any non-true return value (including none) will cause the error to be thrown\n}\n
\n"},"raise":{"!type":"fn(err: string|?) -> !this","!doc":"

Raise an error that can include additional data and supports automatic console logging if available.\nYou can pass a string error message or an object with the msg attribute which will be used as the\nerror message. The object can contain any other name-value attributes (or objects) to be logged\nalong with the error.

\n\n

Note that after displaying the error message a JavaScript error will ultimately be thrown so that\nexecution will halt.

\n\n

Example usage:

\n\n
Ext.Error.raise('A simple string error message');\n\n// or...\n\nExt.define('Ext.Foo', {\n    doSomething: function(option){\n        if (someCondition === false) {\n            Ext.Error.raise({\n                msg: 'You cannot do that!',\n                option: option,   // whatever was passed into the method\n                'error code': 100 // other arbitrary info\n            });\n        }\n    }\n});\n
\n"}},"EventManager":{"!doc":"

Registers event handlers that want to receive a normalized EventObject instead of the standard browser event and provides\nseveral useful events directly.

\n\n

See Ext.EventObject for more details on normalized event objects.

\n","deferReadyEvent":{"!type":"number","!doc":"

Additionally, allow the 'DOM' listener thread to complete (usually desirable with mobWebkit, Gecko)\nbefore firing the entire onReady chain (high stack load on Loader) by specifying a delay value.\nDefaults to 1ms.

\n"},"hasBoundOnReady":{"!type":"bool","!doc":"

Check if we have bound our global onReady listener

\n"},"hasFiredReady":{"!type":"bool","!doc":"

Check if fireDocReady has been called

\n"},"idleEvent":{"!type":"?","!doc":"

Fires when an event handler finishes its run, just before returning to browser control.

\n\n

This includes DOM event handlers, Ajax (including JSONP) event handlers, and TaskRunners

\n\n

This can be useful for performing cleanup, or update tasks which need to happen only\nafter all code in an event handler has been run, but which should not be executed in a timer\ndue to the intervening browser reflow/repaint which would take place.

\n"},"propRe":{"!type":"+RegExp","!doc":"

Options to parse for the 4th argument to addListener.

\n"},"readyEvent":{"!type":"?","!doc":"

Holds references to any onReady functions

\n"},"scrollTimeout":{"!type":"?","!doc":"

Timer for doScroll polling

\n"},"stoppedMouseDownEvent":{"!type":"?","!doc":"

Contains a list of all document mouse downs, so we can ensure they fire even when stopEvent is called.

\n"},"useKeyDown":{"!type":"?","!doc":"

note 1: IE fires ONLY the keydown event on specialkey autorepeat\nnote 2: Safari < 3.1, Gecko (Mac/Linux) & Opera fire only the keypress event on specialkey autorepeat\n(research done by Jan Wolter at http://unixpapa.com/js/key.html)

\n"},"addListener":{"!type":"fn(el: string|+Ext.Element|+HTMLElement|+Window, eventName: string, handler: string|fn(), scope?: ?, options?: ?) -> !this","!doc":"

Appends an event handler to an element. The shorthand version on is equivalent.\nTypically you will use Ext.Element.addListener directly on an Element in favor of\ncalling this version.

\n\n

on is an alias for addListener.

\n"},"bindReadyEvent":{"!type":"fn() -> !this","!doc":"

Binds the appropriate browser event for checking if the DOM has loaded.

\n"},"cloneEventListenerCache":{"!type":"fn(element: +HTMLElement, eventName: ?) -> [?]","!doc":"

Clones the event cache for a particular element for a particular event

\n"},"contains":{"!type":"fn(event: ?) -> !this","!doc":"

Checks whether the event's relatedTarget is contained inside (or is) the element.

\n"},"createListenerWrap":{"!type":"fn(dom: +HTMLElement, ename: string, fn: fn(), scope: ?, options: ?) -> fn()","!doc":"

Create the wrapper function for the event

\n"},"fireDocReady":{"!type":"fn() -> !this","!doc":"

We know the document is loaded, so trigger any onReady events.

\n"},"fireReadyEvent":{"!type":"fn() -> !this","!doc":"

Fires the ready event

\n"},"fireResize":{"!type":"fn() -> !this","!doc":"

Fire the resize event.

\n"},"fireUnload":{"!type":"fn() -> !this","!doc":"

Fires the unload event for items bound with onWindowUnload

\n"},"getEventCache":{"!type":"fn(element: +HTMLElement) -> ?","!doc":"

Gets the event cache object for a particular element

\n"},"getEventListenerCache":{"!type":"fn(element: +HTMLElement, eventName: ?) -> [?]","!doc":"

Get the event cache for a particular element for a particular event

\n"},"getId":{"!type":"fn(element: +HTMLElement|+Ext.Element) -> string","!doc":"

Get the id of the element. If one has not been assigned, automatically assign it.

\n"},"getKeyEvent":{"!type":"fn() -> string","!doc":"

Indicates which event to use for getting key presses.

\n"},"getPageX":{"!type":"fn(event: ?) -> number","!doc":"

Gets the x coordinate from the event

\n"},"getPageXY":{"!type":"fn(event: ?) -> [number]","!doc":"

Gets the x & y coordinate from the event

\n"},"getPageY":{"!type":"fn(event: ?) -> number","!doc":"

Gets the y coordinate from the event

\n"},"getRelatedTarget":{"!type":"fn(event: ?) -> +HTMLElement","!doc":"

Gets the related target from the event.

\n"},"getTarget":{"!type":"fn(event: ?) -> +HTMLElement","!doc":"

Gets the target of the event.

\n"},"isReadyPaused":{"!type":"fn() -> !this","!doc":"

detects whether the EventManager has been placed in a paused state for synchronization\nwith external debugging / perf tools (PageAnalyzer)

\n"},"normalizeEvent":{"!type":"fn(eventName: ?, fn: ?) -> ?","!doc":"

Normalize cross browser event differences

\n"},"on":{"!type":"fn(el: string|+Ext.Element|+HTMLElement|+Window, eventName: string, handler: string|fn(), scope?: ?, options?: ?) -> !this","!doc":"

Appends an event handler to an element. The shorthand version on is equivalent.\nTypically you will use Ext.Element.addListener directly on an Element in favor of\ncalling this version.

\n\n

on is an alias for addListener.

\n"},"onDocumentReady":{"!type":"fn(fn: fn(), scope?: ?, options?: ?) -> !this","!doc":"

Adds a listener to be notified when the document is ready (before onload and before images are loaded).

\n\n

Ext.onDocumentReady is an alias for onDocumentReady.

\n"},"onWindowResize":{"!type":"fn(fn: fn(), scope: ?, options?: bool) -> !this","!doc":"

Adds a listener to be notified when the browser window is resized and provides resize event buffering (100 milliseconds),\npasses new viewport width and height to handlers.

\n"},"onWindowUnload":{"!type":"fn(fn: fn(), scope: ?, options: bool) -> !this","!doc":"

Adds a listener to be notified when the browser window is unloaded.

\n"},"pollScroll":{"!type":"fn() -> !this","!doc":"

This strategy has minimal benefits for Sencha solutions that build themselves (ie. minimal initial page markup).\nHowever, progressively-enhanced pages (with image content and/or embedded frames) will benefit the most from it.\nBrowser timer resolution is too poor to ensure a doScroll check more than once on a page loaded with minimal\nassets (the readystatechange event 'complete' usually beats the doScroll timer on a 'lightly-loaded' initial document).

\n"},"prepareListenerConfig":{"!type":"fn(element: ?, event: ?, isRemove: ?) -> !this","!doc":"

Convert a \"config style\" listener into a set of flat arguments so they can be passed to addListener

\n"},"preventDefault":{"!type":"fn(event: +Event) -> !this","!doc":"

Prevents the browsers default handling of the event.

\n"},"purgeElement":{"!type":"fn(el: string|+Ext.Element|+HTMLElement|+Window, eventName?: string) -> !this","!doc":"

Recursively removes all previous added listeners from an element and its children. Typically you will use Ext.Element.purgeAllListeners\ndirectly on an Element in favor of calling this version.

\n"},"removeAll":{"!type":"fn(el: string|+Ext.Element|+HTMLElement|+Window) -> !this","!doc":"

Removes all event handers from an element. Typically you will use Ext.Element.removeAllListeners\ndirectly on an Element in favor of calling this version.

\n"},"removeListener":{"!type":"fn(el: string|+Ext.Element|+HTMLElement|+Window, eventName: string, fn: fn(), scope: ?) -> !this","!doc":"

Removes an event handler from an element. The shorthand version un is equivalent. Typically\nyou will use Ext.Element.removeListener directly on an Element in favor of calling this version.

\n\n

on is an alias for addListener.

\n"},"removeResizeListener":{"!type":"fn(fn: fn(), scope: ?) -> !this","!doc":"

Removes the passed window resize listener.

\n"},"removeUnloadListener":{"!type":"fn(fn: fn(), scope: ?) -> !this","!doc":"

Removes the passed window unload listener.

\n"},"resolveTextNode":{"!type":"fn(node: +HTMLElement) -> +HTMLElement","!doc":"

Resolve any text nodes accounting for browser differences.

\n"},"stopEvent":{"!type":"fn(event: +Event) -> !this","!doc":"

Stop the event (preventDefault and stopPropagation)

\n"},"stopPropagation":{"!type":"fn(event: +Event) -> !this","!doc":"

Cancels bubbling of the event.

\n"},"un":{"!type":"fn(el: string|+Ext.Element|+HTMLElement|+Window, eventName: string, fn: fn(), scope: ?) -> !this","!doc":"

Removes an event handler from an element. The shorthand version un is equivalent. Typically\nyou will use Ext.Element.removeListener directly on an Element in favor of calling this version.

\n\n

on is an alias for addListener.

\n"}},"EventObject":{"!doc":"

Just as Ext.Element wraps around a native DOM node, Ext.EventObject\nwraps the browser's native event-object normalizing cross-browser differences,\nsuch as which mouse button is clicked, keys pressed, mechanisms to stop\nevent-propagation along with a method to prevent default actions from taking place.

\n\n

For example:

\n\n
function handleClick(e, t){ // e is not a standard event object, it is a Ext.EventObject\n    e.preventDefault();\n    var target = e.getTarget(); // same as t (the target HTMLElement)\n    ...\n}\n\nvar myDiv = Ext.get(\"myDiv\");  // get reference to an Ext.Element\nmyDiv.on(         // 'on' is shorthand for addListener\n    \"click\",      // perform an action on click of myDiv\n    handleClick   // reference to the action handler\n);\n\n// other methods to do the same:\nExt.EventManager.on(\"myDiv\", 'click', handleClick);\nExt.EventManager.addListener(\"myDiv\", 'click', handleClick);\n
\n","A":{"!type":"number","!doc":"

Key constant

\n"},"ALT":{"!type":"number","!doc":"

Key constant

\n"},"B":{"!type":"number","!doc":"

Key constant

\n"},"BACKSPACE":{"!type":"number","!doc":"

Key constant

\n"},"C":{"!type":"number","!doc":"

Key constant

\n"},"CAPS_LOCK":{"!type":"number","!doc":"

Key constant

\n"},"CONTEXT_MENU":{"!type":"number","!doc":"

Key constant

\n"},"CTRL":{"!type":"number","!doc":"

Key constant

\n"},"D":{"!type":"number","!doc":"

Key constant

\n"},"DELETE":{"!type":"number","!doc":"

Key constant

\n"},"DOWN":{"!type":"number","!doc":"

Key constant

\n"},"E":{"!type":"number","!doc":"

Key constant

\n"},"EIGHT":{"!type":"number","!doc":"

Key constant

\n"},"END":{"!type":"number","!doc":"

Key constant

\n"},"ENTER":{"!type":"number","!doc":"

Key constant

\n"},"ESC":{"!type":"number","!doc":"

Key constant

\n"},"F":{"!type":"number","!doc":"

Key constant

\n"},"F1":{"!type":"number","!doc":"

Key constant

\n"},"F10":{"!type":"number","!doc":"

Key constant

\n"},"F11":{"!type":"number","!doc":"

Key constant

\n"},"F12":{"!type":"number","!doc":"

Key constant

\n"},"F2":{"!type":"number","!doc":"

Key constant

\n"},"F3":{"!type":"number","!doc":"

Key constant

\n"},"F4":{"!type":"number","!doc":"

Key constant

\n"},"F5":{"!type":"number","!doc":"

Key constant

\n"},"F6":{"!type":"number","!doc":"

Key constant

\n"},"F7":{"!type":"number","!doc":"

Key constant

\n"},"F8":{"!type":"number","!doc":"

Key constant

\n"},"F9":{"!type":"number","!doc":"

Key constant

\n"},"FIVE":{"!type":"number","!doc":"

Key constant

\n"},"FOUR":{"!type":"number","!doc":"

Key constant

\n"},"G":{"!type":"number","!doc":"

Key constant

\n"},"H":{"!type":"number","!doc":"

Key constant

\n"},"HOME":{"!type":"number","!doc":"

Key constant

\n"},"I":{"!type":"number","!doc":"

Key constant

\n"},"INSERT":{"!type":"number","!doc":"

Key constant

\n"},"J":{"!type":"number","!doc":"

Key constant

\n"},"K":{"!type":"number","!doc":"

Key constant

\n"},"L":{"!type":"number","!doc":"

Key constant

\n"},"LEFT":{"!type":"number","!doc":"

Key constant

\n"},"M":{"!type":"number","!doc":"

Key constant

\n"},"N":{"!type":"number","!doc":"

Key constant

\n"},"NINE":{"!type":"number","!doc":"

Key constant

\n"},"NUM_CENTER":{"!type":"number","!doc":"

Key constant

\n"},"NUM_DIVISION":{"!type":"number","!doc":"

Key constant

\n"},"NUM_EIGHT":{"!type":"number","!doc":"

Key constant

\n"},"NUM_FIVE":{"!type":"number","!doc":"

Key constant

\n"},"NUM_FOUR":{"!type":"number","!doc":"

Key constant

\n"},"NUM_MINUS":{"!type":"number","!doc":"

Key constant

\n"},"NUM_MULTIPLY":{"!type":"number","!doc":"

Key constant

\n"},"NUM_NINE":{"!type":"number","!doc":"

Key constant

\n"},"NUM_ONE":{"!type":"number","!doc":"

Key constant

\n"},"NUM_PERIOD":{"!type":"number","!doc":"

Key constant

\n"},"NUM_PLUS":{"!type":"number","!doc":"

Key constant

\n"},"NUM_SEVEN":{"!type":"number","!doc":"

Key constant

\n"},"NUM_SIX":{"!type":"number","!doc":"

Key constant

\n"},"NUM_THREE":{"!type":"number","!doc":"

Key constant

\n"},"NUM_TWO":{"!type":"number","!doc":"

Key constant

\n"},"NUM_ZERO":{"!type":"number","!doc":"

Key constant

\n"},"O":{"!type":"number","!doc":"

Key constant

\n"},"ONE":{"!type":"number","!doc":"

Key constant

\n"},"P":{"!type":"number","!doc":"

Key constant

\n"},"PAGE_DOWN":{"!type":"number","!doc":"

Key constant

\n"},"PAGE_UP":{"!type":"number","!doc":"

Key constant

\n"},"PAUSE":{"!type":"number","!doc":"

Key constant

\n"},"PRINT_SCREEN":{"!type":"number","!doc":"

Key constant

\n"},"Q":{"!type":"number","!doc":"

Key constant

\n"},"R":{"!type":"number","!doc":"

Key constant

\n"},"RETURN":{"!type":"number","!doc":"

Key constant

\n"},"RIGHT":{"!type":"number","!doc":"

Key constant

\n"},"S":{"!type":"number","!doc":"

Key constant

\n"},"SEVEN":{"!type":"number","!doc":"

Key constant

\n"},"SHIFT":{"!type":"number","!doc":"

Key constant

\n"},"SIX":{"!type":"number","!doc":"

Key constant

\n"},"SPACE":{"!type":"number","!doc":"

Key constant

\n"},"T":{"!type":"number","!doc":"

Key constant

\n"},"TAB":{"!type":"number","!doc":"

Key constant

\n"},"THREE":{"!type":"number","!doc":"

Key constant

\n"},"TWO":{"!type":"number","!doc":"

Key constant

\n"},"U":{"!type":"number","!doc":"

Key constant

\n"},"UP":{"!type":"number","!doc":"

Key constant

\n"},"V":{"!type":"number","!doc":"

Key constant

\n"},"W":{"!type":"number","!doc":"

Key constant

\n"},"WHEEL_SCALE":{"!type":"number","!doc":"

The mouse wheel delta scaling factor. This value depends on browser version and OS and\nattempts to produce a similar scrolling experience across all platforms and browsers.

\n\n

To change this value:

\n\n
 Ext.EventObjectImpl.prototype.WHEEL_SCALE = 72;\n
\n"},"X":{"!type":"number","!doc":"

Key constant

\n"},"Y":{"!type":"number","!doc":"

Key constant

\n"},"Z":{"!type":"number","!doc":"

Key constant

\n"},"ZERO":{"!type":"number","!doc":"

Key constant

\n"},"altKey":{"!type":"bool","!doc":"

True if the alt key was down during the event.

\n"},"btnMap":{"!type":"?","!doc":"

normalize button clicks, don't see any way to feature detect this.

\n"},"clickRe":{"!type":"+RegExp","!doc":"

Simple click regex

\n"},"ctrlKey":{"!type":"bool","!doc":"

True if the control key was down during the event.\nIn Mac this will also be true when meta key was down.

\n"},"safariKeys":{"!type":"?","!doc":"

safari keypress events for special keys return bad keycodes

\n"},"shiftKey":{"!type":"bool","!doc":"

True if the shift key was down during the event.

\n"},"correctWheelDelta":{"!type":"fn(delta: number) -> !this","!doc":"

Correctly scales a given wheel delta.

\n"},"getCharCode":{"!type":"fn() -> number","!doc":"

Gets the character code for the event.

\n"},"getKey":{"!type":"fn() -> number","!doc":"

Returns a normalized keyCode for the event.

\n"},"getPageX":{"!type":"fn() -> number","!doc":"

Gets the x coordinate of the event.

\n"},"getPageY":{"!type":"fn() -> number","!doc":"

Gets the y coordinate of the event.

\n"},"getPoint":{"!type":"fn() -> +Ext.util.Point","!doc":"

Returns a point object that consists of the object coordinates.

\n"},"getRelatedTarget":{"!type":"fn(selector?: string, maxDepth?: number|+HTMLElement, returnEl?: bool) -> +HTMLElement","!doc":"

Gets the related target.

\n"},"getTarget":{"!type":"fn(selector?: string, maxDepth?: number|+HTMLElement, returnEl?: bool) -> +HTMLElement","!doc":"

Gets the target for the event.

\n"},"getWheelDelta":{"!type":"fn() -> number","!doc":"

Normalizes mouse wheel y-delta across browsers. To get x-delta information, use\ngetWheelDeltas instead.

\n"},"getWheelDeltas":{"!type":"fn() -> ?","!doc":"

Returns the mouse wheel deltas for this event.

\n"},"getX":{"!type":"fn() -> number","!doc":"

Gets the x coordinate of the event.

\n"},"getXY":{"!type":"fn() -> [number]","!doc":"

Gets the page coordinates of the event.

\n"},"getY":{"!type":"fn() -> number","!doc":"

Gets the y coordinate of the event.

\n"},"hasModifier":{"!type":"fn() -> bool","!doc":"

Returns true if the control, meta, shift or alt key was pressed during this event.

\n"},"injectEvent":{"!type":"fn(target?: +Ext.Element|+HTMLElement) -> !this","!doc":"

Injects a DOM event using the data in this object and (optionally) a new target.\nThis is a low-level technique and not likely to be used by application code. The\ncurrently supported event types are:

\n\n

HTMLEvents

\n\n\n\n\n\n

MouseEvents

\n\n\n\n\n\n

UIEvents

\n\n\n\n\n"},"isNavKeyPress":{"!type":"fn() -> bool","!doc":"

Checks if the key pressed was a \"navigation\" key

\n"},"isSpecialKey":{"!type":"fn() -> bool","!doc":"

Checks if the key pressed was a \"special\" key

\n"},"normalizeKey":{"!type":"fn(key: number) -> number","!doc":"

Normalize key codes across browsers

\n"},"preventDefault":{"!type":"fn() -> !this","!doc":"

Prevents the browsers default handling of the event.

\n"},"setEvent":{"!type":"fn(event: ?, freezeEvent: ?) -> !this"},"stopEvent":{"!type":"fn() -> !this","!doc":"

Stop the event (preventDefault and stopPropagation)

\n"},"stopPropagation":{"!type":"fn() -> !this","!doc":"

Cancels bubbling of the event.

\n"},"within":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, related?: bool, allowEl?: bool) -> bool","!doc":"

Returns true if the target of this event is a child of el. Unless the allowEl parameter is set, it will return false if if the target is el.\nExample usage:

\n\n
// Handle click on any child of an element\nExt.getBody().on('click', function(e){\n    if(e.within('some-el')){\n        alert('Clicked on a child of some-el!');\n    }\n});\n\n// Handle click directly on an element, ignoring clicks on child nodes\nExt.getBody().on('click', function(e,t){\n    if((t.id == 'some-el') && !e.within(t, true)){\n        alert('Clicked directly on some-el!');\n    }\n});\n
\n\n"}},"FocusManager":{"!doc":"

The FocusManager is responsible for globally:

\n\n
    \n
  1. Managing component focus
  2. \n
  3. Providing basic keyboard navigation
  4. \n
  5. (optional) Provide a visual cue for focused components, in the form of a focus ring/frame.
  6. \n
\n\n\n

To activate the FocusManager, simply call Ext.FocusManager.enable();. In turn, you may\ndeactivate the FocusManager by subsequently calling Ext.FocusManager.disable();. The\nFocusManager is disabled by default.

\n\n

To enable the optional focus frame, pass true or {focusFrame: true} to enable.

\n\n

Another feature of the FocusManager is to provide basic keyboard focus navigation scoped to any Ext.container.Container\nthat would like to have navigation between its child Ext.Component's.

\n","!type":"fn(config: Ext_FocusManager_cfg)","prototype":{"!proto":"Ext.Base.prototype"},"enabled":{"!type":"bool","!doc":"

Whether or not the FocusManager is currently enabled

\n"},"focusFrameCls":{"!type":"string"},"focusedCmp":{"!type":"+Ext.Component","!doc":"

The currently focused component.

\n"},"whitelist":{"!type":"[string]","!doc":"

A list of xtypes that should ignore certain navigation input keys and\nallow for the default browser event/behavior. These input keys include:

\n\n
    \n
  1. Backspace
  2. \n
  3. Delete
  4. \n
  5. Left
  6. \n
  7. Right
  8. \n
  9. Up
  10. \n
  11. Down
  12. \n
\n\n\n

The FocusManager will not attempt to navigate when a component is an xtype (or descendents thereof)\nthat belongs to this whitelist. E.g., an Ext.form.field.Text should allow\nthe user to move the input cursor left and right, and to delete characters, etc.

\n"},"addXTypeToWhitelist":{"!type":"fn(xtype: string|[string]) -> !this","!doc":"

Adds the specified xtype to the whitelist.

\n"},"clearComponent":{"!type":"fn(cmp: ?) -> !this"},"disable":{"!type":"fn(fm: +Ext.FocusManager, eOpts: ?)","!doc":"

Fires when the FocusManager is disabled

\n"},"enable":{"!type":"fn(fm: +Ext.FocusManager, eOpts: ?)","!doc":"

Fires when the FocusManager is enabled

\n"},"focusLast":{"!type":"fn(e: ?) -> !this"},"getRootComponents":{"!type":"fn() -> !this"},"handleComponentFocus":{"!type":"fn(cmp: ?, focusEl: ?) -> !this"},"initDOM":{"!type":"fn(options: ?) -> !this"},"isWhitelisted":{"!type":"fn(cmp: ?) -> !this"},"navigateIn":{"!type":"fn(e: ?) -> !this"},"navigateOut":{"!type":"fn(e: ?) -> !this"},"navigateSiblings":{"!type":"fn(e: ?, source: ?, parent: ?) -> !this"},"onComponentBlur":{"!type":"fn(cmp: ?, e: ?) -> !this"},"onComponentDestroy":{"!type":"fn() -> !this"},"onComponentFocus":{"!type":"fn(cmp: ?, e: ?) -> !this"},"onComponentHide":{"!type":"fn(cmp: ?) -> !this"},"removeDOM":{"!type":"fn() -> !this"},"removeXTypeFromWhitelist":{"!type":"fn(xtype: string|[string]) -> !this","!doc":"

Removes the specified xtype from the whitelist.

\n"},"setupSubscriberKeys":{"!type":"fn(container: ?, keys: ?) -> !this"},"shouldShowFocusFrame":{"!type":"fn(cmp: ?) -> !this"},"beforecomponentfocus":{"!type":"fn(fm: +Ext.FocusManager, cmp: +Ext.Component, previousCmp: +Ext.Component, eOpts: ?)","!doc":"

Fires before a component becomes focused. Return false to prevent\nthe component from gaining focus.

\n"},"componentfocus":{"!type":"fn(fm: +Ext.FocusManager, cmp: +Ext.Component, previousCmp: +Ext.Component, eOpts: ?)","!doc":"

Fires after a component becomes focused.

\n"}},"Function":{"!doc":"

A collection of useful static methods to deal with function callbacks

\n","alias":{"!type":"fn(object: ?|fn(), methodName: string) -> fn()","!doc":"

Create an alias to the provided method property with name methodName of object.\nNote that the execution scope will still be bound to the provided object itself.

\n"},"bind":{"!type":"fn(fn: fn(), scope?: ?, args?: [?], appendArgs?: bool|number) -> fn()","!doc":"

Create a new function from the provided fn, change this to the provided scope, optionally\noverrides arguments for the call. (Defaults to the arguments passed by the caller)

\n\n

Ext.bind is alias for Ext.Function.bind

\n"},"clone":{"!type":"fn(method: fn()) -> fn()","!doc":"

Create a \"clone\" of the provided method. The returned method will call the given\nmethod passing along all arguments and the \"this\" pointer and return its result.

\n"},"createBuffered":{"!type":"fn(fn: fn(), buffer: number, scope?: ?, args?: [?]) -> fn()","!doc":"

Creates a delegate function, optionally with a bound scope which, when called, buffers\nthe execution of the passed function for the configured number of milliseconds.\nIf called again within that period, the impending invocation will be canceled, and the\ntimeout period will begin again.

\n"},"createDelayed":{"!type":"fn(fn: fn(), delay: number, scope?: ?, args?: [?], appendArgs?: bool|number) -> fn()","!doc":"

Creates a delegate (callback) which, when called, executes after a specific delay.

\n"},"createInterceptor":{"!type":"fn(origFn: fn(), newFn: fn(), scope?: ?, returnValue?: ?) -> fn()","!doc":"

Creates an interceptor function. The passed function is called before the original one. If it returns false,\nthe original one is not called. The resulting function returns the results of the original function.\nThe passed function is called with the parameters of the original function. Example usage:

\n\n
var sayHi = function(name){\n    alert('Hi, ' + name);\n}\n\nsayHi('Fred'); // alerts \"Hi, Fred\"\n\n// create a new function that validates input without\n// directly modifying the original function:\nvar sayHiToFriend = Ext.Function.createInterceptor(sayHi, function(name){\n    return name == 'Brian';\n});\n\nsayHiToFriend('Fred');  // no alert\nsayHiToFriend('Brian'); // alerts \"Hi, Brian\"\n
\n"},"createSequence":{"!type":"fn(originalFn: fn(), newFn: fn(), scope?: ?) -> fn()","!doc":"

Create a combined function call sequence of the original function + the passed function.\nThe resulting function returns the results of the original function.\nThe passed function is called with the parameters of the original function. Example usage:

\n\n
var sayHi = function(name){\n    alert('Hi, ' + name);\n}\n\nsayHi('Fred'); // alerts \"Hi, Fred\"\n\nvar sayGoodbye = Ext.Function.createSequence(sayHi, function(name){\n    alert('Bye, ' + name);\n});\n\nsayGoodbye('Fred'); // both alerts show\n
\n"},"createThrottled":{"!type":"fn(fn: fn(), interval: number, scope?: ?) -> fn()","!doc":"

Creates a throttled version of the passed function which, when called repeatedly and\nrapidly, invokes the passed function only after a certain interval has elapsed since the\nprevious invocation.

\n\n

This is useful for wrapping functions which may be called repeatedly, such as\na handler of a mouse move event when the processing is expensive.

\n"},"defer":{"!type":"fn(fn: fn(), millis: number, scope?: ?, args?: [?], appendArgs?: bool|number) -> number","!doc":"

Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:

\n\n
var sayHi = function(name){\n    alert('Hi, ' + name);\n}\n\n// executes immediately:\nsayHi('Fred');\n\n// executes after 2 seconds:\nExt.Function.defer(sayHi, 2000, this, ['Fred']);\n\n// this syntax is sometimes useful for deferring\n// execution of an anonymous function:\nExt.Function.defer(function(){\n    alert('Anonymous');\n}, 100);\n
\n\n

Ext.defer is alias for Ext.Function.defer

\n"},"flexSetter":{"!type":"fn(setter: fn()) -> fn()","!doc":"

A very commonly used method throughout the framework. It acts as a wrapper around another method\nwhich originally accepts 2 arguments for name and value.\nThe wrapped function then allows \"flexible\" value setting of either:

\n\n\n\n\n

For example:

\n\n
var setValue = Ext.Function.flexSetter(function(name, value) {\n    this[name] = value;\n});\n\n// Afterwards\n// Setting a single name - value\nsetValue('name1', 'value1');\n\n// Settings multiple name - value pairs\nsetValue({\n    name1: 'value1',\n    name2: 'value2',\n    name3: 'value3'\n});\n
\n"},"interceptAfter":{"!type":"fn(object: ?, methodName: string, fn: fn(), scope?: ?) -> fn()","!doc":"

Adds behavior to an existing method that is executed after the\noriginal behavior of the function. For example:

\n\n
var soup = {\n    contents: [],\n    add: function(ingredient) {\n        this.contents.push(ingredient);\n    }\n};\nExt.Function.interceptAfter(soup, \"add\", function(ingredient){\n    // Always add a bit of extra salt\n    this.contents.push(\"salt\");\n});\nsoup.add(\"water\");\nsoup.add(\"onions\");\nsoup.contents; // will contain: water, salt, onions, salt\n
\n"},"interceptBefore":{"!type":"fn(object: ?, methodName: string, fn: fn(), scope?: ?) -> fn()","!doc":"

Adds behavior to an existing method that is executed before the\noriginal behavior of the function. For example:

\n\n
var soup = {\n    contents: [],\n    add: function(ingredient) {\n        this.contents.push(ingredient);\n    }\n};\nExt.Function.interceptBefore(soup, \"add\", function(ingredient){\n    if (!this.contents.length && ingredient !== \"water\") {\n        // Always add water to start with\n        this.contents.push(\"water\");\n    }\n});\nsoup.add(\"onions\");\nsoup.add(\"salt\");\nsoup.contents; // will contain: water, onions, salt\n
\n"},"pass":{"!type":"fn(fn: fn(), args: [?], scope?: ?) -> fn()","!doc":"

Create a new function from the provided fn, the arguments of which are pre-set to args.\nNew arguments passed to the newly created callback when it's invoked are appended after the pre-set ones.\nThis is especially useful when creating callbacks.

\n\n

For example:

\n\n
var originalFunction = function(){\n    alert(Ext.Array.from(arguments).join(' '));\n};\n\nvar callback = Ext.Function.pass(originalFunction, ['Hello', 'World']);\n\ncallback(); // alerts 'Hello World'\ncallback('by Me'); // alerts 'Hello World by Me'\n
\n\n

Ext.pass is alias for Ext.Function.pass

\n"}},"Img":{"!doc":"

Simple helper class for easily creating image components. This renders an image tag to\nthe DOM with the configured src.

\n\n

\"Ext.Img

\n\n

Example usage:

\n\n
var changingImage = Ext.create('Ext.Img', {\n    src: 'http://www.sencha.com/img/20110215-feat-html5.png',\n    renderTo: Ext.getBody()\n});\n\n// change the src of the image programmatically\nchangingImage.setSrc('http://www.sencha.com/img/20110215-feat-perf.png');\n
\n\n

By default, only an img element is rendered and that is this component's primary\nelement. If the Ext.AbstractComponent.autoEl property\nis other than 'img' (the default), the a child img element will be added to the primary\nelement. This can be used to create a wrapper element around the img.

\n\n

Wrapping the img in a div:

\n\n
var wrappedImage = Ext.create('Ext.Img', {\n    src: 'http://www.sencha.com/img/20110215-feat-html5.png',\n    autoEl: 'div', // wrap in a div\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_Img_cfg)","prototype":{"!proto":"Ext.Component.prototype","alt":{"!type":"string","!doc":"

The descriptive text for non-visual UI description.

\n"},"autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to serve as the image. If this option is used\nThe image will be rendered using a div with innerHTML set to the html entity\nfor the given character code. The default font-family for glyphs can be set\nglobally using Ext.setGlyphFontFamily(). Alternatively,\nthis config option accepts a string with the charCode and font-family separated by\nthe @ symbol. For example '65@My Font Family'.

\n"},"imgCls":{"!type":"string","!doc":"

Optional CSS classes to add to the img element.

\n"},"src":{"!type":"string","!doc":"

The image src.

\n"},"title":{"!type":"string","!doc":"

Specifies addtional information about the image.

\n"},"getElConfig":{"!type":"fn() -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"setGlyph":{"!type":"fn(glyph: ?) -> !this"},"setSrc":{"!type":"fn(src: string) -> !this","!doc":"

Updates the src of the image.

\n"}}},"JSON":{"!doc":"

Modified version of Douglas Crockford's JSON.js that doesn't\nmess with the Object prototype.

\n","decode":{"!type":"fn(json: string, safe?: bool) -> ?","!doc":"

Decodes (parses) a JSON string to an object. If the JSON is invalid, this function throws\na SyntaxError unless the safe option is set.

\n"},"encode":{"!type":"fn(o: ?) -> string","!doc":"

Encodes an Object, Array or other value.

\n\n

If the environment's native JSON encoding is not being used (Ext.USE_NATIVE_JSON is not set,\nor the environment does not support it), then ExtJS's encoding will be used. This allows the developer\nto add a toJSON method to their classes which need serializing to return a valid JSON representation\nof the object.

\n"},"encodeDate":{"!type":"fn(d: +Date) -> string","!doc":"

Encodes a Date. This returns the actual string which is inserted into the JSON string as the literal\nexpression. The returned value includes enclosing double quotation marks.

\n\n

The default return format is \"yyyy-mm-ddThh:mm:ss\".

\n\n

To override this:

\n\n
Ext.JSON.encodeDate = function(d) {\n    return Ext.Date.format(d, '\"Y-m-d\"');\n};\n
\n"},"encodeString":{"!type":"fn(s: string) -> string","!doc":"

Encodes a String. This returns the actual string which is inserted into the JSON string as the literal\nexpression. The returned value includes enclosing double quotation marks.

\n\n

To override this:

\n\n
Ext.JSON.encodeString = function(s) {\n    return 'Foo' + s;\n};\n
\n"},"encodeValue":{"!type":"fn(o: ?) -> string","!doc":"

The function which encode uses to encode all javascript values to their JSON representations\nwhen Ext.USE_NATIVE_JSON is false.

\n\n

This is made public so that it can be replaced with a custom implementation.

\n"}},"LoadMask":{"!doc":"

A modal, floating Component which may be shown above a specified Component while loading data.\nWhen shown, the configured owning Component will be covered with a modality mask, and the LoadMask's msg will be\ndisplayed centered, accompanied by a spinner image.

\n\n

If the store config option is specified, the masking will be automatically shown and then hidden synchronized with\nthe Store's loading process.

\n\n

Because this is a floating Component, its z-index will be managed by the global ZIndexManager\nobject, and upon show, it will place itsef at the top of the hierarchy.

\n\n

Example usage:

\n\n
// Basic mask:\nvar myMask = new Ext.LoadMask(myPanel, {msg:\"Please wait...\"});\nmyMask.show();\n
\n","!type":"fn(config?: Ext_LoadMask_cfg)","prototype":{"!proto":"Ext.Component.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"floating":{"!type":"bool","!doc":"

Obviously, it's floating.

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Masks are not focusable

\n"},"maskCls":{"!type":"string","!doc":"

The CSS class to apply to the mask element

\n"},"msg":{"!type":"string","!doc":"

The text to display in a centered loading message box.

\n"},"msgCls":{"!type":"string","!doc":"

The CSS class to apply to the loading message element.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

Optional Store to which the mask is bound. The mask is displayed when a load request is issued, and\nhidden on either load success, or load fail.

\n"},"target":{"!type":"+Ext.Component","!doc":"

The Component you wish to mask. The the mask will be automatically sized\nupon Component resize, and the message box will be kept centered.

\n"},"useMsg":{"!type":"bool","!doc":"

Whether or not to use a loading message class or simply mask the bound element.

\n"},"useTargetEl":{"!type":"bool","!doc":"

True to mask the targetEl of the bound Component. By default,\nthe el will be masked.

\n"},"bringParentToFront":{"!type":"bool","!doc":"

When we put the load mask to the front of it's owner, we generally don't want to also bring the owning\ncomponent to the front.

\n"},"childEls":{"!type":"[?]"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"afterShow":{"!type":"fn() -> !this","!doc":"

Invoked after the Component is shown (after onShow is called).

\n\n

Gets passed the same parameters as show.

\n"},"bindComponent":{"!type":"fn(comp: ?) -> !this"},"bindStore":{"!type":"fn(store: +Ext.data.Store) -> !this","!doc":"

Changes the data store bound to this LoadMask.

\n"},"getMaskEl":{"!type":"fn() -> !this"},"getMaskTarget":{"!type":"fn() -> !this"},"getOwner":{"!type":"fn() -> !this"},"getStoreListeners":{"!type":"fn(store: ?) -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"hide":{"!type":"fn() -> +Ext.Component","!doc":"

Hides this Component, setting it to invisible using the configured hideMode.

\n"},"isActiveContainer":{"!type":"fn(container: ?) -> !this"},"maybeShow":{"!type":"fn() -> !this"},"onBeforeLoad":{"!type":"fn() -> !this"},"onComponentAdded":{"!type":"fn(owner: ?) -> !this"},"onComponentHide":{"!type":"fn() -> !this"},"onComponentRemoved":{"!type":"fn(owner: ?) -> !this"},"onComponentShow":{"!type":"fn() -> !this"},"onContainerCollapse":{"!type":"fn(container: ?) -> !this"},"onContainerExpand":{"!type":"fn(container: ?) -> !this"},"onContainerHide":{"!type":"fn(container: ?) -> !this"},"onContainerShow":{"!type":"fn(container: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the disable operation.\nAfter calling the superclass's onDisable, the Component will be disabled.

\n"},"onHide":{"!type":"fn() -> !this","!doc":"

Possibly animates down to a target element.

\n\n

Allows addition of behavior to the hide operation. After\ncalling the superclass’s onHide, the Component will be hidden.

\n\n

Gets passed the same parameters as hide.

\n"},"onLoad":{"!type":"fn() -> !this"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"setZIndex":{"!type":"fn(index: ?) -> !this","!doc":"

z-index is managed by the zIndexManager and may be overwritten at any time.\nReturns the next z-index to be used.\nIf this is a Container, then it will have rebased any managed floating Components,\nand so the next available z-index will be approximately 10000 above that.

\n"},"show":{"!type":"fn() -> +Ext.Component","!doc":"

Shows this Component, rendering it first if autoRender or floating are true.

\n\n

After being shown, a floating Component (such as a Ext.window.Window), is activated it and\nbrought to the front of its z-index stack.

\n"},"sizeMask":{"!type":"fn() -> !this","!doc":"

Called when this LoadMask's Component is resized. The toFront method rebases and resizes the modal mask.

\n"}}},"Loader":{"!doc":"

Ext.Loader is the heart of the new dynamic dependency loading capability in Ext JS 4+. It is most commonly used\nvia the Ext.require shorthand. Ext.Loader supports both asynchronous and synchronous loading\napproaches, and leverage their advantages for the best development flow. We'll discuss about the pros and cons of each approach:

\n\n

Asynchronous Loading

\n\n\n\n\n

Method 1: Explicitly include what you need:

\n\n
// Syntax\nExt.require({String/Array} expressions);\n\n// Example: Single alias\nExt.require('widget.window');\n\n// Example: Single class name\nExt.require('Ext.window.Window');\n\n// Example: Multiple aliases / class names mix\nExt.require(['widget.window', 'layout.border', 'Ext.data.Connection']);\n\n// Wildcards\nExt.require(['widget.*', 'layout.*', 'Ext.data.*']);\n
\n\n

Method 2: Explicitly exclude what you don't need:

\n\n
// Syntax: Note that it must be in this chaining format.\nExt.exclude({String/Array} expressions)\n   .require({String/Array} expressions);\n\n// Include everything except Ext.data.*\nExt.exclude('Ext.data.*').require('*');\n\n// Include all widgets except widget.checkbox*,\n// which will match widget.checkbox, widget.checkboxfield, widget.checkboxgroup, etc.\nExt.exclude('widget.checkbox*').require('widget.*');\n
\n\n

Synchronous Loading on Demand

\n\n\n\n\n

There's one simple rule to follow: Instantiate everything with Ext.create instead of the new keyword

\n\n
Ext.create('widget.window', { ... }); // Instead of new Ext.window.Window({...});\n\nExt.create('Ext.window.Window', {}); // Same as above, using full class name instead of alias\n\nExt.widget('window', {}); // Same as above, all you need is the traditional `xtype`\n
\n\n

Behind the scene, Ext.ClassManager will automatically check whether the given class name / alias has already\n existed on the page. If it's not, Ext.Loader will immediately switch itself to synchronous mode and automatic load the given\n class and all its dependencies.

\n\n

Hybrid Loading - The Best of Both Worlds

\n\n

It has all the advantages combined from asynchronous and synchronous loading. The development flow is simple:

\n\n

Step 1: Start writing your application using synchronous approach.

\n\n

Ext.Loader will automatically fetch all dependencies on demand as they're needed during run-time. For example:

\n\n
Ext.onReady(function(){\n    var window = Ext.widget('window', {\n        width: 500,\n        height: 300,\n        layout: {\n            type: 'border',\n            padding: 5\n        },\n        title: 'Hello Dialog',\n        items: [{\n            title: 'Navigation',\n            collapsible: true,\n            region: 'west',\n            width: 200,\n            html: 'Hello',\n            split: true\n        }, {\n            title: 'TabPanel',\n            region: 'center'\n        }]\n    });\n\n    window.show();\n})\n
\n\n

Step 2: Along the way, when you need better debugging ability, watch the console for warnings like these:

\n\n
[Ext.Loader] Synchronously loading 'Ext.window.Window'; consider adding Ext.require('Ext.window.Window') before your application's code\nClassManager.js:432\n[Ext.Loader] Synchronously loading 'Ext.layout.container.Border'; consider adding Ext.require('Ext.layout.container.Border') before your application's code\n
\n\n

Simply copy and paste the suggested code above Ext.onReady, i.e:

\n\n
Ext.require('Ext.window.Window');\nExt.require('Ext.layout.container.Border');\n\nExt.onReady(...);\n
\n\n

Everything should now load via asynchronous mode.

\n\n

Deployment

\n\n

It's important to note that dynamic loading should only be used during development on your local machines.\nDuring production, all dependencies should be combined into one single JavaScript file. Ext.Loader makes\nthe whole process of transitioning from / to between development / maintenance and production as easy as\npossible. Internally Ext.Loader.history maintains the list of all dependencies your application\nneeds in the exact loading sequence. It's as simple as concatenating all files in this array into one,\nthen include it on top of your application.

\n\n

This process will be automated with Sencha Command, to be released and documented towards Ext JS 4 Final.

\n","disableCaching":{"!type":"bool","!doc":"

Appends current timestamp to script files to prevent caching.

\n"},"disableCachingParam":{"!type":"string","!doc":"

The get parameter name for the cache buster's timestamp.

\n"},"enabled":{"!type":"bool","!doc":"

Whether or not to enable the dynamic dependency loading feature.

\n"},"garbageCollect":{"!type":"bool","!doc":"

True to prepare an asynchronous script tag for garbage collection (effective only\nif preserveScripts is false)

\n"},"paths":{"!type":"?","!doc":"

The mapping from namespaces to file paths

\n\n
{\n    'Ext': '.', // This is set by default, Ext.layout.container.Container will be\n                // loaded from ./layout/Container.js\n\n    'My': './src/my_own_folder' // My.layout.Container will be loaded from\n                                // ./src/my_own_folder/layout/Container.js\n}\n
\n\n

Note that all relative paths are relative to the current HTML document.\nIf not being specified, for example, Other.awesome.Class\nwill simply be loaded from ./Other/awesome/Class.js

\n"},"preserveScripts":{"!type":"bool","!doc":"

False to remove and optionally garbage-collect asynchronously loaded scripts,\nTrue to retain script element for browser debugger compatibility and improved load performance.

\n"},"scriptChainDelay":{"!type":"bool","!doc":"

millisecond delay between asynchronous script injection (prevents stack overflow on some user agents)\n'false' disables delay but potentially increases stack load.

\n"},"scriptCharset":{"!type":"string","!doc":"

Optional charset to specify encoding of dynamic script content.

\n"},"classNameToFilePathMap":{"!type":"?"},"config":{"!type":"?","!doc":"

Configuration

\n"},"documentHead":{"!type":"?"},"hasFileLoadError":{"!type":"bool"},"history":{"!type":"[?]","!doc":"

An array of class names to keep track of the dependency loading order.\nThis is not guaranteed to be the same everytime due to the asynchronous\nnature of the Loader.

\n"},"isClassFileLoaded":{"!type":"?","!doc":"

Maintain the list of files that have already been handled so that they never get double-loaded

\n"},"isFileLoaded":{"!type":"?"},"isInHistory":{"!type":"?"},"isLoading":{"!type":"bool","!doc":"

Flag indicating whether there are still files being loaded

\n"},"numLoadedFiles":{"!type":"number"},"numPendingFiles":{"!type":"number"},"optionalRequires":{"!type":"?","!doc":"

Contains classes referenced in uses properties.

\n"},"queue":{"!type":"?","!doc":"

Maintain the queue for all dependencies. Each item in the array is an object of the format:

\n\n
{\n     requires: [...], // The required classes for this queue item\n     callback: function() { ... } // The function to execute when all classes specified in requires exist\n}\n
\n"},"readyListeners":{"!type":"?","!doc":"

Maintain the list of listeners to execute when all required scripts are fully loaded

\n"},"requiresMap":{"!type":"?","!doc":"

Map of fully qualified class names to an array of dependent classes.

\n"},"scriptsLoading":{"!type":"number","!doc":"

The number of scripts loading via loadScript.

\n"},"syncModeEnabled":{"!type":"bool"},"addClassPathMappings":{"!type":"fn(paths: ?) -> +Ext.Loader","!doc":"

Sets a batch of path entries

\n"},"addUsedClasses":{"!type":"fn(classes: ?) -> !this","!doc":"

Ensure that any classes referenced in the uses property are loaded.

\n"},"cleanupScriptElement":{"!type":"fn(script: ?, remove: ?, collect: ?) -> !this"},"disableCacheBuster":{"!type":"fn(disable: bool, path?: string) -> !this","!doc":"

Turns on or off the \"cache buster\" applied to dynamically loaded scripts. Normally\ndynamically loaded scripts have an extra query parameter appended to avoid stale\ncached scripts. This method can be used to disable this mechanism, and is primarily\nuseful for testing. This is done using a cookie.

\n"},"exclude":{"!type":"fn(excludes: [?]) -> ?","!doc":"

Explicitly exclude files from being loaded. Useful when used in conjunction with a broad include expression.\nCan be chained with more require and exclude methods, eg:

\n\n
Ext.exclude('Ext.data.*').require('*');\n\nExt.exclude('widget.button*').require('widget.*');\n
\n\n

Ext.exclude is alias for exclude.

\n"},"getConfig":{"!type":"fn(name: string) -> ?","!doc":"

Get the config value corresponding to the specified name. If no name is given, will return the config object

\n"},"getPath":{"!type":"fn(className: string) -> string","!doc":"

Translates a className to a file path by adding the\nthe proper prefix and converting the .'s to /'s. For example:

\n\n
Ext.Loader.setPath('My', '/path/to/My');\n\nalert(Ext.Loader.getPath('My.awesome.Class')); // alerts '/path/to/My/awesome/Class.js'\n
\n\n

Note that the deeper namespace levels, if explicitly set, are always resolved first. For example:

\n\n
Ext.Loader.setPath({\n    'My': '/path/to/lib',\n    'My.awesome': '/other/path/for/awesome/stuff',\n    'My.awesome.more': '/more/awesome/path'\n});\n\nalert(Ext.Loader.getPath('My.awesome.Class')); // alerts '/other/path/for/awesome/stuff/Class.js'\n\nalert(Ext.Loader.getPath('My.awesome.more.Class')); // alerts '/more/awesome/path/Class.js'\n\nalert(Ext.Loader.getPath('My.cool.Class')); // alerts '/path/to/lib/cool/Class.js'\n\nalert(Ext.Loader.getPath('Unknown.strange.Stuff')); // alerts 'Unknown/strange/Stuff.js'\n
\n"},"getPrefix":{"!type":"fn(className: string) -> !this"},"historyPush":{"!type":"fn(className: string) -> !this"},"injectScriptElement":{"!type":"fn(url: ?, onLoad: ?, onError: ?, scope: ?, charset: ?) -> !this","!doc":"

Inject a script element to document's head, call onLoad and onError accordingly

\n"},"isAClassNameWithAKnownPrefix":{"!type":"fn(className: string) -> !this"},"loadScript":{"!type":"fn(options: ?|string) -> !this","!doc":"

Loads the specified script URL and calls the supplied callbacks. If this method\nis called before Ext.isReady, the script's load will delay the transition\nto ready. This can be used to load arbitrary scripts that may contain further\nExt.require calls.

\n"},"loadScriptFile":{"!type":"fn(url: ?, onLoad: ?, onError: ?, scope: ?, synchronous: ?) -> !this","!doc":"

Load a script file, supports both asynchronous and synchronous approaches

\n"},"onFileLoadError":{"!type":"fn(className: ?, filePath: ?, errorMessage: ?, isSynchronous: ?) -> !this"},"onFileLoaded":{"!type":"fn(className: string, filePath: string) -> !this"},"onReady":{"!type":"fn(fn: fn(), scope: ?, withDomReady: bool) -> !this","!doc":"

Add a new listener to be executed when all required scripts are fully loaded

\n"},"refreshQueue":{"!type":"fn() -> !this","!doc":"

Refresh all items in the queue. If all dependencies for an item exist during looping,\nit will execute the callback and call refreshQueue again. Triggers onReady when the queue is\nempty

\n"},"removeScriptElement":{"!type":"fn(url: ?) -> !this"},"require":{"!type":"fn(expressions: string|[?], fn?: fn(), scope?: ?, excludes?: string|[?]) -> !this","!doc":"

Loads all classes by the given names and all their direct dependencies; optionally executes\nthe given callback function when finishes, within the optional scope.

\n\n

Ext.require is alias for require.

\n"},"setConfig":{"!type":"fn(config: ?) -> +Ext.Loader","!doc":"

Set the configuration for the loader. This should be called right after ext-(debug).js\nis included in the page, and before Ext.onReady. i.e:

\n\n
<script type=\"text/javascript\" src=\"ext-core-debug.js\"></script>\n<script type=\"text/javascript\">\n    Ext.Loader.setConfig({\n      enabled: true,\n      paths: {\n          'My': 'my_own_path'\n      }\n    });\n</script>\n<script type=\"text/javascript\">\n    Ext.require(...);\n\n    Ext.onReady(function() {\n      // application code here\n    });\n</script>\n
\n\n

Refer to config options of Ext.Loader for the list of possible properties

\n"},"setPath":{"!type":"fn(name: string|?, path?: string) -> +Ext.Loader","!doc":"

Sets the path of a namespace.\nFor Example:

\n\n
Ext.Loader.setPath('Ext', '.');\n
\n"},"syncRequire":{"!type":"fn(expressions: string|[?], fn?: fn(), scope?: ?, excludes?: string|[?]) -> !this","!doc":"

Synchronously loads all classes by the given names and all their direct dependencies; optionally\nexecutes the given callback function when finishes, within the optional scope.

\n\n

Ext.syncRequire is alias for syncRequire.

\n"},"triggerReady":{"!type":"fn() -> !this"}},"MessageBox":{"!doc":"

Singleton instance of Ext.window.MessageBox.

\n","!type":"fn(cfg: ?)","prototype":{"!proto":"Ext.window.MessageBox.prototype"}},"ModelManager":{"!doc":"

The ModelManager keeps track of all Ext.data.Model types defined in your application.

\n\n

Creating Model Instances

\n\n

Model instances can be created by using the Ext.create method. Ext.create replaces\nthe deprecated Ext.ModelManager.create method. It is also possible to create a model instance\nthis by using the Model type directly. The following 3 snippets are equivalent:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['first', 'last']\n});\n\n// method 1, create using Ext.create (recommended)\nExt.create('User', {\n    first: 'Ed',\n    last: 'Spencer'\n});\n\n// method 2, create through the manager (deprecated)\nExt.ModelManager.create({\n    first: 'Ed',\n    last: 'Spencer'\n}, 'User');\n\n// method 3, create on the type directly\nnew User({\n    first: 'Ed',\n    last: 'Spencer'\n});\n
\n\n

Accessing Model Types

\n\n

A reference to a Model type can be obtained by using the getModel function. Since models types\nare normal classes, you can access the type directly. The following snippets are equivalent:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['first', 'last']\n});\n\n// method 1, access model type through the manager\nvar UserType = Ext.ModelManager.getModel('User');\n\n// method 2, reference the type directly\nvar UserType = User;\n
\n","!type":"fn(config: Ext_ModelManager_cfg)","prototype":{"!proto":"Ext.AbstractManager.prototype"},"associationStack":{"!type":"[+Ext.data.association.Association]","!doc":"

Private stack of associations that must be created once their associated model has been defined

\n"},"typeName":{"!type":"string","!doc":"

End Definitions

\n"},"create":{"!type":"fn(data: ?, name: string, id?: number) -> !this","!doc":"

Creates a new instance of a Model using the given data. Deprecated, instead use Ext.create:

\n\n
Ext.create('User', {\n    first: 'Ed',\n    last: 'Spencer'\n});\n
\n"},"getModel":{"!type":"fn(id: string|?) -> +Ext.data.Model","!doc":"

Returns the Ext.data.Model class for a given model name

\n"},"onModelDefined":{"!type":"fn(model: fn()) -> !this","!doc":"

Private callback called whenever a model has just been defined. This sets up any associations\nthat were waiting for the given model to be defined

\n"},"registerDeferredAssociation":{"!type":"fn(association: +Ext.data.association.Association) -> !this","!doc":"

Registers an association where one of the models defined doesn't exist yet.\nThe ModelManager will check when new models are registered if it can link them\ntogether

\n"},"registerType":{"!type":"fn(name: ?, config: ?) -> !this","!doc":"

Registers a model definition. All model plugins marked with isDefault: true are bootstrapped\nimmediately, as are any addition plugins defined in the model config.

\n"},"unregisterType":{"!type":"fn(name: ?) -> !this","!doc":"

Unregisters a model definition. Generally used by stores with implicit model classes.

\n"}},"Number":{"!doc":"

A collection of useful static methods to deal with numbers

\n","constrain":{"!type":"fn(number: number, min: number, max: number) -> number","!doc":"

Checks whether or not the passed number is within a desired range. If the number is already within the\nrange it is returned, otherwise the min or max value is returned depending on which side of the range is\nexceeded. Note that this method returns the constrained value but does not change the current number.

\n"},"correctFloat":{"!type":"fn(The: number) -> number","!doc":"

Corrects floating point numbers that overflow to a non-precise\nvalue because of their floating nature, for example 0.1 + 0.2

\n"},"from":{"!type":"fn(value: ?, defaultValue: number) -> number","!doc":"

Validate that a value is numeric and convert it to a number if necessary. Returns the specified default value if\nit is not.

\n\n
Ext.Number.from('1.23', 1); // returns 1.23\nExt.Number.from('abc', 1); // returns 1\n
\n"},"randomInt":{"!type":"fn(from: number, to: number) -> number","!doc":"

Returns a random integer between the specified range (inclusive)

\n"},"snap":{"!type":"fn(value: number, increment: number, minValue: number, maxValue: number) -> number","!doc":"

Snaps the passed number between stopping points based upon a passed increment value.

\n\n

The difference between this and snapInRange is that snapInRange uses the minValue\nwhen calculating snap points:

\n\n
r = Ext.Number.snap(56, 2, 55, 65);        // Returns 56 - snap points are zero based\n\nr = Ext.Number.snapInRange(56, 2, 55, 65); // Returns 57 - snap points are based from minValue\n
\n"},"snapInRange":{"!type":"fn(value: number, increment: number, minValue?: number, maxValue?: number) -> number","!doc":"

Snaps the passed number between stopping points based upon a passed increment value.

\n\n

The difference between this and snap is that snap does not use the minValue\nwhen calculating snap points:

\n\n
r = Ext.Number.snap(56, 2, 55, 65);        // Returns 56 - snap points are zero based\n\nr = Ext.Number.snapInRange(56, 2, 55, 65); // Returns 57 - snap points are based from minValue\n
\n"},"toFixed":{"!type":"fn(value: number, precision: number) -> !this","!doc":"

Formats a number using fixed-point notation

\n"}},"Object":{"!doc":"

A collection of useful static methods to deal with objects.

\n","chain":{"!type":"fn(object: ?) -> !this","!doc":"

Returns a new object with the given object as the prototype chain. This method is\ndesigned to mimic the ECMA standard Object.create method and is assigned to that\nfunction when it is available.

\n\n

NOTE This method does not support the property definitions capability of the\nObject.create method. Only the first argument is supported.

\n"},"classify":{"!type":"fn(object: ?) -> !this"},"each":{"!type":"fn(object: ?, fn: fn(), scope?: ?) -> !this","!doc":"

Iterates through an object and invokes the given callback function for each iteration.\nThe iteration can be stopped by returning false in the callback function. For example:

\n\n
var person = {\n    name: 'Jacky'\n    hairColor: 'black'\n    loves: ['food', 'sleeping', 'wife']\n};\n\nExt.Object.each(person, function(key, value, myself) {\n    console.log(key + \":\" + value);\n\n    if (key === 'hairColor') {\n        return false; // stop the iteration\n    }\n});\n
\n"},"equals":{"!type":"fn(object1: ?, object2: ?) -> bool","!doc":"

Shallow compares the contents of 2 objects using strict equality. Objects are\nconsidered equal if they both have the same set of properties and the\nvalue for those properties equals the other in the corresponding object.

\n\n
// Returns true\nExt.Object.equals({\n    foo: 1,\n    bar: 2\n}, {\n    foo: 1,\n    bar: 2\n});\n
\n"},"fromQueryString":{"!type":"fn(queryString: string, recursive?: bool) -> ?","!doc":"

Converts a query string back into an object.

\n\n

Non-recursive:

\n\n
Ext.Object.fromQueryString(\"foo=1&bar=2\"); // returns {foo: '1', bar: '2'}\nExt.Object.fromQueryString(\"foo=&bar=2\"); // returns {foo: null, bar: '2'}\nExt.Object.fromQueryString(\"some%20price=%24300\"); // returns {'some price': '$300'}\nExt.Object.fromQueryString(\"colors=red&colors=green&colors=blue\"); // returns {colors: ['red', 'green', 'blue']}\n
\n\n

Recursive:

\n\n
Ext.Object.fromQueryString(\n    \"username=Jacky&\"+\n    \"dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911&\"+\n    \"hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&\"+\n    \"hobbies[3][0]=nested&hobbies[3][1]=stuff\", true);\n\n// returns\n{\n    username: 'Jacky',\n    dateOfBirth: {\n        day: '1',\n        month: '2',\n        year: '1911'\n    },\n    hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']]\n}\n
\n"},"getKey":{"!type":"fn(object: ?, value: ?) -> !this","!doc":"

Returns the first matching key corresponding to the given value.\nIf no matching value is found, null is returned.

\n\n
var person = {\n    name: 'Jacky',\n    loves: 'food'\n};\n\nalert(Ext.Object.getKey(person, 'food')); // alerts 'loves'\n
\n"},"getKeys":{"!type":"fn(object: ?) -> [string]","!doc":"

Gets all keys of the given object as an array.

\n\n
var values = Ext.Object.getKeys({\n    name: 'Jacky',\n    loves: 'food'\n}); // ['name', 'loves']\n
\n"},"getSize":{"!type":"fn(object: ?) -> number","!doc":"

Gets the total number of this object's own properties

\n\n
var size = Ext.Object.getSize({\n    name: 'Jacky',\n    loves: 'food'\n}); // size equals 2\n
\n"},"getValues":{"!type":"fn(object: ?) -> [?]","!doc":"

Gets all values of the given object as an array.

\n\n
var values = Ext.Object.getValues({\n    name: 'Jacky',\n    loves: 'food'\n}); // ['Jacky', 'food']\n
\n"},"isEmpty":{"!type":"fn(object: ?) -> bool","!doc":"

Checks if there are any properties on this object.

\n"},"merge":{"!type":"fn(destination: ?, object: ?) -> ?","!doc":"

Merges any number of objects recursively without referencing them or their children.

\n\n
var extjs = {\n    companyName: 'Ext JS',\n    products: ['Ext JS', 'Ext GWT', 'Ext Designer'],\n    isSuperCool: true,\n    office: {\n        size: 2000,\n        location: 'Palo Alto',\n        isFun: true\n    }\n};\n\nvar newStuff = {\n    companyName: 'Sencha Inc.',\n    products: ['Ext JS', 'Ext GWT', 'Ext Designer', 'Sencha Touch', 'Sencha Animator'],\n    office: {\n        size: 40000,\n        location: 'Redwood City'\n    }\n};\n\nvar sencha = Ext.Object.merge(extjs, newStuff);\n\n// extjs and sencha then equals to\n{\n    companyName: 'Sencha Inc.',\n    products: ['Ext JS', 'Ext GWT', 'Ext Designer', 'Sencha Touch', 'Sencha Animator'],\n    isSuperCool: true,\n    office: {\n        size: 40000,\n        location: 'Redwood City',\n        isFun: true\n    }\n}\n
\n"},"mergeIf":{"!type":"fn(destination: ?) -> !this"},"toQueryObjects":{"!type":"fn(name: string, value: ?|[?], recursive?: bool) -> [?]","!doc":"

Converts a name - value pair to an array of objects with support for nested structures. Useful to construct\nquery strings. For example:

\n\n
var objects = Ext.Object.toQueryObjects('hobbies', ['reading', 'cooking', 'swimming']);\n\n// objects then equals:\n[\n    { name: 'hobbies', value: 'reading' },\n    { name: 'hobbies', value: 'cooking' },\n    { name: 'hobbies', value: 'swimming' },\n];\n\nvar objects = Ext.Object.toQueryObjects('dateOfBirth', {\n    day: 3,\n    month: 8,\n    year: 1987,\n    extra: {\n        hour: 4\n        minute: 30\n    }\n}, true); // Recursive\n\n// objects then equals:\n[\n    { name: 'dateOfBirth[day]', value: 3 },\n    { name: 'dateOfBirth[month]', value: 8 },\n    { name: 'dateOfBirth[year]', value: 1987 },\n    { name: 'dateOfBirth[extra][hour]', value: 4 },\n    { name: 'dateOfBirth[extra][minute]', value: 30 },\n];\n
\n"},"toQueryString":{"!type":"fn(object: ?, recursive?: bool) -> string","!doc":"

Takes an object and converts it to an encoded query string.

\n\n

Non-recursive:

\n\n
Ext.Object.toQueryString({foo: 1, bar: 2}); // returns \"foo=1&bar=2\"\nExt.Object.toQueryString({foo: null, bar: 2}); // returns \"foo=&bar=2\"\nExt.Object.toQueryString({'some price': '$300'}); // returns \"some%20price=%24300\"\nExt.Object.toQueryString({date: new Date(2011, 0, 1)}); // returns \"date=%222011-01-01T00%3A00%3A00%22\"\nExt.Object.toQueryString({colors: ['red', 'green', 'blue']}); // returns \"colors=red&colors=green&colors=blue\"\n
\n\n

Recursive:

\n\n
Ext.Object.toQueryString({\n    username: 'Jacky',\n    dateOfBirth: {\n        day: 1,\n        month: 2,\n        year: 1911\n    },\n    hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']]\n}, true); // returns the following string (broken down and url-decoded for ease of reading purpose):\n// username=Jacky\n//    &dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911\n//    &hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&hobbies[3][0]=nested&hobbies[3][1]=stuff\n
\n"}},"PluginManager":{"!doc":"

Provides a registry of available Plugin classes indexed by a mnemonic code known as the Plugin's ptype.

\n\n

A plugin may be specified simply as a config object as long as the correct ptype is specified:

\n\n
{\n    ptype: 'gridviewdragdrop',\n    dragText: 'Drag and drop to reorganize'\n}\n
\n\n

Or just use the ptype on its own:

\n\n
'gridviewdragdrop'\n
\n\n

Alternatively you can instantiate the plugin with Ext.create:

\n\n
Ext.create('Ext.grid.plugin.DragDrop', {\n    dragText: 'Drag and drop to reorganize'\n})\n
\n","!type":"fn(config: Ext_PluginManager_cfg)","prototype":{"!proto":"Ext.AbstractManager.prototype"},"typeName":{"!type":"string","!doc":"

End Definitions

\n"},"create":{"!type":"fn(config: ?, defaultType?: fn()) -> +Ext.Component","!doc":"

Creates a new Plugin from the specified config object using the config object's ptype to determine the class to\ninstantiate.

\n"},"findByType":{"!type":"fn(type: string, defaultsOnly: bool) -> [+Ext.AbstractPlugin]","!doc":"

Returns all plugins registered with the given type. Here, 'type' refers to the type of plugin, not its ptype.

\n"}},"ProgressBar":{"!doc":"

An updateable progress bar component. The progress bar supports two different modes: manual and automatic.

\n\n

In manual mode, you are responsible for showing, updating (via updateProgress) and clearing the progress bar\nas needed from your own code. This method is most appropriate when you want to show progress throughout an operation\nthat has predictable points of interest at which you can update the control.

\n\n

In automatic mode, you simply call wait and let the progress bar run indefinitely, only clearing it once the\noperation is complete. You can optionally have the progress bar wait for a specific amount of time and then clear\nitself. Automatic mode is most appropriate for timed operations or asynchronous operations in which you have no need\nfor indicating intermediate progress.

\n\n
var p = Ext.create('Ext.ProgressBar', {\n   renderTo: Ext.getBody(),\n   width: 300\n});\n\n// Wait for 5 seconds, then update the status el (progress bar will auto-reset)\np.wait({\n    interval: 500, //bar will move fast!\n    duration: 50000,\n    increment: 15,\n    text: 'Updating...',\n    scope: this,\n    fn: function(){\n        p.updateText('Done!');\n    }\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_ProgressBar_cfg)","prototype":{"!proto":"Ext.Component.prototype","animate":{"!type":"bool|?","!doc":"

True to animate the progress bar during transitions, or an animation configuration\n(see the animate method for details).

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to the progress bar's wrapper element.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"id":{"!type":"string","!doc":"

The progress bar element's id (defaults to an auto-generated id)

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"text":{"!type":"string","!doc":"

The text shown in the progress bar.

\n"},"textEl":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The element to render the progress text to (defaults to the progress bar's internal text element)

\n"},"value":{"!type":"number","!doc":"

A floating point value between 0 and 1 (e.g., .5)

\n"},"childEls":{"!type":"[?]"},"waitTimer":{"!type":"?","!doc":"

private

\n"},"applyText":{"!type":"fn(text: ?) -> !this"},"clearTimer":{"!type":"fn() -> !this","!doc":"

private

\n"},"getText":{"!type":"fn() -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"isWaiting":{"!type":"fn() -> bool","!doc":"

Returns true if the progress bar is currently in a wait operation

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"reset":{"!type":"fn(hide?: bool) -> +Ext.ProgressBar","!doc":"

Resets the progress bar value to 0 and text to empty string. If hide = true, the progress bar will also be hidden\n(using the hideMode property internally).

\n"},"updateProgress":{"!type":"fn(value?: number, text?: string, animate?: bool) -> +Ext.ProgressBar","!doc":"

Updates the progress bar value, and optionally its text. If the text argument is not specified, any existing text\nvalue will be unchanged. To blank out existing text, pass ''. Note that even if the progress bar value exceeds 1,\nit will never automatically reset -- you are responsible for determining when the progress is complete and\ncalling reset to clear and/or hide the control.

\n"},"updateText":{"!type":"fn(text?: string) -> +Ext.ProgressBar","!doc":"

Updates the progress bar text. If specified, textEl will be updated, otherwise the progress bar itself will\ndisplay the updated text.

\n"},"wait":{"!type":"fn(config?: ?) -> +Ext.ProgressBar","!doc":"

Initiates an auto-updating progress bar. A duration can be specified, in which case the progress bar will\nautomatically reset after a fixed amount of time and optionally call a callback function if specified. If no\nduration is passed in, then the progress bar will run indefinitely and must be manually cleared by calling\nreset.

\n\n

Example usage:

\n\n
var p = new Ext.ProgressBar({\n   renderTo: 'my-el'\n});\n\n//Wait for 5 seconds, then update the status el (progress bar will auto-reset)\nvar p = Ext.create('Ext.ProgressBar', {\n   renderTo: Ext.getBody(),\n   width: 300\n});\n\n//Wait for 5 seconds, then update the status el (progress bar will auto-reset)\np.wait({\n   interval: 500, //bar will move fast!\n   duration: 50000,\n   increment: 15,\n   text: 'Updating...',\n   scope: this,\n   fn: function(){\n      p.updateText('Done!');\n   }\n});\n\n//Or update indefinitely until some async action completes, then reset manually\np.wait();\nmyAction.on('complete', function(){\n    p.reset();\n    p.updateText('Done!');\n});\n
\n"},"update":{"!type":"fn(this: +Ext.ProgressBar, value: number, text: string, eOpts: ?)","!doc":"

Fires after each update interval

\n"}}},"Queryable":{"!doc":"

A mixin for providing query related methods for Ext.ComponentQuery for components that\nimplement getRefItems.

\n","prototype":{"isQueryable":{"!type":"bool"},"child":{"!type":"fn(selector?: string|+Ext.Component) -> ?","!doc":"

Retrieves the first direct child of this container which matches the passed selector or component.\nThe passed in selector must comply with an Ext.ComponentQuery selector, or it can be an actual Ext.Component.

\n"},"down":{"!type":"fn(selector?: string|+Ext.Component) -> ?","!doc":"

Retrieves the first descendant of this container which matches the passed selector.\nThe passed in selector must comply with an Ext.ComponentQuery selector, or it can be an actual Ext.Component.

\n"},"getRefItems":{"!type":"fn() -> !this"},"query":{"!type":"fn(selector?: string) -> [+Ext.Component]","!doc":"

Retrieves all descendant components which match the passed selector.\nExecutes an Ext.ComponentQuery.query using this container as its root.

\n"},"queryBy":{"!type":"fn(fn: fn(), scope?: ?) -> [+Ext.Component]","!doc":"

Retrieves all descendant components which match the passed function.\nThe function should return false for components that are to be\nexcluded from the selection.

\n"},"queryById":{"!type":"fn(id: string) -> +Ext.Component","!doc":"

Finds a component at any level under this container matching the id/itemId.\nThis is a shorthand for calling ct.down('#' + id);

\n"}}},"Shadow":{"!doc":"

Simple class that can provide a shadow effect for any element. Note that the element\nMUST be absolutely positioned, and the shadow does not provide any shimming. This\nshould be used only in simple cases - for more advanced functionality that can also\nprovide the same shadow effect, see the Ext.Layer class.

\n","!type":"fn(config?: Ext_Shadow_cfg)","prototype":{"!proto":"Ext.Base.prototype","mode":{"!type":"string","!doc":"

The shadow display mode. Supports the following options:

\n\n\n\n"},"offset":{"!type":"number","!doc":"

The number of pixels to offset the shadow from the element

\n"},"boxShadowProperty":{"!type":"?","!doc":"

private - CSS property to use to set the box shadow

\n"},"defaultMode":{"!type":"string","!doc":"

private

\n"},"localXYNames":{"!type":"?"},"getShadowSize":{"!type":"fn() -> [number]","!doc":"

Returns the shadow size on each side of the element in standard CSS order: top, right, bottom, left;

\n"},"hide":{"!type":"fn() -> !this","!doc":"

Hides this shadow

\n"},"isVisible":{"!type":"fn() -> !this","!doc":"

Returns true if the shadow is visible, else false

\n"},"realign":{"!type":"fn(left: number, top: number, width: number, height: number) -> !this","!doc":"

Direct alignment when values are already available. Show must be called at least once before\ncalling this method to ensure it is initialized.

\n"},"setOpacity":{"!type":"fn(opacity: number) -> !this","!doc":"

Sets the opacity of the shadow

\n"},"setZIndex":{"!type":"fn(zindex: number) -> !this","!doc":"

Adjust the z-index of this shadow

\n"},"show":{"!type":"fn(targetEl: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Displays the shadow under the target element

\n"}}},"ShadowPool":{"!doc":"

Private utility class that manages the internal Shadow cache.

\n","markup":{"!type":"?"},"shadows":{"!type":"[?]"},"pull":{"!type":"fn() -> !this"},"push":{"!type":"fn(sh: ?) -> !this"},"reset":{"!type":"fn() -> !this"}},"String":{"!doc":"

A collection of useful static methods to deal with strings.

\n","addCharacterEntities":{"!type":"fn(entities: ?) -> !this","!doc":"

Adds a set of character entity definitions to the set used by\nhtmlEncode and htmlDecode.

\n\n

This object should be keyed by the entity name sequence,\nwith the value being the textual representation of the entity.

\n\n
 Ext.String.addCharacterEntities({\n     '&amp;Uuml;':'Ü',\n     '&amp;ccedil;':'ç',\n     '&amp;ntilde;':'ñ',\n     '&amp;egrave;':'è'\n });\n var s = Ext.String.htmlEncode(\"A string with entities: èÜçñ\");\n
\n\n

Note: the values of the character entities defined on this object are expected\nto be single character values. As such, the actual values represented by the\ncharacters are sensitive to the character encoding of the JavaScript source\nfile when defined in string literal form. Script tags referencing server\nresources with character entities must ensure that the 'charset' attribute\nof the script node is consistent with the actual character encoding of the\nserver resource.

\n\n

The set of character entities may be reset back to the default state by using\nthe resetCharacterEntities method

\n"},"capitalize":{"!type":"fn(string: string) -> string","!doc":"

Capitalize the given string

\n"},"createVarName":{"!type":"fn(s: string) -> string","!doc":"

Converts a string of characters into a legal, parse-able JavaScript var name as long as the passed\nstring contains at least one alphabetic character. Non alphanumeric characters, and leading non alphabetic\ncharacters will be removed.

\n"},"ellipsis":{"!type":"fn(value: string, length: number, word?: bool) -> string","!doc":"

Truncate a string and add an ellipsis ('...') to the end if it exceeds the specified length.

\n"},"endsWith":{"!type":"fn(s: string, start: string, ignoreCase?: bool) -> !this","!doc":"

Checks if a string ends with a substring

\n"},"escape":{"!type":"fn(string: string) -> string","!doc":"

Escapes the passed string for ' and \\

\n"},"escapeRegex":{"!type":"fn(string: string) -> string","!doc":"

Escapes the passed string for use in a regular expression.

\n"},"format":{"!type":"fn(string: string, values: +Mixed) -> string","!doc":"

Allows you to define a tokenized string and pass an arbitrary number of arguments to replace the tokens. Each\ntoken must be unique, and must increment in the format {0}, {1}, etc. Example usage:

\n\n
var cls = 'my-class',\n    text = 'Some text';\nvar s = Ext.String.format('<div class=\"{0}\">{1}</div>', cls, text);\n// s now contains the string: '<div class=\"my-class\">Some text</div>'\n
\n"},"htmlDecode":{"!type":"fn(value: string) -> string","!doc":"

Convert certain characters (&, <, >, ', and \") from their HTML character equivalents.

\n"},"htmlEncode":{"!type":"fn(value: string) -> string","!doc":"

Convert certain characters (&, <, >, ', and \") to their HTML character equivalents for literal display in web pages.

\n"},"insert":{"!type":"fn(s: string, value: string, index: number) -> string","!doc":"

Inserts a substring into a string.

\n"},"leftPad":{"!type":"fn(string: string, size: number, character?: string) -> string","!doc":"

Pads the left side of a string with a specified character. This is especially useful\nfor normalizing number and date strings. Example usage:

\n\n
var s = Ext.String.leftPad('123', 5, '0');\n// s now contains the string: '00123'\n
\n"},"repeat":{"!type":"fn(pattern: string, count: number, sep: string) -> !this","!doc":"

Returns a string with a specified number of repetitions a given string pattern.\nThe pattern be separated by a different string.

\n\n
 var s = Ext.String.repeat('---', 4); // = '------------'\n var t = Ext.String.repeat('--', 3, '/'); // = '--/--/--'\n
\n"},"resetCharacterEntities":{"!type":"fn() -> !this","!doc":"

Resets the set of character entity definitions used by\nhtmlEncode and htmlDecode back to the\ndefault state.

\n"},"splitWords":{"!type":"fn(words: string|[?]) -> !this","!doc":"

Splits a string of space separated words into an array, trimming as needed. If the\nwords are already an array, it is returned.

\n"},"startsWith":{"!type":"fn(s: string, start: string, ignoreCase?: bool) -> !this","!doc":"

Checks if a string starts with a substring

\n"},"toggle":{"!type":"fn(string: string, value: string, other: string) -> string","!doc":"

Utility function that allows you to easily switch a string between two alternating values. The passed value\nis compared to the current string, and if they are equal, the other value that was passed in is returned. If\nthey are already different, the first value passed in is returned. Note that this method returns the new value\nbut does not change the current string.

\n\n
// alternate sort directions\nsort = Ext.String.toggle(sort, 'ASC', 'DESC');\n\n// instead of conditional logic:\nsort = (sort === 'ASC' ? 'DESC' : 'ASC');\n
\n"},"trim":{"!type":"fn(string: string) -> string","!doc":"

Trims whitespace from either end of a string, leaving spaces within the string intact. Example:

\n\n
var s = '  foo bar  ';\nalert('-' + s + '-');                   //alerts \"- foo bar -\"\nalert('-' + Ext.String.trim(s) + '-');  //alerts \"-foo bar-\"\n
\n"},"uncapitalize":{"!type":"fn(string: string) -> string","!doc":"

Uncapitalize the given string.

\n"},"urlAppend":{"!type":"fn(url: string, string: string) -> string","!doc":"

Appends content to the query string of a URL, handling logic for whether to place\na question mark or ampersand.

\n"}},"Template":{"!doc":"

Represents an HTML fragment template. Templates may be precompiled for greater performance.

\n\n

An instance of this class may be created by passing to the constructor either a single argument, or multiple\narguments:

\n\n

Single argument: String/Array

\n\n

The single argument may be either a String or an Array:

\n\n\n\n\n

Multiple arguments: String, Object, Array, ...

\n\n

Multiple arguments will be combined with join('').

\n\n
var t = new Ext.Template(\n    '<div name=\"{id}\">',\n        '<span class=\"{cls}\">{name} {value}</span>',\n    '</div>',\n    // a configuration object:\n    {\n        compiled: true,      // compile immediately\n    }\n);\n
\n\n

Notes

\n\n\n\n","!type":"fn(html: string, config?: Ext_Template_cfg)","prototype":{"!proto":"Ext.Base.prototype","compiled":{"!type":"bool","!doc":"

True to immediately compile the template. Defaults to false.

\n"},"disableFormats":{"!type":"bool","!doc":"

True to disable format functions in the template. If the template doesn't contain\nformat functions, setting disableFormats to true will reduce apply time. Defaults to false.

\n"},"compileARe":{"!type":"+RegExp"},"compileBRe":{"!type":"+RegExp"},"compileCRe":{"!type":"+RegExp"},"isTemplate":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Template, or subclass thereof.

\n"},"re":{"!type":"+RegExp"},"append":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, values: ?|[?], returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Applies the supplied values to the template and appends the new node(s) to the specified el.

\n\n

For example usage see Ext.Template class docs.

\n"},"apply":{"!type":"fn(values: ?|[?]) -> string","!doc":"

Returns an HTML fragment of this template with the specified values applied.

\n"},"applyOut":{"!type":"fn(values: ?|[?], out: [?]) -> [?]","!doc":"

Appends the result of this template to the provided output array.

\n"},"applyTemplate":{"!type":"fn(values: ?|[?]) -> string","!doc":"

Alias for apply.

\n"},"compile":{"!type":"fn() -> +Ext.Template","!doc":"

Compiles the template into an internal function, eliminating the RegEx overhead.

\n"},"doInsert":{"!type":"fn(where: ?, el: ?, values: ?, returnElement: ?) -> !this"},"insertAfter":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, values: ?|[?], returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Applies the supplied values to the template and inserts the new node(s) after el.

\n"},"insertBefore":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, values: ?|[?], returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Applies the supplied values to the template and inserts the new node(s) before el.

\n"},"insertFirst":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, values: ?|[?], returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Applies the supplied values to the template and inserts the new node(s) as the first child of el.

\n"},"overwrite":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, values: ?|[?], returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Applies the supplied values to the template and overwrites the content of el with the new node(s).

\n"},"set":{"!type":"fn(html: string, compile?: bool) -> +Ext.Template","!doc":"

Sets the HTML used as the template and optionally compiles it.

\n"}},"from":{"!type":"fn(el: string|+HTMLElement, config?: ?) -> +Ext.Template","!doc":"

Creates a template from the passed element's value (display:none textarea, preferred) or innerHTML.

\n"}},"Version":{"!doc":"

A utility class that wrap around a string version number and provide convenient\nmethod to perform comparison. See also: compare. Example:

\n\n
var version = new Ext.Version('1.0.2beta');\nconsole.log(\"Version is \" + version); // Version is 1.0.2beta\n\nconsole.log(version.getMajor()); // 1\nconsole.log(version.getMinor()); // 0\nconsole.log(version.getPatch()); // 2\nconsole.log(version.getBuild()); // 0\nconsole.log(version.getRelease()); // beta\n\nconsole.log(version.isGreaterThan('1.0.1')); // True\nconsole.log(version.isGreaterThan('1.0.2alpha')); // True\nconsole.log(version.isGreaterThan('1.0.2RC')); // False\nconsole.log(version.isGreaterThan('1.0.2')); // False\nconsole.log(version.isLessThan('1.0.2')); // True\n\nconsole.log(version.match(1.0)); // True\nconsole.log(version.match('1.0.2')); // True\n
\n","!type":"fn(version: string|number)","prototype":{"equals":{"!type":"fn(target: string|number) -> bool","!doc":"

Returns whether this version equals to the supplied argument

\n"},"getBuild":{"!type":"fn() -> number","!doc":"

Returns the build component value

\n"},"getMajor":{"!type":"fn() -> number","!doc":"

Returns the major component value

\n"},"getMinor":{"!type":"fn() -> number","!doc":"

Returns the minor component value

\n"},"getPatch":{"!type":"fn() -> number","!doc":"

Returns the patch component value

\n"},"getRelease":{"!type":"fn() -> number","!doc":"

Returns the release component value

\n"},"getShortVersion":{"!type":"fn() -> string","!doc":"

Returns shortVersion version without dots and release

\n"},"gt":{"!type":"fn(target: string|number) -> bool","!doc":"

Convenient alias to isGreaterThan

\n"},"gtEq":{"!type":"fn(target: string|number) -> bool","!doc":"

Convenient alias to isGreaterThanOrEqual

\n"},"isGreaterThan":{"!type":"fn(target: string|number) -> bool","!doc":"

Returns whether this version if greater than the supplied argument

\n"},"isGreaterThanOrEqual":{"!type":"fn(target: string|number) -> bool","!doc":"

Returns whether this version if greater than or equal to the supplied argument

\n"},"isLessThan":{"!type":"fn(target: string|number) -> bool","!doc":"

Returns whether this version if smaller than the supplied argument

\n"},"isLessThanOrEqual":{"!type":"fn(target: string|number) -> bool","!doc":"

Returns whether this version if less than or equal to the supplied argument

\n"},"lt":{"!type":"fn(target: string|number) -> bool","!doc":"

Convenient alias to isLessThan

\n"},"ltEq":{"!type":"fn(target: string|number) -> bool","!doc":"

Convenient alias to isLessThanOrEqual

\n"},"match":{"!type":"fn(target: string|number) -> bool","!doc":"

Returns whether this version matches the supplied argument. Example:

\n\n
var version = new Ext.Version('1.0.2beta');\nconsole.log(version.match(1)); // True\nconsole.log(version.match(1.0)); // True\nconsole.log(version.match('1.0.2')); // True\nconsole.log(version.match('1.0.2RC')); // False\n
\n"},"toArray":{"!type":"fn() -> [number]","!doc":"

Returns this format: [major, minor, patch, build, release]. Useful for comparison

\n"},"toString":{"!type":"fn() -> string","!doc":"

Override the native toString method

\n"},"valueOf":{"!type":"fn() -> string","!doc":"

Override the native valueOf method

\n"}},"compare":{"!type":"fn(current: string, target: string) -> number","!doc":"

Compare 2 specified versions, starting from left to right. If a part contains special version strings,\nthey are handled in the following order:\n'dev' < 'alpha' = 'a' < 'beta' = 'b' < 'RC' = 'rc' < '#' < 'pl' = 'p' < 'anything else'

\n"},"getComponentValue":{"!type":"fn(value: ?) -> ?","!doc":"

Converts a version component to a comparable value

\n"}},"WindowManager":{"!doc":"

The default global floating Component group that is available automatically.

\n\n

This manages instances of floating Components which were rendered programatically without\nbeing added to a Container, and for floating Components\nwhich were added into non-floating Containers.

\n\n

Floating Containers create their own instance of ZIndexManager, and floating Components\nadded at any depth below there are managed by that ZIndexManager.

\n","!type":"fn(container: ?)","prototype":{"!proto":"Ext.ZIndexManager.prototype"}},"XTemplate":{"!doc":"

A template class that supports advanced functionality like:

\n\n\n\n\n

XTemplate provides the templating mechanism built into Ext.view.View.

\n\n

The Ext.Template describes the acceptable parameters to pass to the constructor. The following examples\ndemonstrate all of the supported features.

\n\n

Sample Data

\n\n

This is the data object used for reference in each code example:

\n\n
var data = {\n    name: 'Don Griffin',\n    title: 'Senior Technomage',\n    company: 'Sencha Inc.',\n    drinks: ['Coffee', 'Water', 'More Coffee'],\n    kids: [\n        { name: 'Aubrey',  age: 17 },\n        { name: 'Joshua',  age: 13 },\n        { name: 'Cale',    age: 10 },\n        { name: 'Nikol',   age: 5 },\n        { name: 'Solomon', age: 0 }\n    ]\n};\n
\n\n

Auto filling of arrays

\n\n

The tpl tag and the for operator are used to process the provided data object:

\n\n\n\n\n

Examples:

\n\n
<tpl for=\".\">...</tpl>       // loop through array at root node\n<tpl for=\"foo\">...</tpl>     // loop through array at foo node\n<tpl for=\"foo.bar\">...</tpl> // loop through array at foo.bar node\n<tpl for=\".\" between=\",\">...</tpl> // loop through array at root node and insert ',' between each item\n
\n\n

Using the sample data above:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Kids: ',\n    '<tpl for=\".\">',       // process the data.kids node\n        '<p>{#}. {name}</p>',  // use current array index to autonumber\n    '</tpl></p>'\n);\ntpl.overwrite(panel.body, data.kids); // pass the kids property of the data object\n
\n\n

An example illustrating how the for property can be leveraged to access specified members of the provided data\nobject to populate the template:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Title: {title}</p>',\n    '<p>Company: {company}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',     // interrogate the kids property within the data\n        '<p>{name}</p>',\n    '</tpl></p>'\n);\ntpl.overwrite(panel.body, data);  // pass the root node of the data object\n
\n\n

Flat arrays that contain values (and not objects) can be auto-rendered using the special {.} variable inside a\nloop. This variable will represent the value of the array at the current index:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>{name}\\'s favorite beverages:</p>',\n    '<tpl for=\"drinks\">',\n        '<div> - {.}</div>',\n    '</tpl>'\n);\ntpl.overwrite(panel.body, data);\n
\n\n

When processing a sub-template, for example while looping through a child array, you can access the parent object's\nmembers via the parent object:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<tpl if=\"age &gt; 1\">',\n            '<p>{name}</p>',\n            '<p>Dad: {parent.name}</p>',\n        '</tpl>',\n    '</tpl></p>'\n);\ntpl.overwrite(panel.body, data);\n
\n\n

The foreach operator is used to loop over an object's properties. The following\nexample demonstrates looping over the main data object's properties:

\n\n
var tpl = new Ext.XTemplate(\n    '<dl>',\n        '<tpl foreach=\".\">',\n            '<dt>{$}</dt>', // the special **`{$}`** variable contains the property name\n            '<dd>{.}</dd>', // within the loop, the **`{.}`** variable is set to the property value\n        '</tpl>',\n    '</dl>'\n);\ntpl.overwrite(panel.body, data);\n
\n\n

Conditional processing with basic comparison operators

\n\n

The tpl tag and the if operator are used to provide conditional checks for deciding whether or not to render\nspecific parts of the template.

\n\n

Using the sample data above:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<tpl if=\"age &gt; 1\">',\n            '<p>{name}</p>',\n        '</tpl>',\n    '</tpl></p>'\n);\ntpl.overwrite(panel.body, data);\n
\n\n

More advanced conditionals are also supported:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<p>{name} is a ',\n        '<tpl if=\"age &gt;= 13\">',\n            '<p>teenager</p>',\n        '<tpl elseif=\"age &gt;= 2\">',\n            '<p>kid</p>',\n        '<tpl else>',\n            '<p>baby</p>',\n        '</tpl>',\n    '</tpl></p>'\n);\n\nvar tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<p>{name} is a ',\n        '<tpl switch=\"name\">',\n            '<tpl case=\"Aubrey\" case=\"Nikol\">',\n                '<p>girl</p>',\n            '<tpl default>',\n                '<p>boy</p>',\n        '</tpl>',\n    '</tpl></p>'\n);\n
\n\n

A break is implied between each case and default, however, multiple cases can be listed\nin a single <tpl> tag.

\n\n

Using double quotes

\n\n

Examples:

\n\n
var tpl = new Ext.XTemplate(\n    \"<tpl if='age &gt; 1 && age &lt; 10'>Child</tpl>\",\n    \"<tpl if='age &gt;= 10 && age &lt; 18'>Teenager</tpl>\",\n    \"<tpl if='this.isGirl(name)'>...</tpl>\",\n    '<tpl if=\"id == \\'download\\'\">...</tpl>',\n    \"<tpl if='needsIcon'><img src='{icon}' class='{iconCls}'/></tpl>\",\n    \"<tpl if='name == \\\"Don\\\"'>Hello</tpl>\"\n);\n
\n\n

Basic math support

\n\n

The following basic math operators may be applied directly on numeric data values:

\n\n
+ - * /\n
\n\n

For example:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<tpl if=\"age &gt; 1\">',  // <-- Note that the > is encoded\n            '<p>{#}: {name}</p>',  // <-- Auto-number each item\n            '<p>In 5 Years: {age+5}</p>',  // <-- Basic math\n            '<p>Dad: {parent.name}</p>',\n        '</tpl>',\n    '</tpl></p>'\n);\ntpl.overwrite(panel.body, data);\n
\n\n

Execute arbitrary inline code with special built-in template variables

\n\n

Anything between {[ ... ]} is considered code to be executed in the scope of the template.\nThe expression is evaluated and the result is included in the generated result. There are\nsome special variables available in that code:

\n\n\n\n\n

This example demonstrates basic row striping using an inline code block and the xindex variable:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Company: {[values.company.toUpperCase() + \", \" + values.title]}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<div class=\"{[xindex % 2 === 0 ? \"even\" : \"odd\"]}\">',\n        '{name}',\n        '</div>',\n    '</tpl></p>'\n );\n
\n\n

Any code contained in \"verbatim\" blocks (using \"{% ... %}\") will be inserted directly in\nthe generated code for the template. These blocks are not included in the output. This\ncan be used for simple things like break/continue in a loop, or control structures or\nmethod calls (when they don't produce output). The this references the template instance.

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Company: {[values.company.toUpperCase() + \", \" + values.title]}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '{% if (xindex % 2 === 0) continue; %}',\n        '{name}',\n        '{% if (xindex > 100) break; %}',\n        '</div>',\n    '</tpl></p>'\n );\n
\n\n

Template member functions

\n\n

One or more member functions can be specified in a configuration object passed into the XTemplate constructor for\nmore complex processing:

\n\n
var tpl = new Ext.XTemplate(\n    '<p>Name: {name}</p>',\n    '<p>Kids: ',\n    '<tpl for=\"kids\">',\n        '<tpl if=\"this.isGirl(name)\">',\n            '<p>Girl: {name} - {age}</p>',\n        '<tpl else>',\n            '<p>Boy: {name} - {age}</p>',\n        '</tpl>',\n        '<tpl if=\"this.isBaby(age)\">',\n            '<p>{name} is a baby!</p>',\n        '</tpl>',\n    '</tpl></p>',\n    {\n        // XTemplate configuration:\n        disableFormats: true,\n        // member functions:\n        isGirl: function(name){\n           return name == 'Aubrey' || name == 'Nikol';\n        },\n        isBaby: function(age){\n           return age < 1;\n        }\n    }\n);\ntpl.overwrite(panel.body, data);\n
\n","!type":"fn(html: string, config?: Ext_XTemplate_cfg)","prototype":{"!proto":"Ext.Template.prototype","definitions":{"!type":"string|[?]","!doc":"

Optional. A statement, or array of statements which set up vars which may then\nbe accessed within the scope of the generated function.

\n"},"emptyObj":{"!type":"?"},"applyOut":{"!type":"fn(values: ?, out: ?, parent: ?) -> [?]","!doc":"

Appends the result of this template to the provided output array.

\n"},"compile":{"!type":"fn() -> +Ext.XTemplate","!doc":"

Does nothing. XTemplates are compiled automatically, so this function simply returns this.

\n"}},"getTpl":{"!type":"fn(instance: ?, name: string) -> +Ext.XTemplate","!doc":"

Gets an XTemplate from an object (an instance of an Ext.define'd class).\nMany times, templates are configured high in the class hierarchy and are to be\nshared by all classes that derive from that base. To further complicate matters,\nthese templates are seldom actual instances but are rather configurations. For\nexample:

\n\n
 Ext.define('MyApp.Class', {\n     extraCls: 'extra-class',\n\n     someTpl: [\n         '<div class=\"{%this.emitClass(out)%}\"></div>',\n     {\n         // Member fn - outputs the owing class's extra CSS class\n         emitClass: function(out) {\n             out.push(this.owner.extraCls);\n         }\n     }]\n });\n
\n\n

The goal being to share that template definition with all instances and even\ninstances of derived classes, until someTpl is overridden. This method will\n\"upgrade\" these configurations to be real XTemplate instances in place (to\navoid creating one instance per object).

\n\n

The resulting XTemplate will have an owner reference injected which refers back\nto the owning object whether that is an object which has an own instance, or a\nclass prototype. Through this link, XTemplate member functions will be able to access\nprototype properties of its owning class.

\n"}},"XTemplateCompiler":{"!doc":"

This class compiles the XTemplate syntax into a function object. The function is used\nlike so:

\n\n
 function (out, values, parent, xindex, xcount) {\n     // out is the output array to store results\n     // values, parent, xindex and xcount have their historical meaning\n }\n
\n","!type":"fn(config: Ext_XTemplateCompiler_cfg)","prototype":{"!proto":"Ext.XTemplateParser.prototype","aposRe":{"!type":"+RegExp"},"createArrayTest":{"!type":"?"},"intRe":{"!type":"+RegExp"},"newLineRe":{"!type":"+RegExp"},"propNameRe":{"!type":"+RegExp"},"tagRe":{"!type":"+RegExp"},"useEval":{"!type":"?","!doc":"

Chrome really likes \"new Function\" to realize the code block (as in it is\n2x-3x faster to call it than using eval), but Firefox chokes on it badly.\nIE and Opera are also fine with the \"new Function\" technique.

\n"},"useFormat":{"!type":"bool"},"useIndex":{"!type":"?","!doc":"

See http://jsperf.com/nige-array-append for quickest way to append to an array of unknown length\n(Due to arbitrary code execution inside a template, we cannot easily track the length in var)\nOn IE6 to 8, myArray[myArray.length]='foo' is better. On other browsers myArray.push('foo') is better.

\n"},"addFn":{"!type":"fn(body: ?) -> !this","!doc":"
\n\n

Internal

\n"},"compile":{"!type":"fn(tpl: ?) -> !this"},"doCase":{"!type":"fn(action: ?) -> !this","!doc":"

This method is called to process <tpl case=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doDefault":{"!type":"fn() -> !this","!doc":"

This method is called to process <tpl default>.

\n"},"doElse":{"!type":"fn() -> !this","!doc":"

This method is called to process <tpl else>.

\n"},"doElseIf":{"!type":"fn(action: ?, actions: ?) -> !this","!doc":"

This method is called to process <tpl elseif=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doEnd":{"!type":"fn(type: ?, actions: ?) -> !this","!doc":"

This method is called to process </tpl>. It is given the action type that started\nthe tpl and the set of additional actions.

\n"},"doEval":{"!type":"fn(text: ?) -> !this","!doc":"

This method is called to process {% text %}.

\n"},"doExec":{"!type":"fn(action: ?, actions: ?) -> !this","!doc":"

This method is called to process <tpl exec=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doExpr":{"!type":"fn(expr: ?) -> !this","!doc":"

This method is called to process expressions (like {[expr]}).

\n"},"doFor":{"!type":"fn(action: ?, actions: ?) -> !this","!doc":"

This method is called to process <tpl for=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doForEach":{"!type":"fn(action: ?, actions: ?) -> !this","!doc":"

This method is called to process <tpl foreach=\"action\">. If there are other\nattributes, these are passed in the actions object.

\n"},"doIf":{"!type":"fn(action: ?, actions: ?) -> !this","!doc":"

This method is called to process <tpl if=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doSwitch":{"!type":"fn(action: ?) -> !this","!doc":"

This method is called to process <tpl switch=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doTag":{"!type":"fn(tag: ?) -> !this","!doc":"

This method is called to process simple tags (like {tag}).

\n"},"doText":{"!type":"fn(text: ?) -> !this","!doc":"
\n\n

XTemplateParser callouts

\n"},"evalTpl":{"!type":"fn($: ?) -> !this"},"generate":{"!type":"fn(tpl: ?) -> !this"},"parseTag":{"!type":"fn(tag: ?) -> !this"}}},"XTemplateParser":{"!doc":"

This class parses the XTemplate syntax and calls abstract methods to process the parts.

\n","!type":"fn(config: Ext_XTemplateParser_cfg)","prototype":{"!proto":"Ext.Base.prototype","actionsRe":{"!type":"+RegExp"},"defaultRe":{"!type":"+RegExp"},"elseRe":{"!type":"+RegExp"},"level":{"!type":"number","!doc":"

The 'for' or 'foreach' loop context level. This is adjusted\nup by one prior to calling doFor or doForEach and down by one after\ncalling the corresponding doEnd that closes the loop. This will be 1 on the\nfirst doFor or doForEach call.

\n"},"propRe":{"!type":"+RegExp"},"topRe":{"!type":"+RegExp","!doc":"

Internal regexes

\n"},"doCase":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl case=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doDefault":{"!type":"fn()","!doc":"

This method is called to process <tpl default>.

\n"},"doElse":{"!type":"fn()","!doc":"

This method is called to process <tpl else>.

\n"},"doElseIf":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl elseif=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doEnd":{"!type":"fn(type: string, actions: ?)","!doc":"

This method is called to process </tpl>. It is given the action type that started\nthe tpl and the set of additional actions.

\n"},"doEval":{"!type":"fn(text: string)","!doc":"

This method is called to process {% text %}.

\n"},"doExec":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl exec=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doExpr":{"!type":"fn(expr: string)","!doc":"

This method is called to process expressions (like {[expr]}).

\n"},"doFor":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl for=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doForEach":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl foreach=\"action\">. If there are other\nattributes, these are passed in the actions object.

\n"},"doIf":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl if=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doSwitch":{"!type":"fn(action: string, actions: ?)","!doc":"

This method is called to process <tpl switch=\"action\">. If there are other attributes,\nthese are passed in the actions object.

\n"},"doTag":{"!type":"fn()","!doc":"

This method is called to process simple tags (like {tag}).

\n"},"doText":{"!type":"fn(text: string)","!doc":"

This method is called to process a piece of raw text from the tpl.

\n"},"doTpl":{"!type":"fn() -> !this","!doc":"

This method is called to process an empty <tpl>. This is unlikely to need to be\nimplemented, so a default (do nothing) version is provided.

\n"},"parse":{"!type":"fn(str: ?) -> !this"}}},"ZIndexManager":{"!doc":"

A class that manages a group of Ext.Component.floating Components and provides z-order management,\nand Component activation behavior, including masking below the active (topmost) Component.

\n\n

Floating Components which are rendered directly into the document (such as\nWindows) which are shown are managed by a\nglobal instance.

\n\n

Floating Components which are descendants of floating\nContainers (for example a BoundList within an Window,\nor a Menu), are managed by a ZIndexManager owned by that floating Container. Therefore\nComboBox dropdowns within Windows will have managed z-indices guaranteed to be correct, relative to the Window.

\n","!type":"fn(container: ?)","prototype":{"!proto":"Ext.Base.prototype","_activateLast":{"!type":"fn() -> !this"},"_hideModalMask":{"!type":"fn() -> !this"},"_onContainerResize":{"!type":"fn() -> !this"},"_onMaskClick":{"!type":"fn() -> !this"},"_setActiveChild":{"!type":"fn(comp: ?, oldFront: ?) -> !this"},"_showModalMask":{"!type":"fn(comp: ?) -> !this"},"assignZIndices":{"!type":"fn() -> !this"},"bringToFront":{"!type":"fn(comp: string|?) -> bool","!doc":"

Brings the specified Component to the front of any other active Components in this ZIndexManager.

\n"},"destroy":{"!type":"fn() -> !this"},"each":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Executes the specified function once for every Component in this ZIndexManager, passing each\nComponent as the only parameter. Returning false from the function will stop the iteration.

\n"},"eachBottomUp":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Executes the specified function once for every Component in this ZIndexManager, passing each\nComponent as the only parameter. Returning false from the function will stop the iteration.\nThe components are passed to the function starting at the bottom and proceeding to the top.

\n"},"eachTopDown":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Executes the specified function once for every Component in this ZIndexManager, passing each\nComponent as the only parameter. Returning false from the function will stop the iteration.\nThe components are passed to the function starting at the top and proceeding to the bottom.

\n"},"get":{"!type":"fn(id: string|?) -> +Ext.Component","!doc":"

Gets a registered Component by id.

\n"},"getActive":{"!type":"fn() -> +Ext.Component","!doc":"

Gets the currently-active Component in this ZIndexManager.

\n"},"getBy":{"!type":"fn(fn: fn(), scope?: ?) -> [?]","!doc":"

Returns zero or more Components in this ZIndexManager using the custom search function passed to this method.\nThe function should accept a single Ext.Component reference as its only argument and should\nreturn true if the Component matches the search criteria, otherwise it should return false.

\n"},"getMaskBox":{"!type":"fn() -> !this"},"getNextZSeed":{"!type":"fn() -> !this"},"hide":{"!type":"fn() -> !this","!doc":"

Temporarily hides all currently visible managed Components. This is for when\ndragging a Window which may manage a set of floating descendants in its ZIndexManager;\nthey should all be hidden just for the duration of the drag.

\n"},"hideAll":{"!type":"fn() -> !this","!doc":"

Hides all Components managed by this ZIndexManager.

\n"},"onComponentHide":{"!type":"fn(comp: ?) -> !this"},"register":{"!type":"fn(comp: +Ext.Component) -> !this","!doc":"

Registers a floating Ext.Component with this ZIndexManager. This should not\nneed to be called under normal circumstances. Floating Components (such as Windows,\nBoundLists and Menus) are automatically registered with a\nzIndexManager at render time.

\n\n

Where this may be useful is moving Windows between two ZIndexManagers. For example,\nto bring the Ext.MessageBox dialog under the same manager as the Desktop's\nZIndexManager in the desktop sample app:

\n\n
MyDesktop.getDesktop().getManager().register(Ext.MessageBox);\n
\n"},"sendToBack":{"!type":"fn(comp: string|?) -> +Ext.Component","!doc":"

Sends the specified Component to the back of other active Components in this ZIndexManager.

\n"},"setBase":{"!type":"fn(baseZIndex: ?) -> !this"},"show":{"!type":"fn() -> !this","!doc":"

Restores temporarily hidden managed Components to visibility.

\n"},"unregister":{"!type":"fn(comp: +Ext.Component) -> !this","!doc":"

Unregisters a Ext.Component from this ZIndexManager. This should not\nneed to be called. Components are automatically unregistered upon destruction.\nSee register.

\n"}},"zBase":{"!type":"number"}},"app":{"Application":{"!doc":"

Represents an Ext JS 4 application, which is typically a single page app using a Viewport.\nA typical Ext.app.Application might look like this:

\n\n
Ext.application({\n    name: 'MyApp',\n    launch: function() {\n        Ext.create('Ext.container.Viewport', {\n            items: {\n                html: 'My App'\n            }\n        });\n    }\n});\n
\n\n

This does several things. First it creates a global variable called 'MyApp' - all of your Application's classes (such\nas its Models, Views and Controllers) will reside under this single namespace, which drastically lowers the chances\nof colliding global variables. The MyApp global will also have a getApplication method to get a reference to\nthe current application:

\n\n
var app = MyApp.getApplication();\n
\n\n

When the page is ready and all of your JavaScript has loaded, your Application's launch function is called,\nat which time you can run the code that starts your app. Usually this consists of creating a Viewport, as we do in\nthe example above.

\n\n

Telling Application about the rest of the app

\n\n

Because an Ext.app.Application represents an entire app, we should tell it about the other parts of the app - namely\nthe Models, Views and Controllers that are bundled with the application. Let's say we have a blog management app; we\nmight have Models and Controllers for Posts and Comments, and Views for listing, adding and editing Posts and Comments.\nHere's how we'd tell our Application about all these things:

\n\n
Ext.application({\n    name: 'Blog',\n    models: ['Post', 'Comment'],\n    controllers: ['Posts', 'Comments'],\n\n    launch: function() {\n        ...\n    }\n});\n
\n\n

Note that we didn't actually list the Views directly in the Application itself. This is because Views are managed by\nControllers, so it makes sense to keep those dependencies there. The Application will load each of the specified\nControllers using the pathing conventions laid out in the application architecture guide - in this case\nexpecting the controllers to reside in app/controller/Posts.js and app/controller/Comments.js. In turn, each\nController simply needs to list the Views it uses and they will be automatically loaded. Here's how our Posts\ncontroller like be defined:

\n\n
Ext.define('MyApp.controller.Posts', {\n    extend: 'Ext.app.Controller',\n    views: ['posts.List', 'posts.Edit'],\n\n    //the rest of the Controller here\n});\n
\n\n

Because we told our Application about our Models and Controllers, and our Controllers about their Views, Ext JS will\nautomatically load all of our app files for us. This means we don't have to manually add script tags into our html\nfiles whenever we add a new class, but more importantly it enables us to create a minimized build of our entire\napplication using Sencha Cmd.

\n\n

Deriving from Ext.app.Application

\n\n

Typically, applications do not derive directly from Ext.app.Application. Rather, the\nconfiguration passed to Ext.application mimics what you might do in a derived class.\nIn some cases, however, it can be desirable to share logic by using a derived class\nfrom Ext.app.Application.

\n\n

Derivation works as you would expect, but using the derived class should still be the\njob of the Ext.application method.

\n\n
Ext.define('MyApp.app.Application', {\n    extend: 'Ext.app.Application',\n    name: 'MyApp',\n    ...\n});\n\nExt.application('MyApp.app.Application');\n
\n\n

For more information about writing Ext JS 4 applications, please see the application architecture guide.

\n","!type":"fn(config?: Ext_app_Application_cfg)","prototype":{"!proto":"Ext.app.Controller.prototype","appFolder":{"!type":"string","!doc":"

The path to the directory which contains all application's classes.\nThis path will be registered via Ext.Loader.setPath for the namespace specified\nin the name config.

\n"},"appProperty":{"!type":"string","!doc":"

The name of a property to be assigned to the main namespace to gain a reference to\nthis application. Can be set to an empty value to prevent the reference from\nbeing created

\n\n
Ext.application({\n    name: 'MyApp',\n    appProperty: 'myProp',\n\n    launch: function() {\n        console.log(MyApp.myProp === this);\n    }\n});\n
\n"},"autoCreateViewport":{"!type":"bool","!doc":"

True to automatically load and instantiate AppName.view.Viewport before firing the launch\nfunction.

\n"},"controllers":{"!type":"string|[string]","!doc":"

Names of controllers that the app uses.

\n"},"enableQuickTips":{"!type":"bool","!doc":"

True to automatically set up Ext.tip.QuickTip support.

\n"},"name":{"!type":"string","!doc":"

The name of your application. This will also be the namespace for your views, controllers\nmodels and stores. Don't use spaces or special characters in the name. Application name\nis mandatory.

\n"},"namespaces":{"!type":"string|[string]","!doc":"

The list of namespace prefixes used in the application to resolve dependencies\nlike Views and Stores:

\n\n
 Ext.application({\n     name: 'MyApp',\n\n     namespaces: ['Common.code'],\n\n     controllers: [ 'Common.code.controller.Foo', 'Bar' ]\n });\n\n Ext.define('Common.code.controller.Foo', {\n     extend: 'Ext.app.Controller',\n\n     models: ['Foo'],    // Loads Common.code.model.Foo\n     views:  ['Bar']     // Loads Common.code.view.Bar\n });\n\n Ext.define('MyApp.controller.Bar', {\n     extend: 'Ext.app.Controller',\n\n     models: ['Foo'],    // Loads MyApp.model.Foo\n     views:  ['Bar']     // Loads MyApp.view.Bar\n });\n
\n\n

You don't need to include main namespace (MyApp), it will be added to the list\nautomatically.

\n"},"paths":{"!type":"?","!doc":"

Additional load paths to add to Ext.Loader.\nSee Ext.Loader.paths config for more details.

\n"},"scope":{"!type":"?","!doc":"

The scope to execute the launch function in. Defaults to the Application instance.

\n"},"finishInitControllers":{"!type":"fn() -> !this"},"getApplication":{"!type":"fn() -> +Ext.app.Application","!doc":"

Returns the base Ext.app.Application for this controller.

\n"},"getController":{"!type":"fn(name: ?) -> +Ext.app.Controller","!doc":"

Returns instance of a Controller with the given id.\nWhen controller doesn't exist yet, it's created. Note that this method depends\non Application instance and will return undefined when Application is not\naccessible. The only exception is when this Controller instance's id is requested;\nin that case we always return the instance even if Application is no available.

\n"},"getModuleClassName":{"!type":"fn(name: ?, kind: ?) -> !this"},"initControllers":{"!type":"fn() -> !this"},"initNamespace":{"!type":"fn() -> !this"},"initQuickTips":{"!type":"fn() -> !this"},"initViewport":{"!type":"fn() -> !this"},"launch":{"!type":"fn(profile: string) -> bool","!doc":"

Called automatically when the page has completely loaded. This is an empty function that should be\noverridden by each application that needs to take action on page load.

\n"},"onBeforeLaunch":{"!type":"fn() -> !this"},"onClassExtended":{"!type":"fn(cls: ?, data: ?, hooks: ?) -> !this"}}},"Controller":{"!doc":"

Controllers are the glue that binds an application together. All they really do is listen for events (usually from\nviews) and take some action. Here's how we might create a Controller to manage Users:

\n\n
 Ext.define('MyApp.controller.Users', {\n     extend: 'Ext.app.Controller',\n\n     init: function() {\n         console.log('Initialized Users! This happens before ' +\n                     'the Application launch() function is called');\n     }\n });\n
\n\n

The init function is a special method that is called when your application boots. It is called before the\nApplication's launch function is executed so gives a hook point to run any code before\nyour Viewport is created.

\n\n

The init function is a great place to set up how your controller interacts with the view, and is usually used in\nconjunction with another Controller function - control. The control function\nmakes it easy to listen to events on your view classes and take some action with a handler function. Let's update\nour Users controller to tell us when the panel is rendered:

\n\n
 Ext.define('MyApp.controller.Users', {\n     extend: 'Ext.app.Controller',\n\n     init: function() {\n         this.control({\n             'viewport > panel': {\n                 render: this.onPanelRendered\n             }\n         });\n     },\n\n     onPanelRendered: function() {\n         console.log('The panel was rendered');\n     }\n });\n
\n\n

We've updated the init function to use control method to set up listeners on views\nin our application. The control method uses the ComponentQuery engine to quickly and easily get references to components\non the page. If you are not familiar with ComponentQuery yet, be sure to check out the\ndocumentation. In brief though, it allows us to pass a CSS-like selector that will find\nevery matching component on the page.

\n\n

In our init function above we supplied 'viewport > panel', which translates to \"find me every Panel that is a direct\nchild of a Viewport\". We then supplied an object that maps event names (just 'render' in this case) to handler\nfunctions. The overall effect is that whenever any component that matches our selector fires a 'render' event, our\nonPanelRendered function is called.

\n\n

Event domains

\n\n

In Ext JS 4.2, we introduced the concept of event domains. In terms of MVC, an event domain\nis one or more base classes that fire events to which a Controller wants to listen. Besides\nComponent event domain that encompass Ext.Component-descended Views, Controllers now\ncan listen to events from data Stores, Ext.Direct Providers, other Controllers, and Ext.globalEvents.\nThis feature provides a way to communicate between parts of the whole application without the need\nto bind controllers together tightly, and allows to develop and test application parts in isolation.

\n\n

See usage examples in listen method documentation.

\n\n

Using refs

\n\n

One of the most useful parts of Controllers is the ref system. These use the Ext.ComponentQuery to\nmake it really easy to get references to Views on your page. Let's look at an example of this now:

\n\n
 Ext.define('MyApp.controller.Users', {\n     extend: 'Ext.app.Controller',\n\n     refs: [{\n         ref: 'list',\n         selector: 'grid'\n     }],\n\n     init: function() {\n         this.control({\n             'button': {\n                 click: this.refreshGrid\n             }\n         });\n     },\n\n     refreshGrid: function() {\n         this.getList().store.load();\n     }\n });\n
\n\n

This example assumes the existence of a Grid on the page, which contains a single button to\nrefresh the Grid when clicked. In our refs array, we set up a reference to the grid. There are two parts to this -\nthe 'selector', which is a ComponentQuery selector which finds any grid on the page and\nassigns it to the reference 'list'.

\n\n

By giving the reference a name, we get a number of things for free. The first is the getList function that we use in\nthe refreshGrid method above. This is generated automatically by the Controller based on the name of our ref, which\nwas capitalized and prepended with get to go from 'list' to 'getList'.

\n\n

The way this works is that the first time getList is called by your code, the ComponentQuery selector is run and the\nfirst component that matches the selector ('grid' in this case) will be returned. All future calls to getList will\nuse a cached reference to that grid. Usually it is advised to use a specific ComponentQuery selector that will only\nmatch a single View in your application (in the case above our selector will match any grid on the page).

\n\n

Bringing it all together, our init function is called when the application boots, at which time we call this.control\nto listen to any click on a button and call our refreshGrid function (again, this will\nmatch any button on the page so we advise a more specific selector than just 'button', but have left it this way for\nsimplicity). When the button is clicked we use out getList function to refresh the grid.

\n\n

You can create any number of refs and control any number of components this way, simply adding more functions to\nyour Controller as you go. For an example of real-world usage of Controllers see the Feed Viewer example in the\nexamples/app/feed-viewer folder in the SDK download.

\n\n

Generated getter methods

\n\n

Refs aren't the only thing that generate convenient getter methods. Controllers often have to deal with Models and\nStores so the framework offers a couple of easy ways to get access to those too. Let's look at another example:

\n\n
 Ext.define('MyApp.controller.Users', {\n     extend: 'Ext.app.Controller',\n\n     models: ['User'],\n     stores: ['AllUsers', 'AdminUsers'],\n\n     init: function() {\n         var User, allUsers, ed;\n\n         User = this.getUserModel();\n         allUsers = this.getAllUsersStore();\n\n         ed = new User({ name: 'Ed' });\n         allUsers.add(ed);\n     }\n });\n
\n\n

By specifying Models and Stores that the Controller cares about, it again dynamically loads them from the appropriate\nlocations (app/model/User.js, app/store/AllUsers.js and app/store/AdminUsers.js in this case) and creates getter\nfunctions for them all. The example above will create a new User model instance and add it to the AllUsers Store.\nOf course, you could do anything in this function but in this case we just did something simple to demonstrate the\nfunctionality.

\n\n

Further Reading

\n\n

For more information about writing Ext JS 4 applications, please see the\napplication architecture guide. Also see the Ext.app.Application\ndocumentation.

\n","!type":"fn(config?: Ext_app_Controller_cfg)","prototype":{"!proto":"Ext.Base.prototype","id":{"!type":"string","!doc":"

The id of this controller. You can use this id when dispatching.

\n"},"models":{"!type":"string|[string]","!doc":"

Array of models to require from AppName.model namespace. For example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     models: ['User', 'Vehicle']\n });\n
\n\n

This is equivalent of:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     requires: ['MyApp.model.User', 'MyApp.model.Vehicle'],\n\n     getUserModel: function() {\n         return this.getModel(\"User\");\n     },\n\n     getVehicleModel: function() {\n         return this.getModel(\"Vehicle\");\n     }\n });\n
\n"},"refs":{"!type":"[?]","!doc":"

Array of configs to build up references to views on page. For example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n\n     refs: [{\n         ref: 'list',\n         selector: 'grid'\n     }],\n });\n
\n\n

This will add method getList to the controller which will internally use\nExt.ComponentQuery to reference the grid component on page.

\n\n

The following fields can be used in ref definition:

\n\n\n\n"},"stores":{"!type":"string|[string]","!doc":"

Array of stores to require from AppName.store namespace and to generate getter methods for.\nFor example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     stores: ['Users', 'Vehicles']\n });\n
\n\n

This is equivalent to:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n\n     requires: [\n         'MyApp.store.Users',\n         'MyApp.store.Vehicles'\n     ]\n\n     getUsersStore: function() {\n         return this.getStore(\"Users\");\n     },\n\n     getVehiclesStore: function() {\n         return this.getStore(\"Vehicles\");\n     }\n });\n
\n"},"views":{"!type":"string|[string]","!doc":"

Array of views to require from AppName.view namespace and to generate getter methods for.\nFor example:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     views: ['List', 'Detail']\n });\n
\n\n

This is equivalent of:

\n\n
 Ext.define(\"MyApp.controller.Foo\", {\n     extend: \"Ext.app.Controller\",\n     requires: ['MyApp.view.List', 'MyApp.view.Detail'],\n\n     getListView: function() {\n         return this.getView(\"List\");\n     },\n\n     getDetailView: function() {\n         return this.getView(\"Detail\");\n     }\n });\n
\n"},"application":{"!type":"+Ext.app.Application","!doc":"

The Ext.app.Application for this controller.

\n"},"addRef":{"!type":"fn(refs: ?|[?]) -> !this","!doc":"

Registers one or more references.

\n"},"control":{"!type":"fn(selectors: string|?, listeners?: ?) -> !this","!doc":"

Adds listeners to components selected via Ext.ComponentQuery. Accepts an\nobject containing component paths mapped to a hash of listener functions.

\n\n

In the following example the updateUser function is mapped to to the click\nevent on a button component, which is a child of the useredit component.

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.control({\n             'useredit button[action=save]': {\n                 click: this.updateUser\n             }\n         });\n     },\n\n     updateUser: function(button) {\n         console.log('clicked the Save button');\n     }\n });\n
\n\n

Or alternatively one call control with two arguments:

\n\n
 this.control('useredit button[action=save]', {\n     click: this.updateUser\n });\n
\n\n

See Ext.ComponentQuery for more information on component selectors.

\n"},"doInit":{"!type":"fn(app: ?) -> !this"},"finishInit":{"!type":"fn(app: ?) -> !this"},"getApplication":{"!type":"fn() -> +Ext.app.Application","!doc":"

Returns the base Ext.app.Application for this controller.

\n"},"getController":{"!type":"fn(id: string) -> +Ext.app.Controller","!doc":"

Returns instance of a Controller with the given id.\nWhen controller doesn't exist yet, it's created. Note that this method depends\non Application instance and will return undefined when Application is not\naccessible. The only exception is when this Controller instance's id is requested;\nin that case we always return the instance even if Application is no available.

\n"},"getModel":{"!type":"fn(name: string) -> +Ext.data.Model","!doc":"

Returns a Model class with the given name.\nA shorthand for using Ext.ModelManager.getModel.

\n"},"getRef":{"!type":"fn(ref: ?, info: ?, config: ?) -> !this"},"getStore":{"!type":"fn(name: string) -> +Ext.data.Store","!doc":"

Returns instance of a Store with the given name.\nWhen store doesn't exist yet, it's created.

\n"},"getView":{"!type":"fn(name: string) -> +Ext.Base","!doc":"

Returns a View class with the given name. To create an instance of the view,\nyou can use it like it's used by Application to create the Viewport:

\n\n
this.getView('Viewport').create();\n
\n"},"hasRef":{"!type":"fn(ref: ?) -> bool","!doc":"

Returns true if a reference is registered.

\n"},"init":{"!type":"fn(application: +Ext.app.Application) -> !this","!doc":"

A template method that is called when your application boots. It is called before the\nApplication's launch function is executed so gives a hook point\nto run any code before your Viewport is created.

\n"},"initAutoGetters":{"!type":"fn() -> !this"},"listen":{"!type":"fn(to: ?) -> !this","!doc":"

Adds listeners to different event sources (also called \"event domains\"). The\nprimary event domain is that of components, but there are also other event domains:\nGlobal domain that intercepts events fired from\nExt.globalEvents Observable instance, Controller\ndomain can be used to listen to events fired by other Controllers,\nStore domain gives access to Store events, and\nDirect domain can be used with Ext.Direct Providers\nto listen to their events.

\n\n

To listen to \"bar\" events fired by a controller with id=\"foo\":

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.listen({\n             controller: {\n                 '#foo': {\n                    bar: this.onFooBar\n                 }\n             }\n         });\n     },\n     ...\n });\n
\n\n

To listen to \"bar\" events fired by any controller, and \"baz\" events\nfired by Store with storeId=\"baz\":

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.listen({\n             controller: {\n                 '*': {\n                    bar: this.onAnyControllerBar\n                 }\n             },\n             store: {\n                 '#baz': {\n                     baz: this.onStoreBaz\n                 }\n             }\n         });\n     },\n     ...\n });\n
\n\n

To listen to \"idle\" events fired by Ext.globalEvents when other event\nprocessing is complete and Ext JS is about to return control to the browser:

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.listen({\n             global: {               // Global events are always fired\n                 idle: this.onIdle   // from the same object, so there\n             }                       // are no selectors\n         });\n     }\n });\n
\n\n

As this relates to components, the following example:

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.listen({\n             component: {\n                 'useredit button[action=save]': {\n                    click: this.updateUser\n                 }\n             }\n         });\n     },\n     ...\n });\n
\n\n

Is equivalent to:

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.control({\n             'useredit button[action=save]': {\n                click: this.updateUser\n             }\n         });\n     },\n     ...\n });\n
\n\n

Of course, these can all be combined in a single call and used instead of\ncontrol, like so:

\n\n
 Ext.define('AM.controller.Users', {\n     init: function() {\n         this.listen({\n             global: {\n                 idle: this.onIdle\n             },\n             controller: {\n                 '*': {\n                    foobar: this.onAnyFooBar\n                 },\n                 '#foo': {\n                    bar: this.onFooBar\n                 }\n             },\n             component: {\n                 'useredit button[action=save]': {\n                    click: this.updateUser\n                 }\n             },\n             store: {\n                 '#qux': {\n                     load: this.onQuxLoad\n                 }\n             }\n         });\n     },\n     ...\n });\n
\n"},"onLaunch":{"!type":"fn(application: +Ext.app.Application) -> !this","!doc":"

A template method like init, but called after the viewport is created.\nThis is called after the launch method of Application\nis executed.

\n"},"ref":{"!type":"fn(refs: ?) -> !this"}},"controllerRegex":{"!type":"+RegExp"},"strings":{"!type":"?"},"createGetter":{"!type":"fn(baseGetter: ?, name: ?) -> !this"},"getFullName":{"!type":"fn(name: ?, kind: ?, namespace: ?) -> !this"},"getGetterName":{"!type":"fn(name: ?, kindUpper: ?) -> !this"},"processDependencies":{"!type":"fn(cls: ?, requires: ?, namespace: ?, kind: ?, names: ?) -> !this","!doc":"

This method is called like so:

\n\n
 Ext.app.Controller.processDependencies(proto, requiresArray, 'MyApp', 'model', [\n     'User',\n     'Item',\n     'Foo@Common.model',\n     'Bar.Baz@Common.model'\n ]);\n
\n\n

Required dependencies are added to requiresArray.

\n"}},"EventBus":{"!doc":"

This class manages event dispatching for Controllers. The details of connecting classes\nto this dispatching mechanism is delegated to Ext.app.EventDomain instances.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"control":{"!type":"fn(selectors: ?, controller: +Ext.app.Controller) -> !this","!doc":"

Adds a set of component event listeners for a controller. To work with event domains\nother than component, see listen.

\n"},"listen":{"!type":"fn(to: ?, controller: +Ext.app.Controller) -> !this","!doc":"

Adds a set of event domain listeners for a controller. For more information on event\ndomains, see Ext.app.EventDomain and Ext.app.Controller.

\n"},"unlisten":{"!type":"fn(controllerId: string) -> !this","!doc":"

Removes all of a controller's attached listeners.

\n"}},"EventDomain":{"!doc":"

This class is a base class for an event domain. In the context of MVC, an \"event domain\"\nis one or more base classes that fire events to which a Controller wants to listen. A\ncontroller listens to events by describing the selectors for events of interest to it.

\n\n

Matching selectors to the firer of an event is one key aspect that defines an event\ndomain. All event domain instances must provide a match method that tests selectors\nagainst the event firer.

\n\n

When an event domain instance is created (typically as a singleton), its type\nproperty is used to catalog the domain in the\nExt.app.EventDomain.instances map.

\n\n

There are five event domains provided by default:

\n\n\n\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype","idProperty":{"!type":"string","!doc":"

Name of the identifier property for this event domain.

\n"},"dispatch":{"!type":"fn(target: ?, ev: string, args: [?]) -> bool","!doc":"

This method dispatches an event fired by an object monitored by this domain. This\nis not called directly but is called by interceptors injected by the monitor method.

\n"},"listen":{"!type":"fn(selectors: ?) -> !this","!doc":"

This method adds listeners on behalf of a controller. This method is passed an\nobject that is keyed by selectors. The value of these is also an object but now\nkeyed by event name. For example:

\n\n
 domain.listen({\n     'some[selector]': {\n         click: function() { ... }\n     },\n\n     'other selector': {\n         change: {\n             fn: function() { ... },\n             delay: 10\n         }\n     }\n\n }, controller);\n
\n"},"match":{"!type":"fn(target: ?, selector: string) -> bool","!doc":"

This method matches the firer of the event (the target) to the given selector.\nDefault matching is very simple: a match is true when selector equals target's\nidProperty, or when selector is '*' wildcard to match any\ntarget.

\n"},"monitor":{"!type":"fn(observable: +Ext.Class) -> !this","!doc":"

This method is called by the derived class to monitor fireEvent calls. Any call\nto fireEvent on the target Observable will be intercepted and dispatched to any\nlistening Controllers. Assuming the original fireEvent method does not return\nfalse, the event is passed to the dispatch method of this object.

\n\n

This is typically called in the constructor of derived classes.

\n"},"unlisten":{"!type":"fn(controllerId: string) -> !this","!doc":"

Removes all of a controller's attached listeners.

\n"}},"instances":{"!type":"?","!doc":"

An object map containing Ext.app.EventDomain instances keyed by the value\nof their type property.

\n"}},"domain":{"Component":{"!doc":"

This class implements the component event domain. All classes extending from\nExt.Component are included in this domain. The matching criteria uses\nExt.ComponentQuery.

\n","!type":"fn()","prototype":{"!proto":"Ext.app.EventDomain.prototype"},"type":{"!type":"string"},"match":{"!type":"fn(target: ?, selector: ?) -> bool","!doc":"

This method matches the firer of the event (the target) to the given selector.\nDefault matching is very simple: a match is true when selector equals target's\nidProperty, or when selector is '*' wildcard to match any\ntarget.

\n"}},"Controller":{"!doc":"

This class implements the controller event domain. All classes extending from\nExt.app.Controller are included in this domain. The selectors are simply id's or the\nwildcard \"*\" to match any controller.

\n","!type":"fn()","prototype":{"!proto":"Ext.app.EventDomain.prototype"},"idProperty":{"!type":"string","!doc":"

Name of the identifier property for this event domain.

\n"},"type":{"!type":"string"}},"Direct":{"!doc":"

This class implements the Ext.Direct event domain. All classes extending from\nExt.direct.Provider are included in this domain. The selectors are simply provider\nid's or the wildcard \"*\" to match any provider.

\n","!type":"fn()","prototype":{"!proto":"Ext.app.EventDomain.prototype"},"idProperty":{"!type":"string","!doc":"

Name of the identifier property for this event domain.

\n"},"type":{"!type":"string"}},"Global":{"!doc":"

This class implements the global event domain. This domain represents event fired from\nExt.globalEvents Observable instance. No selectors are supported for this domain.

\n","!type":"fn()","prototype":{"!proto":"Ext.app.EventDomain.prototype"},"type":{"!type":"string"},"listen":{"!type":"fn(listeners: ?) -> !this","!doc":"

This method adds listeners on behalf of a controller. Since Global domain does not\nsupport selectors, we skip this layer and just accept an object keyed by events.\nFor example:

\n\n
 domain.listen({\n     idle: function() { ... },\n     afterlayout: {\n         fn: function() { ... },\n         delay: 10\n     }\n });\n
\n"},"match":{"!type":"fn() -> bool","!doc":"

This method matches the firer of the event (the target) to the given selector.\nDefault matching is very simple: a match is true when selector equals target's\nidProperty, or when selector is '*' wildcard to match any\ntarget.

\n"}},"Store":{"!doc":"

This class implements the data store event domain. All classes extending from\nExt.data.AbstractStore are included in this domain. The selectors are simply\nstore id's or the wildcard \"*\" to match any store.

\n","!type":"fn()","prototype":{"!proto":"Ext.app.EventDomain.prototype"},"idProperty":{"!type":"string","!doc":"

Name of the identifier property for this event domain.

\n"},"type":{"!type":"string"}}}},"button":{"Button":{"!doc":"

Create simple buttons with this component. Customisations include aligned\nicons, dropdown menus, tooltips\nand sizing options. Specify a handler to run code when\na user clicks the button, or use listeners for other events such as\nmouseover. Example usage:

\n\n
Ext.create('Ext.Button', {\n    text: 'Click me',\n    renderTo: Ext.getBody(),\n    handler: function() {\n        alert('You clicked the button!');\n    }\n});\n
\n\n

The handler configuration can also be updated dynamically using the setHandler\nmethod. Example usage:

\n\n
Ext.create('Ext.Button', {\n    text    : 'Dynamic Handler Button',\n    renderTo: Ext.getBody(),\n    handler : function() {\n        // this button will spit out a different number every time you click it.\n        // so firstly we must check if that number is already set:\n        if (this.clickCount) {\n            // looks like the property is already set, so lets just add 1 to that number and alert the user\n            this.clickCount++;\n            alert('You have clicked the button \"' + this.clickCount + '\" times.\\n\\nTry clicking it again..');\n        } else {\n            // if the clickCount property is not set, we will set it and alert the user\n            this.clickCount = 1;\n            alert('You just clicked the button for the first time!\\n\\nTry pressing it again..');\n        }\n    }\n});\n
\n\n

A button within a container:

\n\n
Ext.create('Ext.Container', {\n    renderTo: Ext.getBody(),\n    items   : [\n        {\n            xtype: 'button',\n            text : 'My Button'\n        }\n    ]\n});\n
\n\n

A useful option of Button is the scale configuration. This configuration has three different options:

\n\n\n\n\n

Example usage:

\n\n
Ext.create('Ext.Button', {\n    renderTo: document.body,\n    text    : 'Click me',\n    scale   : 'large'\n});\n
\n\n

Buttons can also be toggled. To enable this, you simple set the enableToggle property to true.\nExample usage:

\n\n
Ext.create('Ext.Button', {\n    renderTo: Ext.getBody(),\n    text: 'Click Me',\n    enableToggle: true\n});\n
\n\n

You can assign a menu to a button by using the menu configuration. This standard configuration\ncan either be a reference to a menu object, a menu id or a\nmenu config blob. When assigning a menu to a button, an arrow is automatically\nadded to the button. You can change the alignment of the arrow using the arrowAlign configuration\non button. Example usage:

\n\n
Ext.create('Ext.Button', {\n    text      : 'Menu button',\n    renderTo  : Ext.getBody(),\n    arrowAlign: 'bottom',\n    menu      : [\n        {text: 'Item 1'},\n        {text: 'Item 2'},\n        {text: 'Item 3'},\n        {text: 'Item 4'}\n    ]\n});\n
\n\n

Using listeners, you can easily listen to events fired by any component, using the listeners\nconfiguration or using the addListener method. Button has a variety of different listeners:

\n\n\n\n\n

Example usage:

\n\n
Ext.create('Ext.Button', {\n    text     : 'Button',\n    renderTo : Ext.getBody(),\n    listeners: {\n        click: function() {\n            // this == the button, as we are in the local scope\n            this.setText('I was clicked!');\n        },\n        mouseover: function() {\n            // set a new config which says we moused over, if not already set\n            if (!this.mousedOver) {\n                this.mousedOver = true;\n                alert('You moused over a button!\\n\\nI wont do this again.');\n            }\n        }\n    }\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_button_Button_cfg)","prototype":{"!proto":"Ext.Component.prototype","allowDepress":{"!type":"bool","!doc":"

False to not allow a pressed Button to be depressed. Only valid when enableToggle is true.

\n"},"arrowAlign":{"!type":"string","!doc":"

The side of the Button box to render the arrow if the button has an associated menu. Two\nvalues are allowed:

\n\n\n\n"},"arrowCls":{"!type":"string","!doc":"

The className used for the inner arrow element if the button has a menu.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to add to all buttons.

\n"},"baseParams":{"!type":"?","!doc":"

An object literal of parameters to pass to the url when the href property is specified.

\n"},"clickEvent":{"!type":"string","!doc":"

The DOM event that will fire the handler of the button. This can be any valid event name (dblclick, contextmenu).

\n"},"cls":{"!type":"string","!doc":"

A CSS class string to apply to the button's main element.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"destroyMenu":{"!type":"bool","!doc":"

Whether or not to destroy any associated menu when this button is destroyed. The menu\nwill be destroyed unless this is explicitly set to false.

\n"},"disabled":{"!type":"bool","!doc":"

True if this button is disabled.

\n"},"enableToggle":{"!type":"bool","!doc":"

True to enable pressed/not pressed toggling. If a toggleGroup is specified, this\noption will be set to true.

\n"},"focusCls":{"!type":"string","!doc":"

The CSS class to add to a button when it is in the focussed state.

\n"},"frame":{"!type":"bool","!doc":"

Specify as true to have the Component inject framing elements within the Component at render time to provide a\ngraphical rounded frame around the Component content.

\n\n

This is only necessary when running on outdated, or non standard-compliant browsers such as Microsoft's Internet\nExplorer prior to version 9 which do not support rounded corners natively.

\n\n

The extra space taken up by this framing is available from the read only property frameSize.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for this button. The default\nfont-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"handleMouseEvents":{"!type":"bool","!doc":"

False to disable visual cues on mouseover, mouseout and mousedown.

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the button is clicked (can be used instead of click event).

\n"},"hidden":{"!type":"bool","!doc":"

True if this button is hidden.

\n"},"href":{"!type":"string","!doc":"

The URL to open when the button is clicked. Specifying this config causes the Button to be\nrendered with the specified URL as the href attribute of its <a> Element.

\n\n

This is better than specifying a click handler of

\n\n
function() { window.location = \"http://www.sencha.com\" }\n
\n\n

because the UI will provide meaningful hints to the user as to what to expect upon clicking\nthe button, and will also allow the user to open in a new tab or window, bookmark or drag the URL, or directly save\nthe URL stream to disk.

\n\n

See also the hrefTarget config.

\n"},"hrefTarget":{"!type":"string","!doc":"

The target attribute to use for the underlying anchor. Only used if the href\nproperty is specified.

\n"},"icon":{"!type":"string","!doc":"

The path to an image to display in the button.

\n"},"iconAlign":{"!type":"string","!doc":"

The side of the Button box to render the icon. Four values are allowed:

\n\n\n\n"},"iconCls":{"!type":"string","!doc":"

A css class which sets a background image to be used as the icon for this button.

\n"},"menu":{"!type":"+Ext.menu.Menu","!doc":"

The Menu object associated with this Button when configured with the menu config\noption.

\n"},"menuActiveCls":{"!type":"string","!doc":"

The CSS class to add to a button when it's menu is active.

\n"},"menuAlign":{"!type":"string","!doc":"

The position to align the menu to (see Ext.util.Positionable.alignTo for more details).

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width for this button (used to give a set of buttons a common width).\nSee also Ext.panel.Panel.minButtonWidth.

\n"},"overCls":{"!type":"string","!doc":"

The CSS class to add to a button when it is in the over (hovered) state.

\n"},"overflowText":{"!type":"string","!doc":"

If used in a Toolbar, the text to be used if this item is shown in the overflow menu.\nSee also Ext.toolbar.Item.overflowText.

\n"},"params":{"!type":"?","!doc":"

An object literal of parameters to pass to the url when the href property is specified. Any params\noverride baseParams. New params can be set using the setParams method.

\n"},"pressed":{"!type":"bool","!doc":"

True if this button is pressed (only if enableToggle = true).

\n"},"pressedCls":{"!type":"string","!doc":"

The CSS class to add to a button when it is in the pressed state.

\n"},"preventDefault":{"!type":"bool","!doc":"

True to prevent the default action when the clickEvent is processed.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

We have to keep \"unselectable\" attribute on all elements because it's not inheritable.\nWithout it, clicking anywhere on a button disrupts current selection and cursor position\nin HtmlEditor.

\n"},"repeat":{"!type":"bool|?","!doc":"

True to repeat fire the click event while the mouse is down. This can also be a\nClickRepeater config object.

\n"},"scale":{"!type":"string|string|string","!doc":"

The size of the Button. Three values are allowed:

\n\n\n\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler and toggleHandler is executed.\nDefaults to this Button.

\n"},"showEmptyMenu":{"!type":"bool","!doc":"

True to force an attached menu with no items to be shown when clicking\nthis button. By default, the menu will not show if it is empty.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"tabIndex":{"!type":"number","!doc":"

Set a DOM tabIndex for this button.

\n"},"text":{"!type":"string","!doc":"

The button text to be used as innerHTML (html tags are accepted).

\n"},"textAlign":{"!type":"string","!doc":"

The text alignment for this button (center, left, right).

\n"},"toggleGroup":{"!type":"string","!doc":"

The group this toggle button is a member of (only 1 per group can be pressed). If a toggleGroup\nis specified, the enableToggle configuration will automatically be set to true.

\n"},"toggleHandler":{"!type":"fn()","!doc":"

Function called when a Button with enableToggle set to true is clicked.

\n"},"tooltip":{"!type":"string|?","!doc":"

The tooltip for the button - can be a string to be used as innerHTML (html tags are accepted) or\nQuickTips config object.

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' for QuickTips or 'title' for title attribute.

\n"},"_triggerRegion":{"!type":"?","!doc":"

A reusable object used by getTriggerRegion to avoid excessive object creation.

\n"},"allowedScales":{"!type":"[?]","!doc":"

An array of allowed scales.

\n"},"isAction":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Button, or subclass thereof.

\n"},"template":{"!type":"+Ext.Template","!doc":"

A Template used to create the Button's DOM structure.

\n\n

Instances, or subclasses which need a different DOM structure may provide a different template layout in\nconjunction with an implementation of getTemplateArgs.

\n"},"addOverCls":{"!type":"fn() -> !this","!doc":"

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"clearTip":{"!type":"fn() -> !this"},"didIconStateChange":{"!type":"fn(old: string, current: string) -> bool","!doc":"

Checks if the icon/iconCls changed from being empty to having a value, or having a value to being empty.

\n"},"disable":{"!type":"fn(silent: ?) -> !this","!doc":"

inherit docs

\n"},"doToggle":{"!type":"fn() -> !this"},"enable":{"!type":"fn(silent: ?) -> !this","!doc":"

inherit docs

\n"},"fireHandler":{"!type":"fn(e: ?) -> !this"},"getActionEl":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"getBtnWrapFrameWidth":{"!type":"fn(side: ?) -> !this"},"getComponentCls":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

inherit docs

\n"},"getHref":{"!type":"fn() -> string|bool","!doc":"

If there is a configured href for this Button, returns the href with parameters appended.

\n"},"getInnerCls":{"!type":"fn() -> !this"},"getRefItems":{"!type":"fn(deep: ?) -> !this"},"getSplitCls":{"!type":"fn() -> !this"},"getTemplateArgs":{"!type":"fn() -> ?","!doc":"

This method returns an object which provides substitution parameters for the XTemplate used to\ncreate this Button's DOM structure.

\n\n

Instances or subclasses which use a different Template to create a different DOM structure may need to provide\ntheir own implementation of this method.

\n"},"getText":{"!type":"fn() -> string","!doc":"

Gets the text for this Button

\n"},"getTipAttr":{"!type":"fn() -> !this"},"getTriggerRegion":{"!type":"fn() -> ?","!doc":"

Returns an object containing begin and end properties that indicate the\nleft/right bounds of a right trigger or the top/bottom bounds of a bottom trigger.

\n"},"getTriggerSize":{"!type":"fn() -> !this","!doc":"

Measures the size of the trigger area for menu and split buttons. Will be a width for\na right-aligned trigger and a height for a bottom-aligned trigger. Cached after first measurement.

\n"},"hasVisibleMenu":{"!type":"fn() -> bool","!doc":"

Returns true if the button has a menu and it is visible

\n"},"hideMenu":{"!type":"fn() -> +Ext.button.Button","!doc":"

Hides this button's menu (if it has one)

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"maybeShowMenu":{"!type":"fn() -> !this"},"onClick":{"!type":"fn(e: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

See comments in onFocus

\n"},"onDownKey":{"!type":"fn(k: ?, e: ?) -> !this"},"onMenuHide":{"!type":"fn(e: ?) -> !this"},"onMenuShow":{"!type":"fn(e: ?) -> !this"},"onMenuTriggerOut":{"!type":"fn(e: ?) -> !this","!doc":"

virtual mouseleave handler called when it is detected that the mouseout event\nsignified the mouse leaving the arrow area of the button - the <em>.

\n"},"onMenuTriggerOver":{"!type":"fn(e: ?) -> !this","!doc":"

virtual mouseenter handler called when it is detected that the mouseover event\nsignified the mouse entering the arrow area of the button - the <em>.

\n"},"onMouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

Mousedown brings to front, and programatically grabs focus unless the mousedown was on a focusable element

\n"},"onMouseEnter":{"!type":"fn(e: ?) -> !this","!doc":"

virtual mouseenter handler called when it is detected that the mouseout event\nsignified the mouse entering the encapsulating element.

\n"},"onMouseLeave":{"!type":"fn(e: ?) -> !this","!doc":"

virtual mouseleave handler called when it is detected that the mouseover event\nsignified the mouse entering the encapsulating element.

\n"},"onMouseMove":{"!type":"fn(e: ?) -> !this","!doc":"

mousemove handler called when the mouse moves anywhere within the encapsulating element.\nThe position is checked to determine if the mouse is entering or leaving the trigger area. Using\nmousemove to check this is more resource intensive than we'd like, but it is necessary because\nthe trigger area does not line up exactly with sub-elements so we don't always get mouseover/out\nevents when needed. In the future we should consider making the trigger a separate element that\nis absolutely positioned and sized over the trigger area.

\n"},"onMouseOut":{"!type":"fn(e: ?) -> !this","!doc":"

mouseout handler called when a mouseout event occurs anywhere within the encapsulating element -\nor the mouse leaves the encapsulating element.\nThe targets are interrogated to see what is being exited to where.

\n"},"onMouseOver":{"!type":"fn(e: ?) -> !this","!doc":"

mouseover handler called when a mouseover event occurs anywhere within the encapsulating element.\nThe targets are interrogated to see what is being entered from where.

\n"},"onMouseUp":{"!type":"fn(e: ?) -> !this"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"onRepeatClick":{"!type":"fn(repeat: ?, e: ?) -> !this"},"removeOverCls":{"!type":"fn() -> !this"},"restoreClick":{"!type":"fn() -> !this"},"setComponentCls":{"!type":"fn() -> !this"},"setGlyph":{"!type":"fn(glyph: number|string) -> +Ext.button.Button","!doc":"

Sets this button's glyph

\n"},"setHandler":{"!type":"fn(handler: fn(), scope?: ?) -> +Ext.button.Button","!doc":"

Assigns this Button's click handler

\n"},"setHref":{"!type":"fn(href: string) -> !this","!doc":"

Sets the href of the embedded anchor element to the passed URL.

\n\n

Also appends any configured baseParams and parameters set through setParams.

\n"},"setIcon":{"!type":"fn(icon: string) -> +Ext.button.Button","!doc":"

Sets the background image (inline style) of the button. This method also changes the value of the icon\nconfig internally.

\n"},"setIconCls":{"!type":"fn(cls: string) -> +Ext.button.Button","!doc":"

Sets the CSS class that provides a background image to use as the button's icon. This method also changes the\nvalue of the iconCls config internally.

\n"},"setParams":{"!type":"fn(params: ?) -> !this","!doc":"

Sets the href of the link dynamically according to the params passed, and any baseParams configured.

\n\n

Only valid if the Button was originally configured with a href

\n"},"setScale":{"!type":"fn(scale: string) -> !this","!doc":"

Method to change the scale of the button. See scale for allowed configurations.

\n"},"setText":{"!type":"fn(text: string) -> +Ext.button.Button","!doc":"

Sets this Button's text

\n"},"setTextAlign":{"!type":"fn(align: string) -> !this","!doc":"

Sets the text alignment for this button.

\n"},"setTooltip":{"!type":"fn(tooltip: string|?) -> +Ext.button.Button","!doc":"

Sets the tooltip for this Button.

\n"},"setUI":{"!type":"fn(ui: ?) -> !this","!doc":"

inherit docs

\n"},"showMenu":{"!type":"fn(fromEvent: ?) -> !this","!doc":"

Shows this button's menu (if it has one)

\n"},"toggle":{"!type":"fn(this: +Ext.button.Button, pressed: bool, eOpts: ?)","!doc":"

Fires when the 'pressed' state of this button changes (only if enableToggle = true)

\n"},"click":{"!type":"fn(this: +Ext.button.Button, e: +Event, eOpts: ?)","!doc":"

Fires when this button is clicked, before the configured handler is invoked. Execution of the\nhandler may be vetoed by returning false to this event.

\n"},"glyphchange":{"!type":"fn(this: +Ext.button.Button, newGlyph: number|string, oldGlyph: number|string, eOpts: ?)","!doc":"

Fired when the button's glyph is changed by the setGlyph method.

\n"},"iconchange":{"!type":"fn(this: +Ext.button.Button, oldIcon: string, newIcon: string, eOpts: ?)","!doc":"

Fired when the button's icon is changed by the setIcon or setIconCls methods.

\n"},"menuhide":{"!type":"fn(this: +Ext.button.Button, menu: +Ext.menu.Menu, eOpts: ?)","!doc":"

If this button has a menu, this event fires when it is hidden

\n"},"menushow":{"!type":"fn(this: +Ext.button.Button, menu: +Ext.menu.Menu, eOpts: ?)","!doc":"

If this button has a menu, this event fires when it is shown

\n"},"menutriggerout":{"!type":"fn(this: +Ext.button.Button, menu: +Ext.menu.Menu, e: +Event, eOpts: ?)","!doc":"

If this button has a menu, this event fires when the mouse leaves the menu triggering element

\n"},"menutriggerover":{"!type":"fn(this: +Ext.button.Button, menu: +Ext.menu.Menu, e: +Event, eOpts: ?)","!doc":"

If this button has a menu, this event fires when the mouse enters the menu triggering element

\n"},"mouseout":{"!type":"fn(this: +Ext.button.Button, e: +Event, eOpts: ?)","!doc":"

Fires when the mouse exits the button

\n"},"mouseover":{"!type":"fn(this: +Ext.button.Button, e: +Event, eOpts: ?)","!doc":"

Fires when the mouse hovers over the button

\n"},"textchange":{"!type":"fn(this: +Ext.button.Button, oldText: string, newText: string, eOpts: ?)","!doc":"

Fired when the button's text is changed by the setText method.

\n"}}},"Cycle":{"!doc":"

A specialized SplitButton that contains a menu of Ext.menu.CheckItem elements. The button automatically\ncycles through each menu item on click, raising the button's change event (or calling the button's\nchangeHandler function, if supplied) for the active menu item. Clicking on the arrow section of the\nbutton displays the dropdown menu just like a normal SplitButton. Example usage:

\n\n
Ext.create('Ext.button.Cycle', {\n    showText: true,\n    prependText: 'View as ',\n    renderTo: Ext.getBody(),\n    menu: {\n        id: 'view-type-menu',\n        items: [{\n            text: 'text only',\n            iconCls: 'view-text',\n            checked: true\n        },{\n            text: 'HTML',\n            iconCls: 'view-html'\n        }]\n    },\n    changeHandler: function(cycleBtn, activeItem) {\n        Ext.Msg.alert('Change View', activeItem.text);\n    }\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_button_Cycle_cfg)","prototype":{"!proto":"Ext.button.Split.prototype","changeHandler":{"!type":"fn()","!doc":"

A callback function that will be invoked each time the active menu item in the button's menu has changed. If this\ncallback is not supplied, the SplitButton will instead fire the change event on active item change. The\nchangeHandler function will be called with the following argument list: (SplitButton this, Ext.menu.CheckItem\nitem)

\n"},"forceGlyph":{"!type":"number|string","!doc":"

The charCode to be used as the static icon for this button. This icon will always be\ndisplayed regardless of which item is selected in the dropdown list. This override\nthe default behavior of changing the button's icon to match the selected item's icon\non change. This property expects a format consistent with that of glyph

\n"},"forceIcon":{"!type":"string","!doc":"

A css class which sets an image to be used as the static icon for this button. This icon will always be displayed\nregardless of which item is selected in the dropdown list. This overrides the default behavior of changing the\nbutton's icon to match the selected item's icon on change.

\n"},"items":{"!type":"[?]","!doc":"

An array of Ext.menu.CheckItem config objects to be used when creating the button's menu items (e.g.,\n{text:'Foo', iconCls:'foo-icon'})

\n"},"prependText":{"!type":"string","!doc":"

A static string to prepend before the active item's text when displayed as the button's text (only applies when\nshowText = true).

\n"},"showText":{"!type":"bool","!doc":"

True to display the active item's text as the button text. The Button will show its\nconfigured text if this config is omitted.

\n"},"menu":{"!type":"+Ext.menu.Menu","!doc":"

The Menu object used to display the CheckItems representing the\navailable choices.

\n"},"checkHandler":{"!type":"fn(item: ?, pressed: ?) -> !this"},"getActiveItem":{"!type":"fn() -> +Ext.menu.CheckItem","!doc":"

Gets the currently active menu item.

\n"},"getButtonText":{"!type":"fn(item: ?) -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"setActiveItem":{"!type":"fn(item: +Ext.menu.CheckItem, suppressEvent?: bool) -> !this","!doc":"

Sets the button's active menu item.

\n"},"toggleSelected":{"!type":"fn() -> !this","!doc":"

This is normally called internally on button click, but can be called externally to advance the button's active\nitem programmatically to the next one in the menu. If the current item is the last one in the menu the active\nitem will be set to the first item in the menu.

\n"},"change":{"!type":"fn(this: +Ext.button.Cycle, item: +Ext.menu.CheckItem, eOpts: ?)","!doc":"

Fires after the button's active menu item has changed. Note that if a changeHandler function is\nset on this CycleButton, it will be called instead on active item change and this change event will not\nbe fired.

\n"}}},"Manager":{"buttonSelector":{"!type":"string"},"groups":{"!type":"?"},"pressedButton":{"!type":"?"},"getPressed":{"!type":"fn(group: string) -> +Ext.button.Button","!doc":"

Gets the pressed button in the passed group or null

\n"},"init":{"!type":"fn() -> !this"},"onButtonMousedown":{"!type":"fn(button: ?, e: ?) -> !this","!doc":"

Called by buton instances.\nTrack the button which was mousedowned upon so that the next document mouseup can be delivered to it\nin case mouse is moved outside of button element.

\n"},"onDocumentKeyDown":{"!type":"fn(e: ?) -> !this","!doc":"

Buttons must react to SPACE and ENTER to trigger the click handler.\nNow that they are <a> elements, we use a keydown listener.

\n"},"onDocumentMouseUp":{"!type":"fn(e: ?) -> !this"},"register":{"!type":"fn(btn: ?) -> !this"},"toggleGroup":{"!type":"fn(btn: ?, state: ?) -> !this"},"unregister":{"!type":"fn(btn: ?) -> !this"}},"Split":{"!doc":"

A split button that provides a built-in dropdown arrow that can fire an event separately from the default click event\nof the button. Typically this would be used to display a dropdown menu that provides additional options to the\nprimary button action, but any custom handler can provide the arrowclick implementation. Example usage:

\n\n
// display a dropdown menu:\nExt.create('Ext.button.Split', {\n    renderTo: Ext.getBody(),\n    text: 'Options',\n    // handle a click on the button itself\n    handler: function() {\n        alert(\"The button was clicked\");\n    },\n    menu: new Ext.menu.Menu({\n        items: [\n            // these will render as dropdown menu items when the arrow is clicked:\n            {text: 'Item 1', handler: function(){ alert(\"Item 1 clicked\"); }},\n            {text: 'Item 2', handler: function(){ alert(\"Item 2 clicked\"); }}\n        ]\n    })\n});\n
\n\n

Instead of showing a menu, you can provide any type of custom functionality you want when the dropdown\narrow is clicked:

\n\n
Ext.create('Ext.button.Split', {\n    renderTo: 'button-ct',\n    text: 'Options',\n    handler: optionsHandler,\n    arrowHandler: myCustomHandler\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_button_Split_cfg)","prototype":{"!proto":"Ext.button.Button.prototype","arrowCls":{"!type":"string","!doc":"

The className used for the inner arrow element if the button has a menu.

\n"},"arrowHandler":{"!type":"fn()","!doc":"

A function called when the arrow button is clicked (can be used instead of click event)

\n"},"arrowTooltip":{"!type":"string","!doc":"

The title attribute of the arrow.

\n"},"split":{"!type":"bool"},"initComponent":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"onClick":{"!type":"fn(e: ?, t: ?) -> !this"},"setArrowHandler":{"!type":"fn(handler: fn(), scope?: ?) -> !this","!doc":"

Sets this button's arrow click handler.

\n"},"arrowclick":{"!type":"fn(this: +Ext.button.Split, e: +Event, eOpts: ?)","!doc":"

Fires when this button's arrow is clicked.

\n"}}}},"chart":{"Callout":{"!doc":"

A mixin providing callout functionality for Ext.chart.series.Series.

\n","!type":"fn(config: Ext_chart_Callout_cfg)","prototype":{"!proto":"Ext.Base.prototype","hideCallouts":{"!type":"fn(index: ?) -> !this"},"onCreateCallout":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> !this"},"renderCallouts":{"!type":"fn() -> !this"}}},"Chart":{"!doc":"

Charts provide a flexible way to achieve a wide range of data visualization capablitities.\nEach Chart gets its data directly from a Store, and automatically\nupdates its display whenever data in the Store changes. In addition, the look and feel\nof a Chart can be customized using Themes.

\n\n

Creating a Simple Chart

\n\n

Every Chart has three key parts - a Store that contains the data,\nan array of Axes which define the boundaries of the Chart,\nand one or more Series to handle the visual rendering of the data points.

\n\n

1. Creating a Store

\n\n

The first step is to create a Model that represents the type of\ndata that will be displayed in the Chart. For example the data for a chart that displays\na weather forecast could be represented as a series of \"WeatherPoint\" data points with\ntwo fields - \"temperature\", and \"date\":

\n\n
Ext.define('WeatherPoint', {\n    extend: 'Ext.data.Model',\n    fields: ['temperature', 'date']\n});\n
\n\n

Next a Store must be created. The store contains a collection of \"WeatherPoint\" Model instances.\nThe data could be loaded dynamically, but for sake of ease this example uses inline data:

\n\n
var store = Ext.create('Ext.data.Store', {\n    model: 'WeatherPoint',\n    data: [\n        { temperature: 58, date: new Date(2011, 1, 1, 8) },\n        { temperature: 63, date: new Date(2011, 1, 1, 9) },\n        { temperature: 73, date: new Date(2011, 1, 1, 10) },\n        { temperature: 78, date: new Date(2011, 1, 1, 11) },\n        { temperature: 81, date: new Date(2011, 1, 1, 12) }\n    ]\n});\n
\n\n

For additional information on Models and Stores please refer to the Data Guide.

\n\n

2. Creating the Chart object

\n\n

Now that a Store has been created it can be used in a Chart:

\n\n
Ext.create('Ext.chart.Chart', {\n   renderTo: Ext.getBody(),\n   width: 400,\n   height: 300,\n   store: store\n});\n
\n\n

That's all it takes to create a Chart instance that is backed by a Store.\nHowever, if the above code is run in a browser, a blank screen will be displayed.\nThis is because the two pieces that are responsible for the visual display,\nthe Chart's axes and series, have not yet been defined.

\n\n

3. Configuring the Axes

\n\n

Axes are the lines that define the boundaries of the data points that a Chart can display.\nThis example uses one of the most common Axes configurations - a horizontal \"x\" axis, and a vertical \"y\" axis:

\n\n
Ext.create('Ext.chart.Chart', {\n    ...\n    axes: [\n        {\n            title: 'Temperature',\n            type: 'Numeric',\n            position: 'left',\n            fields: ['temperature'],\n            minimum: 0,\n            maximum: 100\n        },\n        {\n            title: 'Time',\n            type: 'Time',\n            position: 'bottom',\n            fields: ['date'],\n            dateFormat: 'ga'\n        }\n    ]\n});\n
\n\n

The \"Temperature\" axis is a vertical Numeric Axis and is positioned on the left edge of the Chart.\nIt represents the bounds of the data contained in the \"WeatherPoint\" Model's \"temperature\" field that was\ndefined above. The minimum value for this axis is \"0\", and the maximum is \"100\".

\n\n

The horizontal axis is a Time Axis and is positioned on the bottom edge of the Chart.\nIt represents the bounds of the data contained in the \"WeatherPoint\" Model's \"date\" field.\nThe dateFormat\nconfiguration tells the Time Axis how to format it's labels.

\n\n

Here's what the Chart looks like now that it has its Axes configured:

\n\n

\"Chart

\n\n

4. Configuring the Series

\n\n

The final step in creating a simple Chart is to configure one or more Series.\nSeries are responsible for the visual representation of the data points contained in the Store.\nThis example only has one Series:

\n\n
Ext.create('Ext.chart.Chart', {\n    ...\n    axes: [\n        ...\n    ],\n    series: [\n        {\n            type: 'line',\n            xField: 'date',\n            yField: 'temperature'\n        }\n    ]\n});\n
\n\n

This Series is a Line Series, and it uses the \"date\" and \"temperature\" fields\nfrom the \"WeatherPoint\" Models in the Store to plot its data points:

\n\n

\"Line

\n\n

See the Line Charts Example for a live demo.

\n\n

Themes

\n\n

The color scheme for a Chart can be easily changed using the theme configuration option:

\n\n
Ext.create('Ext.chart.Chart', {\n    ...\n    theme: 'Green',\n    ...\n});\n
\n\n

\"Green

\n\n

For more information on Charts please refer to the Charting Guide.

\n","!type":"fn(config?: Ext_chart_Chart_cfg)","prototype":{"!proto":"Ext.draw.Component.prototype","animate":{"!type":"bool|?","!doc":"

True for the default animation (easing: 'ease' and duration: 500) or a standard animation config\nobject to be used for default chart animations. Defaults to false.

\n"},"axes":{"!type":"[+Ext.chart.axis.Axis]","!doc":"

Array of Axis instances or config objects. For example:

\n\n
axes: [{\n    type: 'Numeric',\n    position: 'left',\n    fields: ['data1'],\n    title: 'Number of Hits',\n    minimum: 0,\n    //one minor tick between two major ticks\n    minorTickSteps: 1\n}, {\n    type: 'Category',\n    position: 'bottom',\n    fields: ['name'],\n    title: 'Month of the Year'\n}]\n
\n"},"background":{"!type":"?|bool","!doc":"

The chart background. This can be a gradient object, image, or color. Defaults to false for no\nbackground. For example, if background were to be a color we could set the object as

\n\n
background: {\n    //color string\n    fill: '#ccc'\n}\n
\n\n

You can specify an image by using:

\n\n
background: {\n    image: 'http://path.to.image/'\n}\n
\n\n

Also you can specify a gradient by using the gradient object syntax:

\n\n
background: {\n    gradient: {\n        id: 'gradientId',\n        angle: 45,\n        stops: {\n            0: {\n                color: '#555'\n            }\n            100: {\n                color: '#ddd'\n            }\n        }\n    }\n}\n
\n"},"gradients":{"!type":"[?]","!doc":"

Define a set of gradients that can be used as fill property in sprites. The gradients array is an\narray of objects with the following properties:

\n\n\n\n\n

For example:

\n\n
gradients: [{\n    id: 'gradientId',\n    angle: 45,\n    stops: {\n        0: {\n            color: '#555'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}, {\n    id: 'gradientId2',\n    angle: 0,\n    stops: {\n        0: {\n            color: '#590'\n        },\n        20: {\n            color: '#599'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}]\n
\n\n

Then the sprites can use gradientId and gradientId2 by setting the fill attributes to those ids, for example:

\n\n
sprite.setAttributes({\n    fill: 'url(#gradientId)'\n}, true);\n
\n"},"insetPadding":{"!type":"number","!doc":"

The amount of inset padding in pixels for the chart. Defaults to 10.

\n"},"legend":{"!type":"bool|?","!doc":"

True for the default legend display or a legend config object. Defaults to false.

\n"},"series":{"!type":"[+Ext.chart.series.Series]","!doc":"

Array of Series instances or config objects. For example:

\n\n
series: [{\n    type: 'column',\n    axis: 'left',\n    listeners: {\n        'afterrender': function() {\n            console('afterrender');\n        }\n    },\n    xField: 'category',\n    yField: 'data1'\n}]\n
\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The store that supplies data to this chart.

\n"},"theme":{"!type":"string","!doc":"

The name of the theme to be used. A theme defines the colors and other visual displays of tick marks\non axis, text, title text, line colors, marker colors and styles, etc. Possible theme values are 'Base', 'Green',\n'Sky', 'Red', 'Purple', 'Blue', 'Yellow' and also six category themes 'Category1' to 'Category6'. Default value\nis 'Base'.

\n"},"viewBox":{"!type":"bool","!doc":"

Turn on view box support which will scale and position items in the draw component to fit to the component while\nmaintaining aspect ratio. Note that this scaling can override other sizing settings on your items.

\n"},"afterComponentLayout":{"!type":"fn(width: ?, height: ?, oldWidth: ?, oldHeight: ?) -> !this","!doc":"

overrides the component method to set the correct dimensions to the chart.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

set the store after rendering the chart.

\n"},"alignAxes":{"!type":"fn() -> !this","!doc":"

Adjust the dimensions and positions of each axis and the chart body area after accounting\nfor the space taken up on each side by the axes and legend.\nThis code is taken from Ext.chart.Chart and refactored to provide better flexibility.

\n"},"bindStore":{"!type":"fn(store: ?, initial: ?) -> !this","!doc":"

Binds a store to this instance.

\n"},"calculateInsets":{"!type":"fn() -> !this","!doc":"

Calculate insets for the Chart.

\n"},"delayRefresh":{"!type":"fn() -> !this","!doc":"

buffered refresh for when we update the store

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

remove gently.

\n"},"doRefresh":{"!type":"fn() -> !this"},"drawAxis":{"!type":"fn(axis: ?) -> !this","!doc":"

draw axis.

\n"},"drawCharts":{"!type":"fn(series: ?) -> !this","!doc":"

draw series.

\n"},"forceRefresh":{"!type":"fn(container: ?) -> !this"},"getChartStore":{"!type":"fn() -> !this"},"getEventXY":{"!type":"fn(e: ?) -> !this","!doc":"

get x and y position of the mouse cursor.

\n"},"getInsets":{"!type":"fn() -> !this","!doc":"

Get initial insets; override to provide different defaults.

\n"},"getMaxGutters":{"!type":"fn() -> !this"},"getStoreListeners":{"!type":"fn() -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"handleClick":{"!type":"fn(name: ?, e: ?) -> !this","!doc":"

wrap the mouse down position to delegate the event to the series.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initializeAxis":{"!type":"fn(axis: ?) -> !this","!doc":"

Create Axis

\n"},"initializeSeries":{"!type":"fn(series: ?, idx: ?, themeIndex: ?) -> !this","!doc":"

initialize the series.

\n"},"onAddedVml":{"!type":"fn() -> !this","!doc":"

When using a vml surface we need to redraw when this chart or one of its ancestors\nis moved to a new container after render, because moving the vml chart causes the\nvml elements to go haywire, some displaing incorrectly or not displaying at all.\nThis appears to be caused by the component being moved to the detached body element\nbefore being added to the new container.

\n"},"onClick":{"!type":"fn(e: ?) -> !this"},"onContainerAddedVml":{"!type":"fn(container: ?) -> !this"},"onDblClick":{"!type":"fn(e: ?) -> !this"},"onMouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

wrap the mouse down position to delegate the event to the series.

\n"},"onMouseLeave":{"!type":"fn(e: ?) -> !this","!doc":"

handle mouse leave event.

\n"},"onMouseMove":{"!type":"fn(e: ?) -> !this","!doc":"

wrap the mouse move event so it can be delegated to the series.

\n"},"onMouseUp":{"!type":"fn(e: ?) -> !this","!doc":"

wrap the mouse up event to delegate it to the series.

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"redraw":{"!type":"fn(resize?: bool) -> !this","!doc":"

Redraws the chart. If animations are set this will animate the chart too.

\n"},"refresh":{"!type":"fn(this: +Ext.chart.Chart, eOpts: ?)","!doc":"

Fires after the chart data has been refreshed.

\n"},"save":{"!type":"fn(config?: ?) -> ?","!doc":"

Saves the chart by either triggering a download or returning a string containing the chart data\nas SVG. The action depends on the export type specified in the passed configuration. The chart\nwill be exported using either the Ext.draw.engine.SvgExporter or the Ext.draw.engine.ImageExporter\nclasses.

\n\n

Possible export types:

\n\n\n\n\n

If 'image/svg+xml' is specified, the SvgExporter will be used.\nIf 'image/png' or 'image/jpeg' are specified, the ImageExporter will be used. This exporter\nmust post the SVG data to a remote server to have the data processed, see the Ext.draw.engine.ImageExporter\nfor more details.

\n\n

Example usage:

\n\n
chart.save({\n     type: 'image/png'\n});\n
\n\n

Important: By default, chart data is sent to a server operated\nby Sencha to do data processing. You may change this default by\nsetting the defaultUrl of the Ext.draw.engine.ImageExporter class.\nIn addition, please note that this service only creates PNG images.

\n"},"setShowListeners":{"!type":"fn(method: ?) -> !this"},"setSubStore":{"!type":"fn(subStore: ?) -> !this"},"beforerefresh":{"!type":"fn(this: +Ext.chart.Chart, eOpts: ?)","!doc":"

Fires before a refresh to the chart data is called. If the beforerefresh handler returns false the\nrefresh action will be cancelled.

\n"}}},"Mask":{"prototype":{"!proto":"Ext.Base.prototype","mask":{"!type":"bool|string","!doc":"

Enables selecting a region on chart. True to enable any selection,\n'horizontal' or 'vertical' to restrict the selection to X or Y axis.

\n\n

The mask in itself will do nothing but fire 'select' event.\nSee Ext.chart.Mask for example.

\n"},"handleMouseEvent":{"!type":"fn(e: ?) -> !this"},"onMouseDown":{"!type":"fn(e: ?) -> !this"},"onMouseLeave":{"!type":"fn(e: ?) -> !this"},"onMouseMove":{"!type":"fn(e: ?) -> !this"},"onMouseUp":{"!type":"fn(e: ?) -> !this"}},"!doc":"

Defines a mask for a chart's series.\nThe 'chart' member must be set prior to rendering.

\n\n

A Mask can be used to select a certain region in a chart.\nWhen enabled, the select event will be triggered when a\nregion is selected by the mask, allowing the user to perform\nother tasks like zooming on that region, etc.

\n\n

In order to use the mask one has to set the Chart mask option to\ntrue, vertical or horizontal. Then a possible configuration for the\nlistener could be:

\n\n
items: {\n    xtype: 'chart',\n    animate: true,\n    store: store1,\n    mask: 'horizontal',\n    listeners: {\n        select: {\n            fn: function(me, selection) {\n                me.setZoom(selection);\n                me.mask.hide();\n            }\n        }\n    }\n}\n
\n\n

In this example we zoom the chart to that particular region. You can also get\na handle to a mask instance from the chart object. The chart.mask element is a\nExt.Panel.

\n","!type":"fn(config?: Ext_chart_Mask_cfg)"},"Navigation":{"prototype":{"restoreZoom":{"!type":"fn() -> !this","!doc":"

Restores the zoom to the original value. This can be used to reset\nthe previous zoom state set by setZoom. For example:

\n\n
myChart.restoreZoom();\n
\n"},"setZoom":{"!type":"fn(zoomConfig: ?) -> !this","!doc":"

Zooms the chart to the specified selection range.\nCan be used with a selection mask. For example:

\n\n
items: {\n    xtype: 'chart',\n    animate: true,\n    store: store1,\n    mask: 'horizontal',\n    listeners: {\n        select: {\n            fn: function(me, selection) {\n                me.setZoom(selection);\n                me.mask.hide();\n            }\n        }\n    }\n}\n
\n"}},"!doc":"

Handles panning and zooming capabilities.

\n\n

Used as mixin by Ext.chart.Chart.

\n"},"Highlight":{"!doc":"

A mixin providing highlight functionality for Ext.chart.series.Series.

\n","!type":"fn(config: Ext_chart_Highlight_cfg)","prototype":{"!proto":"Ext.Base.prototype","highlight":{"!type":"bool|?","!doc":"

Set to true to enable highlighting using the default highlight attributes.

\n\n

Can also be an object with style properties (i.e fill, stroke, stroke-width, radius) which are may override the default highlight attributes.

\n"},"highlightCfg":{"!type":"?","!doc":"

The default properties to apply as a highight. Value is

\n\n

{\n fill: '#fdd',\n \"stroke-width\": 5,\n stroke: \"#f55'\n }

\n"},"cleanHighlights":{"!type":"fn() -> !this"},"highlightItem":{"!type":"fn(item: ?) -> !this","!doc":"

Highlight the given series item.

\n"},"unHighlightItem":{"!type":"fn() -> !this","!doc":"

Un-highlight any existing highlights

\n"}}},"Label":{"!doc":"

Labels is a mixin to the Series class. Labels methods are implemented\nin each of the Series (Pie, Bar, etc) for label creation and placement.

\n\n

The 2 methods that must be implemented by the Series are:

\n\n\n\n\n

The application can override these methods to control the style and\nlocation of the labels. For instance, to display the labels in green and\nadd a '+' symbol when the value of a Line series exceeds 50:

\n\n
 Ext.define('Ext.chart.series.MyLine', {\n     extend: 'Ext.chart.series.Line',\n     alias: ['series.myline', 'Ext.chart.series.MyLine'],\n     type: 'MYLINE',\n\n     onPlaceLabel: function(label, storeItem, item, i, display, animate){\n         if (storeItem.data.y >= 50) {\n             label.setAttributes({\n                 fill: '#080',\n                 text: \"+\" + storeItem.data.y\n             }, true);\n         }\n         return this.callParent(arguments);\n     }\n });\n
\n\n

Note that for simple effects, like the example above, it is simpler\nfor the application to provide a label.renderer function in the config:

\n\n
  label: {\n      renderer: function(value, label, storeItem, item, i, display, animate, index) {\n          if (value >= 50) {\n              label.setAttributes({fill:'#080'});\n              value = \"+\" + value;\n          }\n          return value;\n      }\n  }\n
\n\n

The rule of thumb is that to customize the value and modify simple visual attributes, it\nis simpler to use a renderer function, while overridding onCreateLabel and onPlaceLabel\nallows the application to take entire control over the labels.

\n","!type":"fn(config: Ext_chart_Label_cfg)","prototype":{"!proto":"Ext.Base.prototype","label":{"!type":"?","!doc":"

Object with the following properties:

\n"},"colorStringRe":{"!type":"+RegExp","!doc":"

a regex to parse url type colors.

\n"},"hideLabels":{"!type":"fn(hides: ?) -> !this"},"onCreateLabel":{"!type":"fn(storeItem: +Ext.data.Model, item: ?, i: number, display: string) -> +Ext.draw.Sprite","!doc":"

Called each time a new label is created.

\n\n

Note: This method must be implemented in Series that mixes\nin this Label mixin.

\n"},"onPlaceLabel":{"!type":"fn(label: +Ext.draw.Sprite, storeItem: +Ext.data.Model, item: ?, i: number, display: string, animate: bool, index: number)","!doc":"

Called for updating the position of the label.

\n\n

Note: This method must be implemented in Series that mixes\nin this Label mixin.

\n"},"renderLabels":{"!type":"fn() -> !this","!doc":"

a method to render all labels in the labelGroup

\n"}}},"Legend":{"!doc":"

Defines a legend for a chart's series.\nThe 'chart' member must be set prior to rendering.\nThe legend class displays a list of legend items each of them related with a\nseries being rendered. In order to render the legend item of the proper series\nthe series configuration object must have showInLegend set to true.

\n\n

The legend configuration object accepts a position as parameter.\nThe position parameter can be left, right\ntop or bottom. For example:

\n\n
legend: {\n    position: 'right'\n},\n
\n\n

Example

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],\n    data: [\n        { 'name': 'metric one',   'data1': 10, 'data2': 12, 'data3': 14, 'data4': 8,  'data5': 13 },\n        { 'name': 'metric two',   'data1': 7,  'data2': 8,  'data3': 16, 'data4': 10, 'data5': 3  },\n        { 'name': 'metric three', 'data1': 5,  'data2': 2,  'data3': 14, 'data4': 12, 'data5': 7  },\n        { 'name': 'metric four',  'data1': 2,  'data2': 14, 'data3': 6,  'data4': 1,  'data5': 23 },\n        { 'name': 'metric five',  'data1': 27, 'data2': 38, 'data3': 36, 'data4': 13, 'data5': 33 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    animate: true,\n    store: store,\n    shadow: true,\n    theme: 'Category1',\n    legend: {\n        position: 'top'\n    },\n    axes: [\n        {\n            type: 'Numeric',\n            position: 'left',\n            fields: ['data1', 'data2', 'data3', 'data4', 'data5'],\n            title: 'Sample Values',\n            grid: {\n                odd: {\n                    opacity: 1,\n                    fill: '#ddd',\n                    stroke: '#bbb',\n                    'stroke-width': 1\n                }\n            },\n            minimum: 0,\n            adjustMinimumByMajorUnit: 0\n        },\n        {\n            type: 'Category',\n            position: 'bottom',\n            fields: ['name'],\n            title: 'Sample Metrics',\n            grid: true,\n            label: {\n                rotate: {\n                    degrees: 315\n                }\n            }\n        }\n    ],\n    series: [{\n        type: 'area',\n        highlight: false,\n        axis: 'left',\n        xField: 'name',\n        yField: ['data1', 'data2', 'data3', 'data4', 'data5'],\n        style: {\n            opacity: 0.93\n        }\n    }]\n});\n
\n","!type":"fn(config?: Ext_chart_Legend_cfg)","prototype":{"!proto":"Ext.Base.prototype","boxFill":{"!type":"string","!doc":"

Fill style for the legend box

\n"},"boxStroke":{"!type":"string","!doc":"

Style of the stroke for the legend box

\n"},"boxStrokeWidth":{"!type":"string","!doc":"

Width of the stroke for the legend box

\n"},"boxZIndex":{"!type":"number","!doc":"

Sets the z-index for the legend. Defaults to 100.

\n"},"itemSpacing":{"!type":"number","!doc":"

Amount of space between legend items

\n"},"labelColor":{"!type":"string","!doc":"

Color to be used for the legend labels, eg '#000'

\n"},"labelFont":{"!type":"string","!doc":"

Font to be used for the legend labels, eg '12px Helvetica'

\n"},"padding":{"!type":"number","!doc":"

Amount of padding between the legend box's border and its items

\n"},"position":{"!type":"string","!doc":"

The position of the legend in relation to the chart. One of: \"top\",\n\"bottom\", \"left\", \"right\", or \"float\". If set to \"float\", then the legend\nbox will be positioned at the point denoted by the x and y parameters.

\n"},"update":{"!type":"bool","!doc":"

If set to true the legend will be refreshed when the chart is.\nThis is useful to update the legend items if series are\nadded/removed/updated from the chart. Default is true.

\n"},"visible":{"!type":"bool","!doc":"

Whether or not the legend should be displayed.

\n"},"x":{"!type":"number","!doc":"

X-position of the legend box. Used directly if position is set to \"float\", otherwise\nit will be calculated dynamically.

\n"},"y":{"!type":"number","!doc":"

Y-position of the legend box. Used directly if position is set to \"float\", otherwise\nit will be calculated dynamically.

\n"},"height":{"!type":"number"},"isVertical":{"!type":"bool","!doc":"

Whether the legend box is oriented vertically, i.e. if it is on the left or right side or floating.

\n"},"width":{"!type":"number"},"alignItems":{"!type":"fn() -> !this","!doc":"

Positions all items within Legend box.

\n"},"calcPosition":{"!type":"fn() -> !this","!doc":"

Calculates Legend position with respect to other Chart elements.

\n"},"create":{"!type":"fn() -> !this","!doc":"

Create all the sprites for the legend

\n"},"createBox":{"!type":"fn() -> !this","!doc":"

Create the box around the legend items

\n"},"createItems":{"!type":"fn() -> !this","!doc":"

Create the series markers and labels

\n"},"createLegendItem":{"!type":"fn(series: ?, yFieldIndex: ?) -> !this","!doc":"

Creates single Legend Item

\n"},"getBBox":{"!type":"fn() -> !this","!doc":"

Get the bounds for the legend's outer box

\n"},"isDisplayed":{"!type":"fn() -> !this","!doc":"

Determine whether the legend should be displayed. Looks at the legend's 'visible' config,\nand also the 'showInLegend' config for each of the series.

\n"},"redraw":{"!type":"fn() -> !this","!doc":"

Redraws the Legend

\n"},"removeItems":{"!type":"fn() -> !this","!doc":"

Removes all legend items.

\n"},"toggle":{"!type":"fn(show: bool) -> !this","!doc":"

toggle

\n"},"updateItemDimensions":{"!type":"fn() -> !this"},"updatePosition":{"!type":"fn() -> !this","!doc":"

Update the position of all the legend's sprites to match its current x/y values

\n"}}},"LegendItem":{"!doc":"

A single item of a legend (marker plus label)

\n","!type":"fn(config: Ext_chart_LegendItem_cfg)","prototype":{"!proto":"Ext.draw.CompositeSprite.prototype","boldRe":{"!type":"+RegExp","!doc":"

checks to make sure that a unit size follows the bold keyword in the font style value

\n"},"hiddenSeries":{"!type":"bool","!doc":"

Controls Series visibility

\n"},"label":{"!type":"?","!doc":"

These are cached for quick lookups

\n"},"x":{"!type":"number","!doc":"

Position of the item, relative to the upper-left corner of the legend box

\n"},"y":{"!type":"number"},"zIndex":{"!type":"number"},"createLabel":{"!type":"fn(config: ?) -> !this","!doc":"

Creates label sprite.

\n"},"createLegend":{"!type":"fn(config: ?) -> !this","!doc":"

Creates all the individual sprites for this legend item

\n"},"createSeriesMarkers":{"!type":"fn(config: ?) -> !this","!doc":"

Creates Series marker Sprites.

\n"},"drawFilledBox":{"!type":"fn(width: ?, height: ?, z: ?, index: ?) -> !this","!doc":"

Creates box-shaped marker for all series but Line and Scatter.

\n"},"drawLine":{"!type":"fn(fromX: ?, fromY: ?, toX: ?, toY: ?, z: ?, seriesStyle: ?, index: ?) -> !this","!doc":"

Creates line sprite for Line series.

\n"},"drawMarker":{"!type":"fn(x: ?, y: ?, z: ?, markerConfig: ?) -> !this","!doc":"

Creates series-shaped marker for Line and Scatter series.

\n"},"getLabelText":{"!type":"fn() -> !this","!doc":"

Retrieves text to be displayed as item label.

\n"},"onMouseDown":{"!type":"fn() -> !this","!doc":"

Toggles Series visibility upon mouse click on the item.

\n"},"onMouseOut":{"!type":"fn() -> !this","!doc":"

Draws label in normal when mouse cursor leaves the item.

\n"},"onMouseOver":{"!type":"fn() -> !this","!doc":"

Draws label in bold when mouse cursor is over the item.

\n"},"updatePosition":{"!type":"fn(relativeTo?: ?) -> !this","!doc":"

Update the positions of all this item's sprites to match the root position\nof the legend box.

\n"}}},"MaskLayer":{"!type":"fn(config: Ext_chart_MaskLayer_cfg)","prototype":{"!proto":"Ext.Component.prototype","initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initDraggable":{"!type":"fn() -> !this"}}},"Shape":{"arrow":{"!type":"fn(surface: ?, opts: ?) -> !this"},"circle":{"!type":"fn(surface: ?, opts: ?) -> !this","!doc":"

End Definitions

\n"},"cross":{"!type":"fn(surface: ?, opts: ?) -> !this"},"diamond":{"!type":"fn(surface: ?, opts: ?) -> !this"},"drop":{"!type":"fn(surface: ?, x: ?, y: ?, text: ?, size: ?, angle: ?) -> !this"},"line":{"!type":"fn(surface: ?, opts: ?) -> !this"},"plus":{"!type":"fn(surface: ?, opts: ?) -> !this"},"square":{"!type":"fn(surface: ?, opts: ?) -> !this"},"triangle":{"!type":"fn(surface: ?, opts: ?) -> !this"}},"Tip":{"!doc":"

Provides tips for Ext.chart.series.Series.

\n","!type":"fn(config: Ext_chart_Tip_cfg)","prototype":{"!proto":"Ext.Base.prototype","hideTip":{"!type":"fn(item: ?) -> !this"},"showTip":{"!type":"fn(item: ?) -> !this"}}},"TipSurface":{"!type":"fn(config: Ext_chart_TipSurface_cfg)","prototype":{"!proto":"Ext.draw.Component.prototype","renderFirst":{"!type":"bool"},"spriteArray":{"!type":"bool","!doc":"

End Definitions

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Create the Surface on initial render

\n"}}},"axis":{"Abstract":{"!doc":"

Base class for all axis classes.

\n","!type":"fn(config?: Ext_chart_axis_Abstract_cfg)","prototype":{"!proto":"Ext.Base.prototype","fields":{"!type":"[string]","!doc":"

The fields of model to bind to this axis.

\n\n

For example if you have a data set of lap times per car, each having the fields:\n'carName', 'avgSpeed', 'maxSpeed'. Then you might want to show the data on chart\nwith ['carName'] on Name axis and ['avgSpeed', 'maxSpeed'] on Speed axis.

\n"},"label":{"!type":"+Ext.chart.Label","!doc":"

The config for chart label.

\n"},"alignment":{"!type":"?"},"grid":{"!type":"bool"},"maxValue":{"!type":"number"},"minValue":{"!type":"number"},"steps":{"!type":"number"},"x":{"!type":"number"},"y":{"!type":"number"},"addDisplayAndLabels":{"!type":"fn() -> !this"},"drawAxis":{"!type":"fn() -> !this"},"getId":{"!type":"fn() -> !this"},"processView":{"!type":"fn() -> !this","!doc":"

Called to process a view i.e to make aggregation and filtering over\na store creating a substore to be used to render the axis. Since many axes\nmay do different things on the data and we want the final result of all these\noperations to be rendered we need to call processView on all axes before drawing\nthem.

\n"}}},"Axis":{"!doc":"

Defines axis for charts. The axis position, type, style can be configured.\nThe axes are defined in an axes array of configuration objects where the type,\nfield, grid and other configuration options can be set. To know more about how\nto create a Chart please check the Chart class documentation. Here's an example for the axes part:\nAn example of axis for a series (in this case for an area chart that has multiple layers of yFields) could be:

\n\n
axes: [{\n    type: 'Numeric',\n    position: 'left',\n    fields: ['data1', 'data2', 'data3'],\n    title: 'Number of Hits',\n    grid: {\n        odd: {\n            opacity: 1,\n            fill: '#ddd',\n            stroke: '#bbb',\n            'stroke-width': 1\n        }\n    },\n    minimum: 0\n}, {\n    type: 'Category',\n    position: 'bottom',\n    fields: ['name'],\n    title: 'Month of the Year',\n    grid: true,\n    label: {\n        rotate: {\n            degrees: 315\n        }\n    }\n}]\n
\n\n

In this case we use a Numeric axis for displaying the values of the Area series and a Category axis for displaying the names of\nthe store elements. The numeric axis is placed on the left of the screen, while the category axis is placed at the bottom of the chart.\nBoth the category and numeric axes have grid set, which means that horizontal and vertical lines will cover the chart background. In the\ncategory axis the labels will be rotated so they can fit the space better.

\n","!type":"fn(config?: Ext_chart_axis_Axis_cfg)","prototype":{"!proto":"Ext.chart.axis.Abstract.prototype","adjustEnd":{"!type":"bool","!doc":"

Whether to adjust the label at the end of the axis.

\n"},"dashSize":{"!type":"number","!doc":"

The size of the dash marker. Default's 3.

\n"},"grid":{"!type":"bool|?","!doc":"

The grid configuration enables you to set a background grid for an axis.\nIf set to true on a vertical axis, vertical lines will be drawn.\nIf set to true on a horizontal axis, horizontal lines will be drawn.\nIf both are set, a proper grid with horizontal and vertical lines will be drawn.

\n\n

You can set specific options for the grid configuration for odd and/or even lines/rows.\nSince the rows being drawn are rectangle sprites, you can set to an odd or even property\nall styles that apply to Ext.draw.Sprite. For more information on all the style\nproperties you can set please take a look at Ext.draw.Sprite. Some useful style\nproperties are opacity, fill, stroke, stroke-width, etc.

\n\n

The possible values for a grid option are then true, false, or an object with { odd, even } properties\nwhere each property contains a sprite style descriptor object that is defined in Ext.draw.Sprite.

\n\n

For example:

\n\n
axes: [{\n    type: 'Numeric',\n    position: 'left',\n    fields: ['data1', 'data2', 'data3'],\n    title: 'Number of Hits',\n    grid: {\n        odd: {\n            opacity: 1,\n            fill: '#ddd',\n            stroke: '#bbb',\n            'stroke-width': 1\n        }\n    }\n}, {\n    type: 'Category',\n    position: 'bottom',\n    fields: ['name'],\n    title: 'Month of the Year',\n    grid: true\n}]\n
\n"},"hidden":{"!type":"bool","!doc":"

true to hide the axis.

\n"},"length":{"!type":"number","!doc":"

Offset axis position. Default's 0.

\n"},"majorTickSteps":{"!type":"bool"},"minorTickSteps":{"!type":"number","!doc":"

The number of small ticks between two major ticks. Default is zero.

\n"},"position":{"!type":"string","!doc":"

Where to set the axis. Available options are left, bottom, right, top. Default's bottom.

\n"},"title":{"!type":"string","!doc":"

The title for the Axis

\n"},"width":{"!type":"number","!doc":"

Offset axis width. Default's 0.

\n"},"forceMinMax":{"!type":"bool","!doc":"

force min/max values from store

\n"},"nullGutters":{"!type":"?"},"skipFirst":{"!type":"bool"},"applyData":{"!type":"fn() -> !this"},"calcEnds":{"!type":"fn() -> !this","!doc":"

creates a structure with start, end and step points.

\n"},"drawAxis":{"!type":"fn(init: ?) -> !this","!doc":"

Renders the axis into the screen and updates its position.

\n"},"drawGrid":{"!type":"fn() -> !this","!doc":"

Renders an horizontal and/or vertical grid into the Surface.

\n"},"drawHorizontalLabels":{"!type":"fn() -> !this"},"drawLabel":{"!type":"fn() -> !this","!doc":"

Renders the labels in the axes.

\n"},"drawTitle":{"!type":"fn(maxWidth: ?, maxHeight: ?) -> !this","!doc":"

draws the title for the axis.

\n"},"drawVerticalLabels":{"!type":"fn() -> !this"},"getOrCreateLabel":{"!type":"fn(i: ?, text: ?) -> !this"},"getRange":{"!type":"fn() -> !this"},"intersect":{"!type":"fn(l1: ?, l2: ?) -> !this"},"rect2pointArray":{"!type":"fn(sprite: ?) -> !this"},"setTitle":{"!type":"fn(title: string) -> !this","!doc":"

Updates the title of this axis.

\n"}}},"Category":{"!doc":"

A type of axis that displays items in categories. This axis is generally used to\ndisplay categorical information like names of items, month names, quarters, etc.\nbut no quantitative values. For that other type of information Number\naxis are more suitable.

\n\n

As with other axis you can set the position of the axis and its title. For example:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],\n    data: [\n        {'name':'metric one', 'data1':10, 'data2':12, 'data3':14, 'data4':8, 'data5':13},\n        {'name':'metric two', 'data1':7, 'data2':8, 'data3':16, 'data4':10, 'data5':3},\n        {'name':'metric three', 'data1':5, 'data2':2, 'data3':14, 'data4':12, 'data5':7},\n        {'name':'metric four', 'data1':2, 'data2':14, 'data3':6, 'data4':1, 'data5':23},\n        {'name':'metric five', 'data1':27, 'data2':38, 'data3':36, 'data4':13, 'data5':33}\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    store: store,\n    axes: [{\n        type: 'Numeric',\n        position: 'left',\n        fields: ['data1', 'data2', 'data3', 'data4', 'data5'],\n        title: 'Sample Values',\n        grid: {\n            odd: {\n                opacity: 1,\n                fill: '#ddd',\n                stroke: '#bbb',\n                'stroke-width': 1\n            }\n        },\n        minimum: 0,\n        adjustMinimumByMajorUnit: 0\n    }, {\n        type: 'Category',\n        position: 'bottom',\n        fields: ['name'],\n        title: 'Sample Metrics',\n        grid: true,\n        label: {\n            rotate: {\n                degrees: 315\n            }\n        }\n    }],\n    series: [{\n        type: 'area',\n        highlight: false,\n        axis: 'left',\n        xField: 'name',\n        yField: ['data1', 'data2', 'data3', 'data4', 'data5'],\n        style: {\n            opacity: 0.93\n        }\n    }]\n});\n
\n\n

In this example with set the category axis to the bottom of the surface, bound the axis to\nthe name property and set as title Month of the Year.

\n","!type":"fn(config?: Ext_chart_axis_Category_cfg)","prototype":{"!proto":"Ext.chart.axis.Axis.prototype","calculateCategoryCount":{"!type":"bool","!doc":"

Indicates whether or not to calculate the number of categories (ticks and\nlabels) when there is not enough room to display all labels on the axis.\nIf set to true, the axis will determine the number of categories to plot.\nIf not, all categories will be plotted.

\n"},"categoryNames":{"!type":"string","!doc":"

A list of category names to display along this axis.

\n"},"applyData":{"!type":"fn() -> !this","!doc":"

calculates labels positions and marker positions for rendering.

\n"},"doConstrain":{"!type":"fn() -> !this","!doc":"

constrains to datapoints between minimum and maximum only

\n"},"setLabels":{"!type":"fn() -> !this","!doc":"

creates an array of labels to be used when rendering.

\n"}}},"Gauge":{"!doc":"

Gauge Axis is the axis to be used with a Gauge series. The Gauge axis\ndisplays numeric data from an interval defined by the minimum, maximum and\nstep configuration properties. The placement of the numeric data can be changed\nby altering the margin option that is set to 10 by default.

\n\n

A possible configuration for this axis would look like:

\n\n
axes: [{\n    type: 'gauge',\n    position: 'gauge',\n    minimum: 0,\n    maximum: 100,\n    steps: 10,\n    margin: 7\n}],\n
\n","!type":"fn(config?: Ext_chart_axis_Gauge_cfg)","prototype":{"!proto":"Ext.chart.axis.Abstract.prototype","margin":{"!type":"number","!doc":"

The offset positioning of the tick marks and labels in pixels.

\n"},"maximum":{"!type":"number","!doc":"

The maximum value of the interval to be displayed in the axis.

\n"},"minimum":{"!type":"number","!doc":"

The minimum value of the interval to be displayed in the axis.

\n"},"steps":{"!type":"number","!doc":"

The number of steps and tick marks to add to the interval.

\n"},"title":{"!type":"string","!doc":"

The title for the Axis.

\n"},"drawAxis":{"!type":"fn(init: ?) -> !this"},"drawLabel":{"!type":"fn() -> !this"},"drawTitle":{"!type":"fn() -> !this"},"setTitle":{"!type":"fn(title: string) -> !this","!doc":"

Updates the title of this axis.

\n"}}},"Numeric":{"!doc":"

An axis to handle numeric values. This axis is used for quantitative data as\nopposed to the category axis. You can set mininum and maximum values to the\naxis so that the values are bound to that. If no values are set, then the\nscale will auto-adjust to the values.

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n     fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],\n     data: [\n         {'name':'metric one', 'data1':10, 'data2':12, 'data3':14, 'data4':8, 'data5':13},\n         {'name':'metric two', 'data1':7, 'data2':8, 'data3':16, 'data4':10, 'data5':3},\n         {'name':'metric three', 'data1':5, 'data2':2, 'data3':14, 'data4':12, 'data5':7},\n         {'name':'metric four', 'data1':2, 'data2':14, 'data3':6, 'data4':1, 'data5':23},\n         {'name':'metric five', 'data1':27, 'data2':38, 'data3':36, 'data4':13, 'data5':33}\n     ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    store: store,\n    axes: [{\n        type: 'Numeric',\n        position: 'left',\n        fields: ['data1', 'data2', 'data3', 'data4', 'data5'],\n        title: 'Sample Values',\n        grid: {\n            odd: {\n                opacity: 1,\n                fill: '#ddd',\n                stroke: '#bbb',\n                'stroke-width': 1\n            }\n        },\n        minimum: 0,\n        adjustMinimumByMajorUnit: 0\n    }, {\n        type: 'Category',\n        position: 'bottom',\n        fields: ['name'],\n        title: 'Sample Metrics',\n        grid: true,\n        label: {\n            rotate: {\n                degrees: 315\n            }\n        }\n    }],\n    series: [{\n        type: 'area',\n        highlight: false,\n        axis: 'left',\n        xField: 'name',\n        yField: ['data1', 'data2', 'data3', 'data4', 'data5'],\n        style: {\n            opacity: 0.93\n        }\n    }]\n});\n
\n\n

In this example we create an axis of Numeric type. We set a minimum value so that\neven if all series have values greater than zero, the grid starts at zero. We bind\nthe axis onto the left part of the surface by setting position to left.\nWe bind three different store fields to this axis by setting fields to an array.\nWe set the title of the axis to Number of Hits by using the title property.\nWe use a grid configuration to set odd background rows to a certain style and even rows\nto be transparent/ignored.

\n","!type":"fn(config: Ext_chart_axis_Numeric_cfg)","prototype":{"!proto":"Ext.chart.axis.Axis.prototype","adjustMaximumByMajorUnit":{"!type":"bool","!doc":"

Indicates whether to extend maximum beyond data's maximum to the nearest\nmajorUnit.

\n"},"adjustMinimumByMajorUnit":{"!type":"bool","!doc":"

Indicates whether to extend the minimum beyond data's minimum to the\nnearest majorUnit.

\n"},"constrain":{"!type":"bool","!doc":"

If true, the values of the chart will be rendered only if they belong between minimum and maximum.\nIf false, all values of the chart will be rendered, regardless of whether they belong between minimum and maximum or not.\nDefault's true if maximum and minimum is specified. It is ignored for stacked charts.

\n"},"decimals":{"!type":"number","!doc":"

The number of decimals to round the value to.

\n"},"maximum":{"!type":"number","!doc":"

The maximum value drawn by the axis. If not set explicitly, the axis\nmaximum will be calculated automatically. It is ignored for stacked charts.

\n"},"minimum":{"!type":"number","!doc":"

The minimum value drawn by the axis. If not set explicitly, the axis\nminimum will be calculated automatically. It is ignored for stacked charts.

\n"},"position":{"!type":"string","!doc":"

Indicates the position of the axis relative to the chart

\n"},"scale":{"!type":"string","!doc":"

The scaling algorithm to use on this axis. May be \"linear\" or\n\"logarithmic\". Currently only linear scale is implemented.

\n"},"isNumericAxis":{"!type":"bool"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"applyData":{"!type":"fn() -> !this","!doc":"

apply data.

\n"},"doConstrain":{"!type":"fn() -> !this","!doc":"

constrains to datapoints between minimum and maximum only

\n"},"processView":{"!type":"fn() -> !this","!doc":"

applying constraint

\n"},"roundToDecimal":{"!type":"fn(v: ?, dec: ?) -> !this"}}},"Radial":{"!type":"fn(config: Ext_chart_axis_Radial_cfg)","prototype":{"!proto":"Ext.chart.axis.Numeric.prototype","maximum":{"!type":"number","!doc":"

The maximum value drawn by the axis. If not set explicitly, the axis\nmaximum will be calculated automatically.

\n"},"position":{"!type":"string","!doc":"

End Definitions

\n"},"steps":{"!type":"number","!doc":"

The number of circles to draw outward from the center.

\n"},"drawLabel":{"!type":"fn() -> !this","!doc":"

Renders the labels in the axes.

\n"},"getRange":{"!type":"fn() -> !this"},"processView":{"!type":"fn() -> !this","!doc":"

applying constraint

\n"}}},"Time":{"!doc":"

A type of axis whose units are measured in time values. Use this axis\nfor listing dates that you will want to group or dynamically change.\nIf you just want to display dates as categories then use the\nCategory class for axis instead.

\n\n

For example:

\n\n
axes: [{\n    type: 'Time',\n    position: 'bottom',\n    fields: 'date',\n    title: 'Day',\n    dateFormat: 'M d',\n\n    constrain: true,\n    fromDate: new Date('1/1/11'),\n    toDate: new Date('1/7/11')\n}]\n
\n\n

In this example we're creating a time axis that has as title Day.\nThe field the axis is bound to is date.\nThe date format to use to display the text for the axis labels is M d\nwhich is a three letter month abbreviation followed by the day number.\nThe time axis will show values for dates between fromDate and toDate.\nSince constrain is set to true all other values for other dates not between\nthe fromDate and toDate will not be displayed.

\n","!type":"fn(config: Ext_chart_axis_Time_cfg)","prototype":{"!proto":"Ext.chart.axis.Numeric.prototype","constrain":{"!type":"bool","!doc":"

If true, the values of the chart will be rendered only if they belong between the fromDate and toDate.\nIf false, the time axis will adapt to the new values by adding/removing steps.

\n"},"dateFormat":{"!type":"string|bool","!doc":"

Indicates the format the date will be rendered on.\nFor example: 'M d' will render the dates as 'Jan 30', etc.\nFor a list of possible format strings see Date

\n"},"fromDate":{"!type":"+Date","!doc":"

The starting date for the time axis.

\n"},"step":{"!type":"[?]","!doc":"

An array with two components: The first is the unit of the step (day, month, year, etc). The second one is a number.\nIf the number is an integer, it represents the number of units for the step ([Ext.Date.DAY, 2] means \"Every other day\").\nIf the number is a fraction, it represents the number of steps per unit ([Ext.Date.DAY, 1/2] means \"Twice a day\").\nIf the unit is the month, the steps may be adjusted depending on the month. For instance [Ext.Date.MONTH, 1/3], which means \"Three times a month\",\ngenerates steps on the 1st, the 10th and the 20th of every month regardless of whether a month has 28 days or 31 days. The steps are generated\nas follows:\n- [Ext.Date.MONTH, n]: on the current date every 'n' months, maxed to the number of days in the month.\n- [Ext.Date.MONTH, 1/2]: on the 1st and 15th of every month.\n- [Ext.Date.MONTH, 1/3]: on the 1st, 10th and 20th of every month.\n- [Ext.Date.MONTH, 1/4]: on the 1st, 8th, 15th and 22nd of every month.

\n\n

Defaults to: [Ext.Date.DAY, 1].

\n"},"toDate":{"!type":"+Date","!doc":"

The ending date for the time axis.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"calcEnds":{"!type":"fn() -> !this","!doc":"

modifies the store and creates the labels for the axes.

\n"},"processView":{"!type":"fn() -> !this","!doc":"

Before rendering, set current default step count to be number of records.

\n"}}}},"series":{"Area":{"!doc":"

Creates a Stacked Area Chart. The stacked area chart is useful when displaying multiple aggregated layers of information.\nAs with all other series, the Area Series must be appended in the series Chart array configuration. See the Chart\ndocumentation for more information. A typical configuration object for the area series could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],\n    data: [\n        { 'name': 'metric one',   'data1':10, 'data2':12, 'data3':14, 'data4':8,  'data5':13 },\n        { 'name': 'metric two',   'data1':7,  'data2':8,  'data3':16, 'data4':10, 'data5':3  },\n        { 'name': 'metric three', 'data1':5,  'data2':2,  'data3':14, 'data4':12, 'data5':7  },\n        { 'name': 'metric four',  'data1':2,  'data2':14, 'data3':6,  'data4':1,  'data5':23 },\n        { 'name': 'metric five',  'data1':27, 'data2':38, 'data3':36, 'data4':13, 'data5':33 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    store: store,\n    axes: [\n        {\n            type: 'Numeric',\n            position: 'left',\n            fields: ['data1', 'data2', 'data3', 'data4', 'data5'],\n            title: 'Sample Values',\n            grid: {\n                odd: {\n                    opacity: 1,\n                    fill: '#ddd',\n                    stroke: '#bbb',\n                    'stroke-width': 1\n                }\n            },\n            minimum: 0,\n            adjustMinimumByMajorUnit: 0\n        },\n        {\n            type: 'Category',\n            position: 'bottom',\n            fields: ['name'],\n            title: 'Sample Metrics',\n            grid: true,\n            label: {\n                rotate: {\n                    degrees: 315\n                }\n            }\n        }\n    ],\n    series: [{\n        type: 'area',\n        highlight: false,\n        axis: 'left',\n        xField: 'name',\n        yField: ['data1', 'data2', 'data3', 'data4', 'data5'],\n        style: {\n            opacity: 0.93\n        }\n    }]\n});\n
\n\n

In this configuration we set area as the type for the series, set highlighting options to true for highlighting elements on hover,\ntake the left axis to measure the data in the area series, set as xField (x values) the name field of each element in the store,\nand as yFields (aggregated layers) seven data fields from the same store. Then we override some theming styles by adding some opacity\nto the style object.

\n","!type":"fn(config: Ext_chart_series_Area_cfg)","prototype":{"!proto":"Ext.chart.series.Cartesian.prototype","style":{"!type":"?","!doc":"

Append styling properties to this object for it to override theme properties.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"stacked":{"!type":"bool","!doc":"

Area charts are alyways stacked

\n"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"getBounds":{"!type":"fn() -> !this","!doc":"

Get chart and data boundaries

\n"},"getLegendColor":{"!type":"fn(item: ?) -> !this","!doc":"

Returns the color of the series (to be displayed as color for the series legend item).

\n"},"getPaths":{"!type":"fn() -> !this","!doc":"

Build an array of paths for the chart

\n"},"hide":{"!type":"fn() -> !this"},"hideAll":{"!type":"fn(index: ?) -> !this","!doc":"

Hides all the elements in the series.

\n"},"highlightItem":{"!type":"fn(item: ?) -> !this","!doc":"

Highlight the specified item. If no item is provided the whole series will be highlighted.

\n"},"highlightSeries":{"!type":"fn(item: ?) -> !this","!doc":"

Highlight this entire series.

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?, i: ?) -> !this"},"onAnimate":{"!type":"fn(sprite: ?, attr: ?) -> !this","!doc":"

set the animation for the sprite

\n"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

Called each time a new label is created.

\n\n

Note: This method must be implemented in Series that mixes\nin this Label mixin.

\n"},"onPlaceCallout":{"!type":"fn(callout: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

Called for updating the position of the label.

\n\n

Note: This method must be implemented in Series that mixes\nin this Label mixin.

\n"},"redraw":{"!type":"fn() -> !this"},"showAll":{"!type":"fn(index: ?) -> !this","!doc":"

Shows all the elements in the series.

\n"},"shrink":{"!type":"fn(xValues: ?, yValues: ?, size: ?) -> !this","!doc":"

Shrinks dataSets down to a smaller size

\n"},"unHighlightItem":{"!type":"fn(item: ?) -> !this","!doc":"

Un-highlights the specified item. If no item is provided it will un-highlight the entire series.

\n"},"unHighlightSeries":{"!type":"fn(item: ?) -> !this","!doc":"

UnHighlight this entire series.

\n"}}},"Bar":{"!doc":"

Creates a Bar Chart. A Bar Chart is a useful visualization technique to display quantitative information for\ndifferent categories that can show some progression (or regression) in the dataset. As with all other series, the Bar\nSeries must be appended in the series Chart array configuration. See the Chart documentation for more information.\nA typical configuration object for the bar series could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data'],\n    data: [\n        { 'name': 'metric one',   'data':10 },\n        { 'name': 'metric two',   'data': 7 },\n        { 'name': 'metric three', 'data': 5 },\n        { 'name': 'metric four',  'data': 2 },\n        { 'name': 'metric five',  'data':27 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    animate: true,\n    store: store,\n    axes: [{\n        type: 'Numeric',\n        position: 'bottom',\n        fields: ['data'],\n        label: {\n            renderer: Ext.util.Format.numberRenderer('0,0')\n        },\n        title: 'Sample Values',\n        grid: true,\n        minimum: 0\n    }, {\n        type: 'Category',\n        position: 'left',\n        fields: ['name'],\n        title: 'Sample Metrics'\n    }],\n    series: [{\n        type: 'bar',\n        axis: 'bottom',\n        highlight: true,\n        tips: {\n          trackMouse: true,\n          width: 140,\n          height: 28,\n          renderer: function(storeItem, item) {\n            this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data') + ' views');\n          }\n        },\n        label: {\n          display: 'insideEnd',\n            field: 'data',\n            renderer: Ext.util.Format.numberRenderer('0'),\n            orientation: 'horizontal',\n            color: '#333',\n            'text-anchor': 'middle'\n        },\n        xField: 'name',\n        yField: 'data'\n    }]\n});\n
\n\n

In this configuration we set bar as the series type, bind the values of the bar to the bottom axis and set the\nxField or category field to the name parameter of the store. We also set highlight to true which enables smooth\nanimations when bars are hovered. We also set some configuration for the bar labels to be displayed inside the bar,\nto display the information found in the data1 property of each element store, to render a formated text with the\nExt.util.Format we pass in, to have an horizontal orientation (as opposed to a vertical one) and we also set\nother styles like color, text-anchor, etc.

\n","!type":"fn(config: Ext_chart_series_Bar_cfg)","prototype":{"!proto":"Ext.chart.series.Cartesian.prototype","column":{"!type":"bool","!doc":"

Whether to set the visualization as column chart or horizontal bar chart.

\n"},"groupGutter":{"!type":"number","!doc":"

The gutter space between groups of bars, as a percentage of the bar width

\n"},"gutter":{"!type":"number","!doc":"

The gutter space between single bars, as a percentage of the bar width

\n"},"stacked":{"!type":"bool","!doc":"

If set to true then bars for multiple yField values will be rendered stacked on top of one another.\nOtherwise, they will be rendered side-by-side. Defaults to false.

\n"},"style":{"!type":"?","!doc":"

Style properties that will override the theming series styles.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xPadding":{"!type":"number|?","!doc":"

Padding between the left/right axes and the bars.\nThe possible values are a number (the number of pixels for both left and right padding)\nor an object with { left, right } properties.

\n"},"yPadding":{"!type":"number|?","!doc":"

Padding between the top/bottom axes and the bars.\nThe possible values are a number (the number of pixels for both top and bottom padding)\nor an object with { top, bottom } properties.

\n"},"cleanHighlights":{"!type":"fn() -> !this"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"getBarGirth":{"!type":"fn() -> !this","!doc":"

returns the bar girth.

\n"},"getBounds":{"!type":"fn() -> !this","!doc":"

Get chart and data boundaries

\n"},"getGutters":{"!type":"fn() -> !this","!doc":"

returns the gutters.

\n"},"getLabelSize":{"!type":"fn(value: ?) -> !this","!doc":"

Gets the dimensions of a given bar label. Uses a single hidden sprite to avoid\nchanging visible sprites.

\n"},"getLegendColor":{"!type":"fn(index: ?) -> !this","!doc":"

Returns a string with the color to be used for the series legend item.

\n"},"getPadding":{"!type":"fn() -> !this","!doc":"

returns the padding.

\n"},"getPaths":{"!type":"fn() -> !this","!doc":"

Build an array of paths for the chart

\n"},"hideAll":{"!type":"fn(index: ?) -> !this","!doc":"

hide all markers

\n"},"highlightItem":{"!type":"fn(item: ?) -> !this","!doc":"

Highlight the given series item.

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?) -> !this"},"onAnimate":{"!type":"fn(sprite: ?, attr: ?) -> !this","!doc":"

used to animate label, markers and other sprites.

\n"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

called when a label is to be created.

\n"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

called when a label is to be positioned.

\n"},"renderShadows":{"!type":"fn(i: ?, barAttr: ?, baseAttrs: ?, bounds: ?) -> !this","!doc":"

render/setAttributes on the shadows

\n"},"showAll":{"!type":"fn(index: ?) -> !this","!doc":"

show all markers

\n"},"unHighlightItem":{"!type":"fn() -> !this","!doc":"

Un-highlight any existing highlights

\n"}}},"Cartesian":{"!doc":"

Common base class for series implementations which plot values using x/y coordinates.

\n","!type":"fn(config: Ext_chart_series_Cartesian_cfg)","prototype":{"!proto":"Ext.chart.series.Series.prototype","axis":{"!type":"string|[string]","!doc":"

The position of the axis to bind the values to. Possible values are 'left', 'bottom', 'top' and 'right'.\nYou must explicitly set this value to bind the values of the line series to the ones in the axis, otherwise a\nrelative scale will be used. For example, if you're using a Scatter or Line series and you'd like to have the\nvalues in the chart relative to the bottom and left axes then axis should be ['left', 'bottom'].

\n"},"xField":{"!type":"string","!doc":"

The name of the data Model field corresponding to the x-axis value.

\n"},"yField":{"!type":"string|[string]","!doc":"

The name(s) of the data Model field(s) corresponding to the y-axis value(s).

\n"},"clearCombinations":{"!type":"fn() -> !this"},"combine":{"!type":"fn(index1: ?, index2: ?) -> !this"},"eachYValue":{"!type":"fn(record: +Ext.data.Model, fn: fn(), scope: ?) -> !this","!doc":"

Iterates over a given record's values for each of this series's yFields,\nexecuting a given function for each value. Any yFields that have been combined\nvia legend drag-drop will be treated as a single value.

\n"},"getAxesForXAndYFields":{"!type":"fn() -> !this"},"getLegendLabels":{"!type":"fn() -> !this"},"getMinMaxXValues":{"!type":"fn() -> [?]","!doc":"

Calculate the min and max values for this series's xField.

\n"},"getMinMaxYValues":{"!type":"fn() -> [?]","!doc":"

Calculate the min and max values for this series's yField(s). Takes into account yField\ncombinations, exclusions, and stacking.

\n"},"getYValueAccessors":{"!type":"fn() -> [?]","!doc":"

Returns an array of functions, each of which returns the value of the yField\ncorresponding to function's index in the array, for a given record (each function takes the\nrecord as its only argument.) If yFields have been combined by the user via legend drag-drop,\nthis list of accessors will be kept in sync with those combinations.

\n"},"getYValueCount":{"!type":"fn() -> number","!doc":"

Returns the number of yField values, taking into account fields combined\nvia legend drag-drop.

\n"}}},"Column":{"!doc":"

Creates a Column Chart. Much of the methods are inherited from Bar. A Column Chart is a useful\nvisualization technique to display quantitative information for different categories that can\nshow some progression (or regression) in the data set. As with all other series, the Column Series\nmust be appended in the series Chart array configuration. See the Chart documentation for more\ninformation. A typical configuration object for the column series could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data'],\n    data: [\n        { 'name': 'metric one',   'data':10 },\n        { 'name': 'metric two',   'data': 7 },\n        { 'name': 'metric three', 'data': 5 },\n        { 'name': 'metric four',  'data': 2 },\n        { 'name': 'metric five',  'data':27 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    animate: true,\n    store: store,\n    axes: [\n        {\n            type: 'Numeric',\n            position: 'left',\n            fields: ['data'],\n            label: {\n                renderer: Ext.util.Format.numberRenderer('0,0')\n            },\n            title: 'Sample Values',\n            grid: true,\n            minimum: 0\n        },\n        {\n            type: 'Category',\n            position: 'bottom',\n            fields: ['name'],\n            title: 'Sample Metrics'\n        }\n    ],\n    series: [\n        {\n            type: 'column',\n            axis: 'left',\n            highlight: true,\n            tips: {\n              trackMouse: true,\n              width: 140,\n              height: 28,\n              renderer: function(storeItem, item) {\n                this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data') + ' $');\n              }\n            },\n            label: {\n              display: 'insideEnd',\n              'text-anchor': 'middle',\n                field: 'data',\n                renderer: Ext.util.Format.numberRenderer('0'),\n                orientation: 'vertical',\n                color: '#333'\n            },\n            xField: 'name',\n            yField: 'data'\n        }\n    ]\n});\n
\n\n

In this configuration we set column as the series type, bind the values of the bars to the bottom axis,\nset highlight to true so that bars are smoothly highlighted when hovered and bind the xField or category\nfield to the data store name property and the yField as the data1 property of a store element.

\n","!type":"fn(config: Ext_chart_series_Column_cfg)","prototype":{"!proto":"Ext.chart.series.Bar.prototype","axis":{"!type":"string","!doc":"

The position of the axis to bind the values to. Possible values are 'left', 'bottom', 'top' and 'right'.\nYou must explicitly set this value to bind the values of the column series to the ones in the axis, otherwise a\nrelative scale will be used.

\n"},"column":{"!type":"bool","!doc":"

Whether to set the visualization as column chart or horizontal bar chart.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xPadding":{"!type":"number|?","!doc":"

Padding between the left/right axes and the bars.\nThe possible values are a number (the number of pixels for both left and right padding)\nor an object with { left, right } properties.

\n"},"yPadding":{"!type":"number|?","!doc":"

Padding between the top/bottom axes and the bars.\nThe possible values are a number (the number of pixels for both top and bottom padding)\nor an object with { top, bottom } properties.

\n"},"boundColumn":{"!type":"bool","!doc":"

private: true if the columns are bound to a numerical x-axis; otherwise they are evenly distributed along the axis

\n"}}},"Gauge":{"!doc":"

Creates a Gauge Chart. Gauge Charts are used to show progress in a certain variable. There are two ways of using the Gauge chart.\nOne is setting a store element into the Gauge and selecting the field to be used from that store. Another one is instantiating the\nvisualization and using the setValue method to adjust the value you want.

\n\n

An example of Gauge visualization:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['value'],\n    data: [\n        { 'value':80 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    store: store,\n    width: 400,\n    height: 250,\n    animate: true,\n    insetPadding: 30,\n    axes: [{\n        type: 'gauge',\n        position: 'gauge',\n        minimum: 0,\n        maximum: 100,\n        steps: 10,\n        margin: 10\n    }],\n    series: [{\n        type: 'gauge',\n        field: 'value',\n        donut: 30,\n        colorSet: ['#F49D10', '#ddd']\n    }]\n});\n\nExt.widget(\"button\", {\n    renderTo: Ext.getBody(),\n    text: \"Refresh\",\n    handler: function() {\n        store.getAt(0).set('value', Math.round(Math.random()*100));\n    }\n});\n
\n\n

In this example we create a special Gauge axis to be used with the gauge visualization (describing half-circle markers), and also we're\nsetting a maximum, minimum and steps configuration options into the axis. The Gauge series configuration contains the store field to be bound to\nthe visual display and the color set to be used with the visualization.

\n","!type":"fn(config: Ext_chart_series_Gauge_cfg)","prototype":{"!proto":"Ext.chart.series.Series.prototype","angleField":{"!type":"string","!doc":"

The store record field name to be used for the pie angles.\nThe values bound to this field name must be positive real numbers.

\n"},"donut":{"!type":"bool|number","!doc":"

Use the entire disk or just a fraction of it for the gauge. Default's false.

\n"},"highlightDuration":{"!type":"number","!doc":"

The duration for the pie slice highlight effect.

\n"},"needle":{"!type":"bool","!doc":"

Use the Gauge Series as an area series or add a needle to it. Default's false.

\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to add the pie chart elements as legend items. Default's false.

\n"},"style":{"!type":"?","!doc":"

An object containing styles for overriding series styles from Theming.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"rad":{"!type":"?"},"calcMiddle":{"!type":"fn(item: ?) -> !this","!doc":"

utility function to calculate the middle point of a pie slice.

\n"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"getLegendColor":{"!type":"fn(item: ?) -> !this","!doc":"

Returns the color of the series (to be displayed as color for the series legend item).

\n"},"getSegment":{"!type":"fn(opt: ?) -> !this","!doc":"

returns an object with properties for a Slice

\n"},"initialize":{"!type":"fn() -> !this","!doc":"

updates some onbefore render parameters.

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?, i: ?) -> !this"},"onAnimate":{"!type":"fn(sprite: ?, attr: ?) -> !this","!doc":"

handles sprite animation for the series.

\n"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

callback for when creating a label sprite.

\n"},"onPlaceCallout":{"!type":"fn() -> !this","!doc":"

callback for when placing a callout.

\n"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

callback for when placing a label sprite.

\n"},"setValue":{"!type":"fn(value: ?) -> !this","!doc":"

Sets the Gauge chart to the current specified value.

\n"}}},"Line":{"!doc":"

Creates a Line Chart. A Line Chart is a useful visualization technique to display quantitative information for different\ncategories or other real values (as opposed to the bar chart), that can show some progression (or regression) in the dataset.\nAs with all other series, the Line Series must be appended in the series Chart array configuration. See the Chart\ndocumentation for more information. A typical configuration object for the line series could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],\n    data: [\n        { 'name': 'metric one',   'data1': 10, 'data2': 12, 'data3': 14, 'data4': 8,  'data5': 13 },\n        { 'name': 'metric two',   'data1': 7,  'data2': 8,  'data3': 16, 'data4': 10, 'data5': 3  },\n        { 'name': 'metric three', 'data1': 5,  'data2': 2,  'data3': 14, 'data4': 12, 'data5': 7  },\n        { 'name': 'metric four',  'data1': 2,  'data2': 14, 'data3': 6,  'data4': 1,  'data5': 23 },\n        { 'name': 'metric five',  'data1': 4,  'data2': 4,  'data3': 36, 'data4': 13, 'data5': 33 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    animate: true,\n    store: store,\n    axes: [\n        {\n            type: 'Numeric',\n            position: 'left',\n            fields: ['data1', 'data2'],\n            label: {\n                renderer: Ext.util.Format.numberRenderer('0,0')\n            },\n            title: 'Sample Values',\n            grid: true,\n            minimum: 0\n        },\n        {\n            type: 'Category',\n            position: 'bottom',\n            fields: ['name'],\n            title: 'Sample Metrics'\n        }\n    ],\n    series: [\n        {\n            type: 'line',\n            highlight: {\n                size: 7,\n                radius: 7\n            },\n            axis: 'left',\n            xField: 'name',\n            yField: 'data1',\n            markerConfig: {\n                type: 'cross',\n                size: 4,\n                radius: 4,\n                'stroke-width': 0\n            }\n        },\n        {\n            type: 'line',\n            highlight: {\n                size: 7,\n                radius: 7\n            },\n            axis: 'left',\n            fill: true,\n            xField: 'name',\n            yField: 'data2',\n            markerConfig: {\n                type: 'circle',\n                size: 4,\n                radius: 4,\n                'stroke-width': 0\n            }\n        }\n    ]\n});\n
\n\n

In this configuration we're adding two series (or lines), one bound to the data1\nproperty of the store and the other to data3. The type for both configurations is\nline. The xField for both series is the same, the name propert of the store.\nBoth line series share the same axis, the left axis. You can set particular marker\nconfiguration by adding properties onto the markerConfig object. Both series have\nan object as highlight so that markers animate smoothly to the properties in highlight\nwhen hovered. The second series has fill=true which means that the line will also\nhave an area below it of the same color.

\n\n

Note: In the series definition remember to explicitly set the axis to bind the\nvalues of the line series to. This can be done by using the axis configuration property.

\n","!type":"fn(config: Ext_chart_series_Line_cfg)","prototype":{"!proto":"Ext.chart.series.Cartesian.prototype","fill":{"!type":"bool","!doc":"

If true, the area below the line will be filled in using the eefill and\nopacity config properties. Defaults to false.

\n"},"markerConfig":{"!type":"?","!doc":"

The display style for the markers. Only used if showMarkers is true.\nThe markerConfig is a configuration object containing the same set of properties defined in\nthe Sprite class. For example, if we were to set red circles as markers to the line series we could\npass the object:

\n\n
        markerConfig: {\n            type: 'circle',\n            radius: 4,\n            'fill': '#f00'\n        }\n     
\n\n"},"selectionTolerance":{"!type":"number","!doc":"

The offset distance from the cursor position to the line series to trigger events (then used for highlighting series, etc).

\n"},"showMarkers":{"!type":"bool","!doc":"

Whether markers should be displayed at the data points along the line. If true,\nthen the markerConfig config item will determine the markers' styling.

\n"},"smooth":{"!type":"bool|number","!doc":"

If set to true or a non-zero number, the line will be smoothed/rounded around its points; otherwise\nstraight line segments will be drawn.

\n\n

A numeric value is interpreted as a divisor of the horizontal distance between consecutive points in\nthe line; larger numbers result in sharper curves while smaller numbers result in smoother curves.

\n\n

If set to true then a default numeric value of 3 will be used. Defaults to false.

\n"},"style":{"!type":"?","!doc":"

An object containing style properties for the visualization lines and fill.\nThese styles will override the theme styles. The following are valid style properties:

\n\n\n\n\n

Example usage:

\n\n
style: {\n    stroke: '#00ff00',\n    'stroke-width': 10,\n    fill: '#80A080',\n    opacity: 0.2\n}\n
\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"defaultSmoothness":{"!type":"number","!doc":"

Default numeric smoothing value to be used when smooth = true.

\n"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"hideAll":{"!type":"fn() -> !this","!doc":"

hide all series elements (markers, sprites).

\n"},"highlightItem":{"!type":"fn() -> !this","!doc":"

Overriding highlights.js highlightItem method.

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?, i: ?) -> !this"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

called when a label is to be created.

\n"},"onPlaceCallout":{"!type":"fn(callout: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

called when a callout needs to be placed.

\n"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

called when a label is to be positioned.

\n"},"showAll":{"!type":"fn() -> !this","!doc":"

hide all series elements (markers, sprites).

\n"},"shrink":{"!type":"fn(xValues: ?, yValues: ?, size: ?) -> !this","!doc":"

makes an average of points when there are more data points than pixels to be rendered.

\n"},"toggleAll":{"!type":"fn(show: ?) -> !this","!doc":"

toggle visibility of all series elements (markers, sprites).

\n"},"unHighlightItem":{"!type":"fn() -> !this","!doc":"

Overriding highlights.js unHighlightItem method.

\n"}}},"Pie":{"!doc":"

Creates a Pie Chart. A Pie Chart is a useful visualization technique to display quantitative information for different\ncategories that also have a meaning as a whole.\nAs with all other series, the Pie Series must be appended in the series Chart array configuration. See the Chart\ndocumentation for more information. A typical configuration object for the pie series could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data'],\n    data: [\n        { 'name': 'metric one',   'data': 10 },\n        { 'name': 'metric two',   'data':  7 },\n        { 'name': 'metric three', 'data':  5 },\n        { 'name': 'metric four',  'data':  2 },\n        { 'name': 'metric five',  'data': 27 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 350,\n    animate: true,\n    store: store,\n    theme: 'Base:gradients',\n    series: [{\n        type: 'pie',\n        angleField: 'data',\n        showInLegend: true,\n        tips: {\n            trackMouse: true,\n            width: 140,\n            height: 28,\n            renderer: function(storeItem, item) {\n                // calculate and display percentage on hover\n                var total = 0;\n                store.each(function(rec) {\n                    total += rec.get('data');\n                });\n                this.setTitle(storeItem.get('name') + ': ' + Math.round(storeItem.get('data') / total * 100) + '%');\n            }\n        },\n        highlight: {\n            segment: {\n                margin: 20\n            }\n        },\n        label: {\n            field: 'name',\n            display: 'rotate',\n            contrast: true,\n            font: '18px Arial'\n        }\n    }]\n});\n
\n\n

In this configuration we set pie as the type for the series, set an object with specific style properties for highlighting options\n(triggered when hovering elements). We also set true to showInLegend so all the pie slices can be represented by a legend item.

\n\n

We set data as the value of the field to determine the angle span for each pie slice. We also set a label configuration object\nwhere we set the field name of the store field to be renderer as text for the label. The labels will also be displayed rotated.

\n\n

We set contrast to true to flip the color of the label if it is to similar to the background color. Finally, we set the font family\nand size through the font parameter.

\n","!type":"fn(config: Ext_chart_series_Pie_cfg)","prototype":{"!proto":"Ext.chart.series.Series.prototype","angleField":{"!type":"string","!doc":"

The store record field name to be used for the pie angles.\nThe values bound to this field name must be positive real numbers.

\n"},"colorSet":{"!type":"[?]","!doc":"

An array of color values which will be used, in order, as the pie slice fill colors.

\n"},"donut":{"!type":"bool|number","!doc":"

Whether to set the pie chart as donut chart.\nDefault's false. Can be set to a particular percentage to set the radius\nof the donut chart.

\n"},"field":{"!type":"string","!doc":"

Alias for angleField.

\n"},"highlightDuration":{"!type":"number","!doc":"

The duration for the pie slice highlight effect.

\n"},"lengthField":{"!type":"string","!doc":"

The store record field name to be used for the pie slice lengths.\nThe values bound to this field name must be positive real numbers.

\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to add the pie chart elements as legend items. Default's false.

\n"},"style":{"!type":"?","!doc":"

An object containing styles for overriding series styles from Theming.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xField":{"!type":"string","!doc":"

Alias for angleField.

\n"},"accuracy":{"!type":"number"},"rad":{"!type":"?"},"calcMiddle":{"!type":"fn(item: ?) -> !this","!doc":"

utility function to calculate the middle point of a pie slice.

\n"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"getLegendColor":{"!type":"fn(item: ?) -> !this","!doc":"

Returns the color of the series (to be displayed as color for the series legend item).

\n"},"getSegment":{"!type":"fn(opt: ?) -> !this","!doc":"

returns an object with properties for a PieSlice.

\n"},"hideAll":{"!type":"fn(index: ?) -> !this","!doc":"

hides all elements in the series.

\n"},"highlightItem":{"!type":"fn(item: ?) -> !this","!doc":"

Highlight the specified item. If no item is provided the whole series will be highlighted.

\n"},"initialize":{"!type":"fn() -> !this","!doc":"

updates some onbefore render parameters.

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?, i: ?) -> !this"},"onAnimate":{"!type":"fn(sprite: ?, attr: ?) -> !this","!doc":"

handles sprite animation for the series.

\n"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

callback for when creating a label sprite.

\n"},"onPlaceCallout":{"!type":"fn(callout: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

callback for when placing a callout sprite.

\n"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

callback for when placing a label sprite.

\n"},"onRedraw":{"!type":"fn() -> !this"},"showAll":{"!type":"fn(index: ?) -> !this","!doc":"

shows all elements in the series.

\n"},"unHighlightItem":{"!type":"fn(item: ?) -> !this","!doc":"

Un-highlights the specified item. If no item is provided it will un-highlight the entire series.

\n"}}},"Radar":{"!doc":"

Creates a Radar Chart. A Radar Chart is a useful visualization technique for comparing different quantitative values for\na constrained number of categories.

\n\n

As with all other series, the Radar series must be appended in the series Chart array configuration. See the Chart\ndocumentation for more information. A typical configuration object for the radar series could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data1', 'data2', 'data3'],\n    data: [\n        { 'name': 'metric one',   'data1': 14, 'data2': 12, 'data3': 13 },\n        { 'name': 'metric two',   'data1': 16, 'data2':  8, 'data3':  3 },\n        { 'name': 'metric three', 'data1': 14, 'data2':  2, 'data3':  7 },\n        { 'name': 'metric four',  'data1':  6, 'data2': 14, 'data3': 23 },\n        { 'name': 'metric five',  'data1': 36, 'data2': 38, 'data3': 33 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    animate: true,\n    theme:'Category2',\n    store: store,\n    axes: [{\n        type: 'Radial',\n        position: 'radial',\n        label: {\n            display: true\n        }\n    }],\n    series: [{\n        type: 'radar',\n        xField: 'name',\n        yField: 'data1',\n        showInLegend: true,\n        showMarkers: true,\n        markerConfig: {\n            radius: 5,\n            size: 5\n        },\n        style: {\n            'stroke-width': 2,\n            fill: 'none'\n        }\n    },{\n        type: 'radar',\n        xField: 'name',\n        yField: 'data2',\n        showMarkers: true,\n        showInLegend: true,\n        markerConfig: {\n            radius: 5,\n            size: 5\n        },\n        style: {\n            'stroke-width': 2,\n            fill: 'none'\n        }\n    },{\n        type: 'radar',\n        xField: 'name',\n        yField: 'data3',\n        showMarkers: true,\n        showInLegend: true,\n        markerConfig: {\n            radius: 5,\n            size: 5\n        },\n        style: {\n            'stroke-width': 2,\n            fill: 'none'\n        }\n    }]\n});\n
\n\n

In this configuration we add three series to the chart. Each of these series is bound to the same\ncategories field, name but bound to different properties for each category, data1, data2 and\ndata3 respectively. All series display markers by having showMarkers enabled. The configuration\nfor the markers of each series can be set by adding properties onto the markerConfig object.\nFinally we override some theme styling properties by adding properties to the style object.

\n","!type":"fn(config: Ext_chart_series_Radar_cfg)","prototype":{"!proto":"Ext.chart.series.Series.prototype","markerConfig":{"!type":"?","!doc":"

The display style for the markers. Only used if showMarkers is true.\nThe markerConfig is a configuration object containing the same set of properties defined in\nthe Sprite class. For example, if we were to set red circles as markers to the series we could\npass the object:

\n\n
markerConfig: {\n    type: 'circle',\n    radius: 4,\n    'fill': '#f00'\n}\n
\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to show this series in the legend.

\n"},"showMarkers":{"!type":"bool","!doc":"

Whether markers should be displayed at the data points of the series. If true,\nthen the markerConfig config item will determine the markers' styling.

\n"},"style":{"!type":"?","!doc":"

An object containing styles for overriding series styles from Theming.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"xField":{"!type":"string","!doc":"

The name of the data Model field corresponding to the x-axis (angle) value.

\n"},"yField":{"!type":"string","!doc":"

The name of the data Model field corresponding to the y-axis (radius) value.

\n"},"rad":{"!type":"?"},"drawMarkers":{"!type":"fn() -> !this","!doc":"

draws the markers for the lines (if any).

\n"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"getAxesForXAndYFields":{"!type":"fn() -> !this","!doc":"

return the radial axis as yAxis (there is no xAxis).\nRequired by the base class 'Ext.chart.axis.Axis'.

\n"},"hideAll":{"!type":"fn() -> !this","!doc":"

hide all elements in the series.

\n"},"hideMarkers":{"!type":"fn(index: ?) -> !this","!doc":"

hide all markers that belong to markerGroup

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?) -> !this"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

callback for when creating a label sprite.

\n"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

callback for when placing a label sprite.

\n"},"showAll":{"!type":"fn() -> !this","!doc":"

show all elements in the series.

\n"},"toggleAll":{"!type":"fn(show: ?) -> !this","!doc":"

for toggling (show/hide) series.

\n"}}},"Scatter":{"!doc":"

Creates a Scatter Chart. The scatter plot is useful when trying to display more than two variables in the same visualization.\nThese variables can be mapped into x, y coordinates and also to an element's radius/size, color, etc.\nAs with all other series, the Scatter Series must be appended in the series Chart array configuration. See the Chart\ndocumentation for more information on creating charts. A typical configuration object for the scatter could be:

\n\n
var store = Ext.create('Ext.data.JsonStore', {\n    fields: ['name', 'data1', 'data2', 'data3', 'data4', 'data5'],\n    data: [\n        { 'name': 'metric one',   'data1': 10, 'data2': 12, 'data3': 14, 'data4': 8,  'data5': 13 },\n        { 'name': 'metric two',   'data1': 7,  'data2': 8,  'data3': 16, 'data4': 10, 'data5': 3  },\n        { 'name': 'metric three', 'data1': 5,  'data2': 2,  'data3': 14, 'data4': 12, 'data5': 7  },\n        { 'name': 'metric four',  'data1': 2,  'data2': 14, 'data3': 6,  'data4': 1,  'data5': 23 },\n        { 'name': 'metric five',  'data1': 27, 'data2': 38, 'data3': 36, 'data4': 13, 'data5': 33 }\n    ]\n});\n\nExt.create('Ext.chart.Chart', {\n    renderTo: Ext.getBody(),\n    width: 500,\n    height: 300,\n    animate: true,\n    theme:'Category2',\n    store: store,\n    axes: [{\n        type: 'Numeric',\n        position: 'left',\n        fields: ['data2', 'data3'],\n        title: 'Sample Values',\n        grid: true,\n        minimum: 0\n    }, {\n        type: 'Category',\n        position: 'bottom',\n        fields: ['name'],\n        title: 'Sample Metrics'\n    }],\n    series: [{\n        type: 'scatter',\n        markerConfig: {\n            radius: 5,\n            size: 5\n        },\n        axis: 'left',\n        xField: 'name',\n        yField: 'data2'\n    }, {\n        type: 'scatter',\n        markerConfig: {\n            radius: 5,\n            size: 5\n        },\n        axis: 'left',\n        xField: 'name',\n        yField: 'data3'\n    }]\n});\n
\n\n

In this configuration we add three different categories of scatter series. Each of them is bound to a different field of the same data store,\ndata1, data2 and data3 respectively. All x-fields for the series must be the same field, in this case name.\nEach scatter series has a different styling configuration for markers, specified by the markerConfig object. Finally we set the left axis as\naxis to show the current values of the elements.

\n","!type":"fn(config: Ext_chart_series_Scatter_cfg)","prototype":{"!proto":"Ext.chart.series.Cartesian.prototype","markerConfig":{"!type":"?","!doc":"

The display style for the scatter series markers.

\n"},"style":{"!type":"?","!doc":"

Append styling properties to this object for it to override theme properties.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"createPoint":{"!type":"fn(attr: ?, type: ?) -> !this","!doc":"

create a new point

\n"},"createShadow":{"!type":"fn(sprite: ?, endMarkerStyle: ?, type: ?) -> !this","!doc":"

create a new set of shadows for a sprite

\n"},"drawSeries":{"!type":"fn() -> !this","!doc":"

Draws the series for the current chart.

\n"},"getBounds":{"!type":"fn() -> !this","!doc":"

Get chart and data boundaries

\n"},"getPaths":{"!type":"fn() -> !this","!doc":"

Build an array of paths for the chart

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?) -> !this"},"onAnimate":{"!type":"fn(sprite: ?, attr: ?) -> !this","!doc":"

handles sprite animation for the series.

\n"},"onCreateLabel":{"!type":"fn(storeItem: ?, item: ?, i: ?, display: ?) -> +Ext.draw.Sprite","!doc":"

callback for when creating a label sprite.

\n"},"onPlaceCallout":{"!type":"fn(callout: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

callback for when placing a callout sprite.

\n"},"onPlaceLabel":{"!type":"fn(label: ?, storeItem: ?, item: ?, i: ?, display: ?, animate: ?, index: ?) -> !this","!doc":"

callback for when placing a label sprite.

\n"},"resetPoint":{"!type":"fn(sprite: ?) -> !this","!doc":"

translate point to the center

\n"},"resetShadow":{"!type":"fn(sprite: ?) -> !this","!doc":"

translate shadows of a sprite to the center

\n"}}},"Series":{"!doc":"

Series is the abstract class containing the common logic to all chart series. Series includes\nmethods from Labels, Highlights, Tips and Callouts mixins. This class implements the logic of handling\nmouse events, animating, hiding, showing all elements and returning the color of the series to be used as a legend item.

\n\n

Listeners

\n\n

The series class supports listeners via the Observable syntax. Some of these listeners are:

\n\n\n\n\n

For example:

\n\n
series: [{\n        type: 'column',\n        axis: 'left',\n        listeners: {\n                'afterrender': function() {\n                        console('afterrender');\n                }\n        },\n        xField: 'category',\n        yField: 'data1'\n}]\n
\n","!type":"fn(config: Ext_chart_series_Series_cfg)","prototype":{"!proto":"Ext.Base.prototype","highlight":{"!type":"bool|?","!doc":"

If set to true it will highlight the markers or the series when hovering\nwith the mouse. This parameter can also be an object with the same style\nproperties you would apply to a Ext.draw.Sprite to apply custom\nstyles to markers and series.

\n"},"listeners":{"!type":"?","!doc":"

An (optional) object with event callbacks. All event callbacks get the target item as first parameter. The callback functions are:

\n\n\n\n"},"renderer":{"!type":"fn()","!doc":"

A function that can be overridden to set custom styling properties to each rendered element.\nPasses in (sprite, record, attributes, index, store) to the function.

\n"},"shadowAttributes":{"!type":"[?]","!doc":"

An array with shadow attributes

\n"},"showInLegend":{"!type":"bool","!doc":"

Whether to show this series in the legend.

\n"},"tips":{"!type":"?","!doc":"

Add tooltips to the visualization's markers. The options for the tips are the\nsame configuration used with Ext.tip.ToolTip. For example:

\n\n
tips: {\n  trackMouse: true,\n  width: 140,\n  height: 28,\n  renderer: function(storeItem, item) {\n    this.setTitle(storeItem.get('name') + ': ' + storeItem.get('data1') + ' views');\n  }\n},\n
\n"},"title":{"!type":"string","!doc":"

The human-readable name of the series.

\n"},"type":{"!type":"string","!doc":"

The type of series. Set in subclasses.

\n"},"animating":{"!type":"bool","!doc":"

animating flag

\n"},"nullGutters":{"!type":"?","!doc":"

default gutters

\n"},"nullPadding":{"!type":"?","!doc":"

default padding

\n"},"eachRecord":{"!type":"fn(fn: fn(), scope: ?) -> !this","!doc":"

Iterate over each of the records for this series. The default implementation simply iterates\nthrough the entire data store, but individual series implementations can override this to\nprovide custom handling, e.g. adding/removing records.

\n"},"getGutters":{"!type":"fn() -> !this","!doc":"

return the gutters.

\n"},"getItemForPoint":{"!type":"fn(x: number, y: number) -> ?","!doc":"

For a given x/y point relative to the Surface, find a corresponding item from this\nseries, if any.

\n"},"getLegendColor":{"!type":"fn(index: ?) -> !this","!doc":"

Returns a string with the color to be used for the series legend item.

\n"},"getPadding":{"!type":"fn() -> !this","!doc":"

return the gutters.

\n"},"getRecordCount":{"!type":"fn() -> !this","!doc":"

Return the number of records being displayed in this series. Defaults to the number of\nrecords in the store; individual series implementations can override to provide custom handling.

\n"},"hide":{"!type":"fn() -> !this"},"hideAll":{"!type":"fn() -> !this","!doc":"

Hides all the elements in the series.

\n"},"isExcluded":{"!type":"fn(index: ?) -> !this","!doc":"

Determines whether the series item at the given index has been excluded, i.e. toggled off in the legend.

\n"},"isItemInPoint":{"!type":"fn(x: ?, y: ?, item: ?, i: ?) -> !this"},"onAnimate":{"!type":"fn(sprite: ?, attr: ?) -> !this","!doc":"

set the animation for the sprite

\n"},"onItemMouseOut":{"!type":"fn(item: ?) -> !this","!doc":"

wrapper for the itemmouseout event.

\n"},"onItemMouseOver":{"!type":"fn(item: ?) -> !this","!doc":"

wrapper for the itemmouseover event.

\n"},"onMouseLeave":{"!type":"fn() -> !this","!doc":"

wrapper for the mouseleave event.

\n"},"onRedraw":{"!type":"fn() -> !this"},"setBBox":{"!type":"fn(noGutter: ?) -> !this","!doc":"

set the bbox and clipBox for the series

\n"},"setTitle":{"!type":"fn(index: number, title: string) -> !this","!doc":"

Changes the value of the title for the series.\nArguments can take two forms:

\n\n\n\n"},"showAll":{"!type":"fn() -> !this","!doc":"

Shows all the elements in the series.

\n"},"visibleInLegend":{"!type":"fn(index: number) -> !this","!doc":"

Checks whether the data field should be visible in the legend

\n"},"titlechange":{"!type":"fn(title: string, index: number, eOpts: ?)","!doc":"

Fires when the series title is changed via setTitle.

\n"}}}},"theme":{"Base":{"!doc":"

Provides default colors for non-specified things. Should be sub-classed when creating new themes.

\n","!type":"fn(config: Ext_chart_theme_Base_cfg)","prototype":{"!proto":"Ext.Base.prototype"}},"Theme":{"!doc":"

Provides chart theming.

\n\n

Used as mixins by Ext.chart.Chart.

\n"}}},"container":{"AbstractContainer":{"!doc":"

An abstract base class which provides shared methods for Containers across the Sencha product line.

\n\n

Please refer to sub class's documentation

\n","!type":"fn(config: +Ext.Element|string|Ext_container_AbstractContainer_cfg)","prototype":{"!proto":"Ext.Component.prototype","activeItem":{"!type":"string|number","!doc":"

A string component id or the numeric index of the component that should be\ninitially activated within the container's layout on render. For example,\nactiveItem: 'item-1' or activeItem: 0 (index 0 = the first item in the\ncontainer's collection). activeItem only applies to layout styles that can\ndisplay items one at a time (like Ext.layout.container.Card and\nExt.layout.container.Fit).

\n"},"autoDestroy":{"!type":"bool","!doc":"

If true the container will automatically destroy any contained component that is removed\nfrom it, else destruction must be handled manually.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"bubbleEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should be bubbled to any parent container.\nSee Ext.util.Observable.enableBubble.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"defaults":{"!type":"?|fn()","!doc":"

This option is a means of applying default settings to all added items whether added\nthrough the items config or via the add or insert methods.

\n\n

Defaults are applied to both config objects and instantiated components conditionally\nso as not to override existing properties in the item (see Ext.applyIf).

\n\n

If the defaults option is specified as a function, then the function will be called\nusing this Container as the scope (this reference) and passing the added item as\nthe first parameter. Any resulting object from that call is then applied to the item\nas default properties.

\n\n

For example, to automatically apply padding to the body of each of a set of\ncontained Ext.panel.Panel items, you could pass:\ndefaults: {bodyStyle:'padding:15px'}.

\n\n

Usage:

\n\n
defaults: { // defaults are applied to items, not the container\n    autoScroll: true\n},\nitems: [\n    // default will not be applied here, panel1 will be autoScroll: false\n    {\n        xtype: 'panel',\n        id: 'panel1',\n        autoScroll: false\n    },\n    // this component will have autoScroll: true\n    new Ext.panel.Panel({\n        id: 'panel2'\n    })\n]\n
\n"},"detachOnRemove":{"!type":"bool","!doc":"

True to move any component to the detachedBody when the component is\nremoved from this container. This option is only applicable when the component is not destroyed while\nbeing removed, see autoDestroy and remove. If this option is set to false, the DOM\nof the component will remain in the current place until it is explicitly moved.

\n"},"items":{"!type":"+Ext.util.AbstractMixedCollection","!doc":"

The MixedCollection containing all the child items of this container.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

End Definitions

\n"},"suspendLayout":{"!type":"bool","!doc":"

If true, suspend calls to doLayout. Useful when batching multiple adds to a container\nand not passing them as multiple arguments or an array.

\n"},"isContainer":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Container, or subclass thereof.

\n"},"layoutCounter":{"!type":"number","!doc":"

The number of container layout calls made on this object.

\n"},"add":{"!type":"fn(this: +Ext.container.Container, component: +Ext.Component, index: number, eOpts: ?)","!doc":"

Fires after any Ext.Component is added or inserted into the container.

\n\n

This event bubbles: 'add' will also be fired when Component is added to any of\nthe child containers or their childern or ...

\n"},"afterComponentLayout":{"!type":"fn() -> !this","!doc":"

Called by the layout system after the Component has been laid out.

\n"},"afterLayout":{"!type":"fn(layout: +Ext.layout.container.Container) -> !this","!doc":"

Invoked after the Container has laid out (and rendered if necessary)\nits child Components.

\n"},"applyDefaults":{"!type":"fn(config: ?) -> !this"},"applyTargetCls":{"!type":"fn(targetCls: ?) -> !this","!doc":"

The targetCls is a CSS class that the layout needs added to the targetEl. The targetEl is where the container's\nchildren are rendered and is usually just the main el. Some containers (e.g. panels) use a body instead.

\n\n

In general, if a class overrides getTargetEl it will also need to override this method. This is necessary to\navoid a post-render step to add the targetCls.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"cascade":{"!type":"fn(fn: fn(), scope?: ?, args?: [?]) -> +Ext.Container","!doc":"

Cascades down the component/container heirarchy from this component (passed in\nthe first call), calling the specified function with each component. The scope\n(this reference) of the function call will be the scope provided or the current\ncomponent. The arguments to the function will be the args provided or the current\ncomponent. If the function returns false at any point, the cascade is stopped on\nthat branch.

\n"},"contains":{"!type":"fn(comp: +Ext.Component, deep?: bool) -> bool","!doc":"

Determines whether the passed Component is either an immediate child of this Container,\nor whether it is a descendant.

\n"},"detachComponent":{"!type":"fn(component: ?) -> !this","!doc":"

Detach a component from the DOM

\n"},"disable":{"!type":"fn() -> +Ext.container.AbstractContainer","!doc":"

Inherit docs\nDisable all immediate children that was previously disabled\nOverride disable because onDisable only gets called when rendered

\n"},"doLayout":{"!type":"fn() -> +Ext.container.Container","!doc":"

Manually force this container's layout to be recalculated. The framework uses this internally to refresh layouts\nform most cases.

\n"},"doRemove":{"!type":"fn(component: ?, doDestroy: ?) -> !this"},"enable":{"!type":"fn() -> +Ext.container.AbstractContainer","!doc":"

Enable all immediate children that was previously disabled\nOverride enable because onEnable only gets called when rendered

\n"},"finishRenderChildren":{"!type":"fn() -> !this"},"getChildItemsToDisable":{"!type":"fn() -> [+Ext.Component]","!doc":"

Gets a list of child components to enable/disable when the container is\nenabled/disabled

\n"},"getComponent":{"!type":"fn(comp: string|number) -> +Ext.Component","!doc":"

Examines this container's items property and gets a direct child\ncomponent of this container.

\n"},"getComponentId":{"!type":"fn(comp: ?) -> !this","!doc":"\n\n"},"getContentTarget":{"!type":"fn() -> !this"},"getDefaultContentTarget":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the focus holder element associated with this Container. By default, this is the Container's target\nelement. Subclasses which use embedded focusable elements (such as Window and Button) should override this for use\nby the focus method.

\n"},"getLayout":{"!type":"fn() -> +Ext.layout.container.Container","!doc":"

Returns the layout instance currently associated with this Container.\nIf a layout has not been instantiated yet, that is done first

\n"},"getRefItems":{"!type":"fn(deep: ?) -> !this","!doc":"

Used by ComponentQuery, child and down to retrieve all of the items\nwhich can potentially be considered a child of this Container.

\n\n

This may be overriden by Components which have ownership of Components\nthat are not contained in the items collection.

\n\n

NOTE: IMPORTANT note for maintainers:\nItems are returned in tree traversal order. Each item is appended to the result array\nfollowed by the results of that child's getRefItems call.\nFloating child items are appended after internal child items.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initItems":{"!type":"fn() -> !this"},"insert":{"!type":"fn(index: number, component: +Ext.Component|?) -> +Ext.Component","!doc":"

Inserts a Component into this Container at a specified index. Fires the\nbeforeadd event before inserting, then fires the add\nevent after the Component has been inserted.

\n"},"isAncestor":{"!type":"fn(possibleDescendant: +Ext.Component) -> !this","!doc":"

Determines whether this Container is an ancestor of the passed Component.\nThis will return true if the passed Component is anywhere within the subtree\nbeneath this Container.

\n"},"lookupComponent":{"!type":"fn(comp: ?) -> !this"},"move":{"!type":"fn(fromIdx: number|+Ext.Component, toIdx: number) -> +Ext.Component","!doc":"

Moves a Component within the Container

\n"},"nextChild":{"!type":"fn(child: ?, selector: ?) -> !this"},"onAdd":{"!type":"fn(component: +Ext.Component, position: number) -> !this","!doc":"

This method is invoked after a new Component has been added. It\nis passed the Component which has been added. This method may\nbe used to update any internal structure which may depend upon\nthe state of the child items.

\n"},"onBeforeAdd":{"!type":"fn(item: +Ext.Component) -> !this","!doc":"

This method is invoked before adding a new child Component. It\nis passed the new Component, and may be used to modify the\nComponent, or prepare the Container in some way. Returning\nfalse aborts the add operation.

\n"},"onMove":{"!type":"fn() -> !this"},"onPosition":{"!type":"fn() -> !this","!doc":"

Called after the component is moved, this method is empty by default but can be implemented by any\nsubclass that needs to perform custom logic after a move occurs.

\n"},"onRemove":{"!type":"fn(component: +Ext.Component, autoDestroy: bool) -> !this","!doc":"

This method is invoked after a new Component has been\nremoved. It is passed the Component which has been\nremoved. This method may be used to update any internal\nstructure which may depend upon the state of the child items.

\n"},"onResize":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the resize operation.

\n\n

Called when Ext.resizer.Resizer#drag event is fired.

\n"},"prepareItems":{"!type":"fn(items: ?, applyDefaults: ?) -> !this"},"prevChild":{"!type":"fn(child: ?, selector: ?) -> !this"},"remove":{"!type":"fn(this: +Ext.container.Container, component: +Ext.Component, eOpts: ?)","!doc":"

Fires after any Ext.Component is removed from the container.

\n\n

This event bubbles: 'remove' will also be fired when Component is removed from any of\nthe child containers or their children or ...

\n"},"removeAll":{"!type":"fn(autoDestroy?: bool) -> [+Ext.Component]","!doc":"

Removes all components from this container.

\n"},"repositionFloatingItems":{"!type":"fn() -> !this"},"setLayout":{"!type":"fn(layout: ?) -> !this"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"},"afterlayout":{"!type":"fn(this: +Ext.container.Container, layout: +Ext.layout.container.Container, eOpts: ?)","!doc":"

Fires when the components in this container are arranged by the associated layout manager.

\n"},"beforeadd":{"!type":"fn(this: +Ext.container.Container, component: +Ext.Component, index: number, eOpts: ?)","!doc":"

Fires before any Ext.Component is added or inserted into the container.\nA handler can return false to cancel the add.

\n"},"beforeremove":{"!type":"fn(this: +Ext.container.Container, component: +Ext.Component, eOpts: ?)","!doc":"

Fires before any Ext.Component is removed from the container. A handler can return\nfalse to cancel the remove.

\n"}}},"ButtonGroup":{"!doc":"

Provides a container for arranging a group of related Buttons in a tabular manner.

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Panel with ButtonGroup',\n    width: 300,\n    height:200,\n    renderTo: document.body,\n    bodyPadding: 10,\n    html: 'HTML Panel Content',\n    tbar: [{\n        xtype: 'buttongroup',\n        columns: 3,\n        title: 'Clipboard',\n        items: [{\n            text: 'Paste',\n            scale: 'large',\n            rowspan: 3,\n            iconCls: 'add',\n            iconAlign: 'top',\n            cls: 'btn-as-arrow'\n        },{\n            xtype:'splitbutton',\n            text: 'Menu Button',\n            scale: 'large',\n            rowspan: 3,\n            iconCls: 'add',\n            iconAlign: 'top',\n            arrowAlign:'bottom',\n            menu: [{ text: 'Menu Item 1' }]\n        },{\n            xtype:'splitbutton', text: 'Cut', iconCls: 'add16', menu: [{text: 'Cut Menu Item'}]\n        },{\n            text: 'Copy', iconCls: 'add16'\n        },{\n            text: 'Format', iconCls: 'add16'\n        }]\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_container_ButtonGroup_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","animCollapse":{"!type":"bool"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"closable":{"!type":"bool"},"collapseMode":{"!type":"bool"},"collapsible":{"!type":"bool"},"columns":{"!type":"number","!doc":"

The columns configuration property passed to the configured layout manager.\nSee Ext.layout.container.Table.columns.

\n"},"defaultButtonUI":{"!type":"string","!doc":"

A default ui to use for Button items

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"frame":{"!type":"bool","!doc":"

True to apply a frame to the panel.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"titleAlign":{"!type":"string","!doc":"

The alignment of the title text within the available space between the\nicon and the tools.

\n\n

May be \"left\", \"right\" or \"center\". Defaults to the browser's natural\nbehavior depending on the css direction property - \"left\" when direction\nis ltr and \"right\" when direction is rtl\n(see Ext.AbstractComponent.rtl).

\n"},"tools":{"!type":"[?]"},"noTitleCls":{"!type":"string"},"applyDefaults":{"!type":"fn(c: ?) -> !this","!doc":"

private

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onBeforeAdd":{"!type":"fn(component: ?) -> !this","!doc":"

private

\n"}}},"Container":{"!doc":"

Base class for any Ext.Component that may contain other Components. Containers handle the basic behavior of\ncontaining items, namely adding, inserting and removing items.

\n\n

The most commonly used Container classes are Ext.panel.Panel, Ext.window.Window and\nExt.tab.Panel. If you do not need the capabilities offered by the aforementioned classes you can create a\nlightweight Container to be encapsulated by an HTML element to your specifications by using the\nautoEl config option.

\n\n

The code below illustrates how to explicitly create a Container:

\n\n
// Explicitly create a Container\nExt.create('Ext.container.Container', {\n    layout: {\n        type: 'hbox'\n    },\n    width: 400,\n    renderTo: Ext.getBody(),\n    border: 1,\n    style: {borderColor:'#000000', borderStyle:'solid', borderWidth:'1px'},\n    defaults: {\n        labelWidth: 80,\n        // implicitly create Container by specifying xtype\n        xtype: 'datefield',\n        flex: 1,\n        style: {\n            padding: '10px'\n        }\n    },\n    items: [{\n        xtype: 'datefield',\n        name: 'startDate',\n        fieldLabel: 'Start date'\n    },{\n        xtype: 'datefield',\n        name: 'endDate',\n        fieldLabel: 'End date'\n    }]\n});\n
\n\n

Layout

\n\n

Container classes delegate the rendering of child Components to a layout manager class which must be configured into\nthe Container using the layout configuration property.

\n\n

When either specifying child items of a Container, or dynamically adding Components to a\nContainer, remember to consider how you wish the Container to arrange those child elements, and whether those child\nelements need to be sized using one of Ext's built-in layout schemes. By default, Containers use the\nAuto scheme which only renders child components, appending them one after the other\ninside the Container, and does not apply any sizing at all.

\n\n

A common mistake is when a developer neglects to specify a layout (e.g. widgets like GridPanels or\nTreePanels are added to Containers for which no layout has been specified). If a Container is left to\nuse the default Auto scheme, none of its child components will be resized, or changed in\nany way when the Container is resized.

\n\n

Certain layout managers allow dynamic addition of child components. Those that do include\nExt.layout.container.Card, Ext.layout.container.Anchor, Ext.layout.container.VBox,\nExt.layout.container.HBox, and Ext.layout.container.Table. For example:

\n\n
//  Create the GridPanel.\nvar myNewGrid = Ext.create('Ext.grid.Panel', {\n    store: myStore,\n    headers: myHeaders,\n    title: 'Results', // the title becomes the title of the tab\n});\n\nmyTabPanel.add(myNewGrid); // Ext.tab.Panel implicitly uses Card\nmyTabPanel.setActiveTab(myNewGrid);\n
\n\n

The example above adds a newly created GridPanel to a TabPanel. Note that a TabPanel uses Ext.layout.container.Card as its layout manager which means all its child items are sized to fit exactly into its client area.

\n\n

Overnesting is a common problem. An example of overnesting occurs when a GridPanel is added to a TabPanel by\nwrapping the GridPanel inside a wrapping Panel (that has no layout specified) and then add that\nwrapping Panel to the TabPanel. The point to realize is that a GridPanel is a Component which can be added\ndirectly to a Container. If the wrapping Panel has no layout configuration, then the overnested\nGridPanel will not be sized as expected.

\n\n

Adding via remote configuration

\n\n

A server side script can be used to add Components which are generated dynamically on the server. An example of\nadding a GridPanel to a TabPanel where the GridPanel is generated by the server based on certain parameters:

\n\n
// execute an Ajax request to invoke server side script:\nExt.Ajax.request({\n    url: 'gen-invoice-grid.php',\n    // send additional parameters to instruct server script\n    params: {\n        startDate: Ext.getCmp('start-date').getValue(),\n        endDate: Ext.getCmp('end-date').getValue()\n    },\n    // process the response object to add it to the TabPanel:\n    success: function(xhr) {\n        var newComponent = eval(xhr.responseText); // see discussion below\n        myTabPanel.add(newComponent); // add the component to the TabPanel\n        myTabPanel.setActiveTab(newComponent);\n    },\n    failure: function() {\n        Ext.Msg.alert(\"Grid create failed\", \"Server communication failure\");\n    }\n});\n
\n\n

The server script needs to return a JSON representation of a configuration object, which, when decoded will return a\nconfig object with an xtype. The server might return the following JSON:

\n\n
{\n    \"xtype\": 'grid',\n    \"title\": 'Invoice Report',\n    \"store\": {\n        \"model\": 'Invoice',\n        \"proxy\": {\n            \"type\": 'ajax',\n            \"url\": 'get-invoice-data.php',\n            \"reader\": {\n                \"type\": 'json'\n                \"record\": 'transaction',\n                \"idProperty\": 'id',\n                \"totalRecords\": 'total'\n            })\n        },\n        \"autoLoad\": {\n            \"params\": {\n                \"startDate\": '01/01/2008',\n                \"endDate\": '01/31/2008'\n            }\n        }\n    },\n    \"headers\": [\n        {\"header\": \"Customer\", \"width\": 250, \"dataIndex\": 'customer', \"sortable\": true},\n        {\"header\": \"Invoice Number\", \"width\": 120, \"dataIndex\": 'invNo', \"sortable\": true},\n        {\"header\": \"Invoice Date\", \"width\": 100, \"dataIndex\": 'date', \"renderer\": Ext.util.Format.dateRenderer('M d, y'), \"sortable\": true},\n        {\"header\": \"Value\", \"width\": 120, \"dataIndex\": 'value', \"renderer\": 'usMoney', \"sortable\": true}\n    ]\n}\n
\n\n

When the above code fragment is passed through the eval function in the success handler of the Ajax request, the\nresult will be a config object which, when added to a Container, will cause instantiation of a GridPanel. Be sure\nthat the Container is configured with a layout which sizes and positions the child items to your requirements.

\n\n

Note: since the code above is generated by a server script, the autoLoad params for the Store, the user's\npreferred date format, the metadata to allow generation of the Model layout, and the ColumnModel can all be generated\ninto the code since these are all known on the server.

\n","!type":"fn(config: +Ext.Element|string|Ext_container_Container_cfg)","prototype":{"!proto":"Ext.container.AbstractContainer.prototype","anchorSize":{"!type":"number|?","!doc":"

Defines the anchoring size of container.\nEither a number to define the width of the container or an object with width and height fields.

\n"},"getChildByElement":{"!type":"fn(el: +Ext.Element|+HTMLElement|string, deep: bool) -> +Ext.Component","!doc":"

Return the immediate child Component in which the passed element is located.

\n"}}},"DockingContainer":{"prototype":{"defaultDockWeights":{"!type":"?","!doc":"

This object holds the default weights applied to dockedItems that have no weight. These start with a\nweight of 1, to allow negative weights to insert before top items and are odd numbers\nso that even weights can be used to get between different dock orders.

\n\n

To make default docking order match border layout, do this:

\n\n
 Ext.panel.AbstractPanel.prototype.defaultDockWeights = { top: 1, bottom: 3, left: 5, right: 7 };\n
\n\n

Changing these defaults as above or individually on this object will effect all Panels.\nTo change the defaults on a single panel, you should replace the entire object:

\n\n
 initComponent: function () {\n     // NOTE: Don't change members of defaultDockWeights since the object is shared.\n     this.defaultDockWeights = { top: 1, bottom: 3, left: 5, right: 7 };\n\n     this.callParent();\n }\n
\n\n

To change only one of the default values, you do this:

\n\n
 initComponent: function () {\n     // NOTE: Don't change members of defaultDockWeights since the object is shared.\n     this.defaultDockWeights = Ext.applyIf({ top: 10 }, this.defaultDockWeights);\n\n     this.callParent();\n }\n
\n"},"dockOrder":{"!type":"?","!doc":"

Values to decide which side of the body element docked items must go\nThis overides any weight. A left/top will always sort before a right/bottom\nregardless of any weight value. Weights sort at either side of the \"body\" dividing point.

\n"},"horizontalDocks":{"!type":"number","!doc":"

Number of dock 'left' and 'right' items.

\n"},"isDockingContainer":{"!type":"bool","!doc":"

End Definitions

\n"},"addDocked":{"!type":"fn(component: ?|[?], pos?: number) -> [+Ext.Component]","!doc":"

Adds docked item(s) to the container.

\n"},"destroyDockedItems":{"!type":"fn() -> !this"},"doRenderDockedItems":{"!type":"fn(out: ?, renderData: ?, after: ?) -> !this"},"getDockedComponent":{"!type":"fn(comp: string|number) -> +Ext.Component","!doc":"

Finds a docked component by id, itemId or position. Also see getDockedItems

\n"},"getDockedItems":{"!type":"fn(selector: string, beforeBody: bool) -> [+Ext.Component]","!doc":"

Retrieves an array of all currently docked Components.

\n\n

For example to find a toolbar that has been docked at top:

\n\n
panel.getDockedItems('toolbar[dock=\"top\"]');\n
\n"},"getDockingRefItems":{"!type":"fn(deep: ?, containerItems: ?) -> !this"},"initDockingItems":{"!type":"fn() -> !this"},"insertDocked":{"!type":"fn(pos: number, component: ?|[?]) -> !this","!doc":"

Inserts docked item(s) to the panel at the indicated position.

\n"},"onDockedAdd":{"!type":"fn(component: +Ext.Component) -> !this","!doc":"

Invoked after a docked item is added to the Panel.

\n"},"onDockedRemove":{"!type":"fn(component: +Ext.Component) -> !this","!doc":"

Invoked after a docked item is removed from the Panel.

\n"},"removeDocked":{"!type":"fn(item: +Ext.Component, autoDestroy?: bool) -> !this","!doc":"

Removes the docked item from the panel.

\n"},"setupDockingRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"},"dockedadd":{"!type":"fn(this: +Ext.panel.Panel, component: +Ext.Component, index: number, eOpts: ?)","!doc":"

Fires when any Ext.Component is added or inserted as a docked item.

\n"},"dockedremove":{"!type":"fn(this: +Ext.panel.Panel, component: +Ext.Component, eOpts: ?)","!doc":"

Fires when any Ext.Component is removed from the docked items.

\n"}}},"Monitor":{"!doc":"

This is a utility class for being able to track all items of a particular type\ninside any level at a container. This can be used in favour of bubbling add/remove events\nwhich can add a large perf cost when implemented globally

\n","!type":"fn(config: Ext_container_Monitor_cfg)","prototype":{"!proto":"Ext.Base.prototype","addHandler":{"!type":"?"},"disabled":{"!type":"number"},"removeHandler":{"!type":"?"},"scope":{"!type":"?"},"selector":{"!type":"string"},"target":{"!type":"?"},"bind":{"!type":"fn(target: ?) -> !this"},"disable":{"!type":"fn() -> !this"},"enable":{"!type":"fn() -> !this"},"getItems":{"!type":"fn() -> !this"},"handleAdd":{"!type":"fn(ct: ?, comp: ?) -> !this"},"handleRemove":{"!type":"fn(ct: ?, comp: ?) -> !this"},"invalidateItems":{"!type":"fn() -> !this"},"onContainerAdd":{"!type":"fn(ct: ?, preventChildren: ?) -> !this"},"onContainerRemove":{"!type":"fn(ct: ?, comp: ?) -> !this"},"onItemAdd":{"!type":"fn(ct: ?, comp: ?) -> !this"},"onItemRemove":{"!type":"fn(ct: ?, comp: ?) -> !this"},"removeCtListeners":{"!type":"fn(comp: ?) -> !this"},"unbind":{"!type":"fn() -> !this"}}},"Viewport":{"!doc":"

A specialized container representing the viewable application area (the browser viewport).

\n\n

The Viewport renders itself to the document body, and automatically sizes itself to the size of\nthe browser viewport and manages window resizing. There may only be one Viewport created\nin a page.

\n\n

Like any Container, a Viewport will only perform sizing and positioning\non its child Components if you configure it with a layout.

\n\n

A Common layout used with Viewports is border layout, but if the\nrequired layout is simpler, a different layout should be chosen.

\n\n

For example, to simply make a single child item occupy all available space, use\nfit layout.

\n\n

To display one \"active\" item at full size from a choice of several child items, use\ncard layout.

\n\n

Inner layouts are available because all Panels\nadded to the Viewport, either through its items, or the add\nmethod of any of its child Panels may themselves have a layout.

\n\n

The Viewport does not provide scrolling, so child Panels within the Viewport should provide\nfor scrolling if needed using the autoScroll config.

\n\n

An example showing a classic application border layout:

\n\n
Ext.create('Ext.container.Viewport', {\n    layout: 'border',\n    items: [{\n        region: 'north',\n        html: '<h1 class=\"x-panel-header\">Page Title</h1>',\n        border: false,\n        margins: '0 0 5 0'\n    }, {\n        region: 'west',\n        collapsible: true,\n        title: 'Navigation',\n        width: 150\n        // could use a TreePanel or AccordionLayout for navigational items\n    }, {\n        region: 'south',\n        title: 'South Panel',\n        collapsible: true,\n        html: 'Information goes here',\n        split: true,\n        height: 100,\n        minHeight: 100\n    }, {\n        region: 'east',\n        title: 'East Panel',\n        collapsible: true,\n        split: true,\n        width: 150\n    }, {\n        region: 'center',\n        xtype: 'tabpanel', // TabPanel itself has no title\n        activeTab: 0,      // First tab active by default\n        items: {\n            title: 'Default Tab',\n            html: 'The first tab\\'s content. Others may be added dynamically'\n        }\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_container_Viewport_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","allowDomMove":{"!type":"bool"},"applyTo":{"!type":"string|+HTMLElement|+Ext.Element"},"height":{"!type":"number","!doc":"

Sets itself to viewport width.

\n"},"renderTo":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

Always renders to document body.

\n"},"width":{"!type":"number","!doc":"

Sets itself to viewport height.

\n"},"ariaRole":{"!type":"string"},"isViewport":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Viewport, or subclass thereof.

\n"},"preserveElOnDestroy":{"!type":"bool"},"viewportCls":{"!type":"string"},"afterFirstLayout":{"!type":"fn() -> !this"},"applyTargetCls":{"!type":"fn(targetCls: ?) -> !this","!doc":"

override here to prevent an extraneous warning

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"fireResize":{"!type":"fn(width: ?, height: ?) -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initHierarchyState":{"!type":"fn(hierarchyState: ?) -> !this","!doc":"

Called by getHierarchyState to initialize the hierarchyState the first\ntime it is requested.

\n\n

Overridden in Ext.rtl.AbstractComponent.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"}}}},"data":{"AbstractStore":{"!doc":"

AbstractStore is a superclass of Ext.data.Store and Ext.data.TreeStore. It's never used directly,\nbut offers a set of methods used by both of those subclasses.

\n\n

We've left it here in the docs for reference purposes, but unless you need to make a whole new type of Store, what\nyou're probably looking for is Ext.data.Store. If you're still interested, here's a brief description of what\nAbstractStore is and is not.

\n\n

AbstractStore provides the basic configuration for anything that can be considered a Store. It expects to be\ngiven a Model that represents the type of data in the Store. It also expects to be given a\nProxy that handles the loading of data into the Store.

\n\n

AbstractStore provides a few helpful methods such as load and sync, which load and save data\nrespectively, passing the requests through the configured proxy. Both built-in Store subclasses add extra\nbehavior to each of these functions. Note also that each AbstractStore subclass has its own way of storing data -\nin Ext.data.Store the data is saved as a flat MixedCollection, whereas in\nTreeStore we use a Ext.data.Tree to maintain the data's hierarchy.

\n\n

The store provides filtering and sorting support. This sorting/filtering can happen on the client side\nor can be completed on the server. This is controlled by the remoteSort and\nremoteFilter config options. For more information see the sort and\nfilter methods.

\n","!type":"fn(config: Ext_data_AbstractStore_cfg)","prototype":{"!proto":"Ext.Base.prototype","autoLoad":{"!type":"bool|?","!doc":"

If data is not specified, and if autoLoad is true or an Object, this store's load method is automatically called\nafter creation. If the value of autoLoad is an Object, this Object will be passed to the store's load method.

\n"},"autoSync":{"!type":"bool","!doc":"

True to automatically sync the Store with its Proxy after every edit to one of its Records. Defaults to false.

\n"},"batchUpdateMode":{"!type":"string","!doc":"

Sets the updating behavior based on batch synchronization. 'operation' (the default) will update the Store's\ninternal representation of the data after each operation of the batch has completed, 'complete' will wait until\nthe entire batch has been completed before updating the Store's data. 'complete' is a good choice for local\nstorage proxies, 'operation' is better for remote proxies, where there is a comparatively high latency.

\n"},"fields":{"!type":"[?]","!doc":"

This may be used in place of specifying a model configuration. The fields should be a\nset of Ext.data.Field configuration objects. The store will automatically create a Ext.data.Model\nwith these fields. In general this configuration option should only be used for simple stores like\na two-field store of ComboBox. For anything more complicated, such as specifying a particular id property or\nassociations, a Ext.data.Model should be defined and specified for the model\nconfig.

\n"},"filterOnLoad":{"!type":"bool","!doc":"

If true, any filters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, ignored if remoteFilter is true

\n"},"filters":{"!type":"+Ext.util.MixedCollection","!doc":"

The collection of Filters currently applied to this Store

\n"},"model":{"!type":"string","!doc":"

Name of the Model associated with this store.\nThe string is used as an argument for Ext.ModelManager.getModel.

\n"},"proxy":{"!type":"string|+Ext.data.proxy.Proxy|?","!doc":"

The Proxy to use for this Store. This can be either a string, a config object or a Proxy instance -\nsee setProxy for details.

\n"},"remoteFilter":{"!type":"bool","!doc":"

True to defer any filtering operation to the server. If false, filtering is done locally on the client.

\n"},"remoteSort":{"!type":"bool","!doc":"

True to defer any sorting operation to the server. If false, sorting is done locally on the client.

\n"},"sortOnLoad":{"!type":"bool","!doc":"

If true, any sorters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, igored if remoteSort is true

\n"},"statefulFilters":{"!type":"bool","!doc":"

Configure as true to have the filters saved when a client grid saves its state.

\n"},"storeId":{"!type":"string","!doc":"

Unique identifier for this store. If present, this Store will be registered with the Ext.data.StoreManager,\nmaking it easy to reuse elsewhere.

\n\n

Note that when store is instatiated by Controller, the storeId will be overridden by the name of the store.

\n"},"defaultProxyType":{"!type":"string","!doc":"

The string type of the Proxy to create if none is specified. This defaults to creating a\nmemory proxy.

\n"},"implicitModel":{"!type":"bool","!doc":"

True if a model was created implicitly for this Store. This happens if a fields array is passed to the Store's\nconstructor instead of a model constructor or name.

\n"},"isDestroyed":{"!type":"bool","!doc":"

True if the Store has already been destroyed. If this is true, the reference to Store should be deleted\nas it will not function correctly any more.

\n"},"isStore":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Store, or subclass thereof.

\n"},"modelDefaults":{"!type":"?","!doc":"

A set of default values to be applied to every model instance added via insert or created\nvia createModel. This is used internally by associations to set foreign keys and\nother fields. See the Association classes source code for examples. This should not need to be used by application developers.

\n"},"removed":{"!type":"[+Ext.data.Model]","!doc":"

Temporary cache in which removed model instances are kept until successfully synchronised with a Proxy,\nat which point this is cleared.

\n"},"afterCommit":{"!type":"fn(record: +Ext.data.Model) -> !this","!doc":"

A model instance should call this method on the Store it has been joined to.

\n"},"afterEdit":{"!type":"fn(record: +Ext.data.Model, modifiedFieldNames: [string]) -> !this","!doc":"

A model instance should call this method on the Store it has been joined to.

\n"},"afterReject":{"!type":"fn(record: +Ext.data.Model) -> !this","!doc":"

A model instance should call this method on the Store it has been joined to..

\n"},"applyState":{"!type":"fn(state: ?) -> !this","!doc":"

Restores state to the passed state

\n"},"clearData":{"!type":"fn() -> !this","!doc":"

to be implemented by subclasses

\n"},"clearFilter":{"!type":"fn(supressEvent: ?) -> !this"},"create":{"!type":"fn(data: ?, options: ?) -> !this","!doc":"

saves any phantom records

\n"},"decodeFilters":{"!type":"fn(filters: [?]) -> [+Ext.util.Filter]","!doc":"

Normalizes an array of filter objects, ensuring that they are all Ext.util.Filter instances

\n"},"destroy":{"!type":"fn(options: ?) -> !this","!doc":"

tells the attached proxy to destroy the given records

\n"},"destroyStore":{"!type":"fn() -> !this","!doc":"

private

\n"},"doSort":{"!type":"fn(sorterFn: ?) -> !this","!doc":"

private

\n"},"filter":{"!type":"fn(filters: ?, value: ?) -> !this"},"filterBy":{"!type":"fn(fn: ?, scope: ?) -> !this"},"filterNew":{"!type":"fn(item: ?) -> !this","!doc":"

Filter function for new records.

\n"},"filterUpdated":{"!type":"fn(item: ?) -> !this","!doc":"

Filter function for updated records.

\n"},"getBatchListeners":{"!type":"fn() -> ?","!doc":"

Returns an object which is passed in as the listeners argument to proxy.batch inside this.sync.\nThis is broken out into a separate function to allow for customisation of the listeners

\n"},"getById":{"!type":"fn() -> !this","!doc":"

to be implemented by subclasses

\n"},"getCount":{"!type":"fn() -> !this","!doc":"

to be implemented by subclasses

\n"},"getModifiedRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Gets all records added or updated since the last commit. Note that the order of records\nreturned is not deterministic and does not indicate the order in which records were modified. Note also that\nremoved records are not included (use getRemovedRecords for that).

\n"},"getNewRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Returns all Model instances that are either currently a phantom (e.g. have no id), or have an ID but have not\nyet been saved on this Store (this happens when adding a non-phantom record from another Store into this one)

\n"},"getProxy":{"!type":"fn() -> +Ext.data.proxy.Proxy","!doc":"

Returns the proxy currently attached to this proxy instance

\n"},"getRemovedRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Returns any records that have been removed from the store but not yet destroyed on the proxy.

\n"},"getState":{"!type":"fn() -> !this","!doc":"

Returns the grouping, sorting and filtered state of this Store.

\n"},"getUpdatedRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Returns all Model instances that have been updated in the Store but not yet synchronized with the Proxy

\n"},"isFiltered":{"!type":"fn() -> !this"},"isLoading":{"!type":"fn() -> bool","!doc":"

Returns true if the Store is currently performing a load operation

\n"},"load":{"!type":"fn(this: +Ext.data.Store, records: [+Ext.data.Model], successful: bool, eOpts: ?)","!doc":"

Fires whenever the store reads data from a remote data source.

\n"},"onBatchComplete":{"!type":"fn(batch: ?, operation: ?) -> !this","!doc":"

Attached as the 'complete' event listener to a proxy's Batch object. Iterates over the batch operations\nand updates the Store's internal data MixedCollection.

\n"},"onBatchException":{"!type":"fn(batch: ?, operation: ?) -> !this"},"onBatchOperationComplete":{"!type":"fn(batch: ?, operation: ?) -> !this","!doc":"

Attached as the 'operationcomplete' event listener to a proxy's Batch object. By default just calls through\nto onProxyWrite.

\n"},"onClassExtended":{"!type":"fn(cls: ?, data: ?, hooks: ?) -> !this"},"onCreateRecords":{"!type":"fn() -> !this","!doc":"

may be implemented by store subclasses

\n"},"onDestroyRecords":{"!type":"fn(records: [+Ext.data.Model], operation: +Ext.data.Operation, success: bool) -> !this","!doc":"

Removes any records when a write is returned from the server.

\n"},"onIdChanged":{"!type":"fn(model: ?, oldId: ?, newId: ?, oldInternalId: ?) -> !this"},"onMetaChange":{"!type":"fn(proxy: ?, meta: ?) -> !this","!doc":"

private

\n"},"onProxyWrite":{"!type":"fn(operation: ?) -> !this","!doc":"

Callback for any write Operation over the Proxy. Updates the Store's MixedCollection to reflect\nthe updates provided by the Proxy

\n"},"onUpdate":{"!type":"fn() -> !this"},"onUpdateRecords":{"!type":"fn() -> !this","!doc":"

may be implemented by store subclasses

\n"},"read":{"!type":"fn() -> !this"},"reload":{"!type":"fn(options: ?) -> !this","!doc":"

Reloads the store using the last options passed to the load method.

\n"},"removeAll":{"!type":"fn() -> !this","!doc":"

Removes all records from the store. This method does a \"fast remove\",\nindividual remove events are not called. The clear event is\nfired upon completion.

\n"},"resumeAutoSync":{"!type":"fn() -> !this","!doc":"

Resumes automatically syncing the Store with its Proxy. Only applicable if autoSync is true

\n"},"save":{"!type":"fn() -> !this","!doc":"

Saves all pending changes via the configured proxy. Use sync instead.

\n"},"setProxy":{"!type":"fn(proxy: string|?|+Ext.data.proxy.Proxy) -> +Ext.data.proxy.Proxy","!doc":"

Sets the Store's Proxy by string, config object or Proxy instance

\n"},"suspendAutoSync":{"!type":"fn() -> !this","!doc":"

Suspends automatically syncing the Store with its Proxy. Only applicable if autoSync is true

\n"},"sync":{"!type":"fn(options?: ?) -> +Ext.data.Store","!doc":"

Synchronizes the store with its proxy. This asks the proxy to batch together any new, updated\nand deleted records in the store, updating the store's internal representation of the records\nas each operation completes.

\n"},"update":{"!type":"fn(this: +Ext.data.Store, record: +Ext.data.Model, operation: string, modifiedFieldNames: [string], eOpts: ?)","!doc":"

Fires when a Model instance has been updated.

\n"},"add":{"!type":"fn(store: +Ext.data.Store, records: [+Ext.data.Model], index: number, eOpts: ?)","!doc":"

Fired when a Model instance has been added to this Store.

\n"},"beforeload":{"!type":"fn(store: +Ext.data.Store, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires before a request is made for a new data object. If the beforeload handler returns false the load\naction will be canceled.

\n"},"beforesync":{"!type":"fn(options: ?, eOpts: ?)","!doc":"

Fired before a call to sync is executed. Return false from any listener to cancel the sync

\n"},"bulkremove":{"!type":"fn(store: +Ext.data.Store, records: [+Ext.data.Model], indexes: [number], isMove: bool, eOpts: ?)","!doc":"

Fired at the end of the remove method when all records in the passed array have been removed.

\n\n

If many records may be removed in one go, then it is more efficient to listen for this event\nand perform any processing for a bulk remove than to listen for many remove events.

\n"},"clear":{"!type":"fn(this: +Ext.data.Store, eOpts: ?)","!doc":"

Fired after the removeAll method is called.

\n"},"datachanged":{"!type":"fn(this: +Ext.data.Store, eOpts: ?)","!doc":"

Fires whenever the records in the Store have changed in some way - this could include adding or removing\nrecords, or updating the data in existing records

\n"},"metachange":{"!type":"fn(this: +Ext.data.Store, meta: ?, eOpts: ?)","!doc":"

Fires when this store's underlying reader (available via the proxy) provides new metadata.\nMetadata usually consists of new field definitions, but can include any configuration data\nrequired by an application, and can be processed as needed in the event handler.\nThis event is currently only fired for JsonReaders.

\n"},"refresh":{"!type":"fn(this: +Ext.data.Store, eOpts: ?)","!doc":"

Fires when the data cache has changed in a bulk manner (e.g., it has been sorted, filtered, etc.) and a\nwidget that is using this Store as a Record cache should refresh its view.

\n"},"remove":{"!type":"fn(store: +Ext.data.Store, record: +Ext.data.Model, index: number, isMove: bool, eOpts: ?)","!doc":"

Fired when a Model instance has been removed from this Store.

\n\n

If many records may be removed in one go, then it is more efficient to listen for the bulkremove event\nand perform any processing for a bulk remove than to listen for this remove event.

\n"},"write":{"!type":"fn(store: +Ext.data.Store, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires whenever a successful write has been made via the configured Proxy

\n"}},"create":{"!type":"fn(store: ?|+Ext.data.AbstractStore) -> +Ext.data.AbstractStore","!doc":"

Creates a store from config object.

\n"}},"ArrayStore":{"!doc":"

Small helper class to make creating Ext.data.Stores from Array data easier. An ArrayStore will be\nautomatically configured with a Ext.data.reader.Array.

\n\n

A store configuration would be something like:

\n\n
var store = Ext.create('Ext.data.ArrayStore', {\n    // store configs\n    storeId: 'myStore',\n    // reader configs\n    fields: [\n       'company',\n       {name: 'price', type: 'float'},\n       {name: 'change', type: 'float'},\n       {name: 'pctChange', type: 'float'},\n       {name: 'lastChange', type: 'date', dateFormat: 'n/j h:ia'}\n    ]\n});\n
\n\n

This store is configured to consume a returned object of the form:

\n\n
var myData = [\n    ['3m Co',71.72,0.02,0.03,'9/1 12:00am'],\n    ['Alcoa Inc',29.01,0.42,1.47,'9/1 12:00am'],\n    ['Boeing Co.',75.43,0.53,0.71,'9/1 12:00am'],\n    ['Hewlett-Packard Co.',36.53,-0.03,-0.08,'9/1 12:00am'],\n    ['Wal-Mart Stores, Inc.',45.45,0.73,1.63,'9/1 12:00am']\n];\n
\n\n

An object literal of this form could also be used as the data config option.

\n","!type":"fn(config: Ext_data_ArrayStore_cfg)","prototype":{"!proto":"Ext.data.Store.prototype","loadData":{"!type":"fn(data: ?, append: ?) -> !this","!doc":"

Loads an array of data straight into the Store.

\n\n

Using this method is great if the data is in the correct format already (e.g. it doesn't need to be\nprocessed by a reader). If your data requires processing to decode the data structure, use a\nMemoryProxy or loadRawData.

\n"}}},"Batch":{"!doc":"

Provides a mechanism to run one or more operations in a given order. Fires the 'operationcomplete' event\nafter the completion of each Operation, and the 'complete' event when all Operations have been successfully executed. Fires an 'exception'\nevent if any of the Operations encounter an exception.

\n\n\n\n\n

Usually these are only used internally by Ext.data.proxy.Proxy classes

\n\n","!type":"fn(config?: Ext_data_Batch_cfg)","prototype":{"!proto":"Ext.Base.prototype","autoStart":{"!type":"bool","!doc":"

True to immediately start processing the batch as soon as it is constructed (defaults to false)

\n"},"pauseOnException":{"!type":"bool","!doc":"

True to pause the execution of the batch if any operation encounters an exception\n(defaults to false). If you set this to true you are responsible for implementing the appropriate\nhandling logic and restarting or discarding the batch as needed. There are different ways you could\ndo this, e.g. by handling the batch's exception event directly, or perhaps by overriding\nonBatchException at the store level. If you do pause\nand attempt to handle the exception you can call retry to process the same operation again.

\n\n

Note that operations are atomic, so any operations that may have succeeded\nprior to an exception (and up until pausing the batch) will be finalized at the server level and will\nnot be automatically reversible. Any transactional / rollback behavior that might be desired would have\nto be implemented at the application level. Pausing on exception will likely be most beneficial when\nused in coordination with such a scheme, where an exception might actually affect subsequent operations\nin the same batch and so should be handled before continuing with the next operation.

\n\n

If you have not implemented transactional operation handling then this option should typically be left\nto the default of false (e.g. process as many operations as possible, and handle any exceptions\nasynchronously without holding up the rest of the batch).

\n"},"current":{"!type":"number","!doc":"

The index of the current operation being executed. Read only

\n"},"exceptions":{"!type":"[+Ext.data.Operation]","!doc":"

Ordered array of operations that raised an exception during the most recent\nbatch execution and did not successfully complete

\n"},"hasException":{"!type":"bool","!doc":"

True if this batch has encountered an exception. This is cleared at the start of each operation. Read only

\n"},"isComplete":{"!type":"bool","!doc":"

True if this batch has been executed completely. Read only

\n"},"isRunning":{"!type":"bool","!doc":"

True if the batch is currently running. Read only

\n"},"operations":{"!type":"[+Ext.data.Operation]","!doc":"

Ordered array of operations that will be executed by this batch

\n"},"total":{"!type":"number","!doc":"

The total number of operations in this batch. Read only

\n"},"add":{"!type":"fn(operation: ?) -> +Ext.data.Batch","!doc":"

Adds a new operation to this batch at the end of the operations array

\n"},"pause":{"!type":"fn() -> +Ext.data.Batch","!doc":"

Pauses execution of the batch, but does not cancel the current operation

\n"},"retry":{"!type":"fn() -> +Ext.data.Batch","!doc":"

Kicks off execution of the batch, continuing from the current operation. This is intended\nfor restarting a paused batch after an exception, and the operation that raised\nthe exception will now be retried. The batch will then continue with its normal processing until\nall operations are complete or another exception is encountered.

\n\n

Note that if the batch is already running any call to retry will be ignored.

\n"},"runNextOperation":{"!type":"fn() -> +Ext.data.Batch","!doc":"

Runs the next operation, relative to this.current.

\n"},"runOperation":{"!type":"fn(index: number) -> +Ext.data.Batch","!doc":"

Executes an operation by its numeric index in the operations array

\n"},"start":{"!type":"fn(index: ?) -> +Ext.data.Batch","!doc":"

Kicks off execution of the batch, continuing from the next operation if the previous\noperation encountered an exception, or if execution was paused. Use this method to start\nthe batch for the first time or to restart a paused batch by skipping the current\nunsuccessful operation.

\n\n

To retry processing the current operation before continuing to the rest of the batch (e.g.\nbecause you explicitly handled the operation's exception), call retry instead.

\n\n

Note that if the batch is already running any call to start will be ignored.

\n"},"complete":{"!type":"fn(batch: +Ext.data.Batch, operation: ?, eOpts: ?)","!doc":"

Fired when all operations of this batch have been completed

\n"},"exception":{"!type":"fn(batch: +Ext.data.Batch, operation: ?, eOpts: ?)","!doc":"

Fired when a operation encountered an exception

\n"},"operationcomplete":{"!type":"fn(batch: +Ext.data.Batch, operation: ?, eOpts: ?)","!doc":"

Fired when each operation of the batch completes

\n"}}},"BufferStore":{"!type":"fn()","prototype":{"!proto":"Ext.data.Store.prototype","filterOnLoad":{"!type":"bool","!doc":"

If true, any filters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, ignored if remoteFilter is true

\n"},"sortOnLoad":{"!type":"bool","!doc":"

If true, any sorters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, igored if remoteSort is true

\n"}}},"Connection":{"!doc":"

The Connection class encapsulates a connection to the page's originating domain, allowing requests to be made either\nto a configured URL, or to a URL specified at request time.

\n\n

Requests made by this class are asynchronous, and will return immediately. No data from the server will be available\nto the statement immediately following the request call. To process returned data, use a success callback\nin the request options object, or an event listener.

\n\n

File Uploads

\n\n

File uploads are not performed using normal \"Ajax\" techniques, that is they are not performed using XMLHttpRequests.\nInstead the form is submitted in the standard manner with the DOM <form> element temporarily modified to have its\ntarget set to refer to a dynamically generated, hidden <iframe> which is inserted into the document but removed\nafter the return data has been gathered.

\n\n

The server response is parsed by the browser to create the document for the IFRAME. If the server is using JSON to\nsend the return object, then the Content-Type header must be set to \"text/html\" in order to tell the browser to\ninsert the text unchanged into the document body.

\n\n

Characters which are significant to an HTML parser must be sent as HTML entities, so encode < as &lt;, & as\n&amp; etc.

\n\n

The response text is retrieved from the document, and a fake XMLHttpRequest object is created containing a\nresponseText property in order to conform to the requirements of event handlers and callbacks.

\n\n

Be aware that file upload packets are sent with the content type multipart/form and some server technologies\n(notably JEE) may require some custom processing in order to retrieve parameter names and parameter values from the\npacket content.

\n\n

Also note that it's not possible to check the response code of the hidden iframe, so the success handler will ALWAYS fire.

\n\n

Binary Posts

\n\n

The class supports posting binary data to the server by using native browser capabilities, or a flash polyfill plugin in browsers that do not support native binary posting (e.g. Internet Explorer version 9 or less). A number of limitations exist when the polyfill is used:

\n\n\n\n","!type":"fn(config: Ext_data_Connection_cfg)","prototype":{"!proto":"Ext.Base.prototype","autoAbort":{"!type":"bool","!doc":"

Whether this request should abort any pending requests.

\n"},"binary":{"!type":"bool","!doc":"

True if the response should be treated as binary data. If true, the binary\ndata will be accessible as a \"responseBytes\" property on the response object.

\n"},"cors":{"!type":"bool","!doc":"

True to enable CORS support on the XHR object. Currently the only effect of this option\nis to use the XDomainRequest object instead of XMLHttpRequest if the browser is IE8 or above.

\n"},"defaultHeaders":{"!type":"?","!doc":"

An object containing request headers which are added to each request made by this object.

\n"},"disableCaching":{"!type":"bool","!doc":"

True to add a unique cache-buster param to GET requests.

\n"},"disableCachingParam":{"!type":"string","!doc":"

Change the parameter which is sent went disabling caching through a cache buster.

\n"},"extraParams":{"!type":"?","!doc":"

Any parameters to be appended to the request.

\n"},"method":{"!type":"?"},"timeout":{"!type":"number","!doc":"

The timeout in milliseconds to be used for requests.

\n"},"withCredentials":{"!type":"bool","!doc":"

True to set withCredentials = true on the XHR object

\n"},"async":{"!type":"bool"},"defaultPostHeader":{"!type":"string"},"defaultXdrContentType":{"!type":"string"},"defaultXhrHeader":{"!type":"string"},"getXhrInstance":{"!type":"?","!doc":"

Creates the appropriate XHR transport for this browser.

\n"},"isXdr":{"!type":"bool"},"password":{"!type":"string"},"url":{"!type":"?"},"useDefaultXhrHeader":{"!type":"bool"},"username":{"!type":"string"},"abort":{"!type":"fn(request?: ?) -> !this","!doc":"

Aborts an active request.

\n"},"abortAll":{"!type":"fn() -> !this","!doc":"

Aborts all active requests

\n"},"cleanup":{"!type":"fn(request: ?) -> !this","!doc":"

Cleans up any left over information from the request

\n"},"clearTimeout":{"!type":"fn(request: ?) -> !this","!doc":"

Clears the timeout on the request

\n"},"createException":{"!type":"fn(request: ?) -> !this","!doc":"

Creates the exception object

\n"},"createResponse":{"!type":"fn(request: ?) -> !this","!doc":"

Creates the response object

\n"},"getByteArray":{"!type":"fn(xhr: ?) -> +Uint8Array|[?]","!doc":"

Gets binary data from the xhr response object and returns it as a byte array

\n"},"getForm":{"!type":"fn(options: ?) -> +HTMLElement","!doc":"

Gets the form object from options.

\n"},"getLatest":{"!type":"fn() -> ?","!doc":"

Gets the most recent request

\n"},"getXdrInstance":{"!type":"fn() -> !this","!doc":"

Creates the appropriate XDR transport for this browser.\n- IE 7 and below don't support CORS\n- IE 8 and 9 support CORS with native XDomainRequest object\n- IE 10 (and above?) supports CORS with native XMLHttpRequest object

\n"},"injectVBScript":{"!type":"fn() -> !this","!doc":"

Injects a vbscript tag containing a 'getIEByteArray' method for reading\nbinary data from an xhr response in IE8 and below.

\n"},"isFormUpload":{"!type":"fn(options: ?) -> !this","!doc":"

Detects whether the form is intended to be used for an upload.

\n"},"isLoading":{"!type":"fn(request?: ?) -> bool","!doc":"

Determines whether this object has a request outstanding.

\n"},"nativeBinaryPostSupport":{"!type":"fn() -> bool"},"newRequest":{"!type":"fn(options: ?) -> !this","!doc":"

Creates the appropriate XHR transport for a given request on this browser. On IE\nthis may be an XDomainRequest rather than an XMLHttpRequest.

\n"},"onComplete":{"!type":"fn(request: ?) -> ?","!doc":"

To be called when the request has come back from the server

\n"},"onStateChange":{"!type":"fn(request: ?) -> !this","!doc":"

Fires when the state of the xhr changes

\n"},"onUploadComplete":{"!type":"fn(frame: ?, options: ?) -> !this","!doc":"

Callback handler for the upload function. After we've submitted the form via the iframe this creates a bogus\nresponse object to simulate an XHR and populates its responseText from the now-loaded iframe's document body\n(or a textarea inside the body). We then clean up by removing the iframe

\n"},"openRequest":{"!type":"fn(options: ?, requestOptions: ?, async: ?, username: ?, password: ?) -> !this","!doc":"

Creates and opens an appropriate XHR transport for a given request on this browser.\nThis logic is contained in an individual method to allow for overrides to process all\nof the parameters and options and return a suitable, open connection.

\n"},"parseStatus":{"!type":"fn(status: number) -> ?","!doc":"

Checks if the response status was successful

\n"},"processXdrRequest":{"!type":"fn(request: ?, xhr: ?) -> !this"},"processXdrResponse":{"!type":"fn(response: ?, xhr: ?) -> !this"},"request":{"!type":"fn(options: ?) -> ?","!doc":"

Sends an HTTP request to a remote server.

\n\n

Important: Ajax server requests are asynchronous, and this call will\nreturn before the response has been received. Process any returned data\nin a callback function.

\n\n
Ext.Ajax.request({\n    url: 'ajax_demo/sample.json',\n    success: function(response, opts) {\n        var obj = Ext.decode(response.responseText);\n        console.dir(obj);\n    },\n    failure: function(response, opts) {\n        console.log('server-side failure with status code ' + response.status);\n    }\n});\n
\n\n

To execute a callback function in the correct scope, use the scope option.

\n"},"setOptions":{"!type":"fn(options: ?, scope: ?) -> ?","!doc":"

Sets various options such as the url, params for the request

\n"},"setupHeaders":{"!type":"fn(xhr: ?, options: ?, data: ?, params: ?) -> !this","!doc":"

Setup all the headers for the request

\n"},"setupMethod":{"!type":"fn(options: ?, method: string) -> string","!doc":"

Template method for overriding method

\n"},"setupParams":{"!type":"fn(options: ?, params: string) -> string","!doc":"

Template method for overriding params

\n"},"setupUrl":{"!type":"fn(options: ?, url: string) -> string","!doc":"

Template method for overriding url

\n"},"upload":{"!type":"fn(form: string|+HTMLElement|+Ext.Element, url: string, params: string, options: ?) -> !this","!doc":"

Uploads a form using a hidden iframe.

\n"},"beforerequest":{"!type":"fn(conn: +Ext.data.Connection, options: ?, eOpts: ?)","!doc":"

Fires before a network request is made to retrieve a data object.

\n"},"requestcomplete":{"!type":"fn(conn: +Ext.data.Connection, response: ?, options: ?, eOpts: ?)","!doc":"

Fires if the request was successfully completed.

\n"},"requestexception":{"!type":"fn(conn: +Ext.data.Connection, response: ?, options: ?, eOpts: ?)","!doc":"

Fires if an error HTTP status was returned from the server. This event may also\nbe listened to in the event that a request has timed out or has been aborted.\nSee HTTP Status Code Definitions\nfor details of HTTP status codes.

\n"}},"requestId":{"!type":"number"}},"DirectStore":{"!doc":"

Small helper class to create an Ext.data.Store configured with an Ext.data.proxy.Direct\nand Ext.data.reader.Json to make interacting with an Ext.direct.Manager server-side\nProvider easier. To create a different proxy/reader combination create a basic\nExt.data.Store configured as needed.

\n\n

Note: Although they are not listed, this class inherits all of the config options of:

\n\n\n\n","!type":"fn(config: Ext_data_DirectStore_cfg)","prototype":{"!proto":"Ext.data.Store.prototype"}},"Errors":{"!doc":"

Wraps a collection of validation error responses and provides convenient functions for\naccessing and errors for specific fields.

\n\n\n\n\n

Usually this class does not need to be instantiated directly - instances are instead created\nautomatically when validate on a model instance:

\n\n\n\n\n
//validate some existing model instance - in this case it returned 2 failures messages\nvar errors = myModel.validate();\n\nerrors.isValid(); //false\n\nerrors.length; //2\nerrors.getByField('name');  // [{field: 'name',  message: 'must be present'}]\nerrors.getByField('title'); // [{field: 'title', message: 'is too short'}]\n
\n\n","!type":"fn(config: Ext_data_Errors_cfg)","prototype":{"!proto":"Ext.util.MixedCollection.prototype","getByField":{"!type":"fn(fieldName: string) -> [?]","!doc":"

Returns all of the errors for the given field

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Returns true if there are no errors in the collection

\n"}}},"Field":{"!doc":"

Fields are used to define what a Model is. They aren't instantiated directly - instead, when we create a class that\nextends Ext.data.Model, it will automatically create a Field instance for each field configured in a Model. For example, we might set up a model like this:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        'name', 'email',\n        {name: 'age', type: 'int'},\n        {name: 'gender', type: 'string', defaultValue: 'Unknown'}\n    ]\n});\n
\n\n

Four fields will have been created for the User Model - name, email, age and gender. Note that we specified a couple\nof different formats here; if we only pass in the string name of the field (as with name and email), the field is set\nup with the 'auto' type. It's as if we'd done this instead:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'name', type: 'auto'},\n        {name: 'email', type: 'auto'},\n        {name: 'age', type: 'int'},\n        {name: 'gender', type: 'string', defaultValue: 'Unknown'}\n    ]\n});\n
\n\n

Types and conversion

\n\n

The type is important - it's used to automatically convert data passed to the field into the correct format.\nIn our example above, the name and email fields used the 'auto' type and will just accept anything that is passed\ninto them. The 'age' field had an 'int' type however, so if we passed 25.4 this would be rounded to 25.

\n\n

Sometimes a simple type isn't enough, or we want to perform some processing when we load a Field's data. We can do\nthis using a convert function. Here, we're going to create a new field based on another:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {\n            name: 'firstName',\n            convert: function(value, record) {\n                var fullName  = record.get('name'),\n                    splits    = fullName.split(\" \"),\n                    firstName = splits[0];\n\n                return firstName;\n            }\n        },\n        'name', 'email',\n        {name: 'age', type: 'int'},\n        {name: 'gender', type: 'string', defaultValue: 'Unknown'}\n    ]\n});\n
\n\n

Now when we create a new User, the firstName is populated automatically based on the name:

\n\n
var ed = Ext.create('User', {name: 'Ed Spencer'});\n\nconsole.log(ed.get('firstName')); //logs 'Ed', based on our convert function\n
\n\n

Fields which are configured with a custom convert function are read after all other fields\nwhen constructing and reading records, so that if convert functions rely on other, non-converted fields\n(as in this example), they can be sure of those fields being present.

\n\n

In fact, if we log out all of the data inside ed, we'll see this:

\n\n
console.log(ed.data);\n\n//outputs this:\n{\n    age: 0,\n    email: \"\",\n    firstName: \"Ed\",\n    gender: \"Unknown\",\n    name: \"Ed Spencer\"\n}\n
\n\n

The age field has been given a default of zero because we made it an int type. As an auto field, email has defaulted\nto an empty string. When we registered the User model we set gender's defaultValue to 'Unknown' so we see\nthat now. Let's correct that and satisfy ourselves that the types work as we expect:

\n\n
ed.set('gender', 'Male');\ned.get('gender'); //returns 'Male'\n\ned.set('age', 25.4);\ned.get('age'); //returns 25 - we wanted an int, not a float, so no decimal places allowed\n
\n","!type":"fn(config: Ext_data_Field_cfg)","prototype":{"!proto":"Ext.Base.prototype","allowBlank":{"!type":"bool","!doc":"

Used for validating a model. Defaults to true. An empty value here will cause\nExt.data.Model.isValid to evaluate to false.

\n"},"convert":{"!type":"fn()","!doc":"

A function which converts the value provided by the Reader into an object that will be stored in the Model.

\n\n

If configured as null, then no conversion will be applied to the raw data property when this Field\nis read. This will increase performance. but you must ensure that the data is of the correct type and does\nnot need converting.

\n\n

It is passed the following parameters:

\n\n\n\n\n

Example of convert functions:

\n\n
function fullName(v, record){\n    return record.data.last + ', ' + record.data.first;\n}\n\nfunction location(v, record){\n    return !record.data.city ? '' : (record.data.city + ', ' + record.data.state);\n}\n\nExt.define('Dude', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'fullname',  convert: fullName},\n        {name: 'firstname', mapping: 'name.first'},\n        {name: 'lastname',  mapping: 'name.last'},\n        {name: 'city', defaultValue: 'homeless'},\n        'state',\n        {name: 'location',  convert: location}\n    ]\n});\n\n// create the data store\nvar store = Ext.create('Ext.data.Store', {\n    reader: {\n        type: 'json',\n        model: 'Dude',\n        idProperty: 'key',\n        root: 'daRoot',\n        totalProperty: 'total'\n    }\n});\n\nvar myData = [\n    { key: 1,\n      name: { first: 'Fat',    last:  'Albert' }\n      // notice no city, state provided in data object\n    },\n    { key: 2,\n      name: { first: 'Barney', last:  'Rubble' },\n      city: 'Bedrock', state: 'Stoneridge'\n    },\n    { key: 3,\n      name: { first: 'Cliff',  last:  'Claven' },\n      city: 'Boston',  state: 'MA'\n    }\n];\n
\n"},"dateFormat":{"!type":"string","!doc":"

Serves as a default for the dateReadFormat and dateWriteFormat config options. This\nwill be used in place of those other configurations if not specified.

\n\n

A format string for the Ext.Date.parse function, or \"timestamp\" if the value provided by\nthe Reader is a UNIX timestamp, or \"time\" if the value provided by the Reader is a javascript millisecond\ntimestamp. See Ext.Date.

\n\n

It is quite important to note that while this config is optional, it will default to using the base\nJavaScript Date object's parse function if not specified, rather than Ext.Date.parse.\nThis can cause unexpected issues, especially when converting between timezones, or when converting dates that\ndo not have a timezone specified. The behavior of the native Date.parse is implementation-specific, and\ndepending on the value of the date string, it might return the UTC date or the local date. For this reason\nit is strongly recommended that you always specify an explicit date format when parsing dates.

\n"},"dateReadFormat":{"!type":"string","!doc":"

Used when converting received data into a Date when the type is specified as \"date\".\nThis configuration takes precedence over dateFormat.\nSee dateFormat for more information.

\n"},"dateWriteFormat":{"!type":"string","!doc":"

Used to provide a custom format when serializing dates with a Ext.data.writer.Writer.\nIf this is not specified, the dateFormat will be used. See the Ext.data.writer.Writer\ndocs for more information on writing dates.

\n\n

Note that to use a JsonWriter to send Microsoft format \"JSON\" dates, which are in fact\ninvalid JSON, it is not possible to use the standard date serialization pathway or\nnative browser JSON production.

\n\n

To use a JsonWriter to write dates in a JSON packet in the form \"\\/Date(1357372800000)\\/\"\nconfigure the field like this:

\n\n

{\n type: 'date',\n dateFormat: 'MS', // To parse incoming dates from server correctly\n serialize: Ext.identityFn // An ExtJS-supplied function which returns the arg unchanged\n }

\n\n

Then override ExtJS's JSON date serialize function:

\n\n

Ext.JSON.encodeDate = function (d) {\n return '\"' + Ext.Date.format(d, 'MS') + '\"';\n };

\n"},"defaultValue":{"!type":"?","!doc":"

The default value used when the creating an instance from a raw data object, and the property referenced by the\nmapping does not exist in that data object.

\n\n

May be specified as undefined to prevent defaulting in a value.

\n"},"mapping":{"!type":"string|number","!doc":"

(Optional) A path expression for use by the Ext.data.reader.Reader implementation that is creating the\nModel to extract the Field value from the data object. If the path expression is the same\nas the field name, the mapping may be omitted.

\n\n

The form of the mapping expression depends on the Reader being used.

\n\n\n\n\n

If a more complex value extraction strategy is required, then configure the Field with a convert\nfunction. This is passed the whole row object, and may interrogate it in whatever way is necessary in order to\nreturn the desired data.

\n"},"name":{"!type":"string","!doc":"

The name by which the field is referenced within the Model. This is referenced by, for example, the dataIndex\nproperty in column definition objects passed to Ext.grid.property.HeaderContainer.

\n\n

Note: In the simplest case, if no properties other than name are required, a field definition may consist of\njust a String for the field name.

\n"},"persist":{"!type":"bool","!doc":"

False to exclude this field from the Ext.data.Model.modified fields in a model. This will also exclude\nthe field from being written using a Ext.data.writer.Writer. This option is useful when model fields are\nused to keep state on the client but do not need to be persisted to the server. Defaults to true.

\n"},"serialize":{"!type":"fn()","!doc":"

A function which converts the Model's value for this Field into a form which can be used by whatever Writer\nis being used to sync data with the server.

\n\n

The function should return a string which represents the Field's value.

\n\n

It is passed the following parameters:

\n\n\n\n"},"sortDir":{"!type":"string","!doc":"

Initial direction to sort (\"ASC\" or \"DESC\"). Defaults to \"ASC\".

\n"},"sortType":{"!type":"string|fn()","!doc":"

A function which converts a Field's value to a comparable value in order to ensure correct sort ordering.\nPredefined functions are provided in Ext.data.SortTypes. A custom sort example:

\n\n
// current sort     after sort we want\n// +-+------+          +-+------+\n// |1|First |          |1|First |\n// |2|Last  |          |3|Second|\n// |3|Second|          |2|Last  |\n// +-+------+          +-+------+\n\nsortType: function(value) {\n   switch (value.toLowerCase()) // native toLowerCase():\n   {\n      case 'first': return 1;\n      case 'second': return 2;\n      default: return 3;\n   }\n}\n
\n\n

May also be set to a String value, corresponding to one of the named sort types in Ext.data.SortTypes.

\n"},"type":{"!type":"string|?","!doc":"

The data type for automatic conversion from received data to the stored value if\nconvert has not been specified. This may be specified as a string value.\nPossible values are

\n\n\n\n\n

This may also be specified by referencing a member of the Ext.data.Types class.

\n\n

Developers may create their own application-specific data types by defining new members of the Ext.data.Types class.

\n"},"useNull":{"!type":"bool","!doc":"

Use when converting received data into a INT, FLOAT, BOOL or STRING type. If the value cannot be\nparsed, null will be used if useNull is true, otherwise a default value for that type will be used:

\n\n\n\n\n

Note that when parsing of DATE type fails, the value will be null regardless of this setting.

\n"},"isField":{"!type":"bool"}}},"Group":{"!type":"fn()","prototype":{"!proto":"Ext.util.Observable.prototype","dirty":{"!type":"bool"},"key":{"!type":"?"},"add":{"!type":"fn(records: ?) -> !this"},"commit":{"!type":"fn() -> !this"},"contains":{"!type":"fn(record: ?) -> !this"},"getAggregateRecord":{"!type":"fn(forceNew: ?) -> !this"},"hasAggregate":{"!type":"fn() -> !this"},"isCollapsed":{"!type":"fn() -> !this"},"isDirty":{"!type":"fn() -> !this"},"remove":{"!type":"fn(records: ?) -> !this"},"setDirty":{"!type":"fn() -> !this"}}},"IdGenerator":{"!doc":"

This class is a base for all id generators. It also provides lookup of id generators by\ntheir id.

\n\n

Generally, id generators are used to generate a primary key for new model instances. There\nare different approaches to solving this problem, so this mechanism has both simple use\ncases and is open to custom implementations. A Ext.data.Model requests id generation\nusing the Ext.data.Model.idgen property.

\n\n

Identity, Type and Shared IdGenerators

\n\n

It is often desirable to share IdGenerators to ensure uniqueness or common configuration.\nThis is done by giving IdGenerator instances an id property by which they can be looked\nup using the get method. To configure two Model classes\nto share one sequential id generator, you simply\nassign them the same id:

\n\n
Ext.define('MyApp.data.MyModelA', {\n    extend: 'Ext.data.Model',\n    idgen: {\n        type: 'sequential',\n        id: 'foo'\n    }\n});\n\nExt.define('MyApp.data.MyModelB', {\n    extend: 'Ext.data.Model',\n    idgen: {\n        type: 'sequential',\n        id: 'foo'\n    }\n});\n
\n\n

To make this as simple as possible for generator types that are shared by many (or all)\nModels, the IdGenerator types (such as 'sequential' or 'uuid') are also reserved as\ngenerator id's. This is used by the Ext.data.UuidGenerator which has an id equal\nto its type ('uuid'). In other words, the following Models share the same generator:

\n\n
Ext.define('MyApp.data.MyModelX', {\n    extend: 'Ext.data.Model',\n    idgen: 'uuid'\n});\n\nExt.define('MyApp.data.MyModelY', {\n    extend: 'Ext.data.Model',\n    idgen: 'uuid'\n});\n
\n\n

This can be overridden (by specifying the id explicitly), but there is no particularly\ngood reason to do so for this generator type.

\n\n

Creating Custom Generators

\n\n

An id generator should derive from this class and implement the generate method.\nThe constructor will apply config properties on new instances, so a constructor is often\nnot necessary.

\n\n

To register an id generator type, a derived class should provide an alias like so:

\n\n
Ext.define('MyApp.data.CustomIdGenerator', {\n    extend: 'Ext.data.IdGenerator',\n    alias: 'idgen.custom',\n\n    configProp: 42, // some config property w/default value\n\n    generate: function () {\n        return ... // a new id\n    }\n});\n
\n\n

Using the custom id generator is then straightforward:

\n\n
Ext.define('MyApp.data.MyModel', {\n    extend: 'Ext.data.Model',\n    idgen: 'custom'\n});\n// or...\n\nExt.define('MyApp.data.MyModel', {\n    extend: 'Ext.data.Model',\n    idgen: {\n        type: 'custom',\n        configProp: value\n    }\n});\n
\n\n

It is not recommended to mix shared generators with generator configuration. This leads\nto unpredictable results unless all configurations match (which is also redundant). In\nsuch cases, a custom generator with a default id is the best approach.

\n\n
Ext.define('MyApp.data.CustomIdGenerator', {\n    extend: 'Ext.data.SequentialIdGenerator',\n    alias: 'idgen.custom',\n\n    id: 'custom', // shared by default\n\n    prefix: 'ID_',\n    seed: 1000\n});\n\nExt.define('MyApp.data.MyModelX', {\n    extend: 'Ext.data.Model',\n    idgen: 'custom'\n});\n\nExt.define('MyApp.data.MyModelY', {\n    extend: 'Ext.data.Model',\n    idgen: 'custom'\n});\n\n// the above models share a generator that produces ID_1000, ID_1001, etc..\n
\n","!type":"fn(config?: Ext_data_IdGenerator_cfg)","prototype":{"!proto":"Ext.Base.prototype","id":{"!type":"string","!doc":"

The id by which to register a new instance. This instance can be found using the\nget static method.

\n"},"isGenerator":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated IdGenerator, or subclass thereof.

\n"},"generate":{"!type":"fn() -> string","!doc":"

Generates and returns the next id. This method must be implemented by the derived\nclass.

\n"}},"all":{"!type":"?","!doc":"

This object is keyed by id to lookup instances.

\n"},"get":{"!type":"fn(config: string|?) -> !this","!doc":"

Returns the IdGenerator given its config description.

\n"}},"JsonP":{"!doc":"

This class is used to create JSONP requests. JSONP is a mechanism that allows for making\nrequests for data cross domain. More information is available here.

\n","callbackKey":{"!type":"string","!doc":"

Specifies the GET parameter that will be sent to the server containing the function name to be executed when\nthe request completes. Defaults to callback. Thus, a common request will be in the form of\nurl?callback=Ext.data.JsonP.callback1

\n"},"disableCaching":{"!type":"bool","!doc":"

True to add a unique cache-buster param to requests. Defaults to true.

\n"},"disableCachingParam":{"!type":"string","!doc":"

Change the parameter which is sent went disabling caching through a cache buster. Defaults to '_dc'.

\n"},"requestCount":{"!type":"number","!doc":"

Number of requests done so far.

\n"},"requests":{"!type":"?","!doc":"

Hash of pending requests.

\n"},"timeout":{"!type":"number","!doc":"

A default timeout for any JsonP requests. If the request has not completed in this time the\nfailure callback will be fired. The timeout is in ms. Defaults to 30000.

\n"},"abort":{"!type":"fn(request?: ?|string) -> !this","!doc":"

Abort a request. If the request parameter is not specified all open requests will\nbe aborted.

\n"},"cleanupErrorHandling":{"!type":"fn(request: ?) -> !this","!doc":"

Cleans up anu script handling errors

\n"},"createScript":{"!type":"fn(url: string, params: ?, options: ?) -> !this","!doc":"

Create the script tag given the specified url, params and options. The options\nparameter is passed to allow an override to access it.

\n"},"handleAbort":{"!type":"fn(request: ?) -> !this","!doc":"

Handles any aborts when loading the script

\n"},"handleError":{"!type":"fn(request: ?) -> !this","!doc":"

Handles any script errors when loading the script

\n"},"handleResponse":{"!type":"fn(result: ?, request: ?) -> !this","!doc":"

Handle a successful response

\n"},"handleTimeout":{"!type":"fn(request: ?) -> !this","!doc":"

Handle any script timeouts

\n"},"loadScript":{"!type":"fn(request: ?) -> !this","!doc":"

Loads the script for the given request by appending it to the HEAD element. This is\nits own method so that users can override it (as well as createScript).

\n"},"request":{"!type":"fn(options: ?) -> ?","!doc":"

Makes a JSONP request.

\n"},"setupErrorHandling":{"!type":"fn(request: ?) -> !this","!doc":"

Sets up error handling for the script

\n"}},"JsonPStore":{"!doc":"

Small helper class to make creating Ext.data.Stores from different domain JSON data easier.\nA JsonPStore will be automatically configured with a Ext.data.reader.Json and a JsonPProxy.

\n\n\n

A store configuration would be something like:\n

var store = new Ext.data.JsonPStore({\n    // store configs\n    storeId: 'myStore',\n\n    // proxy configs\n    url: 'get-images.php',\n\n    // reader configs\n    root: 'images',\n    idProperty: 'name',\n    fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date'}]\n});\n

\n\n\n

This store is configured to consume a returned object of the form:\n

stcCallback({\n    images: [\n        {name: 'Image one', url:'/GetImage.php?id=1', size:46.5, lastmod: new Date(2007, 10, 29)},\n        {name: 'Image Two', url:'/GetImage.php?id=2', size:43.2, lastmod: new Date(2007, 10, 30)}\n    ]\n})\n
\n

Where stcCallback is the callback name passed in the request to the remote domain. See JsonPProxy\nfor details of how this works.

\nAn object literal of this form could also be used as the data config option.

\n\n","!type":"fn(config: Ext_data_JsonPStore_cfg)","prototype":{"!proto":"Ext.data.Store.prototype"}},"JsonStore":{"!doc":"

Small helper class to make creating Ext.data.Stores from JSON data easier.\nA JsonStore will be automatically configured with a Ext.data.reader.Json.

\n\n

A store configuration would be something like:

\n\n
var store = new Ext.data.JsonStore({\n    // store configs\n    storeId: 'myStore',\n\n    proxy: {\n        type: 'ajax',\n        url: 'get-images.php',\n        reader: {\n            type: 'json',\n            root: 'images',\n            idProperty: 'name'\n        }\n    },\n\n    //alternatively, a Ext.data.Model name can be given (see Ext.data.Store for an example)\n    fields: ['name', 'url', {name:'size', type: 'float'}, {name:'lastmod', type:'date'}]\n});\n
\n\n

This store is configured to consume a returned object of the form:

\n\n
{\n    images: [\n        {name: 'Image one', url:'/GetImage.php?id=1', size:46.5, lastmod: new Date(2007, 10, 29)},\n        {name: 'Image Two', url:'/GetImage.php?id=2', size:43.2, lastmod: new Date(2007, 10, 30)}\n    ]\n}\n
\n\n

An object literal of this form could also be used as the data config option.

\n","!type":"fn(config: Ext_data_JsonStore_cfg)","prototype":{"!proto":"Ext.data.Store.prototype"}},"Model":{"!doc":"

A Model represents some object that your application manages. For example, one might define a Model for Users,\nProducts, Cars, or any other real-world object that we want to model in the system. Models are registered via the\nmodel manager, and are used by stores, which are in turn used by many\nof the data-bound components in Ext.

\n\n

Models are defined as a set of fields and any arbitrary methods and properties relevant to the model. For example:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'name',  type: 'string'},\n        {name: 'age',   type: 'int', convert: null},\n        {name: 'phone', type: 'string'},\n        {name: 'alive', type: 'boolean', defaultValue: true, convert: null}\n    ],\n\n    changeName: function() {\n        var oldName = this.get('name'),\n            newName = oldName + \" The Barbarian\";\n\n        this.set('name', newName);\n    }\n});\n
\n\n

The fields array is turned into a MixedCollection automatically by the ModelManager, and all other functions and properties are copied to the new Model's prototype.

\n\n

A Model definition always has an identifying field which should yield a unique key for each instance. By default, a field\nnamed \"id\" will be created with a mapping of \"id\". This happens because of the default\nidProperty provided in Model definitions.

\n\n

To alter which field is the identifying field, use the idProperty config.

\n\n

If the Model should not have any identifying field (for example if you are defining ab abstract base class for your\napplication models), configure the {@liknk idProperty} as null.

\n\n

By default, the built in numeric and boolean field types have a Ext.data.Field.convert function which coerces string\nvalues in raw data into the field's type. For better performance with Json or Array\nreaders if you are in control of the data fed into this Model, you can null out the default convert function which will cause\nthe raw property to be copied directly into the Field's value.

\n\n

Now we can create instances of our User model and call any model logic we defined:

\n\n
var user = Ext.create('User', {\n    id   : 'ABCD12345',\n    name : 'Conan',\n    age  : 24,\n    phone: '555-555-5555'\n});\n\nuser.changeName();\nuser.get('name'); //returns \"Conan The Barbarian\"\n
\n\n

Validations

\n\n

Models have built-in support for validations, which are executed against the validator functions in Ext.data.validations (see all validation functions). Validations are easy to add to\nmodels:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'name',     type: 'string'},\n        {name: 'age',      type: 'int'},\n        {name: 'phone',    type: 'string'},\n        {name: 'gender',   type: 'string'},\n        {name: 'username', type: 'string'},\n        {name: 'alive',    type: 'boolean', defaultValue: true}\n    ],\n\n    validations: [\n        {type: 'presence',  field: 'age'},\n        {type: 'length',    field: 'name',     min: 2},\n        {type: 'inclusion', field: 'gender',   list: ['Male', 'Female']},\n        {type: 'exclusion', field: 'username', list: ['Admin', 'Operator']},\n        {type: 'format',    field: 'username', matcher: /([a-z]+)[0-9]{2,3}/}\n    ]\n});\n
\n\n

The validations can be run by simply calling the validate function, which returns a Ext.data.Errors\nobject:

\n\n
var instance = Ext.create('User', {\n    name: 'Ed',\n    gender: 'Male',\n    username: 'edspencer'\n});\n\nvar errors = instance.validate();\n
\n\n

Associations

\n\n

Models can have associations with other Models via Ext.data.association.HasOne,\nbelongsTo and hasMany associations.\nFor example, let's say we're writing a blog administration application which deals with Users, Posts and Comments.\nWe can express the relationships between these models like this:

\n\n
Ext.define('Post', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'user_id'],\n\n    belongsTo: 'User',\n    hasMany  : {model: 'Comment', name: 'comments'}\n});\n\nExt.define('Comment', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'user_id', 'post_id'],\n\n    belongsTo: 'Post'\n});\n\nExt.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id'],\n\n    hasMany: [\n        'Post',\n        {model: 'Comment', name: 'comments'}\n    ]\n});\n
\n\n

See the docs for Ext.data.association.HasOne, Ext.data.association.BelongsTo and\nExt.data.association.HasMany for details on the usage and configuration of associations.\nNote that associations can also be specified like this:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id'],\n\n    associations: [\n        {type: 'hasMany', model: 'Post',    name: 'posts'},\n        {type: 'hasMany', model: 'Comment', name: 'comments'}\n    ]\n});\n
\n\n

Using a Proxy

\n\n

Models are great for representing types of data and relationships, but sooner or later we're going to want to load or\nsave that data somewhere. All loading and saving of data is handled via a Proxy, which\ncan be set directly on the Model:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email'],\n\n    proxy: {\n        type: 'rest',\n        url : '/users'\n    }\n});\n
\n\n

Here we've set up a Rest Proxy, which knows how to load and save data to and from a\nRESTful backend. Let's see how this works:

\n\n
var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});\n\nuser.save(); //POST /users\n
\n\n

Calling save on the new Model instance tells the configured RestProxy that we wish to persist this Model's\ndata onto our server. RestProxy figures out that this Model hasn't been saved before because it doesn't have an id,\nand performs the appropriate action - in this case issuing a POST request to the url we configured (/users). We\nconfigure any Proxy on any Model and always follow this API - see Ext.data.proxy.Proxy for a full list.

\n\n

Loading data via the Proxy is equally easy:

\n\n
//get a reference to the User model class\nvar User = Ext.ModelManager.getModel('User');\n\n//Uses the configured RestProxy to make a GET request to /users/123\nUser.load(123, {\n    success: function(user) {\n        console.log(user.getId()); //logs 123\n    }\n});\n
\n\n

Models can also be updated and destroyed easily:

\n\n
//the user Model we loaded in the last snippet:\nuser.set('name', 'Edward Spencer');\n\n//tells the Proxy to save the Model. In this case it will perform a PUT request to /users/123 as this Model already has an id\nuser.save({\n    success: function() {\n        console.log('The User was updated');\n    }\n});\n\n//tells the Proxy to destroy the Model. Performs a DELETE request to /users/123\nuser.destroy({\n    success: function() {\n        console.log('The User was destroyed!');\n    }\n});\n
\n\n

Usage in Stores

\n\n

It is very common to want to load a set of Model instances to be displayed and manipulated in the UI. We do this by\ncreating a Store:

\n\n
var store = Ext.create('Ext.data.Store', {\n    model: 'User'\n});\n\n//uses the Proxy we set up on Model to load the Store data\nstore.load();\n
\n\n

A Store is just a collection of Model instances - usually loaded from a server somewhere. Store can also maintain a\nset of added, updated and removed Model instances to be synchronized with the server via the Proxy. See the Store docs for more information on Stores.

\n","!type":"fn(data: ?)","prototype":{"!proto":"Ext.Base.prototype","associations":{"!type":"[?]","!doc":"

An array of associations for this model.

\n"},"belongsTo":{"!type":"string|?|[string]|[?]","!doc":"

One or more BelongsTo associations for this model.

\n"},"clientIdProperty":{"!type":"string","!doc":"

The name of a property that is used for submitting this Model's unique client-side identifier\nto the server when multiple phantom records are saved as part of the same Operation.\nIn such a case, the server response should include the client id for each record\nso that the server response data can be used to update the client-side records if necessary.\nThis property cannot have the same name as any of this Model's fields.

\n"},"defaultProxyType":{"!type":"string","!doc":"

The string type of the default Model Proxy. Defaults to 'ajax'.

\n"},"fields":{"!type":"+Ext.util.MixedCollection","!doc":"

A Collection of the fields defined for this Model (including fields defined in superclasses)

\n\n

This is a collection of Ext.data.Field instances, each of which encapsulates information that the field was configured with.\nBy default, you can specify a field as simply a String, representing the name of the field, but a Field encapsulates\ndata type, custom conversion of raw data, and a mapping\nproperty to specify by name of index, how to extract a field's value from a raw data object.

\n"},"hasMany":{"!type":"string|?|[string]|[?]","!doc":"

One or more HasMany associations for this model.

\n"},"idProperty":{"!type":"string|?|+Ext.data.Field","!doc":"

The name of the field treated as this Model's unique id. Defaults to 'id'.

\n\n

This may also be specified as a Field config object. This means that the identifying field can be calculated\nusing a convert function which might aggregate several values from the\nraw data object to use as an identifier.

\n\n

The resulting Field is added to the Model's field collection unless there is already\na configured field with a mapping that reads the same property.

\n\n

If defining an abstract base Model class, the idProperty may be configured as null which will mean that\nno identifying field will be generated.

\n"},"idgen":{"!type":"string|?","!doc":"

The id generator to use for this model. The default id generator does not generate\nvalues for the idProperty.

\n\n

This can be overridden at the model level to provide a custom generator for a model.\nThe simplest form of this would be:

\n\n
 Ext.define('MyApp.data.MyModel', {\n     extend: 'Ext.data.Model',\n     requires: ['Ext.data.SequentialIdGenerator'],\n     idgen: 'sequential',\n     ...\n });\n
\n\n

The above would generate sequential id's such\nas 1, 2, 3 etc..

\n\n

Another useful id generator is Ext.data.UuidGenerator:

\n\n
 Ext.define('MyApp.data.MyModel', {\n     extend: 'Ext.data.Model',\n     requires: ['Ext.data.UuidGenerator'],\n     idgen: 'uuid',\n     ...\n });\n
\n\n

An id generation can also be further configured:

\n\n
 Ext.define('MyApp.data.MyModel', {\n     extend: 'Ext.data.Model',\n     idgen: {\n         type: 'sequential',\n         seed: 1000,\n         prefix: 'ID_'\n     }\n });\n
\n\n

The above would generate id's such as ID_1000, ID_1001, ID_1002 etc..

\n\n

If multiple models share an id space, a single generator can be shared:

\n\n
 Ext.define('MyApp.data.MyModelX', {\n     extend: 'Ext.data.Model',\n     idgen: {\n         type: 'sequential',\n         id: 'xy'\n     }\n });\n\n Ext.define('MyApp.data.MyModelY', {\n     extend: 'Ext.data.Model',\n     idgen: {\n         type: 'sequential',\n         id: 'xy'\n     }\n });\n
\n\n

For more complex, shared id generators, a custom generator is the best approach.\nSee Ext.data.IdGenerator for details on creating custom id generators.

\n"},"persistenceProperty":{"!type":"string","!doc":"

The name of the property on this Persistable object that its data is saved to. Defaults to 'data'\n(i.e: all persistable data resides in this.data.)

\n"},"proxy":{"!type":"string|?|+Ext.data.proxy.Proxy","!doc":"

The proxy to use for this model.

\n"},"validations":{"!type":"[?]","!doc":"

An array of validations for this model.

\n"},"_singleProp":{"!type":"?","!doc":"

This object is used whenever the set() method is called and given a string as the\nfirst argument. This approach saves memory (and GC costs) since we could be called\na lot.

\n"},"dirty":{"!type":"bool","!doc":"

True if this Record has been modified.

\n"},"editing":{"!type":"bool","!doc":"

Internal flag used to track whether or not the model instance is currently being edited.

\n"},"emptyData":{"!type":"[?]","!doc":"

Used as a dummy source array when constructor is called with no args

\n"},"evented":{"!type":"bool"},"internalId":{"!type":"number|string","!doc":"

An internal unique ID for each Model instance, used to identify Models that don't have an ID yet

\n"},"isModel":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Model, or subclass thereof.

\n"},"modified":{"!type":"?","!doc":"

Key: value pairs of all fields whose values have changed

\n"},"phantom":{"!type":"bool","!doc":"

True when the record does not yet exist in a server-side database (see setDirty).\nAny record which has a real database pk set as its id property is NOT a phantom -- it's real.

\n"},"raw":{"!type":"?","!doc":"

The raw data used to create this model if created via a reader.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Store to which this instance belongs. NOTE: If this\ninstance is bound to multiple stores, this property will reference only the\nfirst. To examine all the stores, use the stores property instead.

\n"},"stores":{"!type":"[+Ext.data.Store]","!doc":"

The Stores to which this instance is bound.

\n"},"afterCommit":{"!type":"fn(modifiedFieldNames?: [string]) -> !this","!doc":"

If this Model instance has been joined to a store, the store's\nafterCommit method is called,

\n"},"afterEdit":{"!type":"fn(modifiedFieldNames?: [string]) -> !this","!doc":"

If this Model instance has been joined to a store, the store's\nafterEdit method is called.

\n"},"afterReject":{"!type":"fn() -> !this","!doc":"

If this Model instance has been joined to a store, the store's\nafterReject method is called.

\n"},"beginEdit":{"!type":"fn() -> !this","!doc":"

Begins an edit. While in edit mode, no events (e.g.. the update event) are relayed to the containing store.\nWhen an edit has begun, it must be followed by either endEdit or cancelEdit.

\n"},"callStore":{"!type":"fn(fn: string) -> !this","!doc":"

Helper function used by afterEdit, afterReject and afterCommit. Calls the given method on the\nstore that this instance has joined, if any. The store function\nwill always be called with the model instance as its single argument. If this model is joined to\na Ext.data.NodeStore, then this method calls the given method on the NodeStore and the associated Ext.data.TreeStore

\n"},"cancelEdit":{"!type":"fn() -> !this","!doc":"

Cancels all changes made in the current edit operation.

\n"},"changeId":{"!type":"fn(oldId: ?, newId: ?) -> !this"},"commit":{"!type":"fn(silent?: bool, modifiedFieldNames?: [string]) -> !this","!doc":"

Usually called by the Ext.data.Store which owns the model instance. Commits all changes made to the\ninstance since either creation or the last commit operation.

\n\n

Developers should subscribe to the Ext.data.Store.update event to have their code notified of commit\noperations.

\n"},"compareConvertFields":{"!type":"fn(f1: ?, f2: ?) -> !this"},"copy":{"!type":"fn(id?: string) -> +Ext.data.Model","!doc":"

Creates a copy (clone) of this Model instance.

\n"},"copyFrom":{"!type":"fn(sourceRecord: +Ext.data.Model) -> [string]","!doc":"

Copies data from the passed record into this record. If the passed record is undefined, does nothing.

\n\n

If this is a phantom record (represented only in the client, with no corresponding database entry), and\nthe source record is not a phantom, then this record acquires the id of the source record.

\n"},"destroy":{"!type":"fn(options: ?) -> +Ext.data.Model","!doc":"

Destroys the model using the configured proxy.

\n"},"endEdit":{"!type":"fn(silent?: bool, modifiedFieldNames?: [string]) -> !this","!doc":"

Ends an edit. If any data was modified, the containing store is notified\n(ie, the store's update event will fire).

\n"},"get":{"!type":"fn(fieldName: string) -> ?","!doc":"

Returns the value of the given field

\n"},"getAssociatedData":{"!type":"fn() -> ?","!doc":"

Gets all of the data from this Models loaded associations. It does this recursively - for example if we have a\nUser which hasMany Orders, and each Order hasMany OrderItems, it will return an object like this:

\n\n
{\n    orders: [\n        {\n            id: 123,\n            status: 'shipped',\n            orderItems: [\n                ...\n            ]\n        }\n    ]\n}\n
\n"},"getChanges":{"!type":"fn() -> ?","!doc":"

Gets a hash of only the fields that have been modified since this Model was created or commited.

\n"},"getData":{"!type":"fn(includeAssociated: bool) -> ?","!doc":"

Gets all values for each field in this model and returns an object\ncontaining the current data.

\n"},"getId":{"!type":"fn() -> number|string","!doc":"

Returns the unique ID allocated to this model instance as defined by idProperty.

\n"},"getModifiedFieldNames":{"!type":"fn(saved?: ?) -> [string]","!doc":"

Gets the names of all the fields that were modified during an edit

\n"},"getObservableId":{"!type":"fn() -> !this"},"getProxy":{"!type":"fn() -> +Ext.data.proxy.Proxy","!doc":"

Returns the configured Proxy for this Model.

\n"},"hasId":{"!type":"fn(id?: ?) -> bool","!doc":"

Checks if this model has an id assigned

\n"},"isEqual":{"!type":"fn(a: ?, b: ?) -> bool","!doc":"

Checks if two values are equal, taking into account certain\nspecial factors, for example dates.

\n"},"isModified":{"!type":"fn(fieldName: string) -> bool","!doc":"

Returns true if the passed field name has been modified since the load or last commit.

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Checks if the model is valid. See validate.

\n"},"itemNameFn":{"!type":"fn(item: ?) -> !this"},"join":{"!type":"fn(store: +Ext.data.Store) -> !this","!doc":"

Tells this model instance that it has been added to a store.

\n"},"markDirty":{"!type":"fn() -> !this","!doc":"

\n"},"onClassExtended":{"!type":"fn(cls: ?, data: ?, hooks: ?) -> !this"},"prepareAssociatedData":{"!type":"fn(seenKeys: ?, depth: number) -> ?","!doc":"

This complex-looking method takes a given Model instance and returns an object containing all data from\nall of that Model's loaded associations. See getAssociatedData

\n"},"reject":{"!type":"fn(silent?: bool) -> !this","!doc":"

Usually called by the Ext.data.Store to which this model instance has been joined. Rejects\nall changes made to the model instance since either creation, or the last commit operation. Modified fields are\nreverted to their original values.

\n\n

Developers should subscribe to the Ext.data.Store.update event to have their code notified of reject\noperations.

\n"},"save":{"!type":"fn(options?: ?) -> +Ext.data.Model","!doc":"

Saves the model instance using the configured proxy.

\n"},"set":{"!type":"fn(fieldName: string|?, newValue: ?) -> [string]","!doc":"

Sets the given field to the given value, marks the instance as dirty

\n"},"setDirty":{"!type":"fn() -> !this","!doc":"

Marks this Record as dirty. This method is used interally when adding phantom records\nto a writer enabled store.

\n\n

Marking a record dirty causes the phantom to be returned by Ext.data.Store.getUpdatedRecords\nwhere it will have a create action composed for it during model save operations.

\n"},"setId":{"!type":"fn(id: number|string) -> !this","!doc":"

Sets the model instance's id field to the given id.

\n"},"setProxy":{"!type":"fn(proxy: string|?|+Ext.data.proxy.Proxy) -> +Ext.data.proxy.Proxy","!doc":"

Sets the Proxy to use for this model. Accepts any options that can be accepted by\nExt.createByAlias.

\n"},"unjoin":{"!type":"fn(store: +Ext.data.Store) -> !this","!doc":"

Tells this model instance that it has been removed from the store.

\n"},"validate":{"!type":"fn() -> +Ext.data.Errors","!doc":"

Validates the current data against all of its configured validations.

\n"},"idchanged":{"!type":"fn(this: +Ext.data.Model, oldId: number|string, newId: number|string, eOpts: ?)","!doc":"

Fired when this model's id changes

\n"}},"AUTO_ID":{"!type":"number"},"COMMIT":{"!type":"string","!doc":"

The update operation of type 'commit'. Used by Store.update event.

\n"},"EDIT":{"!type":"string","!doc":"

The update operation of type 'edit'. Used by Store.update event.

\n"},"PREFIX":{"!type":"string"},"REJECT":{"!type":"string","!doc":"

The update operation of type 'reject'. Used by Store.update event.

\n"},"getFields":{"!type":"fn() -> [+Ext.data.Field]","!doc":"

Returns an Array of Field definitions which define this Model's structure

\n\n

Fields are sorted upon Model class definition. Fields with custom convert functions\nare moved to after fields with no convert functions. This is so that convert functions which rely on existing\nfield values will be able to read those field values.

\n"},"getProxy":{"!type":"fn() -> +Ext.data.proxy.Proxy","!doc":"

Returns the configured Proxy for this Model

\n"},"id":{"!type":"fn(rec: +Ext.data.Model) -> string","!doc":"

Generates a sequential id. This method is typically called when a record is created and no id has been specified either as a parameter, or through the idProperty\nin the passed data. The generated id will automatically be assigned to the\nrecord. The returned id takes the form: {PREFIX}-{AUTO_ID}.

\n\n\n\n"},"load":{"!type":"fn(id: number|string, config?: ?) -> !this","!doc":"

Asynchronously loads a model instance by id. Sample usage:

\n\n
Ext.define('MyApp.User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'id', type: 'int'},\n        {name: 'name', type: 'string'}\n    ]\n});\n\nMyApp.User.load(10, {\n    scope: this,\n    failure: function(record, operation) {\n        //do something if the load failed\n        //record is null\n    },\n    success: function(record, operation) {\n        //do something if the load succeeded\n    },\n    callback: function(record, operation, success) {\n        //do something whether the load succeeded or failed\n        //if operation is unsuccessful, record is null\n    }\n});\n
\n"},"setFields":{"!type":"fn(fields: ?, idProperty: ?, clientIdProperty: ?) -> !this","!doc":"

Apply a new set of field and/or property definitions to the existing model. This will replace any existing\nfields, including fields inherited from superclasses. Mainly for reconfiguring the\nmodel based on changes in meta data (called from Reader's onMetaChange method).

\n"},"setProxy":{"!type":"fn(proxy: string|?|+Ext.data.proxy.Proxy) -> +Ext.data.proxy.Proxy","!doc":"

Sets the Proxy to use for this model. Accepts any options that can be accepted by\nExt.createByAlias.

\n"}},"NodeInterface":{"!doc":"

This class is used as a set of methods that are applied to the prototype of a\nModel to decorate it with a Node API. This means that models used in conjunction with a tree\nwill have all of the tree related methods available on the model. In general this class will\nnot be used directly by the developer. This class also creates extra fields on the model if\nthey do not exist, to help maintain the tree state and UI. These fields are documented as\nconfig options.

\n","prototype":{"allowDrag":{"!type":"bool","!doc":"

Set to false to deny dragging of this node.

\n"},"allowDrop":{"!type":"bool","!doc":"

Set to false to deny dropping on this node.

\n"},"checked":{"!type":"bool","!doc":"

Set to true or false to show a checkbox alongside this node.

\n"},"children":{"!type":"[+Ext.data.NodeInterface]","!doc":"

Array of child nodes.

\n"},"cls":{"!type":"string","!doc":"

CSS class to apply for this node.

\n"},"depth":{"!type":"number","!doc":"

The number of parents this node has. A root node has depth 0, a child of it depth 1, and so on...

\n"},"expandable":{"!type":"bool","!doc":"

Set to true to allow for expanding/collapsing of this node.

\n"},"expanded":{"!type":"bool","!doc":"

True if the node is expanded.

\n"},"href":{"!type":"string","!doc":"

An URL for a link that's created when this config is specified.

\n"},"hrefTarget":{"!type":"string","!doc":"

Target for link. Only applicable when href also specified.

\n"},"icon":{"!type":"string","!doc":"

URL for this node's icon.

\n"},"iconCls":{"!type":"string","!doc":"

CSS class to apply for this node's icon.

\n"},"index":{"!type":"number","!doc":"

The position of the node inside its parent. When parent has 4 children and the node is third amongst them,\nindex will be 2.

\n"},"isFirst":{"!type":"fn() -> bool","!doc":"

Returns true if this node is the first child of its parent

\n"},"isLast":{"!type":"fn() -> bool","!doc":"

Returns true if this node is the last child of its parent

\n"},"leaf":{"!type":"bool","!doc":"

Set to true to indicate that this child can have no children. The expand icon/arrow will then not be\nrendered for this node.

\n"},"loaded":{"!type":"bool","!doc":"

True if the node has finished loading.

\n"},"loading":{"!type":"bool","!doc":"

True if the node is currently loading.

\n"},"parentId":{"!type":"string","!doc":"

ID of parent node.

\n"},"qshowDelay":{"!type":"number","!doc":"

Tooltip showDelay.

\n"},"qtip":{"!type":"string","!doc":"

Tooltip text to show on this node.

\n"},"qtitle":{"!type":"string","!doc":"

Tooltip title.

\n"},"root":{"!type":"bool","!doc":"

True if this is the root node.

\n"},"text":{"!type":"string","!doc":"

The text to show on node label.

\n"},"childNodes":{"!type":"[+Ext.data.NodeInterface]","!doc":"

An array of this nodes children. Array will be empty if this node has no chidren.

\n"},"firstChild":{"!type":"+Ext.data.NodeInterface","!doc":"

A reference to this node's first child node. null if this node has no children.

\n"},"isNode":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Node, or subclass thereof.

\n"},"lastChild":{"!type":"+Ext.data.NodeInterface","!doc":"

A reference to this node's last child node. null if this node has no children.

\n"},"nextSibling":{"!type":"+Ext.data.NodeInterface","!doc":"

A reference to this node's next sibling node. null if this node does not have a next sibling.

\n"},"parentNode":{"!type":"+Ext.data.NodeInterface","!doc":"

A reference to this node's parent node. null if this node is the root node.

\n"},"previousSibling":{"!type":"+Ext.data.NodeInterface","!doc":"

A reference to this node's previous sibling node. null if this node does not have a previous sibling.

\n"},"appendChild":{"!type":"fn(node: +Ext.data.NodeInterface|[+Ext.data.NodeInterface]|?, suppressEvents?: bool, commit?: bool) -> +Ext.data.NodeInterface","!doc":"

Inserts node(s) as the last child node of this node.

\n\n

If the node was previously a child node of another parent node, it will be removed from that node first.

\n"},"bubble":{"!type":"fn(fn: fn(), scope?: ?, args?: [?]) -> !this","!doc":"

Bubbles up the tree from this node, calling the specified function with each node. The arguments to the function\nwill be the args provided or the current node. If the function returns false at any point,\nthe bubble is stopped.

\n"},"cascadeBy":{"!type":"fn(fn: fn(), scope?: ?, args?: [?]) -> !this","!doc":"

Cascades down the tree from this node, calling the specified function with each node. The arguments to the function\nwill be the args provided or the current node. If the function returns false at any point,\nthe cascade is stopped on that branch.

\n"},"clear":{"!type":"fn(destroy?: bool) -> !this","!doc":"

Clears the node.

\n"},"collapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is collapsed.

\n"},"collapseChildren":{"!type":"fn(recursive?: fn(), callback?: fn(), scope?: ?) -> !this","!doc":"

Collapse all the children of this node.

\n"},"contains":{"!type":"fn(node: +Ext.data.NodeInterface) -> bool","!doc":"

Returns true if this node is an ancestor (at any point) of the passed node.

\n"},"copy":{"!type":"fn(id?: string, deep?: bool) -> +Ext.data.NodeInterface","!doc":"

Creates a copy (clone) of this Node.

\n"},"createNode":{"!type":"fn(node: ?) -> +Ext.data.NodeInterface","!doc":"

Ensures that the passed object is an instance of a Record with the NodeInterface applied

\n"},"destroy":{"!type":"fn(silent: ?) -> !this","!doc":"

Destroys the node.

\n"},"eachChild":{"!type":"fn(fn: fn(), scope?: ?, args?: [?]) -> !this","!doc":"

Interates the child nodes of this node, calling the specified function with each node. The arguments to the function\nwill be the args provided or the current node. If the function returns false at any point,\nthe iteration stops.

\n"},"expand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is expanded.

\n"},"expandChildren":{"!type":"fn(recursive?: bool, callback?: fn(), scope?: ?) -> !this","!doc":"

Expand all the children of this node.

\n"},"findChild":{"!type":"fn(attribute: string, value: ?, deep?: bool) -> +Ext.data.NodeInterface","!doc":"

Finds the first child that has the attribute with the specified value.

\n"},"findChildBy":{"!type":"fn(fn: fn(), scope?: ?, deep?: bool) -> +Ext.data.NodeInterface","!doc":"

Finds the first child by a custom function. The child matches if the function passed returns true.

\n"},"getChildAt":{"!type":"fn(index: number) -> +Ext.data.NodeInterface","!doc":"

Returns the child node at the specified index.

\n"},"getDepth":{"!type":"fn() -> number","!doc":"

Returns depth of this node (the root node has a depth of 0)

\n"},"getOwnerTree":{"!type":"fn() -> +Ext.tree.Panel","!doc":"

Returns the tree this node is in.

\n"},"getPath":{"!type":"fn(field?: string, separator?: string) -> string","!doc":"

Gets the hierarchical path from the root of the current node.

\n"},"hasChildNodes":{"!type":"fn() -> bool","!doc":"

Returns true if this node has one or more child nodes, else false.

\n"},"indexOf":{"!type":"fn(node: +Ext.data.NodeInterface) -> number","!doc":"

Returns the index of a child node

\n"},"indexOfId":{"!type":"fn(id: string) -> number","!doc":"

Returns the index of a child node that matches the id

\n"},"insertBefore":{"!type":"fn(node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface) -> +Ext.data.NodeInterface","!doc":"

Inserts the first node before the second node in this nodes childNodes collection.

\n"},"insertChild":{"!type":"fn(index: number, node: +Ext.data.NodeInterface) -> +Ext.data.NodeInterface","!doc":"

Inserts a node into this node.

\n"},"isAncestor":{"!type":"fn(node: +Ext.data.NodeInterface) -> bool","!doc":"

Returns true if the passed node is an ancestor (at any point) of this node.

\n"},"isExpandable":{"!type":"fn() -> bool","!doc":"

Returns true if this node has one or more child nodes, or if the expandable\nnode attribute is explicitly specified as true, otherwise returns false.

\n"},"isExpanded":{"!type":"fn() -> bool","!doc":"

Returns true if this node is expaned

\n"},"isLeaf":{"!type":"fn() -> bool","!doc":"

Returns true if this node is a leaf

\n"},"isLoaded":{"!type":"fn() -> bool","!doc":"

Returns true if this node is loaded

\n"},"isLoading":{"!type":"fn() -> bool","!doc":"

Returns true if this node is loading

\n"},"isRoot":{"!type":"fn() -> bool","!doc":"

Returns true if this node is the root node

\n"},"isVisible":{"!type":"fn() -> bool","!doc":"

Returns true if this node is visible. Note that visibility refers to\nthe structure of the tree, the Ext.tree.Panel.rootVisible\nconfiguration is not taken into account here. If this method is called\non the root node, it will always be visible.

\n"},"onChildNodesAvailable":{"!type":"fn(records: ?, recursive: ?, callback: ?, scope: ?) -> !this","!doc":"

Called as a callback from the beforeexpand listener fired by expand when the child nodes have been loaded and appended.

\n"},"remove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires when a child node is removed

\n"},"removeAll":{"!type":"fn(destroy?: bool) -> +Ext.data.NodeInterface","!doc":"

Removes all child nodes from this node.

\n"},"removeChild":{"!type":"fn(node: +Ext.data.NodeInterface, destroy?: bool) -> +Ext.data.NodeInterface","!doc":"

Removes a child node from this node.

\n"},"replaceChild":{"!type":"fn(newChild: +Ext.data.NodeInterface, oldChild: +Ext.data.NodeInterface) -> +Ext.data.NodeInterface","!doc":"

Replaces one child node in this node with another.

\n"},"serialize":{"!type":"fn() -> !this","!doc":"

Creates an object representation of this node including its children.

\n"},"setCollapsed":{"!type":"fn(recursive: ?) -> !this","!doc":"

Sets the node into the collapsed state without affecting the UI.

\n\n

This is called when a node is collapsed with the recursive flag. All the descendant\nnodes will have been removed from the store, but descendant non-leaf nodes still\nneed to be set to the collapsed state without affecting the UI.

\n"},"setFirstChild":{"!type":"fn(node: +Ext.data.NodeInterface) -> !this","!doc":"

Sets the first child of this node

\n"},"setLastChild":{"!type":"fn(node: +Ext.data.NodeInterface) -> !this","!doc":"

Sets the last child of this node

\n"},"sort":{"!type":"fn(this: +Ext.data.NodeInterface, childNodes: [+Ext.data.NodeInterface], eOpts: ?)","!doc":"

Fires when this node's childNodes are sorted.

\n"},"updateInfo":{"!type":"fn(commit: bool, info: ?) -> !this","!doc":"

Updates general data of this node like isFirst, isLast, depth. This\nmethod is internally called after a node is moved. This shouldn't\nhave to be called by the developer unless they are creating custom\nTree plugins.

\n"},"append":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when a new child node is appended

\n"},"beforeappend":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is appended, return false to cancel the append.

\n"},"beforecollapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is collapsed.

\n"},"beforeexpand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is expanded.

\n"},"beforeinsert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is inserted, return false to cancel the insert.

\n"},"beforemove":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires before this node is moved to a new location in the tree. Return false to cancel the move.

\n"},"beforeremove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires before a child is removed, return false to cancel the remove.

\n"},"insert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when a new child node is inserted.

\n"},"move":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when this node is moved to a new location in the tree

\n"}},"applyFields":{"!type":"fn(modelClass: ?, addFields: ?) -> !this"},"decorate":{"!type":"fn(modelClass: +Ext.Class|+Ext.data.Model) -> !this","!doc":"

This method allows you to decorate a Model's class to implement the NodeInterface.\nThis adds a set of methods, new events, new properties and new fields on every Record.

\n"},"getPrototypeBody":{"!type":"fn() -> !this"}},"NodeStore":{"!doc":"

Node Store

\n","!type":"fn(config: Ext_data_NodeStore_cfg)","prototype":{"!proto":"Ext.data.Store.prototype","node":{"!type":"+Ext.data.Model","!doc":"

The Record you want to bind this Store to. Note that\nthis record will be decorated with the Ext.data.NodeInterface if this is not the\ncase yet.

\n"},"recursive":{"!type":"bool","!doc":"

Set this to true if you want this NodeStore to represent\nall the descendents of the node in its flat data collection. This is useful for\nrendering a tree structure to a DataView and is being used internally by\nthe TreeView. Any records that are moved, removed, inserted or appended to the\nnode at any depth below the node this store is bound to will be automatically\nupdated in this Store's internal flat data structure.

\n"},"rootVisible":{"!type":"bool","!doc":"

False to not include the root node in this Stores collection.

\n"},"treeStore":{"!type":"+Ext.data.TreeStore","!doc":"

The TreeStore that is used by this NodeStore's Ext.tree.View.

\n"},"isExpandingOrCollapsing":{"!type":"number","!doc":"

Recursion level counter. Incremented when expansion or collaping of a node is initiated,\nincluding when nested nodes below the expanding/collapsing root begin expanding or collapsing.

\n\n

This ensures that collapsestart, collapsecomplete, expandstart and expandcomplete only\nfire on the top level node being collapsed/expanded.

\n\n

Also, allows listeners to the add and remove events to know whether a collapse of expand is in progress.

\n"},"isNodeStore":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated NodeStore, or subclass thereof.

\n"},"getTotalCount":{"!type":"fn() -> number","!doc":"

NodeStores are never buffered or paged. They are loaded from the TreeStore to reflect all visible\nnodes.\nBufferedRenderer always asks for the total count, so this must return the count.

\n"},"handleNodeExpand":{"!type":"fn(parent: ?, records: ?, toAdd: ?) -> !this","!doc":"

Collects child nodes to remove into the passed toRemove array.\nWhen available, all descendant nodes are pushed into that array using recursion.

\n"},"isVisible":{"!type":"fn(node: ?) -> !this"},"onBulkRemove":{"!type":"fn(parent: ?, childNodes: ?, isMove: ?) -> !this","!doc":"

Triggered by NodeInterface's bubbled bulkremove event

\n"},"onNodeAppend":{"!type":"fn(parent: ?, node: ?, index: ?) -> !this"},"onNodeCollapse":{"!type":"fn(parent: ?, records: ?, suppressEvent: ?, callback: ?, scope: ?) -> !this","!doc":"

Triggered by a NodeInterface's bubbled \"collapse\" event.

\n"},"onNodeExpand":{"!type":"fn(parent: ?, records: ?, suppressEvent: ?) -> !this","!doc":"

Triggered by a NodeInterface's bubbled \"expand\" event.

\n"},"onNodeInsert":{"!type":"fn(parent: ?, node: ?, refNode: ?) -> !this"},"onNodeRemove":{"!type":"fn(parent: ?, node: ?, isMove: ?) -> !this"},"onNodeSort":{"!type":"fn(node: ?, childNodes: ?) -> !this"},"setNode":{"!type":"fn(node: ?) -> !this"}}},"Operation":{"!doc":"

Represents a single read or write operation performed by a Proxy. Operation objects are\nused to enable communication between Stores and Proxies. Application developers should rarely need to interact with\nOperation objects directly.

\n\n

Several Operations can be batched together in a batch.

\n","!type":"fn(config?: Ext_data_Operation_cfg)","prototype":{"!proto":"Ext.Base.prototype","action":{"!type":"string","!doc":"

The action being performed by this Operation. Should be one of 'create', 'read', 'update' or 'destroy'.

\n"},"batch":{"!type":"+Ext.data.Batch","!doc":"

The batch that this Operation is a part of.

\n"},"callback":{"!type":"fn()","!doc":"

Function to execute when operation completed.

\n"},"filters":{"!type":"[+Ext.util.Filter]","!doc":"

Optional array of filter objects. Only applies to 'read' actions.

\n"},"groupers":{"!type":"[+Ext.util.Grouper]","!doc":"

Optional grouping configuration. Only applies to 'read' actions where grouping is desired.

\n"},"limit":{"!type":"number","!doc":"

The number of records to load. Used on 'read' actions when paging is being used.

\n"},"params":{"!type":"?","!doc":"

Parameters to pass along with the request when performing the operation.

\n"},"scope":{"!type":"?","!doc":"

Scope for the callback function.

\n"},"sorters":{"!type":"[+Ext.util.Sorter]","!doc":"

Optional array of sorter objects. Only applies to 'read' actions.

\n"},"start":{"!type":"number","!doc":"

The start index (offset), used in paging when running a 'read' action.

\n"},"synchronous":{"!type":"bool","!doc":"

True if this Operation is to be executed synchronously. This property is inspected by a\nBatch to see if a series of Operations can be executed in parallel or not.

\n"},"actionCommitRecordsRe":{"!type":"+RegExp","!doc":"

The RegExp used to categorize actions that require record commits.

\n"},"actionSkipSyncRe":{"!type":"+RegExp","!doc":"

The RegExp used to categorize actions that skip local record synchronization. This defaults\nto match 'destroy'.

\n"},"complete":{"!type":"bool","!doc":"

The completion status of this Operation. Use isComplete.

\n"},"error":{"!type":"string|?","!doc":"

The error object passed when setException was called. This could be any object or primitive.

\n"},"exception":{"!type":"bool","!doc":"

The exception status of this Operation. Use hasException and see getError.

\n"},"running":{"!type":"bool","!doc":"

The run status of this Operation. Use isRunning.

\n"},"started":{"!type":"bool","!doc":"

The start status of this Operation. Use isStarted.

\n"},"success":{"!type":"bool","!doc":"

Whether the Operation was successful or not. This starts as undefined and is set to true\nor false by the Proxy that is executing the Operation. It is also set to false by setException. Use\nwasSuccessful to query success status.

\n"},"allowWrite":{"!type":"fn() -> bool","!doc":"

Checks whether this operation should cause writing to occur.

\n"},"commitRecords":{"!type":"fn(serverRecords: [+Ext.data.Model]) -> !this","!doc":"

This method is called to commit data to this instance's records given the records in\nthe server response. This is followed by calling Ext.data.Model.commit on all\nthose records (for 'create' and 'update' actions).

\n\n

If this action is 'destroy', any server records are ignored and the\nExt.data.Model.commit method is not called.

\n"},"getError":{"!type":"fn() -> string|?","!doc":"

Returns the error string or object that was set using setException

\n"},"getRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Returns the records associated with this operation. For read operations the records as set by the Proxy will be returned (returns null if the proxy has not yet set the records).\nFor create, update, and destroy operations the operation's initially configured records will be returned, although the proxy may modify these records' data at some point after the operation is initialized.

\n"},"getResultSet":{"!type":"fn() -> +Ext.data.ResultSet","!doc":"

Returns the ResultSet object (if set by the Proxy). This object will contain the model\ninstances as well as meta data such as number of instances fetched, number available etc

\n"},"hasException":{"!type":"fn() -> bool","!doc":"

Returns true if this Operation encountered an exception (see also getError)

\n"},"isComplete":{"!type":"fn() -> bool","!doc":"

Returns true if the Operation has been completed

\n"},"isRunning":{"!type":"fn() -> bool","!doc":"

Returns true if the Operation has been started but has not yet completed.

\n"},"isStarted":{"!type":"fn() -> bool","!doc":"

Returns true if the Operation has been started. Note that the Operation may have started AND completed, see\nisRunning to test if the Operation is currently running.

\n"},"matchClientRec":{"!type":"fn(record: ?) -> !this","!doc":"

Private.\nRecord matching function used by commitRecords\nIMPORTANT: This is called in the scope of the clientRec being matched

\n"},"setBatch":{"!type":"fn(batch: +Ext.data.Batch) -> !this","!doc":"

Associates this Operation with a Batch

\n"},"setCompleted":{"!type":"fn() -> !this","!doc":"

Marks the Operation as completed.

\n"},"setException":{"!type":"fn(error?: string|?) -> !this","!doc":"

Marks the Operation as having experienced an exception. Can be supplied with an option error message/object.

\n"},"setStarted":{"!type":"fn() -> !this","!doc":"

Marks the Operation as started.

\n"},"setSuccessful":{"!type":"fn() -> !this","!doc":"

Marks the Operation as successful.

\n"},"updateRecord":{"!type":"fn(clientRec: ?, serverRec: ?) -> !this"},"wasSuccessful":{"!type":"fn() -> bool","!doc":"

Returns true if the Operation has completed and was successful

\n"}}},"PageMap":{"!doc":"

Private class for use by only Store when configured buffered: true.

\n","!type":"fn(config?: Ext_data_PageMap_cfg)","prototype":{"!proto":"Ext.util.LruCache.prototype","addAll":{"!type":"fn(records: ?) -> !this"},"addPage":{"!type":"fn(pageNumber: ?, records: ?) -> !this"},"clear":{"!type":"fn(initial: ?) -> +Ext.util.HashMap","!doc":"

Maintain a generation counter, so that the Store can reject incoming pages destined for the previous generation

\n"},"findBy":{"!type":"fn(fn: fn(), scope?: ?) -> ?","!doc":"

Returns the first record in this page map which elicits a true return value from the\npassed selection function.

\n\n

**IMPORTANT\nThis can ONLY find records which happen to be cached in the page cache. This will be parts of the dataset around the currently\nvisible zone, or recently visited zones if the pages have not yet been purged from the cache.

\n\n

This CAN NOT find records which have not been loaded into the cache.**

\n\n

If full client side searching is required, do not use a buffered store, instead use a regular, fully loaded store and\nuse the BufferedRenderer plugin to minimize DOM footprint.

\n"},"findIndexBy":{"!type":"fn(fn: fn(), scope?: ?) -> number","!doc":"

Returns the index in the whole dataset of the first record in this page map which elicits a true return value from the\npassed selection function.

\n\n

**IMPORTANT\nThis can ONLY find records which happen to be cached in the page cache. This will be parts of the dataset around the currently\nvisible zone, or recently visited zones if the pages have not yet been purged from the cache.

\n\n

This CAN NOT find records which have not been loaded into the cache.**

\n\n

If full client side searching is required, do not use a buffered store, instead use a regular, fully loaded store and\nuse the BufferedRenderer plugin to minimize DOM footprint.

\n"},"forEach":{"!type":"fn(fn: ?, scope: ?) -> !this"},"getAt":{"!type":"fn(index: ?) -> !this"},"getCount":{"!type":"fn() -> number","!doc":"

Gets the number of items in the hash.

\n"},"getPage":{"!type":"fn(pageNumber: ?) -> !this"},"getPageFromRecordIndex":{"!type":"fn() -> !this"},"getRange":{"!type":"fn(start: ?, end: ?) -> !this"},"hasPage":{"!type":"fn(pageNumber: ?) -> !this"},"hasRange":{"!type":"fn(start: ?, end: ?) -> !this"},"indexOf":{"!type":"fn(record: ?) -> !this"},"insert":{"!type":"fn() -> !this"},"remove":{"!type":"fn() -> bool","!doc":"

Remove an item from the hash.

\n"},"removeAt":{"!type":"fn() -> !this"}}},"Request":{"!doc":"

Simple class that represents a Request that will be made by any Ext.data.proxy.Server subclass.\nAll this class does is standardize the representation of a Request as used by any ServerProxy subclass,\nit does not contain any actual logic or perform the request itself.

\n","!type":"fn(config?: Ext_data_Request_cfg)","prototype":{"!proto":"Ext.Base.prototype","action":{"!type":"string","!doc":"

The name of the action this Request represents. Usually one of 'create', 'read', 'update' or 'destroy'.

\n"},"method":{"!type":"string","!doc":"

The HTTP method to use on this Request. Should be one of 'GET', 'POST', 'PUT' or 'DELETE'.

\n"},"params":{"!type":"?","!doc":"

HTTP request params. The Proxy and its Writer have access to and can modify this object.

\n"},"url":{"!type":"string","!doc":"

The url to access on this Request

\n"}}},"ResultSet":{"!doc":"

Simple wrapper class that represents a set of records returned by a Proxy.

\n","!type":"fn(config?: Ext_data_ResultSet_cfg)","prototype":{"!proto":"Ext.Base.prototype","count":{"!type":"number","!doc":"

The number of records in this ResultSet. Note that total may differ from this number.

\n"},"loaded":{"!type":"bool","!doc":"

True if the records have already been loaded. This is only meaningful when dealing with\nSQL-backed proxies.

\n"},"records":{"!type":"[+Ext.data.Model]","!doc":"

The array of record instances.

\n"},"success":{"!type":"bool","!doc":"

True if the ResultSet loaded successfully, false if any errors were encountered.

\n"},"total":{"!type":"number","!doc":"

The total number of records reported by the data source. This ResultSet may form a subset of\nthose records (see count).

\n"},"totalRecords":{"!type":"number","!doc":"

Copy of this.total.

\n"}}},"SequentialIdGenerator":{"!doc":"

This class is a sequential id generator. A simple use of this class would be like so:

\n\n
Ext.define('MyApp.data.MyModel', {\n    extend: 'Ext.data.Model',\n    idgen: 'sequential'\n});\n// assign id's of 1, 2, 3, etc.\n
\n\n

An example of a configured generator would be:

\n\n
Ext.define('MyApp.data.MyModel', {\n    extend: 'Ext.data.Model',\n    idgen: {\n        type: 'sequential',\n        prefix: 'ID_',\n        seed: 1000\n    }\n});\n// assign id's of ID_1000, ID_1001, ID_1002, etc.\n
\n","!type":"fn()","prototype":{"!proto":"Ext.data.IdGenerator.prototype","prefix":{"!type":"string","!doc":"

The string to place in front of the sequential number for each generated id. The\ndefault is blank.

\n"},"seed":{"!type":"number","!doc":"

The number at which to start generating sequential id's. The default is 1.

\n"},"generate":{"!type":"fn() -> string","!doc":"

Generates and returns the next id.

\n"}}},"SortTypes":{"!doc":"

This class defines a series of static methods that are used on a\nExt.data.Field for performing sorting. The methods cast the\nunderlying values into a data type that is appropriate for sorting on\nthat particular field. If a Ext.data.Field.type is specified,\nthe sortType will be set to a sane default if the sortType is not\nexplicitly defined on the field. The sortType will make any necessary\nmodifications to the value and return it.

\n\n\n\n\n

\nIt is also possible to create a custom sortType that can be used throughout\nan application.\n

Ext.apply(Ext.data.SortTypes, {\n    asPerson: function(person){\n        // expects an object with a first and last name property\n        return person.lastName.toUpperCase() + person.firstName.toLowerCase();\n    }    \n});\n\nExt.define('Employee', {\n    extend: 'Ext.data.Model',\n    fields: [{\n        name: 'person',\n        sortType: 'asPerson'\n    }, {\n        name: 'salary',\n        type: 'float' // sortType set to asFloat\n    }]\n});\n
\n

\n\n","stripTagsRE":{"!type":"+RegExp","!doc":"

The regular expression used to strip tags

\n"},"asDate":{"!type":"fn(s: ?) -> number","!doc":"

Date sorting

\n"},"asFloat":{"!type":"fn(s: ?) -> number","!doc":"

Float sorting

\n"},"asInt":{"!type":"fn(s: ?) -> number","!doc":"

Integer sorting

\n"},"asText":{"!type":"fn(s: ?) -> string","!doc":"

Strips all HTML tags to sort on text only

\n"},"asUCString":{"!type":"fn(s: ?) -> string","!doc":"

Case insensitive string

\n"},"asUCText":{"!type":"fn(s: ?) -> string","!doc":"

Strips all HTML tags to sort on text only - Case insensitive

\n"},"none":{"!type":"fn(s: ?) -> ?","!doc":"

Default sort that does nothing

\n"}},"Store":{"!doc":"

The Store class encapsulates a client side cache of Model objects. Stores load data via a\nProxy, and also provide functions for sorting, filtering\nand querying the model instances contained within it.

\n\n

Creating a Store is easy - we just tell it the Model and the Proxy to use for loading and saving its data:

\n\n
 // Set up a model to use in our Store\n Ext.define('User', {\n     extend: 'Ext.data.Model',\n     fields: [\n         {name: 'firstName', type: 'string'},\n         {name: 'lastName',  type: 'string'},\n         {name: 'age',       type: 'int'},\n         {name: 'eyeColor',  type: 'string'}\n     ]\n });\n\n var myStore = Ext.create('Ext.data.Store', {\n     model: 'User',\n     proxy: {\n         type: 'ajax',\n         url: '/users.json',\n         reader: {\n             type: 'json',\n             root: 'users'\n         }\n     },\n     autoLoad: true\n });\n
\n\n

In the example above we configured an AJAX proxy to load data from the url '/users.json'. We told our Proxy to use a\nJsonReader to parse the response from the server into Model object - see the docs on JsonReader for details.

\n\n

Inline data

\n\n

Stores can also load data inline. Internally, Store converts each of the objects we pass in as data into\nModel instances:

\n\n
 Ext.create('Ext.data.Store', {\n     model: 'User',\n     data : [\n         {firstName: 'Ed',    lastName: 'Spencer'},\n         {firstName: 'Tommy', lastName: 'Maintz'},\n         {firstName: 'Aaron', lastName: 'Conran'},\n         {firstName: 'Jamie', lastName: 'Avins'}\n     ]\n });\n
\n\n

Loading inline data using the method above is great if the data is in the correct format already (e.g. it doesn't\nneed to be processed by a reader). If your inline data requires processing to decode\nthe data structure, use a MemoryProxy instead (see the MemoryProxy docs for an example).

\n\n

Additional data can also be loaded locally using add.

\n\n

Dynamic Loading

\n\n

Stores can be dynamically updated by calling the load method:

\n\n
store.load({\n    params: {\n        group: 3,\n        type: 'user'\n    },\n    callback: function(records, operation, success) {\n        // do something after the load finishes\n    },\n    scope: this\n});\n
\n\n

Here a bunch of arbitrary parameters is passed along with the load request and a callback function is set\nup to do something after the loading is over.

\n\n

Loading Nested Data

\n\n

Applications often need to load sets of associated data - for example a CRM system might load a User and her Orders.\nInstead of issuing an AJAX request for the User and a series of additional AJAX requests for each Order, we can load\na nested dataset and allow the Reader to automatically populate the associated models. Below is a brief example, see\nthe Ext.data.reader.Reader intro docs for a full explanation:

\n\n
 var store = Ext.create('Ext.data.Store', {\n     autoLoad: true,\n     model: \"User\",\n     proxy: {\n         type: 'ajax',\n         url: 'users.json',\n         reader: {\n             type: 'json',\n             root: 'users'\n         }\n     }\n });\n
\n\n

Which would consume a response like this:

\n\n
 {\n     \"users\": [{\n         \"id\": 1,\n         \"name\": \"Ed\",\n         \"orders\": [{\n             \"id\": 10,\n             \"total\": 10.76,\n             \"status\": \"invoiced\"\n        },{\n             \"id\": 11,\n             \"total\": 13.45,\n             \"status\": \"shipped\"\n        }]\n     }]\n }\n
\n\n

See the Ext.data.reader.Reader intro docs for a full explanation.

\n\n

Filtering and Sorting

\n\n

Stores can be sorted and filtered - in both cases either remotely or locally. The sorters and\nfilters are held inside MixedCollection instances to make them easy to manage.\nUsually it is sufficient to either just specify sorters and filters in the Store configuration or call sort\nor filter:

\n\n
 var store = Ext.create('Ext.data.Store', {\n     model: 'User',\n     sorters: [{\n         property: 'age',\n         direction: 'DESC'\n     }, {\n         property: 'firstName',\n         direction: 'ASC'\n     }],\n\n     filters: [{\n         property: 'firstName',\n         value: /Ed/\n     }]\n });\n
\n\n

The new Store will keep the configured sorters and filters in the MixedCollection instances mentioned above. By\ndefault, sorting and filtering are both performed locally by the Store - see remoteSort and\nremoteFilter to allow the server to perform these operations instead.

\n\n

Filtering and sorting after the Store has been instantiated is also easy. Calling filter adds another filter\nto the Store and automatically filters the dataset (calling filter with no arguments simply re-applies all\nexisting filters). Note that by default sortOnFilter is set to true, which means that your sorters are\nautomatically reapplied if using local sorting.

\n\n
store.filter('eyeColor', 'Brown');\n
\n\n

Change the sorting at any time by calling sort:

\n\n
store.sort('height', 'ASC');\n
\n\n

Note that all existing sorters will be removed in favor of the new sorter data (if sort is called with no\narguments, the existing sorters are just reapplied instead of being removed). To keep existing sorters and add new\nones, just add them to the MixedCollection:

\n\n
store.sorters.add(new Ext.util.Sorter({\n    property : 'shoeSize',\n    direction: 'ASC'\n}));\n\nstore.sort();\n
\n\n

Registering with StoreManager

\n\n

Any Store that is instantiated with a storeId will automatically be registered with the StoreManager. This makes it easy to reuse the same store in multiple views:

\n\n
//this store can be used several times\nExt.create('Ext.data.Store', {\n    model: 'User',\n    storeId: 'usersStore'\n});\n\nnew Ext.List({\n    store: 'usersStore',\n    //other config goes here\n});\n\nnew Ext.view.View({\n    store: 'usersStore',\n    //other config goes here\n});\n
\n\n

Further Reading

\n\n

Stores are backed up by an ecosystem of classes that enables their operation. To gain a full understanding of these\npieces and how they fit together, see:

\n\n\n\n","!type":"fn(config?: Ext_data_Store_cfg)","prototype":{"!proto":"Ext.data.AbstractStore.prototype","autoDestroy":{"!type":"bool","!doc":"

When a Store is used by only one DataView, and should only exist for the lifetime of that view, then\nconfigure the autoDestroy flag as true. This causes the destruction of the view to trigger the destruction of its Store.

\n"},"buffered":{"!type":"bool","!doc":"

Allows the Store to prefetch and cache in a page cache, pages of Records, and to then satisfy\nloading requirements from this page cache.

\n\n

To use buffered Stores, initiate the process by loading the first page. The number of rows rendered are\ndetermined automatically, and the range of pages needed to keep the cache primed for scrolling is\nrequested and cached.\nExample:

\n\n
myStore.loadPage(1); // Load page 1\n
\n\n

A BufferedRenderer is instantiated which will monitor the scrolling in the grid, and\nrefresh the view's rows from the page cache as needed. It will also pull new data into the page\ncache when scrolling of the view draws upon data near either end of the prefetched data.

\n\n

The margins which trigger view refreshing from the prefetched data are Ext.grid.plugin.BufferedRenderer.numFromEdge,\nExt.grid.plugin.BufferedRenderer.leadingBufferZone and Ext.grid.plugin.BufferedRenderer.trailingBufferZone.

\n\n

The margins which trigger loading more data into the page cache are, leadingBufferZone and\ntrailingBufferZone.

\n\n

By default, only 5 pages of data are cached in the page cache, with pages \"scrolling\" out of the buffer\nas the view moves down through the dataset.\nSetting this value to zero means that no pages are ever scrolled out of the page cache, and\nthat eventually the whole dataset may become present in the page cache. This is sometimes desirable\nas long as datasets do not reach astronomical proportions.

\n\n

Selection state may be maintained across page boundaries by configuring the SelectionModel not to discard\nrecords from its collection when those Records cycle out of the Store's primary collection. This is done\nby configuring the SelectionModel like this:

\n\n
selModel: {\n    pruneRemoved: false\n}\n
\n"},"clearOnPageLoad":{"!type":"bool","!doc":"

True to empty the store when loading another page via loadPage,\nnextPage or previousPage. Setting to false keeps existing records, allowing\nlarge data sets to be loaded one page at a time but rendered all together.

\n"},"clearRemovedOnLoad":{"!type":"bool","!doc":"

true to clear anything in the removed record collection when the store loads.

\n"},"data":{"!type":"+Ext.util.MixedCollection|+Ext.data.Store.PageMap","!doc":"

When this Store is not buffered, the data property is a MixedCollection which holds this store's local cache of records.

\n\n

When this store is buffered, the data property is a cache of pages of records used to satisfy load requests from the Store when the associated view\nscrolls. Depending on how the buffer zone and purgePageCount are configured,\npages which are scrolled out of view may be evicted from the cache, and need to be re-requested from the server\nwhen scrolled back into view. For this reason, if using buffered, it is recommended that you configure\nyour Model definitions with a unique Ext.data.Model.idProperty so that records which return to the page\ncache may be matched against previously selected records.

\n\n

Pages in the direction of scroll are prefetched from the remote server and loaded into this cache before\nthey are needed based upon the buffer zone so that scrolling can proceed without visible pauses for data loading.

\n"},"groupDir":{"!type":"string","!doc":"

The direction in which sorting should be applied when grouping. Supported values are \"ASC\" and \"DESC\".

\n"},"groupField":{"!type":"string","!doc":"

The field by which to group data in the store. Internally, grouping is very similar to sorting - the\ngroupField and groupDir are injected as the first sorter (see sort). Stores support a single\nlevel of grouping, and groups can be fetched via the getGroups method.

\n"},"groupers":{"!type":"+Ext.util.MixedCollection","!doc":"

The collection of Groupers currently applied to this Store.

\n"},"leadingBufferZone":{"!type":"number","!doc":"

When buffered, the number of extra rows to keep cached on the leading side of scrolling buffer\nas scrolling proceeds. A larger number means fewer replenishments from the server.

\n"},"pageSize":{"!type":"number","!doc":"

The number of records considered to form a 'page'. This is used to power the built-in\npaging using the nextPage and previousPage functions when the grid is paged using a\nPagingToolbar Defaults to 25.

\n\n

If this Store is buffered, pages are loaded into a page cache before the Store's\ndata is updated from the cache. The pageSize is the number of rows loaded into the cache in one request.\nThis will not affect the rendering of a buffered grid, but a larger page size will mean fewer loads.

\n\n

In a buffered grid, scrolling is monitored, and the page cache is kept primed with data ahead of the\ndirection of scroll to provide rapid access to data when scrolling causes it to be required. Several pages\nin advance may be requested depending on various parameters.

\n\n

It is recommended to tune the pageSize, trailingBufferZone and\nleadingBufferZone configurations based upon the conditions pertaining in your deployed application.

\n\n

The provided SDK example examples/grid/infinite-scroll-grid-tuner.html can be used to experiment with\ndifferent settings including simulating Ajax latency.

\n"},"proxy":{"!type":"string|+Ext.data.proxy.Proxy|?","!doc":"

The Proxy to use for this Store. This can be either a string, a config object or a Proxy instance -\nsee setProxy for details.

\n"},"purgePageCount":{"!type":"number","!doc":"

Valid only when used with a buffered Store.

\n\n

The number of pages additional to the required buffered range to keep in the prefetch cache before purging least recently used records.

\n\n

For example, if the height of the view area and the configured trailingBufferZone and leadingBufferZone require that there\nare three pages in the cache, then a purgePageCount of 5 ensures that up to 8 pages can be in the page cache any any one time.

\n\n

A value of 0 indicates to never purge the prefetched data.

\n"},"remoteFilter":{"!type":"bool","!doc":"

true if the grouping should be performed on the server side, false if it is local only.

\n\n

Buffered stores automatically set this to true. Buffered stores contain an abitrary\nsubset of the full dataset which depends upon various configurations and which pages have been requested\nfor rendering. Such sparse datasets are ineligible for local filtering.

\n"},"remoteGroup":{"!type":"bool","!doc":"

true if the grouping should apply on the server side, false if it is local only. If the\ngrouping is local, it can be applied immediately to the data. If it is remote, then it will simply act as a\nhelper, automatically sending the grouping information to the server.

\n\n

Buffered stores automatically set this to true. Buffered stores contain an abitrary\nsubset of the full dataset which depends upon various configurations and which pages have been requested\nfor rendering. Such sparse datasets are ineligible for local grouping.

\n"},"remoteSort":{"!type":"bool","!doc":"

true if the sorting should be performed on the server side, false if it is local only.

\n\n

Buffered stores automatically set this to true. Buffered stores contain an abitrary\nsubset of the full dataset which depends upon various configurations and which pages have been requested\nfor rendering. Such sparse datasets are ineligible for local sorting.

\n"},"sortOnFilter":{"!type":"bool","!doc":"

For local filtering only, causes sort to be called whenever filter is called,\ncausing the sorters to be reapplied after filtering.

\n"},"trailingBufferZone":{"!type":"number","!doc":"

When buffered, the number of extra records to keep cached on the trailing side of scrolling buffer\nas scrolling proceeds. A larger number means fewer replenishments from the server.

\n"},"addRecordsOptions":{"!type":"?","!doc":"

Private. Used as parameter to loadRecords

\n"},"currentPage":{"!type":"number","!doc":"

The page that the Store has most recently loaded (see loadPage)

\n"},"defaultPageSize":{"!type":"number"},"defaultViewSize":{"!type":"number","!doc":"

Number of records to load into a buffered grid before it has been bound to a view of known size

\n"},"loading":{"!type":"bool","!doc":"

true if the Store is currently loading via its Proxy.

\n"},"snapshot":{"!type":"+Ext.util.MixedCollection","!doc":"

A pristine (unfiltered) collection of the records in this store. This is used to reinstate\nrecords when a filter is removed or changed

\n"},"add":{"!type":"fn(model: [+Ext.data.Model]|+Ext.data.Model|[?]|?) -> [+Ext.data.Model]","!doc":"

Adds Model instance to the Store. This method accepts either:

\n\n\n\n\n

The new Model instances will be added at the end of the existing collection.

\n\n

Sample usage:

\n\n
myStore.add({some: 'data'}, {some: 'other data'});\n
\n\n

Note that if this Store is sorted, the new Model instances will be inserted\nat the correct point in the Store to maintain the sort order.

\n"},"addFilter":{"!type":"fn(filters: [?]|[+Ext.util.Filter], applyFilters?: bool) -> !this","!doc":"

Adds a new Filter to this Store's filter set and\nby default, applys the updated filter set to the Store's unfiltered dataset.

\n"},"addSorted":{"!type":"fn(record: +Ext.data.Record) -> !this","!doc":"

(Local sort only) Inserts the passed Record into the Store at the index where it\nshould go based on the current sort information.

\n"},"aggregate":{"!type":"fn(fn: fn(), scope?: ?, grouped?: bool, args?: [?]) -> ?","!doc":"

Runs the aggregate function for all the records in the store.

\n\n

When store is filtered, only items within the filter are aggregated.

\n"},"average":{"!type":"fn(field: string, grouped?: bool) -> ?","!doc":"

Gets the average value in the store.

\n\n

When store is filtered, only items within the filter are aggregated.

\n"},"cachePage":{"!type":"fn(records: [+Ext.data.Model], page: +Ext.data.Operation) -> !this","!doc":"

Caches the records in the prefetch and stripes them with their server-side\nindex.

\n"},"clearData":{"!type":"fn(isLoad: ?) -> !this","!doc":"

private

\n"},"clearFilter":{"!type":"fn(suppressEvent?: bool) -> !this","!doc":"

Reverts to a view of the Record cache with no filtering applied.

\n"},"clearGrouping":{"!type":"fn() -> !this","!doc":"

Clear any groupers in the store

\n"},"collect":{"!type":"fn(dataIndex: string, allowNull?: bool, bypassFilter?: bool) -> [?]","!doc":"

Collects unique values for a particular dataIndex from this store.

\n"},"commitChanges":{"!type":"fn() -> !this","!doc":"

Commits all Records with outstanding changes. To handle updates for changes,\nsubscribe to the Store's update event, and perform updating when the third parameter is\nExt.data.Record.COMMIT.

\n"},"constructGroups":{"!type":"fn() -> !this"},"count":{"!type":"fn(grouped?: bool) -> number","!doc":"

Gets the count of items in the store.

\n\n

When store is filtered, only items within the filter are counted.

\n"},"createFilterFn":{"!type":"fn(property: string, value: string|+RegExp, anyMatch?: bool, caseSensitive?: bool, exactMatch?: bool) -> !this","!doc":"

Returns a filter function used to test a the given property's value. Defers most of the work to\nExt.util.MixedCollection's createValueMatcher function.

\n"},"createModel":{"!type":"fn(record: +Ext.data.Model|?) -> +Ext.data.Model","!doc":"

Converts a literal to a model, if it's not a model already

\n"},"decodeGroupers":{"!type":"fn(groupers: [?]) -> [+Ext.util.Grouper]","!doc":"

Normalizes an array of grouper objects, ensuring that they are all Ext.util.Grouper instances

\n"},"doSort":{"!type":"fn(sorterFn: ?) -> !this","!doc":"

overriden to provide striping of the indexes as sorting occurs.\nthis cannot be done inside of sort because datachanged has already\nfired and will trigger a repaint of the bound view.

\n"},"each":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Calls the specified function for each record in the store.

\n\n

When store is filtered, only loops over the filtered records.

\n"},"filter":{"!type":"fn(filters?: [?]|[+Ext.util.Filter]|string, value?: string) -> !this","!doc":"

Filters the loaded set of records by a given set of filters.

\n\n

By default, the passed filter(s) are added to the collection of filters being used to filter this Store.

\n\n

To remove existing filters before applying a new set of filters use

\n\n
// Clear the filter collection without updating the UI\nstore.clearFilter(true);\n
\n\n

see clearFilter.

\n\n

Alternatively, if filters are configured with an id, then existing filters store may be replaced by new\nfilters having the same id.

\n\n

Filtering by single field:

\n\n
store.filter(\"email\", /\\.com$/);\n
\n\n

Using multiple filters:

\n\n
store.filter([\n    {property: \"email\", value: /\\.com$/},\n    {filterFn: function(item) { return item.get(\"age\") > 10; }}\n]);\n
\n\n

Using Ext.util.Filter instances instead of config objects\n(note that we need to specify the root config option in this case):

\n\n
store.filter([\n    Ext.create('Ext.util.Filter', {property: \"email\", value: /\\.com$/, root: 'data'}),\n    Ext.create('Ext.util.Filter', {filterFn: function(item) { return item.get(\"age\") > 10; }, root: 'data'})\n]);\n
\n\n

When store is filtered, most of the methods for accessing store data will be working only\nwithin the set of filtered records. Two notable exceptions are queryBy and\ngetById.

\n"},"filterBy":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Filters by a function. The specified function will be called for each\nRecord in this Store. If the function returns true the Record is included,\notherwise it is filtered out.

\n\n

When store is filtered, most of the methods for accessing store data will be working only\nwithin the set of filtered records. Two notable exceptions are queryBy and\ngetById.

\n"},"filterNewOnly":{"!type":"fn(item: ?) -> !this"},"find":{"!type":"fn(fieldName: string, value: string|+RegExp, startIndex?: number, anyMatch?: bool, caseSensitive?: bool, exactMatch?: bool) -> number","!doc":"

Finds the index of the first matching Record in this store by a specific field value.

\n\n

When store is filtered, finds records only within filter.

\n\n

**IMPORTANT

\n\n

If this store is buffered, this can ONLY find records which happen to be cached in the page cache.\nThis will be parts of the dataset around the currently visible zone, or recently visited zones if the pages\nhave not yet been purged from the cache.**

\n"},"findBy":{"!type":"fn(fn: fn(), scope?: ?, startIndex?: number) -> number","!doc":"

Find the index of the first matching Record in this Store by a function.\nIf the function returns true it is considered a match.

\n\n

When store is filtered, finds records only within filter.

\n\n

**IMPORTANT

\n\n

If this store is buffered, this can ONLY find records which happen to be cached in the page cache.\nThis will be parts of the dataset around the currently visible zone, or recently visited zones if the pages\nhave not yet been purged from the cache.**

\n"},"findExact":{"!type":"fn(fieldName: string, value: ?, startIndex?: number) -> number","!doc":"

Finds the index of the first matching Record in this store by a specific field value.

\n\n

When store is filtered, finds records only within filter.

\n\n

**IMPORTANT

\n\n

If this store is buffered, this can ONLY find records which happen to be cached in the page cache.\nThis will be parts of the dataset around the currently visible zone, or recently visited zones if the pages\nhave not yet been purged from the cache.**

\n"},"findRecord":{"!type":"fn(fieldName: string, value: string|+RegExp, startIndex?: number, anyMatch?: bool, caseSensitive?: bool, exactMatch?: bool) -> +Ext.data.Model","!doc":"

Finds the first matching Record in this store by a specific field value.

\n\n

When store is filtered, finds records only within filter.

\n\n

**IMPORTANT

\n\n

If this store is buffered, this can ONLY find records which happen to be cached in the page cache.\nThis will be parts of the dataset around the currently visible zone, or recently visited zones if the pages\nhave not yet been purged from the cache.**

\n"},"fireGroupChange":{"!type":"fn() -> !this","!doc":"

Fires the groupchange event. Abstracted out so we can use it\nas a callback

\n"},"first":{"!type":"fn(grouped?: bool) -> +Ext.data.Model|+undefined","!doc":"

Convenience function for getting the first model instance in the store.

\n\n

When store is filtered, will return first item within the filter.

\n"},"getAggregate":{"!type":"fn(fn: ?, scope: ?, records: ?, args: ?) -> !this"},"getAt":{"!type":"fn(index: number) -> +Ext.data.Model","!doc":"

Get the Record at the specified index.

\n\n

The index is effected by filtering.

\n"},"getAverage":{"!type":"fn(records: ?, field: ?) -> !this","!doc":"

, see average

\n"},"getById":{"!type":"fn(id: +Mixed) -> +Ext.data.Model","!doc":"

Get the Record with the specified id.

\n\n

This method is not effected by filtering, lookup will be performed from all records\ninside the store, filtered or not.

\n"},"getCount":{"!type":"fn() -> number","!doc":"

Gets the number of records in store.

\n\n

If using paging, this may not be the total size of the dataset. If the data object\nused by the Reader contains the dataset size, then the getTotalCount function returns\nthe dataset size. Note: see the Important note in load.

\n\n

When store is filtered, it's the number of records matching the filter.

\n"},"getGroupData":{"!type":"fn(sort?: bool) -> [?]","!doc":"

Returns records grouped by the configured grouper configuration. Sample return value (in\nthis case grouping by genre and then author in a fictional books dataset):

\n\n
[\n    {\n        name: 'Fantasy',\n        depth: 0,\n        records: [\n            //book1, book2, book3, book4\n        ],\n        children: [\n            {\n                name: 'Rowling',\n                depth: 1,\n                records: [\n                    //book1, book2\n                ]\n            },\n            {\n                name: 'Tolkein',\n                depth: 1,\n                records: [\n                    //book3, book4\n                ]\n            }\n        ]\n    }\n]\n
\n"},"getGroupField":{"!type":"fn() -> !this"},"getGroupString":{"!type":"fn(instance: +Ext.data.Model) -> string","!doc":"

Returns the string to group on for a given model instance. The default implementation of this method returns\nthe model's groupField, but this can be overridden to group by an arbitrary string. For example, to\ngroup by the first letter of a model's 'name' field, use the following code:

\n\n
Ext.create('Ext.data.Store', {\n    groupDir: 'ASC',\n    getGroupString: function(instance) {\n        return instance.get('name')[0];\n    }\n});\n
\n"},"getGroups":{"!type":"fn(groupName?: string) -> ?|[?]","!doc":"

Returns an array containing the result of applying grouping to the records in this store.\nSee groupField, groupDir and getGroupString. Example for a store\ncontaining records with a color field:

\n\n
var myStore = Ext.create('Ext.data.Store', {\n    groupField: 'color',\n    groupDir  : 'DESC'\n});\n\nmyStore.getGroups(); // returns:\n[\n    {\n        name: 'yellow',\n        children: [\n            // all records where the color field is 'yellow'\n        ]\n    },\n    {\n        name: 'red',\n        children: [\n            // all records where the color field is 'red'\n        ]\n    }\n]\n
\n\n

Group contents are effected by filtering.

\n"},"getGroupsForGrouper":{"!type":"fn(records: ?, grouper: ?) -> !this","!doc":"

For a given set of records and a Grouper, returns an array of arrays - each of which is the set of records\nmatching a certain group.

\n"},"getGroupsForGrouperIndex":{"!type":"fn(records: [+Ext.data.Model], grouperIndex: number) -> [?]","!doc":"

This is used recursively to gather the records into the configured Groupers. The data MUST have been sorted for\nthis to work properly (see getGroupData and getGroupsForGrouper) Most of the work is done by\ngetGroupsForGrouper - this function largely just handles the recursion.

\n"},"getMax":{"!type":"fn(records: ?, field: ?) -> !this","!doc":"

, see max

\n"},"getMin":{"!type":"fn(records: ?, field: ?) -> !this","!doc":"

, see min

\n"},"getNewRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

inherit docs

\n"},"getPageFromRecordIndex":{"!type":"fn(index: number) -> number","!doc":"

Determines the page from a record index

\n"},"getRange":{"!type":"fn(start: number, end: number, options?: ?) -> [+Ext.data.Model]","!doc":"

Gathers a range of Records between specified indices.

\n\n

If this store is buffered, the indices are relative to the entire dataset, not the local record cache.

\n\n

If this store is buffered, then the requested data range may not be immediately available, and will\nbe returned through a passed callback function.

\n\n

This method is affected by filtering.

\n"},"getRejectRecords":{"!type":"fn() -> !this","!doc":"

Ideally in the future this will use getModifiedRecords, where there will be a param\nto getNewRecords & getUpdatedRecords to indicate whether to get only the valid\nrecords or grab all of them

\n"},"getSum":{"!type":"fn(records: ?, field: ?) -> !this","!doc":"

, see sum

\n"},"getTotalCount":{"!type":"fn() -> number","!doc":"

Returns the total number of Model instances that the Proxy\nindicates exist. This will usually differ from getCount when using paging - getCount returns the\nnumber of records loaded into the Store at the moment, getTotalCount returns the number of records that\ncould be loaded into the Store if the Store contained all data

\n"},"getUpdatedRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

inherit docs

\n"},"group":{"!type":"fn(groupers: string|[?], direction?: string) -> !this","!doc":"

Groups data inside the store.

\n"},"guaranteeRange":{"!type":"fn(start: ?, end: ?, callback: ?, scope: ?, options: ?) -> !this","!doc":"

Guarantee a specific range, this will load the store with a range (that\nmust be the pageSize or smaller) and take care of any loading that may\nbe necessary.

\n"},"indexOf":{"!type":"fn(record: +Ext.data.Model) -> number","!doc":"

Get the index of the record within the store.

\n\n

When store is filtered, records outside of filter will not be found.

\n"},"indexOfId":{"!type":"fn(id: string) -> number","!doc":"

Get the index within the store of the Record with the passed id.

\n\n

Like indexOf, this method is effected by filtering.

\n"},"indexOfTotal":{"!type":"fn(record: +Ext.data.Model) -> number","!doc":"

Get the index within the entire dataset. From 0 to the totalCount.

\n\n

Like indexOf, this method is effected by filtering.

\n"},"insert":{"!type":"fn(index: number, records: [+Ext.data.Model]) -> [+Ext.data.Model]","!doc":"

Inserts Model instances into the Store at the given index and fires the add event.\nSee also add.

\n"},"isFiltered":{"!type":"fn() -> bool","!doc":"

Returns true if this store is currently filtered

\n"},"isGrouped":{"!type":"fn() -> bool","!doc":"

Checks if the store is currently grouped

\n"},"last":{"!type":"fn(grouped?: bool) -> +Ext.data.Model|+undefined","!doc":"

Convenience function for getting the last model instance in the store.

\n\n

When store is filtered, will return last item within the filter.

\n"},"load":{"!type":"fn(options?: ?|fn()) -> !this","!doc":"

Loads data into the Store via the configured proxy. This uses the Proxy to make an\nasynchronous call to whatever storage backend the Proxy uses, automatically adding the retrieved\ninstances into the Store and calling an optional callback if required. Example usage:

\n\n
store.load({\n    scope: this,\n    callback: function(records, operation, success) {\n        // the operation object\n        // contains all of the details of the load operation\n        console.log(records);\n    }\n});\n
\n\n

If the callback scope does not need to be set, a function can simply be passed:

\n\n
store.load(function(records, operation, success) {\n    console.log('loaded records');\n});\n
\n"},"loadData":{"!type":"fn(data: [+Ext.data.Model]|[?], append?: bool) -> !this","!doc":"

Loads an array of data straight into the Store.

\n\n

Using this method is great if the data is in the correct format already (e.g. it doesn't need to be\nprocessed by a reader). If your data requires processing to decode the data structure, use a\nMemoryProxy or loadRawData.

\n"},"loadPage":{"!type":"fn(page: number, options?: ?) -> !this","!doc":"

Loads a given 'page' of data by setting the start and limit values appropriately. Internally this just causes a normal\nload operation, passing in calculated 'start' and 'limit' params.

\n"},"loadRawData":{"!type":"fn(data: [?], append?: bool) -> !this","!doc":"

Loads data via the bound Proxy's reader

\n\n

Use this method if you are attempting to load data and want to utilize the configured data reader.

\n"},"loadRecords":{"!type":"fn(records: [+Ext.data.Model], options: ?) -> !this","!doc":"

Loads an array of model instances into the store, fires the datachanged event. This should only usually\nbe called internally when loading from the Proxy, when adding records manually use add instead

\n"},"loadToPrefetch":{"!type":"fn(options: ?) -> !this"},"max":{"!type":"fn(field: string, grouped?: bool) -> ?","!doc":"

Gets the maximum value in the store.

\n\n

When store is filtered, only items within the filter are aggregated.

\n"},"min":{"!type":"fn(field: string, grouped?: bool) -> ?","!doc":"

Gets the minimum value in the store.

\n\n

When store is filtered, only items within the filter are aggregated.

\n"},"nextPage":{"!type":"fn(options: ?) -> !this","!doc":"

Loads the next 'page' in the current data set

\n"},"onBeforeSort":{"!type":"fn() -> !this"},"onGuaranteedRange":{"!type":"fn(options: ?) -> !this","!doc":"

Handles a guaranteed range being loaded

\n"},"onIdChanged":{"!type":"fn(rec: ?, oldId: ?, newId: ?, oldInternalId: ?) -> !this"},"onPageMapClear":{"!type":"fn() -> !this","!doc":"

Cancels all pending prefetch requests.

\n\n

This is called when the page map is cleared.

\n\n

Any requests which still make it through will be for the previous pageMapGeneration\n(pageMapGeneration is incremented upon clear), and so will be rejected upon arrival.

\n"},"onProxyLoad":{"!type":"fn(operation: ?) -> !this","!doc":"

Called internally when a Proxy has completed a load request

\n"},"onProxyPrefetch":{"!type":"fn(operation: +Ext.data.Operation) -> !this","!doc":"

Called after the configured proxy completes a prefetch operation.

\n"},"onUpdate":{"!type":"fn(record: ?, type: ?, modifiedFieldNames: ?) -> !this"},"pageCached":{"!type":"fn(page: number) -> !this","!doc":"

Determines if the passed page is available in the page cache.

\n"},"pagePending":{"!type":"fn(page: number) -> !this","!doc":"

Determines if a request for a page is currently running

\n"},"prefetch":{"!type":"fn(this: +Ext.data.Store, records: [+Ext.data.Model], successful: bool, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires whenever records have been prefetched.

\n"},"prefetchPage":{"!type":"fn(page: number, options?: ?) -> !this","!doc":"

Prefetches a page of data.

\n"},"prefetchRange":{"!type":"fn(start: ?, end: ?) -> !this","!doc":"

Ensures that the specified range of rows is present in the cache.

\n\n

Converts the row range to a page range and then only load pages which are not already\npresent in the page cache.

\n"},"previousPage":{"!type":"fn(options: ?) -> !this","!doc":"

Loads the previous 'page' in the current data set

\n"},"primeCache":{"!type":"fn(start: ?, end: ?, direction: ?) -> !this"},"query":{"!type":"fn(property: string, value: string|+RegExp, anyMatch?: bool, caseSensitive?: bool, exactMatch?: bool) -> +Ext.util.MixedCollection","!doc":"

Query all the cached records in this Store by name/value pair.\nThe parameters will be used to generated a filter function that is given\nto the queryBy method.

\n\n

This method compliments queryBy by generating the query function automatically.

\n"},"queryBy":{"!type":"fn(fn: fn(), scope?: ?) -> +Ext.util.MixedCollection","!doc":"

Query all the cached records in this Store using a filtering function. The specified function\nwill be called with each record in this Store. If the function returns true the record is\nincluded in the results.

\n\n

This method is not effected by filtering, it will always look from all records inside the store\nno matter if filter is applied or not.

\n"},"rangeCached":{"!type":"fn(start: number, end: number) -> !this","!doc":"

Determines if the passed range is available in the page cache.

\n"},"rangeSatisfied":{"!type":"fn(start: number, end: number) -> bool","!doc":"

Determines if the passed range is available in the page cache.

\n"},"rejectChanges":{"!type":"fn() -> !this","!doc":"

Rejects outstanding changes on all modified records\nand re-insert any records that were removed locally. Any phantom records will be removed.

\n"},"reload":{"!type":"fn(options: ?) -> !this","!doc":"

Reloads the store using the last options passed to the load method.

\n"},"remove":{"!type":"fn(records: +Ext.data.Model|[+Ext.data.Model]|number|[number]) -> !this","!doc":"

Removes the specified record(s) from the Store, firing the remove event for each instance that is removed.

\n\n

A bulkremove event is called at the end passing all removed records and their indices.\nplus a single 'datachanged' event after removal.

\n"},"removeAll":{"!type":"fn(silent?: bool) -> !this","!doc":"

Removes all items from the store.

\n\n

Individual record remove events are not fired by this method.

\n"},"removeAt":{"!type":"fn(index: number, count?: number) -> !this","!doc":"

Removes the model instance(s) at the given index

\n"},"removeFilter":{"!type":"fn(toRemove: +Mixed, applyFilters?: bool) -> !this","!doc":"

Removes an individual Filter from the current filter set using the passed Filter/Filter id and\nby default, applys the updated filter set to the Store's unfiltered dataset.

\n"},"sort":{"!type":"fn() -> [+Ext.util.Sorter]","!doc":"

because prefetchData is stored by index\nthis invalidates all of the prefetchedData

\n"},"sum":{"!type":"fn(field: string, grouped?: bool) -> number","!doc":"

Sums the value of field for each record in store\nand returns the result.

\n\n

When store is filtered, only sums items within the filter.

\n"},"updateGroupsOnAdd":{"!type":"fn(records: ?) -> !this"},"updateGroupsOnRemove":{"!type":"fn(records: ?) -> !this"},"updateGroupsOnUpdate":{"!type":"fn(record: ?, modifiedFieldNames: ?) -> !this"},"beforeprefetch":{"!type":"fn(this: +Ext.data.Store, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires before a prefetch occurs. Return false to cancel.

\n"},"filterchange":{"!type":"fn(store: +Ext.data.Store, filters: [+Ext.util.Filter], eOpts: ?)","!doc":"

Fired whenever the filter set changes.

\n"},"groupchange":{"!type":"fn(store: +Ext.data.Store, groupers: [+Ext.util.Grouper], eOpts: ?)","!doc":"

Fired whenever the grouping in the grid changes.

\n"}},"groupIdFn":{"!type":"fn(group: ?) -> !this"},"grouperIdFn":{"!type":"fn(grouper: ?) -> !this"},"recordIdFn":{"!type":"fn(record: ?) -> !this"},"recordIndexFn":{"!type":"fn(record: ?) -> !this"}},"StoreManager":{"!doc":"

Contains a collection of all stores that are created that have an identifier. An identifier can be assigned by\nsetting the storeId property. When a store is in the StoreManager, it can be\nreferred to via it's identifier:

\n\n
Ext.create('Ext.data.Store', {\n    model: 'SomeModel',\n    storeId: 'myStore'\n});\n\nvar store = Ext.data.StoreManager.lookup('myStore');\n
\n\n

Also note that the lookup method is aliased to Ext.getStore for convenience.

\n\n

If a store is registered with the StoreManager, you can also refer to the store by it's identifier when registering\nit with any Component that consumes data from a store:

\n\n
Ext.create('Ext.data.Store', {\n    model: 'SomeModel',\n    storeId: 'myStore'\n});\n\nExt.create('Ext.view.View', {\n    store: 'myStore',\n    // other configuration here\n});\n
\n","!type":"fn(config: Ext_data_StoreManager_cfg)","prototype":{"!proto":"Ext.util.MixedCollection.prototype"},"listeners":{"!type":"?"},"getKey":{"!type":"fn(o: ?) -> ?","!doc":"

getKey implementation for MixedCollection

\n"},"lookup":{"!type":"fn(store: string|?) -> +Ext.data.Store","!doc":"

Gets a registered Store by id

\n"},"register":{"!type":"fn(stores: +Ext.data.Store) -> !this","!doc":"

Registers one or more Stores with the StoreManager. You do not normally need to register stores manually. Any\nstore initialized with a Ext.data.Store.storeId will be auto-registered.

\n"},"unregister":{"!type":"fn(stores: string|?) -> !this","!doc":"

Unregisters one or more Stores with the StoreManager

\n"}},"Tree":{"!doc":"

This class is used as a container for a series of nodes. The nodes themselves maintain\nthe relationship between parent/child. The tree itself acts as a manager. It gives functionality\nto retrieve a node by its identifier: getNodeById.

\n\n

The tree also relays events from any of it's child nodes, allowing them to be handled in a\ncentralized fashion. In general this class is not used directly, rather used internally\nby other parts of the framework.

\n","!type":"fn(root?: +Ext.data.NodeInterface)","prototype":{"!proto":"Ext.Base.prototype","root":{"!type":"+Ext.data.NodeInterface","!doc":"

The root node for this tree

\n"},"filter":{"!type":"fn(sorterFn: fn(), recursive: bool) -> !this","!doc":"

Filters this tree

\n"},"flatten":{"!type":"fn() -> [+Ext.data.NodeInterface]","!doc":"

Flattens all the nodes in the tree into an array.

\n"},"getNodeById":{"!type":"fn(id: string) -> +Ext.data.NodeInterface","!doc":"

Gets a node in this tree by its id.

\n"},"getRootNode":{"!type":"fn() -> +Ext.data.NodeInterface","!doc":"

Returns the root node for this tree.

\n"},"onNodeAppend":{"!type":"fn(parent: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface) -> !this","!doc":"

Fired when a node is appended into the root or one of it's children

\n"},"onNodeIdChanged":{"!type":"fn(node: +Ext.data.NodeInterface, oldId: number, newId: number) -> !this","!doc":"

Fired when a node's id changes. Updates the node's id in the node hash.

\n"},"onNodeInsert":{"!type":"fn(parent: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface) -> !this","!doc":"

Fired when a node is inserted into the root or one of it's children

\n"},"onNodeRemove":{"!type":"fn(parent: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface) -> !this","!doc":"

Fired when a node is removed from the root or one of it's children

\n"},"registerNode":{"!type":"fn(node: +Ext.data.NodeInterface, includeChildren?: bool) -> !this","!doc":"

Registers a node with the tree

\n"},"removeRootNode":{"!type":"fn() -> +Ext.data.NodeInterface","!doc":"

Removes the root node from this tree.

\n"},"setRootNode":{"!type":"fn(node: +Ext.data.NodeInterface) -> +Ext.data.NodeInterface","!doc":"

Sets the root node for this tree.

\n"},"sort":{"!type":"fn(this: +Ext.data.NodeInterface, childNodes: [+Ext.data.NodeInterface], eOpts: ?)","!doc":"

Fires when this node's childNodes are sorted.

\n"},"unregisterNode":{"!type":"fn(node: +Ext.data.NodeInterface, includeChildren?: bool) -> !this","!doc":"

Unregisters a node with the tree

\n"},"append":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when a new child node is appended

\n"},"beforeappend":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is appended, return false to cancel the append.

\n"},"beforecollapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is collapsed.

\n"},"beforeexpand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is expanded.

\n"},"beforeinsert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is inserted, return false to cancel the insert.

\n"},"beforemove":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires before this node is moved to a new location in the tree. Return false to cancel the move.

\n"},"beforeremove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires before a child is removed, return false to cancel the remove.

\n"},"collapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is collapsed.

\n"},"expand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is expanded.

\n"},"insert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when a new child node is inserted.

\n"},"move":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when this node is moved to a new location in the tree

\n"},"remove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires when a child node is removed

\n"},"rootchange":{"!type":"fn(root: +Ext.data.Model, eOpts: ?)","!doc":"

Fires whenever the root node is changed in the tree.

\n"}}},"TreeModel":{"!doc":"

This class can be used as a base class from which to derived Models used in Trees.

\n","!type":"fn(data: ?)","prototype":{"!proto":"Ext.data.Model.prototype"}},"TreeStore":{"!doc":"

The TreeStore is a store implementation that is backed by by an Ext.data.Tree.\nIt provides convenience methods for loading nodes, as well as the ability to use\nthe hierarchical tree structure combined with a store. This class is generally used\nin conjunction with Ext.tree.Panel. This class also relays many events from\nthe Tree for convenience.

\n\n

Using Models

\n\n

If no Model is specified, an implicit model will be created that implements Ext.data.NodeInterface.\nThe standard Tree fields will also be copied onto the Model for maintaining their state. These fields are listed\nin the Ext.data.NodeInterface documentation.

\n\n

Reading Nested Data

\n\n

For the tree to read nested data, the Ext.data.reader.Reader must be configured with a root property,\nso the reader can find nested data for each node (if a root is not specified, it will default to\n'children'). This will tell the tree to look for any nested tree nodes by the same keyword, i.e., 'children'.\nIf a root is specified in the config make sure that any nested nodes with children have the same name.\nNote that setting defaultRootProperty accomplishes the same thing.

\n","!type":"fn(config: Ext_data_TreeStore_cfg)","prototype":{"!proto":"Ext.data.AbstractStore.prototype","clearOnLoad":{"!type":"bool","!doc":"

Remove previously existing child nodes before loading.

\n"},"clearRemovedOnLoad":{"!type":"bool","!doc":"

If true, when a node is reloaded, any records in the removed record collection that were previously descendants of the node being reloaded will be cleared from the removed collection.\nOnly applicable if clearOnLoad is true.

\n"},"defaultRootId":{"!type":"string","!doc":"

The default root id.

\n"},"defaultRootProperty":{"!type":"string","!doc":"

The root property to specify on the reader if one is not explicitly defined.

\n"},"defaultRootText":{"!type":"string","!doc":"

The default root text (if not specified)/

\n"},"folderSort":{"!type":"bool","!doc":"

Set to true to automatically prepend a leaf sorter.

\n"},"nodeParam":{"!type":"string","!doc":"

The name of the parameter sent to the server which contains the identifier of the node.

\n"},"root":{"!type":"+Ext.data.Model|+Ext.data.NodeInterface|?","!doc":"

The root node for this store. For example:

\n\n
root: {\n    expanded: true,\n    text: \"My Root\",\n    children: [\n        { text: \"Child 1\", leaf: true },\n        { text: \"Child 2\", expanded: true, children: [\n            { text: \"GrandChild\", leaf: true }\n        ] }\n    ]\n}\n
\n\n

Setting the root config option is the same as calling setRootNode.

\n"},"fields":{"!type":"?","!doc":"

If we have no fields declare for the store, add some defaults.\nThese will be ignored if a model is explicitly specified.

\n"},"fillCount":{"!type":"number"},"rootProperty":{"!type":"string","!doc":"

Keep a copy of the default so we know if it's been changed in a subclass/config

\n"},"cleanRecords":{"!type":"fn(node: ?, records: ?) -> !this"},"clearRemoved":{"!type":"fn(node: +Ext.data.NodeInterface) -> !this","!doc":"

Removes all records that used to be descendants of the passed node from the removed array

\n"},"doSort":{"!type":"fn(sorterFn: ?) -> !this","!doc":"

inherit docs

\n"},"fillNode":{"!type":"fn(node: +Ext.data.NodeInterface, newNodes: [+Ext.data.Model]) -> !this","!doc":"

Fills a node with a series of child records.

\n"},"getById":{"!type":"fn(id: ?) -> !this","!doc":"

inherit docs

\n"},"getNewRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

inherit docs

\n"},"getNodeById":{"!type":"fn(id: ?) -> +Ext.data.NodeInterface","!doc":"

Returns the record node by id

\n"},"getRootNode":{"!type":"fn() -> +Ext.data.NodeInterface","!doc":"

Returns the root node for this tree.

\n"},"getUpdatedRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

inherit docs

\n"},"load":{"!type":"fn(this: +Ext.data.TreeStore, node: +Ext.data.NodeInterface, records: [+Ext.data.Model], successful: bool, eOpts: ?)","!doc":"

Fires whenever the store reads data from a remote data source.

\n"},"onBeforeNodeExpand":{"!type":"fn(node: +Ext.data.NodeInterface, callback: fn(), scope: ?, args: [?]) -> !this","!doc":"

Fired by the root node.

\n\n

Called before a node is expanded.

\n\n

This ensures that the child nodes are available before calling the passed callback.

\n"},"onBeforeSort":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"onIdChanged":{"!type":"fn(model: ?, oldId: ?, newId: ?, oldInternalId: ?) -> !this"},"onNodeAdded":{"!type":"fn(parent: ?, node: ?) -> !this"},"onNodeRemove":{"!type":"fn(parent: ?, node: ?, isMove: ?) -> !this"},"onNodeSort":{"!type":"fn() -> !this"},"onProxyLoad":{"!type":"fn(operation: ?) -> !this","!doc":"

inherit docs

\n"},"removeAll":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"setProxy":{"!type":"fn(proxy: ?) -> +Ext.data.proxy.Proxy","!doc":"

inherit docs

\n"},"setRootNode":{"!type":"fn(root: +Ext.data.Model|+Ext.data.NodeInterface|?) -> +Ext.data.NodeInterface","!doc":"

Sets the root node for this store. See also the root config option.

\n"},"sortByIndex":{"!type":"fn(node1: +Ext.data.NodeInterface, node2: +Ext.data.NodeInterface) -> number","!doc":"

Sorter function for sorting records in index order

\n"},"append":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when a new child node is appended

\n"},"beforeappend":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is appended, return false to cancel the append.

\n"},"beforecollapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is collapsed.

\n"},"beforeexpand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is expanded.

\n"},"beforeinsert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is inserted, return false to cancel the insert.

\n"},"beforemove":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires before this node is moved to a new location in the tree. Return false to cancel the move.

\n"},"beforeremove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires before a child is removed, return false to cancel the remove.

\n"},"collapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is collapsed.

\n"},"expand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is expanded.

\n"},"insert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when a new child node is inserted.

\n"},"move":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when this node is moved to a new location in the tree

\n"},"remove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires when a child node is removed

\n"},"sort":{"!type":"fn(this: +Ext.data.NodeInterface, childNodes: [+Ext.data.NodeInterface], eOpts: ?)","!doc":"

Fires when this node's childNodes are sorted.

\n"}}},"Types":{"!doc":"

This is a static class containing the system-supplied data types\nwhich may be given to a Field.

\n\n

The properties in this class are used as type indicators in the\nField class, so to test whether a Field is\nof a certain type, compare the type\nproperty against properties of this class.

\n\n

Developers may add their own application-specific data types to\nthis class. Definition names must be UPPERCASE. Each type\ndefinition must contain three properties:

\n\n\n\n\n

For example, to create a VELatLong field (See the Microsoft Bing\nMapping API) containing the latitude/longitude value of a datapoint\non a map from a JsonReader data block

\n\n

which contained the properties lat and long, you would define a\nnew data type like this:

\n\n
// Add a new Field data type which stores a VELatLong object in the Record.\nExt.data.Types.VELATLONG = {\n    convert: function(v, data) {\n        return new VELatLong(data.lat, data.long);\n    },\n    sortType: function(v) {\n        return v.Latitude;  // When sorting, order by latitude\n    },\n    type: 'VELatLong'\n};\n
\n\n

Then, when declaring a Model, use:

\n\n
var types = Ext.data.Types; // allow shorthand type access\nExt.define('Unit',\n    extend: 'Ext.data.Model',\n    fields: [\n        { name: 'unitName', mapping: 'UnitName' },\n        { name: 'curSpeed', mapping: 'CurSpeed', type: types.INT },\n        { name: 'latitude', mapping: 'lat', type: types.FLOAT },\n        { name: 'longitude', mapping: 'long', type: types.FLOAT },\n        { name: 'position', type: types.VELATLONG }\n    ]\n});\n
\n","AUTO":{"!type":"?","!doc":"

This data type means that no conversion is applied to the raw data before it is placed into a Record.

\n"},"BOOL":{"!type":"?","!doc":"

This data type means that the raw data is converted into a boolean before it is placed into\na Record. The string \"true\" and the number 1 are converted to boolean true.

\n\n

The synonym BOOLEAN is equivalent.

\n"},"BOOLEAN":{"!type":"?","!doc":"

This data type means that the raw data is converted into a boolean before it is placed into\na Record. The string \"true\" and the number 1 are converted to boolean true.

\n\n

The synonym BOOL is equivalent.

\n"},"DATE":{"!type":"?","!doc":"

This data type means that the raw data is converted into a Date before it is placed into a Record.\nThe date format is specified in the constructor of the Ext.data.Field to which this type is\nbeing applied.

\n"},"FLOAT":{"!type":"?","!doc":"

This data type means that the raw data is converted into a number before it is placed into a Record.

\n\n

The synonym NUMBER is equivalent.

\n"},"INT":{"!type":"?","!doc":"

This data type means that the raw data is converted into an integer before it is placed into a Record.

\n\n

The synonym INTEGER is equivalent.

\n"},"INTEGER":{"!type":"?","!doc":"

This data type means that the raw data is converted into an integer before it is placed into a Record.

\n\n

The synonym INT is equivalent.

\n"},"NUMBER":{"!type":"?","!doc":"

This data type means that the raw data is converted into a number before it is placed into a Record.

\n\n

The synonym FLOAT is equivalent.

\n"},"STRING":{"!type":"?","!doc":"

This data type means that the raw data is converted into a String before it is placed into a Record.

\n"},"stripRe":{"!type":"+RegExp","!doc":"

A regular expression for stripping non-numeric characters from a numeric value.\nThis should be overridden for localization.

\n"}},"UuidGenerator":{"!doc":"

This class generates UUID's according to RFC 4122. This class has a default id property.\nThis means that a single instance is shared unless the id property is overridden. Thus,\ntwo Ext.data.Model instances configured like the following share one generator:

\n\n
Ext.define('MyApp.data.MyModelX', {\n    extend: 'Ext.data.Model',\n    idgen: 'uuid'\n});\n\nExt.define('MyApp.data.MyModelY', {\n    extend: 'Ext.data.Model',\n    idgen: 'uuid'\n});\n
\n\n

This allows all models using this class to share a commonly configured instance.

\n\n

Using Version 1 (\"Sequential\") UUID's

\n\n

If a server can provide a proper timestamp and a \"cryptographic quality random number\"\n(as described in RFC 4122), the shared instance can be configured as follows:

\n\n
Ext.data.IdGenerator.get('uuid').reconfigure({\n    version: 1,\n    clockSeq: clock, // 14 random bits\n    salt: salt,      // 48 secure random bits (the Node field)\n    timestamp: ts    // timestamp per Section 4.1.4\n});\n\n// or these values can be split into 32-bit chunks:\n\nExt.data.IdGenerator.get('uuid').reconfigure({\n    version: 1,\n    clockSeq: clock,\n    salt: { lo: saltLow32, hi: saltHigh32 },\n    timestamp: { lo: timestampLow32, hi: timestamptHigh32 }\n});\n
\n\n

This approach improves the generator's uniqueness by providing a valid timestamp and\nhigher quality random data. Version 1 UUID's should not be used unless this information\ncan be provided by a server and care should be taken to avoid caching of this data.

\n\n

See http://www.ietf.org/rfc/rfc4122.txt for details.

\n","!type":"fn(config?: Ext_data_UuidGenerator_cfg)","prototype":{"!proto":"Ext.data.IdGenerator.prototype","version":{"!type":"number","!doc":"

The Version of UUID. Supported values are:

\n\n\n\n\n

The default is 4.

\n"},"salt":{"!type":"number|?","!doc":"

When created, this value is a 48-bit number. For computation, this value is split\ninto 32-bit parts and stored in an object with hi and lo properties.

\n"},"timestamp":{"!type":"number|?","!doc":"

When created, this value is a 60-bit number. For computation, this value is split\ninto 32-bit parts and stored in an object with hi and lo properties.

\n"},"init":{"!type":"fn() -> !this"},"reconfigure":{"!type":"fn(config: ?) -> !this","!doc":"

Reconfigures this generator given new config properties.

\n"}}},"XmlStore":{"!doc":"

Small helper class to make creating Ext.data.Stores from XML data easier.\nA XmlStore will be automatically configured with a Ext.data.reader.Xml.

\n\n\n

A store configuration would be something like:\n

var store = new Ext.data.XmlStore({\n    // store configs\n    storeId: 'myStore',\n    url: 'sheldon.xml', // automatically configures a HttpProxy\n    // reader configs\n    record: 'Item', // records will have an \"Item\" tag\n    idPath: 'ASIN',\n    totalRecords: '@TotalResults'\n    fields: [\n        // set up the fields mapping into the xml doc\n        // The first needs mapping, the others are very basic\n        {name: 'Author', mapping: 'ItemAttributes > Author'},\n        'Title', 'Manufacturer', 'ProductGroup'\n    ]\n});\n

\n\n\n

This store is configured to consume a returned object of the form:\n

<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ItemSearchResponse xmlns=\"http://webservices.amazon.com/AWSECommerceService/2009-05-15\">\n    <Items>\n        <Request>\n            <IsValid>True</IsValid>\n            <ItemSearchRequest>\n                <Author>Sidney Sheldon</Author>\n                <SearchIndex>Books</SearchIndex>\n            </ItemSearchRequest>\n        </Request>\n        <TotalResults>203</TotalResults>\n        <TotalPages>21</TotalPages>\n        <Item>\n            <ASIN>0446355453</ASIN>\n            <DetailPageURL>\n                http://www.amazon.com/\n            </DetailPageURL>\n            <ItemAttributes>\n                <Author>Sidney Sheldon</Author>\n                <Manufacturer>Warner Books</Manufacturer>\n                <ProductGroup>Book</ProductGroup>\n                <Title>Master of the Game</Title>\n            </ItemAttributes>\n        </Item>\n    </Items>\n</ItemSearchResponse>\n
\nAn object literal of this form could also be used as the data config option.

\n\n\n

Note: This class accepts all of the configuration options of\nXmlReader.

\n\n","!type":"fn(config: Ext_data_XmlStore_cfg)","prototype":{"!proto":"Ext.data.Store.prototype"}},"association":{"Association":{"!doc":"

Associations enable you to express relationships between different Models. Let's say we're\nwriting an ecommerce system where Users can make Orders - there's a relationship between these Models that we can\nexpress like this:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email'],\n\n    hasMany: {model: 'Order', name: 'orders'}\n});\n\nExt.define('Order', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'user_id', 'status', 'price'],\n\n    belongsTo: 'User'\n});\n
\n\n

We've set up two models - User and Order - and told them about each other. You can set up as many associations on\neach Model as you need using the two default types - hasMany and belongsTo. There's much more detail on the usage of each of those inside their\ndocumentation pages. If you're not familiar with Models already, there is plenty on those too.

\n\n

Further Reading

\n\n\n\n\n

Self association models

\n\n

We can also have models that create parent/child associations between the same type. Below is an example, where\ngroups can be nested inside other groups:

\n\n
// Server Data\n{\n    \"groups\": {\n        \"id\": 10,\n        \"parent_id\": 100,\n        \"name\": \"Main Group\",\n        \"parent_group\": {\n            \"id\": 100,\n            \"parent_id\": null,\n            \"name\": \"Parent Group\"\n        },\n        \"nested\" : {\n            \"child_groups\": [{\n                \"id\": 2,\n                \"parent_id\": 10,\n                \"name\": \"Child Group 1\"\n            },{\n                \"id\": 3,\n                \"parent_id\": 10,\n                \"name\": \"Child Group 2\"\n            },{\n                \"id\": 4,\n                \"parent_id\": 10,\n                \"name\": \"Child Group 3\"\n            }]\n        }\n    }\n}\n\n// Client code\nExt.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'parent_id', 'name'],\n    proxy: {\n        type: 'ajax',\n        url: 'data.json',\n        reader: {\n            type: 'json',\n            root: 'groups'\n        }\n    },\n    associations: [{\n        type: 'hasMany',\n        model: 'Group',\n        primaryKey: 'id',\n        foreignKey: 'parent_id',\n        autoLoad: true,\n        associationKey: 'nested.child_groups' // read child data from nested.child_groups\n    }, {\n        type: 'belongsTo',\n        model: 'Group',\n        primaryKey: 'id',\n        foreignKey: 'parent_id',\n        associationKey: 'parent_group' // read parent data from parent_group\n    }]\n});\n\nExt.onReady(function(){\n\n    Group.load(10, {\n        success: function(group){\n            console.log(group.getGroup().get('name'));\n\n            group.groups().each(function(rec){\n                console.log(rec.get('name'));\n            });\n        }\n    });\n\n});\n
\n","!type":"fn(config?: Ext_data_association_Association_cfg)","prototype":{"!proto":"Ext.Base.prototype","associatedModel":{"!type":"string","!doc":"

The string name of the model that is being associated with.

\n\n

NB! This config is required when instantiating the Association directly.\nWhen defining the association as a config object inside Model, the model\nconfiguration will shadow this config.

\n"},"associationKey":{"!type":"string","!doc":"

The name of the property in the data to read the association from. Defaults to the name of the associated model.

\n"},"model":{"!type":"string","!doc":"

The string name of the model that is being associated with.

\n\n

This config option is to be used when defining the association as a config\nobject within Model. The value is then mapped to associatedModel when\nAssociation is instantiated inside Model.

\n"},"ownerModel":{"!type":"string","!doc":"

The string name of the model that owns the association.

\n\n

NB! This config is required when instantiating the Association directly.\nHowever, it cannot be used at all when defining the association as a config\nobject inside Model, because the name of the model itself will be supplied\nautomatically as the value of this config.

\n"},"primaryKey":{"!type":"string","!doc":"

The name of the primary key on the associated model. In general this will be the\nExt.data.Model.idProperty of the Model.

\n"},"reader":{"!type":"+Ext.data.reader.Reader","!doc":"

A special reader to read associated data

\n"},"associatedName":{"!type":"string","!doc":"

The name of the model is on the other end of the association (e.g. if a User model hasMany Orders, this is\n'Order')

\n"},"defaultReaderType":{"!type":"string"},"initialConfig":{"!type":"?"},"isAssociation":{"!type":"bool"},"ownerName":{"!type":"string","!doc":"

The name of the model that 'owns' the association

\n"},"getReader":{"!type":"fn() -> +Ext.data.reader.Reader","!doc":"

Get a specialized reader for reading associated data

\n"}},"AUTO_ID":{"!type":"number"},"create":{"!type":"fn(association: ?) -> !this"}},"BelongsTo":{"!doc":"

Represents a many to one association with another model. The owner model is expected to have\na foreign key which references the primary key of the associated model:

\n\n
Ext.define('Category', {\n    extend: 'Ext.data.Model',\n    fields: [\n        { name: 'id',   type: 'int' },\n        { name: 'name', type: 'string' }\n    ]\n});\n\nExt.define('Product', {\n    extend: 'Ext.data.Model',\n    fields: [\n        { name: 'id',          type: 'int' },\n        { name: 'category_id', type: 'int' },\n        { name: 'name',        type: 'string' }\n    ],\n    // we can use the belongsTo shortcut on the model to create a belongsTo association\n    associations: [\n        { type: 'belongsTo', model: 'Category' }\n    ]\n});\n
\n\n

In the example above we have created models for Products and Categories, and linked them together\nby saying that each Product belongs to a Category. This automatically links each Product to a Category\nbased on the Product's category_id, and provides new functions on the Product model:

\n\n

Generated getter function

\n\n

The first function that is added to the owner model is a getter function:

\n\n
var product = new Product({\n    id: 100,\n    category_id: 20,\n    name: 'Sneakers'\n});\n\nproduct.getCategory(function(category, operation) {\n    // do something with the category object\n    alert(category.get('id')); // alerts 20\n}, this);\n
\n\n

The getCategory function was created on the Product model when we defined the association. This uses the\nCategory's configured proxy to load the Category asynchronously, calling the provided\ncallback when it has loaded.

\n\n

The new getCategory function will also accept an object containing success, failure and callback properties\n- callback will always be called, success will only be called if the associated model was loaded successfully\nand failure will only be called if the associatied model could not be loaded:

\n\n
product.getCategory({\n    reload: true, // force a reload if the owner model is already cached\n    callback: function(category, operation) {}, // a function that will always be called\n    success : function(category, operation) {}, // a function that will only be called if the load succeeded\n    failure : function(category, operation) {}, // a function that will only be called if the load did not succeed\n    scope   : this // optionally pass in a scope object to execute the callbacks in\n});\n
\n\n

In each case above the callbacks are called with two arguments - the associated model instance and the\noperation object that was executed to load that instance. The Operation object is\nuseful when the instance could not be loaded.

\n\n

Once the getter has been called on the model, it will be cached if the getter is called a second time. To\nforce the model to reload, specify reload: true in the options object.

\n\n

Generated setter function

\n\n

The second generated function sets the associated model instance - if only a single argument is passed to\nthe setter then the following two calls are identical:

\n\n
// this call...\nproduct.setCategory(10);\n\n// is equivalent to this call:\nproduct.set('category_id', 10);\n
\n\n

An instance of the owner model can also be passed as a parameter.

\n\n

If we pass in a second argument, the model will be automatically saved and the second argument passed to\nthe owner model's save method:

\n\n
product.setCategory(10, function(product, operation) {\n    // the product has been saved\n    alert(product.get('category_id')); //now alerts 10\n});\n\n//alternative syntax:\nproduct.setCategory(10, {\n    callback: function(product, operation), // a function that will always be called\n    success : function(product, operation), // a function that will only be called if the load succeeded\n    failure : function(product, operation), // a function that will only be called if the load did not succeed\n    scope   : this //optionally pass in a scope object to execute the callbacks in\n})\n
\n\n

Customisation

\n\n

Associations reflect on the models they are linking to automatically set up properties such as the\nprimaryKey and foreignKey. These can alternatively be specified:

\n\n
Ext.define('Product', {\n    fields: [...],\n\n    associations: [\n        { type: 'belongsTo', model: 'Category', primaryKey: 'unique_id', foreignKey: 'cat_id' }\n    ]\n});\n
\n\n

Here we replaced the default primary key (defaults to 'id') and foreign key (calculated as 'category_id')\nwith our own settings. Usually this will not be needed.

\n","!type":"fn(config?: Ext_data_association_BelongsTo_cfg)","prototype":{"!proto":"Ext.data.association.Association.prototype","foreignKey":{"!type":"string","!doc":"

The name of the foreign key on the owner model that links it to the associated\nmodel. Defaults to the lowercased name of the associated model plus \"_id\", e.g. an association with a\nmodel called Product would set up a product_id foreign key.

\n\n
Ext.define('Order', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'date'],\n    hasMany: 'Product'\n});\n\nExt.define('Product', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'order_id'], // refers to the id of the order that this product belongs to\n    belongsTo: 'Order'\n});\nvar product = new Product({\n    id: 1,\n    name: 'Product 1',\n    order_id: 22\n}, 1);\nproduct.getOrder(); // Will make a call to the server asking for order_id 22\n
\n"},"getterName":{"!type":"string","!doc":"

The name of the getter function that will be added to the local model's prototype.\nDefaults to 'get' + the name of the foreign model, e.g. getCategory

\n"},"setterName":{"!type":"string","!doc":"

The name of the setter function that will be added to the local model's prototype.\nDefaults to 'set' + the name of the foreign model, e.g. setCategory

\n"},"type":{"!type":"string","!doc":"

The type configuration can be used when creating associations using a configuration object.\nUse 'belongsTo' to create a BelongsTo association.

\n\n
associations: [{\n    type: 'belongsTo',\n    model: 'User'\n}]\n
\n"},"createGetter":{"!type":"fn() -> fn()","!doc":"

Returns a getter function to be placed on the owner model's prototype. We cache the loaded instance\nthe first time it is loaded so that subsequent calls to the getter always receive the same reference.

\n"},"createSetter":{"!type":"fn() -> fn()","!doc":"

Returns a setter function to be placed on the owner model's prototype

\n"},"read":{"!type":"fn(record: +Ext.data.Model, reader: +Ext.data.reader.Reader, associationData: ?) -> !this","!doc":"

Read associated data

\n"}}},"HasMany":{"!doc":"

Represents a one-to-many relationship between two models. Usually created indirectly via a model definition:

\n\n\n\n\n
Ext.define('Product', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'id',      type: 'int'},\n        {name: 'user_id', type: 'int'},\n        {name: 'name',    type: 'string'}\n    ]\n});\n\nExt.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'id',   type: 'int'},\n        {name: 'name', type: 'string'}\n    ],\n    // we can use the hasMany shortcut on the model to create a hasMany association\n    hasMany: {model: 'Product', name: 'products'}\n});\n
\n\n\n\n\n

Above we created Product and User models, and linked them by saying that a User hasMany Products. This gives\nus a new function on every User instance, in this case the function is called 'products' because that is the name\nwe specified in the association configuration above.

\n\n\n\n\n

This new function returns a specialized Store which is automatically filtered to load\nonly Products for the given model instance:

\n\n\n\n\n
//first, we load up a User with id of 1\nvar user = Ext.create('User', {id: 1, name: 'Ed'});\n\n//the user.products function was created automatically by the association and returns a Store\n//the created store is automatically scoped to the set of Products for the User with id of 1\nvar products = user.products();\n\n//we still have all of the usual Store functions, for example it's easy to add a Product for this User\nproducts.add({\n    name: 'Another Product'\n});\n\n//saves the changes to the store - this automatically sets the new Product's user_id to 1 before saving\nproducts.sync();\n
\n\n\n\n\n

The new Store is only instantiated the first time you call products() to conserve memory and processing time,\nthough calling products() a second time returns the same store instance.

\n\n\n\n\n

Custom filtering

\n\n\n\n\n

The Store is automatically furnished with a filter - by default this filter tells the store to only return\nrecords where the associated model's foreign key matches the owner model's primary key. For example, if a User\nwith ID = 100 hasMany Products, the filter loads only Products with user_id == 100.

\n\n\n\n\n

Sometimes we want to filter by another field - for example in the case of a Twitter search application we may\nhave models for Search and Tweet:

\n\n\n\n\n
Ext.define('Search', {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id', 'query'\n    ],\n\n    hasMany: {\n        model: 'Tweet',\n        name : 'tweets',\n        filterProperty: 'query'\n    }\n});\n\nExt.define('Tweet', {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id', 'text', 'from_user'\n    ]\n});\n\n//returns a Store filtered by the filterProperty\nvar store = new Search({query: 'Sencha Touch'}).tweets();\n
\n\n\n\n\n

The tweets association above is filtered by the query property by setting the filterProperty, and is\nequivalent to this:

\n\n\n\n\n
var store = Ext.create('Ext.data.Store', {\n    model: 'Tweet',\n    filters: [\n        {\n            property: 'query',\n            value   : 'Sencha Touch'\n        }\n    ]\n});\n
\n\n","!type":"fn(config?: Ext_data_association_HasMany_cfg)","prototype":{"!proto":"Ext.data.association.Association.prototype","autoLoad":{"!type":"bool","!doc":"

True to automatically load the related store from a remote source when instantiated.\nDefaults to false.

\n"},"filterProperty":{"!type":"string","!doc":"

Optionally overrides the default filter that is set up on the associated Store. If\nthis is not set, a filter is automatically created which filters the association based on the configured\nforeignKey. See intro docs for more details. Defaults to undefined

\n"},"foreignKey":{"!type":"string","!doc":"

The name of the foreign key on the associated model that links it to the owner\nmodel. Defaults to the lowercased name of the owner model plus \"_id\", e.g. an association with a where a\nmodel called Group hasMany Users would create 'group_id' as the foreign key. When the remote store is loaded,\nthe store is automatically filtered so that only records with a matching foreign key are included in the\nresulting child store. This can be overridden by specifying the filterProperty.

\n\n
Ext.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name'],\n    hasMany: 'User'\n});\n\nExt.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'group_id'], // refers to the id of the group that this user belongs to\n    belongsTo: 'Group'\n});\n
\n\n"},"name":{"!type":"string","!doc":"

The name of the function to create on the owner model to retrieve the child store.\nIf not specified, the pluralized name of the child model is used.

\n\n
// This will create a users() method on any Group model instance\nExt.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name'],\n    hasMany: 'User'\n});\nvar group = new Group();\nconsole.log(group.users());\n\n// The method to retrieve the users will now be getUserList\nExt.define('Group', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name'],\n    hasMany: {model: 'User', name: 'getUserList'}\n});\nvar group = new Group();\nconsole.log(group.getUserList());\n
\n\n"},"storeConfig":{"!type":"?","!doc":"

Optional configuration object that will be passed to the generated Store. Defaults to\nundefined.

\n"},"type":{"!type":"string","!doc":"

The type configuration can be used when creating associations using a configuration object.\nUse 'hasMany' to create a HasMany association

\n\n
associations: [{\n    type: 'hasMany',\n    model: 'User'\n}]\n
\n\n"},"createStore":{"!type":"fn() -> fn()","!doc":"

Creates a function that returns an Ext.data.Store which is configured to load a set of data filtered\nby the owner model's primary key - e.g. in a hasMany association where Group hasMany Users, this function\nreturns a Store configured to return the filtered set of a single Group's Users.

\n"},"read":{"!type":"fn(record: +Ext.data.Model, reader: +Ext.data.reader.Reader, associationData: ?) -> !this","!doc":"

Read associated data

\n"}}},"HasOne":{"!doc":"

Represents a one to one association with another model. The owner model is expected to have\na foreign key which references the primary key of the associated model:

\n\n
Ext.define('Address', {\n    extend: 'Ext.data.Model',\n    fields: [\n        { name: 'id',          type: 'int' },\n        { name: 'number', type: 'string' },\n        { name: 'street', type: 'string' },\n        { name: 'city', type: 'string' },\n        { name: 'zip', type: 'string' },\n    ]\n});\n\nExt.define('Person', {\n    extend: 'Ext.data.Model',\n    fields: [\n        { name: 'id',   type: 'int' },\n        { name: 'name', type: 'string' },\n        { name: 'address_id', type: 'int'}\n    ],\n    // we can use the hasOne shortcut on the model to create a hasOne association\n    associations: [{ type: 'hasOne', model: 'Address' }]\n});\n
\n\n

In the example above we have created models for People and Addresses, and linked them together\nby saying that each Person has a single Address. This automatically links each Person to an Address\nbased on the Persons address_id, and provides new functions on the Person model:

\n\n

Generated getter function

\n\n

The first function that is added to the owner model is a getter function:

\n\n
var person = new Person({\n    id: 100,\n    address_id: 20,\n    name: 'John Smith'\n});\n\nperson.getAddress(function(address, operation) {\n    // do something with the address object\n    alert(address.get('id')); // alerts 20\n}, this);\n
\n\n

The getAddress function was created on the Person model when we defined the association. This uses the\nPersons configured proxy to load the Address asynchronously, calling the provided\ncallback when it has loaded.

\n\n

The new getAddress function will also accept an object containing success, failure and callback properties\n- callback will always be called, success will only be called if the associated model was loaded successfully\nand failure will only be called if the associatied model could not be loaded:

\n\n
person.getAddress({\n    reload: true, // force a reload if the owner model is already cached\n    callback: function(address, operation) {}, // a function that will always be called\n    success : function(address, operation) {}, // a function that will only be called if the load succeeded\n    failure : function(address, operation) {}, // a function that will only be called if the load did not succeed\n    scope   : this // optionally pass in a scope object to execute the callbacks in\n});\n
\n\n

In each case above the callbacks are called with two arguments - the associated model instance and the\noperation object that was executed to load that instance. The Operation object is\nuseful when the instance could not be loaded.

\n\n

Once the getter has been called on the model, it will be cached if the getter is called a second time. To\nforce the model to reload, specify reload: true in the options object.

\n\n

Generated setter function

\n\n

The second generated function sets the associated model instance - if only a single argument is passed to\nthe setter then the following two calls are identical:

\n\n
// this call...\nperson.setAddress(10);\n\n// is equivalent to this call:\nperson.set('address_id', 10);\n
\n\n

An instance of the owner model can also be passed as a parameter.

\n\n

If we pass in a second argument, the model will be automatically saved and the second argument passed to\nthe owner model's save method:

\n\n
person.setAddress(10, function(address, operation) {\n    // the address has been saved\n    alert(address.get('address_id')); //now alerts 10\n});\n\n//alternative syntax:\nperson.setAddress(10, {\n    callback: function(address, operation), // a function that will always be called\n    success : function(address, operation), // a function that will only be called if the load succeeded\n    failure : function(address, operation), // a function that will only be called if the load did not succeed\n    scope   : this //optionally pass in a scope object to execute the callbacks in\n})\n
\n\n

Customisation

\n\n

Associations reflect on the models they are linking to automatically set up properties such as the\nprimaryKey and foreignKey. These can alternatively be specified:

\n\n
Ext.define('Person', {\n    fields: [...],\n\n    associations: [\n        { type: 'hasOne', model: 'Address', primaryKey: 'unique_id', foreignKey: 'addr_id' }\n    ]\n});\n
\n\n

Here we replaced the default primary key (defaults to 'id') and foreign key (calculated as 'address_id')\nwith our own settings. Usually this will not be needed.

\n","!type":"fn(config?: Ext_data_association_HasOne_cfg)","prototype":{"!proto":"Ext.data.association.Association.prototype","foreignKey":{"!type":"string","!doc":"

The name of the foreign key on the owner model that links it to the associated\nmodel. Defaults to the lowercased name of the associated model plus \"_id\", e.g. an association with a\nmodel called Person would set up a address_id foreign key.

\n\n
Ext.define('Person', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'address_id'], // refers to the id of the address object\n    hasOne: 'Address'\n});\n\nExt.define('Address', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'number', 'street', 'city', 'zip'], \n    belongsTo: 'Person'\n});\nvar Person = new Person({\n    id: 1,\n    name: 'John Smith',\n    address_id: 13\n}, 1);\nperson.getAddress(); // Will make a call to the server asking for address_id 13\n
\n"},"getterName":{"!type":"string","!doc":"

The name of the getter function that will be added to the local model's prototype.\nDefaults to 'get' + the name of the foreign model, e.g. getAddress

\n"},"setterName":{"!type":"string","!doc":"

The name of the setter function that will be added to the local model's prototype.\nDefaults to 'set' + the name of the foreign model, e.g. setAddress

\n"},"type":{"!type":"string","!doc":"

The type configuration can be used when creating associations using a configuration object.\nUse 'hasOne' to create a HasOne association.

\n\n
associations: [{\n    type: 'hasOne',\n    model: 'Address'\n}]\n
\n"},"createGetter":{"!type":"fn() -> fn()","!doc":"

Returns a getter function to be placed on the owner model's prototype. We cache the loaded instance\nthe first time it is loaded so that subsequent calls to the getter always receive the same reference.

\n"},"createSetter":{"!type":"fn() -> fn()","!doc":"

Returns a setter function to be placed on the owner model's prototype

\n"},"read":{"!type":"fn(record: +Ext.data.Model, reader: +Ext.data.reader.Reader, associationData: ?) -> !this","!doc":"

Read associated data

\n"}}}},"flash":{"BinaryXhr":{"!doc":"

Simulates an XMLHttpRequest object's methods and properties as returned\nform the flash polyfill plugin. Used in submitting binary data in browsers that do\nnot support doing so from JavaScript.\nNOTE: By default this will look for the flash object in the ext directory. When packaging and deploying the app, copy the ext/plugins directory and its contents to your root directory. For custom deployments where just the FlashPlugin.swf file gets copied (e.g. to /resources/FlashPlugin.swf), make sure to notify the framework of the location of the plugin before making the first attempt to post binary data, e.g. in the launch method of your app do:

\n\n
Ext.flashPluginPath=\"/resources/FlashPlugin.swf\";\n 
\n\n","!type":"fn(config: Ext_data_flash_BinaryXhr_cfg)","prototype":{"!proto":"Ext.Base.prototype","javascriptId":{"!type":"?","!doc":"

An ID representing this connection with flash.

\n"},"readyState":{"!type":"number","!doc":"

The connection's simulated readyState. Note that the only supported values are 0, 1 and 4. States 2 and 3 will never be reported.

\n"},"responseBytes":{"!type":"[?]","!doc":"

The binary bytes returned.

\n"},"status":{"!type":"number","!doc":"

Connection status code returned by flash or the server.

\n"},"statusText":{"!type":"string","!doc":"

Status text (if any) returned by flash or the server.

\n"},"abort":{"!type":"fn() -> !this","!doc":"

Abort this connection. Sets its readyState to 4.

\n"},"getAllResponseHeaders":{"!type":"fn() -> !this","!doc":"

As in XMLHttpRequest.

\n"},"getResponseHeader":{"!type":"fn(header: ?) -> !this","!doc":"

As in XMLHttpRequest.

\n"},"onFlashReady":{"!type":"fn() -> !this","!doc":"

Called by send, or once flash is loaded, to actually send the bytes.

\n"},"onFlashStateChange":{"!type":"fn(state: number, data: ?) -> !this","!doc":"

Called once flash calls back with updates about the connection

\n"},"onreadystatechange":{"!type":"fn() -> !this","!doc":"

As in XMLHttpRequest.

\n"},"open":{"!type":"fn(method: ?, url: ?, async: ?, user: ?, password: ?) -> !this","!doc":"

As in XMLHttpRequest.

\n"},"overrideMimeType":{"!type":"fn(mimeType: ?) -> !this","!doc":"

As in XMLHttpRequest.

\n"},"parseData":{"!type":"fn(data: ?) -> !this","!doc":"

Parses data returned from flash once a connection is done.

\n"},"send":{"!type":"fn(body: [?]) -> !this","!doc":"

Initiate the request.

\n"},"setReadyState":{"!type":"fn(state: ?) -> !this","!doc":"

Updates readyState and notifies listeners.

\n"},"setRequestHeader":{"!type":"fn(header: ?, value: ?) -> !this","!doc":"

As in XMLHttpRequest.

\n"}},"connectionIndex":{"!type":"number","!doc":"

Counts IDs for new connections.

\n"},"flashPlugin":{"!type":"?","!doc":"

Reference to the actual plugin, once activated.

\n"},"flashPluginActive":{"!type":"bool","!doc":"

Set to trut once the plugin registers and is active.

\n"},"flashPluginInjected":{"!type":"bool","!doc":"

Flag to avoid installing the plugin twice.

\n"},"liveConnections":{"!type":"?","!doc":"

Plcaeholder for active connections.

\n"},"flashPluginActivated":{"!type":"fn() -> !this","!doc":"

Called by the flash plugin once it's installed and open for business.

\n"},"injectFlashPlugin":{"!type":"fn() -> !this","!doc":"

Injects the flash polyfill plugin to allow posting binary data.\nThis is done in two steps: First we load the javascript loader for flash objects, then we call it to inject the flash object.

\n"},"onFlashStateChange":{"!type":"fn(javascriptId: number|number, state: number, data: ?) -> !this","!doc":"

Called by the flash plugin once the state of one of the active connections changes.

\n"},"registerConnection":{"!type":"fn(conn: +Ext.data.flash.BinaryXhr) -> number","!doc":"

Adds the BinaryXhr object to the tracked connection list and assigns it an ID

\n"}}},"proxy":{"Ajax":{"!doc":"

AjaxProxy is one of the most widely-used ways of getting data into your application. It uses AJAX requests to load\ndata from the server, usually to be placed into a Store. Let's take a look at a typical setup.\nHere we're going to set up a Store that has an AjaxProxy. To prepare, we'll also set up a Model:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email']\n});\n\n//The Store contains the AjaxProxy as an inline configuration\nvar store = Ext.create('Ext.data.Store', {\n    model: 'User',\n    proxy: {\n        type: 'ajax',\n        url : 'users.json'\n    }\n});\n\nstore.load();\n
\n\n

Our example is going to load user data into a Store, so we start off by defining a Model with\nthe fields that we expect the server to return. Next we set up the Store itself, along with a\nproxy configuration. This configuration was automatically turned into an\nExt.data.proxy.Ajax instance, with the url we specified being passed into AjaxProxy's constructor.\nIt's as if we'd done this:

\n\n
new Ext.data.proxy.Ajax({\n    url: 'users.json',\n    model: 'User',\n    reader: 'json'\n});\n
\n\n

A couple of extra configurations appeared here - model and reader. These are set by default when we\ncreate the proxy via the Store - the Store already knows about the Model, and Proxy's default Reader is JsonReader.

\n\n

Now when we call store.load(), the AjaxProxy springs into action, making a request to the url we configured\n('users.json' in this case). As we're performing a read, it sends a GET request to that url (see\nactionMethods to customize this - by default any kind of read will be sent as a GET request and any kind of write\nwill be sent as a POST request).

\n\n

Limitations

\n\n

AjaxProxy cannot be used to retrieve data from other domains. If your application is running on http://domainA.com it\ncannot load data from http://domainB.com because browsers have a built-in security policy that prohibits domains\ntalking to each other via AJAX.

\n\n

If you need to read data from another domain and can't set up a proxy server (some software that runs on your own\ndomain's web server and transparently forwards requests to http://domainB.com, making it look like they actually came\nfrom http://domainA.com), you can use Ext.data.proxy.JsonP and a technique known as JSON-P (JSON with\nPadding), which can help you get around the problem so long as the server on http://domainB.com is set up to support\nJSON-P responses. See JsonPProxy's introduction docs for more details.

\n\n

Readers and Writers

\n\n

AjaxProxy can be configured to use any type of Reader to decode the server's response.\nIf no Reader is supplied, AjaxProxy will default to using a JsonReader. Reader\nconfiguration can be passed in as a simple object, which the Proxy automatically turns into a Reader instance:

\n\n
var proxy = new Ext.data.proxy.Ajax({\n    model: 'User',\n    reader: {\n        type: 'xml',\n        root: 'users'\n    }\n});\n\nproxy.getReader(); //returns an XmlReader instance based on the config we supplied\n
\n\n

Url generation

\n\n

AjaxProxy automatically inserts any sorting, filtering, paging and grouping options into the url it generates for\neach request. These are controlled with the following configuration options:

\n\n\n\n\n

Each request sent by AjaxProxy is described by an Operation. To see how we can customize\nthe generated urls, let's say we're loading the Proxy with the following Operation:

\n\n
var operation = new Ext.data.Operation({\n    action: 'read',\n    page  : 2\n});\n
\n\n

Now we'll issue the request for this Operation by calling read:

\n\n
var proxy = new Ext.data.proxy.Ajax({\n    url: '/users'\n});\n\nproxy.read(operation); //GET /users?page=2\n
\n\n

Easy enough - the Proxy just copied the page property from the Operation. We can customize how this page data is sent\nto the server:

\n\n
var proxy = new Ext.data.proxy.Ajax({\n    url: '/users',\n    pageParam: 'pageNumber'\n});\n\nproxy.read(operation); //GET /users?pageNumber=2\n
\n\n

Alternatively, our Operation could have been configured to send start and limit parameters instead of page:

\n\n
var operation = new Ext.data.Operation({\n    action: 'read',\n    start : 50,\n    limit : 25\n});\n\nvar proxy = new Ext.data.proxy.Ajax({\n    url: '/users'\n});\n\nproxy.read(operation); //GET /users?start=50&limit;=25\n
\n\n

Again we can customize this url:

\n\n
var proxy = new Ext.data.proxy.Ajax({\n    url: '/users',\n    startParam: 'startIndex',\n    limitParam: 'limitIndex'\n});\n\nproxy.read(operation); //GET /users?startIndex=50&limitIndex;=25\n
\n\n

AjaxProxy will also send sort and filter information to the server. Let's take a look at how this looks with a more\nexpressive Operation object:

\n\n
var operation = new Ext.data.Operation({\n    action: 'read',\n    sorters: [\n        new Ext.util.Sorter({\n            property : 'name',\n            direction: 'ASC'\n        }),\n        new Ext.util.Sorter({\n            property : 'age',\n            direction: 'DESC'\n        })\n    ],\n    filters: [\n        new Ext.util.Filter({\n            property: 'eyeColor',\n            value   : 'brown'\n        })\n    ]\n});\n
\n\n

This is the type of object that is generated internally when loading a Store with sorters and\nfilters defined. By default the AjaxProxy will JSON encode the sorters and filters, resulting in something like this\n(note that the url is escaped before sending the request, but is left unescaped here for clarity):

\n\n
var proxy = new Ext.data.proxy.Ajax({\n    url: '/users'\n});\n\nproxy.read(operation); //GET /users?sort=[{\"property\":\"name\",\"direction\":\"ASC\"},{\"property\":\"age\",\"direction\":\"DESC\"}]&filter;=[{\"property\":\"eyeColor\",\"value\":\"brown\"}]\n
\n\n

We can again customize how this is created by supplying a few configuration options. Let's say our server is set up\nto receive sorting information is a format like \"sortBy=name#ASC,age#DESC\". We can configure AjaxProxy to provide\nthat format like this:

\n\n
 var proxy = new Ext.data.proxy.Ajax({\n     url: '/users',\n     sortParam: 'sortBy',\n     filterParam: 'filterBy',\n\n     //our custom implementation of sorter encoding - turns our sorters into \"name#ASC,age#DESC\"\n     encodeSorters: function(sorters) {\n         var length   = sorters.length,\n             sortStrs = [],\n             sorter, i;\n\n         for (i = 0; i < length; i++) {\n             sorter = sorters[i];\n\n             sortStrs[i] = sorter.property + '#' + sorter.direction\n         }\n\n         return sortStrs.join(\",\");\n     }\n });\n\n proxy.read(operation); //GET /users?sortBy=name#ASC,age#DESC&filterBy;=[{\"property\":\"eyeColor\",\"value\":\"brown\"}]\n
\n\n

We can also provide a custom encodeFilters function to encode our filters.

\n","!type":"fn(config?: Ext_data_proxy_Ajax_cfg)","prototype":{"!proto":"Ext.data.proxy.Server.prototype","binary":{"!type":"bool","!doc":"

True to request binary data from the server. This feature requires\nthe use of a binary reader such as AMF Reader

\n"},"headers":{"!type":"?","!doc":"

Any headers to add to the Ajax request. Defaults to undefined.

\n"},"actionMethods":{"!type":"?","!doc":"

Mapping of action name to HTTP request method. In the basic AjaxProxy these are set to 'GET' for 'read' actions\nand 'POST' for 'create', 'update' and 'destroy' actions. The Ext.data.proxy.Rest maps these to the\ncorrect RESTful methods.

\n"},"createRequestCallback":{"!type":"fn(request: +Ext.data.Request, operation: +Ext.data.Operation, callback: fn(), scope: ?) -> fn()","!doc":"

TODO: This is currently identical to the JsonPProxy version except for the return function's signature. There is a lot\nof code duplication inside the returned function so we need to find a way to DRY this up.

\n"},"getMethod":{"!type":"fn(request: +Ext.data.Request) -> string","!doc":"

Returns the HTTP method name for a given request. By default this returns based on a lookup on\nactionMethods.

\n"}}},"Client":{"!doc":"

Base class for any client-side storage. Used as a superclass for Memory and\nWeb Storage proxies. Do not use directly, use one of the subclasses instead.

\n","!type":"fn(config?: Ext_data_proxy_Client_cfg)","prototype":{"!proto":"Ext.data.proxy.Proxy.prototype","isSynchronous":{"!type":"bool","!doc":"

true in this class to identify that requests made on this proxy are\nperformed synchronously

\n"},"clear":{"!type":"fn() -> !this","!doc":"

Abstract function that must be implemented by each ClientProxy subclass. This should purge all record data\nfrom the client side storage, as well as removing any supporting data (such as lists of record IDs)

\n"}}},"Direct":{"!doc":"

This class is used to send requests to the server using Ext.Direct. When a\nrequest is made, the transport mechanism is handed off to the appropriate\nProvider to complete the call.

\n\n

Specifying the function

\n\n

This proxy expects a Direct remoting method to be passed in order to be able to complete requests.\nThis can be done by specifying the directFn configuration. This will use the same direct\nmethod for all requests. Alternatively, you can provide an api configuration. This\nallows you to specify a different remoting method for each CRUD action.

\n\n

Parameters

\n\n

This proxy provides options to help configure which parameters will be sent to the server.\nBy specifying the paramsAsHash option, it will send an object literal containing each\nof the passed parameters. The paramOrder option can be used to specify the order in which\nthe remoting method parameters are passed.

\n\n

Example Usage

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['firstName', 'lastName'],\n    proxy: {\n        type: 'direct',\n        directFn: MyApp.getUsers,\n        paramOrder: 'id' // Tells the proxy to pass the id as the first parameter to the remoting method.\n    }\n});\nUser.load(1);\n
\n","!type":"fn(config: Ext_data_proxy_Direct_cfg)","prototype":{"!proto":"Ext.data.proxy.Server.prototype","api":{"!type":"?","!doc":"

The same as Ext.data.proxy.Server.api, however instead of providing urls, you should provide a direct\nfunction call. See directFn.

\n"},"directFn":{"!type":"string|fn()","!doc":"

Function to call when executing a request. directFn is a simple alternative to defining the api configuration-parameter\nfor Store's which will not implement a full CRUD api. The directFn may also be a string reference to the fully qualified\nname of the function, for example: 'MyApp.company.GetProfile'. This can be useful when using dynamic loading. The string\nwill be looked up when the proxy is created.

\n"},"extraParams":{"!type":"?","!doc":"

Extra parameters that will be included on every read request. Individual requests with params\nof the same name will override these params when they are in conflict.

\n"},"paramOrder":{"!type":"string|[string]","!doc":"

Defaults to undefined. A list of params to be executed server side. Specify the params in the order in\nwhich they must be executed on the server-side as either (1) an Array of String values, or (2) a String\nof params delimited by either whitespace, comma, or pipe. For example, any of the following would be\nacceptable:

\n\n
paramOrder: ['param1','param2','param3']\nparamOrder: 'param1 param2 param3'\nparamOrder: 'param1,param2,param3'\nparamOrder: 'param1|param2|param'\n
\n"},"paramsAsHash":{"!type":"bool","!doc":"

Send parameters as a collection of named arguments.\nProviding a paramOrder nullifies this configuration.

\n"},"applyEncoding":{"!type":"?","!doc":"

Inherit docs. We don't apply any encoding here because\nall of the direct requests go out as jsonData

\n"},"paramOrderRe":{"!type":"+RegExp","!doc":"

private

\n"},"buildUrl":{"!type":"fn() -> string","!doc":"

inherit docs

\n"},"createRequestCallback":{"!type":"fn(request: ?, operation: ?, callback: ?, scope: ?) -> !this"},"doRequest":{"!type":"fn(operation: ?, callback: ?, scope: ?) -> !this","!doc":"

In ServerProxy subclasses, the create, read, update and destroy methods all\npass through to doRequest. Each ServerProxy subclass must implement the doRequest method - see Ext.data.proxy.JsonP and Ext.data.proxy.Ajax for examples. This method carries the same signature as\neach of the methods that delegate to it.

\n"},"extractResponseData":{"!type":"fn(response: ?) -> ?","!doc":"

inherit docs

\n"},"resolveMethods":{"!type":"fn() -> !this"},"setException":{"!type":"fn(operation: +Ext.data.Operation, response: ?) -> !this","!doc":"

inherit docs

\n"}}},"JsonP":{"!doc":"

The JsonP proxy is useful when you need to load data from a domain other than the one your application is running on. If\nyour application is running on http://domainA.com it cannot use Ajax to load its data\nfrom http://domainB.com because cross-domain ajax requests are prohibited by the browser.

\n\n

We can get around this using a JsonP proxy. JsonP proxy injects a <script> tag into the DOM whenever an AJAX request\nwould usually be made. Let's say we want to load data from http://domainB.com/users - the script tag that would be\ninjected might look like this:

\n\n
<script src=\"http://domainB.com/users?callback=someCallback\"></script>\n
\n\n

When we inject the tag above, the browser makes a request to that url and includes the response as if it was any\nother type of JavaScript include. By passing a callback in the url above, we're telling domainB's server that we want\nto be notified when the result comes in and that it should call our callback function with the data it sends back. So\nlong as the server formats the response to look like this, everything will work:

\n\n
someCallback({\n    users: [\n        {\n            id: 1,\n            name: \"Ed Spencer\",\n            email: \"ed@sencha.com\"\n        }\n    ]\n});\n
\n\n

As soon as the script finishes loading, the 'someCallback' function that we passed in the url is called with the JSON\nobject that the server returned.

\n\n

JsonP proxy takes care of all of this automatically. It formats the url you pass, adding the callback parameter\nautomatically. It even creates a temporary callback function, waits for it to be called and then puts the data into\nthe Proxy making it look just like you loaded it through a normal AjaxProxy. Here's how\nwe might set that up:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email']\n});\n\nvar store = Ext.create('Ext.data.Store', {\n    model: 'User',\n    proxy: {\n        type: 'jsonp',\n        url : 'http://domainB.com/users'\n    }\n});\n\nstore.load();\n
\n\n

That's all we need to do - JsonP proxy takes care of the rest. In this case the Proxy will have injected a script tag\nlike this:

\n\n
<script src=\"http://domainB.com/users?callback=callback1\"></script>\n
\n\n

Customization

\n\n

This script tag can be customized using the callbackKey configuration. For example:

\n\n
var store = Ext.create('Ext.data.Store', {\n    model: 'User',\n    proxy: {\n        type: 'jsonp',\n        url : 'http://domainB.com/users',\n        callbackKey: 'theCallbackFunction'\n    }\n});\n\nstore.load();\n
\n\n

Would inject a script tag like this:

\n\n
<script src=\"http://domainB.com/users?theCallbackFunction=callback1\"></script>\n
\n\n

Implementing on the server side

\n\n

The remote server side needs to be configured to return data in this format. Here are suggestions for how you might\nachieve this using Java, PHP and ASP.net:

\n\n

Java:

\n\n
boolean jsonP = false;\nString cb = request.getParameter(\"callback\");\nif (cb != null) {\n    jsonP = true;\n    response.setContentType(\"text/javascript\");\n} else {\n    response.setContentType(\"application/x-json\");\n}\nWriter out = response.getWriter();\nif (jsonP) {\n    out.write(cb + \"(\");\n}\nout.print(dataBlock.toJsonString());\nif (jsonP) {\n    out.write(\");\");\n}\n
\n\n

PHP:

\n\n
$callback = $_REQUEST['callback'];\n\n// Create the output object.\n$output = array('a' => 'Apple', 'b' => 'Banana');\n\n//start output\nif ($callback) {\n    header('Content-Type: text/javascript');\n    echo $callback . '(' . json_encode($output) . ');';\n} else {\n    header('Content-Type: application/x-json');\n    echo json_encode($output);\n}\n
\n\n

ASP.net:

\n\n
String jsonString = \"{success: true}\";\nString cb = Request.Params.Get(\"callback\");\nString responseString = \"\";\nif (!String.IsNullOrEmpty(cb)) {\n    responseString = cb + \"(\" + jsonString + \")\";\n} else {\n    responseString = jsonString;\n}\nResponse.Write(responseString);\n
\n","!type":"fn()","prototype":{"!proto":"Ext.data.proxy.Server.prototype","autoAppendParams":{"!type":"bool","!doc":"

True to automatically append the request's params to the generated url. Defaults to true

\n"},"callbackKey":{"!type":"string","!doc":"

See Ext.data.JsonP.callbackKey.

\n"},"defaultWriterType":{"!type":"string","!doc":"

The default registered writer type. Defaults to 'json'.

\n"},"recordParam":{"!type":"string","!doc":"

The HTTP parameter name to use when passing records to the server and the Json writer is not configured\nto encode records into a parameter.

\n\n

The encodeRecords method is used to encode the records to create this parameter's value.

\n"},"abort":{"!type":"fn() -> !this","!doc":"

Aborts the current server request if one is currently running

\n"},"buildUrl":{"!type":"fn(request: +Ext.data.Request) -> string","!doc":"

Generates a url based on a given Ext.data.Request object. Adds the params and callback function name to the url

\n"},"createRequestCallback":{"!type":"fn(request: +Ext.data.Request, operation: +Ext.data.Operation, callback: fn(), scope: ?) -> fn()","!doc":"

Creates and returns the function that is called when the request has completed. The returned function\nshould accept a Response object, which contains the response to be read by the configured Reader.\nThe third argument is the callback that should be called after the request has been completed and the Reader has decoded\nthe response. This callback will typically be the callback passed by a store, e.g. in proxy.read(operation, theCallback, scope)\ntheCallback refers to the callback argument received by this function.\nSee doRequest for details.

\n"},"doRequest":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Performs the read request to the remote domain. JsonP proxy does not actually create an Ajax request,\ninstead we write out a <script> tag based on the configuration of the internal Ext.data.Request object

\n"},"encodeRecords":{"!type":"fn(records: [+Ext.data.Model]) -> [?]","!doc":"

Encodes an array of records into a value suitable to be added to the request params as the recordParam parameter.\nThis is broken out into its own function so that it can be easily overridden.

\n\n

The default implementation

\n"},"setException":{"!type":"fn(operation: +Ext.data.Operation, response: ?) -> !this","!doc":"

inherit docs

\n"},"exception":{"!type":"fn(this: +Ext.data.proxy.Proxy, request: +Ext.data.Request, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires when the server returns an exception. This event may also be listened\nto in the event that a request has timed out or has been aborted.

\n"}}},"LocalStorage":{"!doc":"

The LocalStorageProxy uses the new HTML5 localStorage API to save Model data locally on the\nclient browser. HTML5 localStorage is a key-value store (e.g. cannot save complex objects like JSON), so\nLocalStorageProxy automatically serializes and deserializes data when saving and retrieving it.

\n\n

localStorage is extremely useful for saving user-specific information without needing to build server-side\ninfrastructure to support it. Let's imagine we're writing a Twitter search application and want to save the user's\nsearches locally so they can easily perform a saved search again later. We'd start by creating a Search model:

\n\n
Ext.define('Search', {\n    fields: ['id', 'query'],\n    extend: 'Ext.data.Model',\n    proxy: {\n        type: 'localstorage',\n        id  : 'twitter-Searches'\n    }\n});\n
\n\n

Our Search model contains just two fields - id and query - plus a Proxy definition. The only configuration we need to\npass to the LocalStorage proxy is an id. This is important as it separates the Model data in this Proxy from\nall others. The localStorage API puts all data into a single shared namespace, so by setting an id we enable\nLocalStorageProxy to manage the saved Search data.

\n\n

Saving our data into localStorage is easy and would usually be done with a Store:

\n\n
//our Store automatically picks up the LocalStorageProxy defined on the Search model\nvar store = Ext.create('Ext.data.Store', {\n    model: \"Search\"\n});\n\n//loads any existing Search data from localStorage\nstore.load();\n\n//now add some Searches\nstore.add({query: 'Sencha Touch'});\nstore.add({query: 'Ext JS'});\n\n//finally, save our Search data to localStorage\nstore.sync();\n
\n\n

The LocalStorageProxy automatically gives our new Searches an id when we call store.sync(). It encodes the Model data\nand places it into localStorage. We can also save directly to localStorage, bypassing the Store altogether:

\n\n
var search = Ext.create('Search', {query: 'Sencha Animator'});\n\n//uses the configured LocalStorageProxy to save the new Search to localStorage\nsearch.save();\n
\n\n

Limitations

\n\n

If this proxy is used in a browser where local storage is not supported, the constructor will throw an error. A local\nstorage proxy requires a unique ID which is used as a key in which all record data are stored in the local storage\nobject.

\n\n

It's important to supply this unique ID as it cannot be reliably determined otherwise. If no id is provided but the\nattached store has a storeId, the storeId will be used. If neither option is presented the proxy will throw an error.

\n","!type":"fn(config?: Ext_data_proxy_LocalStorage_cfg)","prototype":{"!proto":"Ext.data.proxy.WebStorage.prototype","getStorageObject":{"!type":"fn() -> ?","!doc":"

inherit docs

\n"}}},"Memory":{"!doc":"

In-memory proxy. This proxy simply uses a local variable for data storage/retrieval, so its contents are lost on\nevery page refresh.

\n\n

Usually this Proxy isn't used directly, serving instead as a helper to a Store where a reader\nis required to load data. For example, say we have a Store for a User model and have some inline data we want to\nload, but this data isn't in quite the right format: we can use a MemoryProxy with a JsonReader to read it into our\nStore:

\n\n
//this is the model we will be using in the store\nExt.define('User', {\n    extend: 'Ext.data.Model',\n    fields: [\n        {name: 'id',    type: 'int'},\n        {name: 'name',  type: 'string'},\n        {name: 'phone', type: 'string', mapping: 'phoneNumber'}\n    ]\n});\n\n//this data does not line up to our model fields - the phone field is called phoneNumber\nvar data = {\n    users: [\n        {\n            id: 1,\n            name: 'Ed Spencer',\n            phoneNumber: '555 1234'\n        },\n        {\n            id: 2,\n            name: 'Abe Elias',\n            phoneNumber: '666 1234'\n        }\n    ]\n};\n\n//note how we set the 'root' in the reader to match the data structure above\nvar store = Ext.create('Ext.data.Store', {\n    autoLoad: true,\n    model: 'User',\n    data : data,\n    proxy: {\n        type: 'memory',\n        reader: {\n            type: 'json',\n            root: 'users'\n        }\n    }\n});\n
\n","!type":"fn(config?: Ext_data_proxy_Memory_cfg)","prototype":{"!proto":"Ext.data.proxy.Client.prototype","data":{"!type":"?","!doc":"

Optional data to pass to configured Reader.

\n"},"enablePaging":{"!type":"bool","!doc":"

Configure as true to enable this MemoryProxy to honour a read operation's start and limit options.

\n\n

When true, read operations will be able to read pages of records from the data object.

\n"},"clear":{"!type":"fn() -> !this","!doc":"

Abstract function that must be implemented by each ClientProxy subclass. This should purge all record data\nfrom the client side storage, as well as removing any supporting data (such as lists of record IDs)

\n"},"create":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Currently this is a hard-coded method that simply commits any records and sets the operation to successful,\nthen calls the callback function, if provided. It is essentially mocking a server call in memory, but since\nthere is no real back end in this case there's not much else to do. This method can be easily overridden to\nimplement more complex logic if needed.

\n"},"destroy":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Currently this is a hard-coded method that simply commits any records and sets the operation to successful,\nthen calls the callback function, if provided. It is essentially mocking a server call in memory, but since\nthere is no real back end in this case there's not much else to do. This method can be easily overridden to\nimplement more complex logic if needed.

\n"},"read":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Reads data from the configured data object. Uses the Proxy's reader, if present.

\n"},"update":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Currently this is a hard-coded method that simply commits any records and sets the operation to successful,\nthen calls the callback function, if provided. It is essentially mocking a server call in memory, but since\nthere is no real back end in this case there's not much else to do. This method can be easily overridden to\nimplement more complex logic if needed.

\n"},"updateOperation":{"!type":"fn(operation: ?, callback: ?, scope: ?) -> !this","!doc":"

Fake processing function to commit the records, set the current operation\nto successful and call the callback if provided. This function is shared\nby the create, update and destroy methods to perform the bare minimum\nprocessing required for the proxy to register a result from the action.

\n"}}},"Proxy":{"!doc":"

Proxies are used by Stores to handle the loading and saving of Model\ndata. Usually developers will not need to create or interact with proxies directly.

\n\n

Types of Proxy

\n\n

There are two main types of Proxy - Client and Server.\nThe Client proxies save their data locally and include the following subclasses:

\n\n\n\n\n

The Server proxies save their data by sending requests to some remote server. These proxies include:

\n\n\n\n\n

Proxies operate on the principle that all operations performed are either Create, Read, Update or Delete. These four\noperations are mapped to the methods create, read, update and destroy\nrespectively. Each Proxy subclass implements these functions.

\n\n

The CRUD methods each expect an Operation object as the sole argument. The Operation\nencapsulates information about the action the Store wishes to perform, the model instances\nthat are to be modified, etc. See the Operation documentation for more details. Each CRUD\nmethod also accepts a callback function to be called asynchronously on completion.

\n\n

Proxies also support batching of Operations via a batch object, invoked by the batch\nmethod.

\n","!type":"fn(config?: Ext_data_proxy_Proxy_cfg)","prototype":{"!proto":"Ext.Base.prototype","batchActions":{"!type":"bool","!doc":"

True to batch actions of a particular type when synchronizing the store. Defaults to true.

\n"},"batchOrder":{"!type":"string","!doc":"

Comma-separated ordering 'create', 'update' and 'destroy' actions when batching. Override this to set a different\norder for the batched CRUD actions to be executed in. Defaults to 'create,update,destroy'.

\n"},"defaultReaderType":{"!type":"string","!doc":"

The default registered reader type. Defaults to 'json'.

\n"},"defaultWriterType":{"!type":"string","!doc":"

The default registered writer type. Defaults to 'json'.

\n"},"model":{"!type":"string|+Ext.data.Model","!doc":"

The name of the Model to tie to this Proxy. Can be either the string name of the Model, or a reference to the\nModel constructor. Required.

\n"},"reader":{"!type":"?|string|+Ext.data.reader.Reader","!doc":"

The Ext.data.reader.Reader to use to decode the server's response or data read from client. This can either be a\nReader instance, a config object or just a valid Reader type name (e.g. 'json', 'xml').

\n"},"writer":{"!type":"?|string|+Ext.data.writer.Writer","!doc":"

The Ext.data.writer.Writer to use to encode any request sent to the server or saved to client. This can either be\na Writer instance, a config object or just a valid Writer type name (e.g. 'json', 'xml').

\n"},"isProxy":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Proxy, or subclass thereof.

\n"},"isSynchronous":{"!type":"bool","!doc":"

Identifies the proxy as (a)synchronous.

\n"},"batch":{"!type":"fn(options: ?) -> +Ext.data.Batch","!doc":"

Performs a batch of Operations, in the order specified by batchOrder. Used\ninternally by Ext.data.Store's sync method. Example usage:

\n\n
myProxy.batch({\n    create : [myModel1, myModel2],\n    update : [myModel3],\n    destroy: [myModel4, myModel5]\n});\n
\n\n

Where the myModel* above are Model instances - in this case 1 and 2 are new instances and\nhave not been saved before, 3 has been saved previously but needs to be updated, and 4 and 5 have already been\nsaved but should now be destroyed.

\n\n

Note that the previous version of this method took 2 arguments (operations and listeners). While this is still\nsupported for now, the current signature is now a single options argument that can contain both operations and\nlisteners, in addition to other options. The multi-argument signature will likely be deprecated in a future release.

\n"},"clone":{"!type":"fn() -> !this"},"create":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Performs the given create operation.

\n"},"destroy":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Performs the given destroy operation.

\n"},"getModel":{"!type":"fn() -> +Ext.data.Model","!doc":"

Returns the model attached to this Proxy

\n"},"getReader":{"!type":"fn() -> +Ext.data.reader.Reader","!doc":"

Returns the reader currently attached to this proxy instance

\n"},"getWriter":{"!type":"fn() -> +Ext.data.writer.Writer","!doc":"

Returns the writer currently attached to this proxy instance

\n"},"onBatchComplete":{"!type":"fn(batchOptions: ?, batch: ?) -> !this","!doc":"

The internal callback that the proxy uses to call any specified user callbacks after completion of a batch

\n"},"onMetaChange":{"!type":"fn(meta: ?) -> !this","!doc":"

Called each time the reader's onMetaChange is called so that the proxy can fire the metachange event

\n"},"read":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Performs the given read operation.

\n"},"setModel":{"!type":"fn(model: string|+Ext.data.Model, setOnStore: bool) -> !this","!doc":"

Sets the model associated with this proxy. This will only usually be called by a Store

\n"},"setReader":{"!type":"fn(reader: string|?|+Ext.data.reader.Reader) -> +Ext.data.reader.Reader","!doc":"

Sets the Proxy's Reader by string, config object or Reader instance

\n"},"setWriter":{"!type":"fn(writer: string|?|+Ext.data.writer.Writer) -> +Ext.data.writer.Writer","!doc":"

Sets the Proxy's Writer by string, config object or Writer instance

\n"},"update":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

Performs the given update operation.

\n"},"metachange":{"!type":"fn(this: +Ext.data.proxy.Proxy, meta: ?, eOpts: ?)","!doc":"

Fires when this proxy's reader provides new metadata. Metadata usually consists\nof new field definitions, but can include any configuration data required by an\napplication, and can be processed as needed in the event handler.\nThis event is currently only fired for JsonReaders. Note that this event is also\npropagated by Ext.data.Store, which is typically where it would be handled.

\n"}}},"Rest":{"!doc":"

The Rest proxy is a specialization of the AjaxProxy which simply maps the four actions\n(create, read, update and destroy) to RESTful HTTP verbs. For example, let's set up a Model\nwith an inline Rest proxy

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email'],\n\n    proxy: {\n        type: 'rest',\n        url : '/users'\n    }\n});\n
\n\n

Now we can create a new User instance and save it via the Rest proxy. Doing this will cause the Proxy to send a POST\nrequest to '/users':

\n\n
var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});\n\nuser.save(); //POST /users\n
\n\n

Let's expand this a little and provide a callback for the Ext.data.Model.save call to update the Model once\nit has been created. We'll assume the creation went successfully and that the server gave this user an ID of 123:

\n\n
user.save({\n    success: function(user) {\n        user.set('name', 'Khan Noonien Singh');\n\n        user.save(); //PUT /users/123\n    }\n});\n
\n\n

Now that we're no longer creating a new Model instance, the request method is changed to an HTTP PUT, targeting the\nrelevant url for that user. Now let's delete this user, which will use the DELETE method:

\n\n
    user.destroy(); //DELETE /users/123\n
\n\n

Finally, when we perform a load of a Model or Store, Rest proxy will use the GET method:

\n\n
//1. Load via Store\n\n//the Store automatically picks up the Proxy from the User model\nvar store = Ext.create('Ext.data.Store', {\n    model: 'User'\n});\n\nstore.load(); //GET /users\n\n//2. Load directly from the Model\n\n//GET /users/123\nExt.ModelManager.getModel('User').load(123, {\n    success: function(user) {\n        console.log(user.getId()); //outputs 123\n    }\n});\n
\n\n

Url generation

\n\n

The Rest proxy is able to automatically generate the urls above based on two configuration options - appendId and\nformat. If appendId is true (it is by default) then Rest proxy will automatically append the ID of the Model\ninstance in question to the configured url, resulting in the '/users/123' that we saw above.

\n\n

If the request is not for a specific Model instance (e.g. loading a Store), the url is not appended with an id.\nThe Rest proxy will automatically insert a '/' before the ID if one is not already present.

\n\n
new Ext.data.proxy.Rest({\n    url: '/users',\n    appendId: true //default\n});\n\n// Collection url: /users\n// Instance url  : /users/123\n
\n\n

The Rest proxy can also optionally append a format string to the end of any generated url:

\n\n
new Ext.data.proxy.Rest({\n    url: '/users',\n    format: 'json'\n});\n\n// Collection url: /users.json\n// Instance url  : /users/123.json\n
\n\n

If further customization is needed, simply implement the buildUrl method and add your custom generated url\nonto the Request object that is passed to buildUrl. See Rest proxy's implementation for\nan example of how to achieve this.

\n\n

Note that Rest proxy inherits from AjaxProxy, which already injects all of the sorter,\nfilter, group and paging options into the generated url. See the AjaxProxy docs for more\ndetails.

\n","!type":"fn(config?: Ext_data_proxy_Rest_cfg)","prototype":{"!proto":"Ext.data.proxy.Ajax.prototype","appendId":{"!type":"bool","!doc":"

True to automatically append the ID of a Model instance when performing a request based on that single instance.\nSee Rest proxy intro docs for more details. Defaults to true.

\n"},"batchActions":{"!type":"bool","!doc":"

True to batch actions of a particular type when synchronizing the store. Defaults to false.

\n"},"format":{"!type":"string","!doc":"

Optional data format to send to the server when making any request (e.g. 'json'). See the Rest proxy intro docs\nfor full details. Defaults to undefined.

\n"},"actionMethods":{"!type":"?","!doc":"

Mapping of action name to HTTP request method. These default to RESTful conventions for the 'create', 'read',\n'update' and 'destroy' actions (which map to 'POST', 'GET', 'PUT' and 'DELETE' respectively). This object\nshould not be changed except globally via Ext.override - the getMethod function\ncan be overridden instead.

\n"},"buildUrl":{"!type":"fn(request: ?) -> !this","!doc":"

Specialized version of buildUrl that incorporates the appendId and format options into the\ngenerated url. Override this to provide further customizations, but remember to call the superclass buildUrl so\nthat additional parameters like the cache buster string are appended.

\n"},"isValidId":{"!type":"fn(id: ?) -> !this"}}},"Server":{"!doc":"

ServerProxy is a superclass of JsonPProxy and AjaxProxy, and\nwould not usually be used directly.

\n\n

ServerProxy should ideally be named HttpProxy as it is a superclass for all HTTP proxies - for Ext JS 4.x it has been\ncalled ServerProxy to enable any 3.x applications that reference the HttpProxy to continue to work (HttpProxy is now\nan alias of AjaxProxy).

\n","!type":"fn(config?: Ext_data_proxy_Server_cfg)","prototype":{"!proto":"Ext.data.proxy.Proxy.prototype","api":{"!type":"?","!doc":"

Specific urls to call on CRUD action methods \"create\", \"read\", \"update\" and \"destroy\". Defaults to:

\n\n
api: {\n    create  : undefined,\n    read    : undefined,\n    update  : undefined,\n    destroy : undefined\n}\n
\n\n

The url is built based upon the action being executed [create|read|update|destroy] using the commensurate\napi property, or if undefined default to the configured\nExt.data.Store.url.

\n\n

For example:

\n\n
api: {\n    create  : '/controller/new',\n    read    : '/controller/load',\n    update  : '/controller/update',\n    destroy : '/controller/destroy_action'\n}\n
\n\n

If the specific URL for a given CRUD action is undefined, the CRUD action request will be directed to the\nconfigured url.

\n"},"cacheString":{"!type":"string","!doc":"

The name of the cache param added to the url when using noCache. Defaults to \"_dc\".

\n"},"directionParam":{"!type":"string","!doc":"

The name of the direction parameter to send in a request. This is only used when simpleSortMode is set to\ntrue.

\n"},"extraParams":{"!type":"?","!doc":"

Extra parameters that will be included on every request. Individual requests with params of the same name\nwill override these params when they are in conflict.

\n"},"filterParam":{"!type":"string","!doc":"

The name of the 'filter' parameter to send in a request. Defaults to 'filter'. Set this to undefined if you don't\nwant to send a filter parameter.

\n"},"groupDirectionParam":{"!type":"string","!doc":"

The name of the direction parameter to send in a request. This is only used when simpleGroupMode is set to\ntrue.

\n"},"groupParam":{"!type":"string","!doc":"

The name of the 'group' parameter to send in a request. Defaults to 'group'. Set this to undefined if you don't\nwant to send a group parameter.

\n"},"idParam":{"!type":"string","!doc":"

The name of the parameter which carries the id of the entity being operated upon.

\n"},"limitParam":{"!type":"string","!doc":"

The name of the 'limit' parameter to send in a request. Defaults to 'limit'. Set this to undefined if you don't\nwant to send a limit parameter.

\n"},"noCache":{"!type":"bool","!doc":"

Disable caching by adding a unique parameter name to the request. Set to false to allow caching. Defaults to true.

\n"},"pageParam":{"!type":"string","!doc":"

The name of the 'page' parameter to send in a request. Defaults to 'page'. Set this to undefined if you don't\nwant to send a page parameter.

\n"},"simpleGroupMode":{"!type":"bool","!doc":"

Enabling simpleGroupMode in conjunction with remoteGroup will only send one group property and a direction when a\nremote group is requested. The groupDirectionParam and groupParam will be sent with the property name and either 'ASC'\nor 'DESC'.

\n"},"simpleSortMode":{"!type":"bool","!doc":"

Enabling simpleSortMode in conjunction with remoteSort will only send one sort property and a direction when a\nremote sort is requested. The directionParam and sortParam will be sent with the property name\nand either 'ASC' or 'DESC'.

\n"},"sortParam":{"!type":"string","!doc":"

The name of the 'sort' parameter to send in a request. Defaults to 'sort'. Set this to undefined if you don't\nwant to send a sort parameter.

\n"},"startParam":{"!type":"string","!doc":"

The name of the 'start' parameter to send in a request. Defaults to 'start'. Set this to undefined if you don't\nwant to send a start parameter.

\n"},"timeout":{"!type":"number","!doc":"

The number of milliseconds to wait for a response. Defaults to 30000 milliseconds (30 seconds).

\n"},"url":{"!type":"string","!doc":"

The URL from which to request the data object.

\n"},"afterRequest":{"!type":"fn(request: +Ext.data.Request, success: bool) -> !this","!doc":"

Optional callback function which can be used to clean up after a request has been completed.

\n"},"applyEncoding":{"!type":"fn(value: [?]) -> ?","!doc":"

Encode any values being sent to the server. Can be overridden in subclasses.

\n"},"buildRequest":{"!type":"fn(operation: +Ext.data.Operation) -> +Ext.data.Request","!doc":"

Creates an Request object from Operation.

\n\n

This gets called from doRequest methods in subclasses of Server proxy.

\n"},"buildUrl":{"!type":"fn(request: +Ext.data.Request) -> string","!doc":"

Generates a url based on a given Ext.data.Request object. By default, ServerProxy's buildUrl will add the\ncache-buster param to the end of the url. Subclasses may need to perform additional modifications to the url.

\n"},"create":{"!type":"fn() -> !this","!doc":"

in a ServerProxy all four CRUD operations are executed in the same manner, so we delegate to doRequest in each case

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Performs the given destroy operation.

\n"},"doRequest":{"!type":"fn(operation: +Ext.data.Operation, callback: fn(), scope: ?) -> !this","!doc":"

In ServerProxy subclasses, the create, read, update and destroy methods all\npass through to doRequest. Each ServerProxy subclass must implement the doRequest method - see Ext.data.proxy.JsonP and Ext.data.proxy.Ajax for examples. This method carries the same signature as\neach of the methods that delegate to it.

\n"},"encodeFilters":{"!type":"fn(filters: [+Ext.util.Filter]) -> string","!doc":"

Encodes the array of Ext.util.Filter objects into a string to be sent in the request url. By default,\nthis simply JSON-encodes the filter data

\n"},"encodeSorters":{"!type":"fn(sorters: [+Ext.util.Sorter]) -> string","!doc":"

Encodes the array of Ext.util.Sorter objects into a string to be sent in the request url. By default,\nthis simply JSON-encodes the sorter data

\n"},"extractResponseData":{"!type":"fn(response: ?) -> ?","!doc":"

Template method to allow subclasses to specify how to get the response for the reader.

\n"},"getParams":{"!type":"fn(operation: ?) -> !this","!doc":"

Copy any sorters, filters etc into the params so they can be sent over the wire

\n"},"getUrl":{"!type":"fn(request: +Ext.data.Request) -> string","!doc":"

Get the url for the request taking into account the order of priority,\n- The request\n- The api\n- The url

\n"},"onDestroy":{"!type":"fn() -> !this"},"processResponse":{"!type":"fn(success: ?, operation: ?, request: ?, response: ?, callback: ?, scope: ?) -> !this","!doc":"

Should this be documented as protected method?

\n"},"read":{"!type":"fn() -> !this","!doc":"

Performs the given read operation.

\n"},"setException":{"!type":"fn(operation: +Ext.data.Operation, response: ?) -> !this","!doc":"

Sets up an exception on the operation

\n"},"setExtraParam":{"!type":"fn(name: string, value: ?) -> !this","!doc":"

Sets a value in the underlying extraParams.

\n"},"update":{"!type":"fn() -> !this","!doc":"

Performs the given update operation.

\n"},"exception":{"!type":"fn(this: +Ext.data.proxy.Proxy, response: ?, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires when the server returns an exception. This event may also be listened\nto in the event that a request has timed out or has been aborted.

\n"}}},"SessionStorage":{"!doc":"

Proxy which uses HTML5 session storage as its data storage/retrieval mechanism. If this proxy is used in a browser\nwhere session storage is not supported, the constructor will throw an error. A session storage proxy requires a\nunique ID which is used as a key in which all record data are stored in the session storage object.

\n\n

It's important to supply this unique ID as it cannot be reliably determined otherwise. If no id is provided but the\nattached store has a storeId, the storeId will be used. If neither option is presented the proxy will throw an error.

\n\n

Proxies are almost always used with a store:

\n\n
new Ext.data.Store({\n    proxy: {\n        type: 'sessionstorage',\n        id  : 'myProxyKey'\n    }\n});\n
\n\n

Alternatively you can instantiate the Proxy directly:

\n\n
new Ext.data.proxy.SessionStorage({\n    id  : 'myOtherProxyKey'\n});\n
\n\n

Note that session storage is different to local storage (see Ext.data.proxy.LocalStorage) - if a browser\nsession is ended (e.g. by closing the browser) then all data in a SessionStorageProxy are lost. Browser restarts\ndon't affect the Ext.data.proxy.LocalStorage - the data are preserved.

\n","!type":"fn(config?: Ext_data_proxy_SessionStorage_cfg)","prototype":{"!proto":"Ext.data.proxy.WebStorage.prototype","getStorageObject":{"!type":"fn() -> ?","!doc":"

inherit docs

\n"}}},"WebStorage":{"!doc":"

WebStorageProxy is simply a superclass for the LocalStorage and SessionStorage proxies. It uses the new HTML5 key/value client-side storage objects to\nsave model instances for offline use.

\n","!type":"fn(config?: Ext_data_proxy_WebStorage_cfg)","prototype":{"!proto":"Ext.data.proxy.Client.prototype","id":{"!type":"string","!doc":"

The unique ID used as the key in which all record data are stored in the local storage object.

\n"},"cache":{"!type":"?","!doc":"

Cached map of records already retrieved by this Proxy. Ensures that the same instance is always retrieved.

\n"},"clear":{"!type":"fn() -> !this","!doc":"

Destroys all records stored in the proxy and removes all keys and values used to support the proxy from the\nstorage object.

\n"},"create":{"!type":"fn(operation: ?, callback: ?, scope: ?) -> !this","!doc":"

inherit docs

\n"},"destroy":{"!type":"fn(operation: ?, callback: ?, scope: ?) -> !this","!doc":"

inherit

\n"},"getIds":{"!type":"fn() -> [number]","!doc":"

Returns the array of record IDs stored in this Proxy

\n"},"getNextId":{"!type":"fn() -> number","!doc":"

Returns the next numerical ID that can be used when realizing a model instance (see getRecordCounterKey).\nIncrements the counter.

\n"},"getRecord":{"!type":"fn(id: string) -> ?","!doc":"

Fetches record data from the Proxy by ID.

\n"},"getRecordCounterKey":{"!type":"fn() -> string","!doc":"

Returns the unique key used to store the current record counter for this proxy. This is used internally when\nrealizing models (creating them when they used to be phantoms), in order to give each model instance a unique id.

\n"},"getRecordKey":{"!type":"fn(id: string|number|+Ext.data.Model) -> string","!doc":"

Given the id of a record, returns a unique string based on that id and the id of this proxy. This is used when\nstoring data in the local storage object and should prevent naming collisions.

\n"},"getStorageObject":{"!type":"fn() -> ?","!doc":"

Abstract function which should return the storage object that data will be saved to. This must be implemented\nin each subclass.

\n"},"getTreeData":{"!type":"fn() -> [+Ext.data.NodeInterface]","!doc":"

Gets tree data and transforms it from key value pairs into a hierarchical structure.

\n"},"getTreeKey":{"!type":"fn() -> string","!doc":"

Returns the unique key used to store the tree indicator. This is used internally to determine if the stored data is hierarchical

\n"},"initialize":{"!type":"fn() -> !this","!doc":"

Sets up the Proxy by claiming the key in the storage object that corresponds to the unique id of this Proxy. Called\nautomatically by the constructor, this should not need to be called again unless clear has been called.

\n"},"read":{"!type":"fn(operation: ?, callback: ?, scope: ?) -> !this","!doc":"

inherit docs

\n"},"removeRecord":{"!type":"fn(record: +Ext.data.Model) -> ?","!doc":"

Physically removes a given record from the local storage and recursively removes children if the record is a tree node. Used internally by destroy.

\n"},"setIds":{"!type":"fn(ids: [number]) -> !this","!doc":"

Saves the array of ids representing the set of all records in the Proxy

\n"},"setRecord":{"!type":"fn(record: +Ext.data.Model, id?: string) -> !this","!doc":"

Saves the given record in the Proxy.

\n"},"sortByParentId":{"!type":"fn(node1: ?, node2: ?) -> number","!doc":"

Sorter function for sorting records by parentId

\n"},"update":{"!type":"fn(operation: ?, callback: ?, scope: ?) -> !this","!doc":"

inherit docs

\n"}}}},"reader":{"Array":{"!doc":"

Data reader class to create an Array of Ext.data.Model objects from an Array.\nEach element of that Array represents a row of data fields. The\nfields are pulled into a Record object using as a subscript, the mapping property\nof the field definition if it exists, or the field's ordinal position in the definition.

\n\n\n\n\n

Example code:

\n\n\n\n\n
Employee = Ext.define('Employee', {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id',\n        {name: 'name', mapping: 1},         // \"mapping\" only needed if an \"id\" field is present which\n        {name: 'occupation', mapping: 2}    // precludes using the ordinal position as the index.        \n    ]\n});\n\nvar myReader = new Ext.data.reader.Array({\n    model: 'Employee'\n}, Employee);\n
\n\n\n\n\n

This would consume an Array like this:

\n\n\n\n\n
[ [1, 'Bill', 'Gardener'], [2, 'Ben', 'Horticulturalist'] ]\n
\n\n","!type":"fn(meta: ?)","prototype":{"!proto":"Ext.data.reader.Json.prototype","successProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the success attribute, the value of which indicates\nwhether a given request succeeded or failed (typically a boolean or 'true'|'false'). See\nExt.data.proxy.Server.exception for additional information.

\n"},"totalProperty":{"!type":"string","!doc":"

For Array Reader, methods in the base which use these properties must not see the defaults

\n"},"createFieldAccessExpression":{"!type":"fn(field: ?, fieldVarName: ?, dataName: ?) -> !this","!doc":"

Returns an accessor expression for the passed Field from an Array using either the Field's mapping, or\nits ordinal position in the fields collsction as the index.\nThis is used by buildExtractors to create optimized on extractor function which converts raw data into model instances.

\n"}}},"Json":{"!doc":"

The JSON Reader is used by a Proxy to read a server response that is sent back in JSON format. This usually\nhappens as a result of loading a Store - for example we might create something like this:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email']\n});\n\nvar store = Ext.create('Ext.data.Store', {\n    model: 'User',\n    proxy: {\n        type: 'ajax',\n        url : 'users.json',\n        reader: {\n            type: 'json'\n        }\n    }\n});\n
\n\n

The example above creates a 'User' model. Models are explained in the Model docs if you're\nnot already familiar with them.

\n\n

We created the simplest type of JSON Reader possible by simply telling our Store's\nProxy that we want a JSON Reader. The Store automatically passes the configured model to the\nStore, so it is as if we passed this instead:

\n\n
reader: {\n    type : 'json',\n    model: 'User'\n}\n
\n\n

The reader we set up is ready to read data from our server - at the moment it will accept a response like this:

\n\n
[\n    {\n        \"id\": 1,\n        \"name\": \"Ed Spencer\",\n        \"email\": \"ed@sencha.com\"\n    },\n    {\n        \"id\": 2,\n        \"name\": \"Abe Elias\",\n        \"email\": \"abe@sencha.com\"\n    }\n]\n
\n\n

Reading other JSON formats

\n\n

If you already have your JSON format defined and it doesn't look quite like what we have above, you can usually\npass JsonReader a couple of configuration options to make it parse your format. For example, we can use the\nroot configuration to parse data that comes back like this:

\n\n
{\n    \"users\": [\n       {\n           \"id\": 1,\n           \"name\": \"Ed Spencer\",\n           \"email\": \"ed@sencha.com\"\n       },\n       {\n           \"id\": 2,\n           \"name\": \"Abe Elias\",\n           \"email\": \"abe@sencha.com\"\n       }\n    ]\n}\n
\n\n

To parse this we just pass in a root configuration that matches the 'users' above:

\n\n
reader: {\n    type: 'json',\n    root: 'users'\n}\n
\n\n

Sometimes the JSON structure is even more complicated. Document databases like CouchDB often provide metadata\naround each record inside a nested structure like this:

\n\n
{\n    \"total\": 122,\n    \"offset\": 0,\n    \"users\": [\n        {\n            \"id\": \"ed-spencer-1\",\n            \"value\": 1,\n            \"user\": {\n                \"id\": 1,\n                \"name\": \"Ed Spencer\",\n                \"email\": \"ed@sencha.com\"\n            }\n        }\n    ]\n}\n
\n\n

In the case above the record data is nested an additional level inside the \"users\" array as each \"user\" item has\nadditional metadata surrounding it ('id' and 'value' in this case). To parse data out of each \"user\" item in the\nJSON above we need to specify the record configuration like this:

\n\n
reader: {\n    type  : 'json',\n    root  : 'users',\n    record: 'user'\n}\n
\n\n

Response MetaData

\n\n

The server can return metadata in its response, in addition to the record data, that describe attributes\nof the data set itself or are used to reconfigure the Reader. To pass metadata in the response you simply\nadd a metaData attribute to the root of the response data. The metaData attribute can contain anything,\nbut supports a specific set of properties that are handled by the Reader if they are present:

\n\n\n\n\n

An initial Reader configuration containing all of these properties might look like this (\"fields\" would be\nincluded in the Model definition, not shown):

\n\n
reader: {\n    type : 'json',\n    root : 'root',\n    idProperty     : 'id',\n    totalProperty  : 'total',\n    successProperty: 'success',\n    messageProperty: 'message'\n}\n
\n\n

If you were to pass a response object containing attributes different from those initially defined above, you could\nuse the metaData attribute to reconifgure the Reader on the fly. For example:

\n\n
{\n    \"count\": 1,\n    \"ok\": true,\n    \"msg\": \"Users found\",\n    \"users\": [{\n        \"userId\": 123,\n        \"name\": \"Ed Spencer\",\n        \"email\": \"ed@sencha.com\"\n    }],\n    \"metaData\": {\n        \"root\": \"users\",\n        \"idProperty\": 'userId',\n        \"totalProperty\": 'count',\n        \"successProperty\": 'ok',\n        \"messageProperty\": 'msg'\n    }\n}\n
\n\n

You can also place any other arbitrary data you need into the metaData attribute which will be ignored by the Reader,\nbut will be accessible via the Reader's metaData property (which is also passed to listeners via the Proxy's\nmetachange event (also relayed by the store). Application code can then process the passed metadata in any way it chooses.

\n\n

A simple example for how this can be used would be customizing the fields for a Model that is bound to a grid. By passing\nthe fields property the Model will be automatically updated by the Reader internally, but that change will not be\nreflected automatically in the grid unless you also update the column configuration. You could do this manually, or you\ncould simply pass a standard grid column config object as part of the metaData attribute\nand then pass that along to the grid. Here's a very simple example for how that could be accomplished:

\n\n
// response format:\n{\n    ...\n    \"metaData\": {\n        \"fields\": [\n            { \"name\": \"userId\", \"type\": \"int\" },\n            { \"name\": \"name\", \"type\": \"string\" },\n            { \"name\": \"birthday\", \"type\": \"date\", \"dateFormat\": \"Y-j-m\" },\n        ],\n        \"columns\": [\n            { \"text\": \"User ID\", \"dataIndex\": \"userId\", \"width\": 40 },\n            { \"text\": \"User Name\", \"dataIndex\": \"name\", \"flex\": 1 },\n            { \"text\": \"Birthday\", \"dataIndex\": \"birthday\", \"flex\": 1, \"format\": 'Y-j-m', \"xtype\": \"datecolumn\" }\n        ]\n    }\n}\n
\n\n

The Reader will automatically read the meta fields config and rebuild the Model based on the new fields, but to handle\nthe new column configuration you would need to handle the metadata within the application code. This is done simply enough\nby handling the metachange event on either the store or the proxy, e.g.:

\n\n
var store = Ext.create('Ext.data.Store', {\n    ...\n    listeners: {\n        'metachange': function(store, meta) {\n            myGrid.reconfigure(store, meta.columns);\n        }\n    }\n});\n
\n","!type":"fn(config?: Ext_data_reader_Json_cfg)","prototype":{"!proto":"Ext.data.reader.Reader.prototype","metaProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the metaData attribute. See metaData.

\n"},"record":{"!type":"string","!doc":"

The optional location within the JSON response that the record data itself can be found at.\nSee the JsonReader intro docs for more details. This is not often needed.

\n"},"root":{"!type":"string","!doc":"

The name of the property which contains the data items corresponding to the Model(s) for which this\nReader is configured. For JSON reader it's a property name (or a dot-separated list of property names\nif the root is nested). For XML reader it's a CSS selector. For Array reader the root is not applicable\nsince the data is assumed to be a single-level array of arrays.

\n\n

By default the natural root of the data will be used: the root JSON array, the root XML element, or the array.

\n\n

The data packet value for this property should be an empty array to clear the data or show no data.

\n"},"useSimpleAccessors":{"!type":"bool","!doc":"

True to ensure that field names/mappings are treated as literals when\nreading values.

\n\n

For example, by default, using the mapping \"foo.bar.baz\" will try and read a property foo from the root, then a property bar\nfrom foo, then a property baz from bar. Setting the simple accessors to true will read the property with the name\n\"foo.bar.baz\" direct from the root object.

\n"},"jsonData":{"!type":"?","!doc":"

A copy of this.rawData.

\n"},"buildExtractors":{"!type":"fn(force?: bool) -> !this","!doc":"

inherit docs

\n"},"createAccessor":{"!type":"fn() -> !this","!doc":"

Returns an accessor function for the given property string. Gives support for properties such as the following:

\n\n\n\n\n

This is used by buildExtractors to create optimized extractor functions for properties that are looked\nup directly on the source object (e.g. successProperty, messageProperty, etc.).

\n"},"createFieldAccessExpression":{"!type":"fn() -> !this","!doc":"

Returns an accessor expression for the passed Field. Gives support for properties such as the following:

\n\n\n\n\n

This is used by buildRecordDataExtractor to create optimized extractor expressions when converting raw\ndata into model instances. This method is used at the field level to dynamically map values to model fields.

\n"},"extractData":{"!type":"fn(root: ?) -> [+Ext.data.Model]","!doc":"

We're just preparing the data for the superclass by pulling out the record objects we want. If a record\nwas specified we have to pull those out of the larger JSON object, which is most of what this function is doing

\n"},"getResponseData":{"!type":"fn(response: ?) -> +Ext.data.ResultSet","!doc":"

inherit docs

\n"},"readRecords":{"!type":"fn(data: ?) -> +Ext.data.ResultSet","!doc":"

Reads a JSON object and returns a ResultSet. Uses the internal getTotal and getSuccess extractors to\nretrieve meta data from the response, and extractData to turn the JSON data into model instances.

\n"}}},"Reader":{"!doc":"

Readers are used to interpret data to be loaded into a Model instance or a Store - often in response to an AJAX request. In general there is usually no need to create\na Reader instance directly, since a Reader is almost always used together with a Proxy,\nand is configured using the Proxy's reader configuration property:

\n\n
Ext.create('Ext.data.Store', {\n    model: 'User',\n    proxy: {\n        type: 'ajax',\n        url : 'users.json',\n        reader: {\n            type: 'json',\n            root: 'users'\n        }\n    },\n});\n
\n\n

The above reader is configured to consume a JSON string that looks something like this:

\n\n
{\n    \"success\": true,\n    \"users\": [\n        { \"name\": \"User 1\" },\n        { \"name\": \"User 2\" }\n    ]\n}\n
\n\n

Loading Nested Data

\n\n

Readers have the ability to automatically load deeply-nested data objects based on the associations configured on each Model. Below is an example demonstrating the flexibility of these associations in a\nfictional CRM system which manages a User, their Orders, OrderItems and Products. First we'll define the models:

\n\n
Ext.define(\"User\", {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id', 'name'\n    ],\n\n    hasMany: {model: 'Order', name: 'orders'},\n\n    proxy: {\n        type: 'rest',\n        url : 'users.json',\n        reader: {\n            type: 'json',\n            root: 'users'\n        }\n    }\n});\n\nExt.define(\"Order\", {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id', 'total'\n    ],\n\n    hasMany  : {model: 'OrderItem', name: 'orderItems', associationKey: 'order_items'},\n    belongsTo: 'User'\n});\n\nExt.define(\"OrderItem\", {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id', 'price', 'quantity', 'order_id', 'product_id'\n    ],\n\n    belongsTo: ['Order', {model: 'Product', associationKey: 'product'}]\n});\n\nExt.define(\"Product\", {\n    extend: 'Ext.data.Model',\n    fields: [\n        'id', 'name'\n    ],\n\n    hasMany: 'OrderItem'\n});\n
\n\n

This may be a lot to take in - basically a User has many Orders, each of which is composed of several OrderItems.\nFinally, each OrderItem has a single Product. This allows us to consume data like this:

\n\n
{\n    \"users\": [\n        {\n            \"id\": 123,\n            \"name\": \"Ed\",\n            \"orders\": [\n                {\n                    \"id\": 50,\n                    \"total\": 100,\n                    \"order_items\": [\n                        {\n                            \"id\"      : 20,\n                            \"price\"   : 40,\n                            \"quantity\": 2,\n                            \"product\" : {\n                                \"id\": 1000,\n                                \"name\": \"MacBook Pro\"\n                            }\n                        },\n                        {\n                            \"id\"      : 21,\n                            \"price\"   : 20,\n                            \"quantity\": 3,\n                            \"product\" : {\n                                \"id\": 1001,\n                                \"name\": \"iPhone\"\n                            }\n                        }\n                    ]\n                }\n            ]\n        }\n    ]\n}\n
\n\n

The JSON response is deeply nested - it returns all Users (in this case just 1 for simplicity's sake), all of the\nOrders for each User (again just 1 in this case), all of the OrderItems for each Order (2 order items in this case),\nand finally the Product associated with each OrderItem. Now we can read the data and use it as follows:

\n\n
var store = Ext.create('Ext.data.Store', {\n    model: \"User\"\n});\n\nstore.load({\n    callback: function() {\n        //the user that was loaded\n        var user = store.first();\n\n        console.log(\"Orders for \" + user.get('name') + \":\")\n\n        //iterate over the Orders for each User\n        user.orders().each(function(order) {\n            console.log(\"Order ID: \" + order.getId() + \", which contains items:\");\n\n            //iterate over the OrderItems for each Order\n            order.orderItems().each(function(orderItem) {\n                //we know that the Product data is already loaded, so we can use the synchronous getProduct\n                //usually, we would use the asynchronous version (see Ext.data.association.BelongsTo)\n                var product = orderItem.getProduct();\n\n                console.log(orderItem.get('quantity') + ' orders of ' + product.get('name'));\n            });\n        });\n    }\n});\n
\n\n

Running the code above results in the following:

\n\n
Orders for Ed:\nOrder ID: 50, which contains items:\n2 orders of MacBook Pro\n3 orders of iPhone\n
\n","!type":"fn(config?: Ext_data_reader_Reader_cfg)","prototype":{"!proto":"Ext.Base.prototype","idProperty":{"!type":"string","!doc":"

Name of the property within a row object that contains a record identifier value. Defaults to the id of the\nmodel. If an idProperty is explicitly specified it will take precedence over idProperty defined on the model.

\n"},"implicitIncludes":{"!type":"bool","!doc":"

True to automatically parse models nested within other models in a response object. See the\nExt.data.reader.Reader intro docs for full explanation.

\n"},"messageProperty":{"!type":"string","!doc":"

The name of the property which contains a response message. This property is optional.

\n"},"readRecordsOnFailure":{"!type":"bool","!doc":"

True to extract the records from a data packet even if the successProperty returns false.

\n"},"root":{"!type":"string","!doc":"

The name of the property which contains the data items corresponding to the Model(s) for which this\nReader is configured. For JSON reader it's a property name (or a dot-separated list of property names\nif the root is nested). For XML reader it's a CSS selector. For Array reader the root is not applicable\nsince the data is assumed to be a single-level array of arrays.

\n\n

By default the natural root of the data will be used: the root JSON array, the root XML element, or the array.

\n\n

The data packet value for this property should be an empty array to clear the data or show no data.

\n"},"successProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the success attribute, the value of which indicates\nwhether a given request succeeded or failed (typically a boolean or 'true'|'false'). See\nExt.data.proxy.Server.exception for additional information.

\n"},"totalProperty":{"!type":"string","!doc":"

Name of the property from which to retrieve the total number of records in the dataset. This is only needed if\nthe whole dataset is not passed in one go, but is being paged from the remote server.

\n"},"applyDefaults":{"!type":"bool","!doc":"

Private flag to the generated convertRecordData function to indicate whether to apply Field default\nvalues to fields for which no value is present in the raw data.\nThis is set to false by a Server Proxy which is reading the response from a \"create\" or \"update\" operation.

\n"},"isReader":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Reader, or subclass thereof.

\n"},"lastFieldGeneration":{"!type":"?"},"metaData":{"!type":"?","!doc":"

The raw meta data that was most recently read, if any. Meta data can include existing\nReader config options like idProperty, totalProperty, etc. that get\nautomatically applied to the Reader, and those can still be accessed directly from the Reader\nif needed. However, meta data is also often used to pass other custom data to be processed\nby application code. For example, it is common when reconfiguring the data model of a grid to\nalso pass a corresponding column model config to be applied to the grid. Any such data will\nnot get applied to the Reader directly (it just gets passed through and is ignored by Ext).\nThis metaData property gives you access to all meta data that was passed, including any such\ncustom data ignored by the reader.

\n\n

This is a read-only property, and it will get replaced each time a new meta data object is\npassed to the reader. Note that typically you would handle proxy's\nmetachange event which passes this exact same meta\nobject to listeners. However this property is available if it's more convenient to access it\nvia the reader directly in certain cases.

\n"},"rawData":{"!type":"?","!doc":"

The raw data object that was last passed to readRecords. Stored for further processing if needed.

\n"},"recordDataExtractorTemplate":{"!type":"[?]"},"buildExtractors":{"!type":"fn(force?: bool) -> !this","!doc":"

This builds optimized functions for retrieving record data and meta data from an object.\nSubclasses may need to implement their own getRoot function.

\n"},"buildRecordDataExtractor":{"!type":"fn() -> !this","!doc":"

Return a function which will read a raw row object in the format this Reader accepts, and populates\na record's data object with converted data values.

\n\n

The returned function must be passed the following parameters:

\n\n\n\n"},"destroyReader":{"!type":"fn() -> !this"},"extractData":{"!type":"fn(root: [?]|?) -> [?]","!doc":"

Returns extracted, type-cast rows of data.

\n"},"getAssociatedDataRoot":{"!type":"fn(data: ?, associationName: string) -> ?","!doc":"

Used internally by readAssociated. Given a data object (which could be json, xml etc) for a specific\nrecord, this should return the relevant part of that data for the given association name. If a complex\nmapping, this will traverse arrays and objects to resolve the data.

\n"},"getData":{"!type":"fn(data: ?) -> ?","!doc":"

By default this function just returns what is passed to it. It can be overridden in a subclass\nto return something else. See XmlReader for an example.

\n"},"getFields":{"!type":"fn() -> !this"},"getIdProperty":{"!type":"fn() -> string","!doc":"

Get the idProperty to use for extracting data

\n"},"getResponseData":{"!type":"fn(response: ?) -> +Ext.data.ResultSet","!doc":"

Takes a raw response object (as passed to the read method) and returns the useful data\nsegment from it. This must be implemented by each subclass.

\n"},"getRoot":{"!type":"fn(data: ?) -> ?","!doc":"

This will usually need to be implemented in a subclass. Given a generic data object (the type depends on the type\nof data we are reading), this function should return the object as configured by the Reader's 'root' meta data config.\nSee XmlReader's getRoot implementation for an example. By default the same data object will simply be returned.

\n"},"onMetaChange":{"!type":"fn(meta: ?) -> !this","!doc":"

Reconfigures the meta data tied to this Reader

\n"},"read":{"!type":"fn(response: ?) -> +Ext.data.ResultSet","!doc":"

Reads the given response object. This method normalizes the different types of response object that may be passed to it.\nIf it's an XMLHttpRequest object, hand off to the subclass' getResponseData method.\nElse, hand off the reading of records to the readRecords method.

\n"},"readAssociated":{"!type":"fn(record: +Ext.data.Model, data: ?) -> string","!doc":"

Loads a record's associations from the data object. This prepopulates hasMany and belongsTo associations\non the record provided.

\n"},"readRecords":{"!type":"fn(data: ?) -> +Ext.data.ResultSet","!doc":"

Abstracts common functionality used by all Reader subclasses. Each subclass is expected to call this function\nbefore running its own logic and returning the Ext.data.ResultSet instance. For most Readers additional\nprocessing should not be needed.

\n"},"setModel":{"!type":"fn(model: ?, setOnProxy: bool) -> !this","!doc":"

Sets a new model for the reader.

\n"},"exception":{"!type":"fn(reader: +Ext.data.reader.Reader, response: +XMLHttpRequest, error: +Ext.data.ResultSet, eOpts: ?)","!doc":"

Fires when the reader receives improperly encoded data from the server

\n"}}},"Xml":{"!doc":"

The XML Reader is used by a Proxy to read a server response that is sent back in XML format. This usually happens as\na result of loading a Store - for example we might create something like this:

\n\n
Ext.define('User', {\n    extend: 'Ext.data.Model',\n    fields: ['id', 'name', 'email']\n});\n\nvar store = Ext.create('Ext.data.Store', {\n    model: 'User',\n    proxy: {\n        type: 'ajax',\n        url : 'users.xml',\n        reader: {\n            type: 'xml',\n            record: 'user',\n            root: 'users'\n        }\n    }\n});\n
\n\n

The example above creates a 'User' model. Models are explained in the Model docs if you're not\nalready familiar with them.

\n\n

We created the simplest type of XML Reader possible by simply telling our Store's Proxy that we want a XML Reader. The Store automatically passes the configured model to the\nStore, so it is as if we passed this instead:

\n\n
reader: {\n    type : 'xml',\n    model: 'User',\n    record: 'user',\n    root: 'users'\n}\n
\n\n

The reader we set up is ready to read data from our server - at the moment it will accept a response like this:

\n\n
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<users>\n    <user>\n        <id>1</id>\n        <name>Ed Spencer</name>\n        <email>ed@sencha.com</email>\n    </user>\n    <user>\n        <id>2</id>\n        <name>Abe Elias</name>\n        <email>abe@sencha.com</email>\n    </user>\n</users>\n
\n\n

First off there's root option to define the root node <users> (there should be only one in a well-formed\nXML document). Then the XML Reader uses the configured record option to pull out the data for each record -\nin this case we set record to 'user', so each <user> above will be converted into a User model.

\n\n

Note that XmlReader doesn't care whether your root and record elements are nested deep inside a\nlarger structure, so a response like this will still work:

\n\n
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<deeply>\n    <nested>\n        <xml>\n            <users>\n                <user>\n                    <id>1</id>\n                    <name>Ed Spencer</name>\n                    <email>ed@sencha.com</email>\n                </user>\n                <user>\n                    <id>2</id>\n                    <name>Abe Elias</name>\n                    <email>abe@sencha.com</email>\n                </user>\n            </users>\n        </xml>\n    </nested>\n</deeply>\n
\n\n

If this Reader is being used by a TreeStore to read tree-structured data in which records\nare nested as descendant nodes of other records, then this lenient behaviour must be overridden by using a more specific\nchild node selector as your record selector which will not select all descendants, such as:

\n\n

record: '>user'

\n\n

Response metadata

\n\n

The server can return additional data in its response, such as the total number of records and\nthe success status of the response. These are typically included in the XML response like\nthis:

\n\n
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<users>\n    <total>100</total>\n    <success>true</success>\n    <user>\n        <id>1</id>\n        <name>Ed Spencer</name>\n        <email>ed@sencha.com</email>\n    </user>\n    <user>\n        <id>2</id>\n        <name>Abe Elias</name>\n        <email>abe@sencha.com</email>\n    </user>\n</users>\n
\n\n

If these properties are present in the XML response they can be parsed out by the XmlReader and used by the Store\nthat loaded it. We can set up the names of these properties by specifying a final pair of configuration options:

\n\n
reader: {\n    type: 'xml',\n    root: 'users',\n    totalProperty  : 'total',\n    successProperty: 'success'\n}\n
\n\n

These final options are not necessary to make the Reader work, but can be useful when the server needs to report an\nerror or if it needs to indicate that there is a lot of data available of which only a subset is currently being\nreturned.

\n\n

Response format

\n\n

Note: in order for the browser to parse a returned XML document, the Content-Type header in the HTTP response\nmust be set to \"text/xml\" or \"application/xml\". This is very important - the XmlReader will not work correctly\notherwise.

\n","!type":"fn(config?: Ext_data_reader_Xml_cfg)","prototype":{"!proto":"Ext.data.reader.Reader.prototype","namespace":{"!type":"string","!doc":"

A namespace prefix that will be prepended to the field name when reading a\nfield from an XML node. Take, for example, the following Model:

\n\n
Ext.define('Foo', {\n    extend: 'Ext.data.Model',\n    fields: ['bar', 'baz']\n});\n
\n\n

The reader would need to be configured with a namespace of 'n' in order to read XML\ndata in the following format:

\n\n
<foo>\n    <n:bar>bar</n:bar>\n    <n:baz>baz</n:baz>\n</foo>\n
\n"},"record":{"!type":"string","!doc":"

The DomQuery path to the repeated element which contains record information.

\n\n

By default, the elements which match the selector may be nested at any level below the root

\n\n

If this Reader is being used by a TreeStore to read tree-structured data,\nthen only first generation child nodes of the root element must be selected, so the record selector must be\nspecified with a more specific selector which will not select all descendants. For example:

\n\n

record: '>node'

\n"},"xmlData":{"!type":"?","!doc":"

Copy of rawData.

\n"},"createAccessor":{"!type":"fn(key: string) -> fn()","!doc":"

Creates a function to return some particular key of data from a response. The totalProperty and\nsuccessProperty are treated as special cases for type casting, everything else is just a simple selector.

\n"},"createFieldAccessExpression":{"!type":"fn(field: ?, fieldVarName: ?, dataName: ?) -> !this","!doc":"

Returns an accessor expression for the passed Field from an XML element using either the Field's mapping, or\nits ordinal position in the fields collsction as the index.\nThis is used by buildExtractors to create optimized on extractor function which converts raw data into model instances.

\n"},"extractData":{"!type":"fn(root: +XMLElement) -> [+Ext.data.Model]","!doc":"

We're just preparing the data for the superclass by pulling out the record nodes we want.

\n"},"getAssociatedDataRoot":{"!type":"fn(data: ?, associationName: string) -> +XMLElement","!doc":"

See Ext.data.reader.Reader's getAssociatedDataRoot docs.

\n"},"getData":{"!type":"fn(data: ?) -> ?","!doc":"

Normalizes the data object.

\n"},"getNodeValue":{"!type":"fn(node: ?) -> !this"},"getResponseData":{"!type":"fn(response: ?) -> +Ext.data.ResultSet","!doc":"

inherit docs

\n"},"getRoot":{"!type":"fn(data: ?) -> +XMLElement","!doc":"

Given an XML object, returns the Element that represents the root as configured by the Reader's meta data.

\n"},"readRecords":{"!type":"fn(doc: ?) -> +Ext.data.ResultSet","!doc":"

Parses an XML document and returns a ResultSet containing the model instances.

\n"}}}},"validations":{"!doc":"

This singleton contains a set of validation functions that can be used to validate any type of data. They are most\noften used in Models, where they are automatically set up and executed.

\n","emailMessage":{"!type":"string","!doc":"

The default error message used when an email validation fails

\n"},"emailRe":{"!type":"+RegExp","!doc":"

The regular expression used to validate email addresses

\n"},"exclusionMessage":{"!type":"string","!doc":"

The default error message used when an exclusion validation fails.

\n"},"formatMessage":{"!type":"string","!doc":"

The default error message used when a format validation fails.

\n"},"inclusionMessage":{"!type":"string","!doc":"

The default error message used when an inclusion validation fails.

\n"},"lengthMessage":{"!type":"string","!doc":"

The default error message used when a length validation fails.

\n"},"presenceMessage":{"!type":"string","!doc":"

The default error message used when a presence validation fails.

\n"},"email":{"!type":"fn(config: ?, email: string) -> bool","!doc":"

Validates that an email string is in the correct format

\n"},"exclusion":{"!type":"fn(config: ?, value: string) -> bool","!doc":"

Validates that the given value is not present in the configured list.\nFor example:

\n\n
validations: [{type: 'exclusion', field: 'username', list: ['Admin', 'Operator']}]\n
\n"},"format":{"!type":"fn(config: ?, value: string) -> bool","!doc":"

Returns true if the given value passes validation against the configured matcher regex.\nFor example:

\n\n
validations: [{type: 'format', field: 'username', matcher: /([a-z]+)[0-9]{2,3}/}]\n
\n"},"inclusion":{"!type":"fn(config: ?, value: string) -> bool","!doc":"

Validates that the given value is present in the configured list.\nFor example:

\n\n
validations: [{type: 'inclusion', field: 'gender', list: ['Male', 'Female']}]\n
\n"},"length":{"!type":"fn(config: ?, value: string) -> bool","!doc":"

Returns true if the given value is between the configured min and max values.\nFor example:

\n\n
validations: [{type: 'length', field: 'name', min: 2}]\n
\n"},"presence":{"!type":"fn(config: ?, value: ?) -> bool","!doc":"

Validates that the given value is present.\nFor example:

\n\n
validations: [{type: 'presence', field: 'age'}]\n
\n"}},"writer":{"Json":{"!doc":"

This class is used to write Ext.data.Model data to the server in a JSON format.\nThe allowSingle configuration can be set to false to force the records to always be\nencoded in an array, even if there is only a single record being sent.

\n","!type":"fn(config?: Ext_data_writer_Json_cfg)","prototype":{"!proto":"Ext.data.writer.Writer.prototype","allowSingle":{"!type":"bool","!doc":"

Configure with false to ensure that records are always wrapped in an array, even if there is only\none record being sent. When there is more than one record, they will always be encoded into an array.

\n"},"encode":{"!type":"bool","!doc":"

Configure true to send record data (all record fields if writeAllFields is true)\nas a JSON encoded HTTP parameter named by the root configuration.

\n\n

The encode option should only be set to true when a root is defined, because the values will be\nsent as part of the request parameters as opposed to a raw post. The root will be the name of the parameter\nsent to the server.

\n"},"expandData":{"!type":"bool","!doc":"

By default, when dot-delimited field mappings are\nused (e.g. name: 'myProperty', mapping: 'my.nested.property') the writer will simply output a flat data\nobject containing the mapping string literal as the property name (e.g. { 'my.nested.property': 'foo' }).

\n\n

Mappings are used to map incoming nested JSON to flat Ext models. In many case, the data output by the\nwriter should preferrably match the original nested data format. Setting this config to true will ensure\nthat the output will instead look like { my: { nested: { property: 'foo' }}}. The output is generated\nby getExpandedData, which can optionally be overridden to apply more customized logic.

\n"},"root":{"!type":"string","!doc":"

The HTTP parameter name by which JSON encoded records will be passed to the server if the\nencode option is true.

\n"},"getExpandedData":{"!type":"fn(data: ?) -> !this","!doc":"

The Reader classes support dot-delimited data mappings for extracting nested raw data into fields, so the\nwriter must support converting the flat Ext.data.Model structure back into the original nested data\nformat. Using the same mappings when available, the Writer will simply split each delimiter into a nested\nobject in the output, which should exactly match the input format. For example, record data like this:

\n\n
my.nested.property: 'foo',\nmy.nested.another: 'bar',\nmy.somethingElse: 123\n
\n\n

should write out as...

\n\n
my: {\n    nested: {\n        property: 'foo',\n        another: 'bar\n    },\n    somethingElse: 123\n}\n
\n\n

This behavior is governed by the expandData config. By default, this option is false for\ncompatibility reasons, and will output a flat structure matching the flat record format. Setting this config\nto true will enable the expanded mapping behavior as shown here. This method could also be overridden\nto provide an even more customized output data structure.

\n"},"writeRecords":{"!type":"fn(request: ?, data: ?) -> !this","!doc":"

inherit docs

\n"}}},"Writer":{"!doc":"

Base Writer class used by most subclasses of Ext.data.proxy.Server. This class is responsible for taking a\nset of Ext.data.Operation objects and a Ext.data.Request object and modifying that request based on\nthe Operations.

\n\n

For example a Ext.data.writer.Json would format the Operations and their Ext.data.Model instances based on\nthe config options passed to the JsonWriter's constructor.

\n\n

Writers are not needed for any kind of local storage - whether via a Web Storage\nproxy (see localStorage and sessionStorage) or just in memory via a MemoryProxy.

\n\n

Dates

\n\n

Before sending dates to the server, they can be formatted using one of the Ext.Date formats.\nThese formats can be specified both on the field and the writer itself. In terms of precedence, from highest to lowest:

\n\n\n\n","!type":"fn(config?: Ext_data_writer_Writer_cfg)","prototype":{"!proto":"Ext.Base.prototype","dateFormat":{"!type":"string","!doc":"

This is used for each field of type date in the model to format the value before\nit is sent to the server.

\n"},"nameProperty":{"!type":"string","!doc":"

This property is used to read the key for each value that will be sent to the server. For example:

\n\n
Ext.define('Person', {\n    extend: 'Ext.data.Model',\n    fields: [{\n        name: 'first',\n        mapping: 'firstName'\n    }, {\n        name: 'last',\n        mapping: 'lastName'\n    }, {\n        name: 'age'\n    }]\n});\nnew Ext.data.writer.Writer({\n    writeAllFields: true,\n    nameProperty: 'mapping'\n});\n\n// This will be sent to the server\n{\n    firstName: 'first name value',\n    lastName: 'last name value',\n    age: 1\n}\n
\n\n

If the value is not present, the field name will always be used.

\n"},"writeAllFields":{"!type":"bool","!doc":"

True to write all fields from the record to the server. If set to false it will only send the fields that were\nmodified. Note that any fields that have Ext.data.Field.persist set to false will still be ignored.

\n"},"writeRecordId":{"!type":"bool","!doc":"

By default, each record's id is always included in the output for non-phantom records since in most\ncases the id will be required on the server to process the record action. This is helpful since the id\nwill normally not be modified, and so would not be sent to the server unless writeAllFields\nwas explicitly enabled.

\n\n

However, there are cases where it is not desirable for the record id to be passed in the data directly.\nFor example, when using a RESTful API the record id would typically be appended to the url instead.

\n"},"isWriter":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Writer, or subclass thereof.

\n"},"getRecordData":{"!type":"fn(record: +Ext.data.Model, operation?: +Ext.data.Operation) -> ?","!doc":"

Formats the data for each record before sending it to the server. This\nmethod should be overridden to format the data in a way that differs from the default.

\n"},"write":{"!type":"fn(request: +Ext.data.Request) -> +Ext.data.Request","!doc":"

Prepares a Proxy's Ext.data.Request object

\n"},"writeValue":{"!type":"fn(data: ?, field: ?, record: ?) -> !this"}}},"Xml":{"!doc":"

This class is used to write Ext.data.Model data to the server in an XML format.\nThe documentRoot property is used to specify the root element in the XML document.\nThe record option is used to specify the element name for each record that will make\nup the XML document.

\n","!type":"fn(config?: Ext_data_writer_Xml_cfg)","prototype":{"!proto":"Ext.data.writer.Writer.prototype","defaultDocumentRoot":{"!type":"string","!doc":"

The root to be used if documentRoot is empty and a root is required\nto form a valid XML document.

\n"},"documentRoot":{"!type":"string","!doc":"

The name of the root element of the document. Defaults to 'xmlData'.\nIf there is more than 1 record and the root is not specified, the default document root will still be used\nto ensure a valid XML document is created.

\n"},"header":{"!type":"string","!doc":"

A header to use in the XML document (such as setting the encoding or version).\nDefaults to ''.

\n"},"record":{"!type":"string","!doc":"

The name of the node to use for each record. Defaults to 'record'.

\n"},"writeRecords":{"!type":"fn(request: ?, data: ?) -> !this","!doc":"

inherit docs

\n"}}}}},"dd":{"DD":{"!doc":"

A DragDrop implementation where the linked element follows the\nmouse cursor during a drag.

\n","!type":"fn(id: string, sGroup: string, config: Ext_dd_DD_cfg)","prototype":{"!proto":"Ext.dd.DragDrop.prototype","scroll":{"!type":"bool","!doc":"

When set to true, the utility automatically tries to scroll the browser\nwindow when a drag and drop element is dragged near the viewport boundary.

\n"},"alignElWithMouse":{"!type":"fn(el: +HTMLElement, iPageX: number, iPageY: number) -> !this","!doc":"

Sets the element to the location of the mousedown or click event,\nmaintaining the cursor location relative to the location on the element\nthat was clicked. Override this if you want to place the element in a\nlocation other than where the cursor is.

\n"},"applyConfig":{"!type":"fn() -> !this","!doc":"

Sets up config options specific to this class. Overrides\nExt.dd.DragDrop, but all versions of this method through the\ninheritance chain are called

\n"},"autoOffset":{"!type":"fn(iPageX: number, iPageY: number) -> !this","!doc":"

Sets the pointer offset to the distance between the linked element's top\nleft corner and the location the element was clicked.

\n"},"autoScroll":{"!type":"fn(x: number, y: number, h: number, w: number) -> !this","!doc":"

Auto-scroll the window if the dragged object has been moved beyond the\nvisible window boundary.

\n"},"b4Drag":{"!type":"fn(e: ?) -> !this","!doc":"

Event that fires prior to the onDrag event. Overrides\nExt.dd.DragDrop.

\n"},"b4MouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

Event that fires prior to the onMouseDown event. Overrides\nExt.dd.DragDrop.

\n"},"cachePosition":{"!type":"fn(iPageX?: number, iPageY?: number) -> !this","!doc":"

Saves the most recent position so that we can reset the constraints and\ntick marks on-demand. We need to know this so that we can calculate the\nnumber of pixels the element is offset from its original position.

\n"},"getLocalX":{"!type":"fn(el: ?) -> !this"},"getTargetCoord":{"!type":"fn(iPageX: number, iPageY: number) -> ?","!doc":"

Finds the location the element should be placed if we want to move\nit to where the mouse location less the click offset would place us.

\n"},"setDelta":{"!type":"fn(iDeltaX: number, iDeltaY: number) -> !this","!doc":"

Sets the pointer offset. You can call this directly to force the\noffset to be in a particular location (e.g., pass in 0,0 to set it\nto the center of the object)

\n"},"setDragElPos":{"!type":"fn(iPageX: number, iPageY: number) -> !this","!doc":"

Sets the drag element to the location of the mousedown or click event,\nmaintaining the cursor location relative to the location on the element\nthat was clicked. Override this if you want to place the element in a\nlocation other than where the cursor is.

\n"},"setLocalXY":{"!type":"fn(el: ?, x: ?, y: ?) -> !this"},"toString":{"!type":"fn() -> string","!doc":"

toString method

\n"}}},"DDProxy":{"!doc":"

A DragDrop implementation that inserts an empty, bordered div into\nthe document that follows the cursor during drag operations. At the time of\nthe click, the frame div is resized to the dimensions of the linked html\nelement, and moved to the exact location of the linked element.

\n\n

References to the \"frame\" element refer to the single proxy element that\nwas created to be dragged in place of all DDProxy elements on the\npage.

\n","!type":"fn(id: string, sGroup: string, config: Ext_dd_DDProxy_cfg)","prototype":{"!proto":"Ext.dd.DD.prototype","centerFrame":{"!type":"bool","!doc":"

By default the frame is positioned exactly where the drag element is, so\nwe use the cursor offset provided by Ext.dd.DD. Another option that works only if\nyou do not have constraints on the obj is to have the drag frame centered\naround the cursor. Set centerFrame to true for this effect.

\n"},"resizeFrame":{"!type":"bool","!doc":"

By default we resize the drag frame to be the same size as the element\nwe want to drag (this is to get the frame effect). We can turn it off\nif we want a different behavior.

\n"},"_resizeProxy":{"!type":"fn() -> !this","!doc":"

The proxy is automatically resized to the dimensions of the linked\nelement when a drag is initiated, unless resizeFrame is set to false

\n"},"afterDrag":{"!type":"fn() -> !this"},"applyConfig":{"!type":"fn() -> !this","!doc":"

Sets up config options specific to this class. Overrides\nExt.dd.DragDrop, but all versions of this method through the\ninheritance chain are called

\n"},"b4EndDrag":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop

\n"},"b4MouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop

\n"},"b4StartDrag":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop

\n"},"beforeMove":{"!type":"fn() -> !this"},"createFrame":{"!type":"fn() -> !this","!doc":"

Creates the proxy element if it does not yet exist

\n"},"endDrag":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop\nBy default we try to move the element to the last location of the frame.\nThis is so that the default behavior mirrors that of Ext.dd.DD.

\n"},"initFrame":{"!type":"fn() -> !this","!doc":"

Initialization for the drag frame element. Must be called in the\nconstructor of all subclasses

\n"},"showFrame":{"!type":"fn(iPageX: number, iPageY: number) -> !this","!doc":"

Resizes the drag frame to the dimensions of the clicked object, positions\nit over the object, and finally displays it

\n"},"toString":{"!type":"fn() -> string","!doc":"

toString method

\n"}},"dragElId":{"!type":"string","!doc":"

The default drag frame div id

\n"}},"DDTarget":{"!doc":"

A DragDrop implementation that does not move, but can be a drop\ntarget. You would get the same result by simply omitting implementation\nfor the event callbacks, but this way we reduce the processing cost of the\nevent listener and the callbacks.

\n","!type":"fn(id: string, sGroup: string, config: Ext_dd_DDTarget_cfg)","prototype":{"!proto":"Ext.dd.DragDrop.prototype","addInvalidHandleClass":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"addInvalidHandleId":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"addInvalidHandleType":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"clearConstraints":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"clearTicks":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"endDrag":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"getDragEl":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"isValidHandleChild":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onDrag":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onDragDrop":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onDragEnter":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onDragOut":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onDragOver":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onInvalidDrop":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onMouseDown":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"onMouseUp":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"removeInvalidHandleClass":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"removeInvalidHandleId":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"removeInvalidHandleType":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"resetConstraints":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"setDragElId":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"setHandleElId":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"setInitPosition":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"setOuterHandleElId":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"setXConstraint":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"setYConstraint":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"startDrag":{"!type":"fn() -> !this","!doc":"

Overridden and disabled. A DDTarget does not support being dragged.

\n"},"toString":{"!type":"fn() -> string","!doc":"

toString method

\n"}}},"DragDrop":{"!doc":"

Defines the interface and base operation of items that that can be\ndragged or can be drop targets. It was designed to be extended, overriding\nthe event handlers for startDrag, onDrag, onDragOver and onDragOut.\nUp to three html elements can be associated with a DragDrop instance:

\n\n\n\n\n

This class should not be instantiated until the onload event to ensure that\nthe associated elements are available.\nThe following would define a DragDrop obj that would interact with any\nother DragDrop obj in the \"group1\" group:

\n\n
dd = new Ext.dd.DragDrop(\"div1\", \"group1\");\n
\n\n

Since none of the event handlers have been implemented, nothing would\nactually happen if you were to run the code above. Normally you would\noverride this class or one of the default implementations, but you can\nalso override the methods you want on an instance of the class...

\n\n
dd.onDragDrop = function(e, id) {\n    alert(\"dd was dropped on \" + id);\n}\n
\n","!type":"fn(id: string, sGroup: string, config: Ext_dd_DragDrop_cfg)","prototype":{"!proto":"Ext.Base.prototype","__ygDragDrop":{"!type":"bool","!doc":"

Internal typeof flag

\n"},"_domRef":{"!type":"?","!doc":"

Cached reference to the linked element

\n"},"available":{"!type":"bool","!doc":"

The available property is false until the linked dom element is accessible.

\n"},"config":{"!type":"?","!doc":"

Configuration attributes passed into the constructor

\n"},"constrainX":{"!type":"bool","!doc":"

Set to true when horizontal contraints are applied

\n"},"constrainY":{"!type":"bool","!doc":"

Set to true when vertical contraints are applied

\n"},"defaultPadding":{"!type":"?","!doc":"

Provides default constraint padding to \"constrainTo\" elements.

\n"},"dragElId":{"!type":"string","!doc":"

The id of the element that will be dragged. By default this is same\nas the linked element, but could be changed to another element. Ex:\nExt.dd.DDProxy

\n"},"groups":{"!type":"?","!doc":"

The group defines a logical collection of DragDrop objects that are\nrelated. Instances only get events when interacting with other\nDragDrop object in the same group. This lets us define multiple\ngroups using a single DragDrop subclass if we want.

\n\n

An object in the format {'group1':true, 'group2':true}

\n"},"handleElId":{"!type":"string","!doc":"

The ID of the element that initiates the drag operation. By default\nthis is the linked element, but could be changed to be a child of this\nelement. This lets us do things like only starting the drag when the\nheader element within the linked html element is clicked.

\n"},"hasOuterHandles":{"!type":"bool","!doc":"

By default, drags can only be initiated if the mousedown occurs in the\nregion the linked element is. This is done in part to work around a\nbug in some browsers that mis-report the mousedown if the previous\nmouseup happened outside of the window. This property is set to true\nif outer handles are defined. Defaults to false.

\n"},"id":{"!type":"string","!doc":"

The id of the element associated with this object. This is what we\nrefer to as the \"linked element\" because the size and position of\nthis element is used to determine when the drag and drop objects have\ninteracted.

\n"},"ignoreSelf":{"!type":"bool","!doc":"

Set to false to enable a DragDrop object to fire drag events while dragging\nover its own Element. Defaults to true - DragDrop objects do not by default\nfire drag events to themselves.

\n"},"invalidHandleClasses":{"!type":"[string]","!doc":"

An Array of CSS class names for elements to be considered in valid as drag handles.

\n"},"invalidHandleIds":{"!type":"?","!doc":"

An object who's property names identify the IDs of elements to be considered invalid as drag handles.\nA non-null property value identifies the ID as invalid. For example, to prevent\ndragging from being initiated on element ID \"foo\", use:

\n\n
{\n    foo: true\n}\n
\n"},"invalidHandleTypes":{"!type":"?","!doc":"

An object who's property names identify HTML tags to be considered invalid as drag handles.\nA non-null property value identifies the tag as invalid. Defaults to the\nfollowing value which prevents drag operations from being initiated by <a> elements:

\n\n
{\n    A: \"A\"\n}\n
\n"},"isTarget":{"!type":"bool","!doc":"

By default, all instances can be a drop target. This can be disabled by\nsetting isTarget to false.

\n"},"locked":{"!type":"bool","!doc":"

Individual drag/drop instances can be locked. This will prevent\nonmousedown start drag.

\n"},"maintainOffset":{"!type":"bool","!doc":"

Maintain offsets when we resetconstraints. Set to true when you want\nthe position of the element relative to its parent to stay the same\nwhen the page changes

\n"},"maxX":{"!type":"number","!doc":"

The right constraint

\n"},"maxY":{"!type":"number","!doc":"

The down constraint

\n"},"minX":{"!type":"number","!doc":"

The left constraint

\n"},"minY":{"!type":"number","!doc":"

The up constraint

\n"},"moveOnly":{"!type":"bool","!doc":"

When set to true, other DD objects in cooperating DDGroups do not receive\nnotification events when this DD object is dragged over them.

\n"},"padding":{"!type":"[number]","!doc":"

The padding configured for this drag and drop object for calculating\nthe drop zone intersection with this object.\nAn array containing the 4 padding values: [top, right, bottom, left]

\n"},"primaryButtonOnly":{"!type":"bool","!doc":"

By default the drag and drop instance will only respond to the primary\nbutton click (left button for a right-handed mouse). Set to true to\nallow drag and drop to start with any mouse click that is propogated\nby the browser

\n"},"startPageX":{"!type":"number","!doc":"

The linked element's absolute X position at the time the drag was\nstarted

\n"},"startPageY":{"!type":"number","!doc":"

The linked element's absolute X position at the time the drag was\nstarted

\n"},"xTicks":{"!type":"[number]","!doc":"

Array of pixel locations the element will snap to if we specified a\nhorizontal graduation/interval. This array is generated automatically\nwhen you define a tick interval.

\n"},"yTicks":{"!type":"[number]","!doc":"

Array of pixel locations the element will snap to if we specified a\nvertical graduation/interval. This array is generated automatically\nwhen you define a tick interval.

\n"},"addInvalidHandleClass":{"!type":"fn(cssClass: string) -> !this","!doc":"

Lets you specify a css class of elements that will not initiate a drag

\n"},"addInvalidHandleId":{"!type":"fn(id: string) -> !this","!doc":"

Lets you to specify an element id for a child of a drag handle\nthat should not initiate a drag

\n"},"addInvalidHandleType":{"!type":"fn(tagName: string) -> !this","!doc":"

Allows you to specify a tag name that should not start a drag operation\nwhen clicked. This is designed to facilitate embedding links within a\ndrag handle that do something other than start the drag.

\n"},"addToGroup":{"!type":"fn(sGroup: string) -> !this","!doc":"

Adds this instance to a group of related drag/drop objects. All\ninstances belong to at least one group, and can belong to as many\ngroups as needed.

\n"},"applyConfig":{"!type":"fn() -> !this","!doc":"

Applies the configuration parameters that were passed into the constructor.\nThis is supposed to happen at each level through the inheritance chain. So\na DDProxy implentation will execute apply config on DDProxy, DD, and\nDragDrop in order to get all of the parameters that are available in\neach object.

\n"},"b4Drag":{"!type":"fn(e: ?) -> !this","!doc":"

Code that executes immediately before the onDrag event

\n"},"b4DragDrop":{"!type":"fn(e: ?) -> !this","!doc":"

Code that executes immediately before the onDragDrop event

\n"},"b4DragOut":{"!type":"fn(e: ?) -> !this","!doc":"

Code that executes immediately before the onDragOut event

\n"},"b4DragOver":{"!type":"fn(e: ?) -> !this","!doc":"

Code that executes immediately before the onDragOver event

\n"},"b4EndDrag":{"!type":"fn(e: ?) -> !this","!doc":"

Code that executes immediately before the endDrag event

\n"},"b4MouseDown":{"!type":"fn(e: +Event) -> !this","!doc":"

Code executed immediately before the onMouseDown event

\n"},"b4StartDrag":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Code that executes immediately before the startDrag event

\n"},"clearConstraints":{"!type":"fn() -> !this","!doc":"

Clears any constraints applied to this instance. Also clears ticks\nsince they can't exist independent of a constraint at this time.

\n"},"clearTicks":{"!type":"fn() -> !this","!doc":"

Clears any tick interval defined for this instance

\n"},"clickValidator":{"!type":"fn(e: ?) -> !this"},"constrainTo":{"!type":"fn(constrainTo: string|+HTMLElement|+Ext.Element, pad?: ?|number, inContent?: bool) -> !this","!doc":"

Initializes the drag drop object's constraints to restrict movement to a certain element.

\n\n

Usage:

\n\n
var dd = new Ext.dd.DDProxy(\"dragDiv1\", \"proxytest\",\n               { dragElId: \"existingProxyDiv\" });\ndd.startDrag = function(){\n    this.constrainTo(\"parent-id\");\n};\n
\n\n

Or you can initalize it using the Ext.Element object:

\n\n
Ext.get(\"dragDiv1\").initDDProxy(\"proxytest\", {dragElId: \"existingProxyDiv\"}, {\n    startDrag : function(){\n        this.constrainTo(\"parent-id\");\n    }\n});\n
\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy this DragDrop instance

\n"},"endDrag":{"!type":"fn(e: +Event) -> !this","!doc":"

Called when we are done dragging the object

\n"},"getDragEl":{"!type":"fn() -> +HTMLElement","!doc":"

Returns a reference to the actual element to drag. By default this is\nthe same as the html element, but it can be assigned to another\nelement. An example of this can be found in Ext.dd.DDProxy

\n"},"getEl":{"!type":"fn() -> +HTMLElement","!doc":"

Returns a reference to the linked element

\n"},"getTick":{"!type":"fn(val: number, tickArray: [number]) -> number","!doc":"

Normally the drag element is moved pixel by pixel, but we can specify\nthat it move a number of pixels at a time. This method resolves the\nlocation when we have it set up like this.

\n"},"handleMouseDown":{"!type":"fn(e: +Event, oDD: +Ext.dd.DragDrop) -> !this","!doc":"

Called when this object is clicked

\n"},"handleOnAvailable":{"!type":"fn() -> !this","!doc":"

Executed when the linked element is available

\n"},"init":{"!type":"fn(id: string, sGroup: string, config: ?) -> !this","!doc":"

Sets up the DragDrop object. Must be called in the constructor of any\nExt.dd.DragDrop subclass

\n"},"initTarget":{"!type":"fn(id: string, sGroup: string, config: ?) -> !this","!doc":"

Initializes Targeting functionality only... the object does not\nget a mousedown handler.

\n"},"isLocked":{"!type":"fn() -> bool","!doc":"

Returns true if this instance is locked, or the drag drop mgr is locked\n(meaning that all drag/drop is disabled on the page.)

\n"},"isValidHandleChild":{"!type":"fn(node: +HTMLElement) -> bool","!doc":"

Checks the tag exclusion list to see if this click should be ignored

\n"},"lock":{"!type":"fn() -> !this","!doc":"

Locks this instance

\n"},"onAvailable":{"!type":"fn() -> !this","!doc":"

Override the onAvailable method to do what is needed after the initial\nposition was determined.

\n"},"onDrag":{"!type":"fn(e: +Event) -> !this","!doc":"

Abstract method called during the onMouseMove event while dragging an\nobject.

\n"},"onDragDrop":{"!type":"fn(e: +Event, id: string|[+Ext.dd.DragDrop]) -> !this","!doc":"

Abstract method called when this item is dropped on another DragDrop\nobj

\n"},"onDragEnter":{"!type":"fn(e: +Event, id: string|[+Ext.dd.DragDrop]) -> !this","!doc":"

Abstract method called when this element fist begins hovering over\nanother DragDrop obj

\n"},"onDragOut":{"!type":"fn(e: +Event, id: string|[+Ext.dd.DragDrop]) -> !this","!doc":"

Abstract method called when we are no longer hovering over an element

\n"},"onDragOver":{"!type":"fn(e: +Event, id: string|[+Ext.dd.DragDrop]) -> !this","!doc":"

Abstract method called when this element is hovering over another\nDragDrop obj

\n"},"onInvalidDrop":{"!type":"fn(e: +Event) -> !this","!doc":"

Abstract method called when this item is dropped on an area with no\ndrop target

\n"},"onMouseDown":{"!type":"fn(e: +Event) -> !this","!doc":"

Called when a drag/drop obj gets a mousedown

\n"},"onMouseUp":{"!type":"fn(e: +Event) -> !this","!doc":"

Called when a drag/drop obj gets a mouseup

\n"},"removeFromGroup":{"!type":"fn(sGroup: string) -> !this","!doc":"

Removes this instance from the supplied interaction group

\n"},"removeInvalidHandleClass":{"!type":"fn(cssClass: string) -> !this","!doc":"

Unsets an invalid css class

\n"},"removeInvalidHandleId":{"!type":"fn(id: string) -> !this","!doc":"

Unsets an invalid handle id

\n"},"removeInvalidHandleType":{"!type":"fn(tagName: string) -> !this","!doc":"

Unsets an excluded tag name set by addInvalidHandleType

\n"},"resetConstraints":{"!type":"fn(maintainOffset: bool) -> !this","!doc":"

Must be called if you manually reposition a dd element.

\n"},"setDragElId":{"!type":"fn(id: string) -> !this","!doc":"

Allows you to specify that an element other than the linked element\nwill be moved with the cursor during a drag

\n"},"setHandleElId":{"!type":"fn(id: string) -> !this","!doc":"

Allows you to specify a child of the linked element that should be\nused to initiate the drag operation. An example of this would be if\nyou have a content div with text and links. Clicking anywhere in the\ncontent area would normally start the drag operation. Use this method\nto specify that an element inside of the content div is the element\nthat starts the drag operation.

\n"},"setInitPosition":{"!type":"fn(diffX: number, diffY: number) -> !this","!doc":"

Stores the initial placement of the linked element.

\n"},"setOuterHandleElId":{"!type":"fn(id: string) -> !this","!doc":"

Allows you to set an element outside of the linked element as a drag\nhandle

\n"},"setPadding":{"!type":"fn(iTop: number, iRight: number, iBot: number, iLeft: number) -> !this","!doc":"

Configures the padding for the target zone in px. Effectively expands\n(or reduces) the virtual object size for targeting calculations.\nSupports css-style shorthand; if only one parameter is passed, all sides\nwill have that padding, and if only two are passed, the top and bottom\nwill have the first param, the left and right the second.

\n"},"setStartPosition":{"!type":"fn(pos: ?) -> !this","!doc":"

Sets the start position of the element. This is set when the obj\nis initialized, the reset when a drag is started.

\n"},"setXConstraint":{"!type":"fn(iLeft: number, iRight: number, iTickSize?: number) -> !this","!doc":"

By default, the element can be dragged any place on the screen. Use\nthis method to limit the horizontal travel of the element. Pass in\n0,0 for the parameters if you want to lock the drag to the y axis.

\n"},"setXTicks":{"!type":"fn(iStartX: ?, iTickSize: ?) -> !this","!doc":"

Creates the array of horizontal tick marks if an interval was specified\nin setXConstraint().

\n"},"setYConstraint":{"!type":"fn(iUp: number, iDown: number, iTickSize?: number) -> !this","!doc":"

By default, the element can be dragged any place on the screen. Set\nthis to limit the vertical travel of the element. Pass in 0,0 for the\nparameters if you want to lock the drag to the x axis.

\n"},"setYTicks":{"!type":"fn(iStartY: ?, iTickSize: ?) -> !this","!doc":"

Creates the array of vertical tick marks if an interval was specified in\nsetYConstraint().

\n"},"startDrag":{"!type":"fn(x: number, y: number) -> !this","!doc":"

Abstract method called after a drag/drop object is clicked\nand the drag or mousedown time thresholds have beeen met.

\n"},"toString":{"!type":"fn() -> string","!doc":"

toString method

\n"},"unlock":{"!type":"fn() -> !this","!doc":"

Unlocks this instace

\n"},"unreg":{"!type":"fn() -> !this","!doc":"

Removes all drag and drop hooks for this element

\n"}}},"DragDropElement":{"prototype":{"_timeoutCount":{"!type":"number","!doc":"

Internal counter

\n"},"_addListeners":{"!type":"fn() -> !this","!doc":"

Trying to make the load order less important. Without this we get\nan error if this file is loaded before the Event Utility.

\n"},"getPosX":{"!type":"fn(el: +HTMLElement) -> number","!doc":"

Returns the X position of an html element

\n"},"getPosY":{"!type":"fn(el: +HTMLElement) -> number","!doc":"

Returns the Y position of an html element

\n"},"getScroll":{"!type":"fn() -> !this","!doc":"

Returns the current scroll position

\n"},"getScrollLeft":{"!type":"fn() -> number","!doc":"

Gets the scrollLeft

\n"},"getScrollTop":{"!type":"fn() -> number","!doc":"

Gets the scrollTop

\n"},"getStyle":{"!type":"fn(el: +HTMLElement, styleProp: string) -> string","!doc":"

Returns the specified element style property

\n"},"handleWasClicked":{"!type":"fn(node: +HTMLElement) -> !this","!doc":"

Recursively searches the immediate parent and all child nodes for\nthe handle element in order to determine wheter or not it was\nclicked.

\n"},"moveToEl":{"!type":"fn(moveEl: +HTMLElement, targetEl: +HTMLElement) -> !this","!doc":"

Sets the x/y position of an element to the location of the\ntarget element.

\n"},"numericSort":{"!type":"fn(a: number, b: number) -> number","!doc":"

Numeric array sort function

\n"},"swapNode":{"!type":"fn(n1: +HTMLElement, n2: +HTMLElement) -> !this","!doc":"

Swap two nodes. In IE, we use the native method, for others we\nemulate the IE behavior

\n"}}},"DragDropManager":{"ElementWrapper":{"!doc":"

Deprecated inner class for cached elements.

\n","prototype":{"css":{"!type":"?","!doc":"

A reference to the style property

\n"},"el":{"!type":"?","!doc":"

The element

\n"},"id":{"!type":"?","!doc":"

The element id

\n"}}},"!doc":"

DragDropManager is a singleton that tracks the element interaction for\nall DragDrop items in the window. Generally, you will not call\nthis class directly, but it does have helper methods that could\nbe useful in your DragDrop implementations.

\n","INTERSECT":{"!type":"number","!doc":"

In intersect mode, drag and drop interaction is defined by the\noverlap of two or more drag and drop objects.

\n"},"POINT":{"!type":"number","!doc":"

In point mode, drag and drop interaction is defined by the\nlocation of the cursor during the drag/drop

\n"},"clickPixelThresh":{"!type":"number","!doc":"

The number of pixels that the mouse needs to move after the\nmousedown before the drag is initiated. Default=3;

\n"},"clickTimeThresh":{"!type":"number","!doc":"

The number of milliseconds after the mousedown event to initiate the\ndrag if we don't get a mouseup event. Default=350

\n"},"clickTimeout":{"!type":"?","!doc":"

Timeout used for the click time threshold

\n"},"deltaX":{"!type":"number","!doc":"

the X distance between the cursor and the object being dragged

\n"},"deltaY":{"!type":"number","!doc":"

the Y distance between the cursor and the object being dragged

\n"},"dragCls":{"!type":"string","!doc":"

Class to add to the dragged element of a DragDrop instance.

\n"},"dragCurrent":{"!type":"+Ext.dd.DragDrop","!doc":"

the DragDrop object that is currently being dragged

\n"},"dragOvers":{"!type":"[+Ext.dd.DragDrop]","!doc":"

the DragDrop object(s) that are being hovered over

\n"},"dragThreshMet":{"!type":"bool","!doc":"

Flag that indicates that either the drag pixel threshold or the\nmousdown time threshold has been met

\n"},"elementCache":{"!type":"?","!doc":"

A cache of DOM elements

\n"},"handleIds":{"!type":"[string]","!doc":"

Array of element ids defined as drag handles. Used to determine\nif the element that generated the mousedown event is actually the\nhandle and not the html element itself.

\n"},"ids":{"!type":"[string]","!doc":"

Two dimensional Array of registered DragDrop objects. The first\ndimension is the DragDrop item group, the second the DragDrop\nobject.

\n"},"initialized":{"!type":"bool","!doc":"

Internal flag that is set to true when drag and drop has been\nintialized

\n"},"locationCache":{"!type":"?","!doc":"

Location cache that is set for all drag drop objects when a drag is\ninitiated, cleared when the drag is finished.

\n"},"locked":{"!type":"bool","!doc":"

All drag and drop can be disabled.

\n"},"mode":{"!type":"number","!doc":"

The current drag and drop mode. Default: POINT

\n"},"notifyOccluded":{"!type":"bool","!doc":"

This config is only provided to provide old, usually unwanted drag/drop behaviour.

\n\n

From ExtJS 4.1.0 onwards, when drop targets are contained in floating, absolutely positioned elements\nsuch as in Windows, which may overlap each other, over and drop events\nare only delivered to the topmost drop target at the mouse position.

\n\n

If all targets below that in zIndex order should also receive notifications, set\nnotifyOccluded to true.

\n"},"preventDefault":{"!type":"bool","!doc":"

Flag to determine if we should prevent the default behavior of the\nevents we define. By default this is true, but this can be set to\nfalse if you need the default behavior (not recommended)

\n"},"startX":{"!type":"number","!doc":"

The X position of the mousedown event stored for later use when a\ndrag threshold is met.

\n"},"startY":{"!type":"number","!doc":"

The Y position of the mousedown event stored for later use when a\ndrag threshold is met.

\n"},"stopPropagation":{"!type":"bool","!doc":"

Flag to determine if we should stop the propagation of the events\nwe generate. This is true by default but you may want to set it to\nfalse if the html element contains other features that require the\nmouse click.

\n"},"useCache":{"!type":"bool","!doc":"

Set useCache to false if you want to force object the lookup of each\ndrag and drop linked element constantly during a drag.

\n"},"_execOnAll":{"!type":"fn(sMethod: ?, args: ?) -> !this","!doc":"

Runs method on all drag and drop objects

\n"},"_onLoad":{"!type":"fn() -> !this","!doc":"

Drag and drop initialization. Sets up the global event handlers

\n"},"_onResize":{"!type":"fn(e: ?) -> !this","!doc":"

Reset constraints on all drag and drop objs

\n"},"_onUnload":{"!type":"fn(e: ?, me: ?) -> !this","!doc":"

unload event handler

\n"},"_remove":{"!type":"fn(oDD: ?) -> !this","!doc":"

Unregisters a drag and drop item. This is executed in\nDragDrop.unreg, use that method instead of calling this directly.

\n"},"byZIndex":{"!type":"fn(d1: ?, d2: ?) -> !this","!doc":"

Utility method to pass to Ext.Array.sort when sorting potential drop targets by z-index.

\n"},"fireEvents":{"!type":"fn(e: +Event, isDrop: bool) -> !this","!doc":"

Iterates over all of the DragDrop elements to find ones we are\nhovering over or dropping on

\n"},"getBestMatch":{"!type":"fn(dds: [+Ext.dd.DragDrop]) -> +Ext.dd.DragDrop","!doc":"

Helper function for getting the best match from the list of drag\nand drop objects returned by the drag and drop events when we are\nin INTERSECT mode. It returns either the first object that the\ncursor is over, or the object that has the greatest overlap with\nthe dragged element.

\n"},"getCss":{"!type":"fn(id: string) -> ?","!doc":"

Returns the style property for the DOM element (i.e.,\ndocument.getElById(id).style)

\n"},"getDDById":{"!type":"fn(id: string) -> +Ext.dd.DragDrop","!doc":"

Returns the DragDrop instance for a given id

\n"},"getElWrapper":{"!type":"fn(id: string) -> +Ext.dd.DragDropManager.ElementWrapper","!doc":"

Get the wrapper for the DOM element specified

\n"},"getElement":{"!type":"fn(id: string) -> ?","!doc":"

Returns the actual DOM element

\n"},"getLocation":{"!type":"fn(oDD: +Ext.dd.DragDrop) -> +Ext.util.Region","!doc":"

Returns a Region object containing the drag and drop element's position\nand size, including the padding configured for it

\n"},"getRelated":{"!type":"fn(p_oDD: +Ext.dd.DragDrop, bTargetsOnly: bool) -> [+Ext.dd.DragDrop]","!doc":"

Returns the drag and drop instances that are in all groups the\npassed in instance belongs to.

\n"},"getZIndex":{"!type":"fn(element: ?) -> number","!doc":"

Collects the z-index of the passed element, looking up the parentNode axis to find an absolutely positioned ancestor\nwhich is able to yield a z-index. If found to be not absolutely positionedm returns -1.

\n\n

This is used when sorting potential drop targets into z-index order so that only the topmost receives over and drop events.

\n"},"handleMouseDown":{"!type":"fn(e: +Event, oDD: +Ext.dd.DragDrop) -> !this","!doc":"

Fired after a registered DragDrop object gets the mousedown event.\nSets up the events required to track the object being dragged

\n"},"handleMouseMove":{"!type":"fn(e: +Event) -> !this","!doc":"

Internal function to handle the mousemove event. Will be invoked\nfrom the context of the html element.

\n\n

TODO: figure out what we can do about mouse events lost when the\nuser drags objects beyond the window boundary. Currently we can\ndetect this in internet explorer by verifying that the mouse is\ndown during the mousemove event. Firefox doesn't give us the\nbutton state on the mousemove event.

\n"},"handleMouseUp":{"!type":"fn(e: +Event) -> !this","!doc":"

Internal function to handle the mouseup event. Will be invoked\nfrom the context of the document.

\n"},"init":{"!type":"fn() -> !this","!doc":"

Called the first time an element is registered.

\n"},"isDragDrop":{"!type":"fn(id: string) -> bool","!doc":"

Utility function to determine if a given element has been\nregistered as a drag drop item.

\n"},"isHandle":{"!type":"fn(id: string) -> bool","!doc":"

Utility function to determine if a given element has been\nregistered as a drag drop handle for the given Drag Drop object.

\n"},"isLegalTarget":{"!type":"fn(oDD: +Ext.dd.DragDrop, oTargetDD: +Ext.dd.DragDrop) -> bool","!doc":"

Returns true if the specified dd target is a legal target for\nthe specifice drag obj

\n"},"isLocked":{"!type":"fn() -> bool","!doc":"

Is drag and drop locked?

\n"},"isOverTarget":{"!type":"fn(pt: +Ext.util.Point, oTarget: +Ext.dd.DragDrop) -> bool","!doc":"

Checks the cursor location to see if it over the target

\n"},"isTypeOfDD":{"!type":"fn(the: ?) -> bool","!doc":"

My goal is to be able to transparently determine if an object is\ntypeof DragDrop, and the exact subclass of DragDrop. typeof\nreturns \"object\", oDD.constructor.toString() always returns\n\"DragDrop\" and not the name of the subclass. So for now it just\nevaluates a well-known variable in DragDrop.

\n"},"lock":{"!type":"fn() -> !this","!doc":"

Lock all drag and drop functionality

\n"},"refreshCache":{"!type":"fn(groups: ?) -> !this","!doc":"

Refreshes the cache of the top-left and bottom-right points of the\ndrag and drop objects in the specified group(s). This is in the\nformat that is stored in the drag and drop instance, so typical\nusage is:

\n\n
Ext.dd.DragDropManager.refreshCache(ddinstance.groups);\n
\n\n

Alternatively:

\n\n
Ext.dd.DragDropManager.refreshCache({group1:true, group2:true});\n
\n\n

TODO: this really should be an indexed array. Alternatively this\nmethod could accept both.

\n"},"regDragDrop":{"!type":"fn(oDD: +Ext.dd.DragDrop, sGroup: string) -> !this","!doc":"

Each DragDrop instance must be registered with the DragDropManager.\nThis is executed in DragDrop.init()

\n"},"regHandle":{"!type":"fn(sDDId: string, sHandleId: string) -> !this","!doc":"

Each DragDrop handle element must be registered. This is done\nautomatically when executing DragDrop.setHandleElId()

\n"},"removeDDFromGroup":{"!type":"fn(oDD: ?, sGroup: ?) -> !this","!doc":"

Removes the supplied dd instance from the supplied group. Executed\nby DragDrop.removeFromGroup, so don't call this function directly.

\n"},"startDrag":{"!type":"fn(x: number, y: number) -> !this","!doc":"

Fired when either the drag pixel threshold or the mousedown hold\ntime threshold has been met.

\n"},"stopDrag":{"!type":"fn(e: +Event) -> !this","!doc":"

Internal function to clean up event handlers after the drag\noperation is complete

\n"},"stopEvent":{"!type":"fn(e: +Event) -> !this","!doc":"

Utility to stop event propagation and event default, if these\nfeatures are turned on.

\n"},"unlock":{"!type":"fn() -> !this","!doc":"

Unlock all drag and drop functionality

\n"},"unregAll":{"!type":"fn() -> !this","!doc":"

Cleans up the drag and drop events and objects.

\n"},"verifyEl":{"!type":"fn(el: +HTMLElement) -> bool","!doc":"

This checks to make sure an element exists and is in the DOM. The\nmain purpose is to handle cases where innerHTML is used to remove\ndrag and drop objects from the DOM. IE provides an 'unspecified\nerror' when trying to access the offsetParent of such an element

\n"}},"DragSource":{"!doc":"

A simple class that provides the basic implementation needed to make any element draggable.

\n","!type":"fn(el: string|+HTMLElement|+Ext.Element, config?: Ext_dd_DragSource_cfg)","prototype":{"!proto":"Ext.dd.DDProxy.prototype","animRepair":{"!type":"bool","!doc":"

If true, animates the proxy element back to the position of the handle element used to trigger the drag.

\n"},"ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then this object will only\ninteract with other drag drop objects in the same group.

\n"},"dropAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is allowed.

\n"},"dropNotAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is not allowed.

\n"},"repairHighlightColor":{"!type":"string","!doc":"

The color to use when visually highlighting the drag source in the afterRepair\nmethod after a failed drop (defaults to light blue). The color must be a 6 digit hex value, without\na preceding '#'.

\n"},"dragData":{"!type":"?","!doc":"

This property contains the data representing the dragged object. This data is set up by the implementation of the\ngetDragData method. It must contain a ddel property, but can contain any other data according to the\napplication's needs.

\n"},"afterDragDrop":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nafter a valid drag drop has occurred by providing an implementation.

\n"},"afterDragEnter":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nwhen the dragged item enters the drop target by providing an implementation.

\n"},"afterDragOut":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nafter the dragged item is dragged out of the target without dropping.

\n"},"afterDragOver":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nwhile the dragged item is over the drop target by providing an implementation.

\n"},"afterInvalidDrop":{"!type":"fn(e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nafter an invalid drop has occurred by providing an implementation.

\n"},"afterRepair":{"!type":"fn() -> !this"},"afterValidDrop":{"!type":"fn(target: ?, e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nafter a valid drop has occurred by providing an implementation.

\n"},"alignElWithMouse":{"!type":"fn() -> !this","!doc":"

Sets the element to the location of the mousedown or click event,\nmaintaining the cursor location relative to the location on the element\nthat was clicked. Override this if you want to place the element in a\nlocation other than where the cursor is.

\n"},"autoOffset":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Sets the pointer offset to the distance between the linked element's top\nleft corner and the location the element was clicked.

\n"},"b4EndDrag":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop

\n"},"beforeDragDrop":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string) -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action before the dragged\nitem is dropped onto the target and optionally cancel the onDragDrop.

\n"},"beforeDragEnter":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string) -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action\nbefore the dragged item enters the drop target and optionally cancel the onDragEnter.

\n"},"beforeDragOut":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string) -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action before the dragged\nitem is dragged out of the target without dropping, and optionally cancel the onDragOut.

\n"},"beforeDragOver":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string) -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action\nwhile the dragged item is over the drop target and optionally cancel the onDragOver.

\n"},"beforeInvalidDrop":{"!type":"fn(target: +Ext.dd.DragDrop, e: +Event, id: string) -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action after an invalid\ndrop has occurred.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy this DragDrop instance

\n"},"endDrag":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop\nBy default we try to move the element to the last location of the frame.\nThis is so that the default behavior mirrors that of Ext.dd.DD.

\n"},"getDragData":{"!type":"fn(e: ?) -> ?","!doc":"

Returns the data object associated with this drag source

\n"},"getProxy":{"!type":"fn() -> +Ext.dd.StatusProxy","!doc":"

Returns the drag source's underlying Ext.dd.StatusProxy

\n"},"getRepairXY":{"!type":"fn(e: ?, data: ?) -> !this"},"handleMouseDown":{"!type":"fn(e: +Event, oDD: +Ext.dd.DragDrop) -> !this","!doc":"

Called when this object is clicked

\n"},"hideProxy":{"!type":"fn() -> !this","!doc":"

Hides the drag source's Ext.dd.StatusProxy

\n"},"onBeforeDrag":{"!type":"fn(data: ?, e: +Event) -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action before the initial\ndrag event begins and optionally cancel it.

\n"},"onDragDrop":{"!type":"fn(e: ?, id: ?) -> !this","!doc":"

Abstract method called when this item is dropped on another DragDrop\nobj

\n"},"onDragEnter":{"!type":"fn(e: ?, id: ?) -> !this","!doc":"

Abstract method called when this element fist begins hovering over\nanother DragDrop obj

\n"},"onDragOut":{"!type":"fn(e: ?, id: ?) -> !this","!doc":"

Abstract method called when we are no longer hovering over an element

\n"},"onDragOver":{"!type":"fn(e: ?, id: ?) -> !this","!doc":"

Abstract method called when this element is hovering over another\nDragDrop obj

\n"},"onEndDrag":{"!type":"fn(data: ?, e: ?) -> !this"},"onInitDrag":{"!type":"fn(x: ?, y: ?) -> !this"},"onInvalidDrop":{"!type":"fn(target: ?, e: ?, id: ?) -> !this","!doc":"

Abstract method called when this item is dropped on an area with no\ndrop target

\n"},"onStartDrag":{"!type":"fn(x: number, y: number) -> !this","!doc":"

An empty function by default, but provided so that you can perform a custom action once the initial\ndrag event has begun. The drag cannot be canceled from this function.

\n"},"onValidDrop":{"!type":"fn(target: ?, e: ?, id: ?) -> !this"},"startDrag":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Abstract method called after a drag/drop object is clicked\nand the drag or mousedown time thresholds have beeen met.

\n"},"triggerCacheRefresh":{"!type":"fn() -> !this"}}},"DragTracker":{"!doc":"

A DragTracker listens for drag events on an Element and fires events at the start and end of the drag,\nas well as during the drag. This is useful for components such as Ext.slider.Multi, where there is\nan element that can be dragged around to change the Slider's value.

\n\n

DragTracker provides a series of template methods that should be overridden to provide functionality\nin response to detected drag operations. These are onBeforeStart, onStart, onDrag and onEnd.\nSee Ext.slider.Multi's initEvents function for an example implementation.

\n","prototype":{"autoStart":{"!type":"bool|number","!doc":"

Specify true to defer trigger start by 1000 ms.\nSpecify a Number for the number of milliseconds to defer trigger start.

\n"},"constrainTo":{"!type":"+Ext.util.Region|+Ext.Element","!doc":"

A Region (Or an element from which a Region measurement will be read)\nwhich is used to constrain the result of the getOffset call.

\n\n

This may be set any time during the DragTracker's lifecycle to set a dynamic constraining region.

\n"},"delegate":{"!type":"string","!doc":"

A DomQuery selector which identifies child elements within the DragTracker's encapsulating\nElement which are the tracked elements. This limits tracking to only begin when the matching elements are mousedowned.

\n\n

This may also be a specific child element within the DragTracker's encapsulating element to use as the tracked element.

\n"},"overCls":{"!type":"string","!doc":"

A CSS class to add to the DragTracker's target element when the element (or, if the delegate\noption is used, when a delegate element) is mouseovered.

\n\n

If the delegate option is used, these events fire only when a delegate element is entered of left.

\n"},"preventDefault":{"!type":"bool","!doc":"

Specify false to enable default actions on onMouseDown events.

\n"},"stopEvent":{"!type":"bool","!doc":"

Specify true to stop the mousedown event from bubbling to outer listeners from the target element (or its delegates).

\n"},"tolerance":{"!type":"number","!doc":"

Number of pixels the drag target must be moved before dragging is\nconsidered to have started.

\n"},"trackOver":{"!type":"bool","!doc":"

Set to true to fire mouseover and mouseout events when the mouse enters or leaves the target element.

\n\n

This is implicitly set when an overCls is specified.

\n\n

If the delegate option is used, these events fire only when a delegate element is entered of left.

\n"},"active":{"!type":"bool","!doc":"

Indicates whether the user is currently dragging this tracker.

\n"},"constrainModes":{"!type":"?"},"dragTarget":{"!type":"+HTMLElement","!doc":"

The element being dragged.

\n\n

Only valid during drag operations.

\n\n

If the delegate option is used, this will be the delegate element which was mousedowned.

\n"},"clearStart":{"!type":"fn() -> !this"},"destroy":{"!type":"fn() -> !this"},"disable":{"!type":"fn() -> !this"},"enable":{"!type":"fn() -> !this"},"endDrag":{"!type":"fn(e: ?) -> !this","!doc":"

Stop the drag operation, and remove active mouse listeners.

\n"},"getConstrainRegion":{"!type":"fn() -> !this","!doc":"

Return the Region into which the drag operation is constrained.\nEither the XY pointer itself can be constrained, or the dragTarget element\nThe private property _constrainRegion is cached until onMouseUp

\n"},"getDragCt":{"!type":"fn() -> +Ext.Element"},"getDragTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the drag target. This is usually the DragTracker's encapsulating element.

\n\n

If the delegate option is being used, this may be a child element which matches the\ndelegate selector.

\n"},"getOffset":{"!type":"fn(constrainMode?: string) -> [number]","!doc":"

Returns the X, Y offset of the current mouse position from the mousedown point.

\n\n

This method may optionally constrain the real offset values, and returns a point coerced in one\nof two modes:

\n\n\n\n"},"getXY":{"!type":"fn(constrain: ?) -> !this"},"initEl":{"!type":"fn(el: +Ext.Element|+HTMLElement) -> !this","!doc":"

Initializes the DragTracker on a given element.

\n"},"onBeforeStart":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when the user first clicks and\nholds the mouse button down. Return false to disallow the drag

\n"},"onDrag":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called whenever a drag has been detected.

\n"},"onEnd":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when a drag operation has been completed\n(e.g. the user clicked and held the mouse down, dragged the element and then released the mouse button)

\n"},"onMouseDown":{"!type":"fn(e: ?, target: ?) -> !this"},"onMouseMove":{"!type":"fn(e: ?, target: ?) -> !this"},"onMouseOut":{"!type":"fn(e: ?) -> !this","!doc":"

When the pointer exits a tracking element, fire a mouseout.\nThis is mouseleave functionality, but we cannot use mouseleave because we are using \"delegate\" to filter mouse targets

\n"},"onMouseOver":{"!type":"fn(e: ?, target: ?) -> !this","!doc":"

When the pointer enters a tracking element, fire a mouseover if the mouse entered from outside.\nThis is mouseenter functionality, but we cannot use mouseenter because we are using \"delegate\" to filter mouse targets

\n"},"onMouseUp":{"!type":"fn(e: ?) -> !this"},"onStart":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when a drag operation starts\n(e.g. the user has moved the tracked element beyond the specified tolerance)

\n"},"stopSelect":{"!type":"fn(e: ?) -> !this"},"triggerStart":{"!type":"fn(e: ?) -> !this"},"beforestart":{"!type":"fn(this: ?, e: ?, eOpts: ?)"},"drag":{"!type":"fn(this: ?, e: ?, eOpts: ?)"},"dragend":{"!type":"fn(this: ?, e: ?, eOpts: ?)"},"dragstart":{"!type":"fn(this: ?, e: ?, eOpts: ?)"},"mousedown":{"!type":"fn(this: ?, e: ?, eOpts: ?)","!doc":"

Fires when the mouse button is pressed down, but before a drag operation begins. The\ndrag operation begins after either the mouse has been moved by tolerance pixels,\nor after the autoStart timer fires.

\n\n

Return false to veto the drag operation.

\n"},"mousemove":{"!type":"fn(this: ?, e: ?, eOpts: ?)","!doc":"

Fired when the mouse is moved. Returning false cancels the drag operation.

\n"},"mouseout":{"!type":"fn(this: ?, e: ?, eOpts: ?)","!doc":"

Fires when the mouse exits the DragTracker's target element (or if delegate is\nused, when the mouse exits a delegate element).

\n\n

Only available when trackOver is true

\n"},"mouseover":{"!type":"fn(this: ?, e: ?, target: +HTMLElement, eOpts: ?)","!doc":"

Fires when the mouse enters the DragTracker's target element (or if delegate is\nused, when the mouse enters a delegate element).

\n\n

Only available when trackOver is true

\n"},"mouseup":{"!type":"fn(this: ?, e: ?, eOpts: ?)"}}},"DragZone":{"!doc":"

This class provides a container DD instance that allows dragging of multiple child source nodes.

\n\n

This class does not move the drag target nodes, but a proxy element which may contain any DOM structure you wish. The\nDOM element to show in the proxy is provided by either a provided implementation of getDragData, or by\nregistered draggables registered with Ext.dd.Registry

\n\n

If you wish to provide draggability for an arbitrary number of DOM nodes, each of which represent some application\nobject (For example nodes in a DataView) then use of this class is the most efficient way to\n\"activate\" those nodes.

\n\n

By default, this class requires that draggable child nodes are registered with Ext.dd.Registry. However a\nsimpler way to allow a DragZone to manage any number of draggable elements is to configure the DragZone with an\nimplementation of the getDragData method which interrogates the passed mouse event to see if it has taken\nplace within an element, or class of elements. This is easily done by using the event's getTarget method to identify a node based on a Ext.DomQuery selector. For example,\nto make the nodes of a DataView draggable, use the following technique. Knowledge of the use of the DataView is\nrequired:

\n\n
myDataView.on('render', function(v) {\n    myDataView.dragZone = new Ext.dd.DragZone(v.getEl(), {\n\n//      On receipt of a mousedown event, see if it is within a DataView node.\n//      Return a drag data object if so.\n        getDragData: function(e) {\n\n//          Use the DataView's own itemSelector (a mandatory property) to\n//          test if the mousedown is within one of the DataView's nodes.\n            var sourceEl = e.getTarget(v.itemSelector, 10);\n\n//          If the mousedown is within a DataView node, clone the node to produce\n//          a ddel element for use by the drag proxy. Also add application data\n//          to the returned data object.\n            if (sourceEl) {\n                d = sourceEl.cloneNode(true);\n                d.id = Ext.id();\n                return {\n                    ddel: d,\n                    sourceEl: sourceEl,\n                    repairXY: Ext.fly(sourceEl).getXY(),\n                    sourceStore: v.store,\n                    draggedRecord: v.getRecord(sourceEl)\n                }\n            }\n        },\n\n//      Provide coordinates for the proxy to slide back to on failed drag.\n//      This is the original XY coordinates of the draggable element captured\n//      in the getDragData method.\n        getRepairXY: function() {\n            return this.dragData.repairXY;\n        }\n    });\n});\n
\n\n

See the DropZone documentation for details about building a DropZone which cooperates with\nthis DragZone.

\n","!type":"fn(el: string|+HTMLElement|+Ext.Element, config: Ext_dd_DragZone_cfg)","prototype":{"!proto":"Ext.dd.DragSource.prototype","containerScroll":{"!type":"?|bool","!doc":"

True to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"scrollEl":{"!type":"string|+HTMLElement|+Ext.dom.Element","!doc":"

An element to register with the ScrollManager if containerScroll\nis set. Defaults to the drag element.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy this DragDrop instance

\n"},"getDragData":{"!type":"fn(e: +Event) -> ?","!doc":"

Called when a mousedown occurs in this container. Looks in Ext.dd.Registry for a valid target to drag\nbased on the mouse down. Override this method to provide your own lookup logic (e.g. finding a child by class\nname). Make sure your returned object has a \"ddel\" attribute (with an HTML Element) for other functions to work.

\n"},"getRepairXY":{"!type":"fn(e: +Event) -> [number]","!doc":"

Called before a repair of an invalid drop to get the XY to animate to. By default returns the XY of\nthis.dragData.ddel

\n"},"onInitDrag":{"!type":"fn(x: number, y: number) -> bool","!doc":"

Called once drag threshold has been reached to initialize the proxy element. By default, it clones the\nthis.dragData.ddel

\n"}}},"DropTarget":{"!doc":"

A simple class that provides the basic implementation needed to make any element a drop target that can have\ndraggable items dropped onto it. The drop has no effect until an implementation of notifyDrop is provided.

\n","!type":"fn(el: string|+HTMLElement|+Ext.Element, config: Ext_dd_DropTarget_cfg)","prototype":{"!proto":"Ext.dd.DDTarget.prototype","ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then this object will only\ninteract with other drag drop objects in the same group.

\n"},"dropAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is allowed.

\n"},"dropNotAllowed":{"!type":"string","!doc":"

The CSS class returned to the drag source when drop is not allowed.

\n"},"overClass":{"!type":"string","!doc":"

The CSS class applied to the drop target element while the drag source is over it.

\n"},"isNotifyTarget":{"!type":"bool","!doc":"

private

\n"},"isTarget":{"!type":"bool","!doc":"

private

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy this DragDrop instance

\n"},"notifyDrop":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> bool","!doc":"

The function a Ext.dd.DragSource calls once to notify this drop target that the dragged item has\nbeen dropped on it. This method has no default implementation and returns false, so you must provide an\nimplementation that does something to process the drop event and returns true so that the drag source's\nrepair action does not run.

\n"},"notifyEnter":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> string","!doc":"

The function a Ext.dd.DragSource calls once to notify this drop target that the source is now over the\ntarget. This default implementation adds the CSS class specified by overClass (if any) to the drop element\nand returns the dropAllowed config value. This method should be overridden if drop validation is required.

\n"},"notifyOut":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> !this","!doc":"

The function a Ext.dd.DragSource calls once to notify this drop target that the source has been dragged\nout of the target without dropping. This default implementation simply removes the CSS class specified by\noverClass (if any) from the drop element.

\n"},"notifyOver":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> string","!doc":"

The function a Ext.dd.DragSource calls continuously while it is being dragged over the target.\nThis method will be called on every mouse movement while the drag source is over the drop target.\nThis default implementation simply returns the dropAllowed config value.

\n"}}},"DropZone":{"!doc":"

This class provides a container DD instance that allows dropping on multiple child target nodes.

\n\n

By default, this class requires that child nodes accepting drop are registered with Ext.dd.Registry.\nHowever a simpler way to allow a DropZone to manage any number of target elements is to configure the\nDropZone with an implementation of getTargetFromEvent which interrogates the passed\nmouse event to see if it has taken place within an element, or class of elements. This is easily done\nby using the event's getTarget method to identify a node based on a\nExt.DomQuery selector.

\n\n

Once the DropZone has detected through calling getTargetFromEvent, that the mouse is over\na drop target, that target is passed as the first parameter to onNodeEnter, onNodeOver,\nonNodeOut, onNodeDrop. You may configure the instance of DropZone with implementations\nof these methods to provide application-specific behaviour for these events to update both\napplication state, and UI state.

\n\n

For example to make a GridPanel a cooperating target with the example illustrated in\nDragZone, the following technique might be used:

\n\n
myGridPanel.on('render', function() {\n    myGridPanel.dropZone = new Ext.dd.DropZone(myGridPanel.getView().scroller, {\n\n        // If the mouse is over a grid row, return that node. This is\n        // provided as the \"target\" parameter in all \"onNodeXXXX\" node event handling functions\n        getTargetFromEvent: function(e) {\n            return e.getTarget(myGridPanel.getView().rowSelector);\n        },\n\n        // On entry into a target node, highlight that node.\n        onNodeEnter : function(target, dd, e, data){\n            Ext.fly(target).addCls('my-row-highlight-class');\n        },\n\n        // On exit from a target node, unhighlight that node.\n        onNodeOut : function(target, dd, e, data){\n            Ext.fly(target).removeCls('my-row-highlight-class');\n        },\n\n        // While over a target node, return the default drop allowed class which\n        // places a \"tick\" icon into the drag proxy.\n        onNodeOver : function(target, dd, e, data){\n            return Ext.dd.DropZone.prototype.dropAllowed;\n        },\n\n        // On node drop we can interrogate the target to find the underlying\n        // application object that is the real target of the dragged data.\n        // In this case, it is a Record in the GridPanel's Store.\n        // We can use the data set up by the DragZone's getDragData method to read\n        // any data we decided to attach in the DragZone's getDragData method.\n        onNodeDrop : function(target, dd, e, data){\n            var rowIndex = myGridPanel.getView().findRowIndex(target);\n            var r = myGridPanel.getStore().getAt(rowIndex);\n            Ext.Msg.alert('Drop gesture', 'Dropped Record id ' + data.draggedRecord.id +\n                ' on Record id ' + r.id);\n            return true;\n        }\n    });\n}\n
\n\n

See the DragZone documentation for details about building a DragZone which\ncooperates with this DropZone.

\n","!type":"fn(el: string|+HTMLElement|+Ext.Element, config: Ext_dd_DropZone_cfg)","prototype":{"!proto":"Ext.dd.DropTarget.prototype","getTargetFromEvent":{"!type":"fn(e: +Event) -> ?","!doc":"

Returns a custom data object associated with the DOM node that is the target of the event. By default\nthis looks up the event target in the Ext.dd.Registry, although you can override this method to\nprovide your own custom lookup.

\n"},"notifyDrop":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> bool","!doc":"

The function a Ext.dd.DragSource calls once to notify this drop zone that the dragged item has\nbeen dropped on it. The drag zone will look up the target node based on the event passed in, and if there\nis a node registered for that event, it will delegate to onNodeDrop for node-specific handling,\notherwise it will call onContainerDrop.

\n"},"notifyEnter":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> string","!doc":"

The function a Ext.dd.DragSource calls once to notify this drop zone that the source is now over\nthe zone. The default implementation returns this.dropNotAllowed and expects that only registered drop\nnodes can process drag drop operations, so if you need the drop zone itself to be able to process drops\nyou should override this method and provide a custom implementation.

\n"},"notifyOut":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> !this","!doc":"

The function a Ext.dd.DragSource calls once to notify this drop zone that the source has been dragged\nout of the zone without dropping. If the drag source is currently over a registered node, the notification\nwill be delegated to onNodeOut for node-specific handling, otherwise it will be ignored.

\n"},"notifyOver":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> string","!doc":"

The function a Ext.dd.DragSource calls continuously while it is being dragged over the drop zone.\nThis method will be called on every mouse movement while the drag source is over the drop zone.\nIt will call onNodeOver while the drag source is over a registered node, and will also automatically\ndelegate to the appropriate node-specific methods as necessary when the drag source enters and exits\nregistered nodes (onNodeEnter, onNodeOut). If the drag source is not currently over a\nregistered node, it will call onContainerOver.

\n"},"onContainerDrop":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> bool","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dropped on it,\nbut not on any of its registered drop nodes. The default implementation returns false, so it should be\noverridden to provide the appropriate processing of the drop event if you need the drop zone itself to\nbe able to accept drops. It should return true when valid so that the drag source's repair action does not run.

\n"},"onContainerOver":{"!type":"fn(source: +Ext.dd.DragSource, e: +Event, data: ?) -> string","!doc":"

Called while the DropZone determines that a Ext.dd.DragSource is being dragged over it,\nbut not over any of its registered drop nodes. The default implementation returns this.dropNotAllowed, so\nit should be overridden to provide the proper feedback if necessary.

\n"},"onNodeDrop":{"!type":"fn(nodeData: ?, source: +Ext.dd.DragSource, e: +Event, data: ?) -> bool","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dropped onto\nthe drop node. The default implementation returns false, so it should be overridden to provide the\nappropriate processing of the drop event and return true so that the drag source's repair action does not run.

\n"},"onNodeEnter":{"!type":"fn(nodeData: ?, source: +Ext.dd.DragSource, e: +Event, data: ?) -> !this","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has entered a drop node\nthat has either been registered or detected by a configured implementation of getTargetFromEvent.\nThis method has no default implementation and should be overridden to provide\nnode-specific processing if necessary.

\n"},"onNodeOut":{"!type":"fn(nodeData: ?, source: +Ext.dd.DragSource, e: +Event, data: ?) -> !this","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dragged out of\nthe drop node without dropping. This method has no default implementation and should be overridden to provide\nnode-specific processing if necessary.

\n"},"onNodeOver":{"!type":"fn(nodeData: ?, source: +Ext.dd.DragSource, e: +Event, data: ?) -> string","!doc":"

Called while the DropZone determines that a Ext.dd.DragSource is over a drop node\nthat has either been registered or detected by a configured implementation of getTargetFromEvent.\nThe default implementation returns this.dropAllowed, so it should be\noverridden to provide the proper feedback.

\n"},"triggerCacheRefresh":{"!type":"fn() -> !this","!doc":"

private

\n"}}},"Registry":{"!doc":"

Provides easy access to all drag drop components that are registered on a page. Items can be retrieved either\ndirectly by DOM node id, or by passing in the drag drop event that occurred and looking up the event target.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"getHandle":{"!type":"fn(id: string|+HTMLElement) -> ?","!doc":"

Returns the handle registered for a DOM Node by id

\n"},"getHandleFromEvent":{"!type":"fn(e: +Event) -> ?","!doc":"

Returns the handle that is registered for the DOM node that is the target of the event

\n"},"getId":{"!type":"fn(el: ?, autogen: ?) -> !this"},"getTarget":{"!type":"fn(id: string|+HTMLElement) -> ?","!doc":"

Returns a custom data object that is registered for a DOM node by id

\n"},"getTargetFromEvent":{"!type":"fn(e: +Event) -> ?","!doc":"

Returns a custom data object that is registered for the DOM node that is the target of the event

\n"},"register":{"!type":"fn(element: string|+HTMLElement, data: ?) -> !this","!doc":"

Registers a drag drop element.

\n"},"unregister":{"!type":"fn(element: string|+HTMLElement) -> !this","!doc":"

Unregister a drag drop element

\n"}},"ScrollManager":{"!doc":"

Provides automatic scrolling of overflow regions in the page during drag operations.

\n\n

The ScrollManager configs will be used as the defaults for any scroll container registered with it, but you can also\noverride most of the configs per scroll container by adding a ddScrollConfig object to the target element that\ncontains these properties: hthresh, vthresh, increment and frequency. Example\nusage:

\n\n
var el = Ext.get('scroll-ct');\nel.ddScrollConfig = {\n    vthresh: 50,\n    hthresh: -1,\n    frequency: 100,\n    increment: 200\n};\nExt.dd.ScrollManager.register(el);\n
\n\n

Note: This class is designed to be used in \"Point Mode

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"animDuration":{"!type":"number","!doc":"

The animation duration in seconds - MUST BE less than Ext.dd.ScrollManager.frequency!

\n"},"animate":{"!type":"bool","!doc":"

True to animate the scroll

\n"},"ddGroup":{"!type":"string","!doc":"

The named drag drop group to which this container belongs. If a ddGroup is\nspecified, then container scrolling will only occur when a dragged object is in the same ddGroup.

\n"},"frequency":{"!type":"number","!doc":"

The frequency of scrolls in milliseconds

\n"},"hthresh":{"!type":"number","!doc":"

The number of pixels from the right or left edge of a container the pointer needs to be to trigger scrolling

\n"},"increment":{"!type":"number","!doc":"

The number of pixels to scroll in each scroll increment

\n"},"vthresh":{"!type":"number","!doc":"

The number of pixels from the top or bottom edge of a container the pointer needs to be to trigger scrolling

\n"},"clearProc":{"!type":"fn() -> !this"},"doScroll":{"!type":"fn() -> !this"},"onFire":{"!type":"fn(e: ?, isDrop: ?) -> !this"},"onStop":{"!type":"fn(e: ?) -> !this"},"refreshCache":{"!type":"fn() -> !this","!doc":"

Manually trigger a cache refresh.

\n"},"register":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|[string]|[+HTMLElement]|[+Ext.Element]) -> !this","!doc":"

Registers new overflow element(s) to auto scroll

\n"},"startProc":{"!type":"fn(el: ?, dir: ?) -> !this"},"triggerRefresh":{"!type":"fn() -> !this"},"unregister":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|[string]|[+HTMLElement]|[+Ext.Element]) -> !this","!doc":"

Unregisters overflow element(s) so they are no longer scrolled

\n"}},"StatusProxy":{"!doc":"

A specialized floating Component that supports a drop status icon, Ext.Layer styles\nand auto-repair. This is the default drag proxy used by all Ext.dd components.

\n","!type":"fn(config?: Ext_dd_StatusProxy_cfg)","prototype":{"!proto":"Ext.Component.prototype","dropAllowed":{"!type":"string","!doc":"

The CSS class to apply to the status element when drop is allowed.

\n"},"dropNotAllowed":{"!type":"string","!doc":"

The CSS class to apply to the status element when drop is not allowed.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"animRepair":{"!type":"bool"},"childEls":{"!type":"[?]"},"repairCls":{"!type":"string"},"afterRepair":{"!type":"fn() -> !this","!doc":"

private

\n"},"getGhost":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the ghost element

\n"},"hide":{"!type":"fn(clear: bool) -> !this","!doc":"

Hides the proxy

\n"},"repair":{"!type":"fn(xy: [number], callback: fn(), scope: ?) -> !this","!doc":"

Causes the proxy to return to its position of origin via an animation.\nShould be called after an invalid drop operation by the item being dragged.

\n"},"reset":{"!type":"fn(clearGhost: bool) -> !this","!doc":"

Resets the status indicator to the default dropNotAllowed value

\n"},"setStatus":{"!type":"fn(cssClass: string) -> !this","!doc":"

Updates the proxy's visual element to indicate the status of whether or not drop is allowed\nover the current target element.

\n"},"stop":{"!type":"fn() -> !this","!doc":"

Stops the repair animation if it's currently running

\n"},"sync":{"!type":"fn() -> !this","!doc":"

Force the Layer to sync its shadow and shim positions to the element

\n"},"update":{"!type":"fn(html: string|+HTMLElement) -> !this","!doc":"

Updates the contents of the ghost element

\n"}}}},"direct":{"Event":{"!doc":"

Base class for all Ext.direct events. An event is\ncreated after some kind of interaction with the server.\nThe event class is essentially just a data structure\nto hold a Direct response.

\n","!type":"fn(config?: Ext_direct_Event_cfg)","prototype":{"!proto":"Ext.Base.prototype","status":{"!type":"bool"},"getData":{"!type":"fn() -> +Mixed","!doc":"

Return the raw data for this event.

\n"},"getName":{"!type":"fn() -> string","!doc":"

Return the name for this event.

\n"}}},"ExceptionEvent":{"!doc":"

An event that is fired when an exception is received from a Ext.direct.RemotingProvider

\n","!type":"fn(config?: Ext_direct_ExceptionEvent_cfg)","prototype":{"!proto":"Ext.direct.RemotingEvent.prototype","status":{"!type":"bool"}}},"JsonProvider":{"!doc":"

A base provider for communicating using JSON. This is an abstract class\nand should not be instanced directly.

\n","prototype":{"createEvent":{"!type":"fn(response: ?) -> +Ext.direct.Event","!doc":"

Create an event from a response object

\n"},"createEvents":{"!type":"fn(response: ?) -> [+Ext.direct.Event]","!doc":"

Creates a set of events based on the XHR response

\n"},"parseResponse":{"!type":"fn(response: ?) -> ?","!doc":"

Parse the JSON response

\n"}}},"Manager":{"!doc":"

Ext.Direct aims to streamline communication between the client and server by providing a single interface that\nreduces the amount of common code typically required to validate data and handle returned data packets (reading data,\nerror conditions, etc).

\n\n

The Ext.direct namespace includes several classes for a closer integration with the server-side. The Ext.data\nnamespace also includes classes for working with Ext.data.Stores which are backed by data from an Ext.Direct method.

\n\n

Specification

\n\n

For additional information consult the Ext.Direct Specification.

\n\n

Providers

\n\n

Ext.Direct uses a provider architecture, where one or more providers are used to transport data to and from the\nserver. There are several providers that exist in the core at the moment:

\n\n\n\n\n

A provider does not need to be invoked directly, providers are added via Ext.direct.Manager.addProvider.

\n\n

Router

\n\n

Ext.Direct utilizes a \"router\" on the server to direct requests from the client to the appropriate server-side\nmethod. Because the Ext.Direct API is completely platform-agnostic, you could completely swap out a Java based server\nsolution and replace it with one that uses C# without changing the client side JavaScript at all.

\n\n

Server side events

\n\n

Custom events from the server may be handled by the client by adding listeners, for example:

\n\n
{\"type\":\"event\",\"name\":\"message\",\"data\":\"Successfully polled at: 11:19:30 am\"}\n\n// add a handler for a 'message' event sent by the server\nExt.direct.Manager.on('message', function(e){\n    out.append(String.format('<p><i>{0}</i></p>', e.data));\n    out.el.scrollTo('t', 100000, true);\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"exceptions":{"!type":"?","!doc":"

Exception types.

\n"},"addProvider":{"!type":"fn(provider: +Ext.direct.Provider|?) -> !this","!doc":"

Adds an Ext.Direct Provider and creates the proxy or stub methods to execute server-side methods. If the provider\nis not already connected, it will auto-connect.

\n\n
 var pollProv = new Ext.direct.PollingProvider({\n     url: 'php/poll2.php'\n });\n\n Ext.direct.Manager.addProvider({\n     type: 'remoting',           // create a Ext.direct.RemotingProvider\n     url:  'php/router.php',     // url to connect to the Ext.Direct server-side router.\n     actions: {                  // each property within the actions object represents a Class\n         TestAction: [{          // array of methods within each server side Class\n             name: 'doEcho',     // name of method\n             len:  1\n         }, {\n             name: 'multiply',\n             len:  1\n         }, {\n             name: 'doForm',\n             formHandler: true   // handle form on server with Ext.Direct.Transaction\n         }]\n     },\n     namespace: 'myApplication', // namespace to create the Remoting Provider in\n }, {\n     type: 'polling',            // create a Ext.direct.PollingProvider\n     url:  'php/poll.php'\n },\n pollProv);                      // reference to previously created instance\n
\n"},"addTransaction":{"!type":"fn(transaction: +Ext.direct.Transaction) -> +Ext.direct.Transaction","!doc":"

Adds a transaction to the manager.

\n"},"getProvider":{"!type":"fn(id: string|+Ext.direct.Provider) -> !this","!doc":"

Retrieves a provider by the id specified when the\nprovider is added.

\n"},"getTransaction":{"!type":"fn(transaction: string|+Ext.direct.Transaction) -> +Ext.direct.Transaction","!doc":"

Gets a transaction

\n"},"onProviderData":{"!type":"fn(provider: ?, event: ?) -> !this"},"parseMethod":{"!type":"fn(fn: string|fn()) -> fn()","!doc":"

Parses a direct function. It may be passed in a string format, for example:\n\"MyApp.Person.read\".

\n"},"removeProvider":{"!type":"fn(provider: string|+Ext.direct.Provider) -> +Ext.direct.Provider","!doc":"

Removes the provider.

\n"},"removeTransaction":{"!type":"fn(transaction: string|+Ext.direct.Transaction) -> +Ext.direct.Transaction","!doc":"

Removes a transaction from the manager.

\n"},"event":{"!type":"fn(event: +Ext.direct.Event, provider: +Ext.direct.Provider, eOpts: ?)","!doc":"

Fires after an event.

\n"},"exception":{"!type":"fn(event: +Ext.direct.Event, eOpts: ?)","!doc":"

Fires after an event exception.

\n"}},"PollingProvider":{"!doc":"

Provides for repetitive polling of the server at distinct intervals.\nThe initial request for data originates from the client, and then is responded to by the\nserver.

\n\n

Configuration for the PollingProvider can be generated by the server-side\nAPI portion of the Ext.Direct stack.

\n\n

An instance of PollingProvider may be created directly via the new keyword or by simply\nspecifying type = 'polling'. For example:

\n\n
 var pollA = new Ext.direct.PollingProvider({\n     type:'polling',\n     url: 'php/pollA.php',\n });\n Ext.direct.Manager.addProvider(pollA);\n pollA.disconnect();\n\n Ext.direct.Manager.addProvider({\n     type:'polling',\n     url: 'php/pollB.php',\n     id: 'pollB-provider'\n });\n var pollB = Ext.direct.Manager.getProvider('pollB-provider');\n
\n","prototype":{"baseParams":{"!type":"?","!doc":"

An object containing properties which are to be sent as parameters on every polling request

\n"},"interval":{"!type":"number","!doc":"

How often to poll the server-side in milliseconds. Defaults to every 3 seconds.

\n"},"url":{"!type":"string|fn()","!doc":"

The url which the PollingProvider should contact with each request. This can also be\nan imported Ext.Direct method which will accept the baseParams as its only argument.

\n"},"connect":{"!type":"fn() -> !this","!doc":"

Connect to the server-side and begin the polling process. To handle each\nresponse subscribe to the data event.

\n"},"disconnect":{"!type":"fn() -> !this","!doc":"

Disconnect from the server-side and stop the polling process. The disconnect\nevent will be fired on a successful disconnect.

\n"},"isConnected":{"!type":"fn() -> !this","!doc":"

Returns whether or not the server-side is currently connected.\nAbstract method for subclasses to implement.

\n"},"onData":{"!type":"fn(opt: ?, success: ?, response: ?) -> !this"},"runPoll":{"!type":"fn() -> !this"},"beforepoll":{"!type":"fn(this: +Ext.direct.PollingProvider, eOpts: ?)","!doc":"

Fired immediately before a poll takes place.

\n"},"poll":{"!type":"fn(this: +Ext.direct.PollingProvider, eOpts: ?)","!doc":"

Fired immediately after a poll takes place.

\n"}}},"Provider":{"!doc":"

Ext.direct.Provider is an abstract class meant to be extended.

\n\n

For example Ext JS implements the following subclasses:

\n\n
Provider\n|\n+---JsonProvider\n    |\n    +---PollingProvider\n    |\n    +---RemotingProvider\n
\n","prototype":{"id":{"!type":"string","!doc":"

The unique id of the provider (defaults to an auto-assigned id).\nYou should assign an id if you need to be able to access the provider later and you do\nnot have an object reference available, for example:

\n\n
 Ext.direct.Manager.addProvider({\n     type: 'polling',\n     url:  'php/poll.php',\n     id:   'poll-provider'\n });\n var p = Ext.direct.Manager.getProvider('poll-provider');\np.disconnect();\n
\n"},"relayedEvents":{"!type":"[string]","!doc":"

List of Provider events that should be relayed by Ext.direct.Manager.\n'data' event is always relayed.

\n"},"isProvider":{"!type":"bool"},"connect":{"!type":"fn(provider: +Ext.direct.Provider, eOpts: ?)","!doc":"

Fires when the Provider connects to the server-side

\n"},"disconnect":{"!type":"fn(provider: +Ext.direct.Provider, eOpts: ?)","!doc":"

Fires when the Provider disconnects from the server-side

\n"},"isConnected":{"!type":"fn() -> !this","!doc":"

Returns whether or not the server-side is currently connected.\nAbstract method for subclasses to implement.

\n"},"data":{"!type":"fn(provider: +Ext.direct.Provider, e: +Ext.direct.Event, eOpts: ?)","!doc":"

Fires when the Provider receives data from the server-side

\n"},"exception":{"!type":"fn(eOpts: ?)","!doc":"

Fires when the Provider receives an exception from the server-side

\n"}}},"RemotingEvent":{"!doc":"

An event that is fired when data is received from a\nExt.direct.RemotingProvider. Contains a method to the\nrelated transaction for the direct request, see getTransaction

\n","!type":"fn(config?: Ext_direct_RemotingEvent_cfg)","prototype":{"!proto":"Ext.direct.Event.prototype","getTransaction":{"!type":"fn() -> +Ext.direct.Transaction","!doc":"

Get the transaction associated with this event.

\n"}}},"RemotingMethod":{"!doc":"

Small utility class used internally to represent a Direct method.

\n","!type":"fn(config: Ext_direct_RemotingMethod_cfg)","prototype":{"!proto":"Ext.Base.prototype","getArgs":{"!type":"fn(params: ?, paramOrder: ?, paramsAsHash: ?) -> !this"},"getCallData":{"!type":"fn(args: [?]) -> ?","!doc":"

Takes the arguments for the Direct function and splits the arguments\nfrom the scope and the callback.

\n"}}},"RemotingProvider":{"!doc":"

The RemotingProvider exposes access to\nserver side methods on the client (a remote procedure call (RPC) type of\nconnection where the client can initiate a procedure on the server).

\n\n

This allows for code to be organized in a fashion that is maintainable,\nwhile providing a clear path between client and server, something that is\nnot always apparent when using URLs.

\n\n

To accomplish this the server-side needs to describe what classes and methods\nare available on the client-side. This configuration will typically be\noutputted by the server-side Ext.Direct stack when the API description is built.

\n","prototype":{"actions":{"!type":"?","!doc":"

Object literal defining the server side actions and methods. For example, if\nthe Provider is configured with:

\n\n
 // each property within the 'actions' object represents a server side Class\n actions: {\n     TestAction: [   // array of methods within each server side Class to be   \n     {               // stubbed out on client\n         name: 'doEcho',   // stub method will be TestAction.doEcho\n         len:  1            \n     }, {\n         name: 'multiply', // name of method\n         len:  2           // The number of parameters that will be used to create an\n                           // array of data to send to the server side function.\n     }, {\n         name: 'doForm',\n         formHandler: true // tells the client that this method handles form calls\n     }],\n\n     // These methods will be created in nested namespace TestAction.Foo\n     'TestAction.Foo': [{\n         name: 'ordered',  // stub method will be TestAction.Foo.ordered\n         len:  1\n     }, {\n         name: 'noParams', // this method does not accept any parameters\n         len:  0\n     }, {\n         name: 'named',    // stub method will be TestAction.Foo.named\n         params: ['foo', 'bar']    // parameters are passed by name\n     }]\n }\n
\n\n

Note that starting with 4.2, dotted Action names will generate nested objects.\nIf you wish to reverse to previous behavior, set disableNestedActions\nto true.

\n\n

In the following example a client side handler is used to call the\nserver side method \"multiply\" in the server-side \"TestAction\" Class:

\n\n
 TestAction.multiply(\n     // pass two arguments to server, so specify len=2\n     2, 4,\n\n     // callback function after the server is called\n     //  result: the result returned by the server\n     //       e: Ext.direct.RemotingEvent object\n     // success: true or false\n     // options: options to be applied to method call and passed to callback\n     function (result, e, success, options) {\n         var t, action, method;\n\n         t = e.getTransaction();\n         action = t.action; // server side Class called\n         method = t.method; // server side method called\n\n         if (e.status) {\n             var answer = Ext.encode(result); // 8\n         }\n         else {\n             var msg = e.message; // failure message\n         }\n     },\n\n     // Scope to call the callback in (optional)\n     window,\n\n     // Options to apply to this method call. This can include\n     // Ajax.request() options; only `timeout` is supported at this time.\n     // When timeout is set for a method call, it will be executed immediately\n     // without buffering.\n     // The same options object is passed to the callback so it's possible\n     // to \"forward\" some data when needed.\n     {\n         timeout: 60000, // milliseconds\n         foo: 'bar'\n     }\n );\n
\n\n

In the example above, the server side \"multiply\" function will be passed two\narguments (2 and 4). The \"multiply\" method should return the value 8 which will be\navailable as the result in the callback example above.

\n"},"disableNestedActions":{"!type":"bool","!doc":"

In versions prior to 4.2, using dotted Action names was not really meaningful,\nbecause it generated flat namespace object with dotted property names.\nFor example, take this API declaration:

\n\n
 {\n     actions: {\n         TestAction: {\n             name: 'foo',\n             len:  1\n         },\n         'TestAction.Foo' {\n             name: 'bar',\n             len: 1\n         }\n     },\n     namespace: 'MyApp'\n }\n
\n\n

Before 4.2, that would generate the following API object:

\n\n
 window.MyApp = {\n     TestAction: {\n         foo: function() { ... }\n     },\n     'TestAction.Foo': {\n         bar: function() { ... }\n     }\n }\n
\n\n

In Ext JS 4.2, we introduced new namespace handling behavior. Now the same API object\nwill be like this:

\n\n
 window.MyApp = {\n     TestAction: {\n         foo: function() { ... },\n\n         Foo: {\n             bar: function() { ... }\n         }\n     }\n }\n
\n\n

Instead of addressing Action methods array-style MyApp['TestAction.Foo'].bar(),\nnow it is possible to use object addressing: MyApp.TestAction.Foo.bar().

\n\n

If you find this behavior undesirable, set this config option to true.

\n"},"enableBuffer":{"!type":"number|bool","!doc":"

true or false to enable or disable combining of method\ncalls. If a number is specified this is the amount of time in milliseconds\nto wait before sending a batched request.

\n\n

Calls which are received within the specified timeframe will be\nconcatenated together and sent in a single request, optimizing the\napplication by reducing the amount of round trips that have to be made\nto the server. To cancel buffering for some particular invocations, pass\ntimeout parameter in options object for that method call.

\n"},"enableUrlEncode":{"!type":"string","!doc":"

Specify which param will hold the arguments for the method.

\n"},"maxRetries":{"!type":"number","!doc":"

Number of times to re-attempt delivery on failure of a call.

\n"},"namespace":{"!type":"string|?","!doc":"

Namespace for the Remoting Provider (defaults to Ext.global).\nExplicitly specify the namespace Object, or specify a String to have a\nnamespace created implicitly.

\n"},"timeout":{"!type":"number","!doc":"

The timeout to use for each request.

\n"},"url":{"!type":"string","!doc":"

Required. The url to connect to the Ext.direct.Manager server-side router.

\n"},"combineAndSend":{"!type":"fn() -> !this","!doc":"

Combine any buffered requests and send them off

\n"},"configureFormRequest":{"!type":"fn(action: string, method: ?, form: +HTMLElement, callback?: fn(), scope?: ?) -> !this","!doc":"

Configure a form submission request

\n"},"configureRequest":{"!type":"fn(action: string, method: ?) -> !this","!doc":"

Configure a direct request

\n"},"connect":{"!type":"fn() -> !this","!doc":"

Abstract method for subclasses to implement.

\n"},"createHandler":{"!type":"fn(action: string, method: ?) -> fn()","!doc":"

Create a handler function for a direct call.

\n"},"createNamespaces":{"!type":"fn(root: ?, action: ?) -> !this","!doc":"

Create nested namespaces. Unlike Ext.ns this method supports\nnested objects as root of the namespace, not only Ext.global (window).

\n"},"disconnect":{"!type":"fn() -> !this","!doc":"

Abstract method for subclasses to implement.

\n"},"getCallData":{"!type":"fn(transaction: +Ext.direct.Transaction) -> ?","!doc":"

Gets the Ajax call info for a transaction

\n"},"getNamespace":{"!type":"fn(root: ?, action: ?) -> !this","!doc":"

Get nested namespace by property.

\n"},"getTransaction":{"!type":"fn(options: ?) -> +Ext.direct.Transaction","!doc":"

Get transaction from XHR options

\n"},"initAPI":{"!type":"fn() -> !this","!doc":"

Initialize the API

\n"},"isConnected":{"!type":"fn() -> !this","!doc":"

Returns whether or not the server-side is currently connected.\nAbstract method for subclasses to implement.

\n"},"onData":{"!type":"fn(options: ?, success: ?, response: ?) -> !this","!doc":"

React to the ajax request being completed

\n"},"queueTransaction":{"!type":"fn(transaction: +Ext.direct.Transaction) -> !this","!doc":"

Add a new transaction to the queue

\n"},"runCallback":{"!type":"fn(transaction: +Ext.direct.Transaction, event: +Ext.direct.Event) -> !this","!doc":"

Run any callbacks related to the transaction.

\n"},"sendFormRequest":{"!type":"fn(transaction: +Ext.direct.Transaction) -> !this","!doc":"

Sends a form request

\n"},"sendRequest":{"!type":"fn(data: ?|[?]) -> !this","!doc":"

Sends a request to the server

\n"},"beforecall":{"!type":"fn(provider: +Ext.direct.RemotingProvider, transaction: +Ext.direct.Transaction, meta: ?, eOpts: ?)","!doc":"

Fires immediately before the client-side sends off the RPC call. By returning\nfalse from an event handler you can prevent the call from being made.

\n"},"beforecallback":{"!type":"fn(provider: +Ext.direct.RemotingProvider, transaction: +Ext.direct.Transaction, eOpts: ?)","!doc":"

Fires before callback function is executed. By returning false from an event handler\nyou can prevent the callback from executing.

\n"},"call":{"!type":"fn(provider: +Ext.direct.RemotingProvider, transaction: +Ext.direct.Transaction, meta: ?, eOpts: ?)","!doc":"

Fires immediately after the request to the server-side is sent. This does\nNOT fire after the response has come back from the call.

\n"}}},"Transaction":{"!doc":"

Supporting Class for Ext.Direct (not intended to be used directly).

\n","!type":"fn(config?: Ext_direct_Transaction_cfg)","prototype":{"!proto":"Ext.Base.prototype","provider":{"!type":"+Ext.direct.Provider","!doc":"

Provider to use with this Transaction.

\n"},"getProvider":{"!type":"fn() -> !this"},"retry":{"!type":"fn() -> !this"},"send":{"!type":"fn() -> !this"}},"TRANSACTION_ID":{"!type":"number"}}},"dom":{"AbstractElement":{"!type":"fn(element: ?, forceNew: ?)","prototype":{"!proto":"Ext.Base.prototype","defaultUnit":{"!type":"string","!doc":"

The default unit to append to CSS values where a unit isn't provided.

\n"},"dom":{"!type":"+HTMLElement","!doc":"

The DOM element

\n"},"id":{"!type":"string","!doc":"

The DOM element ID

\n"},"styleHooks":{"!type":"?","!doc":"

This shared object is keyed by style name (e.g., 'margin-left' or 'marginLeft'). The\nvalues are objects with the following properties:

\n\n\n\n\n

The this pointer is the object that contains get or set, which means that\nthis.name can be accessed if needed. The hook functions are both optional.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"trimRe":{"!type":"+RegExp"},"whitespaceRe":{"!type":"+RegExp"},"addCls":{"!type":"fn(className: string|[string]) -> +Ext.dom.Element","!doc":"

Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"appendChild":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement|?, returnDom?: bool) -> +Ext.dom.AbstractElement","!doc":"

Appends the passed element(s) to this element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"appendTo":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement) -> +Ext.dom.AbstractElement","!doc":"

Appends this element to the passed element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"applyStyles":{"!type":"fn(styles: string|?|fn()) -> +Ext.dom.Element","!doc":"

More flexible version of setStyle for setting style properties.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"child":{"!type":"fn(selector: string, returnDom?: bool) -> +HTMLElement|+Ext.dom.Element","!doc":"

Selects a single direct child based on the passed CSS selector (the selector should not contain an id).

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"contains":{"!type":"fn(el: +HTMLElement|string) -> bool","!doc":"

Returns true if this element is an ancestor of the passed element

\n"},"createChild":{"!type":"fn(config: ?, insertBefore?: +HTMLElement, returnDom?: bool) -> +Ext.dom.AbstractElement","!doc":"

Creates the passed DomHelper config and appends it to this element or optionally inserts it before the passed child element.

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Alias to remove.

\n"},"down":{"!type":"fn(selector: string, returnDom?: bool) -> +HTMLElement|+Ext.dom.Element","!doc":"

Selects a single child at any depth below this element based on the passed CSS selector (the selector should not contain an id).

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"findParent":{"!type":"fn(selector: string, limit?: number|string|+HTMLElement|+Ext.Element, returnEl?: bool) -> +HTMLElement","!doc":"

Looks at this node and then at parent nodes for a match of the passed simple selector (e.g. div.some-class or span:first-child)

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"findParentNode":{"!type":"fn(selector: string, limit?: number|string|+HTMLElement|+Ext.Element, returnEl?: bool) -> +HTMLElement","!doc":"

Looks at parent nodes for a match of the passed simple selector (e.g. div.some-class or span:first-child)

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"first":{"!type":"fn(selector?: string, returnDom?: bool) -> +Ext.dom.Element|+HTMLElement","!doc":"

Gets the first child, skipping text nodes

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"getActiveElement":{"!type":"fn() -> +HTMLElement","!doc":"

Returns the active element in the DOM. If the browser supports activeElement\non the document, this is returned. If not, the focus is tracked and the active\nelement is maintained internally.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getAttribute":{"!type":"fn(name: string, namespace?: string) -> string","!doc":"

Returns the value of an attribute from the element's underlying DOM node.

\n"},"getBorderWidth":{"!type":"fn(side: string) -> number","!doc":"

Gets the width of the border(s) for the specified side(s)

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getById":{"!type":"fn(id: string, asDom?: bool)","!doc":"

Returns a child element of this element given its id.

\n"},"getCache":{"!type":"fn() -> !this"},"getHTML":{"!type":"fn() -> !this","!doc":"

Returns the innerHTML of an Element or an empty string if the element's\ndom no longer exists.

\n"},"getHeight":{"!type":"fn(contentHeight?: bool) -> number","!doc":"

Returns the offset height of the element

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getMargin":{"!type":"fn(sides?: string) -> ?|number","!doc":"

Returns an object with properties top, left, right and bottom representing the margins of this element unless sides is passed,\nthen it returns the calculated width of the sides (see getPadding)

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getPadding":{"!type":"fn(side: string) -> number","!doc":"

Gets the width of the padding(s) for the specified side(s)

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getRightMarginFixCleaner":{"!type":"fn(target: +Ext.dom.Element) -> !this","!doc":"

Creates a function to call to clean up problems with the work-around for the\nWebKit RightMargin bug. The work-around is to add \"display: 'inline-block'\" to\nthe element before calling getComputedStyle and then to restore its original\ndisplay value. The problem with this is that it corrupts the selection of an\nINPUT or TEXTAREA element (as in the \"I-beam\" goes away but ths focus remains).\nTo cleanup after this, we need to capture the selection of any such element and\nthen restore it after we have restored the display style.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getSize":{"!type":"fn(contentSize?: bool) -> ?","!doc":"

Returns the size of the element.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getStyle":{"!type":"fn(property: string|[string], inline?: bool) -> string|?","!doc":"

Returns a named style property based on computed/currentStyle (primary) and\ninline-style if primary is not available.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getValue":{"!type":"fn(asNumber: bool) -> string|number","!doc":"

Returns the value of the \"value\" attribute

\n"},"getViewSize":{"!type":"fn() -> ?","!doc":"

Returns the dimensions of the element available to lay content out in.

\n\n

If the element (or any ancestor element) has CSS style display: none, the dimensions will be zero.

\n\n

Example:

\n\n
var vpSize = Ext.getBody().getViewSize();\n\n// all Windows created afterwards will have a default value of 90% height and 95% width\nExt.Window.override({\n    width: vpSize.width * 0.9,\n    height: vpSize.height * 0.95\n});\n// To handle window resizing you would have to hook onto onWindowResize.\n
\n\n

getViewSize utilizes clientHeight/clientWidth which excludes sizing of scrollbars.\nTo obtain the size including scrollbars, use getStyleSize

\n\n

Sizing of the document body is handled at the adapter level which handles special cases for IE and strict modes, etc.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"getVisibilityMode":{"!type":"fn() -> !this"},"getWidth":{"!type":"fn(contentWidth?: bool) -> number","!doc":"

Returns the offset width of the element

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"hasCls":{"!type":"fn(className: string) -> bool","!doc":"

Checks if the specified CSS class exists on this element's DOM node.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"hide":{"!type":"fn(animate?: bool|?) -> +Ext.Element","!doc":"

Hide this element - Uses display mode to determine whether to use \"display\" or \"visibility\". See setVisible.

\n"},"insertAfter":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement) -> +Ext.dom.AbstractElement","!doc":"

Inserts this element after the passed element in the DOM

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"insertBefore":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement) -> +Ext.dom.AbstractElement","!doc":"

Inserts this element before the passed element in the DOM

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"insertFirst":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement|?) -> +Ext.dom.AbstractElement","!doc":"

Inserts (or creates) an element (or DomHelper config) as the first child of this element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"insertHtml":{"!type":"fn(where: string, html: string, returnEl?: bool) -> +HTMLElement|+Ext.dom.AbstractElement","!doc":"

Inserts an html fragment into this element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"insertSibling":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement|?|[?], where?: string, returnDom?: bool) -> +Ext.dom.AbstractElement","!doc":"

Inserts (or creates) the passed element (or DomHelper config) as a sibling of this element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"is":{"!type":"fn(selector: string) -> bool","!doc":"

Returns true if this element matches the passed simple selector (e.g. div.some-class or span:first-child)

\n"},"isAncestor":{"!type":"fn(element: ?) -> !this","!doc":"

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"isStyle":{"!type":"fn(style: string, value: string) -> bool","!doc":"

Checks if the current value of a style is equal to a given value.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"isTransparent":{"!type":"fn(prop: string) -> bool","!doc":"

Returns true if the value of the given property is visually transparent. This\nmay be due to a 'transparent' style value or an rgba value with 0 in the alpha\ncomponent.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"last":{"!type":"fn(selector?: string, returnDom?: bool) -> +Ext.dom.Element|+HTMLElement","!doc":"

Gets the last child, skipping text nodes

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"mask":{"!type":"fn(msg?: string, msgCls?: string) -> !this","!doc":"

Puts a mask over this element to disable user interaction. Requires core.css.\nThis method can only be applied to elements which accept child nodes.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"matchNode":{"!type":"fn(dir: ?, start: ?, selector: ?, returnDom: ?) -> !this","!doc":"

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"next":{"!type":"fn(selector?: string, returnDom?: bool) -> +Ext.dom.Element|+HTMLElement","!doc":"

Gets the next sibling, skipping text nodes

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"parent":{"!type":"fn(selector?: string, returnDom?: bool) -> +Ext.dom.Element|+HTMLElement","!doc":"

Gets the parent node for this element, optionally chaining up trying to match a selector

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"prev":{"!type":"fn(selector?: string, returnDom?: bool) -> +Ext.dom.Element|+HTMLElement","!doc":"

Gets the previous sibling, skipping text nodes

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"query":{"!type":"fn(selector: string) -> [+HTMLElement]","!doc":"

Selects child nodes based on the passed CSS selector (the selector should not contain an id).

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"radioCls":{"!type":"fn(className: string|[string]) -> +Ext.dom.Element","!doc":"

Adds one or more CSS classes to this element and removes the same class(es) from all siblings.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"remove":{"!type":"fn() -> !this","!doc":"

Removes this element's dom reference. Note that event and cache removal is handled at Ext.removeNode

\n"},"removeCls":{"!type":"fn(className: string|[string]) -> +Ext.dom.Element","!doc":"

Removes one or more CSS classes from the element.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"repaint":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Forces the browser to repaint this element

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"replace":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement) -> +Ext.dom.AbstractElement","!doc":"

Replaces the passed element with this element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"replaceCls":{"!type":"fn(oldClassName: string, newClassName: string) -> +Ext.dom.Element","!doc":"

Replaces a CSS class on the element with another. If the old name does not exist, the new name will simply be added.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"replaceWith":{"!type":"fn(el: string|+HTMLElement|+Ext.dom.AbstractElement|?) -> +Ext.dom.AbstractElement","!doc":"

Replaces this element with the passed element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"},"select":{"!type":"fn(selector: string, unique?: bool) -> +Ext.CompositeElement","!doc":"

Creates a Ext.CompositeElement for child nodes based on the passed CSS selector (the selector should not contain an id).

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"serializeForm":{"!type":"fn(form: ?) -> string","!doc":"

Serializes a DOM form into a url encoded string

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"set":{"!type":"fn(o: ?, useSet?: bool) -> +Ext.dom.Element","!doc":"

Sets the passed attributes as attributes of this element (a style attribute can be a string, object or function)

\n"},"setHTML":{"!type":"fn(html: string) -> +Ext.Element","!doc":"

Set the innerHTML of this element

\n"},"setHeight":{"!type":"fn(height: number|string) -> +Ext.dom.Element","!doc":"

Set the height of this Element.

\n\n
// change the height to 200px and animate with default configuration\nExt.fly('elementId').setHeight(200, true);\n\n// change the height to 150px and animate with a custom configuration\nExt.fly('elId').setHeight(150, {\n    duration : 500, // animation will have a duration of .5 seconds\n    // will change the content to \"finished\"\n    callback: function(){ this.update(\"finished\"); }\n});\n
\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"setSize":{"!type":"fn(width: number|string, height: number|string) -> +Ext.dom.Element","!doc":"

Set the size of this Element. If animation is true, both width and height will be animated concurrently.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"setStyle":{"!type":"fn(property: string|?, value?: string) -> +Ext.dom.Element","!doc":"

Wrapper for setting style properties, also takes single object parameter of multiple styles.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"setVisibilityMode":{"!type":"fn(mode: ?) -> +Ext.dom.AbstractElement","!doc":"

Use this to change the visibility mode between VISIBILITY, DISPLAY, OFFSETS or ASCLASS.

\n"},"setVisible":{"!type":"fn(visible: bool, animate?: bool|?) -> +Ext.Element","!doc":"

Sets the visibility of the element (see details). If the visibilityMode is set to Element.DISPLAY, it will use\nthe display property to hide the element, otherwise it uses visibility. The default is to hide and show using the visibility property.

\n"},"setWidth":{"!type":"fn(width: number|string) -> +Ext.dom.Element","!doc":"

Set the width of this Element.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"show":{"!type":"fn(animate?: bool|?) -> +Ext.Element","!doc":"

Show this element - Uses display mode to determine whether to use \"display\" or \"visibility\". See setVisible.

\n"},"toggleCls":{"!type":"fn(className: string) -> +Ext.dom.Element","!doc":"

Toggles the specified CSS class on this element (removes it if it already exists, otherwise adds it).

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"unmask":{"!type":"fn() -> !this","!doc":"

Removes a previously applied mask.

\n\n

Defined in override Ext.dom.AbstractElement_style.

\n"},"up":{"!type":"fn(selector: string, limit?: number|string|+HTMLElement|+Ext.Element, returnDom?: bool) -> +Ext.Element","!doc":"

Walks up the DOM looking for a parent node that matches the passed simple selector (e.g. div.some-class or span:first-child).\nThis is a shortcut for findParentNode() that always returns an Ext.dom.Element.

\n\n

Defined in override Ext.dom.AbstractElement_traversal.

\n"},"update":{"!type":"fn(html: string) -> +Ext.dom.Element","!doc":"

Update the innerHTML of this element

\n"},"wrap":{"!type":"fn(config?: ?, returnDom?: bool, selector?: string) -> +HTMLElement|+Ext.dom.AbstractElement","!doc":"

Creates and wraps this element with another element

\n\n

Defined in override Ext.dom.AbstractElement_insertion.

\n"}},"ASCLASS":{"!type":"number","!doc":"

Visibility mode constant for use with Ext.dom.Element.setVisibilityMode.\nAdd or remove the Ext.Layer.visibilityCls class to hide the element.

\n"},"DISPLAY":{"!type":"number","!doc":"

Visibility mode constant for use with Ext.dom.Element.setVisibilityMode.\nUse the CSS 'display' property to hide the element.

\n"},"OFFSETS":{"!type":"number","!doc":"

Visibility mode constant for use with Ext.dom.Element.setVisibilityMode.\nUse CSS absolute positioning and top/left offsets to hide the element.

\n"},"VISIBILITY":{"!type":"number","!doc":"

Visibility mode constant for use with Ext.dom.Element.setVisibilityMode.\nUse the CSS 'visibility' property to hide the element.

\n\n

Note that in this mode, isVisible may return true\nfor an element even though it actually has a parent element that is hidden. For this\nreason, and in most cases, using the OFFSETS mode is a better choice.

\n"},"borders":{"!type":"?","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"camelRe":{"!type":"+RegExp","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"cssRe":{"!type":"+RegExp","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"defaultUnit":{"!type":"string","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"margins":{"!type":"?","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"msRe":{"!type":"+RegExp","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"opacityRe":{"!type":"+RegExp","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"paddings":{"!type":"?","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"propertyCache":{"!type":"?","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"trimRe":{"!type":"+RegExp"},"unitRe":{"!type":"+RegExp","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"whitespaceRe":{"!type":"+RegExp"},"addMethods":{"!type":"fn() -> !this"},"addToCache":{"!type":"fn(el: ?, id: ?) -> !this"},"addUnits":{"!type":"fn(size: ?, units: ?) -> !this","!doc":"

Test if size has a unit, otherwise appends the passed unit string, or the default for this Element.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"camelReplaceFn":{"!type":"fn(m: ?, a: ?) -> !this","!doc":"

private

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"fly":{"!type":"fn(dom: string|+HTMLElement, named?: string) -> +Ext.dom.Element.Fly","!doc":"

Gets the singleton flyweight element, with the passed node as the active element.

\n\n

Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.\nYou may not keep and use the reference to this singleton over multiple lines because methods that you call\nmay themselves make use of Ext.fly and may change the DOM element to which the instance refers.

\n\n

Ext.fly is alias for fly.

\n\n

Use this to make one-time references to DOM elements which are not going to be accessed again either by\napplication code, or by Ext's classes. If accessing an element which will be processed regularly, then Ext.get will be more appropriate to take advantage of the caching provided by the Ext.dom.Element\nclass.

\n"},"fromPoint":{"!type":"fn(x: number, y: number) -> string","!doc":"

Returns the top Element that is located at the passed coordinates

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"get":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> +Ext.dom.Element","!doc":"

Retrieves Ext.dom.Element objects. Ext.get is alias for Ext.dom.Element.get.

\n\n

This method does not retrieve Components. This method retrieves Ext.dom.Element\nobjects which encapsulate DOM elements. To retrieve a Component by its ID, use Ext.ComponentManager.get.

\n\n

When passing an id, it should not include the # character that is used for a css selector.

\n\n
// For an element with id 'foo'\nExt.get('foo'); // Correct\nExt.get('#foo'); // Incorrect\n
\n\n

Uses simple caching to consistently return the same object. Automatically fixes if an object was recreated with\nthe same id via AJAX or DOM.

\n"},"getDocumentHeight":{"!type":"fn() -> number","!doc":"

Retrieves the document height

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getDocumentWidth":{"!type":"fn() -> number","!doc":"

Retrieves the document width

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getOrientation":{"!type":"fn() -> string","!doc":"

Retrieves the current orientation of the window. This is calculated by\ndeterming if the height is greater than the width.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getViewSize":{"!type":"fn() -> ?","!doc":"

Retrieves the viewport size of the window.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getViewportHeight":{"!type":"fn() -> number","!doc":"

Retrieves the viewport height of the window.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"getViewportWidth":{"!type":"fn() -> number","!doc":"

Retrieves the viewport width of the window.

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"isAncestor":{"!type":"fn(p: ?, c: ?) -> !this","!doc":"

Defined in override Ext.dom.AbstractElement_static.

\n"},"mergeClsList":{"!type":"fn(clsList1: +Mixed, clsList2: +Mixed) -> [?]","!doc":"

Returns an array of unique class names based upon the input strings, or string arrays.

\n\n\n

The number of parameters is unlimited.

\n\n\n

Example

\n\n\n
// Add x-invalid and x-mandatory classes, do not duplicate\nmyElement.dom.className = Ext.core.Element.mergeClsList(this.initialClasses, 'x-invalid x-mandatory');\n
\n\n"},"normalize":{"!type":"fn(prop: string) -> string","!doc":"

Normalizes CSS property keys from dash delimited to camel case JavaScript Syntax.\nFor example:

\n\n\n\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"parseBox":{"!type":"fn(box: number|string) -> ?","!doc":"

Parses a number or string representing margin sizes into an object. Supports CSS-style margin declarations\n(e.g. 10, \"10\", \"10 10\", \"10 10 10\" and \"10 10 10 10\" are all valid options and would return the same result)

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"parseStyles":{"!type":"fn(styles: string) -> ?","!doc":"

Converts a CSS string into an object with a property for each style.

\n\n

The sample code below would return an object with 2 properties, one\nfor background-color and one for color.

\n\n
var css = 'background-color: red;color: blue; ';\nconsole.log(Ext.dom.Element.parseStyles(css));\n
\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"},"removeCls":{"!type":"fn(existingClsList: +Mixed, removeClsList: +Mixed) -> [?]","!doc":"

Returns an array of unique class names deom the first parameter with all class names\nfrom the second parameter removed.

\n\n\n

Example

\n\n\n
// Remove x-invalid and x-mandatory classes if present.\nmyElement.dom.className = Ext.core.Element.removeCls(this.initialClasses, 'x-invalid x-mandatory');\n
\n\n"},"unitizeBox":{"!type":"fn(box: number|string|?, units: string) -> string","!doc":"

Parses a number or string representing margin sizes into an object. Supports CSS-style margin declarations\n(e.g. 10, \"10\", \"10 10\", \"10 10 10\" and \"10 10 10 10\" are all valid options and would return the same result)

\n\n

Defined in override Ext.dom.AbstractElement_static.

\n"}},"AbstractHelper":{"!doc":"

Abstract base class for Ext.dom.Helper.

\n","prototype":{"attributeTransform":{"!type":"?","!doc":"

Since cls & for are reserved words, we need to transform them

\n"},"closeTags":{"!type":"?"},"confRe":{"!type":"+RegExp"},"decamelizeName":{"!type":"?"},"emptyTags":{"!type":"+RegExp"},"endRe":{"!type":"+RegExp"},"styleSepRe":{"!type":"+RegExp"},"append":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, o: ?|string, returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Creates new DOM element(s) and appends them to el.

\n"},"applyStyles":{"!type":"fn(el: string|+HTMLElement, styles: string|?|fn()) -> !this","!doc":"

Applies a style specification to an element.

\n"},"doInsert":{"!type":"fn(el: ?, o: ?, returnElement: ?, pos: ?, sibling: ?, append: ?) -> !this"},"generateMarkup":{"!type":"fn(spec: ?, buffer: ?) -> !this"},"generateStyles":{"!type":"fn(styles: ?, buffer?: [string]) -> string|[string]","!doc":"

Converts the styles from the given object to text. The styles are CSS style names\nwith their associated value.

\n\n

The basic form of this method returns a string:

\n\n
 var s = Ext.DomHelper.generateStyles({\n     backgroundColor: 'red'\n });\n\n // s = 'background-color:red;'\n
\n\n

Alternatively, this method can append to an output array.

\n\n
 var buf = [];\n\n ...\n\n Ext.DomHelper.generateStyles({\n     backgroundColor: 'red'\n }, buf);\n
\n\n

In this case, the style text is pushed on to the array and the array is returned.

\n"},"insertAfter":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, o: ?, returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Creates new DOM element(s) and inserts them after el.

\n"},"insertBefore":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, o: ?|string, returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Creates new DOM element(s) and inserts them before el.

\n"},"insertFirst":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, o: ?|string, returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Creates new DOM element(s) and inserts them as the first child of el.

\n"},"insertHtml":{"!type":"fn(where: string, el: +HTMLElement|+TextNode, html: string) -> +HTMLElement","!doc":"

Inserts an HTML fragment into the DOM.

\n"},"markup":{"!type":"fn(spec: ?) -> string","!doc":"

Returns the markup for the passed Element(s) config.

\n"},"overwrite":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, o: ?|string, returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Creates new DOM element(s) and overwrites the contents of el with them.

\n"}}},"AbstractQuery":{"prototype":{"is":{"!type":"fn(el: string|+HTMLElement|[?], selector: string) -> bool","!doc":"

Returns true if the passed element(s) match the passed simple selector (e.g. div.some-class or span:first-child)

\n"},"select":{"!type":"fn(selector: string, root?: +HTMLElement|string) -> [+HTMLElement]","!doc":"

Selects a group of elements.

\n"},"selectNode":{"!type":"fn(selector: string, root?: +HTMLElement|string) -> +HTMLElement","!doc":"

Selects a single element.

\n"}}},"CompositeElement":{"!doc":"

This class encapsulates a collection of DOM elements, providing methods to filter\nmembers, or to perform collective actions upon the whole set.

\n\n\n

Although they are not listed, this class supports all of the methods of Ext.dom.Element and\nExt.fx.Anim. The methods from these classes will be performed on all the elements in this collection.

\n\n\n

All methods return this and can be chained.

\n\n\n

Usage:

\n\n
 var els = Ext.select(\"#some-el div.some-class\", true);\n // or select directly from an existing element\n var el = Ext.get('some-el');\n el.select('div.some-class', true);\n\n els.setWidth(100); // all elements become 100 width\n els.hide(true); // all elements fade out and hide\n // or\n els.setWidth(100).hide(true);\n 
\n\n","!type":"fn(elements: ?, root: ?)","prototype":{"!proto":"Ext.dom.CompositeElementLite.prototype","getElement":{"!type":"fn(el: ?) -> !this","!doc":"

private

\n"},"transformElement":{"!type":"fn(el: ?) -> !this","!doc":"

private

\n"}}},"CompositeElementLite":{"!doc":"

This class encapsulates a collection of DOM elements, providing methods to filter members, or to perform collective\nactions upon the whole set.

\n\n

Although they are not listed, this class supports all of the methods of Ext.dom.Element and\nExt.fx.Anim. The methods from these classes will be performed on all the elements in this collection.

\n\n

Example:

\n\n
var els = Ext.select(\"#some-el div.some-class\");\n// or select directly from an existing element\nvar el = Ext.get('some-el');\nel.select('div.some-class');\n\nels.setWidth(100); // all elements become 100 width\nels.hide(true); // all elements fade out and hide\n// or\nels.setWidth(100).hide(true);\n
\n","!type":"fn(elements: ?, root: ?)","prototype":{"!proto":"Ext.Base.prototype","elements":{"!type":"[+HTMLElement]","!doc":"

The Array of DOM elements which this CompositeElement encapsulates.

\n\n

This will not usually be accessed in developers' code, but developers wishing to augment the capabilities\nof the CompositeElementLite class may use it when adding methods to the class.

\n\n

For example to add the nextAll method to the class to add all following siblings of selected elements,\nthe code would be

\n\n
Ext.override(Ext.dom.CompositeElementLite, {\n    nextAll: function() {\n        var elements = this.elements, i, l = elements.length, n, r = [], ri = -1;\n\n        // Loop through all elements in this Composite, accumulating\n        // an Array of all siblings.\n        for (i = 0; i < l; i++) {\n            for (n = elements[i].nextSibling; n; n = n.nextSibling) {\n                r[++ri] = n;\n            }\n        }\n\n        // Add all found siblings to this Composite\n        return this.add(r);\n    }\n});\n
\n"},"isComposite":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated CompositeElement, or subclass thereof.

\n"},"add":{"!type":"fn(els: [+HTMLElement]|+Ext.dom.CompositeElement) -> +Ext.dom.CompositeElement","!doc":"

Adds elements to this Composite object.

\n"},"addElements":{"!type":"fn(els: ?, root: ?) -> +Ext.dom.CompositeElementLite"},"addListener":{"!type":"fn(eventName: ?, handler: ?, scope: ?, opt: ?) -> +Ext.dom.CompositeElementLite","!doc":"

fixes scope with flyweight

\n"},"clear":{"!type":"fn(removeDom?: bool) -> !this","!doc":"

Removes all elements from this Composite.

\n"},"contains":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number) -> bool","!doc":"

Returns true if this composite contains the passed element.

\n"},"each":{"!type":"fn(fn: fn(), scope?: ?) -> +Ext.dom.CompositeElement","!doc":"

Calls the passed function for each element in this composite.

\n"},"fill":{"!type":"fn(els: [+HTMLElement]|+Ext.dom.CompositeElement) -> +Ext.dom.CompositeElement","!doc":"

Clears this Composite and adds the elements passed.

\n"},"filter":{"!type":"fn(selector: string|fn()) -> +Ext.dom.CompositeElement","!doc":"

Filters this composite to only elements that match the passed selector.

\n"},"first":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Returns the first Element

\n"},"getCount":{"!type":"fn() -> number","!doc":"

Returns the number of elements in this Composite.

\n"},"getElement":{"!type":"fn(el: ?) -> !this","!doc":"

private

\n"},"indexOf":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number) -> number","!doc":"

Find the index of the passed element within the composite collection.

\n"},"insert":{"!type":"fn(index: ?, nodes: ?) -> !this"},"invoke":{"!type":"fn(fn: ?, args: ?) -> +Ext.dom.CompositeElementLite"},"item":{"!type":"fn(index: number) -> +Ext.dom.Element","!doc":"

Returns a flyweight Element of the dom element object at the specified index

\n"},"last":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Returns the last Element

\n"},"removeElement":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number, removeDom?: bool) -> +Ext.dom.CompositeElement","!doc":"

Removes the specified element(s).

\n"},"replaceElement":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number, replacement: string|+Ext.Element, domReplace?: bool) -> +Ext.dom.CompositeElement","!doc":"

Replaces the specified element with the passed element.

\n"},"slice":{"!type":"fn(start?: number, end?: number) -> [+HTMLElement]","!doc":"

Gets a range nodes.

\n"},"transformElement":{"!type":"fn(el: ?) -> !this","!doc":"

private

\n"}},"importElementMethods":{"!type":"fn() -> !this","!doc":"

Copies all of the functions from Ext.dom.Element's prototype onto CompositeElementLite's prototype.\nThis is called twice - once immediately below, and once again after additional Ext.dom.Element\nare added in Ext JS

\n"}},"Element":{"Fly":{"!doc":"

A non-persistent wrapper for a DOM element which may be used to execute methods of Ext.dom.Element\nupon a DOM element without creating an instance of Ext.dom.Element.

\n\n

A singleton instance of this class is returned when you use Ext.fly

\n\n

Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.\nYou should not keep and use the reference to this singleton over multiple lines because methods that you call\nmay themselves make use of Ext.fly and may change the DOM element to which the instance refers.

\n","!type":"fn(element: string|+HTMLElement, forceNew?: bool)","prototype":{"!proto":"Ext.dom.Element.prototype","isFly":{"!type":"bool","!doc":"

This is true to identify Element flyweights

\n"},"attach":{"!type":"fn(dom: ?) -> +Ext.dom.Element.Fly","!doc":"

Attach this fliyweight instance to the passed DOM element.

\n\n

Note that a flightweight does not have an ID, and does not acquire the ID of the DOM element.

\n"}}},"!doc":"

Encapsulates a DOM element, adding simple DOM manipulation facilities, normalizing for browser differences.

\n\n

All instances of this class inherit the methods of Ext.fx.Anim making visual effects easily available to all\nDOM elements.

\n\n

Note that the events documented in this class are not Ext events, they encapsulate browser events. Some older browsers\nmay not support the full range of events. Which events are supported is beyond the control of Ext JS.

\n\n

Usage:

\n\n
// by id\nvar el = Ext.get(\"my-div\");\n\n// by DOM element reference\nvar el = Ext.get(myDivElement);\n
\n\n

Animations

\n\n

When an element is manipulated, by default there is no animation.

\n\n
var el = Ext.get(\"my-div\");\n\n// no animation\nel.setWidth(100);\n
\n\n

Many of the functions for manipulating an element have an optional \"animate\" parameter. This parameter can be\nspecified as boolean (true) for default animation effects.

\n\n
// default animation\nel.setWidth(100, true);\n
\n\n

To configure the effects, an object literal with animation options to use as the Element animation configuration\nobject can also be specified. Note that the supported Element animation configuration options are a subset of the\nExt.fx.Anim animation options specific to Fx effects. The supported Element animation configuration options\nare:

\n\n
Option    Default   Description\n--------- --------  ---------------------------------------------\nduration  350       The duration of the animation in milliseconds\neasing    easeOut   The easing method\ncallback  none      A function to execute when the anim completes\nscope     this      The scope (this) of the callback function\n
\n\n

Usage:

\n\n
// Element animation options object\nvar opt = {\n    duration: 1000,\n    easing: 'elasticIn',\n    callback: this.foo,\n    scope: this\n};\n// animation with some options set\nel.setWidth(100, opt);\n
\n\n

The Element animation object being used for the animation will be set on the options object as \"anim\", which allows\nyou to stop or manipulate the animation. Here is an example:

\n\n
// using the \"anim\" property to get the Anim object\nif(opt.anim.isAnimated()){\n    opt.anim.stop();\n}\n
\n\n

Composite (Collections of) Elements

\n\n

For working with collections of Elements, see Ext.CompositeElement

\n\n

From override Ext.rtl.dom.Element_position: This override adds RTL positioning methods to Ext.dom.Element.

\n","!type":"fn(element: string|+HTMLElement, forceNew?: bool)","prototype":{"!proto":"Ext.dom.AbstractElement.prototype","_positionTopRight":{"!type":"[?]","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"autoBoxAdjust":{"!type":"bool","!doc":"

True to automatically adjust width and height settings for box-model issues.

\n"},"getTrueXY":{"!type":"?","!doc":"

Returns the X,Y position of the passed element in browser document space without regard\nto any RTL direction settings.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"originalDisplay":{"!type":"string","!doc":"

The element's default display mode.

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"addClsOnClick":{"!type":"fn(className: string, testFn?: fn(), scope?: ?) -> +Ext.dom.Element","!doc":"

Sets up event handlers to add and remove a css class when the mouse is down and then up on this element (a click effect)

\n\n

Defined in override Ext.dom.Element_style.

\n"},"addClsOnFocus":{"!type":"fn(className: string, testFn?: fn(), scope?: ?) -> +Ext.dom.Element","!doc":"

Sets up event handlers to add and remove a css class when this element has the focus

\n\n

Defined in override Ext.dom.Element_style.

\n"},"addClsOnOver":{"!type":"fn(className: string, testFn?: fn(), scope?: ?) -> +Ext.dom.Element","!doc":"

Sets up event handlers to add and remove a css class when the mouse is over this element

\n\n

Defined in override Ext.dom.Element_style.

\n"},"addKeyListener":{"!type":"fn(key: string|number|[number]|?, fn: fn(), scope?: ?) -> +Ext.util.KeyMap","!doc":"

Convenience method for constructing a KeyMap

\n"},"addKeyMap":{"!type":"fn(config: ?) -> +Ext.util.KeyMap","!doc":"

Creates a KeyMap for this element

\n"},"addListener":{"!type":"fn(eventName: string, fn: fn(), scope?: ?, options?: ?) -> +Ext.dom.Element","!doc":"

Shorthand for on.

\n"},"adjustDirect2DDimension":{"!type":"fn(dimension: ?) -> number","!doc":"

Returns 1 if the browser returns the subpixel dimension rounded to the lowest pixel.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"anchorAnimX":{"!type":"fn(anchor: ?) -> !this","!doc":"

Defined in override Ext.dom.Element_anim.

\n"},"anim":{"!type":"fn(config: ?) -> !this","!doc":"\n\n\n

Defined in override Ext.dom.Element_anim.

\n"},"animate":{"!type":"fn(config: ?) -> +Ext.dom.Element","!doc":"

Performs custom animation on this Element.

\n\n

The following properties may be specified in from, to, and keyframe objects:

\n\n\n\n\n

Be aware that animating an Element which is being used by an Ext Component without in some way informing the\nComponent about the changed element state will result in incorrect Component behaviour. This is because the\nComponent will be using the old state of the element. To avoid this problem, it is now possible to directly\nanimate certain properties of Components.

\n\n

Defined in override Ext.dom.Element_anim.

\n"},"blur":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when an element loses focus either via the pointing device or by tabbing navigation.

\n"},"boxWrap":{"!type":"fn(class?: string) -> +Ext.dom.Element","!doc":"

Wraps the specified element with a special 9 element markup/CSS block that renders by default as\na gray container with a gradient background, rounded corners and a 4-way shadow.

\n\n

This special markup is used throughout Ext when box wrapping elements (Ext.button.Button,\nExt.panel.Panel when frame=true, Ext.window.Window).\nThe markup is of this form:

\n\n
Ext.dom.Element.boxMarkup =\n'<div class=\"{0}-tl\"><div class=\"{0}-tr\"><div class=\"{0}-tc\"></div></div></div>\n<div class=\"{0}-ml\"><div class=\"{0}-mr\"><div class=\"{0}-mc\"></div></div></div>\n<div class=\"{0}-bl\"><div class=\"{0}-br\"><div class=\"{0}-bc\"></div></div></div>';\n
\n\n

Example usage:

\n\n
// Basic box wrap\nExt.get(\"foo\").boxWrap();\n\n// You can also add a custom class and use CSS inheritance rules to customize the box look.\n// 'x-box-blue' is a built-in alternative -- look at the related CSS definitions as an example\n// for how to create a custom box wrap style.\nExt.get(\"foo\").boxWrap().addCls(\"x-box-blue\");\n
\n\n

Defined in override Ext.dom.Element_style.

\n"},"cacheScrollValues":{"!type":"fn() -> fn()","!doc":"

When an element is moved around in the DOM, or is hidden using display:none, it loses layout, and therefore\nall scroll positions of all descendant elements are lost.

\n\n

This function caches them, and returns a function, which when run will restore the cached positions.\nIn the following example, the Panel is moved from one Container to another which will cause it to lose all scroll positions:

\n\n
var restoreScroll = myPanel.el.cacheScrollValues();\nmyOtherContainer.add(myPanel);\nrestoreScroll();\n
\n"},"center":{"!type":"fn(centerIn: string|+HTMLElement|+Ext.dom.Element) -> !this","!doc":"

Centers the Element in either the viewport, or another Element.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"clean":{"!type":"fn(forceReclean?: bool) -> !this","!doc":"

Removes Empty, or whitespace filled text nodes. Combines adjacent text nodes.

\n"},"clearListeners":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Alias for removeAllListeners.

\n"},"clearOpacity":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Clears any opacity settings from this element. Required in some cases for IE.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"clearPositioning":{"!type":"fn(value?: string) -> +Ext.dom.Element","!doc":"

Clears positioning back to the default when the document was loaded.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"clip":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Store the current overflow setting and clip overflow on the element - use unclip to remove

\n\n

Defined in override Ext.dom.Element_style.

\n"},"constrainScrollLeft":{"!type":"fn(left: ?) -> !this","!doc":"

Defined in override Ext.dom.Element_scroll.

\n"},"constrainScrollTop":{"!type":"fn(top: ?) -> !this","!doc":"

Defined in override Ext.dom.Element_scroll.

\n"},"createProxy":{"!type":"fn(config: string|?, renderTo?: string|+HTMLElement, matchBox?: bool) -> +Ext.dom.Element","!doc":"

Creates a proxy element of this element

\n"},"createShim":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Creates an iframe shim for this element to keep selects and other windowed objects from\nshowing through.

\n"},"enableDisplayMode":{"!type":"fn(display?: string) -> +Ext.dom.Element","!doc":"

Convenience method for setVisibilityMode(Element.DISPLAY)

\n"},"fadeIn":{"!type":"fn(options?: ?) -> +Ext.Element","!doc":"

Fade an element in (from transparent to opaque). The ending opacity can be specified using the opacity\nconfig option. Usage:

\n\n
// default: fade in from opacity 0 to 100%\nel.fadeIn();\n\n// custom: fade in from opacity 0 to 75% over 2 seconds\nel.fadeIn({ opacity: .75, duration: 2000});\n\n// common config options shown with default values\nel.fadeIn({\n    opacity: 1, //can be any value between 0 and 1 (e.g. .5)\n    easing: 'easeOut',\n    duration: 500\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"fadeOut":{"!type":"fn(options?: ?) -> +Ext.Element","!doc":"

Fade an element out (from opaque to transparent). The ending opacity can be specified using the opacity\nconfig option. Note that IE may require useDisplay:true in order to redisplay correctly.\nUsage:

\n\n
// default: fade out from the element's current opacity to 0\nel.fadeOut();\n\n// custom: fade out from the element's current opacity to 25% over 2 seconds\nel.fadeOut({ opacity: .25, duration: 2000});\n\n// common config options shown with default values\nel.fadeOut({\n    opacity: 0, //can be any value between 0 and 1 (e.g. .5)\n    easing: 'easeOut',\n    duration: 500,\n    remove: false,\n    useDisplay: false\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"focus":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when an element receives focus either via the pointing device or by tab navigation.

\n"},"focusable":{"!type":"fn() -> bool","!doc":"

Alias for isFocusable.

\n"},"frame":{"!type":"fn(color?: string, count?: number, options?: ?) -> +Ext.dom.Element","!doc":"

Shows a ripple of exploding, attenuating borders to draw attention to an Element. Usage:

\n\n
// default: a single light blue ripple\nel.frame();\n\n// custom: 3 red ripples lasting 3 seconds total\nel.frame(\"#ff0000\", 3, { duration: 3000 });\n\n// common config options shown with default values\nel.frame(\"#C3DAF9\", 1, {\n    duration: 1000 // duration of each individual ripple.\n    // Note: Easing is not configurable and will be ignored if included\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"getAttributeNS":{"!type":"fn(namespace: string, name: string) -> string","!doc":"

Returns the value of a namespaced attribute from the element's underlying DOM node.

\n"},"getBottom":{"!type":"fn(local: bool) -> number","!doc":"

Gets the bottom Y coordinate of the element (element Y position + element height)

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getCenterXY":{"!type":"fn() -> [number]","!doc":"

Calculates the x, y to center this element on the screen

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getColor":{"!type":"fn(attr: string, defaultValue: string, prefix?: string) -> !this","!doc":"

Return the CSS color for the specified CSS attribute. rgb, 3 digit (like #fff) and valid values\nare convert to standard 6 digit hex color.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"getComputedHeight":{"!type":"fn() -> number","!doc":"

Returns either the offsetHeight or the height of this element based on CSS height adjusted by padding or borders\nwhen needed to simulate offsetHeight when offsets aren't available. This may not work on display:none elements\nif a height has not been set using CSS.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"getComputedWidth":{"!type":"fn() -> number","!doc":"

Returns either the offsetWidth or the width of this element based on CSS width adjusted by padding or borders\nwhen needed to simulate offsetWidth when offsets aren't available. This may not work on display:none elements\nif a width has not been set using CSS.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"getFrameWidth":{"!type":"fn(sides: string) -> number","!doc":"

Returns the sum width of the padding and borders for the passed \"sides\". See getBorderWidth()\nfor more information about the sides.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"getLeft":{"!type":"fn(local: bool) -> number","!doc":"

Gets the left X coordinate

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getLoader":{"!type":"fn() -> +Ext.ElementLoader","!doc":"

Gets this element's ElementLoader

\n"},"getLocalX":{"!type":"fn() -> number","!doc":"

Gets the local CSS X position for the element

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getLocalXY":{"!type":"fn() -> [?]","!doc":"

Gets the local CSS X and Y position for the element

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getLocalY":{"!type":"fn() -> number","!doc":"

Gets the local CSS Y position for the element

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getPageBox":{"!type":"fn(asRegion?: bool) -> ?|+Ext.util.Region","!doc":"

Returns an object defining the area of this Element which can be passed to\nExt.util.Positionable.setBox to set another Element's size/location to match this element.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getPositioning":{"!type":"fn(autoPx?: bool) -> ?","!doc":"

Gets an object with all CSS positioning properties. Useful along with

\n\n

setPostioning to get snapshot before performing an update and then restoring

\n\n

the element.

\n\n

Defined in override Ext.dom.Element_position.

\n\n

Overridden in Ext.rtl.dom.Element_position.

\n"},"getRight":{"!type":"fn(local: bool) -> number","!doc":"

Gets the right X coordinate of the element (element X position + element width)

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getScroll":{"!type":"fn() -> ?","!doc":"

Returns the current scroll position of the element.

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"getScrollLeft":{"!type":"fn() -> number","!doc":"

Gets the left scroll position

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"getScrollTop":{"!type":"fn() -> number","!doc":"

Gets the top scroll position

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"getStyleSize":{"!type":"fn() -> ?","!doc":"

Returns the dimensions of the element available to lay content out in.

\n\n

getStyleSize utilizes prefers style sizing if present, otherwise it chooses the larger of offsetHeight/clientHeight and\noffsetWidth/clientWidth. To obtain the size excluding scrollbars, use getViewSize.

\n\n

Sizing of the document body is handled at the adapter level which handles special cases for IE and strict modes, etc.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"getTextWidth":{"!type":"fn(text: string, min?: number, max?: number) -> number","!doc":"

Returns the width in pixels of the passed text, or the width of the text in this Element.

\n"},"getTop":{"!type":"fn(local: bool) -> number","!doc":"

Gets the top Y coordinate

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getX":{"!type":"fn() -> number","!doc":"

Gets element X position in page coordinates

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getXY":{"!type":"fn() -> [?]","!doc":"

Gets element X and Y positions in page coordinates

\n\n

Defined in override Ext.dom.Element_position.

\n"},"getY":{"!type":"fn() -> number","!doc":"

Gets element Y position in page coordinates

\n\n

Defined in override Ext.dom.Element_position.

\n"},"ghost":{"!type":"fn(anchor?: string, options?: ?) -> +Ext.dom.Element","!doc":"

Slides the element while fading it out of view. An anchor point can be optionally passed to set the ending point\nof the effect. Usage:

\n\n
// default: slide the element downward while fading out\nel.ghost();\n\n// custom: slide the element out to the right with a 2-second duration\nel.ghost('r', { duration: 2000 });\n\n// common config options shown with default values\nel.ghost('b', {\n    easing: 'easeOut',\n    duration: 500\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"hasMetrics":{"!type":"fn() -> !this","!doc":"

Determine if the Element has a relevant height and width available based\nupon current logical visibility state

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"hide":{"!type":"fn(animate?: bool|?) -> +Ext.dom.Element","!doc":"

Hide this element - Uses display mode to determine whether to use \"display\" or \"visibility\". See setVisible.

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"highlight":{"!type":"fn(color?: string, options?: ?) -> +Ext.dom.Element","!doc":"

Highlights the Element by setting a color (applies to the background-color by default, but can be changed using\nthe \"attr\" config option) and then fading back to the original color. If no original color is available, you\nshould provide the \"endColor\" config option which will be cleared after the animation. Usage:

\n\n
// default: highlight background to yellow\nel.highlight();\n\n// custom: highlight foreground text to blue for 2 seconds\nel.highlight(\"0000ff\", { attr: 'color', duration: 2000 });\n\n// common config options shown with default values\nel.highlight(\"ffff9c\", {\n    attr: \"backgroundColor\", //can be any valid CSS property (attribute) that supports a color value\n    endColor: (current color) or \"ffffff\",\n    easing: 'easeIn',\n    duration: 1000\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"hover":{"!type":"fn(overFn: fn(), outFn: fn(), scope?: ?, options?: ?) -> +Ext.dom.Element","!doc":"

Sets up event handlers to call the passed functions when the mouse is moved into and out of the Element.

\n"},"initDD":{"!type":"fn(group: string, config: ?, overrides: ?) -> +Ext.dd.DD","!doc":"

Initializes a Ext.dd.DD drag drop object for this element.

\n\n

Defined in override Ext.dom.Element_dd.

\n"},"initDDProxy":{"!type":"fn(group: string, config: ?, overrides: ?) -> +Ext.dd.DDProxy","!doc":"

Initializes a Ext.dd.DDProxy object for this element.

\n\n

Defined in override Ext.dom.Element_dd.

\n"},"initDDTarget":{"!type":"fn(group: string, config: ?, overrides: ?) -> +Ext.dd.DDTarget","!doc":"

Initializes a Ext.dd.DDTarget object for this element.

\n\n

Defined in override Ext.dom.Element_dd.

\n"},"isBorderBox":{"!type":"fn() -> bool","!doc":"

Tests various css rules/browsers to determine if this element uses a border box

\n"},"isDisplayed":{"!type":"fn() -> bool","!doc":"

Returns true if display is not \"none\"

\n"},"isFocusable":{"!type":"fn(asFocusEl: ?) -> bool","!doc":"

Checks whether this element can be focused.

\n"},"isMasked":{"!type":"fn() -> bool","!doc":"

Returns true if this element is masked. Also re-centers any displayed message within the mask.

\n"},"isScrollable":{"!type":"fn() -> bool","!doc":"

Returns true if this element is scrollable.

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"isVisible":{"!type":"fn(deep?: bool) -> bool","!doc":"

Checks whether the element is currently visible using both visibility and display properties.

\n"},"load":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when the user agent finishes loading all content within the element. Only supported by window, frames,\nobjects and images.

\n"},"mask":{"!type":"fn(msg?: string, msgCls?: string) -> +Ext.dom.Element","!doc":"

Puts a mask over this element to disable user interaction. Requires core.css.\nThis method can only be applied to elements which accept child nodes.

\n"},"monitorMouseLeave":{"!type":"fn(delay: number, handler: fn(), scope?: ?) -> ?","!doc":"

Monitors this Element for the mouse leaving. Calls the function after the specified delay only if\nthe mouse was not moved back into the Element within the delay. If the mouse was moved\nback in, the function is not called.

\n"},"moveTo":{"!type":"fn(x: number, y: number, animate?: bool|?) -> +Ext.dom.Element","!doc":"

Sets the position of the element in page coordinates.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"needsTabIndex":{"!type":"fn() -> !this","!doc":"

Returns true if this element needs an explicit tabIndex to make it focusable. Input fields, text areas, buttons\nanchors elements with an href etc do not need a tabIndex, but structural elements do.

\n"},"on":{"!type":"fn(eventName: string, fn: fn(), scope?: ?, options?: ?) -> +Ext.dom.Element","!doc":"

Appends an event handler to this element.

\n"},"pause":{"!type":"fn(seconds: number) -> +Ext.Element","!doc":"

Creates a pause before any subsequent queued effects begin. If there are no effects queued after the pause it will\nhave no effect. Usage:

\n\n
el.pause(1);\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"position":{"!type":"fn(pos?: string, zIndex?: number, x?: number, y?: number) -> !this","!doc":"

Initializes positioning on this element. If a desired position is not passed,\nit will make the the element positioned relative IF it is not already positioned.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"puff":{"!type":"fn(options?: ?) -> +Ext.dom.Element","!doc":"

Fades the element out while slowly expanding it in all directions. When the effect is completed, the element will\nbe hidden (visibility = 'hidden') but block elements will still take up space in the document. Usage:

\n\n
// default\nel.puff();\n\n// common config options shown with default values\nel.puff({\n    easing: 'easeOut',\n    duration: 500,\n    useDisplay: false\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"purgeAllListeners":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Recursively removes all previous added listeners from this element and its children

\n"},"relayEvent":{"!type":"fn(eventName: string, observable: ?) -> !this","!doc":"

Create an event handler on this element such that when the event fires and is handled by this element,\nit will be relayed to another object (i.e., fired again as if it originated from that object instead).

\n"},"removeAllListeners":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Removes all previous added listeners from this element

\n"},"removeListener":{"!type":"fn(eventName: string, fn: fn(), scope: ?) -> +Ext.dom.Element","!doc":"

Shorthand for un.

\n"},"rtlGetLocalX":{"!type":"fn() -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlGetLocalXY":{"!type":"fn() -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlSetLocalX":{"!type":"fn(x: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlSetLocalXY":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlSetX":{"!type":"fn(x: ?, animate: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlSetXY":{"!type":"fn(xy: ?, animate: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlSetY":{"!type":"fn(y: ?, animate: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlTranslatePoints":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"rtlTranslateXY":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"scale":{"!type":"fn(width: number, height: number, options?: ?) -> +Ext.Element","!doc":"

Animates the transition of an element's dimensions from a starting height/width to an ending height/width. This\nmethod is a convenience implementation of shift. Usage:

\n\n
// change height and width to 100x100 pixels\nel.scale(100, 100);\n\n// common config options shown with default values.  The height and width will default to\n// the element's existing values if passed as null.\nel.scale(\n    [element's width],\n    [element's height], {\n        easing: 'easeOut',\n        duration: 350\n    }\n);\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"scroll":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a document view is scrolled.

\n"},"scrollBy":{"!type":"fn(deltaX: number|[number]|?, deltaY: number|bool|?, animate: bool|?) -> +Ext.Element","!doc":"

Scrolls this element by the passed delta values, optionally animating.

\n\n

All of the following are equivalent:

\n\n
 el.scrollBy(10, 10, true);\n el.scrollBy([10, 10], true);\n el.scrollBy({ x: 10, y: 10 }, true);\n
\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"scrollChildIntoView":{"!type":"fn(child: ?, hscroll: ?) -> !this","!doc":"

Defined in override Ext.dom.Element_scroll.

\n"},"scrollIntoView":{"!type":"fn(container?: string|+HTMLElement|+Ext.Element, hscroll?: bool, animate?: bool|?, highlight?: bool) -> +Ext.dom.Element","!doc":"

Scrolls this element into view within the passed container.

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"scrollTo":{"!type":"fn(side: string, value: number, animate?: bool|?) -> +Ext.Element","!doc":"

Scrolls this element the specified scroll point. It does NOT do bounds checking so\nif you scroll to a weird value it will try to do it. For auto bounds checking, use scroll.

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"selectable":{"!type":"fn() -> +Ext.Element","!doc":"

Enable text selection for this element (normalized across browsers)

\n\n

Defined in override Ext.dom.Element_style.

\n"},"setBottom":{"!type":"fn(bottom: number|string) -> +Ext.dom.Element","!doc":"

Sets the element's CSS bottom style.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setBounds":{"!type":"fn(x: number, y: number, width: number|string, height: number|string, animate?: bool|?) -> +Ext.dom.Element","!doc":"

Sets the element's position and size in one shot. If animation is true then\nwidth, height, x and y will be animated concurrently.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setDisplayed":{"!type":"fn(value: bool|string) -> +Ext.dom.Element","!doc":"

Sets the CSS display property. Uses originalDisplay if the specified value is a boolean true.

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"setHorizontal":{"!type":"fn() -> !this","!doc":"

Removes \"vertical\" state from this element (reverses everything done\nby setVertical).

\n\n

Defined in override Ext.dom.Element_style.

\n"},"setLeft":{"!type":"fn(left: number|string) -> +Ext.dom.Element","!doc":"

Sets the element's left position directly using CSS style\n(instead of setX).

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setLeftTop":{"!type":"fn(left: number|string, top: number|string) -> +Ext.dom.Element","!doc":"

Sets the element's left and top positions directly using CSS style

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setLocation":{"!type":"fn(x: number, y: number, animate?: bool|?) -> +Ext.dom.Element","!doc":"

Sets the position of the element in page coordinates.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setOpacity":{"!type":"fn(opacity: number, animate?: bool|?) -> +Ext.dom.Element","!doc":"

Set the opacity of the element

\n\n

Defined in override Ext.dom.Element_style.

\n"},"setPositioning":{"!type":"fn(posCfg: ?) -> +Ext.dom.Element","!doc":"

Set positioning with an object returned by getPositioning.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setRight":{"!type":"fn(right: number|string) -> +Ext.dom.Element","!doc":"

Sets the element's CSS right style.

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setScrollLeft":{"!type":"fn(left: number) -> +Ext.dom.Element","!doc":"

Sets the left scroll position

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"setScrollTop":{"!type":"fn(top: number) -> +Ext.dom.Element","!doc":"

Sets the top scroll position

\n\n

Defined in override Ext.dom.Element_scroll.

\n"},"setTop":{"!type":"fn(top: number|string) -> +Ext.dom.Element","!doc":"

Sets the element's top position directly using CSS style\n(instead of setY).

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setVertical":{"!type":"fn(angle: number, cls: string) -> !this","!doc":"

Changes this Element's state to \"vertical\" (rotated 90 or 270 degrees).\nThis involves inverting the getters and setters for height and width,\nand applying hooks for rotating getters and setters for border/margin/padding.\n(getWidth becomes getHeight and vice versa), setStyle and getStyle will\nalso return the inverse when height or width are being operated on.

\n\n

Defined in override Ext.dom.Element_style.

\n"},"setVisible":{"!type":"fn(visible: bool, animate?: bool|?) -> +Ext.dom.Element","!doc":"

Sets the visibility of the element (see details). If the visibilityMode is set to Element.DISPLAY, it will use\nthe display property to hide the element, otherwise it uses visibility. The default is to hide and show using the visibility property.

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"setX":{"!type":"fn(x: ?, animate: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"setXY":{"!type":"fn(xy: ?, animate: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"setY":{"!type":"fn(y: ?, animate: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"shift":{"!type":"fn(options: ?) -> +Ext.Element","!doc":"

Animates the transition of any combination of an element's dimensions, xy position and/or opacity. Any of these\nproperties not specified in the config object will not be changed. This effect requires that at least one new\ndimension, position or opacity setting must be passed in on the config object in order for the function to have\nany effect. Usage:

\n\n
// slide the element horizontally to x position 200 while changing the height and opacity\nel.shift({ x: 200, height: 50, opacity: .8 });\n\n// common config options shown with default values.\nel.shift({\n    width: [element's width],\n    height: [element's height],\n    x: [element's x position],\n    y: [element's y position],\n    opacity: [element's opacity],\n    easing: 'easeOut',\n    duration: 350\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"show":{"!type":"fn(animate?: bool|?) -> +Ext.dom.Element","!doc":"

Show this element - Uses display mode to determine whether to use \"display\" or \"visibility\". See setVisible.

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"slideIn":{"!type":"fn(anchor?: string, options?: ?) -> +Ext.dom.Element","!doc":"

Slides the element into view. An anchor point can be optionally passed to set the point of origin for the slide\neffect. This function automatically handles wrapping the element with a fixed-size container if needed. See the\nExt.fx.Anim class overview for valid anchor point options. Usage:

\n\n
// default: slide the element in from the top\nel.slideIn();\n\n// custom: slide the element in from the right with a 2-second duration\nel.slideIn('r', { duration: 2000 });\n\n// common config options shown with default values\nel.slideIn('t', {\n    easing: 'easeOut',\n    duration: 500\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"slideOut":{"!type":"fn(anchor?: string, options?: ?) -> +Ext.dom.Element","!doc":"

Slides the element out of view. An anchor point can be optionally passed to set the end point for the slide\neffect. When the effect is completed, the element will be hidden (visibility = 'hidden') but block elements will\nstill take up space in the document. The element must be removed from the DOM using the 'remove' config option if\ndesired. This function automatically handles wrapping the element with a fixed-size container if needed. See the\nExt.fx.Anim class overview for valid anchor point options. Usage:

\n\n
// default: slide the element out to the top\nel.slideOut();\n\n// custom: slide the element out to the right with a 2-second duration\nel.slideOut('r', { duration: 2000 });\n\n// common config options shown with default values\nel.slideOut('t', {\n    easing: 'easeOut',\n    duration: 500,\n    remove: false,\n    useDisplay: false\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"swallowEvent":{"!type":"fn(eventName: string|[string], preventDefault?: bool) -> +Ext.dom.Element","!doc":"

Stops the specified event(s) from bubbling and optionally prevents the default action

\n"},"switchOff":{"!type":"fn(options?: ?) -> +Ext.dom.Element","!doc":"

Blinks the element as if it was clicked and then collapses on its center (similar to switching off a television).\nWhen the effect is completed, the element will be hidden (visibility = 'hidden') but block elements will still\ntake up space in the document. The element must be removed from the DOM using the 'remove' config option if\ndesired. Usage:

\n\n
// default\nel.switchOff();\n\n// all config options shown with default values\nel.switchOff({\n    easing: 'easeIn',\n    duration: .3,\n    remove: false,\n    useDisplay: false\n});\n
\n\n

Defined in override Ext.dom.Element_anim.

\n"},"syncContent":{"!type":"fn(source: ?) -> !this","!doc":"

.\nCurrently used for updating grid cells without modifying DOM structure

\n\n

Synchronizes content of this Element with the content of the passed element.

\n\n

Style and CSS class are copied from source into this Element, and contents are synched\nrecursively. If a child node is a text node, the textual data is copied.

\n"},"toggle":{"!type":"fn(animate?: bool|?) -> +Ext.dom.Element","!doc":"

Toggles the element's visibility or display, depending on visibility mode.

\n\n

Defined in override Ext.dom.Element_fx.

\n"},"translatePoints":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"translateXY":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"un":{"!type":"fn(eventName: string, fn: fn(), scope: ?) -> +Ext.dom.Element","!doc":"

Removes an event handler from this element.

\n\n

Note: if a scope was explicitly specified when adding the listener,\nthe same scope must be specified here.

\n\n

Example:

\n\n
el.un('click', this.handlerFn);\n// or\nel.removeListener('click', this.handlerFn);\n
\n"},"unclip":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Return clipping (overflow) to original clipping before clip was called

\n\n

Defined in override Ext.dom.Element_style.

\n"},"unmask":{"!type":"fn() -> !this","!doc":"

Hides a previously applied mask.

\n"},"unselectable":{"!type":"fn() -> +Ext.dom.Element","!doc":"

Disables text selection for this element (normalized across browsers)

\n\n

Defined in override Ext.dom.Element_style.

\n"},"update":{"!type":"fn(html: string, loadScripts?: bool, callback?: fn()) -> +Ext.dom.Element","!doc":"

Updates the innerHTML of this element, optionally searching for and processing scripts.

\n"},"DOMActivate":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when an element is activated, for instance, through a mouse click or a keypress.

\n"},"DOMAttrModified":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when an attribute has been modified.

\n"},"DOMCharacterDataModified":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when the character data has been modified.

\n"},"DOMFocusIn":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Similar to HTML focus event, but can be applied to any focusable element.

\n"},"DOMFocusOut":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Similar to HTML blur event, but can be applied to any focusable element.

\n"},"DOMNodeInserted":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when a node has been added as a child of another node.

\n"},"DOMNodeInsertedIntoDocument":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when a node is being inserted into a document.

\n"},"DOMNodeRemoved":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when a descendant node of the element is removed.

\n"},"DOMNodeRemovedFromDocument":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when a node is being removed from a document.

\n"},"DOMSubtreeModified":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Where supported. Fires when the subtree is modified.

\n"},"abort":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when an object/image is stopped from loading before completely loaded.

\n"},"change":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a control loses the input focus and its value has been modified since gaining focus.

\n"},"click":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouse click is detected within the element.

\n"},"contextmenu":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a right click is detected within the element.

\n"},"dblclick":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouse double click is detected within the element.

\n"},"error":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when an object/image/frame cannot be loaded properly.

\n"},"keydown":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a keydown is detected within the element.

\n"},"keypress":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a keypress is detected within the element.

\n"},"keyup":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a keyup is detected within the element.

\n"},"mousedown":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mousedown is detected within the element.

\n"},"mouseenter":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when the mouse enters the element.

\n"},"mouseleave":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when the mouse leaves the element.

\n"},"mousemove":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mousemove is detected with the element.

\n"},"mouseout":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseout is detected with the element.

\n"},"mouseover":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseover is detected within the element.

\n"},"mouseup":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseup is detected within the element.

\n"},"reset":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a form is reset.

\n"},"resize":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a document view is resized.

\n"},"select":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a user selects some text in a text field, including input and textarea.

\n"},"submit":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a form is submitted.

\n"},"unload":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when the user agent removes all content from a window or frame. For elements, it fires when the target\nelement or any of its content has been removed.

\n"}},"getXY":{"!type":"fn(el: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"select":{"!type":"fn(selector: string|[+HTMLElement], unique?: bool, root?: +HTMLElement|string) -> +Ext.CompositeElementLite|+Ext.CompositeElement","!doc":"

Selects elements based on the passed CSS selector to enable Element methods\nto be applied to many related elements in one statement through the returned CompositeElement or\nCompositeElementLite object.

\n"},"setXY":{"!type":"fn(el: ?, xy: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"}},"Helper":{"!doc":"

The actual class of which Ext.DomHelper is instance of.

\n\n

Use singleton Ext.DomHelper instead.

\n","prototype":{"useDom":{"!type":"bool","!doc":"

True to force the use of DOM instead of html fragments.

\n"},"createContextualFragment":{"!type":"fn(html: ?) -> !this","!doc":"

Fix for IE9 createContextualFragment missing method

\n"},"createDom":{"!type":"fn(o: ?|string) -> +HTMLElement","!doc":"

Creates new DOM element(s) without inserting them to the document.

\n"},"createHtml":{"!type":"fn(spec: ?) -> string","!doc":"

Alias for markup.

\n"},"createTemplate":{"!type":"fn(o: ?) -> +Ext.Template","!doc":"

Creates a new Ext.Template from the DOM object spec.

\n"},"insertIntoTable":{"!type":"fn(tag: ?, where: ?, destinationEl: ?, html: ?) -> !this","!doc":"

Nasty code for IE's broken table implementation

\n"},"overwrite":{"!type":"fn(el: string|+HTMLElement|+Ext.Element, o: ?|string, returnElement?: bool) -> +HTMLElement|+Ext.Element","!doc":"

Creates new DOM element(s) and overwrites the contents of el with them.

\n"}}},"Layer":{"!doc":"

An extended Ext.Element object that supports a shadow and shim, constrain to viewport and\nautomatic maintaining of shadow/shim positions.

\n","!type":"fn(config?: Ext_dom_Layer_cfg, existingEl?: string|+HTMLElement)","prototype":{"!proto":"Ext.Element.prototype","cls":{"!type":"string","!doc":"

CSS class to add to the element

\n"},"constrain":{"!type":"bool","!doc":"

False to disable constrain to viewport.

\n"},"dh":{"!type":"?","!doc":"

DomHelper object config to create element with.

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Layer will be hidden.\nValues may be:

\n\n\n\n"},"shadow":{"!type":"string|bool","!doc":"

True to automatically create an Ext.Shadow, or a string indicating the\nshadow's display Ext.Shadow.mode. False to disable the shadow.

\n"},"shadowOffset":{"!type":"number","!doc":"

Number of pixels to offset the shadow

\n"},"shim":{"!type":"bool","!doc":"

False to disable the iframe shim in browsers which need one.

\n"},"useDisplay":{"!type":"bool","!doc":"

Defaults to use css offsets to hide the Layer. Specify true\nto use css style 'display:none;' to hide the Layer.

\n"},"visibilityCls":{"!type":"string","!doc":"

The CSS class name to add in order to hide this Layer if this layer\nis configured with hideMode: 'asclass'

\n"},"zindex":{"!type":"number","!doc":"

Starting z-index.

\n"},"isLayer":{"!type":"bool"},"localXYNames":{"!type":"?"},"afterFx":{"!type":"fn() -> !this"},"beforeAction":{"!type":"fn() -> !this"},"beforeFx":{"!type":"fn() -> !this"},"beginUpdate":{"!type":"fn() -> !this"},"constrainXY":{"!type":"fn() -> +Ext.dom.Layer"},"createCB":{"!type":"fn(callback: ?) -> !this"},"disableShadow":{"!type":"fn() -> !this"},"enableShadow":{"!type":"fn(show: ?) -> !this"},"endUpdate":{"!type":"fn() -> !this"},"getConstrainOffset":{"!type":"fn() -> !this"},"getShim":{"!type":"fn() -> !this"},"getZIndex":{"!type":"fn() -> !this"},"hideShim":{"!type":"fn() -> !this"},"hideUnders":{"!type":"fn() -> !this"},"onOpacitySet":{"!type":"fn(opacity: ?) -> !this"},"remove":{"!type":"fn() -> !this","!doc":"

Removes this element's dom reference. Note that event and cache removal is handled at Ext.removeNode

\n"},"setBounds":{"!type":"fn(x: ?, y: ?, width: ?, height: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Element","!doc":"

overridden Element method

\n"},"setHeight":{"!type":"fn(h: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Element","!doc":"

overridden Element method

\n"},"setLeft":{"!type":"fn(left: ?) -> +Ext.dom.Element","!doc":"

overridden Element method

\n"},"setLeftTop":{"!type":"fn(left: ?, top: ?) -> +Ext.dom.Element","!doc":"

Sets the element's left and top positions directly using CSS style

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setLocalX":{"!type":"fn() -> !this"},"setLocalXY":{"!type":"fn() -> !this"},"setLocalY":{"!type":"fn() -> !this"},"setSize":{"!type":"fn(w: ?, h: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Element","!doc":"

overridden Element method

\n"},"setTop":{"!type":"fn(top: ?) -> +Ext.dom.Element","!doc":"

Sets the element's top position directly using CSS style\n(instead of setY).

\n\n

Defined in override Ext.dom.Element_position.

\n"},"setVisible":{"!type":"fn(visible: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Element","!doc":"

overridden Element method

\n"},"setWidth":{"!type":"fn(w: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Element","!doc":"

overridden Element method

\n"},"setX":{"!type":"fn(x: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Layer","!doc":"

overridden Element method

\n"},"setXY":{"!type":"fn(xy: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> !this","!doc":"

Defined in override Ext.rtl.dom.Element_position.

\n"},"setY":{"!type":"fn(y: ?, animate: ?, duration: ?, callback: ?, easing: ?) -> +Ext.dom.Layer","!doc":"

overridden Element method

\n"},"setZIndex":{"!type":"fn(zindex: number) -> +Ext.Layer","!doc":"

Sets the z-index of this layer and adjusts any shadow and shim z-indexes. The layer\nz-index is automatically incremented depending upon the presence of a shim or a\nshadow in so that it always shows above those two associated elements.

\n\n

Any shim, will be assigned the passed z-index. A shadow will be assigned the next\nhighet z-index, and the Layer's element will receive the highest z-index.

\n"},"sync":{"!type":"fn(doShow: bool) -> !this","!doc":"

Synchronize this Layer's associated elements, the shadow, and possibly the shim.

\n\n

This code can execute repeatedly in milliseconds,\neg: dragging a Component configured liveDrag: true, or which has no ghost method\nso code size was sacrificed for efficiency (e.g. no getBox/setBox, no XY calls)

\n"}},"shims":{"!type":"[?]"}},"Query":{"!doc":"

Provides high performance selector/xpath processing by compiling queries into reusable functions. New pseudo classes\nand matchers can be plugged. It works on HTML and XML documents (if a content node is passed in).

\n\n

DomQuery supports most of the CSS3 selectors spec, along with some custom selectors and basic XPath.

\n\n

All selectors, attribute filters and pseudos below can be combined infinitely in any order. For example\ndiv.foo:nth-child(odd)[@foo=bar].bar:first would be a perfectly valid selector. Node filters are processed\nin the order in which they appear, which allows you to optimize your queries for your document structure.

\n\n

Element Selectors:

\n\n\n\n\n

Attribute Selectors:

\n\n

The use of @ and quotes are optional. For example, div[@foo='bar'] is also a valid attribute selector.

\n\n\n\n\n

Pseudo Classes:

\n\n\n\n\n

CSS Value Selectors:

\n\n\n\n\n

XML Namespaces:

\n\n\n\n","matchers":{"!type":"?","!doc":"

Collection of matching regular expressions and code snippets.\nEach capture group within () will be replace the {} in the select\nstatement as specified by their index.

\n"},"operators":{"!type":"?","!doc":"

Collection of operator comparison functions.\nThe default operators are =, !=, ^=, $=, *=, %=, |= and ~=.

\n\n

New operators can be added as long as the match the format c= where c\nis any character other than space, >, or <.

\n\n

Operator functions are passed the following parameters:

\n\n\n\n"},"pseudos":{"!type":"?","!doc":"

Object hash of \"pseudo class\" filter functions which are used when filtering selections.\nEach function is passed two parameters:

\n\n\n\n\n

A filter function returns an Array of DOM elements which conform to the pseudo class.\nIn addition to the provided pseudo classes listed above such as first-child and nth-child,\ndevelopers may add additional, custom psuedo class filters to select elements according to application-specific requirements.

\n\n

For example, to filter a elements to only return links to external resources:

\n\n
Ext.DomQuery.pseudos.external = function(c, v) {\n    var r = [], ri = -1;\n    for(var i = 0, ci; ci = c[i]; i++) {\n        // Include in result set only if it's a link to an external resource\n        if (ci.hostname != location.hostname) {\n            r[++ri] = ci;\n        }\n    }\n    return r;\n};\n
\n\n

Then external links could be gathered with the following statement:

\n\n
var externalLinks = Ext.select(\"a:external\");\n
\n"},"compile":{"!type":"fn(selector: string, type?: string) -> fn()","!doc":"

Compiles a selector/xpath query into a reusable function. The returned function\ntakes one parameter \"root\" (optional), which is the context node from where the query should start.

\n"},"filter":{"!type":"fn(el: [+HTMLElement], selector: string, nonMatches: bool) -> [+HTMLElement]","!doc":"

Filters an array of elements to only include matches of a simple selector\n(e.g. div.some-class or span:first-child)

\n"},"is":{"!type":"fn(el: string|+HTMLElement|[+HTMLElement], selector: string) -> bool","!doc":"

Returns true if the passed element(s) match the passed simple selector\n(e.g. div.some-class or span:first-child)

\n"},"jsSelect":{"!type":"fn(selector: string, root?: +HTMLElement|string) -> [+HTMLElement]","!doc":"

Selects an array of DOM nodes using JavaScript-only implementation.

\n\n

Use select to take advantage of browsers built-in support for CSS selectors.

\n"},"select":{"!type":"fn(path: string, root?: +HTMLElement, type?: string, single?: bool) -> [+HTMLElement]","!doc":"

Selects an array of DOM nodes by CSS/XPath selector.

\n\n

Uses document.querySelectorAll if browser supports that, otherwise falls back to\njsSelect to do the work.

\n\n

Aliased as Ext.query.

\n"},"selectNode":{"!type":"fn(selector: string, root?: +HTMLElement) -> +HTMLElement","!doc":"

Selects a single element.

\n"},"selectNumber":{"!type":"fn(selector: string, root?: +HTMLElement, defaultValue?: number) -> number","!doc":"

Selects the value of a node, parsing integers and floats.\nReturns the defaultValue, or 0 if none is specified.

\n"},"selectValue":{"!type":"fn(selector: string, root?: +HTMLElement, defaultValue?: string) -> string","!doc":"

Selects the value of a node, optionally replacing null with the defaultValue.

\n"}}},"draw":{"Color":{"!doc":"

Represents an RGB color and provides helper functions get\ncolor components in HSL color space.

\n","!type":"fn(red: number, green: number, blue: number)","prototype":{"!proto":"Ext.Base.prototype","lightnessFactor":{"!type":"number","!doc":"

The default factor to compute the lighter or darker color. Defaults to 0.2.

\n"},"colorToHexRe":{"!type":"+RegExp","!doc":"

End Definitions

\n"},"hexRe":{"!type":"+RegExp"},"rgbRe":{"!type":"+RegExp"},"getBlue":{"!type":"fn() -> number","!doc":"

Get the blue component of the color, in the range 0..255.

\n"},"getDarker":{"!type":"fn(factor: number) -> ?","!doc":"

Return a new color that is darker than this color.

\n"},"getGrayscale":{"!type":"fn() -> number","!doc":"

Returns the gray value (0 to 255) of the color.

\n\n

The gray value is calculated using the formula r0.3 + g0.59 + b*0.11.

\n"},"getGreen":{"!type":"fn() -> number","!doc":"

Get the green component of the color, in the range 0..255.

\n"},"getHSL":{"!type":"fn() -> [number]","!doc":"

Get the equivalent HSL components of the color.

\n"},"getLighter":{"!type":"fn(factor: number) -> ?","!doc":"

Return a new color that is lighter than this color.

\n"},"getRGB":{"!type":"fn() -> [number]","!doc":"

Get the RGB values.

\n"},"getRed":{"!type":"fn() -> number","!doc":"

Get the red component of the color, in the range 0..255.

\n"},"toString":{"!type":"fn() -> string","!doc":"

Return the color in the hex format, i.e. '#rrggbb'.

\n"}},"fromHSL":{"!type":"fn(h: number, s: number, l: number) -> ?","!doc":"

Create a new color based on the specified HSL values.

\n\n

Note: This method is both static and instance.

\n"},"fromString":{"!type":"fn(str: string) -> ?","!doc":"

Parse the string and create a new color.

\n\n

Supported formats: '#rrggbb', '#rgb', and 'rgb(r,g,b)'.

\n\n

If the string is not recognized, an undefined will be returned instead.

\n\n

Note: This method is both static and instance.

\n"},"toHex":{"!type":"fn(color: string|[string]) -> string","!doc":"

Convert a color to hexadecimal format.

\n\n

Note: This method is both static and instance.

\n"}},"Component":{"!doc":"

The Draw Component is a surface in which sprites can be rendered. The Draw Component\nmanages and holds an Ext.draw.Surface instance where\nSprites can be appended.

\n\n

One way to create a draw component is:

\n\n
var drawComponent = Ext.create('Ext.draw.Component', {\n    viewBox: false,\n    items: [{\n        type: 'circle',\n        fill: '#79BB3F',\n        radius: 100,\n        x: 100,\n        y: 100\n    }]\n});\n\nExt.create('Ext.Window', {\n    width: 215,\n    height: 235,\n    layout: 'fit',\n    items: [drawComponent]\n}).show();\n
\n\n

In this case we created a draw component and added a sprite to it.\nThe type of the sprite is circle so if you run this code you'll see a yellow-ish\ncircle in a Window. When setting viewBox to false we are responsible for setting the object's position and\ndimensions accordingly.

\n\n

You can also add sprites by using the surface's add method:

\n\n
drawComponent.surface.add({\n    type: 'circle',\n    fill: '#79BB3F',\n    radius: 100,\n    x: 100,\n    y: 100\n});\n
\n\n

Larger example

\n\n
var drawComponent = Ext.create('Ext.draw.Component', {\n    width: 800,\n    height: 600,\n    renderTo: document.body\n}), surface = drawComponent.surface;\n\nsurface.add([{\n    type: 'circle',\n    radius: 10,\n    fill: '#f00',\n    x: 10,\n    y: 10,\n    group: 'circles'\n}, {\n    type: 'circle',\n    radius: 10,\n    fill: '#0f0',\n    x: 50,\n    y: 50,\n    group: 'circles'\n}, {\n    type: 'circle',\n    radius: 10,\n    fill: '#00f',\n    x: 100,\n    y: 100,\n    group: 'circles'\n}, {\n    type: 'rect',\n    width: 20,\n    height: 20,\n    fill: '#f00',\n    x: 10,\n    y: 10,\n    group: 'rectangles'\n}, {\n    type: 'rect',\n    width: 20,\n    height: 20,\n    fill: '#0f0',\n    x: 50,\n    y: 50,\n    group: 'rectangles'\n}, {\n    type: 'rect',\n    width: 20,\n    height: 20,\n    fill: '#00f',\n    x: 100,\n    y: 100,\n    group: 'rectangles'\n}]);\n\n// Get references to my groups\ncircles = surface.getGroup('circles');\nrectangles = surface.getGroup('rectangles');\n\n// Animate the circles down\ncircles.animate({\n    duration: 1000,\n    to: {\n        translate: {\n            y: 200\n        }\n    }\n});\n\n// Animate the rectangles across\nrectangles.animate({\n    duration: 1000,\n    to: {\n        translate: {\n            x: 200\n        }\n    }\n});\n
\n\n

For more information on Sprites, the core elements added to a draw component's surface,\nrefer to the Ext.draw.Sprite documentation.

\n","!type":"fn(config: +Ext.Element|string|Ext_draw_Component_cfg)","prototype":{"!proto":"Ext.Component.prototype","autoSize":{"!type":"bool","!doc":"

Turn on autoSize support which will set the bounding div's size to the natural size of the contents.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"enginePriority":{"!type":"[string]","!doc":"

Defines the priority order for which Surface implementation to use. The first\none supported by the current environment will be used.

\n"},"gradients":{"!type":"[?]","!doc":"

(optional) Define a set of gradients that can be used as fill property in sprites.\nThe gradients array is an array of objects with the following properties:

\n\n\n\n\n

Example

\n\n
gradients: [{\n    id: 'gradientId',\n    angle: 45,\n    stops: {\n        0: {\n            color: '#555'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}, {\n    id: 'gradientId2',\n    angle: 0,\n    stops: {\n        0: {\n            color: '#590'\n        },\n        20: {\n            color: '#599'\n        },\n        100: {\n            color: '#ddd'\n        }\n    }\n}]\n
\n\n

Then the sprites can use gradientId and gradientId2 by setting the fill attributes to those ids, for example:

\n\n
sprite.setAttributes({\n    fill: 'url(#gradientId)'\n}, true);\n
\n"},"items":{"!type":"[+Ext.draw.Sprite]","!doc":"

Array of sprites or sprite config objects to add initially to the surface.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"viewBox":{"!type":"bool","!doc":"

Turn on view box support which will scale and position items in the draw component to fit to the component while\nmaintaining aspect ratio. Note that this scaling can override other sizing settings on your items.

\n"},"surface":{"!type":"+Ext.draw.Surface","!doc":"

The Surface instance managed by this component.

\n"},"autoSizeSurface":{"!type":"fn() -> !this"},"createSurface":{"!type":"fn() -> !this","!doc":"

Create the Surface instance. Resolves the correct Surface implementation to\ninstantiate based on the 'enginePriority' config. Once the Surface instance is\ncreated you can use the handle to that instance to add sprites. For example:

\n\n
drawComponent.surface.add(sprite);\n
\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Clean up the Surface instance on component destruction

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Create the Surface on initial render

\n"},"setSurfaceSize":{"!type":"fn(width: ?, height: ?) -> !this"},"click":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"},"dblclick":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"},"mousedown":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"},"mouseenter":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"},"mouseleave":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"},"mousemove":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"},"mouseup":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Event forwarded from surface.

\n"}}},"CompositeSprite":{"!doc":"

A composite Sprite handles a group of sprites with common methods to a sprite\nsuch as hide, show, setAttributes. These methods are applied to the set of sprites\nadded to the group.

\n\n

CompositeSprite extends Ext.util.MixedCollection so you can use the same methods\nin MixedCollection to iterate through sprites, add and remove elements, etc.

\n\n

In order to create a CompositeSprite, one has to provide a handle to the surface where it is\nrendered:

\n\n
var group = Ext.create('Ext.draw.CompositeSprite', {\n    surface: drawComponent.surface\n});\n
\n\n

Then just by using MixedCollection methods it's possible to add Ext.draw.Sprites:

\n\n
group.add(sprite1);\ngroup.add(sprite2);\ngroup.add(sprite3);\n
\n\n

And then apply common Sprite methods to them:

\n\n
group.setAttributes({\n    fill: '#f00'\n}, true);\n
\n","!type":"fn(config: Ext_draw_CompositeSprite_cfg)","prototype":{"!proto":"Ext.util.MixedCollection.prototype","autoDestroy":{"!type":"bool"},"isCompositeSprite":{"!type":"bool","!doc":"

End Definitions

\n"},"add":{"!type":"fn(key: ?, o: ?) -> ?","!doc":"

Inherit docs from MixedCollection

\n"},"addCls":{"!type":"fn(cls: string) -> !this","!doc":"

Adds class to all sprites.

\n"},"attachEvents":{"!type":"fn(o: ?) -> !this"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys this CompositeSprite.

\n"},"getBBox":{"!type":"fn() -> ?","!doc":"

Returns the group bounding box.\nBehaves like Ext.draw.Sprite.getBBox method.

\n"},"getSurface":{"!type":"fn() -> +Ext.draw.Surface","!doc":"

Grab the surface from the items

\n"},"hide":{"!type":"fn(redraw: bool) -> +Ext.draw.CompositeSprite","!doc":"

Hides all sprites. If true is passed then a redraw will be forced for each sprite.

\n"},"insert":{"!type":"fn(index: ?, key: ?, o: ?) -> ?","!doc":"

Inserts an item at the specified index in the collection. Fires the add event when complete.

\n"},"onClick":{"!type":"fn(e: ?) -> !this"},"onMouseDown":{"!type":"fn(e: ?) -> !this"},"onMouseOut":{"!type":"fn(e: ?) -> !this"},"onMouseOver":{"!type":"fn(e: ?) -> !this"},"onMouseUp":{"!type":"fn(e: ?) -> !this"},"redraw":{"!type":"fn() -> !this","!doc":"

Force redraw of all sprites.

\n"},"remove":{"!type":"fn(o: ?) -> ?","!doc":"

Inherit docs from MixedCollection

\n"},"removeCls":{"!type":"fn(cls: string) -> !this","!doc":"

Removes class from all sprites.

\n"},"setAttributes":{"!type":"fn(attrs: ?, redraw: bool) -> +Ext.draw.CompositeSprite","!doc":"

Iterates through all sprites calling setAttributes on each one. For more information Ext.draw.Sprite\nprovides a description of the attributes that can be set with this method.

\n"},"setStyle":{"!type":"fn(style: string) -> !this","!doc":"

Sets style for all sprites.

\n"},"show":{"!type":"fn(redraw: bool) -> +Ext.draw.CompositeSprite","!doc":"

Shows all sprites. If true is passed then a redraw will be forced for each sprite.

\n"},"click":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouse click is detected within the element.

\n"},"mousedown":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mousedown is detected within the element.

\n"},"mouseout":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseout is detected with the element.

\n"},"mouseover":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseover is detected within the element.

\n"},"mouseup":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseup is detected within the element.

\n"}}},"Draw":{"!doc":"

Base Drawing class. Provides base drawing functions.

\n","availableAnimAttrs":{"!type":"?"},"pathCommandRE":{"!type":"+RegExp"},"pathToStringRE":{"!type":"+RegExp","!doc":"

End Definitions

\n"},"pathValuesRE":{"!type":"+RegExp"},"radian":{"!type":"?"},"stopsRE":{"!type":"+RegExp"},"arc2curve":{"!type":"fn(x1: ?, y1: ?, rx: ?, ry: ?, angle: ?, large_arc_flag: ?, sweep_flag: ?, x2: ?, y2: ?, recursive: ?) -> !this"},"bezier":{"!type":"fn(a: ?, b: ?, c: ?, d: ?, x: ?) -> !this"},"bezierDim":{"!type":"fn(a: ?, b: ?, c: ?, d: ?) -> !this"},"command2curve":{"!type":"fn(pathCommand: ?, d: ?) -> !this","!doc":"

Returns any path command as a curveto command based on the attrs passed

\n"},"curveDim":{"!type":"fn(p1x: ?, p1y: ?, c1x: ?, c1y: ?, c2x: ?, c2y: ?, p2x: ?, p2y: ?) -> !this"},"degrees":{"!type":"fn(radian: ?) -> !this"},"ellipsePath":{"!type":"fn(sprite: ?) -> !this"},"findDotAtSegment":{"!type":"fn(p1x: ?, p1y: ?, c1x: ?, c1y: ?, c2x: ?, c2y: ?, p2x: ?, p2y: ?, t: ?) -> !this"},"getAnchors":{"!type":"fn(prevX: number, prevY: number, curX: number, curY: number, nextX: number, nextY: number, value: number) -> ?","!doc":"

Calculates bezier curve control anchor points for a particular point in a path, with a\nsmoothing curve applied. The smoothness of the curve is controlled by the 'value' parameter.\nNote that this algorithm assumes that the line being smoothed is normalized going from left\nto right; it makes special adjustments assuming this orientation.

\n"},"interpolatePaths":{"!type":"fn(path: ?, path2: ?) -> !this"},"intersect":{"!type":"fn(subjectPolygon: ?, clipPolygon: ?) -> !this"},"intersectInside":{"!type":"fn(path: ?, cp1: ?, cp2: ?) -> !this"},"intersectIntersection":{"!type":"fn(s: ?, e: ?, cp1: ?, cp2: ?) -> !this"},"is":{"!type":"fn(o: ?, type: ?) -> !this"},"mapPath":{"!type":"fn(path: ?, matrix: ?) -> !this"},"parseGradient":{"!type":"fn(gradient: ?) -> !this"},"parsePathString":{"!type":"fn(pathString: ?) -> !this"},"path2curve":{"!type":"fn(path: ?) -> !this","!doc":"

Returns a path converted to a set of curveto commands

\n"},"path2string":{"!type":"fn() -> !this","!doc":"

To be deprecated, converts itself (an arrayPath) to a proper SVG path string

\n"},"pathClone":{"!type":"fn(pathArray: ?) -> !this"},"pathDimensions":{"!type":"fn(path: ?) -> !this"},"pathToAbsolute":{"!type":"fn(pathArray: ?) -> !this"},"pathToRelative":{"!type":"fn(pathArray: ?) -> !this","!doc":"

TO BE DEPRECATED

\n"},"pathToString":{"!type":"fn(arrayPath: ?) -> !this","!doc":"

Convert the passed arrayPath to a proper SVG path string (d attribute)

\n"},"quadratic2curve":{"!type":"fn(x1: ?, y1: ?, ax: ?, ay: ?, x2: ?, y2: ?) -> !this"},"rad":{"!type":"fn(degrees: ?) -> !this"},"rectPath":{"!type":"fn(sprite: ?) -> !this"},"rotate":{"!type":"fn(x: ?, y: ?, rad: ?) -> !this"},"rotateAndTranslatePath":{"!type":"fn(sprite: ?) -> !this","!doc":"

TO BE DEPRECATED

\n"},"rotatePoint":{"!type":"fn(x: ?, y: ?, alpha: ?, cx: ?, cy: ?) -> !this","!doc":"

TO BE DEPRECATED

\n"},"smooth":{"!type":"fn(originalPath: ?, value: ?) -> !this","!doc":"

Smoothing function for a path. Converts a path into cubic beziers. Value defines the divider of the distance between points.\nDefaults to a value of 4.

\n"},"snapEnds":{"!type":"fn(from: ?, to: ?, stepsMax: ?, prettyNumbers: ?) -> !this"},"snapEndsByDate":{"!type":"fn(from: +Date, to: +Date, stepsMax: number, lockEnds: bool) -> ?","!doc":"

snapEndsByDate is a utility method to deduce an appropriate tick configuration for the data set of given\nfeature. Refer to snapEnds.

\n"},"snapEndsByDateAndStep":{"!type":"fn(from: +Date, to: +Date, step: [?], lockEnds: bool) -> ?","!doc":"

snapEndsByDateAndStep is a utility method to deduce an appropriate tick configuration for the data set of given\nfeature and specific step size.

\n"},"sorter":{"!type":"fn(a: ?, b: ?) -> !this"},"withinBox":{"!type":"fn(x: ?, y: ?, bbox: ?) -> !this"}},"Matrix":{"!type":"fn(a: ?, b: ?, c: ?, d: ?, e: ?, f: ?)","prototype":{"!proto":"Ext.Base.prototype","add":{"!type":"fn(a: ?, b: ?, c: ?, d: ?, e: ?, f: ?) -> !this"},"clone":{"!type":"fn() -> !this"},"get":{"!type":"fn(i: ?, j: ?) -> !this"},"invert":{"!type":"fn() -> !this"},"offset":{"!type":"fn() -> !this"},"prepend":{"!type":"fn(a: ?, b: ?, c: ?, d: ?, e: ?, f: ?) -> !this"},"rotate":{"!type":"fn(a: ?, x: ?, y: ?) -> !this"},"scale":{"!type":"fn(x: ?, y: ?, cx: ?, cy: ?) -> !this"},"split":{"!type":"fn() -> !this","!doc":"

Split matrix into Translate Scale, Shear, and Rotate

\n"},"toFilter":{"!type":"fn(dx: ?, dy: ?) -> !this"},"toString":{"!type":"fn() -> !this"},"toSvg":{"!type":"fn() -> !this"},"translate":{"!type":"fn(x: ?, y: ?) -> !this"},"x":{"!type":"fn(x: ?, y: ?) -> !this"},"y":{"!type":"fn(x: ?, y: ?) -> !this"}}},"Sprite":{"!doc":"

A Sprite is an object rendered in a Drawing surface.

\n\n

Types

\n\n

The following sprite types are supported:

\n\n

Rect

\n\n

Rectangle requires width and height attributes:

\n\n
Ext.create('Ext.draw.Component', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    items: [{\n        type: 'rect',\n        width: 100,\n        height: 50,\n        radius: 10,\n        fill: 'green',\n        opacity: 0.5,\n        stroke: 'red',\n        'stroke-width': 2\n    }]\n});\n
\n\n

Circle

\n\n

Circle requires x, y and radius attributes:

\n\n
Ext.create('Ext.draw.Component', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    items: [{\n        type: 'circle',\n        radius: 90,\n        x: 100,\n        y: 100,\n        fill: 'blue'\n    }]\n});\n
\n\n

Ellipse

\n\n

Ellipse requires x, y, radiusX and radiusY attributes:

\n\n
Ext.create('Ext.draw.Component', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    items: [{\n        type: \"ellipse\",\n        radiusX: 100,\n        radiusY: 50,\n        x: 100,\n        y: 100,\n        fill: 'red'\n    }]\n});\n
\n\n

Path

\n\n

Path requires the path attribute:

\n\n
Ext.create('Ext.draw.Component', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    items: [{\n        type: \"path\",\n        path: \"M-66.6 26C-66.6 26 -75 22 -78.2 18.4C-81.4 14.8 -80.948 19.966 \" +\n              \"-85.8 19.6C-91.647 19.159 -90.6 3.2 -90.6 3.2L-94.6 10.8C-94.6 \" +\n              \"10.8 -95.8 25.2 -87.8 22.8C-83.893 21.628 -82.6 23.2 -84.2 \" +\n              \"24C-85.8 24.8 -78.6 25.2 -81.4 26.8C-84.2 28.4 -69.8 23.2 -72.2 \" +\n              \"33.6L-66.6 26z\",\n        fill: \"purple\"\n    }]\n});\n
\n\n

Text

\n\n

Text requires the text attribute:

\n\n
Ext.create('Ext.draw.Component', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    items: [{\n        type: \"text\",\n        text: \"Hello, Sprite!\",\n        fill: \"green\",\n        font: \"18px monospace\"\n    }]\n});\n
\n\n

Image

\n\n

Image requires width, height and src attributes:

\n\n
Ext.create('Ext.draw.Component', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    items: [{\n        type: \"image\",\n        src: \"http://www.sencha.com/img/apple-touch-icon.png\",\n        width: 200,\n        height: 200\n    }]\n});\n
\n\n

Creating and adding a Sprite to a Surface

\n\n

See Ext.draw.Surface documentation.

\n\n

Transforming sprites

\n\n

See setAttributes method documentation for examples on how to translate, scale and rotate the sprites.

\n","!type":"fn(config: Ext_draw_Sprite_cfg)","prototype":{"!proto":"Ext.Base.prototype","draggable":{"!type":"bool","!doc":"

True to make the sprite draggable.

\n"},"fill":{"!type":"string","!doc":"

The fill color.

\n"},"font":{"!type":"string","!doc":"

Used with text type sprites. The full font description.\nUses the same syntax as the CSS font parameter

\n"},"group":{"!type":"string|[string]","!doc":"

The group that this sprite belongs to, or an array of groups.\nOnly relevant when added to a Surface.

\n"},"height":{"!type":"number","!doc":"

The height of the rect or image sprite.

\n"},"opacity":{"!type":"number","!doc":"

The opacity of the sprite. A number between 0 and 1.

\n"},"path":{"!type":"string","!doc":"

The path of the path sprite written in SVG-like path syntax.

\n"},"radius":{"!type":"number","!doc":"

The radius of the circle sprite. Or in case of rect sprite, the border radius.

\n"},"radiusX":{"!type":"number","!doc":"

The radius of the ellipse sprite along x-axis.

\n"},"radiusY":{"!type":"number","!doc":"

The radius of the ellipse sprite along y-axis.

\n"},"src":{"!type":"string","!doc":"

Path to the image to show in image sprites.

\n"},"stroke":{"!type":"string","!doc":"

The stroke color.

\n"},"stroke-width":{"!type":"number","!doc":"

The width of the stroke.

\n\n

Note that this attribute needs to be quoted when used. Like so:

\n\n
\"stroke-width\": 12,\n
\n"},"text":{"!type":"string","!doc":"

The actual text to render in text sprites.

\n"},"type":{"!type":"string","!doc":"

The type of the sprite.\nPossible options are 'circle', 'ellipse', 'path', 'rect', 'text', 'image'.

\n\n

See Ext.draw.Sprite class documentation for examples of all types.

\n"},"width":{"!type":"number","!doc":"

The width of the rect or image sprite.

\n"},"x":{"!type":"number","!doc":"

Sprite position along the x-axis.

\n"},"y":{"!type":"number","!doc":"

Sprite position along the y-axis.

\n"},"dd":{"!type":"+Ext.dd.DragSource","!doc":"

If this Sprite is configured draggable, this property will contain\nan instance of Ext.dd.DragSource which handles dragging the Sprite.

\n\n

The developer must provide implementations of the abstract methods of Ext.dd.DragSource\nin order to supply behaviour for each stage of the drag/drop process. See draggable.

\n"},"dirtyFont":{"!type":"bool"},"dirtyHidden":{"!type":"bool"},"dirtyPath":{"!type":"bool"},"dirtyTransform":{"!type":"bool"},"fontProperties":{"!type":"[?]"},"isSprite":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Sprite, or subclass thereof.

\n"},"pathProperties":{"!type":"[?]"},"zIndex":{"!type":"number"},"zIndexDirty":{"!type":"bool"},"addCls":{"!type":"fn(className: string|[string]) -> +Ext.draw.Sprite","!doc":"

Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out. Note this method\nis severly limited in VML.

\n"},"destroy":{"!type":"fn(this: +Ext.draw.Sprite, eOpts: ?)","!doc":"

Fires after the sprite is destroyed.

\n"},"getBBox":{"!type":"fn() -> ?","!doc":"

Retrieves the bounding box of the sprite.\nThis will be returned as an object with x, y, width, and height properties.

\n"},"hide":{"!type":"fn(redraw: bool) -> +Ext.draw.Sprite","!doc":"

Hides the sprite.

\n"},"onRemove":{"!type":"fn() -> !this"},"redraw":{"!type":"fn() -> +Ext.draw.Sprite","!doc":"

Redraws the sprite.

\n"},"remove":{"!type":"fn() -> bool","!doc":"

Removes the sprite.

\n"},"removeCls":{"!type":"fn(className: string|[string]) -> +Ext.draw.Sprite","!doc":"

Removes one or more CSS classes from the element.

\n"},"setAttributes":{"!type":"fn(attrs: ?, redraw: bool) -> +Ext.draw.Sprite","!doc":"

Change the attributes of the sprite.

\n\n

Translation

\n\n

For translate, the configuration object contains x and y attributes that indicate where to\ntranslate the object. For example:

\n\n
sprite.setAttributes({\n  translate: {\n   x: 10,\n   y: 10\n  }\n}, true);\n
\n\n

Rotation

\n\n

For rotation, the configuration object contains x and y attributes for the center of the rotation (which are optional),\nand a degrees attribute that specifies the rotation in degrees. For example:

\n\n
sprite.setAttributes({\n  rotate: {\n   degrees: 90\n  }\n}, true);\n
\n\n

That example will create a 90 degrees rotation using the centroid of the Sprite as center of rotation, whereas:

\n\n
sprite.setAttributes({\n  rotate: {\n   x: 0,\n   y: 0,\n   degrees: 90\n  }\n}, true);\n
\n\n

will create a rotation around the (0, 0) axis.

\n\n

Scaling

\n\n

For scaling, the configuration object contains x and y attributes for the x-axis and y-axis scaling. For example:

\n\n
sprite.setAttributes({\n  scale: {\n   x: 10,\n   y: 3\n  }\n}, true);\n
\n\n

You can also specify the center of scaling by adding cx and cy as properties:

\n\n
sprite.setAttributes({\n  scale: {\n   cx: 0,\n   cy: 0,\n   x: 10,\n   y: 3\n  }\n}, true);\n
\n\n

That last example will scale a sprite taking as centers of scaling the (0, 0) coordinate.

\n"},"setStyle":{"!type":"fn(property: string|?, value?: string) -> +Ext.draw.Sprite","!doc":"

Wrapper for setting style properties, also takes single object parameter of multiple styles.

\n"},"setText":{"!type":"fn(text: ?) -> !this"},"show":{"!type":"fn(redraw: bool) -> +Ext.draw.Sprite","!doc":"

Shows the sprite.

\n"},"beforedestroy":{"!type":"fn(this: +Ext.draw.Sprite, eOpts: ?)","!doc":"

Fires before the sprite is destroyed. Return false from an event handler to stop the destroy.

\n"},"click":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouse click is detected within the element.

\n"},"mousedown":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mousedown is detected within the element.

\n"},"mousemove":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mousemove is detected with the element.

\n"},"mouseout":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseout is detected with the element.

\n"},"mouseover":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseover is detected within the element.

\n"},"mouseup":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)","!doc":"

Fires when a mouseup is detected within the element.

\n"},"render":{"!type":"fn(this: +Ext.draw.Sprite, eOpts: ?)","!doc":"

Fires after the sprite markup is rendered.

\n"}}},"SpriteDD":{"!doc":"

DD implementation for Panels.

\n","!type":"fn(sprite: ?, cfg: ?)","prototype":{"!proto":"Ext.dd.DragSource.prototype","createFrame":{"!type":"fn() -> !this","!doc":"

Creates the proxy element if it does not yet exist

\n"},"getDragEl":{"!type":"fn(e: ?) -> +HTMLElement","!doc":"

Returns a reference to the actual element to drag. By default this is\nthe same as the html element, but it can be assigned to another\nelement. An example of this can be found in Ext.dd.DDProxy

\n"},"getRegion":{"!type":"fn() -> !this"},"onDrag":{"!type":"fn(e: ?) -> !this","!doc":"

Abstract method called during the onMouseMove event while dragging an\nobject.

\n"},"setDragElPos":{"!type":"fn() -> !this","!doc":"

Sets the drag element to the location of the mousedown or click event,\nmaintaining the cursor location relative to the location on the element\nthat was clicked. Override this if you want to place the element in a\nlocation other than where the cursor is.

\n"},"showFrame":{"!type":"fn(iPageX: number, iPageY: number) -> !this","!doc":"

Resizes the drag frame to the dimensions of the clicked object, positions\nit over the object, and finally displays it

\n"},"startDrag":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

TODO(nico): Cumulative translations in VML are handled\ndifferently than in SVG. While in SVG we specify the translation\nrelative to the original x, y position attributes, in VML the translation\nis a delta between the last position of the object (modified by the last\ntranslation) and the new one.

\n\n

In VML the translation alters the position\nof the object, we should change that or alter the SVG impl.

\n"}}},"Surface":{"!doc":"

A Surface is an interface to render methods inside Ext.draw.Component.

\n\n

Most of the Surface methods are abstract and they have a concrete implementation\nin VML or SVG engines.

\n\n

A Surface contains methods to render sprites, get bounding\nboxes of sprites, add sprites to the canvas, initialize other graphic components, etc.

\n\n

Adding sprites to surface

\n\n

One of the most used methods for this class is the add method, to add Sprites to\nthe surface. For example:

\n\n
drawComponent.surface.add({\n    type: 'circle',\n    fill: '#ffc',\n    radius: 100,\n    x: 100,\n    y: 100\n});\n
\n\n

The configuration object passed in the add method is the same as described in the\nExt.draw.Sprite class documentation.

\n\n

Sprites can also be added to surface by setting their surface config at creation time:

\n\n
var sprite = Ext.create('Ext.draw.Sprite', {\n    type: 'circle',\n    fill: '#ff0',\n    surface: drawComponent.surface,\n    radius: 5\n});\n
\n\n

In order to properly apply properties and render the sprite we have to\nshow the sprite setting the option redraw to true:

\n\n
sprite.show(true);\n
\n","!type":"fn(config?: Ext_draw_Surface_cfg)","prototype":{"!proto":"Ext.Base.prototype","height":{"!type":"number"},"items":{"!type":"[+Ext.draw.Sprite]","!doc":"

Array of sprites or sprite config objects to add initially to the surface.

\n"},"width":{"!type":"number"},"availableAttrs":{"!type":"?"},"enginePriority":{"!type":"[?]"},"orderSpritesByZIndex":{"!type":"bool","!doc":"

Flag indicating that the surface implementation requires sprites to be maintained\nin order of their zIndex. Impls that don't require this can set it to false.

\n"},"separatorRe":{"!type":"+RegExp"},"x":{"!type":"number"},"y":{"!type":"number"},"add":{"!type":"fn(args: [+Ext.draw.Sprite]|+Ext.draw.Sprite) -> [+Ext.draw.Sprite]|+Ext.draw.Sprite","!doc":"

Adds a Sprite to the surface. See Ext.draw.Sprite for the configuration object to be\npassed into this method.

\n\n

For example:

\n\n
drawComponent.surface.add({\n    type: 'circle',\n    fill: '#ffc',\n    radius: 100,\n    x: 100,\n    y: 100\n});\n
\n"},"addCls":{"!type":"fn(sprite: ?, className: string|[string]) -> !this","!doc":"

Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out.

\n\n

For example:

\n\n
drawComponent.surface.addCls(sprite, 'x-visible');\n
\n"},"addGradient":{"!type":"fn(gradient: ?) -> !this","!doc":"

Adds a gradient definition to the Surface. Note that in some surface engines, adding\na gradient via this method will not take effect if the surface has already been rendered.\nTherefore, it is preferred to pass the gradients as an item to the surface config, rather\nthan calling this method, especially if the surface is rendered immediately (e.g. due to\n'renderTo' in its config). For more information on how to create gradients in the Chart\nconfiguration object please refer to Ext.chart.Chart.

\n\n

The gradient object to be passed into this method is composed by:

\n\n\n\n\n

For example:

\n\n

drawComponent.surface.addGradient({\n id: 'gradientId',\n angle: 45,\n stops: {\n 0: {\n color: '#555'\n },\n 100: {\n color: '#ddd'\n }\n }\n });

\n"},"applyTransformations":{"!type":"fn(sprite: ?, onlyMatrix: ?) -> !this"},"applyViewBox":{"!type":"fn() -> !this","!doc":"

Using the current viewBox property and the surface's width and height, calculate the\nappropriate viewBoxShift that will be applied as a persistent transform to all sprites.

\n"},"createGroup":{"!type":"fn(id: ?) -> !this"},"createItem":{"!type":"fn() -> !this","!doc":"

Creates an item and appends it to the surface. Called\nas an internal method when calling add.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys the surface. This is done by removing all components from it and\nalso removing its reference to a DOM element.

\n\n

For example:

\n\n
 drawComponent.surface.destroy();\n
\n"},"ellipsePath":{"!type":"fn(x: ?, y: ?, rx: ?, ry: ?) -> !this"},"getBBox":{"!type":"fn(sprite: ?, isWithoutTransform: ?) -> !this"},"getGroup":{"!type":"fn(id: string) -> ?","!doc":"

Returns a new group or an existent group associated with the current surface.\nThe group returned is a Ext.draw.CompositeSprite group.

\n\n

For example:

\n\n
var spriteGroup = drawComponent.surface.getGroup('someGroupId');\n
\n"},"getId":{"!type":"fn() -> !this","!doc":"

Retrieves the id of this component.\nWill autogenerate an id if one has not already been set.

\n"},"getPathcircle":{"!type":"fn(el: ?) -> !this"},"getPathellipse":{"!type":"fn(el: ?) -> !this"},"getPathimage":{"!type":"fn(el: ?) -> !this"},"getPathpath":{"!type":"fn(el: ?) -> !this"},"getPathrect":{"!type":"fn(el: ?) -> !this"},"getPathtext":{"!type":"fn(el: ?) -> !this"},"initBackground":{"!type":"fn(config: ?) -> !this"},"initGradients":{"!type":"fn() -> !this"},"initItems":{"!type":"fn() -> !this"},"initSurface":{"!type":"fn() -> !this","!doc":"

called to initialize components in the surface\nthis is dependent on the underlying implementation.

\n"},"insertByZIndex":{"!type":"fn(sprite: +Ext.draw.Sprite) -> number","!doc":"

Inserts a given sprite into the correct position in the items collection, according to\nits zIndex. It will be inserted at the end of an existing series of sprites with the same or\nlower zIndex. By ensuring sprites are always ordered, this allows surface subclasses to render\nthe sprites in the correct order for proper z-index stacking.

\n"},"onAdd":{"!type":"fn(sprite: ?) -> !this"},"onClick":{"!type":"fn(e: ?) -> !this"},"onDblClick":{"!type":"fn(e: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this"},"onMouseDown":{"!type":"fn(e: ?) -> !this"},"onMouseEnter":{"!type":"fn() -> !this"},"onMouseLeave":{"!type":"fn() -> !this"},"onMouseMove":{"!type":"fn(e: ?) -> !this"},"onMouseOut":{"!type":"fn(e: ?) -> !this"},"onMouseOver":{"!type":"fn(e: ?) -> !this"},"onMouseUp":{"!type":"fn(e: ?) -> !this"},"onRemove":{"!type":"fn() -> !this"},"prepareItems":{"!type":"fn(items: ?, applyDefaults: ?) -> !this"},"rectPath":{"!type":"fn(x: ?, y: ?, w: ?, h: ?, r: ?) -> !this"},"remove":{"!type":"fn(sprite: +Ext.draw.Sprite, destroySprite: bool) -> !this","!doc":"

Removes a given sprite from the surface, optionally destroying the sprite in the process.\nYou can also call the sprite own remove method.

\n\n

For example:

\n\n
drawComponent.surface.remove(sprite);\n//or...\nsprite.remove();\n
\n"},"removeAll":{"!type":"fn(destroySprites: bool) -> !this","!doc":"

Removes all sprites from the surface, optionally destroying the sprites in the process.

\n\n

For example:

\n\n
drawComponent.surface.removeAll();\n
\n"},"removeCls":{"!type":"fn(sprite: ?, className: string|[string]) -> !this","!doc":"

Removes one or more CSS classes from the element.

\n\n

For example:

\n\n
drawComponent.surface.removeCls(sprite, 'x-visible');\n
\n"},"renderItem":{"!type":"fn() -> !this","!doc":"

called to setup the surface to render an item\nthis is dependent on the underlying implementation.

\n"},"renderItems":{"!type":"fn() -> !this"},"rotate":{"!type":"fn(sprite: ?) -> !this"},"scale":{"!type":"fn(sprite: ?) -> !this"},"scrubAttrs":{"!type":"fn(sprite: ?) -> !this"},"setSize":{"!type":"fn(w: number, h: number) -> !this","!doc":"

Sets the size of the surface. Accomodates the background (if any) to fit the new size too.

\n\n

For example:

\n\n
drawComponent.surface.setSize(500, 500);\n
\n\n

This method is generally called when also setting the size of the draw Component.

\n"},"setStyle":{"!type":"fn(sprite: ?, styles: ?) -> !this","!doc":"

Sets CSS style attributes to an element.

\n\n

For example:

\n\n
drawComponent.surface.setStyle(sprite, {\n    'cursor': 'pointer'\n});\n
\n"},"setText":{"!type":"fn(sprite: ?, text: string) -> !this","!doc":"

Changes the text in the sprite element. The sprite must be a text sprite.\nThis method can also be called from Ext.draw.Sprite.

\n\n

For example:

\n\n
var spriteGroup = drawComponent.surface.setText(sprite, 'my new text');\n
\n"},"setViewBox":{"!type":"fn(x: ?, y: ?, width: ?, height: ?) -> !this"},"transformToViewBox":{"!type":"fn(x: ?, y: ?) -> !this"},"translate":{"!type":"fn(sprite: ?) -> !this"},"click":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a click is detected within the surface.

\n"},"dblclick":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a dblclick is detected within the surface.

\n"},"mousedown":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mousedown is detected within the surface.

\n"},"mouseenter":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mouseenter is detected within the surface.

\n"},"mouseleave":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mouseleave is detected within the surface.

\n"},"mousemove":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mousemove is detected within the surface.

\n"},"mouseout":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mouseout is detected within the surface.

\n"},"mouseover":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mouseover is detected within the surface.

\n"},"mouseup":{"!type":"fn(e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a mouseup is detected within the surface.

\n"}},"create":{"!type":"fn(config: ?, enginePriority?: [string]) -> ?","!doc":"

Creates and returns a new concrete Surface instance appropriate for the current environment.

\n"},"save":{"!type":"fn(surface: +Ext.draw.Surface, config?: ?) -> ?","!doc":"

Exports a surface in a different format.\nThe surface may be exported to an SVG string, using the\nExt.draw.engine.SvgExporter. It may also be exported\nas an image using the ImageExporter.\nNote that this requires sending data to a remote server to process\nthe SVG into an image, see the Ext.draw.engine.ImageExporter for\nmore details.

\n"}},"Text":{"!doc":"

This class encapsulates a drawn text item as rendered by the Ext.draw package within a Component which can be\nthen used anywhere in an ExtJS application just like any other Component.

\n\n

Example usage

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Panel with VerticalTextItem',\n    width: 300,\n    height: 200,\n    lbar: {\n        layout: {\n            align: 'center'\n        },\n        items: [{\n            xtype: 'text',\n            text: 'Sample VerticalTextItem',\n            degrees: 90\n        }]\n    },\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(text: ?)","prototype":{"!proto":"Ext.draw.Component.prototype","autoSize":{"!type":"bool","!doc":"

Turn on autoSize support which will set the bounding div's size to the natural size of the contents.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"degrees":{"!type":"number","!doc":"

The angle by which to initially rotate the text clockwise. Defaults to zero.

\n"},"styleSelector":{"!type":"string","!doc":"

A CSS selector string which matches a style rule in the document stylesheet from which\nthe text's font properties are read.

\n\n

Drawn text is not styled by CSS, but by properties set during its construction, so these styles\nmust be programatically read from a stylesheet rule found via a selector at construction time.

\n"},"text":{"!type":"string","!doc":"

The text to display (html tags are not accepted)

\n"},"viewBox":{"!type":"bool","!doc":"

Turn on view box support which will scale and position items in the draw component to fit to the component while\nmaintaining aspect ratio. Note that this scaling can override other sizing settings on your items.

\n"},"getStyles":{"!type":"fn(selectors: ?) -> !this","!doc":"

Accumulates a style object based upon the styles specified in document stylesheets\nby an array of CSS selectors

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"setAngle":{"!type":"fn(degrees: number) -> !this","!doc":"

Sets the clockwise rotation angle relative to the horizontal axis.

\n"},"setText":{"!type":"fn(t: string) -> !this","!doc":"

Updates this item's text.

\n"}}},"engine":{"ImageExporter":{"!doc":"

Exports a Surface to an image. To do this,\nthe svg string must be sent to a remote server and processed.

\n\n

Sending the data

\n\n

A post request is made to the URL. The following fields are sent:

\n\n\n\n\n

The response

\n\n

It is expected that the user will be prompted with an image download.\nAs such, the following options should be set on the server:

\n\n\n\n\n

Important: By default, chart data is sent to a server operated\nby Sencha to do data processing. You may change this default by\nsetting the defaultUrl of this class.\nIn addition, please note that this service only creates PNG images.

\n","defaultUrl":{"!type":"string","!doc":"

The default URL to submit the form request.

\n"},"formCls":{"!type":"string"},"heightParam":{"!type":"string","!doc":"

The name of the height parameter to be sent to the server.\nThe Sencha IO server expects it to be the default value.

\n"},"supportedTypes":{"!type":"[?]","!doc":"

A list of export types supported by the server

\n"},"svgParam":{"!type":"string","!doc":"

The name of the svg parameter to be sent to the server.\nThe Sencha IO server expects it to be the default value.

\n"},"typeParam":{"!type":"string","!doc":"

The name of the type parameter to be sent to the server.\nThe Sencha IO server expects it to be the default value.

\n"},"widthParam":{"!type":"string","!doc":"

The name of the width parameter to be sent to the server.\nThe Sencha IO server expects it to be the default value.

\n"},"generate":{"!type":"fn(surface: +Ext.draw.Surface, config?: ?) -> bool","!doc":"

Exports the surface to an image

\n"}},"Svg":{"!doc":"

Provides specific methods to draw with SVG.

\n","!type":"fn(config?: Ext_draw_engine_Svg_cfg)","prototype":{"!proto":"Ext.draw.Surface.prototype","engine":{"!type":"string","!doc":"

End Definitions

\n"},"minDefaults":{"!type":"?"},"parsers":{"!type":"?"},"spacesRe":{"!type":"+RegExp"},"translateAttrs":{"!type":"?"},"trimRe":{"!type":"+RegExp"},"xlink":{"!type":"string"},"addCls":{"!type":"fn(sprite: ?, className: ?) -> !this","!doc":"

Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out.

\n\n

For example:

\n\n
drawComponent.surface.addCls(sprite, 'x-visible');\n
\n"},"addGradient":{"!type":"fn(gradient: ?) -> !this","!doc":"

Adds a gradient definition to the Surface. Note that in some surface engines, adding\na gradient via this method will not take effect if the surface has already been rendered.\nTherefore, it is preferred to pass the gradients as an item to the surface config, rather\nthan calling this method, especially if the surface is rendered immediately (e.g. due to\n'renderTo' in its config). For more information on how to create gradients in the Chart\nconfiguration object please refer to Ext.chart.Chart.

\n\n

The gradient object to be passed into this method is composed by:

\n\n\n\n\n

For example:

\n\n

drawComponent.surface.addGradient({\n id: 'gradientId',\n angle: 45,\n stops: {\n 0: {\n color: '#555'\n },\n 100: {\n color: '#ddd'\n }\n }\n });

\n"},"applyAttrs":{"!type":"fn(sprite: ?) -> !this"},"applyZIndex":{"!type":"fn(sprite: +Ext.draw.Sprite) -> !this","!doc":"

Insert or move a given sprite's element to the correct place in the DOM list for its zIndex

\n"},"createItem":{"!type":"fn(config: ?) -> !this","!doc":"

Creates an item and appends it to the surface. Called\nas an internal method when calling add.

\n"},"createSpriteElement":{"!type":"fn(sprite: ?) -> !this"},"createSvgElement":{"!type":"fn(type: ?, attrs: ?) -> !this"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys the surface. This is done by removing all components from it and\nalso removing its reference to a DOM element.

\n\n

For example:

\n\n
 drawComponent.surface.destroy();\n
\n"},"getBBoxText":{"!type":"fn(sprite: ?) -> !this"},"getDefs":{"!type":"fn() -> !this"},"getRegion":{"!type":"fn() -> +Ext.util.Region","!doc":"

Get the region for the surface's canvas area

\n"},"hasCls":{"!type":"fn(sprite: +Ext.draw.Sprite, className: string) -> bool","!doc":"

Checks if the specified CSS class exists on this element's DOM node.

\n"},"hide":{"!type":"fn() -> !this"},"hidePrim":{"!type":"fn(sprite: ?) -> !this"},"onMouseEnter":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onMouseLeave":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onRemove":{"!type":"fn(sprite: ?) -> !this"},"processEvent":{"!type":"fn(name: ?, e: ?) -> !this","!doc":"\n\n"},"redraw":{"!type":"fn(sprite: ?) -> !this"},"removeCls":{"!type":"fn(sprite: ?, className: ?) -> !this","!doc":"

Removes one or more CSS classes from the element.

\n\n

For example:

\n\n
drawComponent.surface.removeCls(sprite, 'x-visible');\n
\n"},"render":{"!type":"fn(container: ?) -> !this"},"renderAll":{"!type":"fn() -> !this"},"renderItem":{"!type":"fn(sprite: ?) -> !this","!doc":"

called to setup the surface to render an item\nthis is dependent on the underlying implementation.

\n"},"setClip":{"!type":"fn(sprite: ?, params: ?) -> !this"},"setSize":{"!type":"fn(width: ?, height: ?) -> !this","!doc":"

Sets the size of the surface. Accomodates the background (if any) to fit the new size too.

\n\n

For example:

\n\n
drawComponent.surface.setSize(500, 500);\n
\n\n

This method is generally called when also setting the size of the draw Component.

\n"},"setText":{"!type":"fn(sprite: ?, textString: ?) -> !this","!doc":"

Changes the text in the sprite element. The sprite must be a text sprite.\nThis method can also be called from Ext.draw.Sprite.

\n\n

For example:

\n\n
var spriteGroup = drawComponent.surface.setText(sprite, 'my new text');\n
\n"},"setViewBox":{"!type":"fn(x: ?, y: ?, width: ?, height: ?) -> !this"},"show":{"!type":"fn() -> !this"},"showPrim":{"!type":"fn(sprite: ?) -> !this"},"transform":{"!type":"fn(sprite: ?, matrixOnly: ?) -> !this"},"tuneText":{"!type":"fn(sprite: ?, attrs: ?) -> !this","!doc":"\n\n"}}},"SvgExporter":{"!doc":"

A utility class for exporting a Surface to a string\nthat may be saved or used for processing on the server.

\n","generate":{"!type":"fn(surface: +Ext.draw.Surface, config?: ?) -> string","!doc":"

Exports the passed surface to a SVG string representation

\n"}},"Vml":{"!doc":"

Provides specific methods to draw with VML.

\n","!type":"fn(config?: Ext_draw_engine_Vml_cfg)","prototype":{"!proto":"Ext.draw.Surface.prototype","NonVmlPathRe":{"!type":"+RegExp"},"baseVmlCls":{"!type":"string"},"bitesRe":{"!type":"+RegExp"},"coordorigin":{"!type":"string"},"coordsize":{"!type":"number"},"engine":{"!type":"string","!doc":"

End Definitions

\n"},"fillUrlRe":{"!type":"+RegExp"},"fontFamilyRe":{"!type":"+RegExp"},"map":{"!type":"?"},"measureSpanCls":{"!type":"string"},"minDefaults":{"!type":"?","!doc":"\n\n"},"orderSpritesByZIndex":{"!type":"bool","!doc":"

VML uses CSS z-index and therefore doesn't need sprites to be kept in zIndex order

\n"},"partialPathRe":{"!type":"+RegExp","!doc":"

Non-VML Pathing ops

\n"},"pathlike":{"!type":"+RegExp"},"spriteCls":{"!type":"string"},"translateAttrs":{"!type":"?","!doc":"\n\n"},"valRe":{"!type":"+RegExp"},"vmlGroupCls":{"!type":"string"},"zIndexShift":{"!type":"number"},"zoom":{"!type":"number"},"addCls":{"!type":"fn(sprite: ?, className: ?) -> !this","!doc":"

Adds one or more CSS classes to the element. Duplicate classes are automatically filtered out.

\n\n

For example:

\n\n
drawComponent.surface.addCls(sprite, 'x-visible');\n
\n"},"addGradient":{"!type":"fn(gradient: ?) -> !this","!doc":"

Adds a definition to this Surface for a linear gradient. We convert the gradient definition\nto its corresponding VML attributes and store it for later use by individual sprites.

\n"},"applyAttrs":{"!type":"fn(sprite: ?) -> !this"},"applyViewBox":{"!type":"fn() -> !this","!doc":"

Using the current viewBox property and the surface's width and height, calculate the\nappropriate viewBoxShift that will be applied as a persistent transform to all sprites.

\n"},"createItem":{"!type":"fn(config: ?) -> !this","!doc":"

Creates an item and appends it to the surface. Called\nas an internal method when calling add.

\n"},"createSpriteElement":{"!type":"fn(sprite: ?) -> !this","!doc":"

Create the VML element/elements and append them to the DOM

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys the surface. This is done by removing all components from it and\nalso removing its reference to a DOM element.

\n\n

For example:

\n\n
 drawComponent.surface.destroy();\n
\n"},"getBBoxText":{"!type":"fn(sprite: ?) -> !this"},"getRegion":{"!type":"fn() -> !this"},"hide":{"!type":"fn() -> !this"},"hidePrim":{"!type":"fn(sprite: ?) -> !this"},"onAdd":{"!type":"fn(item: ?) -> !this"},"onMouseEnter":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onMouseLeave":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onRemove":{"!type":"fn(sprite: ?) -> !this"},"path2vml":{"!type":"fn(path: ?) -> !this","!doc":"

Convert an SVG standard path into a VML path

\n"},"processEvent":{"!type":"fn(name: ?, e: ?) -> !this","!doc":"\n\n"},"redraw":{"!type":"fn(sprite: ?) -> !this"},"removeCls":{"!type":"fn(sprite: ?, className: ?) -> !this","!doc":"

Removes one or more CSS classes from the element.

\n\n

For example:

\n\n
drawComponent.surface.removeCls(sprite, 'x-visible');\n
\n"},"render":{"!type":"fn(container: ?) -> !this"},"renderAll":{"!type":"fn() -> !this"},"renderItem":{"!type":"fn(sprite: ?) -> !this","!doc":"

called to setup the surface to render an item\nthis is dependent on the underlying implementation.

\n"},"rotationCompensation":{"!type":"fn(deg: ?, dx: ?, dy: ?) -> !this"},"setClip":{"!type":"fn(sprite: ?, params: ?) -> !this"},"setFill":{"!type":"fn(sprite: ?, params: ?) -> !this"},"setPaths":{"!type":"fn(sprite: ?, params: ?) -> !this","!doc":"

Normalize all virtualized types into paths.

\n"},"setSize":{"!type":"fn(width: ?, height: ?) -> !this","!doc":"

Sets the size of the surface. Accomodates the background (if any) to fit the new size too.

\n\n

For example:

\n\n
drawComponent.surface.setSize(500, 500);\n
\n\n

This method is generally called when also setting the size of the draw Component.

\n"},"setStroke":{"!type":"fn(sprite: ?, params: ?) -> !this"},"setText":{"!type":"fn(sprite: ?, text: ?) -> !this","!doc":"

Changes the text in the sprite element. The sprite must be a text sprite.\nThis method can also be called from Ext.draw.Sprite.

\n\n

For example:

\n\n
var spriteGroup = drawComponent.surface.setText(sprite, 'my new text');\n
\n"},"setTextAttributes":{"!type":"fn(sprite: ?, params: ?) -> !this"},"setZIndex":{"!type":"fn(sprite: ?) -> !this"},"show":{"!type":"fn() -> !this"},"showPrim":{"!type":"fn(sprite: ?) -> !this"},"transform":{"!type":"fn(sprite: ?, matrixOnly: ?) -> !this"}}}}},"enums":{"Feature":{"!doc":"

Enumeration of all ftypes.

\n","prototype":{"abstractsummary":{"!type":"string","!doc":"

Alias for Ext.grid.feature.AbstractSummary.

\n"},"feature":{"!type":"string","!doc":"

Alias for Ext.grid.feature.Feature.

\n"},"grouping":{"!type":"string","!doc":"

Alias for Ext.grid.feature.Grouping.

\n"},"groupingsummary":{"!type":"string","!doc":"

Alias for Ext.grid.feature.GroupingSummary.

\n"},"rowbody":{"!type":"string","!doc":"

Alias for Ext.grid.feature.RowBody.

\n"},"rowwrap":{"!type":"string","!doc":"

Alias for Ext.grid.feature.RowWrap.

\n"},"summary":{"!type":"string","!doc":"

Alias for Ext.grid.feature.Summary.

\n"}}},"Layout":{"!doc":"

Enumeration of all layout types.

\n","prototype":{"absolute":{"!type":"string","!doc":"

Alias for Ext.layout.container.Absolute.

\n"},"accordion":{"!type":"string","!doc":"

Alias for Ext.layout.container.Accordion.

\n"},"anchor":{"!type":"string","!doc":"

Alias for Ext.layout.container.Anchor.

\n"},"auto":{"!type":"string","!doc":"

Alias for Ext.layout.container.Auto.

\n"},"autocomponent":{"!type":"string","!doc":"

Alias for Ext.layout.component.Auto.

\n"},"autocontainer":{"!type":"string","!doc":"

Alias for Ext.layout.container.Auto.

\n"},"body":{"!type":"string","!doc":"

Alias for Ext.layout.component.Body.

\n"},"border":{"!type":"string","!doc":"

Alias for Ext.layout.container.Border.

\n"},"boundlist":{"!type":"string","!doc":"

Alias for Ext.layout.component.BoundList.

\n"},"box":{"!type":"string","!doc":"

Alias for Ext.layout.container.Box.

\n"},"button":{"!type":"string","!doc":"

Alias for Ext.layout.component.Button.

\n"},"card":{"!type":"string","!doc":"

Alias for Ext.layout.container.Card.

\n"},"checkboxgroup":{"!type":"string","!doc":"

Alias for Ext.layout.container.CheckboxGroup.

\n"},"column":{"!type":"string","!doc":"

Alias for Ext.layout.container.Column.

\n"},"columncomponent":{"!type":"string","!doc":"

Alias for Ext.grid.ColumnComponentLayout.

\n"},"combobox":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.ComboBox.

\n"},"container":{"!type":"string","!doc":"

Alias for Ext.layout.container.Container.

\n"},"dock":{"!type":"string","!doc":"

Alias for Ext.layout.component.Dock.

\n"},"draw":{"!type":"string","!doc":"

Alias for Ext.layout.component.Draw.

\n"},"editor":{"!type":"string","!doc":"

Alias for Ext.layout.container.Editor.

\n"},"field":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.Field.

\n"},"fieldcontainer":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.FieldContainer.

\n"},"fieldset":{"!type":"string","!doc":"

Alias for Ext.layout.component.FieldSet.

\n"},"fit":{"!type":"string","!doc":"

Alias for Ext.layout.container.Fit.

\n"},"form":{"!type":"string","!doc":"

Alias for Ext.layout.container.Form.

\n"},"gridcolumn":{"!type":"string","!doc":"

Alias for Ext.grid.ColumnLayout.

\n"},"hbox":{"!type":"string","!doc":"

Alias for Ext.layout.container.HBox.

\n"},"htmleditor":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.HtmlEditor.

\n"},"progressbar":{"!type":"string","!doc":"

Alias for Ext.layout.component.ProgressBar.

\n"},"sliderfield":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.Slider.

\n"},"table":{"!type":"string","!doc":"

Alias for Ext.layout.container.Table.

\n"},"tableview":{"!type":"string","!doc":"

Alias for Ext.view.TableLayout.

\n"},"textareafield":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.TextArea.

\n"},"textfield":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.Text.

\n"},"triggerfield":{"!type":"string","!doc":"

Alias for Ext.layout.component.field.Trigger.

\n"},"vbox":{"!type":"string","!doc":"

Alias for Ext.layout.container.VBox.

\n"}}},"Plugin":{"!doc":"

Enumeration of all ptypes.

\n","prototype":{"bufferedrenderer":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.BufferedRenderer.

\n"},"cellediting":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.CellEditing.

\n"},"gridheaderreorderer":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.HeaderReorderer.

\n"},"gridheaderresizer":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.HeaderResizer.

\n"},"gridviewdragdrop":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.DragDrop.

\n"},"rowediting":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.RowEditing.

\n"},"rowexpander":{"!type":"string","!doc":"

Alias for Ext.grid.plugin.RowExpander.

\n"},"treeviewdragdrop":{"!type":"string","!doc":"

Alias for Ext.tree.plugin.TreeViewDragDrop.

\n"}}},"Widget":{"!doc":"

Enumeration of all xtypes.

\n","prototype":{"actioncolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.Action.

\n"},"booleancolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.Boolean.

\n"},"bordersplitter":{"!type":"string","!doc":"

Alias for Ext.resizer.BorderSplitter.

\n"},"boundlist":{"!type":"string","!doc":"

Alias for Ext.view.BoundList.

\n"},"box":{"!type":"string","!doc":"

Alias for Ext.Component.

\n"},"button":{"!type":"string","!doc":"

Alias for Ext.button.Button.

\n"},"buttongroup":{"!type":"string","!doc":"

Alias for Ext.container.ButtonGroup.

\n"},"chart":{"!type":"string","!doc":"

Alias for Ext.chart.Chart.

\n"},"checkbox":{"!type":"string","!doc":"

Alias for Ext.form.field.Checkbox.

\n"},"checkboxfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Checkbox.

\n"},"checkboxgroup":{"!type":"string","!doc":"

Alias for Ext.form.CheckboxGroup.

\n"},"checkcolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.CheckColumn.

\n"},"colormenu":{"!type":"string","!doc":"

Alias for Ext.menu.ColorPicker.

\n"},"colorpicker":{"!type":"string","!doc":"

Alias for Ext.picker.Color.

\n"},"combo":{"!type":"string","!doc":"

Alias for Ext.form.field.ComboBox.

\n"},"combobox":{"!type":"string","!doc":"

Alias for Ext.form.field.ComboBox.

\n"},"component":{"!type":"string","!doc":"

Alias for Ext.Component.

\n"},"container":{"!type":"string","!doc":"

Alias for Ext.container.Container.

\n"},"cycle":{"!type":"string","!doc":"

Alias for Ext.button.Cycle.

\n"},"dataview":{"!type":"string","!doc":"

Alias for Ext.view.View.

\n"},"datecolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.Date.

\n"},"datefield":{"!type":"string","!doc":"

Alias for Ext.form.field.Date.

\n"},"datemenu":{"!type":"string","!doc":"

Alias for Ext.menu.DatePicker.

\n"},"datepicker":{"!type":"string","!doc":"

Alias for Ext.picker.Date.

\n"},"displayfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Display.

\n"},"draw":{"!type":"string","!doc":"

Alias for Ext.draw.Component.

\n"},"editor":{"!type":"string","!doc":"

Alias for Ext.Editor.

\n"},"field":{"!type":"string","!doc":"

Alias for Ext.form.field.Base.

\n"},"fieldcontainer":{"!type":"string","!doc":"

Alias for Ext.form.FieldContainer.

\n"},"fieldset":{"!type":"string","!doc":"

Alias for Ext.form.FieldSet.

\n"},"filebutton":{"!type":"string","!doc":"

Alias for Ext.form.field.FileButton.

\n"},"filefield":{"!type":"string","!doc":"

Alias for Ext.form.field.File.

\n"},"fileuploadfield":{"!type":"string","!doc":"

Alias for Ext.form.field.File.

\n"},"flash":{"!type":"string","!doc":"

Alias for Ext.flash.Component.

\n"},"form":{"!type":"string","!doc":"

Alias for Ext.form.Panel.

\n"},"grid":{"!type":"string","!doc":"

Alias for Ext.grid.Panel.

\n"},"gridcolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.Column.

\n"},"gridpanel":{"!type":"string","!doc":"

Alias for Ext.grid.Panel.

\n"},"gridview":{"!type":"string","!doc":"

Alias for Ext.grid.View.

\n"},"header":{"!type":"string","!doc":"

Alias for Ext.panel.Header.

\n"},"headercontainer":{"!type":"string","!doc":"

Alias for Ext.grid.header.Container.

\n"},"hidden":{"!type":"string","!doc":"

Alias for Ext.form.field.Hidden.

\n"},"hiddenfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Hidden.

\n"},"htmleditor":{"!type":"string","!doc":"

Alias for Ext.form.field.HtmlEditor.

\n"},"image":{"!type":"string","!doc":"

Alias for Ext.Img.

\n"},"imagecomponent":{"!type":"string","!doc":"

Alias for Ext.Img.

\n"},"jsonpstore":{"!type":"string","!doc":"

Alias for Ext.data.JsonPStore.

\n"},"label":{"!type":"string","!doc":"

Alias for Ext.form.Label.

\n"},"loadmask":{"!type":"string","!doc":"

Alias for Ext.LoadMask.

\n"},"menu":{"!type":"string","!doc":"

Alias for Ext.menu.Menu.

\n"},"menucheckitem":{"!type":"string","!doc":"

Alias for Ext.menu.CheckItem.

\n"},"menuitem":{"!type":"string","!doc":"

Alias for Ext.menu.Item.

\n"},"menuseparator":{"!type":"string","!doc":"

Alias for Ext.menu.Separator.

\n"},"messagebox":{"!type":"string","!doc":"

Alias for Ext.window.MessageBox.

\n"},"monthpicker":{"!type":"string","!doc":"

Alias for Ext.picker.Month.

\n"},"multislider":{"!type":"string","!doc":"

Alias for Ext.slider.Multi.

\n"},"numbercolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.Number.

\n"},"numberfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Number.

\n"},"pagingtoolbar":{"!type":"string","!doc":"

Alias for Ext.toolbar.Paging.

\n"},"panel":{"!type":"string","!doc":"

Alias for Ext.panel.Panel.

\n"},"pickerfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Picker.

\n"},"progressbar":{"!type":"string","!doc":"

Alias for Ext.ProgressBar.

\n"},"propertygrid":{"!type":"string","!doc":"

Alias for Ext.grid.property.Grid.

\n"},"quicktip":{"!type":"string","!doc":"

Alias for Ext.tip.QuickTip.

\n"},"radio":{"!type":"string","!doc":"

Alias for Ext.form.field.Radio.

\n"},"radiofield":{"!type":"string","!doc":"

Alias for Ext.form.field.Radio.

\n"},"radiogroup":{"!type":"string","!doc":"

Alias for Ext.form.RadioGroup.

\n"},"roweditor":{"!type":"string","!doc":"

Alias for Ext.grid.RowEditor.

\n"},"roweditorbuttons":{"!type":"string","!doc":"

Alias for Ext.grid.RowEditorButtons.

\n"},"rownumberer":{"!type":"string","!doc":"

Alias for Ext.grid.column.RowNumberer.

\n"},"slider":{"!type":"string","!doc":"

Alias for Ext.slider.Single.

\n"},"sliderfield":{"!type":"string","!doc":"

Alias for Ext.slider.Single.

\n"},"slidertip":{"!type":"string","!doc":"

Alias for Ext.slider.Tip.

\n"},"spinnerfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Spinner.

\n"},"splitbutton":{"!type":"string","!doc":"

Alias for Ext.button.Split.

\n"},"splitter":{"!type":"string","!doc":"

Alias for Ext.resizer.Splitter.

\n"},"tab":{"!type":"string","!doc":"

Alias for Ext.tab.Tab.

\n"},"tabbar":{"!type":"string","!doc":"

Alias for Ext.tab.Bar.

\n"},"tablepanel":{"!type":"string","!doc":"

Alias for Ext.panel.Table.

\n"},"tableview":{"!type":"string","!doc":"

Alias for Ext.view.Table.

\n"},"tabpanel":{"!type":"string","!doc":"

Alias for Ext.tab.Panel.

\n"},"tbfill":{"!type":"string","!doc":"

Alias for Ext.toolbar.Fill.

\n"},"tbitem":{"!type":"string","!doc":"

Alias for Ext.toolbar.Item.

\n"},"tbseparator":{"!type":"string","!doc":"

Alias for Ext.toolbar.Separator.

\n"},"tbspacer":{"!type":"string","!doc":"

Alias for Ext.toolbar.Spacer.

\n"},"tbtext":{"!type":"string","!doc":"

Alias for Ext.toolbar.TextItem.

\n"},"templatecolumn":{"!type":"string","!doc":"

Alias for Ext.grid.column.Template.

\n"},"text":{"!type":"string","!doc":"

Alias for Ext.draw.Text.

\n"},"textarea":{"!type":"string","!doc":"

Alias for Ext.form.field.TextArea.

\n"},"textareafield":{"!type":"string","!doc":"

Alias for Ext.form.field.TextArea.

\n"},"textfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Text.

\n"},"timefield":{"!type":"string","!doc":"

Alias for Ext.form.field.Time.

\n"},"timepicker":{"!type":"string","!doc":"

Alias for Ext.picker.Time.

\n"},"tip":{"!type":"string","!doc":"

Alias for Ext.tip.Tip.

\n"},"tool":{"!type":"string","!doc":"

Alias for Ext.panel.Tool.

\n"},"toolbar":{"!type":"string","!doc":"

Alias for Ext.toolbar.Toolbar.

\n"},"tooltip":{"!type":"string","!doc":"

Alias for Ext.tip.ToolTip.

\n"},"treecolumn":{"!type":"string","!doc":"

Alias for Ext.tree.Column.

\n"},"treepanel":{"!type":"string","!doc":"

Alias for Ext.tree.Panel.

\n"},"treeview":{"!type":"string","!doc":"

Alias for Ext.tree.View.

\n"},"trigger":{"!type":"string","!doc":"

Alias for Ext.form.field.Trigger.

\n"},"triggerfield":{"!type":"string","!doc":"

Alias for Ext.form.field.Trigger.

\n"},"viewport":{"!type":"string","!doc":"

Alias for Ext.container.Viewport.

\n"},"window":{"!type":"string","!doc":"

Alias for Ext.window.Window.

\n"}}}},"flash":{"Component":{"!doc":"

A simple Component for displaying an Adobe Flash SWF movie. The movie will be sized and can participate\nin layout like any other Component.

\n\n

This component requires the third-party SWFObject library version 2.2 or above. It is not included within\nthe ExtJS distribution, so you will have to include it into your page manually in order to use this component.\nThe SWFObject library can be downloaded from the SWFObject project page\nand then simply import it into the head of your HTML document:

\n\n
<script type=\"text/javascript\" src=\"path/to/local/swfobject.js\"></script>\n
\n\n

Configuration

\n\n

This component allows several options for configuring how the target Flash movie is embedded. The most\nimportant is the required url which points to the location of the Flash movie to load. Other\nconfigurations include:

\n\n\n\n\n

Example usage:

\n\n
var win = Ext.widget('window', {\n    title: \"It's a tiger!\",\n    layout: 'fit',\n    width: 300,\n    height: 300,\n    x: 20,\n    y: 20,\n    resizable: true,\n    items: {\n        xtype: 'flash',\n        url: 'tiger.swf'\n    }\n});\nwin.show();\n
\n\n

Express Install

\n\n

Adobe provides a tool called Express Install\nthat offers users an easy way to upgrade their Flash player. If you wish to make use of this, you should set\nthe static EXPRESS_INSTALL_URL property to the location of your Express Install SWF file:

\n\n
Ext.flash.Component.EXPRESS_INSTALL_URL = 'path/to/local/expressInstall.swf';\n
\n","!type":"fn(config: +Ext.Element|string|Ext_flash_Component_cfg)","prototype":{"!proto":"Ext.Component.prototype","backgroundColor":{"!type":"string","!doc":"

The background color of the SWF movie.

\n"},"expressInstall":{"!type":"bool","!doc":"

True to prompt the user to install flash if not installed. Note that this uses\nExt.FlashComponent.EXPRESS_INSTALL_URL, which should be set to the local resource.

\n"},"flashAttributes":{"!type":"?","!doc":"

A set of key value pairs to be passed to the flash object as attributes.

\n"},"flashParams":{"!type":"?","!doc":"

A set of key value pairs to be passed to the flash object as parameters. Possible parameters can be found here:\nhttp://kb2.adobe.com/cps/127/tn_12701.html

\n"},"flashVars":{"!type":"?","!doc":"

A set of key value pairs to be passed to the flash object as flash variables.

\n"},"flashVersion":{"!type":"string","!doc":"

Indicates the version the flash content was published for.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

Have to create a placeholder div with the swfId, which SWFObject will replace with the object/embed element.

\n"},"swfHeight":{"!type":"string|number","!doc":"

The height of the embedded SWF movie inside the component.

\n\n

Defaults to \"100%\" so that the movie matches the height of the component.

\n"},"swfWidth":{"!type":"string|number","!doc":"

The width of the embedded SWF movie inside the component.

\n\n

Defaults to \"100%\" so that the movie matches the width of the component.

\n"},"url":{"!type":"string","!doc":"

The URL of the SWF file to include.

\n"},"wmode":{"!type":"string","!doc":"

The wmode of the flash object. This can be used to control layering.\nSet to 'transparent' to ignore the backgroundColor and make the background of the Flash\nmovie transparent.

\n"},"swf":{"!type":"+Ext.Element","!doc":"

A reference to the object or embed element into which the SWF file is loaded. Only\npopulated after the component is rendered and the SWF has been successfully embedded.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"getSwfId":{"!type":"fn() -> !this","!doc":"

Retrieves the id of the SWF object/embed element.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onFailure":{"!type":"fn() -> !this"},"onSuccess":{"!type":"fn() -> !this"},"swfCallback":{"!type":"fn(e: ?) -> !this","!doc":"

The callback method for handling an embedding success or failure by SWFObject

\n"},"failure":{"!type":"fn(this: +Ext.flash.Component, eOpts: ?)","!doc":"

Fired when the Flash movie embedding fails

\n"},"success":{"!type":"fn(this: +Ext.flash.Component, eOpts: ?)","!doc":"

Fired when the Flash movie has been successfully embedded

\n"}},"EXPRESS_INSTALL_URL":{"!type":"string","!doc":"

The url for installing flash if it doesn't exist. This should be set to a local resource.\nSee http://www.adobe.com/devnet/flashplayer/articles/express_install.html for details.

\n"}}},"form":{"Basic":{"!doc":"

Provides input field management, validation, submission, and form loading services for the collection\nof Field instances within a Ext.container.Container. It is recommended\nthat you use a Ext.form.Panel as the form container, as that has logic to automatically\nhook up an instance of Ext.form.Basic (plus other conveniences related to field configuration.)

\n\n

Form Actions

\n\n

The Basic class delegates the handling of form loads and submits to instances of Ext.form.action.Action.\nSee the various Action implementations for specific details of each one's functionality, as well as the\ndocumentation for doAction which details the configuration options that can be specified in\neach action call.

\n\n

The default submit Action is Ext.form.action.Submit, which uses an Ajax request to submit the\nform's values to a configured URL. To enable normal browser submission of an Ext form, use the\nstandardSubmit config option.

\n\n

File uploads

\n\n

File uploads are not performed using normal 'Ajax' techniques; see the description for\nhasUpload for details. If you're using file uploads you should read the method description.

\n\n

Example usage:

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Basic Form',\n    renderTo: Ext.getBody(),\n    bodyPadding: 5,\n    width: 350,\n\n    // Any configuration items here will be automatically passed along to\n    // the Ext.form.Basic instance when it gets created.\n\n    // The form will submit an AJAX request to this URL when submitted\n    url: 'save-form.php',\n\n    items: [{\n        xtype: 'textfield',\n        fieldLabel: 'Field',\n        name: 'theField'\n    }],\n\n    buttons: [{\n        text: 'Submit',\n        handler: function() {\n            // The getForm() method returns the Ext.form.Basic instance:\n            var form = this.up('form').getForm();\n            if (form.isValid()) {\n                // Submit the Ajax request and handle the response\n                form.submit({\n                    success: function(form, action) {\n                       Ext.Msg.alert('Success', action.result.message);\n                    },\n                    failure: function(form, action) {\n                        Ext.Msg.alert('Failed', action.result ? action.result.message : 'No response');\n                    }\n                });\n            }\n        }\n    }]\n});\n
\n","!type":"fn(owner: +Ext.container.Container, config: Ext_form_Basic_cfg)","prototype":{"!proto":"Ext.util.Observable.prototype","api":{"!type":"?","!doc":"

If specified, load and submit actions will be handled with DirectLoad\nand DirectSubmit. Methods which have been imported by\nExt.direct.Manager can be specified here to load and submit forms. API methods may also be\nspecified as strings. See Ext.data.proxy.Direct.directFn. Such as the following:

\n\n
api: {\n    load: App.ss.MyProfile.load,\n    submit: App.ss.MyProfile.submit\n}\n
\n\n

Load actions can use paramOrder or paramsAsHash to customize how the load method\nis invoked. Submit actions will always use a standard form submit. The formHandler configuration\n(see Ext.direct.RemotingProvider#action) must be set on the associated server-side method which has\nbeen imported by Ext.direct.Manager.

\n"},"baseParams":{"!type":"?","!doc":"

Parameters to pass with all requests. e.g. baseParams: {id: '123', foo: 'bar'}.

\n\n

Parameters are encoded as standard HTTP parameters using Ext.Object.toQueryString.

\n"},"errorReader":{"!type":"?|+Ext.data.reader.Reader","!doc":"

An Ext.data.reader.Reader (e.g. Ext.data.reader.Xml) instance or\nconfiguration to be used to read field error messages returned from 'submit' actions.\nThis is optional as there is built-in support for processing JSON responses.

\n\n

The Records which provide messages for the invalid Fields must use the\nField name (or id) as the Record ID, and must contain a field called 'msg'\nwhich contains the error message.

\n\n

The errorReader does not have to be a full-blown implementation of a\nReader. It simply needs to implement a read(xhr) function\nwhich returns an Array of Records in an object with the following\nstructure:

\n\n
{\n    records: recordArray\n}\n
\n"},"jsonSubmit":{"!type":"bool","!doc":"

If set to true, the field values are sent as JSON in the request body.\nAll of the field values, plus any additional params configured via baseParams\nand/or the options to submit, will be included in the values POSTed in the body of the request.

\n"},"method":{"!type":"string","!doc":"

The request method to use (GET or POST) for form actions if one isn't supplied in the action options.

\n"},"paramOrder":{"!type":"string|[string]","!doc":"

A list of params to be executed server side. Only used for the api load\nconfiguration.

\n\n

Specify the params in the order in which they must be executed on the\nserver-side as either (1) an Array of String values, or (2) a String of params\ndelimited by either whitespace, comma, or pipe. For example,\nany of the following would be acceptable:

\n\n
paramOrder: ['param1','param2','param3']\nparamOrder: 'param1 param2 param3'\nparamOrder: 'param1,param2,param3'\nparamOrder: 'param1|param2|param'\n
\n"},"paramsAsHash":{"!type":"bool","!doc":"

Only used for the api load configuration. If true, parameters will be sent as a\nsingle hash collection of named arguments. Providing a paramOrder nullifies this\nconfiguration.

\n"},"reader":{"!type":"?|+Ext.data.reader.Reader","!doc":"

An Ext.data.reader.Reader (e.g. Ext.data.reader.Xml) instance or\nconfiguration to be used to read data when executing 'load' actions. This\nis optional as there is built-in support for processing JSON responses.

\n"},"standardSubmit":{"!type":"bool","!doc":"

If set to true, a standard HTML form submit is used instead of a XHR (Ajax) style form submission.\nAll of the field values, plus any additional params configured via baseParams\nand/or the options to submit, will be included in the values submitted in the form.

\n"},"timeout":{"!type":"number","!doc":"

Timeout for form actions in seconds.

\n"},"trackResetOnLoad":{"!type":"bool","!doc":"

If set to true, reset() resets to the last loaded or setValues() data instead of\nwhen the form was first created.

\n"},"url":{"!type":"string","!doc":"

The URL to use for form actions if one isn't supplied in the\ndoAction options.

\n"},"waitMsgTarget":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

By default wait messages are displayed with Ext.MessageBox.wait. You can target a specific\nelement by passing it or its id or mask the form itself by passing in true.

\n"},"waitTitle":{"!type":"string","!doc":"

The default title to show for the waiting message box

\n"},"owner":{"!type":"+Ext.container.Container","!doc":"

The container component to which this BasicForm is attached.

\n"},"wasDirty":{"!type":"bool","!doc":"

Private

\n"},"afterAction":{"!type":"fn(action: +Ext.form.action.Action, success: bool) -> !this","!doc":"

Called after an action is performed via doAction.

\n"},"applyIfToFields":{"!type":"fn(obj: ?) -> +Ext.form.Basic","!doc":"

Calls Ext.applyIf for all field in this form with the passed object.

\n"},"applyToFields":{"!type":"fn(obj: ?) -> +Ext.form.Basic","!doc":"

Calls Ext.apply for all fields in this form with the passed object.

\n"},"beforeAction":{"!type":"fn(action: +Ext.form.action.Action) -> !this","!doc":"

Called before an action is performed via doAction.

\n"},"checkDirty":{"!type":"fn() -> !this","!doc":"

Check whether the dirty state of the entire form has changed since it was last checked, and\nif so fire the dirtychange event. This is automatically invoked\nwhen an individual field's dirty state changes.

\n"},"checkDirtyDelay":{"!type":"fn() -> !this"},"checkValidity":{"!type":"fn() -> !this","!doc":"

Check whether the validity of the entire form has changed since it was last checked, and\nif so fire the validitychange event. This is automatically invoked\nwhen an individual field's validity changes.

\n"},"checkValidityDelay":{"!type":"fn() -> !this"},"clearInvalid":{"!type":"fn() -> +Ext.form.Basic","!doc":"

Clears all invalid field messages in this form.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys this object.

\n"},"doAction":{"!type":"fn(action: string|+Ext.form.action.Action, options?: ?) -> +Ext.form.Basic","!doc":"

Performs a predefined action (an implementation of Ext.form.action.Action) to perform application-\nspecific processing.

\n"},"findField":{"!type":"fn(id: string) -> +Ext.form.field.Field","!doc":"

Find a specific Ext.form.field.Field in this form by id or name.

\n"},"getBoundItems":{"!type":"fn() -> +Ext.util.MixedCollection","!doc":"

Finds and returns the set of all items bound to fields inside this form

\n"},"getFieldValues":{"!type":"fn(dirtyOnly?: bool) -> ?","!doc":"

Retrieves the fields in the form as a set of key/value pairs, using their\ngetModelData() method to collect the values.\nIf multiple fields return values under the same name those values will be combined into an Array.\nThis is similar to getValues except that this method collects type-specific data values\n(e.g. Date objects for date fields) while getValues returns only String values for submission.

\n"},"getFields":{"!type":"fn() -> +Ext.util.MixedCollection","!doc":"

Return all the Ext.form.field.Field components in the owner container.

\n"},"getRecord":{"!type":"fn() -> +Ext.data.Model","!doc":"

Returns the last Ext.data.Model instance that was loaded via loadRecord

\n"},"getValues":{"!type":"fn(asString?: bool, dirtyOnly?: bool, includeEmptyText?: bool, useDataValues?: bool) -> string|?","!doc":"

Retrieves the fields in the form as a set of key/value pairs, using their\ngetSubmitData() method to collect the values.\nIf multiple fields return values under the same name those values will be combined into an Array.\nThis is similar to getFieldValues except that this method\ncollects only String values for submission, while getFieldValues collects type-specific data\nvalues (e.g. Date objects for date fields.)

\n"},"hasInvalidField":{"!type":"fn() -> !this","!doc":"

Returns true if the form contains any invalid fields. No fields will be marked as invalid\nas a result of calling this; to trigger marking of fields use isValid instead.

\n"},"hasUpload":{"!type":"fn() -> bool","!doc":"

Returns true if the form contains a file upload field. This is used to determine the method for submitting the\nform: File uploads are not performed using normal 'Ajax' techniques, that is they are not performed using\nXMLHttpRequests. Instead a hidden <form> element containing all the fields is created temporarily and submitted\nwith its target set to refer to a dynamically generated, hidden <iframe> which is inserted into the document\nbut removed after the return data has been gathered.

\n\n

The server response is parsed by the browser to create the document for the IFRAME. If the server is using JSON\nto send the return object, then the Content-Type header must be set to \"text/html\" in order to tell the\nbrowser to insert the text unchanged into the document body.

\n\n

Characters which are significant to an HTML parser must be sent as HTML entities, so encode \"<\" as \"&lt;\",\n\"&\" as \"&amp;\" etc.

\n\n

The response text is retrieved from the document, and a fake XMLHttpRequest object is created containing a\nresponseText property in order to conform to the requirements of event handlers and callbacks.

\n\n

Be aware that file upload packets are sent with the content type multipart/form and some server technologies\n(notably JEE) may require some custom processing in order to retrieve parameter names and parameter values from\nthe packet content.

\n"},"initialize":{"!type":"fn() -> !this","!doc":"

Do any post layout initialization

\n"},"isDirty":{"!type":"fn() -> bool","!doc":"

Returns true if any fields in this form have changed from their original values.

\n\n

Note that if this BasicForm was configured with trackResetOnLoad then the Fields' original values are updated when the values are\nloaded by setValues or loadRecord.

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Returns true if client-side validation on the form is successful. Any invalid fields will be\nmarked as invalid. If you only want to determine overall form validity without marking anything,\nuse hasInvalidField instead.

\n"},"load":{"!type":"fn(options: ?) -> +Ext.form.Basic","!doc":"

Shortcut to do a load action.

\n"},"loadRecord":{"!type":"fn(record: +Ext.data.Model) -> +Ext.form.Basic","!doc":"

Loads an Ext.data.Model into this form by calling setValues with the\nrecord data.\nSee also trackResetOnLoad.

\n"},"markInvalid":{"!type":"fn(errors: ?|[?]|+Ext.data.Errors) -> +Ext.form.Basic","!doc":"

Mark fields in this form invalid in bulk.

\n"},"onFieldAdd":{"!type":"fn(field: ?) -> !this"},"onFieldRemove":{"!type":"fn(field: ?) -> !this"},"onValidityChange":{"!type":"fn(valid: bool) -> !this","!doc":"

Handle changes in the form's validity. If there are any sub components with\nformBind=true then they are enabled/disabled based on the new validity.

\n"},"reset":{"!type":"fn(resetRecord?: bool) -> +Ext.form.Basic","!doc":"

Resets all fields in this form. By default, any record bound by loadRecord\nwill be retained.

\n"},"setValues":{"!type":"fn(values: ?|[?]) -> +Ext.form.Basic","!doc":"

Set values for fields in this form in bulk.

\n"},"submit":{"!type":"fn(options: ?) -> +Ext.form.Basic","!doc":"

Shortcut to do a submit action. This will use the\nAJAX submit action by default. If the standardSubmit config\nis enabled it will use a standard form element to submit, or if the api config is present\nit will use the Ext.direct.Direct submit action.

\n\n

The following code:

\n\n
myFormPanel.getForm().submit({\n    clientValidation: true,\n    url: 'updateConsignment.php',\n    params: {\n        newStatus: 'delivered'\n    },\n    success: function(form, action) {\n       Ext.Msg.alert('Success', action.result.msg);\n    },\n    failure: function(form, action) {\n        switch (action.failureType) {\n            case Ext.form.action.Action.CLIENT_INVALID:\n                Ext.Msg.alert('Failure', 'Form fields may not be submitted with invalid values');\n                break;\n            case Ext.form.action.Action.CONNECT_FAILURE:\n                Ext.Msg.alert('Failure', 'Ajax communication failed');\n                break;\n            case Ext.form.action.Action.SERVER_INVALID:\n               Ext.Msg.alert('Failure', action.result.msg);\n       }\n    }\n});\n
\n\n

would process the following server response for a successful submission:

\n\n
{\n    \"success\":true, // note this is Boolean, not string\n    \"msg\":\"Consignment updated\"\n}\n
\n\n

and the following server response for a failed submission:

\n\n
{\n    \"success\":false, // note this is Boolean, not string\n    \"msg\":\"You do not have permission to perform this operation\"\n}\n
\n"},"updateRecord":{"!type":"fn(record?: +Ext.data.Model) -> +Ext.form.Basic","!doc":"

Persists the values in this form into the passed Ext.data.Model object in a beginEdit/endEdit block.\nIf the record is not specified, it will attempt to update (if it exists) the record provided to loadRecord.

\n"},"actioncomplete":{"!type":"fn(this: +Ext.form.Basic, action: +Ext.form.action.Action, eOpts: ?)","!doc":"

Fires when an action is completed.

\n"},"actionfailed":{"!type":"fn(this: +Ext.form.Basic, action: +Ext.form.action.Action, eOpts: ?)","!doc":"

Fires when an action fails.

\n"},"beforeaction":{"!type":"fn(this: +Ext.form.Basic, action: +Ext.form.action.Action, eOpts: ?)","!doc":"

Fires before any action is performed. Return false to cancel the action.

\n"},"dirtychange":{"!type":"fn(this: +Ext.form.Basic, dirty: bool, eOpts: ?)","!doc":"

Fires when the dirty state of the entire form changes.

\n"},"validitychange":{"!type":"fn(this: +Ext.form.Basic, valid: bool, eOpts: ?)","!doc":"

Fires when the validity of the entire form changes.

\n"}}},"CheckboxGroup":{"!doc":"

A field container which has a specialized layout for arranging\nExt.form.field.Checkbox controls into columns, and provides convenience\nExt.form.field.Field methods for getting, setting,\nand validating the group of checkboxes as a whole.

\n\n

Validation

\n\n

Individual checkbox fields themselves have no default validation behavior, but\nsometimes you want to require a user to select at least one of a group of checkboxes. CheckboxGroup\nallows this by setting the config allowBlank:false; when the user does not check at\nleast one of the checkboxes, the entire group will be highlighted as invalid and the\nerror message will be displayed according to the msgTarget config.

\n\n

Layout

\n\n

The default layout for CheckboxGroup makes it easy to arrange the checkboxes into\ncolumns; see the columns and vertical config documentation for details. You may also\nuse a completely different layout by setting the layout to one of the other supported layout\ntypes; for instance you may wish to use a custom arrangement of hbox and vbox containers. In that case\nthe checkbox components at any depth will still be managed by the CheckboxGroup's validation.

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Checkbox Group',\n    width: 300,\n    height: 125,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items:[{\n        xtype: 'checkboxgroup',\n        fieldLabel: 'Two Columns',\n        // Arrange checkboxes into two columns, distributed vertically\n        columns: 2,\n        vertical: true,\n        items: [\n            { boxLabel: 'Item 1', name: 'rb', inputValue: '1' },\n            { boxLabel: 'Item 2', name: 'rb', inputValue: '2', checked: true },\n            { boxLabel: 'Item 3', name: 'rb', inputValue: '3' },\n            { boxLabel: 'Item 4', name: 'rb', inputValue: '4' },\n            { boxLabel: 'Item 5', name: 'rb', inputValue: '5' },\n            { boxLabel: 'Item 6', name: 'rb', inputValue: '6' }\n        ]\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_CheckboxGroup_cfg)","prototype":{"!proto":"Ext.form.FieldContainer.prototype","allowBlank":{"!type":"bool","!doc":"

False to validate that at least one item in the group is checked. If no items are selected at\nvalidation time, blankText will be used as the error text.

\n"},"blankText":{"!type":"string","!doc":"

Error text to display if the allowBlank validation fails

\n"},"columns":{"!type":"string|number|[number]","!doc":"

Specifies the number of columns to use when displaying grouped checkbox/radio controls using automatic layout.\nThis config can take several types of values:

\n\n\n\n"},"componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"defaultType":{"!type":"string","!doc":"

private

\n"},"items":{"!type":"[+Ext.form.field.Checkbox]|[?]","!doc":"

An Array of Checkboxes or Checkbox config objects to arrange in the group.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

private

\n"},"name":{"!type":"string"},"vertical":{"!type":"bool","!doc":"

True to distribute contained controls across columns, completely filling each column top to bottom before\nstarting on the next column. The number of controls in each column will be automatically calculated to keep\ncolumns as even as possible. The default value is false, so that controls will be added to columns one at a time,\ncompletely filling each row left to right before starting on the next row.

\n"},"extraFieldBodyCls":{"!type":"string","!doc":"

private

\n"},"groupCls":{"!type":"string","!doc":"

private

\n"},"eachBox":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Convenience function which calls the given function for every checkbox in the group

\n"},"getBoxes":{"!type":"fn(query?: string) -> !this","!doc":"

Returns all checkbox components within the container

\n"},"getChecked":{"!type":"fn() -> [+Ext.form.field.Checkbox]","!doc":"

Returns an Array of all checkboxes in the container which are currently checked

\n"},"getErrors":{"!type":"fn() -> [string]","!doc":"

Runs CheckboxGroup's validations and returns an array of any errors. The only error by default is if allowBlank\nis set to true and no items are checked.

\n"},"getModelData":{"!type":"fn() -> ?","!doc":"

Don't return any data for the model; the form will get the info from the individual checkboxes themselves.

\n"},"getSubmitData":{"!type":"fn() -> ?","!doc":"

Don't return any data for submit; the form will get the info from the individual checkboxes themselves.

\n"},"getValue":{"!type":"fn() -> !this","!doc":"

Returns an object containing the values of all checked checkboxes within the group. Each key-value pair in the\nobject corresponds to a checkbox name. If there is only one checked checkbox\nwith a particular name, the value of that pair will be the String inputValue of that checkbox. If there are multiple checked checkboxes with that name, the value of that pair\nwill be an Array of the selected inputValues.

\n\n

The object format returned from this method can also be passed directly to the setValue method.

\n\n

NOTE: In Ext 3, this method returned an array of Checkbox components; this was changed to make it more consistent\nwith other field components and with the setValue argument signature. If you need the old behavior in\nExt 4+, use the getChecked method instead.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initValue":{"!type":"fn() -> !this","!doc":"

Initializes the field's value based on the initial config. If the value config is specified then we use\nthat to set the value; otherwise we initialize the originalValue by querying the values of all sub-checkboxes\nafter they have been initialized.

\n"},"isDirty":{"!type":"fn() -> bool","!doc":"

private override

\n"},"isEqual":{"!type":"fn(value1: ?, value2: ?) -> bool","!doc":"

private override - the group value is a complex object, compare using object serialization

\n"},"onAdd":{"!type":"fn(field: ?) -> !this","!doc":"

When a checkbox is added to the group, monitor it for changes

\n"},"onRemove":{"!type":"fn(item: ?) -> !this","!doc":"

Called when a Ext.form.Labelable instance is removed from the container's subtree.

\n"},"reset":{"!type":"fn() -> !this","!doc":"

Resets the checked state of all checkboxes in the group to their originally\nloaded values and clears any validation messages.\nSee Ext.form.Basic.trackResetOnLoad

\n"},"resetOriginalValue":{"!type":"fn() -> !this","!doc":"

Resets the field's originalValue property so it matches the current value. This is\ncalled by Ext.form.Basic.setValues if the form's\ntrackResetOnLoad property is set to true.

\n"},"setReadOnly":{"!type":"fn(readOnly: ?) -> !this","!doc":"

private override

\n"},"setValue":{"!type":"fn(value: ?) -> +Ext.form.CheckboxGroup","!doc":"

Sets the value(s) of all checkboxes in the group. The expected format is an Object of name-value pairs\ncorresponding to the names of the checkboxes in the group. Each pair can have either a single or multiple values:

\n\n\n\n\n

If a checkbox's name is not in the mapping at all, it will be unchecked.

\n\n

An example:

\n\n
var myCheckboxGroup = new Ext.form.CheckboxGroup({\n    columns: 3,\n    items: [{\n        name: 'cb1',\n        boxLabel: 'Single 1'\n    }, {\n        name: 'cb2',\n        boxLabel: 'Single 2'\n    }, {\n        name: 'cb3',\n        boxLabel: 'Single 3'\n    }, {\n        name: 'cbGroup',\n        boxLabel: 'Grouped 1'\n        inputValue: 'value1'\n    }, {\n        name: 'cbGroup',\n        boxLabel: 'Grouped 2'\n        inputValue: 'value2'\n    }, {\n        name: 'cbGroup',\n        boxLabel: 'Grouped 3'\n        inputValue: 'value3'\n    }]\n});\n\nmyCheckboxGroup.setValue({\n    cb1: true,\n    cb3: false,\n    cbGroup: ['value1', 'value3']\n});\n
\n\n

The above code will cause the checkbox named 'cb1' to be checked, as well as the first and third checkboxes named\n'cbGroup'. The other three checkboxes will be unchecked.

\n"},"validate":{"!type":"fn() -> bool","!doc":"

Returns whether or not the field value is currently valid by validating the field's current\nvalue, and fires the validitychange event if the field's validity has changed since the last validation.\nNote: disabled fields are always treated as valid.

\n\n

Custom implementations of this method are allowed to have side-effects such as triggering error message display.\nTo validate without side-effects, use isValid.

\n"}}},"field":{"Field":{"prototype":{"disabled":{"!type":"bool","!doc":"

True to disable the field. Disabled Fields will not be submitted.

\n"},"submitValue":{"!type":"bool","!doc":"

Setting this to false will prevent the field from being submitted even when it is\nnot disabled.

\n"},"validateOnChange":{"!type":"bool","!doc":"

Specifies whether this field should be validated immediately whenever a change in its value is detected.\nIf the validation results in a change in the field's validity, a validitychange event will be\nfired. This allows the field to show feedback about the validity of its contents immediately as the user is\ntyping.

\n\n

When set to false, feedback will not be immediate. However the form will still be validated before submitting if\nthe clientValidation option to Ext.form.Basic.doAction is enabled, or if the field or form are validated\nmanually.

\n\n

See also Ext.form.field.Base.checkChangeEvents for controlling how changes to the field's value are\ndetected.

\n"},"value":{"!type":"?","!doc":"

A value to initialize this field with.

\n"},"isFormField":{"!type":"bool","!doc":"

Flag denoting that this component is a Field. Always true.

\n"},"originalValue":{"!type":"?","!doc":"

The original value of the field as configured in the value configuration, or as loaded by the last\nform load operation if the form's trackResetOnLoad setting is true.

\n"},"suspendCheckChange":{"!type":"number"},"batchChanges":{"!type":"fn(fn: ?) -> !this","!doc":"

A utility for grouping a set of modifications which may trigger value changes into a single transaction, to\nprevent excessive firing of change events. This is useful for instance if the field has sub-fields which\nare being updated as a group; you don't want the container field to check its own changed state for each subfield\nchange.

\n"},"beforeReset":{"!type":"fn() -> !this","!doc":"

Template method before a field is reset.

\n"},"checkChange":{"!type":"fn() -> !this","!doc":"

Checks whether the value of the field has changed since the last time it was checked.\nIf the value has changed, it:

\n\n
    \n
  1. Fires the change event,
  2. \n
  3. Performs validation if the validateOnChange config is enabled, firing the\nvaliditychange event if the validity has changed, and
  4. \n
  5. Checks the dirty state of the field and fires the dirtychange event\nif it has changed.
  6. \n
\n\n"},"checkDirty":{"!type":"fn() -> !this","!doc":"

Checks the isDirty state of the field and if it has changed since the last time it was checked,\nfires the dirtychange event.

\n"},"clearInvalid":{"!type":"fn() -> !this","!doc":"

Clear any invalid styles/messages for this field. Components using this mixin should implement this method to\nupdate the components rendering to clear any existing messages.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return true\nif the value does not pass validation. So simply clearing a field's errors will not necessarily allow\nsubmission of forms submitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"extractFileInput":{"!type":"fn() -> +HTMLElement","!doc":"

Only relevant if the instance's isFileUpload method returns true. Returns a reference to the file input\nDOM element holding the user's selected file. The input will be appended into the submission form and will not be\nreturned, so this method should also create a replacement.

\n"},"getName":{"!type":"fn() -> string","!doc":"

Returns the name attribute of the field. This is used as the parameter name\nwhen including the field value in a form submit().

\n"},"initField":{"!type":"fn() -> !this","!doc":"

Initializes this Field mixin on the current instance. Components using this mixin should call this method during\ntheir own initialization process.

\n"},"isEqualAsString":{"!type":"fn(value1: ?, value2: ?) -> bool","!doc":"

Returns whether two values are logically equal.\nSimilar to isEqual, however null or undefined values will be treated as empty strings.

\n"},"isFileUpload":{"!type":"fn() -> bool","!doc":"

Returns whether this Field is a file upload field; if it returns true, forms will use special techniques for\nsubmitting the form via AJAX. See Ext.form.Basic.hasUpload for details. If\nthis returns true, the extractFileInput method must also be implemented to return the corresponding file\ninput element.

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Returns whether or not the field value is currently valid by validating the field's current\nvalue. The validitychange event will not be fired; use validate instead if you want the event\nto fire. Note: disabled fields are always treated as valid.

\n\n

Implementations are encouraged to ensure that this method does not have side-effects such as triggering error\nmessage display.

\n"},"markInvalid":{"!type":"fn(errors: string|[string]) -> !this","!doc":"

Associate one or more error messages with this field. Components using this mixin should implement this method to\nupdate the component's rendering to display the messages.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return false\nif the value does pass validation. So simply marking a Field as invalid will not prevent submission of forms\nsubmitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"onChange":{"!type":"fn(newVal: ?, oldVal: ?) -> !this","!doc":"

Called when the field's value changes. Performs validation if the validateOnChange\nconfig is enabled, and invokes the dirty check.

\n"},"onDirtyChange":{"!type":"fn(isDirty: bool) -> !this","!doc":"

Called when the field's dirty state changes.

\n"},"transformOriginalValue":{"!type":"fn(value: ?) -> ?","!doc":"

Allows for any necessary modifications before the original\nvalue is set

\n"},"change":{"!type":"fn(this: +Ext.form.field.Field, newValue: ?, oldValue: ?, eOpts: ?)","!doc":"

Fires when the value of a field is changed via the setValue method.

\n"},"dirtychange":{"!type":"fn(this: +Ext.form.field.Field, isDirty: bool, eOpts: ?)","!doc":"

Fires when a change in the field's isDirty state is detected.

\n"},"validitychange":{"!type":"fn(this: +Ext.form.field.Field, isValid: bool, eOpts: ?)","!doc":"

Fires when a change in the field's validity is detected.

\n"},"getErrors":{"!type":"fn(value: ?) -> [string]","!doc":"

Runs this field's validators and returns an array of error messages for any validation failures. This is called\ninternally during validation and would not usually need to be used manually.

\n\n

Each subclass should override or augment the return value to provide their own errors.

\n"},"getModelData":{"!type":"fn() -> ?","!doc":"

Returns the value(s) that should be saved to the Ext.data.Model instance for this field, when Ext.form.Basic.updateRecord is called. Typically this will be an object with a single name-value pair, the name\nbeing this field's name and the value being its current data value. More advanced field\nimplementations may return more than one name-value pair. The returned values will be saved to the corresponding\nfield names in the Model.

\n\n

Note that the values returned from this method are not guaranteed to have been successfully validated.

\n"},"initValue":{"!type":"fn() -> !this","!doc":"

Initializes the field's value based on the initial config.

\n"},"isDirty":{"!type":"fn() -> bool","!doc":"

Returns true if the value of this Field has been changed from its originalValue.\nWill always return false if the field is disabled.

\n\n

Note that if the owning form was configured with\ntrackResetOnLoad then the originalValue is updated when\nthe values are loaded by Ext.form.Basic.setValues.

\n"},"isEqual":{"!type":"fn(value1: ?, value2: ?) -> bool","!doc":"

Returns whether two field values are logically equal. Field implementations may override this\nto provide custom comparison logic appropriate for the particular field's data type.

\n"},"reset":{"!type":"fn() -> !this","!doc":"

Resets the current field value to the originally loaded value and clears any validation messages. See Ext.form.Basic.trackResetOnLoad

\n"},"resetOriginalValue":{"!type":"fn() -> !this","!doc":"

Resets the field's originalValue property so it matches the current value. This is\ncalled by Ext.form.Basic.setValues if the form's\ntrackResetOnLoad property is set to true.

\n"},"validate":{"!type":"fn() -> bool","!doc":"

Returns whether or not the field value is currently valid by validating the field's current\nvalue, and fires the validitychange event if the field's validity has changed since the last validation.\nNote: disabled fields are always treated as valid.

\n\n

Custom implementations of this method are allowed to have side-effects such as triggering error message display.\nTo validate without side-effects, use isValid.

\n"},"name":{"!type":"string","!doc":"

The name of the field. By default this is used as the parameter name when including the\nfield value in a form submit(). To prevent the field from\nbeing included in the form submit, set submitValue to false.

\n"},"getSubmitData":{"!type":"fn() -> ?","!doc":"

Returns the parameter(s) that would be included in a standard form submit for this field. Typically this will be\nan object with a single name-value pair, the name being this field's name and the value being\nits current stringified value. More advanced field implementations may return more than one name-value pair.

\n\n

Note that the values returned from this method are not guaranteed to have been successfully validated.

\n"},"getValue":{"!type":"fn() -> ?","!doc":"

Returns the current data value of the field. The type of value returned is particular to the type of the\nparticular field (e.g. a Date object for Ext.form.field.Date).

\n"},"setValue":{"!type":"fn(value: ?) -> +Ext.form.field.Field","!doc":"

Sets a data value into the field and runs the change detection and validation.

\n"}},"!doc":"

This mixin provides a common interface for the logical behavior and state of form fields, including:

\n\n\n\n\n

NOTE: When implementing custom fields, it is most likely that you will want to extend the Ext.form.field.Base\ncomponent class rather than using this mixin directly, as BaseField contains additional logic for generating an\nactual DOM complete with label and error message display and a form input field,\nplus methods that bind the Field value getters and setters to the input field's value.

\n\n

If you do want to implement this mixin directly and don't want to extend Ext.form.field.Base, then\nyou will most likely want to override the following methods with custom implementations: getValue,\nsetValue, and getErrors. Other methods may be overridden as needed but their base\nimplementations should be sufficient for common cases. You will also need to make sure that initField\nis called during the component's initialization.

\n"},"Base":{"!doc":"

Base class for form fields that provides default event handling, rendering, and other common functionality\nneeded by all form field types. Utilizes the Ext.form.field.Field mixin for value handling and validation,\nand the Ext.form.Labelable mixin to provide label and error message display.

\n\n

In most cases you will want to use a subclass, such as Ext.form.field.Text or Ext.form.field.Checkbox,\nrather than creating instances of this class directly. However if you are implementing a custom form field,\nusing this as the parent class is recommended.

\n\n

Values and Conversions

\n\n

Because Base implements the Field mixin, it has a main value that can be initialized with the\nvalue config and manipulated via the getValue and setValue methods. This main\nvalue can be one of many data types appropriate to the current field, for instance a Date\nfield would use a JavaScript Date object as its value type. However, because the field is rendered as a HTML\ninput, this value data type can not always be directly used in the rendered field.

\n\n

Therefore Base introduces the concept of a \"raw value\". This is the value of the rendered HTML input field,\nand is normally a String. The getRawValue and setRawValue methods can be used to directly\nwork with the raw value, though it is recommended to use getValue and setValue in most cases.

\n\n

Conversion back and forth between the main value and the raw value is handled by the valueToRaw and\nrawToValue methods. If you are implementing a subclass that uses a non-String value data type, you\nshould override these methods to handle the conversion.

\n\n

Rendering

\n\n

The content of the field body is defined by the fieldSubTpl XTemplate, with its argument data\ncreated by the getSubTplData method. Override this template and/or method to create custom\nfield renderings.

\n\n

Example usage:

\n\n
// A simple subclass of Base that creates a HTML5 search field. Redirects to the\n// searchUrl when the Enter key is pressed.222\nExt.define('Ext.form.SearchField', {\n    extend: 'Ext.form.field.Base',\n    alias: 'widget.searchfield',\n\n    inputType: 'search',\n\n    // Config defining the search URL\n    searchUrl: 'http://www.google.com/search?q={0}',\n\n    // Add specialkey listener\n    initComponent: function() {\n        this.callParent();\n        this.on('specialkey', this.checkEnterKey, this);\n    },\n\n    // Handle enter key presses, execute the search if the field has a value\n    checkEnterKey: function(field, e) {\n        var value = this.getValue();\n        if (e.getKey() === e.ENTER && !Ext.isEmpty(value)) {\n            location.href = Ext.String.format(this.searchUrl, value);\n        }\n    }\n});\n\nExt.create('Ext.form.Panel', {\n    title: 'Base Example',\n    bodyPadding: 5,\n    width: 250,\n\n    // Fields will be arranged vertically, stretched to full width\n    layout: 'anchor',\n    defaults: {\n        anchor: '100%'\n    },\n    items: [{\n        xtype: 'searchfield',\n        fieldLabel: 'Search',\n        name: 'query'\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Base_cfg)","prototype":{"!proto":"Ext.Component.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"checkChangeBuffer":{"!type":"number","!doc":"

Defines a timeout in milliseconds for buffering checkChangeEvents that fire in rapid succession.\nDefaults to 50 milliseconds.

\n"},"checkChangeEvents":{"!type":"[string]","!doc":"

A list of event names that will be listened for on the field's input element, which will cause\nthe field's value to be checked for changes. If a change is detected, the change event will be\nfired, followed by validation if the validateOnChange option is enabled.

\n\n

Defaults to ['change', 'propertychange', 'keyup'] in Internet Explorer, and ['change', 'input', 'textInput', 'keyup',\n'dragdrop'] in other browsers. This catches all the ways that field values can be changed in most supported\nbrowsers; the only known exceptions at the time of writing are:

\n\n\n\n\n

If you need to guarantee on-the-fly change notifications including these edge cases, you can call the\ncheckChange method on a repeating interval, e.g. using Ext.TaskManager, or if the field is within\na Ext.form.Panel, you can use the FormPanel's Ext.form.Panel.pollForChanges configuration to set up\nsuch a task automatically.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"dirtyCls":{"!type":"string","!doc":"

The CSS class to use when the field value is dirty.

\n"},"fieldCls":{"!type":"string","!doc":"

The default CSS class for the field input

\n"},"fieldStyle":{"!type":"string","!doc":"

Optional CSS style(s) to be applied to the field input element. Should be a valid argument to\nExt.Element.applyStyles. Defaults to undefined. See also the setFieldStyle method for changing\nthe style after initialization.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

The content of the field body is defined by this config option.

\n"},"focusCls":{"!type":"string","!doc":"

The CSS class to use when the field receives focus

\n"},"inputAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the input element (as attributes). If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"inputId":{"!type":"string","!doc":"

The id that will be given to the generated input DOM element. Defaults to an automatically generated id. If you\nconfigure this manually, you must make sure it is unique in the document.

\n"},"inputType":{"!type":"string","!doc":"

The type attribute for input fields -- e.g. radio, text, password, file. The extended types\nsupported by HTML5 inputs (url, email, etc.) may also be used, though using them will cause older browsers to\nfall back to 'text'.

\n\n

The type 'password' must be used to render that field type currently -- there is no separate Ext component for\nthat. You can use Ext.form.field.File which creates a custom-rendered file upload field, but if you want\na plain unstyled file input you can use a Base with inputType:'file'.

\n"},"invalidText":{"!type":"string","!doc":"

The error text to use when marking a field invalid and no message is provided

\n"},"name":{"!type":"string","!doc":"

The name of the field. This is used as the parameter name when including the field value\nin a form submit(). If no name is configured, it falls back to the inputId.\nTo prevent the field from being included in the form submit, set submitValue to false.

\n"},"readOnly":{"!type":"bool","!doc":"

true to mark the field as readOnly in HTML.

\n\n

Note: this only sets the element's readOnly DOM attribute. Setting readOnly=true, for example, will not\ndisable triggering a ComboBox or Date; it gives you the option of forcing the user to choose via the trigger\nwithout typing in the text box. To hide the trigger use hideTrigger.

\n"},"readOnlyCls":{"!type":"string","!doc":"

The CSS class applied to the component's main element when it is readOnly.

\n"},"tabIndex":{"!type":"number","!doc":"

The tabIndex for this field. Note this only applies to fields that are rendered, not those which are built via\napplyTo

\n"},"validateOnBlur":{"!type":"bool","!doc":"

Whether the field should validate when it loses focus. This will cause fields to be validated\nas the user steps through the fields in the form regardless of whether they are making changes to those fields\nalong the way. See also validateOnChange.

\n"},"hasFocus":{"!type":"bool","!doc":"

private

\n"},"inputEl":{"!type":"+Ext.Element","!doc":"

The input Element for this Field. Only available after the field has been rendered.

\n"},"maskOnDisable":{"!type":"bool","!doc":"

This is an internal flag that you use when creating custom components. By default this is set to true which means\nthat every component gets a mask when it's disabled. Components like FieldContainer, FieldSet, Field, Button, Tab\noverride this property to false since they want to implement custom disable logic.

\n"},"stretchInputElFixed":{"!type":"bool","!doc":"

Instructs the layout to stretch the inputEl to 100% width when laying\nout under fixed conditions. Defaults to true for all fields except check/radio\nDoesn't seem worth it to introduce a whole new layout class just for this flag

\n"},"subTplInsertions":{"!type":"[?]"},"applyRenderSelectors":{"!type":"fn() -> !this","!doc":"

Sets references to elements inside the component. This applies renderSelectors\nas well as childEls.

\n"},"clearInvalid":{"!type":"fn() -> !this","!doc":"

Clear any invalid styles/messages for this field.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return true\nif the value does not pass validation. So simply clearing a field's errors will not necessarily allow\nsubmission of forms submitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"doComponentLayout":{"!type":"fn() -> +Ext.container.Container","!doc":"

This method needs to be called whenever you change something on this component that requires the Component's\nlayout to be recalculated.

\n"},"fireKey":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"getActionEl":{"!type":"fn() -> !this","!doc":"

Deprecate 5.0

\n"},"getFieldStyle":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

Returns the focus holder element associated with this Component. At the Component base class level, this function returns undefined.

\n\n

Subclasses which use embedded focusable elements (such as Window, Field and Button) should override this\nfor use by the focus method.

\n\n

Containers which need to participate in the FocusManager's navigation and Container focusing scheme also\nneed to return a focusEl, although focus is only listened for in this case if the FocusManager is enabled.

\n"},"getInputId":{"!type":"fn() -> !this","!doc":"

Returns the input id for this field. If none was specified via the inputId config, then an id will be\nautomatically generated.

\n"},"getRawValue":{"!type":"fn() -> string","!doc":"

Returns the raw value of the field, without performing any normalization, conversion, or validation. To get a\nnormalized and converted value see getValue.

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

Creates and returns the data object to be used when rendering the fieldSubTpl.

\n"},"getSubTplMarkup":{"!type":"fn() -> !this","!doc":"

Gets the markup to be inserted into the outer template's bodyEl. For fields this is the actual input element.

\n"},"getSubmitData":{"!type":"fn() -> ?","!doc":"

private override to use getSubmitValue() as a convenience

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the value that would be included in a standard form submit for this field. This will be combined with the\nfield's name to form a name=value pair in the submitted parameters. If an empty string is\nreturned then just the name= will be submitted; if null is returned then nothing will be submitted.

\n\n

Note that the value returned will have been processed but may or may not have been\nsuccessfully validated.

\n"},"getValue":{"!type":"fn() -> ?","!doc":"

Returns the current data value of the field. The type of value returned is particular to the type of the\nparticular field (e.g. a Date object for Ext.form.field.Date), as the result of calling rawToValue on\nthe field's processed String value. To return the raw String value, see getRawValue.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

private

\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"initRenderTpl":{"!type":"fn() -> +Ext.XTemplate","!doc":"

Initializes the renderTpl.

\n"},"isFileUpload":{"!type":"fn() -> bool","!doc":"

Returns whether this Field is a file upload field; if it returns true, forms will use special techniques for\nsubmitting the form via AJAX. See Ext.form.Basic.hasUpload for details. If\nthis returns true, the extractFileInput method must also be implemented to return the corresponding file\ninput element.

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Returns whether or not the field value is currently valid by validating the\nprocessed raw value of the field. Note: disabled fields are\nalways treated as valid.

\n"},"markInvalid":{"!type":"fn(errors: string|[string]) -> !this","!doc":"

Display one or more error messages associated with this field, using msgTarget to determine how to\ndisplay the messages and applying invalidCls to the field's UI element.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return false\nif the value does pass validation. So simply marking a Field as invalid will not prevent submission of forms\nsubmitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"onBoxReady":{"!type":"fn() -> !this"},"onDirtyChange":{"!type":"fn(isDirty: bool) -> !this","!doc":"

Called when the field's dirty state changes. Adds/removes the dirtyCls on the main element.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

private

\n"},"processRawValue":{"!type":"fn(value: ?) -> ?","!doc":"

Performs any necessary manipulation of a raw field value to prepare it for conversion and/or\nvalidation, for instance stripping out ignored characters. In the base implementation it does\nnothing; individual subclasses may override this as needed.

\n"},"rawToValue":{"!type":"fn(rawValue: ?) -> ?","!doc":"

Converts a raw input field value into a mixed-type value that is suitable for this particular field type. This\nallows controlling the normalization and conversion of user-entered values into field-type-appropriate values,\ne.g. a Date object for Ext.form.field.Date, and is invoked by getValue.

\n\n

It is up to individual implementations to decide how to handle raw values that cannot be successfully converted\nto the desired object type.

\n\n

See valueToRaw for the opposite conversion.

\n\n

The base implementation does no conversion, returning the raw value untouched.

\n"},"renderActiveError":{"!type":"fn() -> !this","!doc":"

Overrides the method from the Ext.form.Labelable mixin to also add the invalidCls to the inputEl,\nas that is required for proper styling in IE with nested fields (due to lack of child selector)

\n"},"setError":{"!type":"fn(error: string) -> !this","!doc":"

Set the current error state

\n"},"setFieldStyle":{"!type":"fn(style: string|?|fn()) -> !this","!doc":"

Set the CSS style of the field input element.

\n"},"setRawValue":{"!type":"fn(value: ?) -> ?","!doc":"

Sets the field's raw value directly, bypassing value conversion, change detection, and\nvalidation. To set the value with these additional inspections see setValue.

\n"},"setReadOnly":{"!type":"fn(readOnly: bool) -> !this","!doc":"

Sets the read only state of this field.

\n"},"setValue":{"!type":"fn(value: ?) -> +Ext.form.field.Field","!doc":"

Sets a data value into the field and runs the change detection and validation. To set the value directly\nwithout these inspections see setRawValue.

\n"},"transformRawValue":{"!type":"fn(value: ?) -> ?","!doc":"

Transform the raw value before it is set

\n"},"validateValue":{"!type":"fn(value: ?) -> bool","!doc":"

Uses getErrors to build an array of validation errors. If any errors are found, they are passed to\nmarkInvalid and false is returned, otherwise true is returned.

\n\n

Previously, subclasses were invited to provide an implementation of this to process validations - from 3.2\nonwards getErrors should be overridden instead.

\n"},"valueToRaw":{"!type":"fn(value: ?) -> ?","!doc":"

Converts a mixed-type value to a raw representation suitable for displaying in the field. This allows controlling\nhow value objects passed to setValue are shown to the user, including localization. For instance, for a\nExt.form.field.Date, this would control how a Date object passed to setValue would be converted\nto a String for display in the field.

\n\n

See rawToValue for the opposite conversion.

\n\n

The base implementation simply does a standard toString conversion, and converts empty values\nto an empty string.

\n"},"specialkey":{"!type":"fn(this: +Ext.form.field.Base, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when any key related to navigation (arrows, tab, enter, esc, etc.) is pressed. To handle other keys\nsee Ext.util.KeyMap. You can check Ext.EventObject.getKey to determine which key was\npressed. For example:

\n\n
var form = new Ext.form.Panel({\n    ...\n    items: [{\n            fieldLabel: 'Field 1',\n            name: 'field1',\n            allowBlank: false\n        },{\n            fieldLabel: 'Field 2',\n            name: 'field2',\n            listeners: {\n                specialkey: function(field, e){\n                    // e.HOME, e.END, e.PAGE_UP, e.PAGE_DOWN,\n                    // e.TAB, e.ESC, arrow keys: e.LEFT, e.RIGHT, e.UP, e.DOWN\n                    if (e.getKey() == e.ENTER) {\n                        var form = field.up('form').getForm();\n                        form.submit();\n                    }\n                }\n            }\n        }\n    ],\n    ...\n});\n
\n"},"writeablechange":{"!type":"fn(this: +Ext.form.field.Base, Read: bool, eOpts: ?)","!doc":"

Fires when this field changes its read-only status.

\n"}}},"Checkbox":{"!doc":"

Single checkbox field. Can be used as a direct replacement for traditional checkbox fields. Also serves as a\nparent class for radio buttons.

\n\n

Labeling

\n\n

In addition to the standard field labeling options, checkboxes\nmay be given an optional boxLabel which will be displayed immediately after checkbox. Also see\nExt.form.CheckboxGroup for a convenient method of grouping related checkboxes.

\n\n

Values

\n\n

The main value of a checkbox is a boolean, indicating whether or not the checkbox is checked.\nThe following values will check the checkbox:

\n\n\n\n\n

Any other value will uncheck the checkbox.

\n\n

In addition to the main boolean value, you may also specify a separate inputValue. This will be\nsent as the parameter value when the form is submitted. You will want to set\nthis value if you have multiple checkboxes with the same name. If not specified, the value on\nwill be used.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    bodyPadding: 10,\n    width: 300,\n    title: 'Pizza Order',\n    items: [\n        {\n            xtype: 'fieldcontainer',\n            fieldLabel: 'Toppings',\n            defaultType: 'checkboxfield',\n            items: [\n                {\n                    boxLabel  : 'Anchovies',\n                    name      : 'topping',\n                    inputValue: '1',\n                    id        : 'checkbox1'\n                }, {\n                    boxLabel  : 'Artichoke Hearts',\n                    name      : 'topping',\n                    inputValue: '2',\n                    checked   : true,\n                    id        : 'checkbox2'\n                }, {\n                    boxLabel  : 'Bacon',\n                    name      : 'topping',\n                    inputValue: '3',\n                    id        : 'checkbox3'\n                }\n            ]\n        }\n    ],\n    bbar: [\n        {\n            text: 'Select Bacon',\n            handler: function() {\n                Ext.getCmp('checkbox3').setValue(true);\n            }\n        },\n        '-',\n        {\n            text: 'Select All',\n            handler: function() {\n                Ext.getCmp('checkbox1').setValue(true);\n                Ext.getCmp('checkbox2').setValue(true);\n                Ext.getCmp('checkbox3').setValue(true);\n            }\n        },\n        {\n            text: 'Deselect All',\n            handler: function() {\n                Ext.getCmp('checkbox1').setValue(false);\n                Ext.getCmp('checkbox2').setValue(false);\n                Ext.getCmp('checkbox3').setValue(false);\n            }\n        }\n    ],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Checkbox_cfg)","prototype":{"!proto":"Ext.form.field.Base.prototype","afterBoxLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the box label text. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"afterBoxLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the box label element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"beforeBoxLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the box label text. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"beforeBoxLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the box label element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"boxLabel":{"!type":"string","!doc":"

An optional text label that will appear next to the checkbox. Whether it appears before or after the checkbox is\ndetermined by the boxLabelAlign config.

\n"},"boxLabelAlign":{"!type":"string","!doc":"

The position relative to the checkbox where the boxLabel should appear. Recognized values are 'before'\nand 'after'.

\n"},"boxLabelAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the box label element (as attributes). If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"boxLabelCls":{"!type":"string","!doc":"

The CSS class to be applied to the boxLabel element

\n"},"checkChangeEvents":{"!type":"[string]","!doc":"

private overrides

\n"},"checked":{"!type":"bool","!doc":"

true if the checkbox should render initially checked

\n"},"checkedCls":{"!type":"string","!doc":"

The CSS class(es) added to the component's main element when it is in the checked state.\nYou can add your own class (checkedCls='myClass x-form-cb-checked') or replace the default\nclass altogether (checkedCls='myClass').

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"fieldCls":{"!type":"string","!doc":"

The default CSS class for the checkbox

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

note: {id} here is really {inputId}, but {cmpId} is available

\n"},"focusCls":{"!type":"string","!doc":"

The CSS class to use when the checkbox receives focus

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the checked value changes (can be used instead of handling the change event).

\n"},"inputType":{"!type":"string","!doc":"

The type attribute for input fields -- e.g. radio, text, password, file. The extended types\nsupported by HTML5 inputs (url, email, etc.) may also be used, though using them will cause older browsers to\nfall back to 'text'.

\n\n

The type 'password' must be used to render that field type currently -- there is no separate Ext component for\nthat. You can use Ext.form.field.File which creates a custom-rendered file upload field, but if you want\na plain unstyled file input you can use a Base with inputType:'file'.

\n"},"inputValue":{"!type":"string","!doc":"

The value that should go into the generated input element's value attribute and should be used as the parameter\nvalue when submitting as part of a form.

\n"},"scope":{"!type":"?","!doc":"

An object to use as the scope ('this' reference) of the handler function.

\n\n

Defaults to this Checkbox.

\n"},"uncheckedValue":{"!type":"string","!doc":"

If configured, this will be submitted as the checkbox's value during form submit if the checkbox is unchecked. By\ndefault this is undefined, which results in nothing being submitted for the checkbox field when the form is\nsubmitted (the default behavior of HTML checkboxes).

\n"},"boxLabelEl":{"!type":"+Ext.Element","!doc":"

A reference to the label element created for the boxLabel. Only present if the component has been\nrendered and has a boxLabel configured.

\n"},"childEls":{"!type":"[?]"},"extraFieldBodyCls":{"!type":"string","!doc":"

private

\n"},"inputCls":{"!type":"string","!doc":"

the form-cb css class is for styling shared between checkbox and subclasses (radio)

\n"},"inputTypeAttr":{"!type":"string","!doc":"

private - the actual input type to use. inputType is just used to generate a class name

\n"},"isCheckbox":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Checkbox, or subclass thereof.

\n"},"onRe":{"!type":"+RegExp","!doc":"

private

\n"},"originalValue":{"!type":"?","!doc":"

The original value of the field as configured in the checked configuration, or as loaded by the last\nform load operation if the form's trackResetOnLoad setting is true.

\n"},"stretchInputElFixed":{"!type":"bool","!doc":"

inputEl should always retain the same size, never stretch

\n"},"subTplInsertions":{"!type":"[?]"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"getElConfig":{"!type":"fn() -> !this"},"getFieldStyle":{"!type":"fn() -> !this"},"getFormId":{"!type":"fn() -> !this"},"getManager":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"getRawValue":{"!type":"fn() -> bool","!doc":"

Returns the checked state of the checkbox.

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

Creates and returns the data object to be used when rendering the fieldSubTpl.

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the submit value for the checkbox which can be used when submitting forms.

\n"},"getValue":{"!type":"fn() -> bool","!doc":"

Returns the checked state of the checkbox.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

private

\n"},"initValue":{"!type":"fn() -> !this","!doc":"

Initializes the field's value based on the initial config.

\n"},"isChecked":{"!type":"fn(rawValue: ?, inputValue: ?) -> !this"},"onBoxClick":{"!type":"fn(e: ?) -> !this","!doc":"

Handle click on the checkbox button

\n"},"onChange":{"!type":"fn(newVal: ?, oldVal: ?) -> !this","!doc":"

Called when the checkbox's checked state changes. Invokes the handler callback\nfunction if specified.

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

private

\n"},"resetOriginalValue":{"!type":"fn(fromBoxInGroup: ?) -> !this","!doc":"

Resets the field's originalValue property so it matches the current value. This is\ncalled by Ext.form.Basic.setValues if the form's\ntrackResetOnLoad property is set to true.

\n"},"setBoxLabel":{"!type":"fn(boxLabel: string) -> !this","!doc":"

Sets the boxLabel for this checkbox.

\n"},"setRawValue":{"!type":"fn(value: bool|string|number) -> bool","!doc":"

Sets the checked state of the checkbox.

\n"},"setReadOnly":{"!type":"fn(readOnly: ?) -> !this","!doc":"

Sets the read only state of this field.

\n"},"setValue":{"!type":"fn(checked: bool|string) -> +Ext.form.field.Checkbox","!doc":"

Sets the checked state of the checkbox, and invokes change detection.

\n"},"valueToRaw":{"!type":"fn(value: ?) -> ?","!doc":"

private

\n"}}},"ComboBox":{"!doc":"

A combobox control with support for autocomplete, remote loading, and many other features.

\n\n

A ComboBox is like a combination of a traditional HTML text <input> field and a <select>\nfield; the user is able to type freely into the field, and/or pick values from a dropdown selection\nlist. The user can input any value by default, even if it does not appear in the selection list;\nto prevent free-form values and restrict them to items in the list, set forceSelection to true.

\n\n

The selection list's options are populated from any Ext.data.Store, including remote\nstores. The data items in the store are mapped to each option's displayed text and backing value via\nthe valueField and displayField configurations, respectively.

\n\n

If your store is not remote, i.e. it depends only on local data and is loaded up front, you should be\nsure to set the queryMode to 'local', as this will improve responsiveness for the user.

\n\n

Example usage:

\n\n
// The data store containing the list of states\nvar states = Ext.create('Ext.data.Store', {\n    fields: ['abbr', 'name'],\n    data : [\n        {\"abbr\":\"AL\", \"name\":\"Alabama\"},\n        {\"abbr\":\"AK\", \"name\":\"Alaska\"},\n        {\"abbr\":\"AZ\", \"name\":\"Arizona\"}\n        //...\n    ]\n});\n\n// Create the combo box, attached to the states data store\nExt.create('Ext.form.ComboBox', {\n    fieldLabel: 'Choose State',\n    store: states,\n    queryMode: 'local',\n    displayField: 'name',\n    valueField: 'abbr',\n    renderTo: Ext.getBody()\n});\n
\n\n

Events

\n\n

To do something when something in ComboBox is selected, configure the select event:

\n\n
var cb = Ext.create('Ext.form.ComboBox', {\n    // all of your config options\n    listeners:{\n         scope: yourScope,\n         'select': yourFunction\n    }\n});\n\n// Alternatively, you can assign events after the object is created:\nvar cb = new Ext.form.field.ComboBox(yourOptions);\ncb.on('select', yourFunction, yourScope);\n
\n\n

Multiple Selection

\n\n

ComboBox also allows selection of multiple items from the list; to enable multi-selection set the\nmultiSelect config to true.

\n\n

Filtered Stores

\n\n

If you have a local store that is already filtered, you can use the lastQuery config option\nto prevent the store from having the filter being cleared on first expand.

\n\n

Customized combobox

\n\n

Both the text shown in dropdown menu and text field can be easily customized:

\n\n
var states = Ext.create('Ext.data.Store', {\n    fields: ['abbr', 'name'],\n    data : [\n        {\"abbr\":\"AL\", \"name\":\"Alabama\"},\n        {\"abbr\":\"AK\", \"name\":\"Alaska\"},\n        {\"abbr\":\"AZ\", \"name\":\"Arizona\"}\n    ]\n});\n\nExt.create('Ext.form.ComboBox', {\n    fieldLabel: 'Choose State',\n    store: states,\n    queryMode: 'local',\n    valueField: 'abbr',\n    renderTo: Ext.getBody(),\n    // Template for the dropdown menu.\n    // Note the use of \"x-boundlist-item\" class,\n    // this is required to make the items selectable.\n    tpl: Ext.create('Ext.XTemplate',\n        '<tpl for=\".\">',\n            '<div class=\"x-boundlist-item\">{abbr} - {name}</div>',\n        '</tpl>'\n    ),\n    // template for the content inside text field\n    displayTpl: Ext.create('Ext.XTemplate',\n        '<tpl for=\".\">',\n            '{abbr} - {name}',\n        '</tpl>'\n    )\n});\n
\n\n

See also the listConfig option for additional configuration of the dropdown.

\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_ComboBox_cfg)","prototype":{"!proto":"Ext.form.field.Picker.prototype","allQuery":{"!type":"string","!doc":"

The text query to send to the server to return all records for the list with no filtering

\n"},"anyMatch":{"!type":"bool","!doc":"

Configure as true to allow match the typed characters at any position in the valueField's value.

\n"},"autoSelect":{"!type":"bool","!doc":"

true to automatically highlight the first result gathered by the data store in the dropdown list when it is\nopened. A false value would cause nothing in the list to be highlighted automatically, so\nthe user would have to manually highlight an item before pressing the enter or tab key to\nselect it (unless the value of (typeAhead) were true), or use the mouse to select a value.

\n"},"caseSensitive":{"!type":"bool","!doc":"

Configure as true to make the filtering match with exact case matching

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"defaultListConfig":{"!type":"?","!doc":"

Set of options that will be used as defaults for the user-configured listConfig object.

\n"},"delimiter":{"!type":"string","!doc":"

The character(s) used to separate the display values of multiple selected items when\nmultiSelect = true.

\n"},"displayField":{"!type":"string","!doc":"

The underlying data field name to bind to this ComboBox.

\n\n

See also valueField.

\n"},"enableRegEx":{"!type":"bool","!doc":"

When queryMode is 'local' only

\n\n

Set to true to have the ComboBox use the typed value as a RegExp source to filter the store to get possible matches.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

The content of the field body is defined by this config option.

\n"},"forceSelection":{"!type":"bool","!doc":"

true to restrict the selected value to one of the values in the list, false to allow the user to set\narbitrary text into the field.

\n"},"growToLongestValue":{"!type":"bool","!doc":"

false to not allow the component to resize itself when its data changes\n(and its grow property is true)

\n"},"hiddenDataCls":{"!type":"string","!doc":"

CSS class used to find the hiddenDataEl

\n"},"hiddenName":{"!type":"string","!doc":"

The name of an underlying hidden field which will be synchronized with the underlying value of the combo.\nThis option is useful if the combo is part of a form element doing a regular form post. The hidden field\nwill not be created unless a hiddenName is specified.

\n"},"listConfig":{"!type":"?","!doc":"

An optional set of configuration properties that will be passed to the Ext.view.BoundList's constructor.\nAny configuration that is valid for BoundList can be included. Some of the more useful ones are:

\n\n\n\n"},"minChars":{"!type":"number","!doc":"

The minimum number of characters the user must type before autocomplete and typeAhead activate.

\n\n

Defaults to 4 if queryMode = 'remote' or 0 if queryMode = 'local',\ndoes not apply if editable = false.

\n"},"multiSelect":{"!type":"bool","!doc":"

If set to true, allows the combo field to hold more than one value at a time, and allows selecting multiple\nitems from the dropdown list. The combo's text field will show all selected values separated by the\ndelimiter.

\n"},"pageSize":{"!type":"number","!doc":"

If greater than 0, a Ext.toolbar.Paging is displayed in the footer of the dropdown list and the\nfilter queries will execute with page start and limit\nparameters. Only applies when queryMode = 'remote'.

\n"},"queryCaching":{"!type":"bool","!doc":"

When true, this prevents the combo from re-querying (either locally or remotely) when the current query\nis the same as the previous query.

\n"},"queryDelay":{"!type":"number","!doc":"

The length of time in milliseconds to delay between the start of typing and sending the query to filter the\ndropdown list.

\n\n

Defaults to 500 if queryMode = 'remote' or 10 if queryMode = 'local'

\n"},"queryMode":{"!type":"string","!doc":"

The mode in which the ComboBox uses the configured Store. Acceptable values are:

\n\n\n\n"},"queryParam":{"!type":"string","!doc":"

Name of the parameter used by the Store to pass the typed string when the ComboBox is configured with\nqueryMode: 'remote'. If explicitly set to a falsy value it will not be sent.

\n"},"selectOnTab":{"!type":"bool","!doc":"

Whether the Tab key should select the currently highlighted item.

\n"},"store":{"!type":"+Ext.data.Store|string|[?]","!doc":"

The data source to which this combo is bound. Acceptable values for this property are:

\n\n\n\n\n

See also queryMode.

\n"},"transform":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The id, DOM node or Ext.Element of an existing HTML <select> element to convert into a ComboBox. The\ntarget select's options will be used to build the options in the ComboBox dropdown; a configured store\nwill take precedence over this.

\n"},"triggerAction":{"!type":"string","!doc":"

The action to execute when the trigger is clicked.

\n\n\n\n\n

See also queryParam.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the triggerBaseCls\nby default and triggerCls will be appended if specified.

\n"},"typeAhead":{"!type":"bool","!doc":"

true to populate and autoselect the remainder of the text being typed after a configurable delay\n(typeAheadDelay) if it matches a known value.

\n"},"typeAheadDelay":{"!type":"number","!doc":"

The length of time in milliseconds to wait until the typeahead text is displayed if typeAhead = true

\n"},"valueField":{"!type":"string","!doc":"

The underlying data value name to bind to this ComboBox.

\n\n

Note: use of a valueField requires the user to make a selection in order for a value to be mapped. See also\ndisplayField.

\n\n

Defaults to match the value of the displayField config.

\n"},"valueNotFoundText":{"!type":"string","!doc":"

When using a name/value combo, if the value passed to setValue is not found in the store, valueNotFoundText will\nbe displayed as the field text if defined. If this default text is used, it means there\nis no value set and no validation will occur on this field.

\n"},"hiddenDataEl":{"!type":"+Ext.Element"},"ignoreSelection":{"!type":"number","!doc":"

private

\n"},"lastQuery":{"!type":"string","!doc":"

The value of the match string used to filter the store. Delete this property to force a requery. Example use:

\n\n
var combo = new Ext.form.field.ComboBox({\n    ...\n    queryMode: 'remote',\n    listeners: {\n        // delete the previous query in the beforequery event or set\n        // combo.lastQuery = null (this will reload the store the next time it expands)\n        beforequery: function(qe){\n            delete qe.combo.lastQuery;\n        }\n    }\n});\n
\n\n

To make sure the filter in the store is not cleared the first time the ComboBox trigger is used configure the\ncombo with lastQuery=''. Example use:

\n\n
var combo = new Ext.form.field.ComboBox({\n    ...\n    queryMode: 'local',\n    triggerAction: 'all',\n    lastQuery: ''\n});\n
\n"},"removingRecords":{"!type":"?","!doc":"

private, tells the layout to recalculate its startingWidth when a record is removed from its bound store

\n"},"afterQuery":{"!type":"fn(queryPlan: ?) -> !this","!doc":"

A method called when the filtering caused by the doQuery call is complete and the store has been\neither filtered locally (if queryMode is \"local\"), or has been loaded using the specified filtering.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"alignPicker":{"!type":"fn() -> !this","!doc":"

Aligns the picker to the input element

\n"},"assertValue":{"!type":"fn() -> !this","!doc":"

private

\n"},"beforeBlur":{"!type":"fn() -> !this","!doc":"

Template method to do any pre-blur processing.

\n"},"beforeQuery":{"!type":"fn(queryPlan: ?) -> !this","!doc":"

A method which may modify aspects of how the store is to be filtered (if queryMode is \"local\")\nof loaded (if queryMode is \"remote\").

\n\n

This is called by the {@link doQuery method, and may be overridden in subclasses to modify\nthe default behaviour.

\n\n

This method is passed an object containing information about the upcoming query operation which it may modify\nbefore returning.

\n"},"beforeReset":{"!type":"fn() -> !this","!doc":"

Template method before a field is reset.

\n"},"clearValue":{"!type":"fn() -> !this","!doc":"

Clears any value currently set in the ComboBox.

\n"},"createPicker":{"!type":"fn() -> !this","!doc":"

Creates and returns the component to be used as this field's picker. Must be implemented by subclasses of Picker.\nThe current field should also be passed as a configuration option to the picker component as the pickerField\nproperty.

\n"},"doAutoSelect":{"!type":"fn() -> !this","!doc":"

If the autoSelect config is true, and the picker is open, highlights the first item.

\n"},"doLocalQuery":{"!type":"fn(queryPlan: ?) -> !this"},"doQuery":{"!type":"fn(queryString: string, forceAll?: bool, rawQuery?: bool) -> bool","!doc":"

Executes a query to filter the dropdown list. Fires the beforequery event prior to performing the query\nallowing the query action to be canceled if needed.

\n"},"doRawQuery":{"!type":"fn() -> !this","!doc":"

Execute the query with the raw contents within the textfield.

\n"},"doRemoteQuery":{"!type":"fn(queryPlan: ?) -> !this"},"doTypeAhead":{"!type":"fn() -> !this"},"findRecord":{"!type":"fn(field: string, value: ?) -> +Ext.data.Model","!doc":"

Finds the record by searching for a specific field/value combination.

\n"},"findRecordByDisplay":{"!type":"fn(value: ?) -> +Ext.data.Model","!doc":"

Finds the record by searching values in the displayField.

\n"},"findRecordByValue":{"!type":"fn(value: ?) -> +Ext.data.Model","!doc":"

Finds the record by searching values in the valueField.

\n"},"getDisplayValue":{"!type":"fn() -> !this","!doc":"

Generates the string value to be displayed in the text field for the currently stored value

\n"},"getParams":{"!type":"fn(queryString: ?) -> !this","!doc":"

private

\n"},"getStore":{"!type":"fn() -> +Ext.data.Store","!doc":"

Returns the store associated with this ComboBox.

\n"},"getStoreListeners":{"!type":"fn() -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

Creates and returns the data object to be used when rendering the fieldSubTpl.

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the value that would be included in a standard form submit for this field. This will be combined with the\nfield's name to form a name=value pair in the submitted parameters. If an empty string is\nreturned then just the name= will be submitted; if null is returned then nothing will be submitted.

\n\n

Note that the value returned will have been processed but may or may not have been\nsuccessfully validated.

\n"},"getValue":{"!type":"fn() -> ?","!doc":"

Returns the current data value of the field. The type of value returned is particular to the type of the\nparticular field (e.g. a Date object for Ext.form.field.Date), as the result of calling rawToValue on\nthe field's processed String value. To return the raw String value, see getRawValue.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

private

\n"},"isEqual":{"!type":"fn(v1: ?, v2: ?) -> !this","!doc":"

Override. Treat undefined and null values as equal to an empty string value.

\n"},"loadPage":{"!type":"fn(pageNum: ?, options: ?) -> !this"},"onAdded":{"!type":"fn() -> !this","!doc":"

The picker (the dropdown) must have its zIndex managed by the same ZIndexManager which is\nproviding the zIndex of our Container.

\n"},"onBeforeDeselect":{"!type":"fn(list: ?, record: ?) -> !this"},"onBeforeLoad":{"!type":"fn() -> !this"},"onBeforeSelect":{"!type":"fn(list: ?, record: ?) -> !this"},"onBindStore":{"!type":"fn(store: ?, initial: ?) -> !this","!doc":"

Template method, it is called when a new store is bound\nto the current instance.

\n"},"onClear":{"!type":"fn() -> !this"},"onCollapse":{"!type":"fn() -> !this","!doc":"

Disables the key nav for the BoundList when it is collapsed.

\n"},"onDataChanged":{"!type":"fn() -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onEditorTab":{"!type":"fn(e: ?) -> !this"},"onException":{"!type":"fn() -> !this"},"onExpand":{"!type":"fn() -> !this","!doc":"

Enables the key nav for the BoundList when it is expanded.

\n"},"onItemClick":{"!type":"fn(picker: ?, record: ?) -> !this"},"onKeyUp":{"!type":"fn(e: ?, t: ?) -> !this","!doc":"

store the last key and doQuery if relevant

\n"},"onListRefresh":{"!type":"fn() -> !this"},"onListSelectionChange":{"!type":"fn(list: ?, selectedRecords: ?) -> !this"},"onLoad":{"!type":"fn(store: ?, records: ?, success: ?) -> !this"},"onPageChange":{"!type":"fn(toolbar: ?, newPage: ?) -> !this"},"onPaste":{"!type":"fn() -> !this"},"onRemove":{"!type":"fn() -> !this"},"onTriggerClick":{"!type":"fn() -> !this","!doc":"

Handles the trigger click; by default toggles between expanding and collapsing the picker component.

\n"},"onTypeAhead":{"!type":"fn() -> !this"},"onUnbindStore":{"!type":"fn(store: ?) -> !this","!doc":"

Template method, it is called when an existing store is unbound\nfrom the current instance.

\n"},"resetToDefault":{"!type":"fn() -> !this","!doc":"

invoked when a different store is bound to this combo\nthan the original

\n"},"resizeComboToGrow":{"!type":"fn() -> !this","!doc":"

private helper

\n"},"select":{"!type":"fn(combo: +Ext.form.field.ComboBox, records: [?], eOpts: ?)","!doc":"

Fires when at least one list item is selected.

\n"},"setHiddenValue":{"!type":"fn(values: ?) -> !this","!doc":"

Set the value of hiddenDataEl\nDynamically adds and removes input[type=hidden] elements

\n"},"setValue":{"!type":"fn(value: string|[string]) -> +Ext.form.field.Field","!doc":"

Sets the specified value(s) into the field. For each value, if a record is found in the store that\nmatches based on the valueField, then that record's displayField will be displayed in the\nfield. If no match is found, and the valueNotFoundText config option is defined, then that will be\ndisplayed as the default field text. Otherwise a blank value will be shown, although the value will still be set.

\n"},"syncSelection":{"!type":"fn() -> !this","!doc":"

Synchronizes the selection in the picker to match the current value of the combobox.

\n"},"beforedeselect":{"!type":"fn(combo: +Ext.form.field.ComboBox, record: +Ext.data.Record, index: number, eOpts: ?)","!doc":"

Fires before the deselected item is removed from the collection

\n"},"beforequery":{"!type":"fn(queryPlan: ?, eOpts: ?)","!doc":"

Fires before all queries are processed. Return false to cancel the query or set the queryPlan's cancel\nproperty to true.

\n"},"beforeselect":{"!type":"fn(combo: +Ext.form.field.ComboBox, record: +Ext.data.Record, index: number, eOpts: ?)","!doc":"

Fires before the selected item is added to the collection

\n"}}},"Date":{"!doc":"

Provides a date input field with a date picker dropdown and automatic date\nvalidation.

\n\n

This field recognizes and uses the JavaScript Date object as its main value type. In addition,\nit recognizes string values which are parsed according to the format and/or altFormats\nconfigs. These may be reconfigured to use date formats appropriate for the user's locale.

\n\n

The field may be limited to a certain range of dates by using the minValue, maxValue,\ndisabledDays, and disabledDates config parameters. These configurations will be used both\nin the field's validation, and in the date picker dropdown by preventing invalid dates from being selected.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    renderTo: Ext.getBody(),\n    width: 300,\n    bodyPadding: 10,\n    title: 'Dates',\n    items: [{\n        xtype: 'datefield',\n        anchor: '100%',\n        fieldLabel: 'From',\n        name: 'from_date',\n        maxValue: new Date()  // limited to the current date or prior\n    }, {\n        xtype: 'datefield',\n        anchor: '100%',\n        fieldLabel: 'To',\n        name: 'to_date',\n        value: new Date()  // defaults to today\n    }]\n});\n
\n\n

Date Formats Examples

\n\n

This example shows a couple of different date format parsing scenarios. Both use custom date format\nconfigurations; the first one matches the configured format while the second matches the altFormats.

\n\n
Ext.create('Ext.form.Panel', {\n    renderTo: Ext.getBody(),\n    width: 300,\n    bodyPadding: 10,\n    title: 'Dates',\n    items: [{\n        xtype: 'datefield',\n        anchor: '100%',\n        fieldLabel: 'Date',\n        name: 'date',\n        // The value matches the format; will be parsed and displayed using that format.\n        format: 'm d Y',\n        value: '2 4 1978'\n    }, {\n        xtype: 'datefield',\n        anchor: '100%',\n        fieldLabel: 'Date',\n        name: 'date',\n        // The value does not match the format, but does match an altFormat; will be parsed\n        // using the altFormat and displayed using the format.\n        format: 'm d Y',\n        altFormats: 'm,d,Y|m.d.Y',\n        value: '2.4.1978'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Date_cfg)","prototype":{"!proto":"Ext.form.field.Picker.prototype","altFormats":{"!type":"string","!doc":"

Multiple date formats separated by \"|\" to try when parsing a user input value and it does not match the defined\nformat.

\n"},"disabledDates":{"!type":"[string]","!doc":"

An array of \"dates\" to disable, as strings. These strings will be used to build a dynamic regular expression so\nthey are very powerful. Some examples:

\n\n
// disable these exact dates:\ndisabledDates: [\"03/08/2003\", \"09/16/2003\"]\n// disable these days for every year:\ndisabledDates: [\"03/08\", \"09/16\"]\n// only match the beginning (useful if you are using short years):\ndisabledDates: [\"^03/08\"]\n// disable every day in March 2006:\ndisabledDates: [\"03/../2006\"]\n// disable every day in every March:\ndisabledDates: [\"^03\"]\n
\n\n

Note that the format of the dates included in the array should exactly match the format config. In order\nto support regular expressions, if you are using a date format that has \".\" in it, you will have\nto escape the dot when restricting dates. For example: [\"03\\\\.08\\\\.03\"].

\n"},"disabledDatesText":{"!type":"string","!doc":"

The tooltip text to display when the date falls on a disabled date.

\n"},"disabledDays":{"!type":"[number]","!doc":"

An array of days to disable, 0 based. Some examples:

\n\n
// disable Sunday and Saturday:\ndisabledDays:  [0, 6]\n// disable weekdays:\ndisabledDays: [1,2,3,4,5]\n
\n"},"disabledDaysText":{"!type":"string","!doc":"

The tooltip to display when the date falls on a disabled day.

\n"},"format":{"!type":"string","!doc":"

The default date format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse.

\n"},"grow":{"!type":"bool"},"growMax":{"!type":"number"},"growMin":{"!type":"number"},"invalidText":{"!type":"string","!doc":"

The error text to display when the date in the field is invalid.

\n"},"matchFieldWidth":{"!type":"bool","!doc":"

Whether the picker dropdown's width should be explicitly set to match the width of the field. Defaults to true.

\n"},"maxText":{"!type":"string","!doc":"

The error text to display when the date in the cell is after maxValue.

\n"},"maxValue":{"!type":"+Date|string","!doc":"

The maximum allowed date. Can be either a Javascript date object or a string date in a valid format.

\n"},"minText":{"!type":"string","!doc":"

The error text to display when the date in the cell is before minValue.

\n"},"minValue":{"!type":"+Date|string","!doc":"

The minimum allowed date. Can be either a Javascript date object or a string date in a valid format.

\n"},"showToday":{"!type":"bool","!doc":"

false to hide the footer area of the Date picker containing the Today button and disable the keyboard handler for\nspacebar that selects the current date.

\n"},"startDay":{"!type":"number","!doc":"

Day index at which the week should begin, 0-based.

\n\n

Defaults to 0 (Sunday).

\n"},"submitFormat":{"!type":"string","!doc":"

The date format string which will be submitted to the server. The format must be valid according to\nExt.Date.parse.

\n\n

Defaults to format.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the class 'x-form-trigger'\nand triggerCls will be appended if specified (default class displays a calendar icon).

\n"},"useStrict":{"!type":"bool","!doc":"

True to enforce strict date parsing to prevent the default Javascript \"date rollover\".\nDefaults to the useStrict parameter set on Ext.Date\nSee Ext.Date.parse.

\n"},"initTime":{"!type":"string","!doc":"

in the absence of a time value, a default value of 12 noon will be used\n(note: 12 noon was chosen because it steers well clear of all DST timezone changes)

\n"},"initTimeFormat":{"!type":"string","!doc":"

24 hour format

\n"},"autoSize":{"!type":"fn()"},"beforeBlur":{"!type":"fn() -> !this","!doc":"

private

\n"},"createPicker":{"!type":"fn() -> !this","!doc":"

Creates and returns the component to be used as this field's picker. Must be implemented by subclasses of Picker.\nThe current field should also be passed as a configuration option to the picker component as the pickerField\nproperty.

\n"},"formatDate":{"!type":"fn(date: ?) -> !this","!doc":"

private

\n"},"getErrors":{"!type":"fn(value?: ?) -> [string]","!doc":"

Runs all of Date's validations and returns an array of any errors. Note that this first runs Text's validations,\nso the returned array is an amalgamation of all field errors. The additional validation checks are testing that\nthe date format is valid, that the chosen date is within the min and max date constraints set, that the date\nchosen is not in the disabledDates regex and that the day chosed is not one of the disabledDays.

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the value that would be included in a standard form submit for this field. This will be combined with the\nfield's name to form a name=value pair in the submitted parameters. If an empty string is\nreturned then just the name= will be submitted; if null is returned then nothing will be submitted.

\n\n

Note that the value returned will have been processed but may or may not have been\nsuccessfully validated.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

\n"},"initDisabledDays":{"!type":"fn() -> !this","!doc":"

private

\n"},"initValue":{"!type":"fn() -> !this","!doc":"

Initializes the field's value based on the initial config.

\n"},"onCollapse":{"!type":"fn() -> !this","!doc":"

Focuses the field when collapsing the Date picker.

\n"},"onDownArrow":{"!type":"fn(e: ?) -> !this"},"onExpand":{"!type":"fn() -> !this","!doc":"

Sets the Date picker's value to match the current field value when expanding.

\n"},"onSelect":{"!type":"fn(m: ?, d: ?) -> !this"},"parseDate":{"!type":"fn(value: ?) -> !this"},"rawToValue":{"!type":"fn(rawValue: ?) -> ?","!doc":"

Converts a raw input field value into a mixed-type value that is suitable for this particular field type. This\nallows controlling the normalization and conversion of user-entered values into field-type-appropriate values,\ne.g. a Date object for Ext.form.field.Date, and is invoked by getValue.

\n\n

It is up to individual implementations to decide how to handle raw values that cannot be successfully converted\nto the desired object type.

\n\n

See valueToRaw for the opposite conversion.

\n\n

The base implementation does no conversion, returning the raw value untouched.

\n"},"safeParse":{"!type":"fn(value: string, format: string) -> +Date","!doc":"

Attempts to parse a given string value using a given date format.

\n"},"setDisabledDates":{"!type":"fn(disabledDates: [string]) -> !this","!doc":"

Replaces any existing disabled dates with new values and refreshes the Date picker.

\n"},"setDisabledDays":{"!type":"fn(disabledDays: [number]) -> !this","!doc":"

Replaces any existing disabled days (by index, 0-6) with new values and refreshes the Date picker.

\n"},"setMaxValue":{"!type":"fn(value: +Date) -> !this","!doc":"

Replaces any existing maxValue with the new value and refreshes the Date picker.

\n"},"setMinValue":{"!type":"fn(value: +Date) -> !this","!doc":"

Replaces any existing minValue with the new value and refreshes the Date picker.

\n"},"setValue":{"!type":"fn(date: string|+Date) -> +Ext.form.field.Date","!doc":"

Sets the value of the date field. You can pass a date object or any string that can be parsed into a valid date,\nusing format as the date format, according to the same rules as Ext.Date.parse (the default\nformat used is \"m/d/Y\").

\n\n

Usage:

\n\n
//All of these calls set the same date value (May 4, 2006)\n\n//Pass a date object:\nvar dt = new Date('5/4/2006');\ndateField.setValue(dt);\n\n//Pass a date string (default format):\ndateField.setValue('05/04/2006');\n\n//Pass a date string (custom format):\ndateField.format = 'Y-m-d';\ndateField.setValue('2006-05-04');\n
\n"},"valueToRaw":{"!type":"fn(value: ?) -> ?","!doc":"

Converts a mixed-type value to a raw representation suitable for displaying in the field. This allows controlling\nhow value objects passed to setValue are shown to the user, including localization. For instance, for a\nExt.form.field.Date, this would control how a Date object passed to setValue would be converted\nto a String for display in the field.

\n\n

See rawToValue for the opposite conversion.

\n\n

The base implementation simply does a standard toString conversion, and converts empty values\nto an empty string.

\n"}}},"Display":{"!doc":"

A display-only text field which is not validated and not submitted. This is useful for when you want to display a\nvalue from a form's loaded data but do not want to allow the user to edit or submit that\nvalue. The value can be optionally HTML encoded if it contains HTML markup that you do not want\nto be rendered.

\n\n

If you have more complex content, or need to include components within the displayed content, also consider using a\nExt.form.FieldContainer instead.

\n\n

Example:

\n\n
Ext.create('Ext.form.Panel', {\n    renderTo: Ext.getBody(),\n    width: 175,\n    height: 120,\n    bodyPadding: 10,\n    title: 'Final Score',\n    items: [{\n        xtype: 'displayfield',\n        fieldLabel: 'Home',\n        name: 'home_score',\n        value: '10'\n    }, {\n        xtype: 'displayfield',\n        fieldLabel: 'Visitor',\n        name: 'visitor_score',\n        value: '11'\n    }],\n    buttons: [{\n        text: 'Update'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Display_cfg)","prototype":{"!proto":"Ext.form.field.Base.prototype","checkChangeBuffer":{"!type":"number"},"checkChangeEvents":{"!type":"number"},"disabled":{"!type":"bool"},"fieldBodyCls":{"!type":"string","!doc":"

An extra CSS class to be applied to the body content element in addition to baseBodyCls.

\n"},"fieldCls":{"!type":"string","!doc":"

The default CSS class for the field.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

The content of the field body is defined by this config option.

\n"},"htmlEncode":{"!type":"bool","!doc":"

True to escape HTML in text when rendering it.

\n"},"inputType":{"!type":"string"},"readOnly":{"!type":"bool"},"renderer":{"!type":"fn()","!doc":"

A function to transform the raw value for display in the field. The function will receive 2 arguments, the raw value\nand the Ext.form.field.Display object.

\n"},"scope":{"!type":"?","!doc":"

The scope to execute the renderer function. Defaults to this.

\n"},"submitValue":{"!type":"bool","!doc":"

Setting this to false will prevent the field from being submitted even when it is\nnot disabled.

\n"},"validateOnChange":{"!type":"bool"},"getDisplayValue":{"!type":"fn() -> !this","!doc":"

Format the value to display.

\n"},"getRawValue":{"!type":"fn() -> string","!doc":"

Returns the raw value of the field, without performing any normalization, conversion, or validation. To get a\nnormalized and converted value see getValue.

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

Creates and returns the data object to be used when rendering the fieldSubTpl.

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

private

\n"},"isDirty":{"!type":"fn() -> bool","!doc":"

Returns true if the value of this Field has been changed from its originalValue.\nWill always return false if the field is disabled.

\n\n

Note that if the owning form was configured with\ntrackResetOnLoad then the originalValue is updated when\nthe values are loaded by Ext.form.Basic.setValues.

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Returns whether or not the field value is currently valid by validating the\nprocessed raw value of the field. Note: disabled fields are\nalways treated as valid.

\n"},"setRawValue":{"!type":"fn(value: ?) -> ?","!doc":"

Sets the field's raw value directly, bypassing value conversion, change detection, and\nvalidation. To set the value with these additional inspections see setValue.

\n"},"validate":{"!type":"fn() -> bool","!doc":"

Returns whether or not the field value is currently valid by validating the field's current\nvalue, and fires the validitychange event if the field's validity has changed since the last validation.\nNote: disabled fields are always treated as valid.

\n\n

Custom implementations of this method are allowed to have side-effects such as triggering error message display.\nTo validate without side-effects, use isValid.

\n"}}},"File":{"!doc":"

A file upload field which has custom styling and allows control over the button text and other\nfeatures of text fields like empty text.\nIt uses a hidden file input element behind the scenes to allow user selection of a file and to\nperform the actual upload during form submit.

\n\n

Because there is no secure cross-browser way to programmatically set the value of a file input,\nthe standard Field setValue method is not implemented. The getValue method will return\na value that is browser-dependent; some have just the file name, some have a full path, some use\na fake path.

\n\n

IMPORTANT: File uploads are not performed using normal 'Ajax' techniques; see the description for\nExt.form.Basic.hasUpload for details.

\n\n

Example Usage

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Upload a Photo',\n    width: 400,\n    bodyPadding: 10,\n    frame: true,\n    renderTo: Ext.getBody(),\n    items: [{\n        xtype: 'filefield',\n        name: 'photo',\n        fieldLabel: 'Photo',\n        labelWidth: 50,\n        msgTarget: 'side',\n        allowBlank: false,\n        anchor: '100%',\n        buttonText: 'Select Photo...'\n    }],\n\n    buttons: [{\n        text: 'Upload',\n        handler: function() {\n            var form = this.up('form').getForm();\n            if(form.isValid()){\n                form.submit({\n                    url: 'photo-upload.php',\n                    waitMsg: 'Uploading your photo...',\n                    success: function(fp, o) {\n                        Ext.Msg.alert('Success', 'Your photo \"' + o.result.file + '\" has been uploaded.');\n                    }\n                });\n            }\n        }\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_File_cfg)","prototype":{"!proto":"Ext.form.field.Trigger.prototype","buttonConfig":{"!type":"?","!doc":"

A standard Ext.button.Button config object.

\n"},"buttonMargin":{"!type":"number","!doc":"

The number of pixels of space reserved between the button and the text field. Note that this only\napplies if buttonOnly = false.

\n"},"buttonOnly":{"!type":"bool","!doc":"

True to display the file upload field as a button with no visible text field. If true, all\ninherited Text members will still be available.

\n"},"buttonText":{"!type":"string","!doc":"

The button text to display on the upload button. Note that if you supply a value for\nbuttonConfig, the buttonConfig.text value will be used instead if available.

\n"},"clearOnSubmit":{"!type":"bool","!doc":"

True to clear the selected file value when the form this field belongs to\nis submitted to the server.

\n"},"componentLayout":{"!type":"string|?","!doc":"

private

\n"},"readOnly":{"!type":"bool","!doc":"

Unlike with other form fields, the readOnly config defaults to true in File field.

\n"},"button":{"!type":"+Ext.button.Button","!doc":"

A reference to the trigger Button component created for this upload field. Only populated after this component is\nrendered.

\n"},"childEls":{"!type":"[?]","!doc":"

private. Extract the file element, button outer element, and button active element.

\n"},"extraFieldBodyCls":{"!type":"string","!doc":"

private

\n"},"fileInputEl":{"!type":"+Ext.Element","!doc":"

A reference to the invisible file input element created for this upload field. Only populated after this\ncomponent is rendered.

\n"},"triggerNoEditCls":{"!type":"string","!doc":"

Do not show hand pointer over text field since file choose dialog is only shown when clicking in the button

\n"},"extractFileInput":{"!type":"fn() -> +HTMLElement","!doc":"

Only relevant if the instance's isFileUpload method returns true. Returns a reference to the file input\nDOM element holding the user's selected file. The input will be appended into the submission form and will not be\nreturned, so this method should also create a replacement.

\n"},"getButtonMarginProp":{"!type":"fn() -> !this"},"getTriggerMarkup":{"!type":"fn() -> !this","!doc":"

Gets the markup to be inserted into the subTplMarkup.

\n"},"isFileUpload":{"!type":"fn() -> bool","!doc":"

Returns whether this Field is a file upload field; if it returns true, forms will use special techniques for\nsubmitting the form via AJAX. See Ext.form.Basic.hasUpload for details. If\nthis returns true, the extractFileInput method must also be implemented to return the corresponding file\ninput element.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onFileChange":{"!type":"fn(button: ?, e: ?, value: ?) -> !this","!doc":"

Event handler fired when the user selects a file.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

private

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"reset":{"!type":"fn() -> !this","!doc":"

Resets the current field value to the originally-loaded value and clears any validation messages.\nAlso adds emptyText and emptyCls if the original value was blank.

\n"},"restoreInput":{"!type":"fn(el: ?) -> !this"},"setValue":{"!type":"fn() -> !this","!doc":"

Overridden to do nothing

\n"},"change":{"!type":"fn(this: +Ext.ux.form.FileUploadField, value: string, eOpts: ?)","!doc":"

Fires when the underlying file input field's value has changed from the user selecting a new file from the system\nfile selection dialog.

\n"}}},"FileButton":{"!type":"fn(config: +Ext.Element|string|Ext_form_field_FileButton_cfg)","prototype":{"!proto":"Ext.button.Button.prototype","cls":{"!type":"string","!doc":"

A CSS class string to apply to the button's main element.

\n"},"preventDefault":{"!type":"bool","!doc":"

True to prevent the default action when the clickEvent is processed.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"childEls":{"!type":"[?]"},"inputCls":{"!type":"string"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"createFileInput":{"!type":"fn(isTemporary: ?) -> !this","!doc":"

Creates the file input element. It is inserted into the trigger button component, made\ninvisible, and floated on top of the button's other content so that it will receive the\nbutton's clicks.

\n"},"fireChange":{"!type":"fn(e: ?) -> !this"},"getTemplateArgs":{"!type":"fn() -> ?","!doc":"

This method returns an object which provides substitution parameters for the XTemplate used to\ncreate this Button's DOM structure.

\n\n

Instances or subclasses which use a different Template to create a different DOM structure may need to provide\ntheir own implementation of this method.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

See comments in onFocus

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the enable operation.\nAfter calling the superclass's onEnable, the Component will be enabled.

\n"},"reset":{"!type":"fn(remove: ?) -> !this"},"restoreInput":{"!type":"fn(el: ?) -> !this"}}},"Hidden":{"!doc":"

A basic hidden field for storing hidden values in forms that need to be passed in the form submit.

\n\n

This creates an actual input element with type=\"submit\" in the DOM. While its label is\nnot rendered by default, it is still a real component and may be sized according\nto its owner container's layout.

\n\n

Because of this, in most cases it is more convenient and less problematic to simply\npass hidden parameters directly when\nsubmitting the form.

\n\n

Example:

\n\n
new Ext.form.Panel({\n    title: 'My Form',\n    items: [{\n        xtype: 'textfield',\n        fieldLabel: 'Text Field',\n        name: 'text_field',\n        value: 'value from text field'\n    }, {\n        xtype: 'hiddenfield',\n        name: 'hidden_field_1',\n        value: 'value from hidden field'\n    }],\n\n    buttons: [{\n        text: 'Submit',\n        handler: function() {\n            this.up('form').getForm().submit({\n                params: {\n                    hidden_field_2: 'value from submit call'\n                }\n            });\n        }\n    }]\n});\n
\n\n

Submitting the above form will result in three values sent to the server:

\n\n
text_field=value+from+text+field&hidden;_field_1=value+from+hidden+field&hidden_field_2=value+from+submit+call\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Hidden_cfg)","prototype":{"!proto":"Ext.form.field.Base.prototype","hidden":{"!type":"bool","!doc":"

true to hide the component.

\n"},"hideLabel":{"!type":"bool","!doc":"

Set to true to completely hide the label element (fieldLabel and labelSeparator). Also see\nhideEmptyLabel, which controls whether space will be reserved for an empty fieldLabel.

\n"},"inputType":{"!type":"string","!doc":"

private

\n"},"clearInvalid":{"!type":"fn() -> !this","!doc":"

Clear any invalid styles/messages for this field.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return true\nif the value does not pass validation. So simply clearing a field's errors will not necessarily allow\nsubmission of forms submitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

These are all private overrides

\n"},"isEqual":{"!type":"fn(value1: ?, value2: ?) -> !this","!doc":"

Override. Treat undefined and null values as equal to an empty string value.

\n"},"markInvalid":{"!type":"fn() -> !this","!doc":"

Display one or more error messages associated with this field, using msgTarget to determine how to\ndisplay the messages and applying invalidCls to the field's UI element.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return false\nif the value does pass validation. So simply marking a Field as invalid will not prevent submission of forms\nsubmitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"setHeight":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the height of the component. This method fires the resize event.

\n"},"setPagePosition":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the page XY position of the component. To set the left and top instead, use setPosition.\nThis method fires the move event.

\n"},"setPosition":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the left and top of the component. To set the page XY position instead, use setPagePosition. This\nmethod fires the move event.

\n"},"setSize":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the width and height of this Component. This method fires the resize event. This method can accept\neither width and height as separate arguments, or you can pass a size object like {width:10, height:20}.

\n"},"setWidth":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the width of the component. This method fires the resize event.

\n"}}},"HtmlEditor":{"!doc":"

Provides a lightweight HTML Editor component. Some toolbar features are not supported by Safari and will be\nautomatically hidden when needed. These are noted in the config options where appropriate.

\n\n

The editor's toolbar buttons have tooltips defined in the buttonTips property, but they are not\nenabled by default unless the global Ext.tip.QuickTipManager singleton is\ninitialized.

\n\n

An Editor is a sensitive component that can't be used in all spots standard fields can be used. Putting an\nEditor within any element that has display set to 'none' can cause problems in Safari and Firefox due to their\ndefault iframe reloading bugs.

\n\n

Example usage

\n\n

Simple example rendered with default options:

\n\n
Ext.tip.QuickTipManager.init();  // enable tooltips\nExt.create('Ext.form.HtmlEditor', {\n    width: 580,\n    height: 250,\n    renderTo: Ext.getBody()\n});\n
\n\n

Passed via xtype into a container and with custom options:

\n\n
Ext.tip.QuickTipManager.init();  // enable tooltips\nnew Ext.panel.Panel({\n    title: 'HTML Editor',\n    renderTo: Ext.getBody(),\n    width: 550,\n    height: 250,\n    frame: true,\n    layout: 'fit',\n    items: {\n        xtype: 'htmleditor',\n        enableColors: false,\n        enableAlignments: false\n    }\n});\n
\n\n

Reflow issues

\n\n

In some browsers, a layout reflow will cause the underlying editor iframe to be reset. This\nis most commonly seen when using the editor in collapsed panels with animation. In these cases\nit is best to avoid animation. More information can be found here: https://bugzilla.mozilla.org/show_bug.cgi?id=90268

\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_HtmlEditor_cfg)","prototype":{"!proto":"Ext.form.FieldContainer.prototype","afterIFrameTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the iframe element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"afterTextAreaTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the textarea element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"allowDomMove":{"!type":"bool"},"applyTo":{"!type":"string"},"autoCreate":{"!type":"string"},"beforeIFrameTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the iframe element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"beforeTextAreaTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the textarea element. If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"createLinkText":{"!type":"string","!doc":"

The default text for the create link prompt

\n"},"defaultButtonUI":{"!type":"string","!doc":"

A default ui to use for the HtmlEditor's toolbar\nButtons

\n"},"defaultLinkValue":{"!type":"string","!doc":"

The default value for the create link prompt

\n"},"defaultValue":{"!type":"string","!doc":"

A default value to be put into the editor to resolve focus issues.

\n\n

Defaults to (Non-breaking space) in Opera and IE6,\n(Zero-width space) in all other browsers.

\n"},"enableAlignments":{"!type":"bool","!doc":"

Enable the left, center, right alignment buttons

\n"},"enableColors":{"!type":"bool","!doc":"

Enable the fore/highlight color buttons

\n"},"enableFont":{"!type":"bool","!doc":"

Enable font selection. Not available in Safari 2.

\n"},"enableFontSize":{"!type":"bool","!doc":"

Enable the increase/decrease font size buttons

\n"},"enableFormat":{"!type":"bool","!doc":"

Enable the bold, italic and underline buttons

\n"},"enableLinks":{"!type":"bool","!doc":"

Enable the create link button. Not available in Safari 2.

\n"},"enableLists":{"!type":"bool","!doc":"

Enable the bullet and numbered list buttons. Not available in Safari 2.

\n"},"enableSourceEdit":{"!type":"bool","!doc":"

Enable the switch to source edit button. Not available in Safari 2.

\n"},"fieldCls":{"!type":"string"},"focusCls":{"!type":"string"},"fontFamilies":{"!type":"[string]","!doc":"

An array of available font families

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Component's encapsulating DOM element will be hidden. Values may be:

\n\n\n\n"},"iframeAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the iframe element (as attributes). If an XTemplate is used, the component's\nsubTpl data serves as the context.

\n"},"inputType":{"!type":"string"},"invalidCls":{"!type":"string"},"invalidText":{"!type":"string"},"msgFx":{"!type":"string"},"readOnly":{"!type":"string"},"tabIndex":{"!type":"string"},"activated":{"!type":"bool"},"buttonTips":{"!type":"?","!doc":"

Object collection of toolbar tooltips for the buttons in the editor. The key is the command id associated with\nthat button and the value is a valid QuickTips object. For example:

\n\n
{\n    bold: {\n        title: 'Bold (Ctrl+B)',\n        text: 'Make the selected text bold.',\n        cls: 'x-html-editor-tip'\n    },\n    italic: {\n        title: 'Italic (Ctrl+I)',\n        text: 'Make the selected text italic.',\n        cls: 'x-html-editor-tip'\n    }\n    // ...\n}\n
\n"},"componentTpl":{"!type":"[?]"},"containerElCls":{"!type":"string"},"extraFieldBodyCls":{"!type":"string","!doc":"

private

\n"},"fixKeys":{"!type":"?"},"fixKeysAfter":{"!type":"?"},"iframePad":{"!type":"number"},"initialized":{"!type":"bool"},"maskOnDisable":{"!type":"bool","!doc":"

This is an internal flag that you use when creating custom components. By default this is set to true which means\nthat every component gets a mask when it's disabled. Components like FieldContainer, FieldSet, Field, Button, Tab\noverride this property to false since they want to implement custom disable logic.

\n"},"sourceEditMode":{"!type":"bool"},"stretchInputElFixed":{"!type":"bool"},"subTplInsertions":{"!type":"[?]"},"adjustFont":{"!type":"fn(btn: ?) -> !this"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"applyCommand":{"!type":"fn(e: ?) -> !this"},"beforeDestroy":{"!type":"fn() -> !this"},"checkDesignMode":{"!type":"fn() -> !this"},"cleanHtml":{"!type":"fn(html: string) -> string","!doc":"

If you need/want custom HTML cleanup, this is the method you should override.

\n"},"clearInvalid":{"!type":"fn() -> !this","!doc":"

Clear any invalid styles/messages for this field. Components using this mixin should implement this method to\nupdate the components rendering to clear any existing messages.

\n\n

Note: this method does not cause the Field's validate or isValid methods to return true\nif the value does not pass validation. So simply clearing a field's errors will not necessarily allow\nsubmission of forms submitted with the Ext.form.action.Submit.clientValidation option set.

\n"},"createInputCmp":{"!type":"fn() -> !this"},"createLink":{"!type":"fn() -> !this","!doc":"

used internally

\n"},"createToolbar":{"!type":"fn(editor: +Ext.form.field.HtmlEditor) -> !this","!doc":"

Called when the editor creates its toolbar. Override this method if you need to\nadd custom toolbar buttons.

\n"},"deferFocus":{"!type":"fn() -> !this"},"disableItems":{"!type":"fn(disabled: ?) -> !this"},"execCmd":{"!type":"fn(cmd: string, value?: string|bool) -> !this","!doc":"

Executes a Midas editor command directly on the editor document. For visual commands, you should use\nrelayCmd instead. This should only be called after the editor is initialized.

\n"},"focus":{"!type":"fn(eOpts: ?)"},"getDesignMode":{"!type":"fn() -> !this"},"getDoc":{"!type":"fn() -> !this"},"getDocMarkup":{"!type":"fn() -> !this","!doc":"

Called when the editor initializes the iframe with HTML contents. Override this method if you\nwant to change the initialization markup of the iframe (e.g. to add stylesheets).

\n\n

Note: IE8-Standards has unwanted scroller behavior, so the default meta tag forces IE7 compatibility.\nAlso note that forcing IE7 mode works when the page is loaded normally, but if you are using IE's Web\nDeveloper Tools to manually set the document mode, that will take precedence and override what this\ncode sets by default. This can be confusing when developing, but is not a user-facing issue.

\n"},"getEditorBody":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the focus holder element associated with this Container. By default, this is the Container's target\nelement. Subclasses which use embedded focusable elements (such as Window and Button) should override this for use\nby the focus method.

\n"},"getInputCmpCfg":{"!type":"fn() -> !this"},"getMaskTarget":{"!type":"fn() -> !this"},"getToolbar":{"!type":"fn() -> +Ext.toolbar.Toolbar","!doc":"

Returns the editor's toolbar. This is only available after the editor has been rendered.

\n"},"getToolbarCfg":{"!type":"fn() -> !this"},"getValue":{"!type":"fn() -> ?","!doc":"

Returns the current data value of the field. The type of value returned is particular to the type of the\nparticular field (e.g. a Date object for Ext.form.field.Date).

\n"},"getWin":{"!type":"fn() -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initDefaultFont":{"!type":"fn() -> !this"},"initEditor":{"!type":"fn() -> !this"},"initFrameDoc":{"!type":"fn() -> !this"},"insertAtCursor":{"!type":"fn(text: string) -> !this","!doc":"

Inserts the passed text at the current cursor position.\nNote: the editor must be initialized and activated to insert text.

\n"},"isEqual":{"!type":"fn(value1: ?, value2: ?) -> bool","!doc":"

Returns whether two field values are logically equal. Field implementations may override this\nto provide custom comparison logic appropriate for the particular field's data type.

\n"},"onEditorEvent":{"!type":"fn(e: ?) -> !this"},"onFirstFocus":{"!type":"fn() -> !this"},"onRelayedEvent":{"!type":"fn(event: ?) -> !this"},"pushValue":{"!type":"fn() -> !this","!doc":"

Pushes the value of the textarea into the iframe editor.

\n"},"relayBtnCmd":{"!type":"fn(btn: ?) -> !this"},"relayCmd":{"!type":"fn(cmd: string, value?: string|bool) -> !this","!doc":"

Executes a Midas editor command on the editor document and performs necessary focus and toolbar updates.\nThis should only be called after the editor is initialized.

\n"},"setDesignMode":{"!type":"fn(mode: ?) -> !this","!doc":"

Sets current design mode. To enable, mode can be true or 'on', off otherwise

\n"},"setReadOnly":{"!type":"fn(readOnly: bool) -> !this","!doc":"

Sets the read only state of this field.

\n"},"setValue":{"!type":"fn(value: ?) -> +Ext.form.field.Field","!doc":"

Sets a data value into the field and runs the change detection and validation.

\n"},"syncValue":{"!type":"fn() -> !this","!doc":"

Syncs the contents of the editor iframe with the textarea.

\n"},"toggleSourceEdit":{"!type":"fn(sourceEditMode?: bool) -> !this","!doc":"

Toggles the editor between standard and source edit mode.

\n"},"updateToolbar":{"!type":"fn() -> !this","!doc":"

Triggers a toolbar update by reading the markup state of the current selection in the editor.

\n"},"validate":{"!type":"fn()"},"activate":{"!type":"fn(this: +Ext.form.field.HtmlEditor, eOpts: ?)","!doc":"

Fires when the editor is first receives the focus. Any insertion must wait until after this event.

\n"},"beforepush":{"!type":"fn(this: +Ext.form.field.HtmlEditor, html: string, eOpts: ?)","!doc":"

Fires before the iframe editor is updated with content from the textarea. Return false to cancel the\npush.

\n"},"beforesync":{"!type":"fn(this: +Ext.form.field.HtmlEditor, html: string, eOpts: ?)","!doc":"

Fires before the textarea is updated with content from the editor iframe. Return false to cancel the\nsync.

\n"},"blur":{"!type":"fn(eOpts: ?)"},"editmodechange":{"!type":"fn(this: +Ext.form.field.HtmlEditor, sourceEdit: bool, eOpts: ?)","!doc":"

Fires when the editor switches edit modes

\n"},"initialize":{"!type":"fn(this: +Ext.form.field.HtmlEditor, eOpts: ?)","!doc":"

Fires when the editor is fully initialized (including the iframe)

\n"},"push":{"!type":"fn(this: +Ext.form.field.HtmlEditor, html: string, eOpts: ?)","!doc":"

Fires when the iframe editor is updated with content from the textarea.

\n"},"specialkey":{"!type":"fn(eOpts: ?)"},"sync":{"!type":"fn(this: +Ext.form.field.HtmlEditor, html: string, eOpts: ?)","!doc":"

Fires when the textarea is updated with content from the editor iframe.

\n"}}},"Number":{"!doc":"

A numeric text field that provides automatic keystroke filtering to disallow non-numeric characters,\nand numeric validation to limit the value to a range of valid numbers. The range of acceptable number\nvalues can be controlled by setting the minValue and maxValue configs, and fractional\ndecimals can be disallowed by setting allowDecimals to false.

\n\n

By default, the number field is also rendered with a set of up/down spinner buttons and has\nup/down arrow key and mouse wheel event listeners attached for incrementing/decrementing the value by the\nstep value. To hide the spinner buttons set hideTrigger:true; to disable\nthe arrow key and mouse wheel handlers set keyNavEnabled:false and\nmouseWheelEnabled:false. See the example below.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'On The Wall',\n    width: 300,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items: [{\n        xtype: 'numberfield',\n        anchor: '100%',\n        name: 'bottles',\n        fieldLabel: 'Bottles of Beer',\n        value: 99,\n        maxValue: 99,\n        minValue: 0\n    }],\n    buttons: [{\n        text: 'Take one down, pass it around',\n        handler: function() {\n            this.up('form').down('[name=bottles]').spinDown();\n        }\n    }]\n});\n
\n\n

Removing UI Enhancements

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Personal Info',\n    width: 300,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items: [{\n        xtype: 'numberfield',\n        anchor: '100%',\n        name: 'age',\n        fieldLabel: 'Age',\n        minValue: 0, //prevents negative numbers\n\n        // Remove spinner buttons, and arrow key and mouse wheel listeners\n        hideTrigger: true,\n        keyNavEnabled: false,\n        mouseWheelEnabled: false\n    }]\n});\n
\n\n

Using Step

\n\n
Ext.create('Ext.form.Panel', {\n    renderTo: Ext.getBody(),\n    title: 'Step',\n    width: 300,\n    bodyPadding: 10,\n    items: [{\n        xtype: 'numberfield',\n        anchor: '100%',\n        name: 'evens',\n        fieldLabel: 'Even Numbers',\n\n        // Set step so it skips every other number\n        step: 2,\n        value: 0,\n\n        // Add change handler to force user-entered numbers to evens\n        listeners: {\n            change: function(field, value) {\n                value = parseInt(value, 10);\n                field.setValue(value + value % 2);\n            }\n        }\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Number_cfg)","prototype":{"!proto":"Ext.form.field.Spinner.prototype","allowDecimals":{"!type":"bool","!doc":"

False to disallow decimal values

\n"},"allowExponential":{"!type":"bool","!doc":"

Set to false to disallow Exponential number notation

\n"},"autoStripChars":{"!type":"bool","!doc":"

True to automatically strip not allowed characters from the field.

\n"},"baseChars":{"!type":"string","!doc":"

The base set of characters to evaluate as valid numbers.

\n"},"decimalPrecision":{"!type":"number","!doc":"

The maximum precision to display after the decimal separator

\n"},"decimalSeparator":{"!type":"string","!doc":"

Character(s) to allow as the decimal separator

\n"},"maskRe":{"!type":"+RegExp"},"maxText":{"!type":"string","!doc":"

Error text to display if the maximum value validation fails.

\n"},"maxValue":{"!type":"number","!doc":"

The maximum allowed value. Will be used by the field's validation logic, and for\nenabling/disabling the up spinner button.

\n\n

Defaults to Number.MAX_VALUE.

\n"},"minText":{"!type":"string","!doc":"

Error text to display if the minimum value validation fails.

\n"},"minValue":{"!type":"number","!doc":"

The minimum allowed value. Will be used by the field's validation logic,\nand for enabling/disabling the down spinner button.

\n\n

Defaults to Number.NEGATIVE_INFINITY.

\n"},"nanText":{"!type":"string","!doc":"

Error text to display if the value is not a valid number. For example, this can happen if a valid character like\n'.' or '-' is left in the field with no number.

\n"},"negativeText":{"!type":"string","!doc":"

Error text to display if the value is negative and minValue is set to 0. This is used instead of the\nminText in that circumstance only.

\n"},"step":{"!type":"number","!doc":"

Specifies a numeric interval by which the field's value will be incremented or decremented when the user invokes\nthe spinner.

\n"},"stripCharsRe":{"!type":"+RegExp"},"submitLocaleSeparator":{"!type":"bool","!doc":"

False to ensure that the getSubmitValue method strips\nalways uses . as the separator, regardless of the decimalSeparator\nconfiguration.

\n"},"beforeBlur":{"!type":"fn() -> !this","!doc":"

Template method to do any pre-blur processing.

\n"},"fixPrecision":{"!type":"fn(value: ?) -> !this"},"getErrors":{"!type":"fn(value?: ?) -> [string]","!doc":"

Runs all of Number's validations and returns an array of any errors. Note that this first runs Text's\nvalidations, so the returned array is an amalgamation of all field errors. The additional validations run test\nthat the value is a number, and that it is within the configured min and max values.

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the value that would be included in a standard form submit for this field. This will be combined with the\nfield's name to form a name=value pair in the submitted parameters. If an empty string is\nreturned then just the name= will be submitted; if null is returned then nothing will be submitted.

\n\n

Note that the value returned will have been processed but may or may not have been\nsuccessfully validated.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"onChange":{"!type":"fn() -> !this","!doc":"

If grow=true, invoke the autoSize method when the field's value is changed.

\n"},"onSpinDown":{"!type":"fn() -> !this","!doc":"

This method is called when the spinner down button is clicked, or when the down arrow key is pressed if\nkeyNavEnabled is true. Must be implemented by subclasses.

\n"},"onSpinUp":{"!type":"fn() -> !this","!doc":"

This method is called when the spinner up button is clicked, or when the up arrow key is pressed if\nkeyNavEnabled is true. Must be implemented by subclasses.

\n"},"parseValue":{"!type":"fn(value: ?) -> !this","!doc":"

private

\n"},"rawToValue":{"!type":"fn(rawValue: ?) -> ?","!doc":"

Converts a raw input field value into a mixed-type value that is suitable for this particular field type. This\nallows controlling the normalization and conversion of user-entered values into field-type-appropriate values,\ne.g. a Date object for Ext.form.field.Date, and is invoked by getValue.

\n\n

It is up to individual implementations to decide how to handle raw values that cannot be successfully converted\nto the desired object type.

\n\n

See valueToRaw for the opposite conversion.

\n\n

The base implementation does no conversion, returning the raw value untouched.

\n"},"setMaxValue":{"!type":"fn(value: number) -> !this","!doc":"

Replaces any existing maxValue with the new value.

\n"},"setMinValue":{"!type":"fn(value: number) -> !this","!doc":"

Replaces any existing minValue with the new value.

\n"},"setSpinDownEnabled":{"!type":"fn(enabled: ?, internal: ?) -> !this","!doc":"

Sets whether the spinner down button is enabled.

\n"},"setSpinUpEnabled":{"!type":"fn(enabled: ?, internal: ?) -> !this","!doc":"

Sets whether the spinner up button is enabled.

\n"},"setSpinValue":{"!type":"fn(value: ?) -> !this"},"toggleSpinners":{"!type":"fn() -> !this"},"valueToRaw":{"!type":"fn(value: ?) -> ?","!doc":"

Converts a mixed-type value to a raw representation suitable for displaying in the field. This allows controlling\nhow value objects passed to setValue are shown to the user, including localization. For instance, for a\nExt.form.field.Date, this would control how a Date object passed to setValue would be converted\nto a String for display in the field.

\n\n

See rawToValue for the opposite conversion.

\n\n

The base implementation simply does a standard toString conversion, and converts empty values\nto an empty string.

\n"}}},"Picker":{"!doc":"

An abstract class for fields that have a single trigger which opens a \"picker\" popup below the field, e.g. a combobox\nmenu list or a date picker. It provides a base implementation for toggling the picker's visibility when the trigger\nis clicked, as well as keyboard navigation and some basic events. Sizing and alignment of the picker can be\ncontrolled via the matchFieldWidth and pickerAlign/pickerOffset config properties\nrespectively.

\n\n

You would not normally use this class directly, but instead use it as the parent class for a specific picker field\nimplementation. Subclasses must implement the createPicker method to create a picker component appropriate\nfor the field.

\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Picker_cfg)","prototype":{"!proto":"Ext.form.field.Trigger.prototype","editable":{"!type":"bool","!doc":"

False to prevent the user from typing text directly into the field; the field can only have its value set via\nselecting a value from the picker. In this state, the picker can also be opened by clicking directly on the input\nfield itself.

\n"},"matchFieldWidth":{"!type":"bool","!doc":"

Whether the picker dropdown's width should be explicitly set to match the width of the field. Defaults to true.

\n"},"openCls":{"!type":"string","!doc":"

A class to be added to the field's bodyEl element when the picker is opened.

\n"},"pickerAlign":{"!type":"string","!doc":"

The alignment position with which to align the picker. Defaults to \"tl-bl?\"

\n"},"pickerOffset":{"!type":"[number]","!doc":"

An offset [x,y] to use in addition to the pickerAlign when positioning the picker.\nDefaults to undefined.

\n"},"isExpanded":{"!type":"bool","!doc":"

True if the picker is currently expanded, false if not.

\n"},"alignPicker":{"!type":"fn() -> !this","!doc":"

Aligns the picker to the input element

\n"},"collapse":{"!type":"fn(field: +Ext.form.field.Picker, eOpts: ?)","!doc":"

Fires when the field's picker is collapsed.

\n"},"collapseIf":{"!type":"fn(e: ?) -> !this","!doc":"

Runs on mousewheel and mousedown of doc to check to see if we should collapse the picker

\n"},"createPicker":{"!type":"fn() -> !this","!doc":"

Creates and returns the component to be used as this field's picker. Must be implemented by subclasses of Picker.\nThe current field should also be passed as a configuration option to the picker component as the pickerField\nproperty.

\n"},"doAlign":{"!type":"fn() -> !this","!doc":"

Performs the alignment on the picker using the class defaults

\n"},"expand":{"!type":"fn(field: +Ext.form.field.Picker, eOpts: ?)","!doc":"

Fires when the field's picker is expanded.

\n"},"getPicker":{"!type":"fn() -> +Ext.Component","!doc":"

Returns a reference to the picker component for this field, creating it if necessary by\ncalling createPicker.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

private

\n"},"isEventWithinPickerLoadMask":{"!type":"fn(e: +Ext.EventObject) -> bool","!doc":"

returns true if the picker has a load mask and the passed event is within the load mask

\n"},"mimicBlur":{"!type":"fn(e: ?) -> !this"},"onCollapse":{"!type":"fn() -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDownArrow":{"!type":"fn(e: ?) -> !this"},"onEsc":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onExpand":{"!type":"fn() -> !this"},"onTriggerClick":{"!type":"fn() -> !this","!doc":"

Handles the trigger click; by default toggles between expanding and collapsing the picker component.

\n"},"triggerBlur":{"!type":"fn() -> !this"},"select":{"!type":"fn(field: +Ext.form.field.Picker, value: ?, eOpts: ?)","!doc":"

Fires when a value is selected via the picker.

\n"}}},"Radio":{"!doc":"

Single radio field. Similar to checkbox, but automatically handles making sure only one radio is checked\nat a time within a group of radios with the same name.

\n\n

Labeling

\n\n

In addition to the standard field labeling options, radio buttons\nmay be given an optional boxLabel which will be displayed immediately to the right of the input. Also\nsee Ext.form.RadioGroup for a convenient method of grouping related radio buttons.

\n\n

Values

\n\n

The main value of a Radio field is a boolean, indicating whether or not the radio is checked.

\n\n

The following values will check the radio:

\n\n\n\n\n

Any other value will uncheck it.

\n\n

In addition to the main boolean value, you may also specify a separate inputValue. This will be sent\nas the parameter value when the form is submitted. You will want to set this\nvalue if you have multiple radio buttons with the same name, as is almost always the case.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    title      : 'Order Form',\n    width      : 300,\n    bodyPadding: 10,\n    renderTo   : Ext.getBody(),\n    items: [\n        {\n            xtype      : 'fieldcontainer',\n            fieldLabel : 'Size',\n            defaultType: 'radiofield',\n            defaults: {\n                flex: 1\n            },\n            layout: 'hbox',\n            items: [\n                {\n                    boxLabel  : 'M',\n                    name      : 'size',\n                    inputValue: 'm',\n                    id        : 'radio1'\n                }, {\n                    boxLabel  : 'L',\n                    name      : 'size',\n                    inputValue: 'l',\n                    id        : 'radio2'\n                }, {\n                    boxLabel  : 'XL',\n                    name      : 'size',\n                    inputValue: 'xl',\n                    id        : 'radio3'\n                }\n            ]\n        },\n        {\n            xtype      : 'fieldcontainer',\n            fieldLabel : 'Color',\n            defaultType: 'radiofield',\n            defaults: {\n                flex: 1\n            },\n            layout: 'hbox',\n            items: [\n                {\n                    boxLabel  : 'Blue',\n                    name      : 'color',\n                    inputValue: 'blue',\n                    id        : 'radio4'\n                }, {\n                    boxLabel  : 'Grey',\n                    name      : 'color',\n                    inputValue: 'grey',\n                    id        : 'radio5'\n                }, {\n                    boxLabel  : 'Black',\n                    name      : 'color',\n                    inputValue: 'black',\n                    id        : 'radio6'\n                }\n            ]\n        }\n    ],\n    bbar: [\n        {\n            text: 'Smaller Size',\n            handler: function() {\n                var radio1 = Ext.getCmp('radio1'),\n                    radio2 = Ext.getCmp('radio2'),\n                    radio3 = Ext.getCmp('radio3');\n\n                //if L is selected, change to M\n                if (radio2.getValue()) {\n                    radio1.setValue(true);\n                    return;\n                }\n\n                //if XL is selected, change to L\n                if (radio3.getValue()) {\n                    radio2.setValue(true);\n                    return;\n                }\n\n                //if nothing is set, set size to S\n                radio1.setValue(true);\n            }\n        },\n        {\n            text: 'Larger Size',\n            handler: function() {\n                var radio1 = Ext.getCmp('radio1'),\n                    radio2 = Ext.getCmp('radio2'),\n                    radio3 = Ext.getCmp('radio3');\n\n                //if M is selected, change to L\n                if (radio1.getValue()) {\n                    radio2.setValue(true);\n                    return;\n                }\n\n                //if L is selected, change to XL\n                if (radio2.getValue()) {\n                    radio3.setValue(true);\n                    return;\n                }\n\n                //if nothing is set, set size to XL\n                radio3.setValue(true);\n            }\n        },\n        '-',\n        {\n            text: 'Select color',\n            menu: {\n                indent: false,\n                items: [\n                    {\n                        text: 'Blue',\n                        handler: function() {\n                            var radio = Ext.getCmp('radio4');\n                            radio.setValue(true);\n                        }\n                    },\n                    {\n                        text: 'Grey',\n                        handler: function() {\n                            var radio = Ext.getCmp('radio5');\n                            radio.setValue(true);\n                        }\n                    },\n                    {\n                        text: 'Black',\n                        handler: function() {\n                            var radio = Ext.getCmp('radio6');\n                            radio.setValue(true);\n                        }\n                    }\n                ]\n            }\n        }\n    ]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Radio_cfg)","prototype":{"!proto":"Ext.form.field.Checkbox.prototype","focusCls":{"!type":"string","!doc":"

The CSS class to use when the radio field receives focus

\n"},"inputType":{"!type":"string","!doc":"

private

\n"},"uncheckedValue":{"!type":"string"},"ariaRole":{"!type":"string"},"formId":{"!type":"?"},"isRadio":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Radio, or subclass thereof.

\n"},"getGroupValue":{"!type":"fn() -> string","!doc":"

If this radio is part of a group, it will return the selected value

\n"},"getManager":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"getModelData":{"!type":"fn() -> ?","!doc":"

Returns the value(s) that should be saved to the Ext.data.Model instance for this field, when Ext.form.Basic.updateRecord is called. Typically this will be an object with a single name-value pair, the name\nbeing this field's name and the value being its current data value. More advanced field\nimplementations may return more than one name-value pair. The returned values will be saved to the corresponding\nfield names in the Model.

\n\n

Note that the values returned from this method are not guaranteed to have been successfully validated.

\n"},"getSubmitValue":{"!type":"fn() -> bool|?","!doc":"

Returns the submit value for the checkbox which can be used when submitting forms.

\n"},"onBoxClick":{"!type":"fn(e: ?) -> !this","!doc":"

Handle click on the radio button

\n"},"onChange":{"!type":"fn(newVal: ?, oldVal: ?) -> !this","!doc":"

inherit docs

\n"},"onRemoved":{"!type":"fn() -> !this","!doc":"

Method to manage awareness of when components are removed from their\nrespective Container, firing a removed event. References are properly\ncleaned up after removing a component from its owning container.

\n\n

Allows addition of behavior when a Component is removed from\nits parent Container. At this stage, the Component has been\nremoved from its parent Container's collection of child items,\nbut has not been destroyed (It will be destroyed if the parent\nContainer's autoDestroy is true, or if the remove call was\npassed a truthy second parameter). After calling the\nsuperclass's onRemoved, the ownerCt and the refOwner will not\nbe present.

\n"},"setValue":{"!type":"fn(value: string|bool) -> +Ext.form.field.Radio","!doc":"

Sets either the checked/unchecked status of this Radio, or, if a string value is passed, checks a sibling Radio\nof the same name whose value is the value specified.

\n"}}},"Spinner":{"!doc":"

A field with a pair of up/down spinner buttons. This class is not normally instantiated directly,\ninstead it is subclassed and the onSpinUp and onSpinDown methods are implemented\nto handle when the buttons are clicked. A good example of this is the Ext.form.field.Number\nfield which uses the spinner to increment and decrement the field's value by its\nstep config value.

\n\n

For example:

\n\n
Ext.define('Ext.ux.CustomSpinner', {\n    extend: 'Ext.form.field.Spinner',\n    alias: 'widget.customspinner',\n\n    // override onSpinUp (using step isn't neccessary)\n    onSpinUp: function() {\n        var me = this;\n        if (!me.readOnly) {\n            var val = parseInt(me.getValue().split(' '), 10)||0; // gets rid of \" Pack\", defaults to zero on parse failure\n            me.setValue((val + me.step) + ' Pack');\n        }\n    },\n\n    // override onSpinDown\n    onSpinDown: function() {\n        var me = this;\n        if (!me.readOnly) {\n           var val = parseInt(me.getValue().split(' '), 10)||0; // gets rid of \" Pack\", defaults to zero on parse failure\n           if (val <= me.step) {\n               me.setValue('Dry!');\n           } else {\n               me.setValue((val - me.step) + ' Pack');\n           }\n        }\n    }\n});\n\nExt.create('Ext.form.FormPanel', {\n    title: 'Form with SpinnerField',\n    bodyPadding: 5,\n    width: 350,\n    renderTo: Ext.getBody(),\n    items:[{\n        xtype: 'customspinner',\n        fieldLabel: 'How Much Beer?',\n        step: 6\n    }]\n});\n
\n\n

By default, pressing the up and down arrow keys will also trigger the onSpinUp and onSpinDown methods;\nto prevent this, set keyNavEnabled = false.

\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Spinner_cfg)","prototype":{"!proto":"Ext.form.field.Trigger.prototype","keyNavEnabled":{"!type":"bool","!doc":"

Specifies whether the up and down arrow keys should trigger spinning up and down. Defaults to true.

\n"},"mouseWheelEnabled":{"!type":"bool","!doc":"

Specifies whether the mouse wheel should trigger spinning up and down while the field has focus.\nDefaults to true.

\n"},"repeatTriggerClick":{"!type":"bool","!doc":"

Whether a click repeater should be attached to the spinner buttons.\nDefaults to true.

\n"},"spinDownEnabled":{"!type":"bool","!doc":"

Specifies whether the down spinner button is enabled. Defaults to true. To change this after the component is\ncreated, use the setSpinDownEnabled method.

\n"},"spinUpEnabled":{"!type":"bool","!doc":"

Specifies whether the up spinner button is enabled. Defaults to true. To change this after the component is\ncreated, use the setSpinUpEnabled method.

\n"},"spinDownEl":{"!type":"+Ext.Element","!doc":"

The spinner down button element

\n"},"spinUpEl":{"!type":"+Ext.Element","!doc":"

The spinner up button element

\n"},"trigger1Cls":{"!type":"string"},"trigger2Cls":{"!type":"string"},"triggerTpl":{"!type":"string"},"getSubTplMarkup":{"!type":"fn(values: ?) -> !this","!doc":"

Gets the markup to be inserted into the outer template's bodyEl. For fields this is the actual input element.

\n"},"getTriggerData":{"!type":"fn() -> !this"},"getTriggerMarkup":{"!type":"fn() -> !this"},"getTriggerWidth":{"!type":"fn() -> number","!doc":"

Get the total width of the spinner button area.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onMouseWheel":{"!type":"fn(e: ?) -> !this","!doc":"

Handles mousewheel events on the field

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Override.

\n"},"onSpinDown":{"!type":"fn() -> !this","!doc":"

This method is called when the spinner down button is clicked, or when the down arrow key is pressed if\nkeyNavEnabled is true. Must be implemented by subclasses.

\n"},"onSpinUp":{"!type":"fn() -> !this","!doc":"

This method is called when the spinner up button is clicked, or when the up arrow key is pressed if\nkeyNavEnabled is true. Must be implemented by subclasses.

\n"},"onTrigger1Click":{"!type":"fn() -> !this","!doc":"

Handles the spinner up button clicks.

\n"},"onTrigger2Click":{"!type":"fn() -> !this","!doc":"

Handles the spinner down button clicks.

\n"},"onTriggerWrapMouseup":{"!type":"fn() -> !this","!doc":"

private\nHandle trigger mouse up gesture; refocuses the input element upon end of spin.

\n"},"setSpinDownEnabled":{"!type":"fn(enabled: bool) -> !this","!doc":"

Sets whether the spinner down button is enabled.

\n"},"setSpinUpEnabled":{"!type":"fn(enabled: bool) -> !this","!doc":"

Sets whether the spinner up button is enabled.

\n"},"spinDown":{"!type":"fn() -> !this","!doc":"

Triggers the spinner to step down; fires the spin and spindown events and calls the\nonSpinDown method. Does nothing if the field is disabled or if spinDownEnabled\nis false.

\n"},"spinUp":{"!type":"fn() -> !this","!doc":"

Triggers the spinner to step up; fires the spin and spinup events and calls the\nonSpinUp method. Does nothing if the field is disabled or if spinUpEnabled\nis false.

\n"},"spin":{"!type":"fn(this: +Ext.form.field.Spinner, direction: string, eOpts: ?)","!doc":"

Fires when the spinner is made to spin up or down.

\n"},"spindown":{"!type":"fn(this: +Ext.form.field.Spinner, eOpts: ?)","!doc":"

Fires when the spinner is made to spin down.

\n"},"spinup":{"!type":"fn(this: +Ext.form.field.Spinner, eOpts: ?)","!doc":"

Fires when the spinner is made to spin up.

\n"}}},"Text":{"!doc":"

A basic text field. Can be used as a direct replacement for traditional text inputs,\nor as the base class for more sophisticated input controls (like Ext.form.field.TextArea\nand Ext.form.field.ComboBox). Has support for empty-field placeholder values (see emptyText).

\n\n

Validation

\n\n

The Text field has a useful set of validations built in:

\n\n\n\n\n

In addition, custom validations may be added:

\n\n\n\n\n

The details around how and when each of these validation options get used are described in the\ndocumentation for getErrors.

\n\n

By default, the field value is checked for validity immediately while the user is typing in the\nfield. This can be controlled with the validateOnChange, checkChangeEvents, and\ncheckChangeBuffer configurations. Also see the details on Form Validation in the\nExt.form.Panel class documentation.

\n\n

Masking and Character Stripping

\n\n

Text fields can be configured with custom regular expressions to be applied to entered values before\nvalidation: see maskRe and stripCharsRe for details.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Contact Info',\n    width: 300,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items: [{\n        xtype: 'textfield',\n        name: 'name',\n        fieldLabel: 'Name',\n        allowBlank: false  // requires a non-empty value\n    }, {\n        xtype: 'textfield',\n        name: 'email',\n        fieldLabel: 'Email Address',\n        vtype: 'email'  // requires value to be a valid email address format\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Text_cfg)","prototype":{"!proto":"Ext.form.field.Base.prototype","allowBlank":{"!type":"bool","!doc":"

Specify false to validate that the value's length must be > 0. If true, then a blank value is always taken to be valid regardless of any vtype\nvalidation that may be applied.

\n\n

If vtype validation must still be applied to blank values, configure validateBlank as true;

\n"},"allowOnlyWhitespace":{"!type":"bool","!doc":"

Specify false to automatically trim the value before validating\nthe whether the value is blank. Setting this to false automatically\nsets allowBlank to false.

\n"},"blankText":{"!type":"string","!doc":"

The error text to display if the allowBlank validation fails

\n"},"disableKeyFilter":{"!type":"bool","!doc":"

Specify true to disable input keystroke filtering

\n"},"emptyCls":{"!type":"string","!doc":"

The CSS class to apply to an empty field to style the emptyText.\nThis class is automatically added and removed as needed depending on the current field value.

\n"},"emptyText":{"!type":"string","!doc":"

The default text to place into an empty field.

\n\n

Note that normally this value will be submitted to the server if this field is enabled; to prevent this you can\nset the submitEmptyText option of Ext.form.Basic.submit to\nfalse.

\n\n

Also note that if you use inputType:'file', emptyText is not supported and should be\navoided.

\n\n

Note that for browsers that support it, setting this property will use the HTML 5 placeholder attribute, and for\nolder browsers that don't support the HTML 5 placeholder attribute the value will be placed directly into the input\nelement itself as the raw value. This means that older browsers will obfuscate the emptyText value for\npassword input fields.

\n"},"enableKeyEvents":{"!type":"bool","!doc":"

true to enable the proxying of key events for the HTML input field

\n"},"enforceMaxLength":{"!type":"bool","!doc":"

True to set the maxLength property on the underlying input field. Defaults to false

\n"},"grow":{"!type":"bool","!doc":"

true if this field should automatically grow and shrink to its content

\n"},"growAppend":{"!type":"string","!doc":"

A string that will be appended to the field's current value for the purposes of calculating the target field\nsize. Only used when the grow config is true. Defaults to a single capital \"W\" (the widest character in\ncommon fonts) to leave enough space for the next typed character and avoid the field value shifting before the\nwidth is adjusted.

\n"},"growMax":{"!type":"number","!doc":"

The maximum width to allow when grow = true

\n"},"growMin":{"!type":"number","!doc":"

The minimum width to allow when grow = true

\n"},"maskRe":{"!type":"+RegExp","!doc":"

An input mask regular expression that will be used to filter keystrokes (character being\ntyped) that do not match.\nNote: It does not filter characters already in the input.

\n"},"maxLength":{"!type":"number","!doc":"

Maximum input field length allowed by validation. This behavior is intended to\nprovide instant feedback to the user by improving usability to allow pasting and editing or overtyping and back\ntracking. To restrict the maximum number of characters that can be entered into the field use the\nenforceMaxLength option.

\n\n

Defaults to Number.MAX_VALUE.

\n"},"maxLengthText":{"!type":"string","!doc":"

Error text to display if the maximum length validation fails

\n"},"minLength":{"!type":"number","!doc":"

Minimum input field length required

\n"},"minLengthText":{"!type":"string","!doc":"

Error text to display if the minimum length validation fails.

\n"},"regex":{"!type":"+RegExp","!doc":"

A JavaScript RegExp object to be tested against the field value during validation.\nIf the test fails, the field will be marked invalid using\neither regexText or invalidText.

\n"},"regexText":{"!type":"string","!doc":"

The error text to display if regex is used and the test fails during validation

\n"},"requiredCls":{"!type":"string","!doc":"

The CSS class to apply to a required field, i.e. a field where allowBlank is false.

\n"},"selectOnFocus":{"!type":"bool","!doc":"

true to automatically select any existing field text when the field receives input focus

\n"},"size":{"!type":"number","!doc":"

An initial value for the 'size' attribute on the text input element. This is only used if the field has no\nconfigured width and is not given a width by its container's layout. Defaults to 20.

\n"},"stripCharsRe":{"!type":"+RegExp","!doc":"

A JavaScript RegExp object used to strip unwanted content from the value\nduring input. If stripCharsRe is specified,\nevery character sequence matching stripCharsRe will be removed.

\n"},"validateBlank":{"!type":"bool","!doc":"

Specify as true to modify the behaviour of allowBlank so that blank values are not passed as valid, but are subject to any configure vtype validation.

\n"},"validator":{"!type":"fn()","!doc":"

A custom validation function to be called during field validation (getErrors).\nIf specified, this function will be called first, allowing the developer to override the default validation\nprocess.

\n\n

This function will be passed the following parameters:

\n"},"vtype":{"!type":"string","!doc":"

A validation type name as defined in Ext.form.field.VTypes

\n"},"vtypeText":{"!type":"string","!doc":"

A custom error message to display in place of the default message provided for the vtype currently\nset for this field. Note: only applies if vtype is set, else ignored.

\n"},"valueContainsPlaceholder":{"!type":"bool","!doc":"

private

\n"},"afterComponentLayout":{"!type":"fn() -> !this","!doc":"

Called by the layout system after the Component has been laid out.

\n"},"afterFirstLayout":{"!type":"fn() -> !this"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"applyEmptyText":{"!type":"fn() -> !this"},"applyState":{"!type":"fn(state: ?) -> !this","!doc":"

Applies the state to the object. This should be overridden in subclasses to do\nmore complex state operations. By default it applies the state properties onto\nthe current object.

\n"},"autoSize":{"!type":"fn() -> !this","!doc":"

Automatically grows the field to accomodate the width of the text up to the maximum field width allowed. This\nonly takes effect if grow = true, and fires the autosize event if the width changes.

\n"},"beforeFocus":{"!type":"fn() -> !this","!doc":"

private

\n"},"filterKeys":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"focusInput":{"!type":"fn() -> !this"},"getErrors":{"!type":"fn(value: ?) -> [string]","!doc":"

Validates a value according to the field's validation rules and returns an array of errors\nfor any failing validations. Validation rules are processed in the following order:

\n\n
    \n
  1. Field specific validator

    \n\n

    A validator offers a way to customize and reuse a validation specification.\n If a field is configured with a validator\n function, it will be passed the current field value. The validator\n function is expected to return either:

    \n\n\n
  2. \n
  3. Basic Validation

    \n\n

    If the validator has not halted validation,\n basic validation proceeds as follows:

    \n\n\n
  4. \n
  5. Preconfigured Validation Types (VTypes)

    \n\n

    If none of the prior validation steps halts validation, a field\n configured with a vtype will utilize the\n corresponding VTypes validation function.\n If invalid, either the field's vtypeText or\n the VTypes vtype Text property will be used for the invalid message.\n Keystrokes on the field will be filtered according to the VTypes\n vtype Mask property.

  6. \n
  7. Field specific regex test

    \n\n

    If none of the prior validation steps halts validation, a field's\n configured regex test will be processed.\n The invalid message for this test is configured with regexText

  8. \n
\n\n"},"getRawValue":{"!type":"fn() -> string","!doc":"

Returns the raw String value of the field, without performing any normalization, conversion, or validation. Gets\nthe current value of the input element if the field has been rendered, ignoring the value if it is the\nemptyText. To get a normalized and converted value see getValue.

\n"},"getState":{"!type":"fn() -> ?","!doc":"

The supplied default state gathering method for the AbstractComponent class.

\n\n

This method returns dimension settings such as flex, anchor, width and height along with collapsed\nstate.

\n\n

Subclasses which implement more complex state should call the superclass's implementation, and apply their state\nto the result if this basic state is to be saved.

\n\n

Note that Component state will only be saved if the Component has a stateId and there as a StateProvider\nconfigured for the document.

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

Creates and returns the data object to be used when rendering the fieldSubTpl.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

private

\n"},"isEqual":{"!type":"fn(value1: ?, value2: ?) -> !this","!doc":"

Override. Treat undefined and null values as equal to an empty string value.

\n"},"onChange":{"!type":"fn(newVal: ?, oldVal: ?) -> !this","!doc":"

If grow=true, invoke the autoSize method when the field's value is changed.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onFocus":{"!type":"fn() -> !this","!doc":"

private

\n"},"onKeyDown":{"!type":"fn(e: ?) -> !this","!doc":"

Listen for TAB events and wrap round if tabbing of either end of the Floater

\n"},"onKeyPress":{"!type":"fn(e: ?) -> !this"},"onKeyUp":{"!type":"fn(e: ?) -> !this"},"onMouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

Mousedown brings to front, and programatically grabs focus unless the mousedown was on a focusable element

\n"},"postBlur":{"!type":"fn() -> !this","!doc":"

private

\n"},"processRawValue":{"!type":"fn(value: string) -> string","!doc":"

Performs any necessary manipulation of a raw String value to prepare it for conversion and/or\nvalidation. For text fields this applies the configured stripCharsRe\nto the raw value.

\n"},"reset":{"!type":"fn() -> !this","!doc":"

Resets the current field value to the originally-loaded value and clears any validation messages.\nAlso adds emptyText and emptyCls if the original value was blank.

\n"},"selectText":{"!type":"fn(start?: number, end?: number) -> !this","!doc":"

Selects text in this field

\n"},"setGrowSizePolicy":{"!type":"fn() -> !this","!doc":"

private

\n"},"setValue":{"!type":"fn(value: ?) -> +Ext.form.field.Text","!doc":"

Sets a data value into the field and runs the change detection and validation. Also applies any configured\nemptyText for text fields. To set the value directly without these inspections see setRawValue.

\n"},"autosize":{"!type":"fn(this: +Ext.form.field.Text, width: number, eOpts: ?)","!doc":"

Fires when the autoSize function is triggered and the field is resized according to the\ngrow/growMin/growMax configs as a result. This event provides a hook for the\ndeveloper to apply additional logic at runtime to resize the field if needed.

\n"},"keydown":{"!type":"fn(this: +Ext.form.field.Text, e: +Ext.EventObject, eOpts: ?)","!doc":"

Keydown input field event. This event only fires if enableKeyEvents is set to true.

\n"},"keypress":{"!type":"fn(this: +Ext.form.field.Text, e: +Ext.EventObject, eOpts: ?)","!doc":"

Keypress input field event. This event only fires if enableKeyEvents is set to true.

\n"},"keyup":{"!type":"fn(this: +Ext.form.field.Text, e: +Ext.EventObject, eOpts: ?)","!doc":"

Keyup input field event. This event only fires if enableKeyEvents is set to true.

\n"}}},"TextArea":{"!doc":"

This class creates a multiline text field, which can be used as a direct replacement for traditional\ntextarea fields. In addition, it supports automatically growing the height of the textarea to\nfit its content.

\n\n

All of the configuration options from Ext.form.field.Text can be used on TextArea.

\n\n

Example usage:

\n\n
Ext.create('Ext.form.FormPanel', {\n    title      : 'Sample TextArea',\n    width      : 400,\n    bodyPadding: 10,\n    renderTo   : Ext.getBody(),\n    items: [{\n        xtype     : 'textareafield',\n        grow      : true,\n        name      : 'message',\n        fieldLabel: 'Message',\n        anchor    : '100%'\n    }]\n});\n
\n\n

Some other useful configuration options when using grow are growMin and growMax.\nThese allow you to set the minimum and maximum grow heights for the textarea.

\n\n

NOTE: In some browsers, carriage returns ('\\r', not to be confused with new lines)\nwill be automatically stripped out the value is set to the textarea. Since we cannot\nuse any reasonable method to attempt to re-insert these, they will automatically be\nstripped out to ensure the behaviour is consistent across browser.

\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_TextArea_cfg)","prototype":{"!proto":"Ext.form.field.Text.prototype","cols":{"!type":"number","!doc":"

An initial value for the 'cols' attribute on the textarea element. This is only used if the component has no\nconfigured width and is not given a width by its container's layout.

\n"},"componentLayout":{"!type":"string|?","!doc":"

private

\n"},"enterIsSpecial":{"!type":"bool","!doc":"

True if you want the ENTER key to be classed as a special key and the specialkey event to be fired\nwhen ENTER is pressed.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

This template includes a \\n after <textarea> opening tag so that an\ninitial value starting with \\n does not lose its first character when\nthe markup is parsed. Both textareas below have the same value:

\n\n
<textarea>initial value</textarea>\n\n<textarea>\ninitial value\n</textarea>\n
\n"},"growAppend":{"!type":"string","!doc":"

A string that will be appended to the field's current value for the purposes of calculating the target field\nsize. Only used when the grow config is true. Defaults to a newline for TextArea to ensure there is\nalways a space below the current line.

\n"},"growMax":{"!type":"number","!doc":"

The maximum height to allow when grow=true

\n"},"growMin":{"!type":"number","!doc":"

The minimum height to allow when grow=true

\n"},"preventScrollbars":{"!type":"bool","!doc":"

true to prevent scrollbars from appearing regardless of how much text is in the field. This option is only\nrelevant when grow is true. Equivalent to setting overflow: hidden.

\n"},"rows":{"!type":"number","!doc":"

An initial value for the 'rows' attribute on the textarea element. This is only used if the component has no\nconfigured height and is not given a height by its container's layout. Defaults to 4.

\n"},"inputCls":{"!type":"string"},"returnRe":{"!type":"+RegExp"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"autoSize":{"!type":"fn() -> !this","!doc":"

Automatically grows the field to accomodate the height of the text up to the maximum field height allowed. This\nonly takes effect if grow = true, and fires the autosize event if the height changes.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"fireKey":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

private

\n"},"getValue":{"!type":"fn() -> ?","!doc":"

Returns the current data value of the field. The type of value returned is particular to the type of the\nparticular field (e.g. a Date object for Ext.form.field.Date), as the result of calling rawToValue on\nthe field's processed String value. To return the raw String value, see getRawValue.

\n"},"initAria":{"!type":"fn() -> !this","!doc":"

private

\n"},"isCutCopyPasteSelectAll":{"!type":"fn(e: ?, key: ?) -> !this"},"onPaste":{"!type":"fn(e: ?) -> !this"},"pasteCheck":{"!type":"fn() -> !this"},"setGrowSizePolicy":{"!type":"fn() -> !this","!doc":"

private

\n"},"stripReturns":{"!type":"fn(value: ?) -> !this"},"transformOriginalValue":{"!type":"fn(value: ?) -> ?","!doc":"

Allows for any necessary modifications before the original\nvalue is set

\n"},"transformRawValue":{"!type":"fn(value: ?) -> ?","!doc":"

The following overrides deal with an issue whereby some browsers\nwill strip carriage returns from the textarea input, while others\nwill not. Since there's no way to be sure where to insert returns,\nthe best solution is to strip them out in all cases to ensure that\nthe behaviour is consistent in a cross browser fashion. As such,\nwe override in all cases when setting the value to control this.

\n"},"valueToRaw":{"!type":"fn(value: ?) -> ?","!doc":"

Converts a mixed-type value to a raw representation suitable for displaying in the field. This allows controlling\nhow value objects passed to setValue are shown to the user, including localization. For instance, for a\nExt.form.field.Date, this would control how a Date object passed to setValue would be converted\nto a String for display in the field.

\n\n

See rawToValue for the opposite conversion.

\n\n

The base implementation simply does a standard toString conversion, and converts empty values\nto an empty string.

\n"},"autosize":{"!type":"fn(this: +Ext.form.field.Text, height: number, eOpts: ?)","!doc":"

Fires when the autoSize function is triggered and the field is resized according to\nthe grow/growMin/growMax configs as a result. This event provides a hook for the developer\nto apply additional logic at runtime to resize the field if needed.

\n"}}},"Time":{"!doc":"

Provides a time input field with a time dropdown and automatic time validation.

\n\n

This field recognizes and uses JavaScript Date objects as its main value type (only the time portion of the\ndate is used; the month/day/year are ignored). In addition, it recognizes string values which are parsed according to\nthe format and/or altFormats configs. These may be reconfigured to use time formats appropriate for\nthe user's locale.

\n\n

The field may be limited to a certain range of times by using the minValue and maxValue configs,\nand the interval between time options in the dropdown can be changed with the increment config.

\n\n

Example usage:

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Time Card',\n    width: 300,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items: [{\n        xtype: 'timefield',\n        name: 'in',\n        fieldLabel: 'Time In',\n        minValue: '6:00 AM',\n        maxValue: '8:00 PM',\n        increment: 30,\n        anchor: '100%'\n    }, {\n        xtype: 'timefield',\n        name: 'out',\n        fieldLabel: 'Time Out',\n        minValue: '6:00 AM',\n        maxValue: '8:00 PM',\n        increment: 30,\n        anchor: '100%'\n   }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Time_cfg)","prototype":{"!proto":"Ext.form.field.ComboBox.prototype","altFormats":{"!type":"string","!doc":"

Multiple date formats separated by \"|\" to try when parsing a user input value and it doesn't match the defined\nformat.

\n"},"displayField":{"!type":"string","!doc":"

The underlying data field name to bind to this ComboBox.

\n\n

See also valueField.

\n"},"format":{"!type":"string","!doc":"

The default time format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse.

\n\n

Defaults to 'g:i A', e.g., '3:15 PM'. For 24-hour time format try 'H:i' instead.

\n"},"increment":{"!type":"number","!doc":"

The number of minutes between each time value in the list.

\n"},"invalidText":{"!type":"string","!doc":"

The error text to display when the time in the field is invalid.

\n"},"maxText":{"!type":"string","!doc":"

The error text to display when the entered time is after maxValue.

\n"},"maxValue":{"!type":"+Date|string","!doc":"

The maximum allowed time. Can be either a Javascript date object with a valid time value or a string time in a\nvalid format -- see format and altFormats.

\n"},"minText":{"!type":"string","!doc":"

The error text to display when the entered time is before minValue.

\n"},"minValue":{"!type":"+Date|string","!doc":"

The minimum allowed time. Can be either a Javascript date object with a valid time value or a string time in a\nvalid format -- see format and altFormats.

\n"},"pickerMaxHeight":{"!type":"number","!doc":"

The maximum height of the Ext.picker.Time dropdown.

\n"},"queryMode":{"!type":"string","!doc":"

The mode in which the ComboBox uses the configured Store. Acceptable values are:

\n\n\n\n"},"selectOnTab":{"!type":"bool","!doc":"

Whether the Tab key should select the currently highlighted item.

\n"},"snapToIncrement":{"!type":"bool","!doc":"

Specify as true to enforce that only values on the increment boundary are accepted.

\n"},"submitFormat":{"!type":"string","!doc":"

The date format string which will be submitted to the server. The format must be valid according to\nExt.Date.parse.

\n\n

Defaults to format.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the triggerBaseCls\nby default and triggerCls will be appended if specified.

\n"},"valueField":{"!type":"string","!doc":"

The underlying data value name to bind to this ComboBox.

\n\n

Note: use of a valueField requires the user to make a selection in order for a value to be mapped. See also\ndisplayField.

\n\n

Defaults to match the value of the displayField config.

\n"},"ignoreSelection":{"!type":"number","!doc":"

private

\n"},"initDate":{"!type":"string","!doc":"

This is the date to use when generating time values in the absence of either minValue\nor maxValue. Using the current date causes DST issues on DST boundary dates, so this is an\narbitrary \"safe\" date that can be any date aside from DST boundary dates.

\n"},"initDateFormat":{"!type":"string"},"createPicker":{"!type":"fn() -> !this","!doc":"

Creates the Ext.picker.Time

\n"},"formatDate":{"!type":"fn() -> !this"},"getErrors":{"!type":"fn(value?: ?) -> [string]","!doc":"

Runs all of Time's validations and returns an array of any errors. Note that this first runs Text's validations,\nso the returned array is an amalgamation of all field errors. The additional validation checks are testing that\nthe time format is valid, that the chosen time is within the minValue and maxValue constraints\nset.

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the value that would be included in a standard form submit for this field. This will be combined with the\nfield's name to form a name=value pair in the submitted parameters. If an empty string is\nreturned then just the name= will be submitted; if null is returned then nothing will be submitted.

\n\n

Note that the value returned will have been processed but may or may not have been\nsuccessfully validated.

\n"},"getValue":{"!type":"fn() -> ?","!doc":"

Returns the current data value of the field. The type of value returned is particular to the type of the\nparticular field (e.g. a Date object for Ext.form.field.Date), as the result of calling rawToValue on\nthe field's processed String value. To return the raw String value, see getRawValue.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"isEqual":{"!type":"fn(v1: ?, v2: ?) -> !this"},"onItemClick":{"!type":"fn(picker: ?, record: ?) -> !this"},"onListSelectionChange":{"!type":"fn(list: ?, recordArray: ?) -> !this","!doc":"

Handles a time being selected from the Time picker.

\n"},"parseDate":{"!type":"fn(value: string|+Date) -> !this","!doc":"

Parses an input value into a valid Date object.

\n"},"postBlur":{"!type":"fn() -> !this","!doc":"

private

\n"},"rawToValue":{"!type":"fn(rawValue: ?) -> ?","!doc":"

Converts a raw input field value into a mixed-type value that is suitable for this particular field type. This\nallows controlling the normalization and conversion of user-entered values into field-type-appropriate values,\ne.g. a Date object for Ext.form.field.Date, and is invoked by getValue.

\n\n

It is up to individual implementations to decide how to handle raw values that cannot be successfully converted\nto the desired object type.

\n\n

See valueToRaw for the opposite conversion.

\n\n

The base implementation does no conversion, returning the raw value untouched.

\n"},"safeParse":{"!type":"fn(value: ?, format: ?) -> !this"},"setLimit":{"!type":"fn(value: ?, isMin: ?) -> !this","!doc":"

Updates either the min or max value. Converts the user's value into a Date object whose\nyear/month/day is set to the initDate so that only the time fields are significant.

\n"},"setMaxValue":{"!type":"fn(value: +Date|string) -> !this","!doc":"

Replaces any existing maxValue with the new time and refreshes the picker's range.

\n"},"setMinValue":{"!type":"fn(value: +Date|string) -> !this","!doc":"

Replaces any existing minValue with the new time and refreshes the picker's range.

\n"},"setValue":{"!type":"fn() -> +Ext.form.field.Field","!doc":"

Sets the specified value(s) into the field. For each value, if a record is found in the store that\nmatches based on the valueField, then that record's displayField will be displayed in the\nfield. If no match is found, and the valueNotFoundText config option is defined, then that will be\ndisplayed as the default field text. Otherwise a blank value will be shown, although the value will still be set.

\n"},"syncSelection":{"!type":"fn() -> !this","!doc":"

Synchronizes the selection in the picker to match the current value

\n"},"transformOriginalValue":{"!type":"fn(value: ?) -> !this"},"valueToRaw":{"!type":"fn(value: ?) -> ?","!doc":"

Converts a mixed-type value to a raw representation suitable for displaying in the field. This allows controlling\nhow value objects passed to setValue are shown to the user, including localization. For instance, for a\nExt.form.field.Date, this would control how a Date object passed to setValue would be converted\nto a String for display in the field.

\n\n

See rawToValue for the opposite conversion.

\n\n

The base implementation simply does a standard toString conversion, and converts empty values\nto an empty string.

\n"}}},"Trigger":{"!doc":"

Provides a convenient wrapper for TextFields that adds a clickable trigger button (looks like a combobox by default).\nThe trigger has no default action, so you must assign a function to implement the trigger click handler by overriding\nonTriggerClick. You can create a Trigger field directly, as it renders exactly like a combobox for which you\ncan provide a custom implementation.

\n\n

For example:

\n\n
Ext.define('Ext.ux.CustomTrigger', {\n    extend: 'Ext.form.field.Trigger',\n    alias: 'widget.customtrigger',\n\n    // override onTriggerClick\n    onTriggerClick: function() {\n        Ext.Msg.alert('Status', 'You clicked my trigger!');\n    }\n});\n\nExt.create('Ext.form.FormPanel', {\n    title: 'Form with TriggerField',\n    bodyPadding: 5,\n    width: 350,\n    renderTo: Ext.getBody(),\n    items:[{\n        xtype: 'customtrigger',\n        fieldLabel: 'Sample Trigger',\n        emptyText: 'click the trigger'\n    }]\n});\n
\n\n

However, in general you will most likely want to use Trigger as the base class for a reusable component.\nExt.form.field.Date and Ext.form.field.ComboBox are perfect examples of this.

\n","!type":"fn(config: +Ext.Element|string|Ext_form_field_Trigger_cfg)","prototype":{"!proto":"Ext.form.field.Text.prototype","componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"editable":{"!type":"bool","!doc":"

false to prevent the user from typing text directly into the field; the field can only have its value set via an\naction invoked by the trigger.

\n"},"grow":{"!type":"bool"},"growMax":{"!type":"number"},"growMin":{"!type":"number"},"hideTrigger":{"!type":"bool","!doc":"

true to hide the trigger element and display only the base text field

\n"},"readOnly":{"!type":"bool","!doc":"

true to prevent the user from changing the field, and hides the trigger. Supercedes the editable and hideTrigger\noptions if the value is true.

\n"},"repeatTriggerClick":{"!type":"bool","!doc":"

true to attach a click repeater to the trigger.

\n"},"selectOnFocus":{"!type":"bool","!doc":"

true to select any existing text in the field immediately on focus. Only applies when\neditable = true

\n"},"triggerBaseCls":{"!type":"string","!doc":"

The base CSS class that is always added to the trigger button. The triggerCls will be appended in\naddition to this class.

\n"},"triggerCls":{"!type":"string","!doc":"

An additional CSS class used to style the trigger button. The trigger will always get the triggerBaseCls\nby default and triggerCls will be appended if specified.

\n"},"triggerNoEditCls":{"!type":"string","!doc":"

The CSS class that is added to the text field when component is read-only or not editable.

\n"},"triggerWrapCls":{"!type":"string","!doc":"

The CSS class that is added to the div wrapping the trigger button(s).

\n"},"childEls":{"!type":"[?]"},"extraTriggerCls":{"!type":"string"},"inputCell":{"!type":"+Ext.Element","!doc":"

A reference to the TD element wrapping the input element. Only set after the field has been rendered.

\n"},"mimicing":{"!type":"bool"},"monitorTab":{"!type":"bool"},"triggerEl":{"!type":"+Ext.CompositeElement","!doc":"

A composite of all the trigger button elements. Only set after the field has been rendered.

\n"},"triggerIndexRe":{"!type":"+RegExp"},"triggerWidth":{"!type":"number","!doc":"

Width of the trigger element. Unless set explicitly, it will be\nautomatically calculated through creating a temporary element\non page. (That will be done just once per app run.)

\n"},"triggerWrap":{"!type":"+Ext.Element","!doc":"

A reference to the TABLE element which encapsulates the input field and all trigger button(s). Only set after the field has been rendered.

\n"},"autoSize":{"!type":"fn() -> !this"},"beforeRender":{"!type":"fn() -> !this"},"checkTab":{"!type":"fn(me: ?, e: ?) -> !this"},"disableCheck":{"!type":"fn() -> !this"},"getLabelableRenderData":{"!type":"fn() -> ?","!doc":"

Generates the arguments for the field decorations rendering template.

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

Creates and returns the data object to be used when rendering the fieldSubTpl.

\n"},"getSubTplMarkup":{"!type":"fn(values: ?) -> !this","!doc":"

Gets the markup to be inserted into the outer template's bodyEl. For fields this is the actual input element.

\n"},"getTriggerMarkup":{"!type":"fn() -> !this"},"getTriggerStateFlags":{"!type":"fn() -> !this","!doc":"

Returns a set of flags that describe the trigger state. These are just used to easily\ndetermine if the DOM is out-of-sync with the component's properties.

\n"},"getTriggerWidth":{"!type":"fn() -> number","!doc":"

Get the total width of the trigger button area.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initTrigger":{"!type":"fn() -> !this"},"mimicBlur":{"!type":"fn(e: ?) -> !this"},"onBlur":{"!type":"fn() -> !this","!doc":"

The default blur handling must not occur for a TriggerField, implementing this template method as emptyFn disables that.\nInstead the tab key is monitored, and the superclass's onBlur is called when tab is detected

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onFocus":{"!type":"fn() -> !this","!doc":"

private

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

private

\n"},"onTriggerClick":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

The function that should handle the trigger's click event. This method does nothing by default until overridden\nby an implementing function. See Ext.form.field.ComboBox and Ext.form.field.Date for sample implementations.

\n"},"onTriggerWrapClick":{"!type":"fn() -> !this","!doc":"

process clicks upon triggers.\ndetermine which trigger index, and dispatch to the appropriate click handler

\n"},"onTriggerWrapMouseup":{"!type":"fn() -> !this","!doc":"

Handle trigger mouse up gesture. To be implemented in subclasses.\nCurrently the Spinner subclass refocuses the input element upon end of spin.

\n"},"setEditable":{"!type":"fn(editable: bool) -> !this","!doc":"

Sets the editable state of this field. This method is the runtime equivalent of setting the 'editable' config\noption at config time.

\n"},"setHideTrigger":{"!type":"fn(hideTrigger: ?) -> !this"},"setReadOnly":{"!type":"fn(readOnly: bool) -> !this","!doc":"

Sets the read-only state of this field. This method is the runtime equivalent of setting the 'readOnly' config\noption at config time.

\n"},"triggerBlur":{"!type":"fn(e: ?) -> !this"},"validateBlur":{"!type":"fn(e: ?) -> !this","!doc":"

This should be overridden by any subclass that needs to check whether or not the field can be blurred.

\n"}}},"VTypes":{"!doc":"

This is a singleton object which contains a set of commonly used field validation functions\nand provides a mechanism for creating reusable custom field validations.\nThe following field validation functions are provided out of the box:

\n\n\n\n\n

VTypes can be applied to a Text Field using the vtype configuration:

\n\n
Ext.create('Ext.form.field.Text', {\n    fieldLabel: 'Email Address',\n    name: 'email',\n    vtype: 'email' // applies email validation rules to this field\n});\n
\n\n

To create custom VTypes:

\n\n
// custom Vtype for vtype:'time'\nvar timeTest = /^([1-9]|1[0-9]):([0-5][0-9])(\\s[a|p]m)$/i;\nExt.apply(Ext.form.field.VTypes, {\n    //  vtype validation function\n    time: function(val, field) {\n        return timeTest.test(val);\n    },\n    // vtype Text property: The error text to display when the validation function returns false\n    timeText: 'Not a valid time.  Must be in the format \"12:34 PM\".',\n    // vtype Mask property: The keystroke filter mask\n    timeMask: /[\\d\\s:amp]/i\n});\n
\n\n

In the above example the time function is the validator that will run when field validation occurs,\ntimeText is the error message, and timeMask limits what characters can be typed into the field.\nNote that the Text and Mask functions must begin with the same name as the validator function.

\n\n

Using a custom validator is the same as using one of the build-in validators - just use the name of the validator function\nas the vtype configuration on a Text Field:

\n\n
Ext.create('Ext.form.field.Text', {\n    fieldLabel: 'Departure Time',\n    name: 'departureTime',\n    vtype: 'time' // applies custom time validation rules to this field\n});\n
\n\n

Another example of a custom validator:

\n\n
// custom Vtype for vtype:'IPAddress'\nExt.apply(Ext.form.field.VTypes, {\n    IPAddress:  function(v) {\n        return /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/.test(v);\n    },\n    IPAddressText: 'Must be a numeric IP address',\n    IPAddressMask: /[\\d\\.]/i\n});\n
\n\n

It's important to note that using Ext.apply() means that the custom validator function\nas well as Text and Mask fields are added as properties of the Ext.form.field.VTypes singleton.

\n","alphaMask":{"!type":"+RegExp","!doc":"

The keystroke filter mask to be applied on alpha input. Defaults to: /[a-z_]/i

\n"},"alphaText":{"!type":"string","!doc":"

The error text to display when the alpha validation function returns false.\nDefaults to: 'This field should only contain letters and _'

\n"},"alphanumMask":{"!type":"+RegExp","!doc":"

The keystroke filter mask to be applied on alphanumeric input. Defaults to: /[a-z0-9_]/i

\n"},"alphanumText":{"!type":"string","!doc":"

The error text to display when the alphanumeric validation function returns false.\nDefaults to: 'This field should only contain letters, numbers and _'

\n"},"emailMask":{"!type":"+RegExp","!doc":"

The keystroke filter mask to be applied on email input. See the email method for information about\nmore complex email validation. Defaults to: /[a-z0-9_.-@]/i

\n"},"emailText":{"!type":"string","!doc":"

The error text to display when the email validation function returns false.\nDefaults to: 'This field should be an e-mail address in the format \"user@example.com\"'

\n"},"urlText":{"!type":"string","!doc":"

The error text to display when the url validation function returns false.\nDefaults to: 'This field should be a URL in the format \"http:/'+'/www.example.com\"'

\n"},"alpha":{"!type":"fn(value: string) -> bool","!doc":"

The function used to validate alpha values

\n"},"alphanum":{"!type":"fn(value: string) -> bool","!doc":"

The function used to validate alphanumeric values

\n"},"email":{"!type":"fn(value: string) -> bool","!doc":"

The function used to validate email addresses. Note that complete validation per the email RFC\nspecifications is very complex and beyond the scope of this class, although this function can be\noverridden if a more comprehensive validation scheme is desired. See the validation section\nof the Wikipedia article on email addresses for additional information. This implementation is\nintended to validate the following types of emails:

\n\n\n\n"},"url":{"!type":"fn(value: string) -> bool","!doc":"

The function used to validate URLs

\n"}}},"CheckboxManager":{"!doc":"

Private utility class for managing all Ext.form.field.Checkbox fields grouped by name.

\n","!type":"fn(config: Ext_form_CheckboxManager_cfg)","prototype":{"!proto":"Ext.util.MixedCollection.prototype"},"getByName":{"!type":"fn(name: ?, formId: ?) -> !this"}},"FieldAncestor":{"!doc":"

A mixin for Ext.container.Container components that are likely to have form fields in their\nitems subtree. Adds the following capabilities:

\n\n\n\n\n

This mixin is primarily for internal use by Ext.form.Panel and Ext.form.FieldContainer,\nand should not normally need to be used directly.

\n","prototype":{"fieldDefaults":{"!type":"?","!doc":"

If specified, the properties in this object are used as default config values for each Ext.form.Labelable\ninstance (e.g. Ext.form.field.Base or Ext.form.FieldContainer) that is added as a descendant of\nthis container. Corresponding values specified in an individual field's own configuration, or from the defaults config of its parent container, will take precedence. See the\ndocumentation for Ext.form.Labelable to see what config options may be specified in the fieldDefaults.

\n\n

Example:

\n\n
new Ext.form.Panel({\n    fieldDefaults: {\n        labelAlign: 'left',\n        labelWidth: 100\n    },\n    items: [{\n        xtype: 'fieldset',\n        defaults: {\n            labelAlign: 'top'\n        },\n        items: [{\n            name: 'field1'\n        }, {\n            name: 'field2'\n        }]\n    }, {\n        xtype: 'fieldset',\n        items: [{\n            name: 'field3',\n            labelWidth: 150\n        }, {\n            name: 'field4'\n        }]\n    }]\n});\n
\n\n

In this example, field1 and field2 will get labelAlign:'top' (from the fieldset's defaults) and labelWidth:100\n(from fieldDefaults), field3 and field4 will both get labelAlign:'left' (from fieldDefaults and field3 will use\nthe labelWidth:150 from its own config.

\n"},"beforeDestroy":{"!type":"fn() -> !this"},"handleFieldErrorChange":{"!type":"fn(labelable: ?, activeError: ?) -> !this","!doc":"

Handle bubbled errorchange events from descendants; invoke the aggregated event and method

\n"},"handleFieldValidityChange":{"!type":"fn(field: ?, isValid: ?) -> !this","!doc":"

Handle bubbled validitychange events from descendants; invoke the aggregated event and method

\n"},"initFieldAncestor":{"!type":"fn() -> !this","!doc":"

Initializes the FieldAncestor's state; this must be called from the initComponent method of any components\nimporting this mixin.

\n"},"initFieldDefaults":{"!type":"fn() -> !this","!doc":"

Initialize the fieldDefaults object

\n"},"initMonitor":{"!type":"fn() -> !this"},"onChildFieldAdd":{"!type":"fn(field: ?) -> !this"},"onChildFieldRemove":{"!type":"fn(field: ?) -> !this"},"onFieldErrorChange":{"!type":"fn(field: +Ext.form.Labelable, error: string) -> !this","!doc":"

Fired when the error message of any field within the container changes.

\n"},"onFieldValidityChange":{"!type":"fn(field: +Ext.form.field.Field, valid: bool) -> !this","!doc":"

Fired when the validity of any field within the container changes.

\n"},"fielderrorchange":{"!type":"fn(this: +Ext.form.FieldAncestor, The: +Ext.form.Labelable, error: string, eOpts: ?)","!doc":"

Fires when the active error message is changed for any one of the Ext.form.Labelable instances\nwithin this container.

\n"},"fieldvaliditychange":{"!type":"fn(this: +Ext.form.FieldAncestor, The: +Ext.form.Labelable, isValid: string, eOpts: ?)","!doc":"

Fires when the validity state of any one of the Ext.form.field.Field instances within this\ncontainer changes.

\n"}}},"FieldContainer":{"!doc":"

FieldContainer is a derivation of Container that implements the\nLabelable mixin. This allows it to be configured so that it is rendered with\na field label and optional error message around its sub-items.\nThis is useful for arranging a group of fields or other components within a single item in a form, so\nthat it lines up nicely with other fields. A common use is for grouping a set of related fields under\na single label in a form.

\n\n

The container's configured items will be layed out within the field body area according to the\nconfigured layout type. The default layout is 'autocontainer'.

\n\n

Like regular fields, FieldContainer can inherit its decoration configuration from the\nfieldDefaults of an enclosing FormPanel. In addition,\nFieldContainer itself can pass fieldDefaults to any fields\nit may itself contain.

\n\n

If you are grouping a set of Checkbox or Radio\nfields in a single labeled container, consider using a Ext.form.CheckboxGroup\nor Ext.form.RadioGroup instead as they are specialized for handling those types.

\n\n

Example

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'FieldContainer Example',\n    width: 550,\n    bodyPadding: 10,\n\n    items: [{\n        xtype: 'fieldcontainer',\n        fieldLabel: 'Last Three Jobs',\n        labelWidth: 100,\n\n        // The body area will contain three text fields, arranged\n        // horizontally, separated by draggable splitters.\n        layout: 'hbox',\n        items: [{\n            xtype: 'textfield',\n            flex: 1\n        }, {\n            xtype: 'splitter'\n        }, {\n            xtype: 'textfield',\n            flex: 1\n        }, {\n            xtype: 'splitter'\n        }, {\n            xtype: 'textfield',\n            flex: 1\n        }]\n    }],\n    renderTo: Ext.getBody()\n});\n
\n\n

Usage of fieldDefaults

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'FieldContainer Example',\n    width: 350,\n    bodyPadding: 10,\n\n    items: [{\n        xtype: 'fieldcontainer',\n        fieldLabel: 'Your Name',\n        labelWidth: 75,\n        defaultType: 'textfield',\n\n        // Arrange fields vertically, stretched to full width\n        layout: 'anchor',\n        defaults: {\n            layout: '100%'\n        },\n\n        // These config values will be applied to both sub-fields, except\n        // for Last Name which will use its own msgTarget.\n        fieldDefaults: {\n            msgTarget: 'under',\n            labelAlign: 'top'\n        },\n\n        items: [{\n            fieldLabel: 'First Name',\n            name: 'firstName'\n        }, {\n            fieldLabel: 'Last Name',\n            name: 'lastName',\n            msgTarget: 'under'\n        }]\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_FieldContainer_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","combineErrors":{"!type":"bool","!doc":"

If set to true, the field container will automatically combine and display the validation errors from\nall the fields it contains as a single error on the container, according to the configured\nmsgTarget. Defaults to false.

\n"},"combineLabels":{"!type":"bool","!doc":"

If set to true, and there is no defined fieldLabel, the field container will automatically\ngenerate its label by combining the labels of all the fields it contains. Defaults to false.

\n"},"componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"invalidCls":{"!type":"string","!doc":"

If we allow this to mark with the invalidCls it will cascade to all\nchild fields, let them handle themselves

\n"},"labelConnector":{"!type":"string","!doc":"

The string to use when joining the labels of individual sub-fields, when combineLabels is\nset to true. Defaults to ', '.

\n"},"childEls":{"!type":"[?]"},"customOverflowEl":{"!type":"string","!doc":"

Used by the layout system, typically the scrolling el is the targetEl, however we need\nto let it know we're using something different

\n"},"fieldSubTpl":{"!type":"string"},"maskOnDisable":{"!type":"bool","!doc":"

This is an internal flag that you use when creating custom components. By default this is set to true which means\nthat every component gets a mask when it's disabled. Components like FieldContainer, FieldSet, Field, Button, Tab\noverride this property to false since they want to implement custom disable logic.

\n"},"applyTargetCls":{"!type":"fn(targetCls: ?) -> !this","!doc":"

The targetCls is a CSS class that the layout needs added to the targetEl. The targetEl is where the container's\nchildren are rendered and is usually just the main el. Some containers (e.g. panels) use a body instead.

\n\n

In general, if a class overrides getTargetEl it will also need to override this method. This is necessary to\navoid a post-render step to add the targetCls.

\n"},"getCombinedErrors":{"!type":"fn(invalidFields: [+Ext.form.field.Field]) -> [string]","!doc":"

Takes an Array of invalid Ext.form.field.Field objects and builds a combined list of error\nmessages from them. Defaults to prepending each message by the field name and a colon. This\ncan be overridden to provide custom combined error message handling, for instance changing\nthe format of each message or sorting the array (it is sorted in order of appearance by default).

\n"},"getFieldLabel":{"!type":"fn() -> string","!doc":"

Returns the combined field label if combineLabels is set to true and if there is no\nset fieldLabel. Otherwise returns the fieldLabel like normal. You can also override\nthis method to provide a custom generated label.

\n"},"getOverflowEl":{"!type":"fn() -> !this","!doc":"

Get an el for overflowing, defaults to the target el

\n"},"getSubTplData":{"!type":"fn() -> !this"},"getSubTplMarkup":{"!type":"fn() -> string","!doc":"

Gets the markup to be inserted into the outer template's bodyEl. Defaults to empty string, should be implemented\nby classes including this mixin as needed.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"initRenderTpl":{"!type":"fn() -> +Ext.XTemplate","!doc":"

Initializes the renderTpl.

\n"},"onAdd":{"!type":"fn(labelable: +Ext.form.Labelable) -> !this","!doc":"

Called when a Ext.form.Labelable instance is added to the container's subtree.

\n"},"onFieldErrorChange":{"!type":"fn(field: ?, activeError: ?) -> !this","!doc":"

Fired when the error message of any field within the container changes, and updates the\ncombined error message to match.

\n"},"onRemove":{"!type":"fn(labelable: +Ext.form.Labelable) -> !this","!doc":"

Called when a Ext.form.Labelable instance is removed from the container's subtree.

\n"},"updateLabel":{"!type":"fn() -> !this","!doc":"

Updates the content of the labelEl if it is rendered

\n"}}},"Labelable":{"prototype":{"activeError":{"!type":"string","!doc":"

If specified, then the component will be displayed with this value as its active error when first rendered. Use\nsetActiveError or unsetActiveError to change it after component creation.

\n"},"activeErrorsTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The template used to format the Array of error messages passed to setActiveErrors into a single HTML\nstring. if the msgTarget is title, it defaults to a list separated by new lines. Otherwise, it\nrenders each message as an item in an unordered list.

\n"},"afterBodyEl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nat the end of the input containing element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the label text. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the label element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"afterSubTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nafter the subTpl markup. If an XTemplate is used, the\ncomponent's render data serves as the context.

\n"},"autoFitErrors":{"!type":"bool","!doc":"

Whether to adjust the component's body area to make room for 'side' or 'under' error messages.

\n"},"baseBodyCls":{"!type":"string","!doc":"

The CSS class to be applied to the body content element.

\n"},"beforeBodyEl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nat the beginning of the input containing element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeLabelTextTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the label text. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeLabelTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the label element. If an XTemplate is used, the component's render data\nserves as the context.

\n"},"beforeSubTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\nbefore the subTpl markup. If an XTemplate is used, the\ncomponent's render data serves as the context.

\n"},"clearCls":{"!type":"string","!doc":"

The CSS class to be applied to the special clearing div rendered directly after the field contents wrapper to\nprovide field clearing.

\n"},"errorMsgCls":{"!type":"string","!doc":"

The CSS class to be applied to the error message element.

\n"},"fieldBodyCls":{"!type":"string","!doc":"

An extra CSS class to be applied to the body content element in addition to baseBodyCls.

\n"},"fieldLabel":{"!type":"string","!doc":"

The label for the field. It gets appended with the labelSeparator, and its position and sizing is\ndetermined by the labelAlign, labelWidth, and labelPad configs.

\n"},"formItemCls":{"!type":"string","!doc":"

A CSS class to be applied to the outermost element to denote that it is participating in the form field layout.

\n"},"hideEmptyLabel":{"!type":"bool","!doc":"

When set to true, the label element (fieldLabel and labelSeparator) will be automatically\nhidden if the fieldLabel is empty. Setting this to false will cause the empty label element to be\nrendered and space to be reserved for it; this is useful if you want a field without a label to line up with\nother labeled fields in the same form.

\n\n

If you wish to unconditionall hide the label even if a non-empty fieldLabel is configured, then set the\nhideLabel config to true.

\n"},"hideLabel":{"!type":"bool","!doc":"

Set to true to completely hide the label element (fieldLabel and labelSeparator). Also see\nhideEmptyLabel, which controls whether space will be reserved for an empty fieldLabel.

\n"},"labelAlign":{"!type":"string","!doc":"

Controls the position and alignment of the fieldLabel. Valid values are:

\n\n\n\n"},"labelAttrTpl":{"!type":"string|[?]|+Ext.XTemplate","!doc":"

An optional string or XTemplate configuration to insert in the field markup\ninside the label element (as attributes). If an XTemplate is used, the component's\nrender data serves as the context.

\n"},"labelCls":{"!type":"string","!doc":"

The CSS class to be applied to the label element. This (single) CSS class is used to formulate the renderSelector\nand drives the field layout where it is concatenated with a hyphen ('-') and labelAlign. To add\nadditional classes, use labelClsExtra.

\n"},"labelClsExtra":{"!type":"string","!doc":"

An optional string of one or more additional CSS classes to add to the label element. Defaults to empty.

\n"},"labelPad":{"!type":"number","!doc":"

The amount of space in pixels between the fieldLabel and the input field.

\n"},"labelSeparator":{"!type":"string","!doc":"

Character(s) to be inserted at the end of the label text.

\n\n

Set to empty string to hide the separator completely.

\n"},"labelStyle":{"!type":"string","!doc":"

A CSS style specification string to apply directly to this field's label.

\n"},"labelWidth":{"!type":"number","!doc":"

The width of the fieldLabel in pixels. Only applicable if the labelAlign is set to \"left\" or\n\"right\".

\n"},"labelableRenderTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The rendering template for the field decorations. Component classes using this mixin\nshould include logic to use this as their renderTpl,\nand implement the getSubTplMarkup method to generate the field body content.

\n\n

The structure of a field is a table as follows:

\n\n

If labelAlign: 'left',msgTarget: 'side'`

\n\n
 +----------------------+----------------------+-------------+\n | Label:               | InputField           | sideErrorEl |\n +----------------------+----------------------+-------------+\n
\n\n

If labelAlign: 'left',msgTarget: 'under'`

\n\n
 +----------------------+------------------------------------+\n | Label:               | InputField      (colspan=2)        |\n |                      | underErrorEl                       |\n +----------------------+------------------------------------+\n
\n\n

If labelAlign: 'top',msgTarget: 'side'`

\n\n
 +---------------------------------------------+-------------+\n | label                                       |             |\n | InputField                                  | sideErrorEl |\n +---------------------------------------------+-------------+\n
\n\n

If labelAlign: 'top',msgTarget: 'under'`

\n\n
 +-----------------------------------------------------------+\n | label                                                     |\n | InputField                      (colspan=2)               |\n | underErrorEl                                              |\n +-----------------------------------------------------------+\n
\n\n

The total columns always the same for fields with each setting of labelAlign because when\nrendered into a Ext.layout.container.Form layout, just the TR of the table\nwill be placed into the form's main TABLE, and the columns of all the siblings\nmust match so that they all line up. In a Ext.layout.container.Form layout, different\nsettings of labelAlign are not supported because of the incompatible column structure.

\n\n

When the triggerCell or side error cell are hidden or shown, the input cell's colspan\nis recalculated to maintain the correct 3 visible column count.

\n"},"msgTarget":{"!type":"string","!doc":"

The location where the error message text should display. Must be one of the following values:

\n\n\n\n"},"preventMark":{"!type":"bool","!doc":"

true to disable displaying any error message set on this object.

\n"},"autoEl":{"!type":"?"},"bodyEl":{"!type":"+Ext.Element","!doc":"

The div Element wrapping the component's contents. Only available after the component has been rendered.

\n"},"errorEl":{"!type":"+Ext.Element","!doc":"

The div Element that will contain the component's error message(s). Note that depending on the configured\nmsgTarget, this element may be hidden in favor of some other form of presentation, but will always\nbe present in the DOM for use by assistive technologies.

\n"},"htmlActiveErrorsTpl":{"!type":"[?]"},"inputRowCls":{"!type":"string","!doc":"

private

\n"},"isFieldLabelable":{"!type":"bool","!doc":"

Flag denoting that this object is labelable as a field. Always true.

\n"},"labelCell":{"!type":"+Ext.Element","!doc":"

The <TD> Element which contains the label Element for this component. Only available after the component has been rendered.

\n"},"labelEl":{"!type":"+Ext.Element","!doc":"

The label Element for this component. Only available after the component has been rendered.

\n"},"labelableInsertions":{"!type":"[?]"},"labelableRenderProps":{"!type":"[?]","!doc":"

This is an array to avoid a split on every call to Ext.copyTo

\n"},"noWrap":{"!type":"bool","!doc":"

Tells the layout system that the height can be measured immediately because the width does not need setting.

\n"},"plaintextActiveErrorsTpl":{"!type":"[?]"},"xhooks":{"!type":"?"},"getActiveError":{"!type":"fn() -> string","!doc":"

Gets the active error message for this component, if any. This does not trigger validation on its own, it merely\nreturns any message that the component may already hold.

\n"},"getActiveErrors":{"!type":"fn() -> [string]","!doc":"

Gets an Array of any active error messages currently applied to the field. This does not trigger validation on\nits own, it merely returns any messages that the component may already hold.

\n"},"getBodyColspan":{"!type":"fn() -> !this","!doc":"

Calculates the colspan value for the body cell - the cell which contains the input field.

\n\n

The field table structure contains 4 columns:

\n"},"getErrorMsgCls":{"!type":"fn() -> !this"},"getInputId":{"!type":"fn() -> string","!doc":"

Get the input id, if any, for this component. This is used as the \"for\" attribute on the label element.\nImplementing subclasses may also use this as e.g. the id for their own input element.

\n"},"getInsertionRenderData":{"!type":"fn(data: ?, names: ?) -> !this"},"getLabelCellAttrs":{"!type":"fn() -> !this"},"getLabelCellStyle":{"!type":"fn() -> !this"},"getLabelCls":{"!type":"fn() -> !this"},"getLabelStyle":{"!type":"fn() -> string","!doc":"

Gets any label styling for the labelEl

\n"},"getLabelWidth":{"!type":"fn() -> number","!doc":"

Gets the width of the label (if visible)

\n"},"getLabelableRenderData":{"!type":"fn() -> ?","!doc":"

Generates the arguments for the field decorations rendering template.

\n"},"hasActiveError":{"!type":"fn() -> bool","!doc":"

Tells whether the field currently has an active error message. This does not trigger validation on its own, it\nmerely looks for any message that the component may already hold.

\n"},"hasVisibleLabel":{"!type":"fn() -> bool","!doc":"

Checks if the field has a visible label

\n"},"initLabelable":{"!type":"fn() -> !this","!doc":"

Performs initialization of this mixin. Component classes using this mixin should call this method during their\nown initialization.

\n"},"renderActiveError":{"!type":"fn() -> !this","!doc":"

Updates the rendered DOM to match the current activeError. This only updates the content and\nattributes, you'll have to call doComponentLayout to actually update the display.

\n"},"setActiveError":{"!type":"fn(msg: string) -> !this","!doc":"

Sets the active error message to the given string. This replaces the entire error message contents with the given\nstring. Also see setActiveErrors which accepts an Array of messages and formats them according to the\nactiveErrorsTpl. Note that this only updates the error message element's text and attributes, you'll\nhave to call doComponentLayout to actually update the field's layout to match. If the field extends Ext.form.field.Base you should call markInvalid instead.

\n"},"setActiveErrors":{"!type":"fn(errors: [string]) -> !this","!doc":"

Set the active error message to an Array of error messages. The messages are formatted into a single message\nstring using the activeErrorsTpl. Also see setActiveError which allows setting the entire error\ncontents with a single string. Note that this only updates the error message element's text and attributes,\nyou'll have to call doComponentLayout to actually update the field's layout to match. If the field extends\nExt.form.field.Base you should call markInvalid instead.

\n"},"setFieldDefaults":{"!type":"fn(defaults: ?) -> !this","!doc":"

Applies a set of default configuration values to this Labelable instance. For each of the properties in the given\nobject, check if this component hasOwnProperty that config; if not then it's inheriting a default value from its\nprototype and we should apply the default value.

\n"},"setFieldLabel":{"!type":"fn(label: string) -> !this","!doc":"

Set the label of this field.

\n"},"trimLabelSeparator":{"!type":"fn() -> string","!doc":"

Returns the trimmed label by slicing off the label separator character. Can be overridden.

\n"},"unsetActiveError":{"!type":"fn() -> !this","!doc":"

Clears the active error message(s). Note that this only clears the error message element's text and attributes,\nyou'll have to call doComponentLayout to actually update the field's layout to match. If the field extends Ext.form.field.Base you should call clearInvalid instead.

\n"},"errorchange":{"!type":"fn(this: +Ext.form.Labelable, error: string, eOpts: ?)","!doc":"

Fires when the active error message is changed via setActiveError.

\n"},"invalidCls":{"!type":"string","!doc":"

The CSS class to use when marking the component invalid.

\n"},"childEls":{"!type":"[?]"},"getFieldLabel":{"!type":"fn() -> string","!doc":"

Returns the label for the field. Defaults to simply returning the fieldLabel config. Can be overridden\nto provide a custom generated label.

\n"},"getSubTplMarkup":{"!type":"fn() -> string","!doc":"

Gets the markup to be inserted into the outer template's bodyEl. Defaults to empty string, should be implemented\nby classes including this mixin as needed.

\n"}},"!doc":"

A mixin which allows a component to be configured and decorated with a label and/or error message as is\ncommon for form fields. This is used by e.g. Ext.form.field.Base and Ext.form.FieldContainer\nto let them be managed by the Field layout.

\n\n

NOTE: This mixin is mainly for internal library use and most users should not need to use it directly. It\nis more likely you will want to use one of the component classes that import this mixin, such as\nExt.form.field.Base or Ext.form.FieldContainer.

\n\n

Use of this mixin does not make a component a field in the logical sense, meaning it does not provide any\nlogic or state related to values or validation; that is handled by the related Ext.form.field.Field\nmixin. These two mixins may be used separately (for example Ext.form.FieldContainer is Labelable but not a\nField), or in combination (for example Ext.form.field.Base implements both and has logic for connecting the\ntwo.)

\n\n

Component classes which use this mixin should use the Field layout\nor a derivation thereof to properly size and position the label and message according to the component config.\nThey must also call the initLabelable method during component initialization to ensure the mixin gets\nset up correctly.

\n"},"FieldSet":{"!doc":"

A container for grouping sets of fields, rendered as a HTML fieldset element. The title\nconfig will be rendered as the fieldset's legend.

\n\n

While FieldSets commonly contain simple groups of fields, they are general Containers\nand may therefore contain any type of components in their items, including other nested containers.\nThe default layout for the FieldSet's items is 'anchor', but it can be configured to use any other\nlayout type.

\n\n

FieldSets may also be collapsed if configured to do so; this can be done in two ways:

\n\n
    \n
  1. Set the collapsible config to true; this will result in a collapse button being rendered next to\nthe legend title, or:
  2. \n
  3. Set the checkboxToggle config to true; this is similar to using collapsible but renders\na checkbox in place of the toggle button. The fieldset will be expanded when the\ncheckbox is checked and collapsed when it is unchecked. The checkbox will also be included in the\nform submit parameters using the checkboxName as its parameter name.
  4. \n
\n\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Simple Form with FieldSets',\n    labelWidth: 75, // label settings here cascade unless overridden\n    url: 'save-form.php',\n    frame: true,\n    bodyStyle: 'padding:5px 5px 0',\n    width: 550,\n    renderTo: Ext.getBody(),\n    layout: 'column', // arrange fieldsets side by side\n    items: [{\n        // Fieldset in Column 1 - collapsible via toggle button\n        xtype:'fieldset',\n        columnWidth: 0.5,\n        title: 'Fieldset 1',\n        collapsible: true,\n        defaultType: 'textfield',\n        defaults: {anchor: '100%'},\n        layout: 'anchor',\n        items :[{\n            fieldLabel: 'Field 1',\n            name: 'field1'\n        }, {\n            fieldLabel: 'Field 2',\n            name: 'field2'\n        }]\n    }, {\n        // Fieldset in Column 2 - collapsible via checkbox, collapsed by default, contains a panel\n        xtype:'fieldset',\n        title: 'Show Panel', // title or checkboxToggle creates fieldset header\n        columnWidth: 0.5,\n        checkboxToggle: true,\n        collapsed: true, // fieldset initially collapsed\n        layout:'anchor',\n        items :[{\n            xtype: 'panel',\n            anchor: '100%',\n            title: 'Panel inside a fieldset',\n            frame: true,\n            height: 52\n        }]\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_FieldSet_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class applied to the fieldset.

\n"},"checkboxName":{"!type":"string","!doc":"

The name to assign to the fieldset's checkbox if checkboxToggle = true\n(defaults to '[fieldset id]-checkbox').

\n"},"checkboxToggle":{"!type":"bool","!doc":"

Set to true to render a checkbox into the fieldset frame just in front of the legend to expand/collapse the\nfieldset when the checkbox is toggled.. This checkbox will be included in form submits using\nthe checkboxName.

\n"},"collapsed":{"!type":"bool","!doc":"

Set to true to render the fieldset as collapsed by default. If checkboxToggle is specified, the checkbox\nwill also be unchecked by default.

\n"},"collapsible":{"!type":"bool","!doc":"

Set to true to make the fieldset collapsible and have the expand/collapse toggle button automatically rendered\ninto the legend element, false to keep the fieldset statically sized with no collapse button.\nAnother option is to configure checkboxToggle. Use the collapsed config to collapse the\nfieldset by default.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

The Ext.container.Container.layout for the fieldset's immediate child items.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"stateEvents":{"!type":"[string]","!doc":"

An array of events that, when fired, should trigger this object to\nsave its state. Defaults to none. stateEvents may be any type\nof event supported by this object, including browser or custom events\n(e.g., ['click', 'customerchange']).

\n\n\n

See stateful for an explanation of saving and\nrestoring object state.

\n\n"},"title":{"!type":"string","!doc":"

A title to be displayed in the fieldset's legend. May contain HTML markup.

\n"},"toggleOnTitleClick":{"!type":"bool","!doc":"

Set to true will add a listener to the titleCmp property for the click event which will execute the\ntoggle method. This option is only used when the collapsible property is set to true.

\n"},"checkboxCmp":{"!type":"+Ext.form.field.Checkbox","!doc":"

Refers to the Ext.form.field.Checkbox component that is added next to the title in the legend. Only\npopulated if the fieldset is configured with checkboxToggle:true.

\n"},"childEls":{"!type":"[?]"},"legend":{"!type":"+Ext.Component","!doc":"

The component for the fieldset's legend. Will only be defined if the configuration requires a legend to be\ncreated, by setting the title or checkboxToggle options.

\n"},"maskOnDisable":{"!type":"bool","!doc":"

This is an internal flag that you use when creating custom components. By default this is set to true which means\nthat every component gets a mask when it's disabled. Components like FieldContainer, FieldSet, Field, Button, Tab\noverride this property to false since they want to implement custom disable logic.

\n"},"toggleCmp":{"!type":"+Ext.panel.Tool","!doc":"

Refers to the Ext.panel.Tool component that is added as the collapse/expand button next to the title in\nthe legend. Only populated if the fieldset is configured with collapsible:true.

\n"},"addTitleClasses":{"!type":"fn() -> !this"},"afterCollapse":{"!type":"fn() -> !this"},"afterExpand":{"!type":"fn() -> !this"},"applyTargetCls":{"!type":"fn(targetCls: ?) -> !this","!doc":"

The targetCls is a CSS class that the layout needs added to the targetEl. The targetEl is where the container's\nchildren are rendered and is usually just the main el. Some containers (e.g. panels) use a body instead.

\n\n

In general, if a class overrides getTargetEl it will also need to override this method. This is necessary to\navoid a post-render step to add the targetCls.

\n"},"beforeDestroy":{"!type":"fn() -> !this"},"collapse":{"!type":"fn(f: +Ext.form.FieldSet, eOpts: ?)","!doc":"

Fires after this FieldSet has collapsed.

\n"},"collapsedHorizontal":{"!type":"fn() -> !this"},"collapsedVertical":{"!type":"fn() -> !this"},"createCheckboxCmp":{"!type":"fn() -> +Ext.Component","!doc":"

Creates the checkbox component. This is only called internally, but could be overridden in subclasses to\ncustomize the checkbox's configuration or even return an entirely different component type.

\n"},"createLegendCt":{"!type":"fn() -> !this"},"createTitleCmp":{"!type":"fn() -> +Ext.Component","!doc":"

Creates the legend title component. This is only called internally, but could be overridden in subclasses to\ncustomize the title component. If toggleOnTitleClick is set to true, a listener for the click event\nwill toggle the collapsed state of the FieldSet.

\n"},"createToggleCmp":{"!type":"fn() -> +Ext.Component","!doc":"

Creates the toggle button component. This is only called internally, but could be overridden in subclasses to\ncustomize the toggle component.

\n"},"doRenderLegend":{"!type":"fn(out: ?, renderData: ?) -> !this"},"expand":{"!type":"fn(f: +Ext.form.FieldSet, eOpts: ?)","!doc":"

Fires after this FieldSet has expanded.

\n"},"finishRender":{"!type":"fn(containerIdx: number) -> !this","!doc":"

This method visits the rendered component tree in a \"top-down\" order. That is, this\ncode runs on a parent component before running on a child. This method calls the\nonRender method of each component.

\n"},"getCollapsed":{"!type":"fn() -> !this"},"getCollapsedDockedItems":{"!type":"fn() -> !this"},"getDefaultContentTarget":{"!type":"fn() -> !this"},"getProtoBody":{"!type":"fn() -> !this"},"getRefItems":{"!type":"fn(deep: ?) -> !this","!doc":"

Used by ComponentQuery, child and down to retrieve all of the items\nwhich can potentially be considered a child of this Container.

\n\n

This may be overriden by Components which have ownership of Components\nthat are not contained in the items collection.

\n\n

NOTE: IMPORTANT note for maintainers:\nItems are returned in tree traversal order. Each item is appended to the result array\nfollowed by the results of that child's getRefItems call.\nFloating child items are appended after internal child items.

\n"},"getState":{"!type":"fn() -> ?","!doc":"

The supplied default state gathering method for the AbstractComponent class.

\n\n

This method returns dimension settings such as flex, anchor, width and height along with collapsed\nstate.

\n\n

Subclasses which implement more complex state should call the superclass's implementation, and apply their state\nto the result if this basic state is to be saved.

\n\n

Note that Component state will only be saved if the Component has a stateId and there as a StateProvider\nconfigured for the document.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initPadding":{"!type":"fn(targetEl: ?) -> !this","!doc":"

Initializes padding by applying it to the target element, or if the layout manages\npadding ensures that the padding on the target element is \"0\".

\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"onCheckChange":{"!type":"fn(cmp: ?, checked: ?) -> !this","!doc":"

Handle changes in the checkbox checked state.

\n"},"setExpanded":{"!type":"fn(expanded: ?) -> !this","!doc":"

Collapse or expand the fieldset.

\n"},"setTitle":{"!type":"fn(title: string) -> +Ext.form.FieldSet","!doc":"

Sets the title of this fieldset.

\n"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"},"toggle":{"!type":"fn() -> !this","!doc":"

Toggle the fieldset's collapsed state to the opposite of what it is currently.

\n"},"beforecollapse":{"!type":"fn(f: +Ext.form.FieldSet, eOpts: ?)","!doc":"

Fires before this FieldSet is collapsed. Return false to prevent the collapse.

\n"},"beforeexpand":{"!type":"fn(f: +Ext.form.FieldSet, eOpts: ?)","!doc":"

Fires before this FieldSet is expanded. Return false to prevent the expand.

\n"}}},"Label":{"!doc":"

Produces a standalone <label /> element which can be inserted into a form and be associated with a field\nin that form using the forId property.

\n\n

NOTE: in most cases it will be more appropriate to use the fieldLabel\nand associated config properties (Ext.form.Labelable.labelAlign, Ext.form.Labelable.labelWidth,\netc.) in field components themselves, as that allows labels to be uniformly sized throughout the form.\nExt.form.Label should only be used when your layout can not be achieved with the standard\nfield layout.

\n\n

You will likely be associating the label with a field component that extends Ext.form.field.Base, so\nyou should make sure the forId is set to the same value as the inputId\nof that field.

\n\n

The label's text can be set using either the text or html configuration properties; the\ndifference between the two is that the former will automatically escape HTML characters when rendering, while\nthe latter will not.

\n\n

Example

\n\n

This example creates a Label after its associated Text field, an arrangement that cannot currently\nbe achieved using the standard Field layout's labelAlign.

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Field with Label',\n    width: 400,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    layout: {\n        type: 'hbox',\n        align: 'middle'\n    },\n    items: [{\n        xtype: 'textfield',\n        hideLabel: true,\n        flex: 1\n    }, {\n        xtype: 'label',\n        forId: 'myFieldId',\n        text: 'My Awesome Field',\n        margin: '0 0 0 10'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_Label_cfg)","prototype":{"!proto":"Ext.Component.prototype","autoEl":{"!type":"string|?","!doc":"

A tag name or DomHelper spec used to create the Element which will\nencapsulate this Component.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to 'div'. The more complex Sencha classes use a more\ncomplex DOM structure specified by their own renderTpls.

\n\n

This is intended to allow the developer to create application-specific utility Components encapsulated by\ndifferent DOM elements. Example usage:

\n\n
{\n    xtype: 'component',\n    autoEl: {\n        tag: 'img',\n        src: 'http://www.example.com/example.jpg'\n    }\n}, {\n    xtype: 'component',\n    autoEl: {\n        tag: 'blockquote',\n        html: 'autoEl is cool!'\n    }\n}, {\n    xtype: 'container',\n    autoEl: 'ul',\n    cls: 'ux-unordered-list',\n    items: {\n        xtype: 'component',\n        autoEl: 'li',\n        html: 'First list item'\n    }\n}\n
\n"},"forId":{"!type":"string","!doc":"

The id of the input element to which this label will be bound via the standard HTML 'for'\nattribute. If not specified, the attribute will not be added to the label. In most cases you will be\nassociating the label with a Ext.form.field.Base component, so you should make sure this matches\nthe inputId of that field.

\n"},"html":{"!type":"string","!doc":"

An HTML fragment that will be used as the label's innerHTML.\nNote that if text is specified it will take precedence and this value will be ignored.

\n"},"text":{"!type":"string","!doc":"

The plain text to display within the label. If you need to include HTML\ntags within the label's innerHTML, use the html config instead.

\n"},"getElConfig":{"!type":"fn() -> !this"},"setText":{"!type":"fn(text: string, encode?: bool) -> +Ext.form.Label","!doc":"

Updates the label's innerHTML with the specified string.

\n"}}},"Panel":{"!doc":"

FormPanel provides a standard container for forms. It is essentially a standard Ext.panel.Panel which\nautomatically creates a BasicForm for managing any Ext.form.field.Field\nobjects that are added as descendants of the panel. It also includes conveniences for configuring and\nworking with the BasicForm and the collection of Fields.

\n\n

Layout

\n\n

By default, FormPanel is configured with layout:'anchor' for\nthe layout of its immediate child items. This can be changed to any of the supported container layouts.\nThe layout of sub-containers is configured in the standard way.

\n\n

BasicForm

\n\n

Although not listed as configuration options of FormPanel, the FormPanel class accepts all\nof the config options supported by the Ext.form.Basic class, and will pass them along to\nthe internal BasicForm when it is created.

\n\n

The following events fired by the BasicForm will be re-fired by the FormPanel and can therefore be\nlistened for on the FormPanel itself:

\n\n\n\n\n

Field Defaults

\n\n

The fieldDefaults config option conveniently allows centralized configuration of default values\nfor all fields added as descendants of the FormPanel. Any config option recognized by implementations\nof Ext.form.Labelable may be included in this object. See the fieldDefaults documentation\nfor details of how the defaults are applied.

\n\n

Form Validation

\n\n

With the default configuration, form fields are validated on-the-fly while the user edits their values.\nThis can be controlled on a per-field basis (or via the fieldDefaults config) with the field\nconfig properties Ext.form.field.Field.validateOnChange and Ext.form.field.Base.checkChangeEvents,\nand the FormPanel's config properties pollForChanges and pollInterval.

\n\n

Any component within the FormPanel can be configured with formBind: true. This will cause that\ncomponent to be automatically disabled when the form is invalid, and enabled when it is valid. This is most\ncommonly used for Button components to prevent submitting the form in an invalid state, but can be used on\nany component type.

\n\n

For more information on form validation see the following:

\n\n\n\n\n

Form Submission

\n\n

By default, Ext Forms are submitted through Ajax, using Ext.form.action.Action. See the documentation for\nExt.form.Basic for details.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Simple Form',\n    bodyPadding: 5,\n    width: 350,\n\n    // The form will submit an AJAX request to this URL when submitted\n    url: 'save-form.php',\n\n    // Fields will be arranged vertically, stretched to full width\n    layout: 'anchor',\n    defaults: {\n        anchor: '100%'\n    },\n\n    // The fields\n    defaultType: 'textfield',\n    items: [{\n        fieldLabel: 'First Name',\n        name: 'first',\n        allowBlank: false\n    },{\n        fieldLabel: 'Last Name',\n        name: 'last',\n        allowBlank: false\n    }],\n\n    // Reset and Submit buttons\n    buttons: [{\n        text: 'Reset',\n        handler: function() {\n            this.up('form').getForm().reset();\n        }\n    }, {\n        text: 'Submit',\n        formBind: true, //only enabled once the form is valid\n        disabled: true,\n        handler: function() {\n            var form = this.up('form').getForm();\n            if (form.isValid()) {\n                form.submit({\n                    success: function(form, action) {\n                       Ext.Msg.alert('Success', action.result.msg);\n                    },\n                    failure: function(form, action) {\n                        Ext.Msg.alert('Failed', action.result.msg);\n                    }\n                });\n            }\n        }\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_Panel_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","layout":{"!type":"+Ext.enums.Layout|?","!doc":"

The Ext.container.Container.layout for the form panel's immediate child items.

\n"},"pollForChanges":{"!type":"bool","!doc":"

If set to true, sets up an interval task (using the pollInterval) in which the\npanel's fields are repeatedly checked for changes in their values. This is in addition to the normal detection\neach field does on its own input element, and is not needed in most cases. It does, however, provide a\nmeans to absolutely guarantee detection of all changes including some edge cases in some browsers which\ndo not fire native events. Defaults to false.

\n"},"pollInterval":{"!type":"number","!doc":"

Interval in milliseconds at which the form's fields are checked for value changes. Only used if\nthe pollForChanges option is set to true. Defaults to 500 milliseconds.

\n"},"ariaRole":{"!type":"string"},"basicFormConfigs":{"!type":"[?]"},"afterFirstLayout":{"!type":"fn() -> !this","!doc":"

Initialize the BasicForm after all layouts have been completed.

\n"},"beforeDestroy":{"!type":"fn() -> !this"},"checkChange":{"!type":"fn() -> !this","!doc":"

Forces each field within the form panel to\ncheck if its value has changed.

\n"},"createForm":{"!type":"fn() -> !this"},"getForm":{"!type":"fn() -> +Ext.form.Basic","!doc":"

Provides access to the Form which this Panel contains.

\n"},"getRecord":{"!type":"fn() -> +Ext.data.Model","!doc":"

Returns the currently loaded Ext.data.Model instance if one was loaded via loadRecord.

\n"},"getValues":{"!type":"fn(asString?: bool, dirtyOnly?: bool, includeEmptyText?: bool, useDataValues?: bool) -> string|?","!doc":"

Convenience function for fetching the current value of each field in the form. This is the same as calling\nthis.getForm().getValues().

\n"},"hasInvalidField":{"!type":"fn() -> !this","!doc":"

Convenience function to check if the form has any invalid fields. This is the same as calling\nthis.getForm().hasInvalidField().

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initItems":{"!type":"fn() -> !this"},"isDirty":{"!type":"fn() -> bool","!doc":"

Convenience function to check if the form has any dirty fields. This is the same as calling\nthis.getForm().isDirty().

\n"},"isValid":{"!type":"fn() -> bool","!doc":"

Convenience function to check if the form has all valid fields. This is the same as calling\nthis.getForm().isValid().

\n"},"load":{"!type":"fn(options: ?) -> !this","!doc":"

This is a proxy for the underlying BasicForm's Ext.form.Basic.load call.

\n"},"loadRecord":{"!type":"fn(record: +Ext.data.Model) -> +Ext.form.Basic","!doc":"

Loads an Ext.data.Model into this form (internally just calls Ext.form.Basic.loadRecord)\nSee also trackResetOnLoad.

\n"},"startPolling":{"!type":"fn(interval: number) -> !this","!doc":"

Start an interval task to continuously poll all the fields in the form for changes in their\nvalues. This is normally started automatically by setting the pollForChanges config.

\n"},"stopPolling":{"!type":"fn() -> !this","!doc":"

Stop a running interval task that was started by startPolling.

\n"},"submit":{"!type":"fn(options: ?) -> !this","!doc":"

This is a proxy for the underlying BasicForm's Ext.form.Basic.submit call.

\n"},"updateRecord":{"!type":"fn(record?: +Ext.data.Model) -> +Ext.form.Basic","!doc":"

Persists the values in this form into the passed Ext.data.Model object in a beginEdit/endEdit block.\nIf the record is not specified, it will attempt to update (if it exists) the record provided to loadRecord.

\n"},"actioncomplete":{"!type":"fn(this: +Ext.form.Basic, action: +Ext.form.action.Action, eOpts: ?)","!doc":"

Fires when an action is completed.

\n"},"actionfailed":{"!type":"fn(this: +Ext.form.Basic, action: +Ext.form.action.Action, eOpts: ?)","!doc":"

Fires when an action fails.

\n"},"beforeaction":{"!type":"fn(this: +Ext.form.Basic, action: +Ext.form.action.Action, eOpts: ?)","!doc":"

Fires before any action is performed. Return false to cancel the action.

\n"},"dirtychange":{"!type":"fn(this: +Ext.form.Basic, dirty: bool, eOpts: ?)","!doc":"

Fires when the dirty state of the entire form changes.

\n"},"validitychange":{"!type":"fn(this: +Ext.form.Basic, valid: bool, eOpts: ?)","!doc":"

Fires when the validity of the entire form changes.

\n"}}},"RadioGroup":{"!doc":"

A field container which has a specialized layout for arranging\nExt.form.field.Radio controls into columns, and provides convenience Ext.form.field.Field\nmethods for getting, setting, and validating the\ngroup of radio buttons as a whole.

\n\n

Validation

\n\n

Individual radio buttons themselves have no default validation behavior, but\nsometimes you want to require a user to select one of a group of radios. RadioGroup\nallows this by setting the config allowBlank:false; when the user does not check at\none of the radio buttons, the entire group will be highlighted as invalid and the\nerror message will be displayed according to the msgTarget config.

\n\n

Layout

\n\n

The default layout for RadioGroup makes it easy to arrange the radio buttons into\ncolumns; see the columns and vertical config documentation for details. You may also\nuse a completely different layout by setting the layout to one of the other supported layout\ntypes; for instance you may wish to use a custom arrangement of hbox and vbox containers. In that case\nthe Radio components at any depth will still be managed by the RadioGroup's validation.

\n\n

Example usage

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'RadioGroup Example',\n    width: 300,\n    height: 125,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items:[{\n        xtype: 'radiogroup',\n        fieldLabel: 'Two Columns',\n        // Arrange radio buttons into two columns, distributed vertically\n        columns: 2,\n        vertical: true,\n        items: [\n            { boxLabel: 'Item 1', name: 'rb', inputValue: '1' },\n            { boxLabel: 'Item 2', name: 'rb', inputValue: '2', checked: true},\n            { boxLabel: 'Item 3', name: 'rb', inputValue: '3' },\n            { boxLabel: 'Item 4', name: 'rb', inputValue: '4' },\n            { boxLabel: 'Item 5', name: 'rb', inputValue: '5' },\n            { boxLabel: 'Item 6', name: 'rb', inputValue: '6' }\n        ]\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_form_RadioGroup_cfg)","prototype":{"!proto":"Ext.form.CheckboxGroup.prototype","allowBlank":{"!type":"bool","!doc":"

True to allow every item in the group to be blank.\nIf allowBlank = false and no items are selected at validation time, blankText will\nbe used as the error text.

\n"},"blankText":{"!type":"string","!doc":"

Error text to display if the allowBlank validation fails

\n"},"defaultType":{"!type":"string","!doc":"

private

\n"},"items":{"!type":"[+Ext.form.field.Radio]|[?]","!doc":"

An Array of Radios or Radio config objects to arrange in the group.

\n"},"groupCls":{"!type":"string","!doc":"

private

\n"},"checkChange":{"!type":"fn() -> !this","!doc":"

Checks whether the value of the field has changed since the last time it was checked.\nIf the value has changed, it:

\n\n
    \n
  1. Fires the change event,
  2. \n
  3. Performs validation if the validateOnChange config is enabled, firing the\nvaliditychange event if the validity has changed, and
  4. \n
  5. Checks the dirty state of the field and fires the dirtychange event\nif it has changed.
  6. \n
\n\n"},"getBoxes":{"!type":"fn(query?: string) -> !this","!doc":"

Returns all checkbox components within the container

\n"},"setValue":{"!type":"fn(value: ?) -> +Ext.form.CheckboxGroup","!doc":"

Sets the value of the radio group. The radio with corresponding name and value will be set.\nThis method is simpler than Ext.form.CheckboxGroup.setValue because only 1 value is allowed\nfor each name.

\n"}}},"RadioManager":{"!doc":"

Private utility class for managing all Ext.form.field.Radio fields grouped by name.

\n","!type":"fn(config: Ext_form_RadioManager_cfg)","prototype":{"!proto":"Ext.util.MixedCollection.prototype"},"getByName":{"!type":"fn(name: ?, formId: ?) -> !this"},"getChecked":{"!type":"fn(name: ?, formId: ?) -> !this"},"getWithValue":{"!type":"fn(name: ?, value: ?, formId: ?) -> !this"}},"action":{"Action":{"!doc":"

The subclasses of this class provide actions to perform upon Forms.

\n\n

Instances of this class are only created by a Form when the Form needs to perform an action\nsuch as submit or load. The Configuration options listed for this class are set through the Form's action methods:\nsubmit, load and doAction

\n\n

The instance of Action which performed the action is passed to the success and failure callbacks of the Form's action\nmethods (submit, load and\ndoAction), and to the actioncomplete and\nactionfailed event handlers.

\n","!type":"fn(config?: Ext_form_action_Action_cfg)","prototype":{"!proto":"Ext.Base.prototype","failure":{"!type":"fn()","!doc":"

The function to call when a failure packet was received, or when an error ocurred in the Ajax communication.

\n"},"form":{"!type":"+Ext.form.Basic","!doc":"

The BasicForm instance that is invoking this Action. Required.

\n"},"headers":{"!type":"?","!doc":"

Extra headers to be sent in the AJAX request for submit and load actions.\nSee Ext.data.proxy.Ajax.headers.

\n\n

Note: Headers are not sent during file upload.

\n"},"method":{"!type":"string","!doc":"

The HTTP method to use to access the requested URL.\nDefaults to the BasicForm's method, or 'POST' if not specified.

\n"},"params":{"!type":"?|string","!doc":"

Extra parameter values to pass. These are added to the Form's Ext.form.Basic.baseParams and passed to the\nspecified URL along with the Form's input fields.

\n\n

Parameters are encoded as standard HTTP parameters using Ext.Object.toQueryString.

\n"},"reset":{"!type":"bool","!doc":"

When set to true, causes the Form to be reset on Action success. If specified,\nthis happens before the success callback is called and before the Form's\nactioncomplete event fires.

\n"},"scope":{"!type":"?","!doc":"

The scope in which to call the configured success and failure callback functions\n(the this reference for the callback functions).

\n"},"submitEmptyText":{"!type":"bool","!doc":"

If set to true, the emptyText value will be sent with the form when it is submitted.

\n"},"success":{"!type":"fn()","!doc":"

The function to call when a valid success return packet is received.

\n"},"timeout":{"!type":"number","!doc":"

The number of seconds to wait for a server response before failing with the failureType as\nCONNECT_FAILURE. If not specified, defaults to the configured\ntimeout of the form.

\n"},"url":{"!type":"string","!doc":"

The URL that the Action is to invoke. Will default to the url configured on the\nform.

\n"},"waitMsg":{"!type":"string","!doc":"

The message to be displayed by a call to Ext.window.MessageBox.wait during the time the action is being\nprocessed.

\n"},"waitTitle":{"!type":"string","!doc":"

The title to be displayed by a call to Ext.window.MessageBox.wait during the time the action is being\nprocessed.

\n"},"failureType":{"!type":"string","!doc":"

The type of failure detected will be one of these:\nCLIENT_INVALID, SERVER_INVALID, CONNECT_FAILURE, or LOAD_FAILURE.

\n\n

Usage:

\n\n
var fp = new Ext.form.Panel({\n...\nbuttons: [{\n    text: 'Save',\n    formBind: true,\n    handler: function(){\n        if(fp.getForm().isValid()){\n            fp.getForm().submit({\n                url: 'form-submit.php',\n                waitMsg: 'Submitting your data...',\n                success: function(form, action){\n                    // server responded with success = true\n                    var result = action.result;\n                },\n                failure: function(form, action){\n                    if (action.failureType === Ext.form.action.Action.CONNECT_FAILURE) {\n                        Ext.Msg.alert('Error',\n                            'Status:'+action.response.status+': '+\n                            action.response.statusText);\n                    }\n                    if (action.failureType === Ext.form.action.Action.SERVER_INVALID){\n                        // server responded with success = false\n                        Ext.Msg.alert('Invalid', action.result.errormsg);\n                    }\n                }\n            });\n        }\n    }\n},{\n    text: 'Reset',\n    handler: function(){\n        fp.getForm().reset();\n    }\n}]\n
\n"},"response":{"!type":"?","!doc":"

The raw XMLHttpRequest object used to perform the action.

\n"},"result":{"!type":"?","!doc":"

The decoded response object containing a boolean success property and other, action-specific properties.

\n"},"type":{"!type":"string","!doc":"

The type of action this Action instance performs. Currently only \"submit\" and \"load\" are supported.

\n"},"createCallback":{"!type":"fn() -> !this","!doc":"

Creates a callback object.

\n"},"getMethod":{"!type":"fn() -> string","!doc":"

Determine the HTTP method to be used for the request.

\n"},"getParams":{"!type":"fn() -> ?","!doc":"

Get the set of parameters specified in the BasicForm's baseParams and/or the params option.\nItems in params override items of the same name in baseParams.

\n"},"getUrl":{"!type":"fn() -> string","!doc":"

Build the URL for the AJAX request. Used by the standard AJAX submit and load actions.

\n"},"handleResponse":{"!type":"fn(response: ?)","!doc":"

Handles the raw response and builds a result object from it. Must be implemented by subclasses.

\n"},"onFailure":{"!type":"fn(response: ?) -> !this","!doc":"

Handles a failure response.

\n"},"onSuccess":{"!type":"fn(response: ?)","!doc":"

Callback method that gets invoked when the action completes successfully. Must be implemented by subclasses.

\n"},"processResponse":{"!type":"fn(response: ?) -> ?|bool","!doc":"

Validates that a response contains either responseText or responseXML and invokes\nhandleResponse to build the result object.

\n"},"run":{"!type":"fn() -> !this","!doc":"

Invokes this action using the current configuration.

\n"}},"CLIENT_INVALID":{"!type":"string","!doc":"

Failure type returned when client side validation of the Form fails thus aborting a submit action. Client\nside validation is performed unless Ext.form.action.Submit.clientValidation is explicitly set to\nfalse.

\n"},"CONNECT_FAILURE":{"!type":"string","!doc":"

Failure type returned when a communication error happens when attempting to send a request to the remote\nserver. The response may be examined to provide further information.

\n"},"LOAD_FAILURE":{"!type":"string","!doc":"

Failure type returned when the response's success property is set to false, or no field values are returned\nin the response's data property.

\n"},"SERVER_INVALID":{"!type":"string","!doc":"

Failure type returned when server side processing fails and the result's success property is set to\nfalse.

\n\n

In the case of a form submission, field-specific error messages may be returned in the result's\nerrors property.

\n"}},"DirectLoad":{"!doc":"

Provides Ext.direct.Manager support for loading form data.

\n\n

This example illustrates usage of Ext.direct.Direct to load a form through Ext.Direct.

\n\n
var myFormPanel = new Ext.form.Panel({\n    // configs for FormPanel\n    title: 'Basic Information',\n    renderTo: document.body,\n    width: 300, height: 160,\n    padding: 10,\n\n    // configs apply to child items\n    defaults: {anchor: '100%'},\n    defaultType: 'textfield',\n    items: [{\n        fieldLabel: 'Name',\n        name: 'name'\n    },{\n        fieldLabel: 'Email',\n        name: 'email'\n    },{\n        fieldLabel: 'Company',\n        name: 'company'\n    }],\n\n    // configs for BasicForm\n    api: {\n        // The server-side method to call for load() requests\n        load: Profile.getBasicInfo,\n        // The server-side must mark the submit handler as a 'formHandler'\n        submit: Profile.updateBasicInfo\n    },\n    // specify the order for the passed params\n    paramOrder: ['uid', 'foo']\n});\n\n// load the form\nmyFormPanel.getForm().load({\n    // pass 2 arguments to server side getBasicInfo method (len=2)\n    params: {\n        foo: 'bar',\n        uid: 34\n    }\n});\n
\n\n

The data packet sent to the server will resemble something like:

\n\n
[\n    {\n        \"action\":\"Profile\",\"method\":\"getBasicInfo\",\"type\":\"rpc\",\"tid\":2,\n        \"data\":[34,\"bar\"] // note the order of the params\n    }\n]\n
\n\n

The form will process a data packet returned by the server that is similar to the following format:

\n\n
[\n    {\n        \"action\":\"Profile\",\"method\":\"getBasicInfo\",\"type\":\"rpc\",\"tid\":2,\n        \"result\":{\n            \"success\":true,\n            \"data\":{\n                \"name\":\"Fred Flintstone\",\n                \"company\":\"Slate Rock and Gravel\",\n                \"email\":\"fred.flintstone@slaterg.com\"\n            }\n        }\n    }\n]\n
\n","!type":"fn(config?: Ext_form_action_DirectLoad_cfg)","prototype":{"!proto":"Ext.form.action.Load.prototype","type":{"!type":"string","!doc":"

The type of action this Action instance performs. Currently only \"submit\" and \"load\" are supported.

\n"},"onComplete":{"!type":"fn(data: ?, response: ?) -> !this"},"processResponse":{"!type":"fn(response: ?) -> ?|bool","!doc":"

Direct actions have already been processed and therefore\nwe can directly set the result; Direct Actions do not have\na this.response property.

\n"},"run":{"!type":"fn() -> !this"}}},"DirectSubmit":{"!doc":"

Provides Ext.direct support for submitting form data.

\n\n

This example illustrates usage of Ext.direct.Direct to submit a form through Ext.Direct.

\n\n
var myFormPanel = new Ext.form.Panel({\n    // configs for FormPanel\n    title: 'Basic Information',\n    renderTo: document.body,\n    width: 300, height: 160,\n    padding: 10,\n    buttons:[{\n        text: 'Submit',\n        handler: function(){\n            myFormPanel.getForm().submit({\n                params: {\n                    foo: 'bar',\n                    uid: 34\n                }\n            });\n        }\n    }],\n\n    // configs apply to child items\n    defaults: {anchor: '100%'},\n    defaultType: 'textfield',\n    items: [{\n        fieldLabel: 'Name',\n        name: 'name'\n    },{\n        fieldLabel: 'Email',\n        name: 'email'\n    },{\n        fieldLabel: 'Company',\n        name: 'company'\n    }],\n\n    // configs for BasicForm\n    api: {\n        // The server-side method to call for load() requests\n        load: Profile.getBasicInfo,\n        // The server-side must mark the submit handler as a 'formHandler'\n        submit: Profile.updateBasicInfo\n    },\n    // specify the order for the passed params\n    paramOrder: ['uid', 'foo']\n});\n
\n\n

The data packet sent to the server will resemble something like:

\n\n
{\n    \"action\":\"Profile\",\"method\":\"updateBasicInfo\",\"type\":\"rpc\",\"tid\":\"6\",\n    \"result\":{\n        \"success\":true,\n        \"id\":{\n            \"extAction\":\"Profile\",\"extMethod\":\"updateBasicInfo\",\n            \"extType\":\"rpc\",\"extTID\":\"6\",\"extUpload\":\"false\",\n            \"name\":\"Aaron Conran\",\"email\":\"aaron@sencha.com\",\"company\":\"Sencha Inc.\"\n        }\n    }\n}\n
\n\n

The form will process a data packet returned by the server that is similar to the following:

\n\n
// sample success packet (batched requests)\n[\n    {\n        \"action\":\"Profile\",\"method\":\"updateBasicInfo\",\"type\":\"rpc\",\"tid\":3,\n        \"result\":{\n            \"success\":true\n        }\n    }\n]\n\n// sample failure packet (one request)\n{\n        \"action\":\"Profile\",\"method\":\"updateBasicInfo\",\"type\":\"rpc\",\"tid\":\"6\",\n        \"result\":{\n            \"errors\":{\n                \"email\":\"already taken\"\n            },\n            \"success\":false,\n            \"foo\":\"bar\"\n        }\n}\n
\n\n

Also see the discussion in Ext.form.action.DirectLoad.

\n","!type":"fn(config?: Ext_form_action_DirectSubmit_cfg)","prototype":{"!proto":"Ext.form.action.Submit.prototype","type":{"!type":"string","!doc":"

The type of action this Action instance performs. Currently only \"submit\" and \"load\" are supported.

\n"},"doSubmit":{"!type":"fn() -> !this","!doc":"

Performs the submit of the form data.

\n"},"onComplete":{"!type":"fn(data: ?, response: ?) -> !this"},"processResponse":{"!type":"fn(response: ?) -> ?|bool","!doc":"

Direct actions have already been processed and therefore\nwe can directly set the result; Direct Actions do not have\na this.response property.

\n"}}},"Load":{"!doc":"

A class which handles loading of data from a server into the Fields of an Ext.form.Basic.

\n\n

Instances of this class are only created by a Form when loading.

\n\n

Response Packet Criteria

\n\n

A response packet must contain:

\n\n\n\n\n

The data property contains the values of Fields to load. The individual value object for each Field is passed to\nthe Field's setValue method.

\n\n

JSON Packets

\n\n

By default, response packets are assumed to be JSON, so for the following form load call:

\n\n
var myFormPanel = new Ext.form.Panel({\n    title: 'Client and routing info',\n    renderTo: Ext.getBody(),\n    defaults: {\n        xtype: 'textfield'\n    },\n    items: [{\n        fieldLabel: 'Client',\n        name: 'clientName'\n    }, {\n        fieldLabel: 'Port of loading',\n        name: 'portOfLoading'\n    }, {\n        fieldLabel: 'Port of discharge',\n        name: 'portOfDischarge'\n    }]\n});\nmyFormPanel.getForm().load({\n    url: '/getRoutingInfo.php',\n    params: {\n        consignmentRef: myConsignmentRef\n    },\n    failure: function(form, action) {\n        Ext.Msg.alert(\"Load failed\", action.result.errorMessage);\n    }\n});\n
\n\n

a success response packet may look like this:

\n\n
{\n    success: true,\n    data: {\n        clientName: \"Fred. Olsen Lines\",\n        portOfLoading: \"FXT\",\n        portOfDischarge: \"OSL\"\n    }\n}\n
\n\n

while a failure response packet may look like this:

\n\n
{\n    success: false,\n    errorMessage: \"Consignment reference not found\"\n}\n
\n\n

Other data may be placed into the response for processing the Form's callback or event handler\nmethods. The object decoded from this JSON is available in the result property.

\n","!type":"fn(config?: Ext_form_action_Load_cfg)","prototype":{"!proto":"Ext.form.action.Action.prototype","type":{"!type":"string","!doc":"

The type of action this Action instance performs. Currently only \"submit\" and \"load\" are supported.

\n"},"handleResponse":{"!type":"fn(response: ?) -> !this"},"onSuccess":{"!type":"fn(response: ?) -> !this"},"run":{"!type":"fn() -> !this"}}},"StandardSubmit":{"!doc":"

A class which handles submission of data from Forms using a standard <form> element submit.\nIt does not handle the response from the submit.

\n\n

If validation of the form fields fails, the Form's afterAction method will be called. Otherwise, afterAction will not\nbe called.

\n\n

Instances of this class are only created by a Form when\nsubmitting, when the form's Ext.form.Basic.standardSubmit config option is true.

\n","!type":"fn(config?: Ext_form_action_StandardSubmit_cfg)","prototype":{"!proto":"Ext.form.action.Submit.prototype","target":{"!type":"string","!doc":"

Optional target attribute to be used for the form when submitting.

\n\n

Defaults to the current window/frame.

\n"},"doSubmit":{"!type":"fn() -> !this","!doc":"

Perform the form submit. Creates and submits a temporary form element containing an input element for each\nfield value returned by Ext.form.Basic.getValues, plus any configured params or\nbaseParams.

\n"}}},"Submit":{"!doc":"

A class which handles submission of data from Forms and processes the returned response.

\n\n

Instances of this class are only created by a Form when\nsubmitting.

\n\n

Response Packet Criteria

\n\n

A response packet may contain:

\n\n\n\n\n

JSON Packets

\n\n

By default, response packets are assumed to be JSON, so a typical response packet may look like this:

\n\n
{\n    success: false,\n    errors: {\n        clientCode: \"Client not found\",\n        portOfLoading: \"This field must not be null\"\n    }\n}\n
\n\n

Other data may be placed into the response for processing by the Ext.form.Basic's callback or event handler\nmethods. The object decoded from this JSON is available in the result property.

\n\n

Alternatively, if an errorReader is specified as an\nXmlReader:

\n\n
errorReader: new Ext.data.reader.Xml({\n        record : 'field',\n        success: '@success'\n    }, [\n        'id', 'msg'\n    ]\n)\n
\n\n

then the results may be sent back in XML format:

\n\n
<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<message success=\"false\">\n<errors>\n    <field>\n        <id>clientCode</id>\n        <msg><![CDATA[Code not found. <br /><i>This is a test validation message from the server </i>]]></msg>\n    </field>\n    <field>\n        <id>portOfLoading</id>\n        <msg><![CDATA[Port not found. <br /><i>This is a test validation message from the server </i>]]></msg>\n    </field>\n</errors>\n</message>\n
\n\n

Other elements may be placed into the response XML for processing by the Ext.form.Basic's callback or event\nhandler methods. The XML document is available in the errorReader's\nxmlData property.

\n","!type":"fn(config?: Ext_form_action_Submit_cfg)","prototype":{"!proto":"Ext.form.action.Action.prototype","clientValidation":{"!type":"bool","!doc":"

Determines whether a Form's fields are validated in a final call to isValid prior\nto submission. Pass false in the Form's submit options to prevent this.

\n"},"type":{"!type":"string","!doc":"

The type of action this Action instance performs. Currently only \"submit\" and \"load\" are supported.

\n"},"buildForm":{"!type":"fn() -> +HTMLElement","!doc":"

Builds a form element containing fields corresponding to all the parameters to be\nsubmitted (everything returned by getParams.

\n\n

NOTE: the form element is automatically added to the DOM, so any code that uses\nit must remove it from the DOM after finishing with it.

\n"},"cleanup":{"!type":"fn(formInfo: ?) -> !this"},"doSubmit":{"!type":"fn() -> !this","!doc":"

Performs the submit of the form data.

\n"},"getFieldConfig":{"!type":"fn(name: ?, value: ?) -> !this"},"getParams":{"!type":"fn(useModelValues: ?) -> !this","!doc":"

Builds the full set of parameters from the field values plus any additional configured params.

\n"},"handleResponse":{"!type":"fn(response: ?) -> !this"},"onSuccess":{"!type":"fn(response: ?) -> !this"},"run":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"}}}}},"fx":{"Anim":{"!doc":"

This class manages animation for a specific target. The animation allows\nanimation of various properties on the target, such as size, position, color and others.

\n\n

Starting Conditions

\n\n

The starting conditions for the animation are provided by the from configuration.\nAny/all of the properties in the from configuration can be specified. If a particular\nproperty is not defined, the starting value for that property will be read directly from the target.

\n\n

End Conditions

\n\n

The ending conditions for the animation are provided by the to configuration. These mark\nthe final values once the animations has finished. The values in the from can mirror\nthose in the to configuration to provide a starting point.

\n\n

Other Options

\n\n\n\n\n

Example Code

\n\n
var myComponent = Ext.create('Ext.Component', {\n    renderTo: document.body,\n    width: 200,\n    height: 200,\n    style: 'border: 1px solid red;'\n});\n\nExt.create('Ext.fx.Anim', {\n    target: myComponent,\n    duration: 1000,\n    from: {\n        width: 400 //starting width 400\n    },\n    to: {\n        width: 300, //end width 300\n        height: 300 // end height 300\n    }\n});\n
\n","!type":"fn(config: Ext_fx_Anim_cfg)","prototype":{"!proto":"Ext.Base.prototype","alternate":{"!type":"bool","!doc":"

Used in conjunction with iterations to reverse the animation each time an iteration completes.

\n"},"callback":{"!type":"fn()","!doc":"

A function to be run after the animation has completed.

\n"},"delay":{"!type":"number","!doc":"

Time to delay before starting the animation.

\n"},"duration":{"!type":"number","!doc":"

Time in milliseconds for a single animation to last. If the iterations property is\nspecified, then each animate will take the same duration for each iteration.

\n"},"dynamic":{"!type":"bool","!doc":"

Currently only for Component Animation: Only set a component's outer element size bypassing layouts.\nSet to true to do full layouts for every frame of the animation.

\n"},"easing":{"!type":"string","!doc":"

This describes how the intermediate values used during a transition will be calculated.\nIt allows for a transition to change speed over its duration.

\n\n\n\n\n

Note that cubic-bezier will create a custom easing curve following the CSS3 transition-timing-function\nspecification. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2). All values must\nbe in the range [0, 1] or the definition is invalid.

\n"},"from":{"!type":"?","!doc":"

An object containing property/value pairs for the beginning of the animation. If not specified, the current state of the\nExt.fx.target will be used. For example:

\n\n
from: {\n    opacity: 0,       // Transparent\n    color: '#ffffff', // White\n    left: 0\n}\n
\n"},"iterations":{"!type":"number","!doc":"

Number of times to execute the animation.

\n"},"keyframes":{"!type":"?","!doc":"

Animation keyframes follow the CSS3 Animation configuration pattern. 'from' is always considered '0%' and 'to'\nis considered '100%'. Every keyframe declaration must have a keyframe rule for 0% and 100%, possibly defined using\n\"from\" or \"to\". A keyframe declaration without these keyframe selectors is invalid and will not be available for\nanimation. The keyframe declaration for a keyframe rule consists of properties and values. Properties that are unable to\nbe animated are ignored in these rules, with the exception of 'easing' which can be changed at each keyframe. For example:

\n\n
keyframes : {\n    '0%': {\n        left: 100\n    },\n    '40%': {\n        left: 150\n    },\n    '60%': {\n        left: 75\n    },\n    '100%': {\n        left: 100\n    }\n}\n
\n"},"reverse":{"!type":"bool","!doc":"

Run the animation from the end to the beginning\nDefaults to false.

\n"},"scope":{"!type":"fn()","!doc":"

The scope that the callback function will be called with

\n"},"target":{"!type":"string|?","!doc":"

The Ext.fx.target.Target to apply the animation to. This should only be specified when creating an Ext.fx.Anim directly.\nThe target does not need to be a Ext.fx.target.Target instance, it can be the underlying object. For example, you can\npass a Component, Element or Sprite as the target and the Anim will create the appropriate Ext.fx.target.Target object\nautomatically.

\n"},"to":{"!type":"?","!doc":"

An object containing property/value pairs for the end of the animation. For example:

\n\n
to: {\n    opacity: 1,       // Opaque\n    color: '#00ff00', // Green\n    left: 500\n}\n
\n"},"bezierRE":{"!type":"+RegExp"},"currentIteration":{"!type":"number","!doc":"

Current iteration the animation is running.

\n"},"damper":{"!type":"number"},"delayStart":{"!type":"number","!doc":"

used to track a delayed starting time

\n"},"endWasCalled":{"!type":"number"},"frameCount":{"!type":"number"},"isAnimation":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Anim, or subclass thereof.

\n"},"paused":{"!type":"bool","!doc":"

Flag to determine if the animation is paused. Only set this to true if you need to\nkeep the Anim instance around to be unpaused later; otherwise call end.

\n"},"propHandlers":{"!type":"?","!doc":"

Contains a cache of the interpolators to be used.

\n"},"running":{"!type":"bool","!doc":"

Flag to determine if the animation has started

\n"},"startTime":{"!type":"+Date","!doc":"

Starting time of the animation.

\n"},"end":{"!type":"fn() -> !this","!doc":"

Fire afteranimate event and end the animation. Usually called automatically when the\nanimation reaches its final frame, but can also be called manually to pre-emptively\nstop and destroy the running animation.

\n"},"initAttrs":{"!type":"fn() -> !this","!doc":"

Set up the initial currentAttrs hash.

\n"},"isReady":{"!type":"fn() -> !this"},"isRunning":{"!type":"fn() -> !this"},"lastFrame":{"!type":"fn() -> ?","!doc":"

Perform lastFrame cleanup and handle iterations

\n"},"runAnim":{"!type":"fn(elapsedTime: ?) -> ?","!doc":"

Calculate attribute value at the passed timestamp.

\n"},"setAttr":{"!type":"fn(attr: ?, value: ?) -> !this","!doc":"

Helper to the target

\n"},"start":{"!type":"fn(startTime: ?) -> !this","!doc":"

Fires beforeanimate and sets the running flag.

\n"},"afteranimate":{"!type":"fn(this: +Ext.fx.Anim, startTime: +Date, eOpts: ?)","!doc":"

Fires when the animation is complete.

\n"},"beforeanimate":{"!type":"fn(this: +Ext.fx.Anim, eOpts: ?)","!doc":"

Fires before the animation starts. A handler can return false to cancel the animation.

\n"},"lastframe":{"!type":"fn(this: +Ext.fx.Anim, startTime: +Date, eOpts: ?)","!doc":"

Fires when the animation's last frame has been set.

\n"}}},"Animator":{"!doc":"

This class is used to run keyframe based animations, which follows the CSS3 based animation structure.\nKeyframe animations differ from typical from/to animations in that they offer the ability to specify values\nat various points throughout the animation.

\n\n

Using Keyframes

\n\n

The keyframes option is the most important part of specifying an animation when using this\nclass. A key frame is a point in a particular animation. We represent this as a percentage of the\ntotal animation duration. At each key frame, we can specify the target values at that time. Note that\nyou must specify the values at 0% and 100%, the start and ending values. There is also a keyframe\nevent that fires after each key frame is reached.

\n\n

Example

\n\n

In the example below, we modify the values of the element at each fifth throughout the animation.

\n\n
Ext.create('Ext.fx.Animator', {\n    target: Ext.getBody().createChild({\n        style: {\n            width: '100px',\n            height: '100px',\n            'background-color': 'red'\n        }\n    }),\n    duration: 10000, // 10 seconds\n    keyframes: {\n        0: {\n            opacity: 1,\n            backgroundColor: 'FF0000'\n        },\n        20: {\n            x: 30,\n            opacity: 0.5\n        },\n        40: {\n            x: 130,\n            backgroundColor: '0000FF'\n        },\n        60: {\n            y: 80,\n            opacity: 0.3\n        },\n        80: {\n            width: 200,\n            y: 200\n        },\n        100: {\n            opacity: 1,\n            backgroundColor: '00FF00'\n        }\n    }\n});\n
\n","prototype":{"delay":{"!type":"number","!doc":"

Time to delay before starting the animation. Defaults to 0.

\n"},"duration":{"!type":"number","!doc":"

Time in milliseconds for the animation to last. Defaults to 250.

\n"},"dynamic":{"!type":"bool","!doc":"

Currently only for Component Animation: Only set a component's outer element size bypassing layouts. Set to true to do full layouts for every frame of the animation. Defaults to false.

\n"},"easing":{"!type":"string","!doc":"

This describes how the intermediate values used during a transition will be calculated. It allows for a transition to change\nspeed over its duration.

\n\n\n\n\n

Note that cubic-bezier will create a custom easing curve following the CSS3 transition-timing-function\nspecification. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2). All values must\nbe in the range [0, 1] or the definition is invalid.

\n"},"iterations":{"!type":"number","!doc":"

Number of times to execute the animation. Defaults to 1.

\n"},"keyframes":{"!type":"?","!doc":"

Animation keyframes follow the CSS3 Animation configuration pattern. 'from' is always considered '0%' and 'to'\nis considered '100%'.Every keyframe declaration must have a keyframe rule for 0% and 100%, possibly defined using\n\"from\" or \"to\". A keyframe declaration without these keyframe selectors is invalid and will not be available for\nanimation. The keyframe declaration for a keyframe rule consists of properties and values. Properties that are unable to\nbe animated are ignored in these rules, with the exception of 'easing' which can be changed at each keyframe. For example:

\n\n
keyframes : {\n    '0%': {\n        left: 100\n    },\n    '40%': {\n        left: 150\n    },\n    '60%': {\n        left: 75\n    },\n    '100%': {\n        left: 100\n    }\n}\n 
\n\n"},"target":{"!type":"+Ext.fx.target.Target","!doc":"

The Ext.fx.target to apply the animation to. If not specified during initialization, this can be passed to the applyAnimator\nmethod to apply the same animation to many targets.

\n"},"animKeyFramesRE":{"!type":"+RegExp"},"applyAnimator":{"!type":"string|?","!doc":"

Applies animation to the Ext.fx.target

\n"},"currentIteration":{"!type":"number","!doc":"

Current iteration the animation is running.

\n"},"damper":{"!type":"number"},"delayStart":{"!type":"number","!doc":"

private used to track a delayed starting time

\n"},"isAnimator":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Animator, or subclass thereof.

\n"},"keyframeStep":{"!type":"number","!doc":"

Current keyframe step of the animation.

\n"},"paused":{"!type":"bool","!doc":"

Flag to determine if the animation is paused. Only set this to true if you need to\nkeep the Anim instance around to be unpaused later; otherwise call end.

\n"},"running":{"!type":"bool","!doc":"

Flag to determine if the animation has started

\n"},"createTimeline":{"!type":"fn(keyframes: ?) -> !this","!doc":"

Takes the given keyframe configuration object and converts it into an ordered array with the passed attributes per keyframe\nor applying the 'to' configuration to all keyframes. Also calculates the proper animation duration per keyframe.

\n"},"end":{"!type":"fn() -> !this","!doc":"

Fire afteranimate event and end the animation. Usually called automatically when the\nanimation reaches its final frame, but can also be called manually to pre-emptively\nstop and destroy the running animation.

\n"},"isReady":{"!type":"fn() -> !this"},"isRunning":{"!type":"fn() -> !this"},"lastFrame":{"!type":"fn() -> ?","!doc":"

Perform lastFrame cleanup and handle iterations

\n"},"sorter":{"!type":"fn(a: ?, b: ?) -> !this"},"start":{"!type":"fn(startTime: ?) -> !this","!doc":"

Fires beforeanimate and sets the running flag.

\n"},"afteranimate":{"!type":"fn(this: +Ext.fx.Animator, startTime: +Date, eOpts: ?)","!doc":"

Fires when the animation is complete.

\n"},"beforeanimate":{"!type":"fn(this: +Ext.fx.Animator, eOpts: ?)","!doc":"

Fires before the animation starts. A handler can return false to cancel the animation.

\n"},"keyframe":{"!type":"fn(this: +Ext.fx.Animator, keyframe: number, eOpts: ?)","!doc":"

Fires at each keyframe.

\n"}}},"CubicBezier":{"cubicBezier":{"!type":"fn(x1: ?, y1: ?, x2: ?, y2: ?) -> !this"},"cubicBezierAtTime":{"!type":"fn(t: ?, p1x: ?, p1y: ?, p2x: ?, p2y: ?, duration: ?) -> !this","!doc":"

End Definitions

\n"}},"Easing":{"!doc":"

This class contains a series of function definitions used to modify values during an animation.\nThey describe how the intermediate values used during a transition will be calculated. It allows for a transition to change\nspeed over its duration. The following options are available:

\n\n\n\n\n

Note that cubic-bezier will create a custom easing curve following the CSS3 transition-timing-function\nspecification. The four values specify points P1 and P2 of the curve as (x1, y1, x2, y2). All values must\nbe in the range [0, 1] or the definition is invalid.

\n"},"Manager":{"!doc":"

Animation Manager which keeps track of all current animations and manages them on a frame by frame basis.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"forceJS":{"!type":"bool","!doc":"

Force the use of JavaScript-based animation instead of CSS3 animation, even when CSS3\nanimation is supported by the browser. This defaults to true currently, as CSS3 animation support is still\nconsidered experimental at this time, and if used should be thouroughly tested across all targeted browsers.

\n"},"interval":{"!type":"number","!doc":"

Default interval in miliseconds to calculate each frame. Defaults to 16ms (~60fps)

\n"},"addAnim":{"!type":"fn(anim: +Ext.fx.Anim) -> !this","!doc":"

Add an Anim to the manager. This is done automatically when an Anim instance is created.

\n"},"applyPendingAttrs":{"!type":"fn() -> !this","!doc":"

Apply all pending attribute changes to their targets

\n"},"collectTargetData":{"!type":"fn(anim: +Ext.fx.Anim, timestamp: number, useCSS3?: bool, isLastFrame?: bool) -> ?","!doc":"

Collect target attributes for the given Anim object at the given timestamp

\n"},"createTarget":{"!type":"fn(target: ?) -> !this","!doc":"

Target factory

\n"},"removeAnim":{"!type":"fn(anim: +Ext.fx.Anim) -> !this","!doc":"

Remove an Anim from the manager. This is done automatically when an Anim ends.

\n"},"runAnim":{"!type":"fn(anim: ?) -> !this","!doc":"

Run the individual animation for this frame

\n"},"runner":{"!type":"fn() -> !this","!doc":"

Runner function being called each frame

\n"},"startAnim":{"!type":"fn(anim: ?) -> !this","!doc":"

Start the individual animation (initialization)

\n"}},"Queue":{"getActiveAnimation":{"!type":"fn(targetId: ?) -> !this","!doc":"

Returns current animation object if the element has any effects actively running or queued, else returns false.

\n"},"getFxDefaults":{"!type":"fn(targetId: ?) -> !this"},"getFxQueue":{"!type":"fn(targetId: ?) -> !this","!doc":"

get fx queue for passed target, create if needed.

\n"},"hasFxBlock":{"!type":"fn(targetId: ?) -> !this"},"queueFx":{"!type":"fn(anim: ?) -> !this"},"setFxDefaults":{"!type":"fn(targetId: ?, obj: ?) -> !this"},"stopAnimation":{"!type":"fn(targetId: ?) -> !this"},"!doc":"

Animation Queue mixin to handle chaining and queueing by target.

\n","!type":"fn()","prototype":{"!proto":"Ext.Base.prototype","getActiveAnimation":{"!type":"fn(targetId: ?) -> !this","!doc":"

Returns current animation object if the element has any effects actively running or queued, else returns false.

\n"},"getFxDefaults":{"!type":"fn(targetId: ?) -> !this"},"getFxQueue":{"!type":"fn(targetId: ?) -> !this","!doc":"

get fx queue for passed target, create if needed.

\n"},"hasFxBlock":{"!type":"fn(targetId: ?) -> !this"},"queueFx":{"!type":"fn(anim: ?) -> !this"},"setFxDefaults":{"!type":"fn(targetId: ?, obj: ?) -> !this"},"stopAnimation":{"!type":"fn(targetId: ?) -> !this"}}},"PropertyHandler":{"color":{"!type":"?"},"defaultHandler":{"!type":"?"},"object":{"!type":"?"},"path":{"!type":"?"},"stringHandler":{"!type":"?"}},"target":{"Component":{"!doc":"

This class represents a animation target for a Ext.Component. In general this class will not be\ncreated directly, the Ext.Component will be passed to the animation and\nand the appropriate target will be created.

\n","!type":"fn(target: +Ext.Component|+Ext.Element|+Ext.draw.Sprite)","prototype":{"!proto":"Ext.fx.target.Target.prototype","getPropMethod":{"!type":"?","!doc":"

Methods to call to retrieve unspecified \"from\" values from a target Component

\n"},"setMethods":{"!type":"?"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"getAttr":{"!type":"fn(attr: ?, val: ?) -> !this","!doc":"

Read the named attribute from the target Component. Use the defined getter for the attribute

\n"},"setAttr":{"!type":"fn(targetData: ?, isFirstFrame: ?, isLastFrame: ?) -> !this"}}},"CompositeElement":{"!doc":"

This class represents a animation target for a Ext.CompositeElement. It allows\neach Ext.Element in the group to be animated as a whole. In general this class will not be\ncreated directly, the Ext.CompositeElement will be passed to the animation and\nand the appropriate target will be created.

\n","!type":"fn(target: ?)","prototype":{"!proto":"Ext.fx.target.Element.prototype","isComposite":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated CompositeElement, or subclass thereof.

\n"},"getAttr":{"!type":"fn(attr: ?, val: ?) -> !this"},"setAttr":{"!type":"fn(targetData: ?) -> !this"}}},"CompositeElementCSS":{"!doc":"

This class represents a animation target for a Ext.CompositeElement, where the\nconstituent elements support CSS based animation. It allows each Ext.Element in\nthe group to be animated as a whole. In general this class will not be created directly,\nthe Ext.CompositeElement will be passed to the animation and the appropriate target\nwill be created.

\n","!type":"fn(target: ?)","prototype":{"!proto":"Ext.fx.target.CompositeElement.prototype","setAttr":{"!type":"fn() -> !this","!doc":"

End Definitions

\n"}}},"CompositeSprite":{"!doc":"

This class represents a animation target for a Ext.draw.CompositeSprite. It allows\neach Ext.draw.Sprite in the group to be animated as a whole. In general this class will not be\ncreated directly, the Ext.draw.CompositeSprite will be passed to the animation and\nand the appropriate target will be created.

\n","!type":"fn(target: +Ext.Component|+Ext.Element|+Ext.draw.Sprite)","prototype":{"!proto":"Ext.fx.target.Sprite.prototype","getAttr":{"!type":"fn(attr: ?, val: ?) -> !this","!doc":"

End Definitions

\n"}}},"Element":{"!doc":"

This class represents a animation target for an Ext.Element. In general this class will not be\ncreated directly, the Ext.Element will be passed to the animation and\nand the appropriate target will be created.

\n","!type":"fn(target: +Ext.Component|+Ext.Element|+Ext.draw.Sprite)","prototype":{"!proto":"Ext.fx.target.Target.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"getAttr":{"!type":"fn(attr: ?, val: ?) -> !this"},"getElVal":{"!type":"fn(el: ?, attr: ?, val: ?) -> !this"},"setAttr":{"!type":"fn(targetData: ?) -> !this"},"setElVal":{"!type":"fn(element: ?, attr: ?, value: ?) -> !this"}}},"ElementCSS":{"!doc":"

This class represents a animation target for an Ext.Element that supports CSS\nbased animation. In general this class will not be created directly, the Ext.Element\nwill be passed to the animation and the appropriate target will be created.

\n","!type":"fn(target: +Ext.Component|+Ext.Element|+Ext.draw.Sprite)","prototype":{"!proto":"Ext.fx.target.Element.prototype","setAttr":{"!type":"fn(targetData: ?, isFirstFrame: ?) -> !this","!doc":"

End Definitions

\n"}}},"Sprite":{"!doc":"

This class represents an animation target for a Ext.draw.Sprite. In general this class will not be\n created directly, the Ext.draw.Sprite will be passed to the animation and\n and the appropriate target will be created.

\n","!type":"fn(target: +Ext.Component|+Ext.Element|+Ext.draw.Sprite)","prototype":{"!proto":"Ext.fx.target.Target.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"getAttr":{"!type":"fn(attr: ?, val: ?) -> !this"},"getFromPrim":{"!type":"fn(sprite: ?, attr: ?) -> !this"},"setAttr":{"!type":"fn(targetData: ?) -> !this"}}},"Target":{"!doc":"

This class specifies a generic target for an animation. It provides a wrapper around a\nseries of different types of objects to allow for a generic animation API.\nA target can be a single object or a Composite object containing other objects that are\nto be animated. This class and it's subclasses are generally not created directly, the\nunderlying animation will create the appropriate Ext.fx.target.Target object by passing\nthe instance to be animated.

\n\n

The following types of objects can be animated:

\n\n\n\n","!type":"fn(target: +Ext.Component|+Ext.Element|+Ext.draw.Sprite)","prototype":{"!proto":"Ext.Base.prototype","isAnimTarget":{"!type":"bool"},"getId":{"!type":"fn() -> !this"}}}}},"grid":{"CellContext":{"!doc":"

Internal utility class that provides a unique cell context.

\n","!type":"fn(view: ?)","prototype":{"!proto":"Ext.Base.prototype","isCellContext":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated CellContext, or subclass thereof.

\n"},"setColumn":{"!type":"fn(col: ?) -> !this"},"setPosition":{"!type":"fn(row: ?, col: ?) -> !this","!doc":"

Selection row/record & column/columnHeader

\n"},"setRow":{"!type":"fn(row: ?) -> !this"}}},"CellEditor":{"!doc":"

Internal utility class that provides default configuration for cell editing.

\n","!type":"fn(config: Ext_grid_CellEditor_cfg)","prototype":{"!proto":"Ext.Editor.prototype","alignment":{"!type":"string","!doc":"

The position to align to (see Ext.util.Positionable.alignTo for more details).

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"hideEl":{"!type":"bool","!doc":"

False to keep the bound element visible while the editor is displayed

\n"},"shadow":{"!type":"bool|string","!doc":"

\"sides\" for sides/bottom only, \"frame\" for 4-way shadow, and \"drop\" for bottom-right shadow.

\n"},"shim":{"!type":"bool"},"treeNodeSelector":{"!type":"string"},"afterRender":{"!type":"fn() -> !this","!doc":"

Fix checkbox blur when it is clicked.

\n"},"getTreeNodeOffset":{"!type":"fn(innerCell: ?) -> !this","!doc":"

private

\n"},"onCheckBoxClick":{"!type":"fn() -> !this","!doc":"

Restore checkbox focus and completeEdit method.

\n"},"onCheckBoxMouseDown":{"!type":"fn() -> !this","!doc":"

Because when checkbox is clicked it loses focus completeEdit is bypassed.

\n"},"onEditorTab":{"!type":"fn(e: ?) -> !this"},"onHide":{"!type":"fn() -> !this","!doc":"

Shows the grid cell inner element when a cell editor is hidden

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Hides the grid cell inner element when a cell editor is shown.

\n"},"realign":{"!type":"fn(autoSize: ?) -> !this","!doc":"

Realigns the Editor to the grid cell, or to the text node in the grid inner cell\nif the inner cell contains multiple child nodes.

\n"}}},"ColumnComponentLayout":{"!doc":"

Component layout for grid column headers which have a title element at the top followed by content.

\n","!type":"fn(config: Ext_grid_ColumnComponentLayout_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","setWidthInDom":{"!type":"bool","!doc":"

When publishing width of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculateOwnerHeightFromContentHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this","!doc":"

Push content height outwards when we are shrinkwrapping

\n"},"calculateOwnerWidthFromContentWidth":{"!type":"fn(ownerContext: ?, contentWidth: ?) -> !this","!doc":"

Push content width outwards when we are shrinkwrapping

\n"},"getTriggerOffset":{"!type":"fn(owner: ?, ownerContext: ?) -> !this"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

We do not need the Direct2D sub pixel measurement here. Just the offsetHeight will do.\nTODO: When https://sencha.jira.com/browse/EXTJSIV-7734 is fixed to not do subpixel adjustment on height,\nremove this override.

\n"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, outerHeight: ?) -> !this","!doc":"

If not shrink wrapping, push height info down into child items

\n"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, outerWidth: ?) -> !this","!doc":"

If not shrink wrapping, push width info down into child items

\n"},"publishOwnerHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this"}}},"ColumnLayout":{"!doc":"

This class is used only by the grid's HeaderContainer docked child.

\n\n

It adds the ability to shrink the vertical size of the inner container element back if a grouped\ncolumn header has all its child columns dragged out, and the whole HeaderContainer needs to shrink back down.

\n\n

Also, after every layout, after all headers have attained their 'stretchmax' height, it goes through and calls\nsetPadding on the columns so that they lay out correctly.

\n","!type":"fn(config: Ext_grid_ColumnLayout_cfg)","prototype":{"!proto":"Ext.layout.container.HBox.prototype","firstHeaderCls":{"!type":"string"},"lastHeaderCls":{"!type":"string"},"reserveOffset":{"!type":"bool","!doc":"

whether or not to reserve the availableSpaceOffset in layout calculations

\n"},"type":{"!type":"string"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Collect the height of the table of data upon layout begin

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"completeLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method (if implemented) is called at the end of the cycle in which this layout\ncompletes (by not setting done to false in calculate). It is\npossible for the layout to complete and yet become invalid before the end of the cycle,\nin which case, this method will not be called. It is also possible for this method to\nbe called and then later the layout becomes invalidated. This will result in\ncalculate being called again, followed by another call to this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"convertWidthsToFlexes":{"!type":"fn(ownerContext: ?) -> !this"},"getColumnContainerSize":{"!type":"fn(ownerContext: ?) -> !this"},"getContainerSize":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Local getContainerSize implementation accounts for vertical scrollbar in the view.

\n"},"initLayout":{"!type":"fn() -> !this","!doc":"

A one-time initialization method called just before rendering.

\n"},"publishInnerCtSize":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

FIX: when flexing we actually don't have enough space as we would\ntypically because of the scrollOffset on the GridView, must reserve this

\n"},"roundFlex":{"!type":"fn(width: ?) -> !this"}}},"ColumnManager":{"!doc":"

Manages and provides information about a TablePanel's visible leaf columns.

\n","!type":"fn(headerCt: ?, secondHeaderCt: ?)","prototype":{"!proto":"Ext.Base.prototype","columns":{"!type":"?"},"cacheColumns":{"!type":"fn() -> !this"},"getColumns":{"!type":"fn() -> !this"},"getHeaderAtIndex":{"!type":"fn(index: number) -> +Ext.grid.column.Column","!doc":"

Get a leaf level header by index regardless of what the nesting\nstructure is.

\n"},"getHeaderById":{"!type":"fn(id: string) -> +Ext.grid.column.Column","!doc":"

Get a leaf level header by index regardless of what the nesting\nstructure is.

\n"},"getHeaderIndex":{"!type":"fn(header: +Ext.grid.column.Column) -> number","!doc":"

Returns the index of a leaf level header regardless of what the nesting\nstructure is.

\n\n

If a group header is passed, the index of the first leaf level heder within it is returned.

\n"},"getVisibleHeaderClosestToIndex":{"!type":"fn(index: number) -> !this","!doc":"

When passed a column index, returns the closet visible column to that. If the column at the passed index is visible,\nthat is returned. If it is hidden, either the next visible, or the previous visible column is returned.

\n"},"invalidate":{"!type":"fn() -> !this"}}},"Panel":{"!doc":"

Grids are an excellent way of showing large amounts of tabular data on the client side. Essentially a supercharged\n<table>, GridPanel makes it easy to fetch, sort and filter large amounts of data.

\n\n

Grids are composed of two main pieces - a Store full of data and a set of columns to render.

\n\n

Basic GridPanel

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'simpsonsStore',\n    fields:['name', 'email', 'phone'],\n    data:{'items':[\n        { 'name': 'Lisa',  \"email\":\"lisa@simpsons.com\",  \"phone\":\"555-111-1224\"  },\n        { 'name': 'Bart',  \"email\":\"bart@simpsons.com\",  \"phone\":\"555-222-1234\" },\n        { 'name': 'Homer', \"email\":\"home@simpsons.com\",  \"phone\":\"555-222-1244\"  },\n        { 'name': 'Marge', \"email\":\"marge@simpsons.com\", \"phone\":\"555-222-1254\"  }\n    ]},\n    proxy: {\n        type: 'memory',\n        reader: {\n            type: 'json',\n            root: 'items'\n        }\n    }\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Simpsons',\n    store: Ext.data.StoreManager.lookup('simpsonsStore'),\n    columns: [\n        { text: 'Name',  dataIndex: 'name' },\n        { text: 'Email', dataIndex: 'email', flex: 1 },\n        { text: 'Phone', dataIndex: 'phone' }\n    ],\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n
\n\n

The code above produces a simple grid with three columns. We specified a Store which will load JSON data inline.\nIn most apps we would be placing the grid inside another container and wouldn't need to use the\nheight, width and renderTo configurations but they are included here to make it easy to get\nup and running.

\n\n

The grid we created above will contain a header bar with a title ('Simpsons'), a row of column headers directly underneath\nand finally the grid rows under the headers.

\n\n

Configuring columns

\n\n

By default, each column is sortable and will toggle between ASC and DESC sorting when you click on its header. Each\ncolumn header is also reorderable by default, and each gains a drop-down menu with options to hide and show columns.\nIt's easy to configure each column - here we use the same example as above and just modify the columns config:

\n\n
columns: [\n    {\n        text: 'Name',\n        dataIndex: 'name',\n        sortable: false,\n        hideable: false,\n        flex: 1\n    },\n    {\n        text: 'Email',\n        dataIndex: 'email',\n        hidden: true\n    },\n    {\n        text: 'Phone',\n        dataIndex: 'phone',\n        width: 100\n    }\n]\n
\n\n

We turned off sorting and hiding on the 'Name' column so clicking its header now has no effect. We also made the Email\ncolumn hidden by default (it can be shown again by using the menu on any other column). We also set the Phone column to\na fixed with of 100px and flexed the Name column, which means it takes up all remaining width after the other columns\nhave been accounted for. See the column docs for more details.

\n\n

Renderers

\n\n

As well as customizing columns, it's easy to alter the rendering of individual cells using renderers. A renderer is\ntied to a particular column and is passed the value that would be rendered into each cell in that column. For example,\nwe could define a renderer function for the email column to turn each email address into a mailto link:

\n\n
columns: [\n    {\n        text: 'Email',\n        dataIndex: 'email',\n        renderer: function(value) {\n            return Ext.String.format('<a href=\"mailto:{0}\">{1}</a>', value, value);\n        }\n    }\n]\n
\n\n

See the column docs for more information on renderers.

\n\n

Selection Models

\n\n

Sometimes all you want is to render data onto the screen for viewing, but usually it's necessary to interact with or\nupdate that data. Grids use a concept called a Selection Model, which is simply a mechanism for selecting some part of\nthe data in the grid. The two main types of Selection Model are RowSelectionModel, where entire rows are selected, and\nCellSelectionModel, where individual cells are selected.

\n\n

Grids use a Row Selection Model by default, but this is easy to customise like so:

\n\n
Ext.create('Ext.grid.Panel', {\n    selType: 'cellmodel',\n    store: ...\n});\n
\n\n

Specifying the cellmodel changes a couple of things. Firstly, clicking on a cell now\nselects just that cell (using a rowmodel will select the entire row), and secondly the\nkeyboard navigation will walk from cell to cell instead of row to row. Cell-based selection models are usually used in\nconjunction with editing.

\n\n

Sorting & Filtering

\n\n

Every grid is attached to a Store, which provides multi-sort and filtering capabilities. It's\neasy to set up a grid to be sorted from the start:

\n\n
var myGrid = Ext.create('Ext.grid.Panel', {\n    store: {\n        fields: ['name', 'email', 'phone'],\n        sorters: ['name', 'phone']\n    },\n    columns: [\n        { text: 'Name',  dataIndex: 'name' },\n        { text: 'Email', dataIndex: 'email' }\n    ]\n});\n
\n\n

Sorting at run time is easily accomplished by simply clicking each column header. If you need to perform sorting on\nmore than one field at run time it's easy to do so by adding new sorters to the store:

\n\n
myGrid.store.sort([\n    { property: 'name',  direction: 'ASC' },\n    { property: 'email', direction: 'DESC' }\n]);\n
\n\n

See Ext.data.Store for examples of filtering.

\n\n

State saving

\n\n

When configured stateful, grids save their column state (order and width) encapsulated within the default\nPanel state of changed width and height and collapsed/expanded state.

\n\n

Each column of the grid may be configured with a stateId which\nidentifies that column locally within the grid.

\n\n

Plugins and Features

\n\n

Grid supports addition of extra functionality through features and plugins:

\n\n\n\n","!type":"fn(config: +Ext.Element|string|Ext_grid_Panel_cfg)","prototype":{"!proto":"Ext.panel.Table.prototype","columns":{"!type":"[+Ext.grid.column.Column]|?","!doc":"

An array of column definition objects which define all columns that appear in this\ngrid. Each column definition provides the header text for the column, and a definition of where the data for that\ncolumn comes from.

\n\n

This can also be a configuration object for a {Ext.grid.header.Container HeaderContainer} which may override\ncertain default configurations if necessary. For example, the special layout may be overridden to use a simpler\nlayout, or one can set default values shared by all columns:

\n\n
columns: {\n    items: [\n        {\n            text: \"Column A\"\n            dataIndex: \"field_A\"\n        },{\n            text: \"Column B\",\n            dataIndex: \"field_B\"\n        }, \n        ...\n    ],\n    defaults: {\n        flex: 1\n    }\n}\n
\n"},"rowLines":{"!type":"bool","!doc":"

False to remove row line styling

\n"},"viewType":{"!type":"string","!doc":"

An xtype of view to use. This is automatically set to 'gridview' by Grid\nand to 'treeview' by Tree.

\n"},"lockable":{"!type":"bool"},"reconfigure":{"!type":"fn(this: +Ext.grid.Panel, store: +Ext.data.Store, columns: [?], oldStore: +Ext.data.Store, The: [+Ext.grid.column.Column], eOpts: ?)","!doc":"

Fires after a reconfigure.

\n"},"beforereconfigure":{"!type":"fn(this: +Ext.grid.Panel, store: +Ext.data.Store, columns: [?], oldStore: +Ext.data.Store, The: [+Ext.grid.column.Column], eOpts: ?)","!doc":"

Fires before a reconfigure to enable modification of incoming Store and columns.

\n"}}},"RowEditor":{"!doc":"

Internal utility class used to provide row editing functionality. For developers, they should use\nthe RowEditing plugin to use this functionality with a grid.

\n","!type":"fn(config: +Ext.Element|string|Ext_grid_RowEditor_cfg)","prototype":{"!proto":"Ext.form.Panel.prototype","border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"hideMode":{"!type":"string","!doc":"

Change the hideMode to offsets so that we get accurate measurements when\nthe roweditor is hidden for laying out things like a TriggerField.

\n"},"buttonUI":{"!type":"string"},"cancelBtnText":{"!type":"string","!doc":"

\n

\n"},"dirtyText":{"!type":"string","!doc":"

\n

\n"},"errorsText":{"!type":"string","!doc":"

\n

\n"},"lastScrollLeft":{"!type":"number","!doc":"

\n"},"lastScrollTop":{"!type":"number"},"saveBtnText":{"!type":"string","!doc":"

\n"},"addFieldsForColumn":{"!type":"fn(column: ?, initial: ?) -> !this"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"beforeDestroy":{"!type":"fn() -> !this"},"beforeEdit":{"!type":"fn() -> !this"},"calculateEditorTop":{"!type":"fn(rowTop: ?) -> !this","!doc":"

Given the top pixel position of a row in the scroll space,\ncalculate the editor top position in the view's encapsulating element.\nThis will only ever be in the visible range of the view's element.

\n"},"calculateLocalRowTop":{"!type":"fn(row: ?) -> !this","!doc":"

Calculates the top pixel position of the passed row within the view's scroll space.\nSo in a large, scrolled grid, this could be several thousand pixels.

\n"},"cancelEdit":{"!type":"fn() -> !this"},"clearClip":{"!type":"fn(el: ?) -> !this"},"clipBottom":{"!type":"fn(value: ?) -> !this"},"clipTop":{"!type":"fn(value: ?) -> !this"},"completeEdit":{"!type":"fn() -> !this"},"createErrorListItem":{"!type":"fn(e: ?) -> !this"},"focusContextCell":{"!type":"fn() -> !this","!doc":"

Focus the cell on start edit based upon the current context

\n"},"getClientWidth":{"!type":"fn() -> !this"},"getEditor":{"!type":"fn(fieldInfo: ?) -> !this"},"getErrors":{"!type":"fn() -> !this"},"getFloatingButtons":{"!type":"fn() -> !this"},"getRefItems":{"!type":"fn() -> !this","!doc":"

Lie to the CQ system about our nesting structure.\nPretend all the fields are always immediate children.\nInclude the two buttons.

\n"},"getRefOwner":{"!type":"fn() -> !this","!doc":"

Used by ComponentQuery, and the up method to find the\nowning Component in the linkage hierarchy.

\n\n

By default this returns the Container which contains this Component.

\n\n

This may be overriden by Component authors who implement ownership hierarchies which are not\nbased upon ownerCt, such as BoundLists being owned by Fields or Menus being owned by Buttons.

\n"},"getScrollDelta":{"!type":"fn() -> number","!doc":"

Returns the scroll delta required to scroll the context row into view in order to make\nthe whole of this editor visible.

\n"},"getToolTip":{"!type":"fn() -> !this"},"hideToolTip":{"!type":"fn() -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"insertColumnEditor":{"!type":"fn(column: ?) -> !this"},"isDirty":{"!type":"fn() -> bool","!doc":"

Convenience function to check if the form has any dirty fields. This is the same as calling\nthis.getForm().isDirty().

\n"},"loadRecord":{"!type":"fn(record: ?) -> +Ext.form.Basic","!doc":"

Loads an Ext.data.Model into this form (internally just calls Ext.form.Basic.loadRecord)\nSee also trackResetOnLoad.

\n"},"onBeforeViewRefresh":{"!type":"fn(view: ?) -> !this"},"onColumnAdd":{"!type":"fn(column: ?) -> !this"},"onColumnHide":{"!type":"fn(column: ?) -> !this"},"onColumnMove":{"!type":"fn(column: ?, fromIdx: ?, toIdx: ?) -> !this"},"onColumnRemove":{"!type":"fn(ct: ?, column: ?) -> !this"},"onColumnReplace":{"!type":"fn(map: ?, fieldId: ?, column: ?, oldColumn: ?) -> !this"},"onColumnResize":{"!type":"fn(column: ?, width: ?) -> !this"},"onColumnShow":{"!type":"fn(column: ?) -> !this"},"onFieldChange":{"!type":"fn() -> !this"},"onFieldContainerScroll":{"!type":"fn() -> !this","!doc":"

Synchronize the horizontal scroll position of the grid view with the fields.

\n"},"onFieldRender":{"!type":"fn(field: ?) -> !this"},"onGridResize":{"!type":"fn() -> !this","!doc":"

Grid listener added when this is rendered.\nKeep our containing element sized correctly

\n"},"onHide":{"!type":"fn() -> !this","!doc":"

Possibly animates down to a target element.

\n\n

Allows addition of behavior to the hide operation. After\ncalling the superclass’s onHide, the Component will be hidden.

\n\n

Gets passed the same parameters as hide.

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"onViewItemRemove":{"!type":"fn(record: ?, index: ?) -> !this"},"onViewRefresh":{"!type":"fn(view: ?) -> !this"},"onViewScroll":{"!type":"fn() -> !this"},"removeColumnEditor":{"!type":"fn(column: ?) -> !this"},"renderColumnData":{"!type":"fn(field: ?, record: ?, activeColumn: ?) -> !this"},"reposition":{"!type":"fn(animateConfig: ?, fromScrollHandler: ?) -> !this"},"repositionIfVisible":{"!type":"fn(c: ?) -> !this"},"repositionTip":{"!type":"fn() -> !this"},"showToolTip":{"!type":"fn() -> !this"},"startEdit":{"!type":"fn(record: +Ext.data.Model, columnHeader: +Ext.data.Model) -> !this","!doc":"

Start editing the specified grid at the specified position.

\n"},"syncButtonPosition":{"!type":"fn(scrollDelta: ?) -> !this","!doc":"

determines the amount by which the row editor will overflow, and flips the buttons\nto the top of the editor if the required scroll amount is greater than the available\nscroll space. Returns the scrollDelta required to scroll the editor into view after\nadjusting the button position.

\n"},"syncEditorClip":{"!type":"fn() -> !this","!doc":"

since the editor is rendered to the grid el, it must be clipped when scrolled\noutside of the grid view area so that it does not overlap the scrollbar or docked items

\n"},"syncFieldWidth":{"!type":"fn(column: ?) -> !this"},"syncFieldsHorizontalScroll":{"!type":"fn() -> !this","!doc":"

Synchronize the horizontal scroll position of the fields with the state of the grid view

\n"},"updateButton":{"!type":"fn(valid: ?) -> !this"}}},"RowEditorButtons":{"!doc":"

Private Container class used by the Ext.grid.RowEditor to hold its buttons.

\n","!type":"fn(config: Ext_grid_RowEditorButtons_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","frame":{"!type":"bool","!doc":"

Specify as true to have the Component inject framing elements within the Component at render time to provide a\ngraphical rounded frame around the Component content.

\n\n

This is only necessary when running on outdated, or non standard-compliant browsers such as Microsoft's Internet\nExplorer prior to version 9 which do not support rounded corners natively.

\n\n

The extra space taken up by this framing is available from the read only property frameSize.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"position":{"!type":"string"},"getFrameInfo":{"!type":"fn() -> !this","!doc":"

On render, reads an encoded style attribute, \"filter\" from the style of this Component's element.\nThis information is memoized based upon the CSS class name of this Component's element.\nBecause child Components are rendered as textual HTML as part of the topmost Container, a dummy div is inserted\ninto the document to receive the document element's CSS class name, and therefore style attributes.

\n"},"getFramingInfoCls":{"!type":"fn() -> !this"},"setButtonPosition":{"!type":"fn(position: ?) -> !this"}}},"View":{"!doc":"

The grid View class provides extra Ext.grid.Panel specific functionality to the\nExt.view.Table. In general, this class is not instanced directly, instead a viewConfig\noption is passed to the grid:

\n\n
Ext.create('Ext.grid.Panel', {\n    // other options\n    viewConfig: {\n        stripeRows: false\n    }\n});\n
\n\n

Drag Drop

\n\n

Drag and drop functionality can be achieved in the grid by attaching a Ext.grid.plugin.DragDrop plugin\nwhen creating the view.

\n\n
Ext.create('Ext.grid.Panel', {\n    // other options\n    viewConfig: {\n        plugins: {\n            ddGroup: 'people-group',\n            ptype: 'gridviewdragdrop',\n            enableDrop: false\n        }\n    }\n});\n
\n","!type":"fn(config: Ext_grid_View_cfg)","prototype":{"!proto":"Ext.view.Table.prototype","autoScroll":{"!type":"bool","!doc":"

true to use overflow:'auto' on the components layout element and show scroll bars automatically when necessary,\nfalse to clip any overflowing content.\nThis should not be combined with overflowX or overflowY.

\n"},"stripeRows":{"!type":"bool","!doc":"

True to stripe the rows.

\n\n

This causes the CSS class x-grid-row-alt to be added to alternate rows of the grid. A default CSS rule is\nprovided which sets a background color, but you can override this with a rule which either overrides the\nbackground-color style using the !important modifier, or which uses a CSS selector of higher specificity.

\n"}}},"ViewDropZone":{"!type":"fn(config: Ext_grid_ViewDropZone_cfg)","prototype":{"!proto":"Ext.view.DropZone.prototype","indicatorCls":{"!type":"string"},"indicatorHtml":{"!type":"string"},"handleNodeDrop":{"!type":"fn(data: ?, record: ?, position: ?) -> !this"}}},"column":{"Action":{"!doc":"

A Grid header type which renders an icon, or a series of icons in a grid cell, and offers a scoped click\nhandler for each icon.

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'employeeStore',\n    fields:['firstname', 'lastname', 'seniority', 'dep', 'hired'],\n    data:[\n        {firstname:\"Michael\", lastname:\"Scott\"},\n        {firstname:\"Dwight\", lastname:\"Schrute\"},\n        {firstname:\"Jim\", lastname:\"Halpert\"},\n        {firstname:\"Kevin\", lastname:\"Malone\"},\n        {firstname:\"Angela\", lastname:\"Martin\"}\n    ]\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Action Column Demo',\n    store: Ext.data.StoreManager.lookup('employeeStore'),\n    columns: [\n        {text: 'First Name',  dataIndex:'firstname'},\n        {text: 'Last Name',  dataIndex:'lastname'},\n        {\n            xtype:'actioncolumn',\n            width:50,\n            items: [{\n                icon: 'extjs/examples/shared/icons/fam/cog_edit.png',  // Use a URL in the icon config\n                tooltip: 'Edit',\n                handler: function(grid, rowIndex, colIndex) {\n                    var rec = grid.getStore().getAt(rowIndex);\n                    alert(\"Edit \" + rec.get('firstname'));\n                }\n            },{\n                icon: 'extjs/examples/restful/images/delete.png',\n                tooltip: 'Delete',\n                handler: function(grid, rowIndex, colIndex) {\n                    var rec = grid.getStore().getAt(rowIndex);\n                    alert(\"Terminate \" + rec.get('firstname'));\n                }\n            }]\n        }\n    ],\n    width: 250,\n    renderTo: Ext.getBody()\n});\n
\n\n

The action column can be at any index in the columns array, and a grid can have any number of\naction columns.

\n","!type":"fn(config: Ext_grid_column_Action_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","altText":{"!type":"string","!doc":"

The alt text to use for the image element.

\n"},"disabled":{"!type":"bool","!doc":"

If true, the action will not respond to click events, and will be displayed semi-opaque.

\n\n

This Column may also be disabled on a row by row basis by configuring a isDisabled method.

\n"},"getClass":{"!type":"fn()","!doc":"

A function which returns the CSS class to apply to the icon image.

\n"},"getTip":{"!type":"fn()","!doc":"

A function which returns the tooltip string for any row.

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the icon is clicked.

\n"},"icon":{"!type":"string","!doc":"

The URL of an image to display as the clickable element in the column.

\n\n

Defaults to Ext.BLANK_IMAGE_URL.

\n"},"iconCls":{"!type":"string","!doc":"

A CSS class to apply to the icon image. To determine the class dynamically, configure the Column with\na getClass function.

\n"},"isDisabled":{"!type":"fn()","!doc":"

A function which determines whether the action item for any row is disabled and returns true or false.

\n"},"items":{"!type":"[?]","!doc":"

An array of action items copied from the configured items configuration. Each will have\nan enable and disable method added which will enable and disable the associated action, and\nupdate the displayed icon accordingly.

\n"},"menuText":{"!type":"string","!doc":"

Text to display in this column's menu item if no text was specified as a header.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler, getClass, isDisabled and getTip fuctions are executed.\nDefaults to this Column.

\n"},"sortable":{"!type":"bool","!doc":"

False to disable sorting of this column. Whether local/remote sorting is used is specified in\nExt.data.Store.remoteSort.

\n"},"stopSelection":{"!type":"bool","!doc":"

Prevent grid selection upon mousedown.

\n"},"tooltip":{"!type":"string","!doc":"

A tooltip message to be displayed on hover. Ext.tip.QuickTipManager must\nhave been initialized.

\n\n

The tooltip may also be determined on a row by row basis by configuring a getTip method.

\n"},"innerCls":{"!type":"string"},"cascade":{"!type":"fn(fn: ?, scope: ?) -> +Ext.Container","!doc":"

Cascades down the component/container heirarchy from this component (passed in\nthe first call), calling the specified function with each component. The scope\n(this reference) of the function call will be the scope provided or the current\ncomponent. The arguments to the function will be the args provided or the current\ncomponent. If the function returns false at any point, the cascade is stopped on\nthat branch.

\n"},"defaultRenderer":{"!type":"fn(v: ?, meta: ?, record: ?, rowIdx: ?, colIdx: ?, store: ?, view: ?) -> !this","!doc":"

Renderer closure iterates through items creating an element for each and tagging with an identifying\nclass name x-action-col-{n}

\n"},"destroy":{"!type":"fn() -> !this"},"disableAction":{"!type":"fn(index: number|+Ext.grid.column.Action, silent?: bool) -> !this","!doc":"

Disables this ActionColumn's action at the specified index.

\n"},"enableAction":{"!type":"fn(index: number|+Ext.grid.column.Action, silent?: bool) -> !this","!doc":"

Enables this ActionColumn's action at the specified index.

\n"},"getRefItems":{"!type":"fn() -> !this","!doc":"

Private override because this cannot function as a Container, and it has an items property which is an Array, NOT a MixedCollection.

\n"},"processEvent":{"!type":"fn(type: ?, view: ?, cell: ?, recordIndex: ?, cellIndex: ?, e: ?, record: ?, row: ?) -> !this","!doc":"

Process and refire events routed from the GridView's processEvent method.\nAlso fires any configured click handlers. By default, cancels the mousedown event to prevent selection.\nReturns the event handler's status to allow canceling of GridView's bubbling process.

\n"}}},"Boolean":{"!doc":"

A Column definition class which renders boolean data fields. See the xtype\nconfig option of Ext.grid.column.Column for more details.

\n\n
Ext.create('Ext.data.Store', {\n   storeId:'sampleStore',\n   fields:[\n       {name: 'framework', type: 'string'},\n       {name: 'rocks', type: 'boolean'}\n   ],\n   data:{'items':[\n       { 'framework': \"Ext JS 4\",     'rocks': true  },\n       { 'framework': \"Sencha Touch\", 'rocks': true  },\n       { 'framework': \"Ext GWT\",      'rocks': true  }, \n       { 'framework': \"Other Guys\",   'rocks': false } \n   ]},\n   proxy: {\n       type: 'memory',\n       reader: {\n           type: 'json',\n           root: 'items'\n       }\n   }\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Boolean Column Demo',\n    store: Ext.data.StoreManager.lookup('sampleStore'),\n    columns: [\n        { text: 'Framework',  dataIndex: 'framework', flex: 1 },\n        {\n            xtype: 'booleancolumn', \n            text: 'Rocks',\n            trueText: 'Yes',\n            falseText: 'No', \n            dataIndex: 'rocks'\n        }\n    ],\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_grid_column_Boolean_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","falseText":{"!type":"string","!doc":"

The string returned by the renderer when the column value is falsey (but not undefined).

\n"},"trueText":{"!type":"string","!doc":"

The string returned by the renderer when the column value is not falsey.

\n"},"undefinedText":{"!type":"string","!doc":"

The string returned by the renderer when the column value is undefined.

\n"}}},"CheckColumn":{"!doc":"

A Column subclass which renders a checkbox in each column cell which toggles the truthiness of the associated data field on click.

\n\n

Example usage:

\n\n
var store = Ext.create('Ext.data.Store', {\n    fields : ['name', 'email', 'phone', 'active'],\n    data   : {\n        items : [\n            { name : 'Lisa',  email : 'lisa@simpsons.com',  phone : '555-111-1224', active : true  },\n            { name : 'Bart',  email : 'bart@simpsons.com',  phone : '555-222-1234', active : true  },\n            { name : 'Homer', email : 'home@simpsons.com',  phone : '555-222-1244', active : false },\n            { name : 'Marge', email : 'marge@simpsons.com', phone : '555-222-1254', active : true  }\n        ]\n    },\n    proxy  : {\n        type   : 'memory',\n        reader : {\n            type : 'json',\n            root : 'items'\n        }\n    }\n});\n\nExt.create('Ext.grid.Panel', {\n    title    : 'Simpsons',\n    height   : 200,\n    width    : 400,\n    renderTo : Ext.getBody(),\n    store    : store,\n    columns  : [\n        { text : 'Name', dataIndex : 'name' },\n        { text : 'Email', dataIndex : 'email', flex : 1 },\n        { text : 'Phone', dataIndex : 'phone' },\n        { xtype : 'checkcolumn', text : 'Active', dataIndex : 'active' }\n    ]\n});\n
\n\n

The check column can be at any index in the columns array.

\n","!type":"fn()","prototype":{"!proto":"Ext.grid.column.Column.prototype","stopSelection":{"!type":"bool","!doc":"

Prevent grid selection upon mousedown.

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"},"clickTargetName":{"!type":"string"},"innerCls":{"!type":"string"},"onDisable":{"!type":"fn(silent?: bool) -> !this","!doc":"

Disables this CheckColumn.

\n"},"onEnable":{"!type":"fn(silent?: bool) -> !this","!doc":"

Enables this CheckColumn.

\n"},"processEvent":{"!type":"fn(type: ?, view: ?, cell: ?, recordIndex: ?, cellIndex: ?, e: ?, record: ?, row: ?) -> !this","!doc":"

Process and refire events routed from the GridView's processEvent method.

\n"},"renderer":{"!type":"fn(value: ?, meta: ?) -> !this","!doc":"

Note: class names are not placed on the prototype bc renderer scope\nis not in the header.

\n"},"beforecheckchange":{"!type":"fn(this: +Ext.ux.CheckColumn, rowIndex: number, checked: bool, eOpts: ?)","!doc":"

Fires when before checked state of a row changes.\nThe change may be vetoed by returning false from a listener.

\n"},"checkchange":{"!type":"fn(this: +Ext.ux.CheckColumn, rowIndex: number, checked: bool, eOpts: ?)","!doc":"

Fires when the checked state of a row changes

\n"}}},"Column":{"!doc":"

This class specifies the definition for a column inside a Ext.grid.Panel. It encompasses\nboth the grid header configuration as well as displaying data within the grid itself. If the\ncolumns configuration is specified, this column will become a column group and can\ncontain other columns inside. In general, this class will not be created directly, rather\nan array of column configurations will be passed to the grid:

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'employeeStore',\n    fields:['firstname', 'lastname', 'seniority', 'dep', 'hired'],\n    data:[\n        {firstname:\"Michael\", lastname:\"Scott\", seniority:7, dep:\"Management\", hired:\"01/10/2004\"},\n        {firstname:\"Dwight\", lastname:\"Schrute\", seniority:2, dep:\"Sales\", hired:\"04/01/2004\"},\n        {firstname:\"Jim\", lastname:\"Halpert\", seniority:3, dep:\"Sales\", hired:\"02/22/2006\"},\n        {firstname:\"Kevin\", lastname:\"Malone\", seniority:4, dep:\"Accounting\", hired:\"06/10/2007\"},\n        {firstname:\"Angela\", lastname:\"Martin\", seniority:5, dep:\"Accounting\", hired:\"10/21/2008\"}\n    ]\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Column Demo',\n    store: Ext.data.StoreManager.lookup('employeeStore'),\n    columns: [\n        {text: 'First Name',  dataIndex:'firstname'},\n        {text: 'Last Name',  dataIndex:'lastname'},\n        {text: 'Hired Month',  dataIndex:'hired', xtype:'datecolumn', format:'M'},\n        {text: 'Department (Yrs)', xtype:'templatecolumn', tpl:'{dep} ({seniority})'}\n    ],\n    width: 400,\n    forceFit: true,\n    renderTo: Ext.getBody()\n});\n
\n\n

Convenience Subclasses

\n\n

There are several column subclasses that provide default rendering for various data types

\n\n\n\n\n

Setting Sizes

\n\n

The columns are laid out by a Ext.layout.container.HBox layout, so a column can either\nbe given an explicit width value or a flex configuration. If no width is specified the grid will\nautomatically the size the column to 100px. For column groups, the size is calculated by measuring\nthe width of the child columns, so a width option should not be specified in that case.

\n\n

Header Options

\n\n\n\n\n

Data Options

\n\n\n\n","!type":"fn(config: +Ext.Element|string|Ext_grid_column_Column_cfg)","prototype":{"!proto":"Ext.grid.header.Container.prototype","align":{"!type":"string","!doc":"

Sets the alignment of the header and rendered columns.\nPossible values are: 'left', 'center', and 'right'.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"columns":{"!type":"[?]","!doc":"

An optional array of sub-column definitions. This column becomes a group, and houses the columns defined in the\ncolumns config.

\n\n

Group columns may not be sortable. But they may be hideable and moveable. And you may move headers into and out\nof a group. Note that if all sub columns are dragged out of a group, the group is destroyed.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"dataIndex":{"!type":"string","!doc":"

The name of the field in the grid's Ext.data.Store's Ext.data.Model definition from\nwhich to draw the column's value. Required.

\n"},"detachOnRemove":{"!type":"bool","!doc":"

So that when removing from group headers which are then empty and then get destroyed, there's no child DOM left

\n"},"draggable":{"!type":"bool","!doc":"

False to disable drag-drop reordering of this column.

\n"},"editRenderer":{"!type":"fn()","!doc":"

A renderer to be used in conjunction with RowEditing. This renderer is used to\ndisplay a custom value for non-editable fields.

\n"},"editor":{"!type":"?|string","!doc":"

An optional xtype or config object for a Field to use for editing.\nOnly applicable if the grid is using an Editing plugin.

\n"},"emptyCellText":{"!type":"string","!doc":"

The text to diplay in empty cells (cells with a value of undefined, null, or '').

\n\n

Defaults to &#160; aka &nbsp;.

\n"},"field":{"!type":"?|string","!doc":"

Alias for editor.

\n"},"fixed":{"!type":"bool","!doc":"

True to prevent the column from being resizable.

\n"},"groupable":{"!type":"bool","!doc":"

If the grid uses a Ext.grid.feature.Grouping, this option may be used to disable the header menu\nitem to group by the column selected. By default, the header menu group option is enabled. Set to false to\ndisable (but still show) the group option in the header menu for the column.

\n"},"header":{"!type":"string","!doc":"

The header text.

\n"},"hideable":{"!type":"bool","!doc":"

False to prevent the user from hiding this column.

\n"},"lockable":{"!type":"bool","!doc":"

If the grid is configured with enableLocking, or has columns which are\nconfigured with a locked value, this option may be used to disable user-driven locking or unlocking\nof this column. This column will remain in the side into which its own locked configuration placed it.

\n"},"locked":{"!type":"bool","!doc":"

True to lock this column in place. Implicitly enables locking on the grid.\nSee also Ext.grid.Panel.enableLocking.

\n"},"menuDisabled":{"!type":"bool","!doc":"

True to disable the column header menu containing sort/hide options.

\n"},"menuText":{"!type":"string","!doc":"

The text to render in the column visibility selection menu for this column. If not\nspecified, will default to the text value.

\n"},"noWrap":{"!type":"bool","!doc":"

The default setting indicates that external CSS rules dictate that the title is white-space: nowrap and\ntherefore, width cannot affect the measured height by causing text wrapping. This is what the Sencha-supplied\nstyles set. If you change those styles to allow text wrapping, you must set this to false.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"renderer":{"!type":"string|fn()","!doc":"

A renderer is an 'interceptor' method which can be used to transform data (value, appearance, etc.)\nbefore it is rendered. Example:

\n\n
{\n    renderer: function(value){\n        if (value === 1) {\n            return '1 person';\n        }\n        return value + ' people';\n    }\n}\n
\n\n

Additionally a string naming an Ext.util.Format method can be passed:

\n\n
{\n    renderer: 'uppercase'\n}\n
\n"},"resizable":{"!type":"bool","!doc":"

False to prevent the column from being resizable.

\n"},"scope":{"!type":"?","!doc":"

The scope to use when calling the renderer function.

\n"},"sortable":{"!type":"bool","!doc":"

False to disable sorting of this column. Whether local/remote sorting is used is specified in\nExt.data.Store.remoteSort.

\n"},"stateId":{"!type":"string","!doc":"

An identifier which identifies this column uniquely within the owning grid's state.

\n\n

This does not have to be globally unique. A column's state is not saved standalone. It is encapsulated within\nthe owning grid's state.

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"},"text":{"!type":"string","!doc":"

The header text to be used as innerHTML (html tags are accepted) to display in the Grid.\nNote: to have a clickable header with no text displayed you can use the default of &#160; aka &nbsp;.

\n"},"tooltip":{"!type":"string","!doc":"

A tooltip to display for this column header

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' for QuickTips or 'title' for title attribute.

\n"},"ascSortCls":{"!type":"string"},"childEls":{"!type":"[?]"},"clickTargetName":{"!type":"string"},"descSortCls":{"!type":"string"},"groupHeaderCls":{"!type":"string"},"groupSubHeaderCls":{"!type":"string"},"handleWidth":{"!type":"number"},"hoverCls":{"!type":"string","!doc":"

Not the standard, automatically applied overCls because we must filter out overs of child headers.

\n"},"isColumn":{"!type":"bool","!doc":"

Set in this class to identify, at runtime, instances which are not instances of the\nHeaderContainer base class, but are in fact simple column headers.

\n"},"isHeader":{"!type":"bool"},"possibleSortStates":{"!type":"[?]"},"sortState":{"!type":"?"},"textEl":{"!type":"+Ext.Element","!doc":"

Element that contains the text in column header.

\n"},"triggerEl":{"!type":"+Ext.Element","!doc":"

Element that acts as button for column header dropdown menu.

\n"},"afterComponentLayout":{"!type":"fn(width: ?, height: ?, oldWidth: ?, oldHeight: ?) -> !this","!doc":"

private\nInform the header container about the resize

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"applyColumnState":{"!type":"fn(state: ?) -> !this"},"autoSize":{"!type":"fn(The: +Ext.grid.column.Column|number) -> !this","!doc":"

Sizes this Column to fit the max content width.\nNote that group columns shrinkwrap around the size of leaf columns. Auto sizing a group column\nautosizes descendant leaf columns.

\n"},"beforeRender":{"!type":"fn() -> !this"},"defaultRenderer":{"!type":"fn()","!doc":"

When defined this will take precedence over the renderer config.\nThis is meant to be defined in subclasses that wish to supply their own renderer.

\n"},"doSort":{"!type":"fn(state: ?) -> !this"},"getCellInnerSelector":{"!type":"fn() -> !this"},"getCellSelector":{"!type":"fn() -> !this"},"getColumnState":{"!type":"fn() -> !this"},"getDesiredWidth":{"!type":"fn() -> !this"},"getEditor":{"!type":"fn(record: ?, defaultField: ?) -> +Ext.form.field.Field","!doc":"

Retrieves the editing field for editing associated with this header. Returns false if there is no field\nassociated with the Header the method will return false. If the field has not been instantiated it will be\ncreated. Note: These methods only have an implementation if an Editing plugin has been enabled on the grid.

\n"},"getIndex":{"!type":"fn() -> number","!doc":"

Returns the index of this column only if this column is a base level Column. If it\nis a group column, it returns false.

\n"},"getSortParam":{"!type":"fn() -> string","!doc":"

Returns the parameter to sort upon when sorting this header. By default this returns the dataIndex and will not\nneed to be overriden in most cases.

\n"},"getStateId":{"!type":"fn() -> string","!doc":"

Gets the state id for this object.

\n"},"getVisibleIndex":{"!type":"fn() -> number","!doc":"

Returns the index of this column in the list of visible columns only if this column is a base level Column. If it\nis a group column, it returns false.

\n"},"hasMultipleVisibleChildren":{"!type":"fn(result: ?) -> !this","!doc":"

Private bubble function used in determining whether this column is lockable.\nExecutes in the scope of each component in the bubble sequence

\n"},"hasOtherMenuEnabledChildren":{"!type":"fn(result: ?) -> !this","!doc":"

Private bubble function used in determining whether this column is hideable.\nExecutes in the scope of each component in the bubble sequence

\n"},"hide":{"!type":"fn(fromOwner: ?) -> +Ext.Component","!doc":"

Hides this Component, setting it to invisible using the configured hideMode.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initDraggable":{"!type":"fn() -> !this","!doc":"

Header does not use the typical ComponentDraggable class and therefore we\noverride this with an emptyFn. It is controlled at the HeaderDragZone.

\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"initResizable":{"!type":"fn() -> !this","!doc":"

We need to override the default component resizable behaviour here

\n"},"isHideable":{"!type":"fn() -> !this","!doc":"

Determines whether the UI should be allowed to offer an option to hide this column.

\n\n

A column may not be hidden if to do so would leave the grid with no visible columns.

\n\n

This is used to determine the enabled/disabled state of header hide menu items.

\n"},"isLockable":{"!type":"fn() -> !this","!doc":"

Determines whether the UI should be allowed to offer an option to lock or unlock this column. Note\nthat this includes dragging a column into the opposite side of a lockable grid.

\n\n

A column may not be moved from one side to the other of a lockable grid\nif to do so would leave one side with no visible columns.

\n\n

This is used to determine the enabled/disabled state of the lock/unlock\nmenu item used in lockable grids, and to determine dropppabilty when dragging a header.

\n"},"isLocked":{"!type":"fn() -> !this","!doc":"

Determines whether this column is in the locked side of a grid. It may be a descendant node of a locked column\nand as such will not have the locked flag set.

\n"},"isOnLeftEdge":{"!type":"fn(e: ?) -> !this"},"isOnRightEdge":{"!type":"fn(e: ?) -> !this"},"onAdd":{"!type":"fn(child: ?) -> !this","!doc":"

Invalidate column cache on add\nWe cannot refresh the View on every add because this method is called\nwhen the HeaderDropZone moves Headers around, that will also refresh the view

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDownKey":{"!type":"fn(e: ?) -> !this"},"onEnterKey":{"!type":"fn(e: ?) -> !this"},"onRemove":{"!type":"fn(child: ?) -> !this","!doc":"

Invalidate column cache on remove\nWe cannot refresh the View on every remove because this method is called\nwhen the HeaderDropZone moves Headers around, that will also refresh the view

\n"},"onTitleElClick":{"!type":"fn(e: ?, t: ?) -> !this"},"onTitleElContextMenu":{"!type":"fn(e: ?, t: ?) -> !this"},"onTitleElDblClick":{"!type":"fn(e: ?) -> !this","!doc":"

Double click handler which, if on left or right edges, auto-sizes the column to the left.

\n"},"onTitleMouseOut":{"!type":"fn() -> !this"},"onTitleMouseOver":{"!type":"fn() -> !this"},"processEvent":{"!type":"fn(type: string, view: +Ext.view.Table, cell: +HTMLElement, recordIndex: number, cellIndex: number, e: +Ext.EventObject) -> !this","!doc":"

Process UI events from the view. The owning TablePanel calls this method, relaying events from the TableView

\n"},"setEditor":{"!type":"fn(field: ?)","!doc":"

Sets the form field to be used for editing. Note: This method only has an implementation if an Editing plugin has\nbeen enabled on the grid.

\n"},"setMenuActive":{"!type":"fn(isMenuOpen: ?) -> !this","!doc":"

Called when the column menu is activated/deactivated.\nChange the UI to indicate active/inactive menu

\n"},"setSortState":{"!type":"fn(state: ?, skipClear: ?, initial: ?) -> !this"},"setText":{"!type":"fn(text: string) -> !this","!doc":"

Sets the header text for this Column.

\n"},"show":{"!type":"fn(fromOwner: ?, fromChild: ?) -> +Ext.Component","!doc":"

Shows this Component, rendering it first if autoRender or floating are true.

\n\n

After being shown, a floating Component (such as a Ext.window.Window), is activated it and\nbrought to the front of its z-index stack.

\n"},"toggleSortState":{"!type":"fn() -> !this"}}},"Date":{"!doc":"

A Column definition class which renders a passed date according to the default locale, or a configured\nformat.

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'sampleStore',\n    fields:[\n        { name: 'symbol', type: 'string' },\n        { name: 'date',   type: 'date' },\n        { name: 'change', type: 'number' },\n        { name: 'volume', type: 'number' },\n        { name: 'topday', type: 'date' }                        \n    ],\n    data:[\n        { symbol: \"msft\",   date: '2011/04/22', change: 2.43, volume: 61606325, topday: '04/01/2010' },\n        { symbol: \"goog\",   date: '2011/04/22', change: 0.81, volume: 3053782,  topday: '04/11/2010' },\n        { symbol: \"apple\",  date: '2011/04/22', change: 1.35, volume: 24484858, topday: '04/28/2010' },            \n        { symbol: \"sencha\", date: '2011/04/22', change: 8.85, volume: 5556351,  topday: '04/22/2010' }            \n    ]\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Date Column Demo',\n    store: Ext.data.StoreManager.lookup('sampleStore'),\n    columns: [\n        { text: 'Symbol',   dataIndex: 'symbol', flex: 1 },\n        { text: 'Date',     dataIndex: 'date',   xtype: 'datecolumn',   format:'Y-m-d' },\n        { text: 'Change',   dataIndex: 'change', xtype: 'numbercolumn', format:'0.00' },\n        { text: 'Volume',   dataIndex: 'volume', xtype: 'numbercolumn', format:'0,000' },\n        { text: 'Top Day',  dataIndex: 'topday', xtype: 'datecolumn',   format:'l' }            \n    ],\n    height: 200,\n    width: 450,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_grid_column_Date_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","format":{"!type":"string","!doc":"

A formatting string as used by Ext.Date.format to format a Date for this Column.

\n\n

Defaults to the default date from Ext.Date.defaultFormat which itself my be overridden\nin a locale file.

\n"},"defaultRenderer":{"!type":"fn(value: ?) -> !this","!doc":"

When defined this will take precedence over the renderer config.\nThis is meant to be defined in subclasses that wish to supply their own renderer.

\n"}}},"Number":{"!doc":"

A Column definition class which renders a numeric data field according to a format string.

\n\n
Ext.create('Ext.data.Store', {\n   storeId:'sampleStore',\n   fields:[\n       { name: 'symbol', type: 'string' },\n       { name: 'price',  type: 'number' },\n       { name: 'change', type: 'number' },\n       { name: 'volume', type: 'number' }\n   ],\n   data:[\n       { symbol: \"msft\",   price: 25.76,  change: 2.43, volume: 61606325 },\n       { symbol: \"goog\",   price: 525.73, change: 0.81, volume: 3053782  },\n       { symbol: \"apple\",  price: 342.41, change: 1.35, volume: 24484858 },\n       { symbol: \"sencha\", price: 142.08, change: 8.85, volume: 5556351  }\n   ]\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Number Column Demo',\n    store: Ext.data.StoreManager.lookup('sampleStore'),\n    columns: [\n        { text: 'Symbol',         dataIndex: 'symbol', flex: 1 },\n        { text: 'Current Price',  dataIndex: 'price',  renderer: Ext.util.Format.usMoney },\n        { text: 'Change',         dataIndex: 'change', xtype: 'numbercolumn', format:'0.00' },\n        { text: 'Volume',         dataIndex: 'volume', xtype: 'numbercolumn', format:'0,000' }\n    ],\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_grid_column_Number_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","format":{"!type":"string","!doc":"

A formatting string as used by Ext.util.Format.number to format a numeric value for this Column.

\n"}}},"RowNumberer":{"!doc":"

A special type of Grid Ext.grid.column.Column that provides automatic\nrow numbering.

\n\n

Usage:

\n\n
columns: [\n    {xtype: 'rownumberer'},\n    {text: \"Company\", flex: 1, sortable: true, dataIndex: 'company'},\n    {text: \"Price\", width: 120, sortable: true, renderer: Ext.util.Format.usMoney, dataIndex: 'price'},\n    {text: \"Change\", width: 120, sortable: true, dataIndex: 'change'},\n    {text: \"% Change\", width: 120, sortable: true, dataIndex: 'pctChange'},\n    {text: \"Last Updated\", width: 120, sortable: true, renderer: Ext.util.Format.dateRenderer('m/d/Y'), dataIndex: 'lastChange'}\n]\n
\n","!type":"fn(config: Ext_grid_column_RowNumberer_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","align":{"!type":"string","!doc":"

Sets the alignment of the header and rendered columns.\nPossible values are: 'left', 'center', and 'right'.

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"dataIndex":{"!type":"string","!doc":"

The name of the field in the grid's Ext.data.Store's Ext.data.Model definition from\nwhich to draw the column's value. Required.

\n"},"draggable":{"!type":"bool","!doc":"

False to disable drag-drop reordering of this column.

\n"},"hideable":{"!type":"bool","!doc":"

False to prevent the user from hiding this column.

\n"},"lockable":{"!type":"bool","!doc":"

May not be moved from its preferred locked side when grid is enableLocking:true

\n"},"menuDisabled":{"!type":"bool","!doc":"

True to disable the column header menu containing sort/hide options.

\n"},"resizable":{"!type":"bool","!doc":"

private

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"},"text":{"!type":"string","!doc":"

Any valid text or HTML fragment to display in the header cell for the row number column.

\n"},"width":{"!type":"number","!doc":"

The default width in pixels of the row number column.

\n"},"autoLock":{"!type":"bool","!doc":"

Flag to Lockable to move instances of this column to the locked side.

\n"},"innerCls":{"!type":"string"},"rowspan":{"!type":"?"},"renderer":{"!type":"fn(value: ?, metaData: ?, record: ?, rowIdx: ?, colIdx: ?, store: ?) -> !this","!doc":"

private

\n"}}},"Template":{"!doc":"

A Column definition class which renders a value by processing a Model's\ndata using a configured\nXTemplate.

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'employeeStore',\n    fields:['firstname', 'lastname', 'seniority', 'department'],\n    groupField: 'department',\n    data:[\n        { firstname: \"Michael\", lastname: \"Scott\",   seniority: 7, department: \"Management\" },\n        { firstname: \"Dwight\",  lastname: \"Schrute\", seniority: 2, department: \"Sales\" },\n        { firstname: \"Jim\",     lastname: \"Halpert\", seniority: 3, department: \"Sales\" },\n        { firstname: \"Kevin\",   lastname: \"Malone\",  seniority: 4, department: \"Accounting\" },\n        { firstname: \"Angela\",  lastname: \"Martin\",  seniority: 5, department: \"Accounting\" }\n    ]\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Column Template Demo',\n    store: Ext.data.StoreManager.lookup('employeeStore'),\n    columns: [\n        { text: 'Full Name',       xtype: 'templatecolumn', tpl: '{firstname} {lastname}', flex:1 },\n        { text: 'Department (Yrs)', xtype: 'templatecolumn', tpl: '{department} ({seniority})' }\n    ],\n    height: 200,\n    width: 300,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_grid_column_Template_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","tpl":{"!type":"string|+Ext.XTemplate","!doc":"

An XTemplate, or an XTemplate definition string to use to process a\nModel's data to produce a\ncolumn's rendered value.

\n"},"defaultRenderer":{"!type":"fn(value: ?, meta: ?, record: ?) -> !this","!doc":"

When defined this will take precedence over the renderer config.\nThis is meant to be defined in subclasses that wish to supply their own renderer.

\n"}}}},"feature":{"AbstractSummary":{"!doc":"

A small abstract class that contains the shared behaviour for any summary\ncalculations to be used in the grid.

\n","!type":"fn(config: Ext_grid_feature_AbstractSummary_cfg)","prototype":{"!proto":"Ext.grid.feature.Feature.prototype","remoteRoot":{"!type":"string","!doc":"

The name of the property which contains the Array of summary objects.\nIt allows to use server-side calculated summaries.

\n"},"showSummaryRow":{"!type":"bool","!doc":"

True to show the summary row.

\n"},"summaryRowCls":{"!type":"string"},"summaryRowSelector":{"!type":"string"},"summaryRowTpl":{"!type":"?","!doc":"

High priority rowTpl interceptor which sees summary rows early, and renders them correctly and then aborts the row rendering chain.\nThis will only see action when summary rows are being updated and Table.onUpdate->Table.bufferRender renders the individual updated sumary row.

\n"},"summaryTableCls":{"!type":"?"},"generateSummaryData":{"!type":"fn() -> ?","!doc":"

Used by the Grouping Feature when showSummaryRow is true.

\n\n

Generates group summary data for the whole store.

\n"},"getSummary":{"!type":"fn(store: +Ext.data.Store, type: string|fn(), field: string, group: bool) -> number|string|?","!doc":"

Get the summary data for a field.

\n"},"init":{"!type":"fn() -> !this","!doc":"

Listen for store updates. Eg, from an Editor.

\n"},"outputSummaryRecord":{"!type":"fn(summaryRecord: ?, contextValues: ?, out: ?) -> !this"},"populateRecord":{"!type":"fn(group: ?) -> !this"},"populateRemoteRecord":{"!type":"fn(group: ?, data: ?) -> !this"},"toggleSummaryRow":{"!type":"fn(visible: bool) -> !this","!doc":"

Toggle whether or not to show the summary row.

\n"}}},"Feature":{"!doc":"

A feature is a type of plugin that is specific to the Ext.grid.Panel. It provides several\nhooks that allows the developer to inject additional functionality at certain points throughout the\ngrid creation cycle. This class provides the base template methods that are available to the developer,\nit should be extended.

\n\n

There are several built in features that extend this class, for example:

\n\n\n\n\n

Using Features

\n\n

A feature is added to the grid by specifying it an array of features in the configuration:

\n\n
var groupingFeature = Ext.create('Ext.grid.feature.Grouping');\nExt.create('Ext.grid.Panel', {\n    // other options\n    features: [groupingFeature]\n});\n
\n\n

Writing Features

\n\n

A Feature may add new DOM structure within the structure of a grid.

\n\n

A grid is essentially a <table> element. A TableView instance uses three XTemplates\nto render the grid, tableTpl, rowTpl, cellTpl.

\n\n\n\n\n

The tableTpl's data object Looks like this:\n {\n view: owningTableView,\n rows: recordsToRender,\n viewStartIndex: indexOfFirstRecordInStore,\n tableStyle: styleString\n }

\n\n\n\n\n

The rowTpl's data object looks like this:

\n\n
{\n    view:        owningTableView,\n    record:      recordToRender,\n    recordIndex: indexOfRecordInStore,\n    columns:     arrayOfColumnDefinitions,\n    itemClasses: arrayOfClassNames, // For outermost row in case of wrapping\n    rowClasses:  arrayOfClassNames,  // For internal data bearing row in case of wrapping\n    rowStyle:    styleString\n}\n
\n\n\n\n\n

The cellTpl's data object looks like this:

\n\n
{\n    record: recordToRender\n    column: columnToRender;\n    recordIndex: indexOfRecordInStore,\n    columnIndex: columnIndex,\n    align: columnAlign,\n    tdCls: classForCell\n}\n
\n\n

A Feature may inject its own tableTpl or rowTpl or cellTpl into the TableView's rendering by\ncalling Ext.view.Table.addTableTpl or Ext.view.Table.addRowTpl or Ext.view.Table.addCellTpl.

\n\n

The passed XTemplate is added upstream of the default template for the table element in a link list of XTemplates which contribute\nto the element's HTML. It may emit appropriate HTML strings into the output stream around a call to

\n\n
this.nextTpl.apply(values, out, parent);\n
\n\n

This passes the current value context, output stream and the parent value context to the next XTemplate in the list.

\n","!type":"fn(config: Ext_grid_feature_Feature_cfg)","prototype":{"!proto":"Ext.util.Observable.prototype","disabled":{"!type":"bool","!doc":"

True when feature is disabled.

\n"},"eventPrefix":{"!type":"string","!doc":"

Prefix to use when firing events on the view.\nFor example a prefix of group would expose \"groupclick\", \"groupcontextmenu\", \"groupdblclick\".

\n"},"eventSelector":{"!type":"string","!doc":"

Selector used to determine when to fire the event with the eventPrefix.

\n"},"grid":{"!type":"+Ext.grid.Panel","!doc":"

Reference to the grid panel

\n"},"hasFeatureEvent":{"!type":"bool","!doc":"

Most features will expose additional events, some may not and will\nneed to change this to false.

\n"},"isFeature":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Feature, or subclass thereof.

\n"},"view":{"!type":"+Ext.view.Table","!doc":"

Reference to the TableView.

\n"},"wrapsItem":{"!type":"bool"},"clone":{"!type":"fn() -> !this"},"destroy":{"!type":"fn() -> !this"},"disable":{"!type":"fn() -> !this","!doc":"

Disables the feature.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enables the feature.

\n"},"getFireEventArgs":{"!type":"fn(eventName: ?, view: ?, featureTarget: ?, e: ?) -> !this","!doc":"

Abstract method to be overriden when a feature should add additional\narguments to its event signature. By default the event will fire:

\n\n\n\n\n

The method must also return the eventName as the first index of the array\nto be passed to fireEvent.

\n"},"init":{"!type":"fn() -> !this"},"vetoEvent":{"!type":"fn() -> !this"}}},"GroupStore":{"!doc":"

Private record store class which takes the place of the view's data store to provide a grouped\nview of the data when the Grouping feature is used.

\n\n

Relays granular mutation events from the underlying store as refresh events to the view.

\n\n

On mutation events from the underlying store, updates the summary rows by firing update events on the corresponding\nsummary records.

\n","!type":"fn(groupingFeature: ?, store: ?)","prototype":{"!proto":"Ext.util.Observable.prototype","isStore":{"!type":"bool"},"bindStore":{"!type":"fn(store: ?) -> !this"},"collapseGroup":{"!type":"fn(group: ?) -> !this"},"expandGroup":{"!type":"fn(group: ?) -> !this"},"getAt":{"!type":"fn(index: ?) -> !this"},"getById":{"!type":"fn(id: ?) -> !this"},"getCount":{"!type":"fn() -> !this"},"getGroupPlaceholder":{"!type":"fn(group: ?) -> !this"},"getRange":{"!type":"fn(start: ?, end: ?, options: ?) -> !this"},"getTotalCount":{"!type":"fn() -> !this"},"indexOf":{"!type":"fn(record: ?, viewOnly: ?, includeCollapsed: ?) -> !this","!doc":"

Find index of record in group store.\nIf it's in a collapsed group, then it's -1, not present\nOtherwise, loop through groups keeping tally of intervening records.

\n"},"indexOfTotal":{"!type":"fn(record: +Ext.data.Model) -> number","!doc":"

Get the index within the entire dataset. From 0 to the totalCount.

\n\n

Like indexOf, this method is effected by filtering.

\n"},"isCollapsed":{"!type":"fn(name: ?) -> !this"},"isInCollapsedGroup":{"!type":"fn(record: ?) -> !this"},"onAdd":{"!type":"fn(store: ?, records: ?, startIndex: ?) -> !this"},"onBulkRemove":{"!type":"fn(store: ?, records: ?, indices: ?) -> !this"},"onClear":{"!type":"fn(store: ?, records: ?, startIndex: ?) -> !this"},"onRefresh":{"!type":"fn(store: ?) -> !this"},"onUpdate":{"!type":"fn(store: ?, record: ?, operation: ?, modifiedFieldNames: ?) -> !this"},"processStore":{"!type":"fn(store: ?) -> !this"},"rangeCached":{"!type":"fn(start: ?, end: ?) -> !this","!doc":"

This class is only created for fully loaded, non-buffered stores

\n"}}},"Grouping":{"!doc":"

This feature allows to display the grid rows aggregated into groups as specified by the Ext.data.Store.groupers\nspecified on the Store. The group will show the title for the group name and then the appropriate records for the group\nunderneath. The groups can also be expanded and collapsed.

\n\n

Extra Events

\n\n

This feature adds several extra events that will be fired on the grid to interact with the groups:

\n\n\n\n\n

Menu Augmentation

\n\n

This feature adds extra options to the grid column menu to provide the user with functionality to modify the grouping.\nThis can be disabled by setting the enableGroupingMenu option. The option to disallow grouping from being turned off\nby the user is enableNoGroups.

\n\n

Controlling Group Text

\n\n

The groupHeaderTpl is used to control the rendered title for each group. It can modified to customized\nthe default display.

\n\n

Example Usage

\n\n
var store = Ext.create('Ext.data.Store', {\n    storeId:'employeeStore',\n    fields:['name', 'seniority', 'department'],\n    groupField: 'department',\n    data: {'employees':[\n        { \"name\": \"Michael Scott\",  \"seniority\": 7, \"department\": \"Management\" },\n        { \"name\": \"Dwight Schrute\", \"seniority\": 2, \"department\": \"Sales\" },\n        { \"name\": \"Jim Halpert\",    \"seniority\": 3, \"department\": \"Sales\" },\n        { \"name\": \"Kevin Malone\",   \"seniority\": 4, \"department\": \"Accounting\" },\n        { \"name\": \"Angela Martin\",  \"seniority\": 5, \"department\": \"Accounting\" }\n    ]},\n    proxy: {\n        type: 'memory',\n        reader: {\n            type: 'json',\n            root: 'employees'\n        }\n    }\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Employees',\n    store: Ext.data.StoreManager.lookup('employeeStore'),\n    columns: [\n        { text: 'Name',     dataIndex: 'name' },\n        { text: 'Seniority', dataIndex: 'seniority' }\n    ],\n    features: [{ftype:'grouping'}],\n    width: 200,\n    height: 275,\n    renderTo: Ext.getBody()\n});\n
\n\n

Note: To use grouping with a grid that has locked columns, you need to supply\nthe grouping feature as a config object - so the grid can create two instances of the grouping feature.

\n","!type":"fn()","prototype":{"!proto":"Ext.grid.feature.Feature.prototype","collapsible":{"!type":"bool","!doc":"

Set to false to disable collapsing groups from the UI.

\n\n

This is set to false when the associated store is\nbuffered.

\n"},"depthToIndent":{"!type":"number","!doc":"

Number of pixels to indent per grouping level

\n"},"enableGroupingMenu":{"!type":"bool","!doc":"

True to enable the grouping control in the header menu.

\n"},"enableNoGroups":{"!type":"bool","!doc":"

True to allow the user to turn off grouping.

\n"},"groupByText":{"!type":"string","!doc":"

Text displayed in the grid header menu for grouping by header.

\n"},"groupHeaderTpl":{"!type":"string|[?]|+Ext.Template","!doc":"

A string Template snippet, an array of strings (optionally followed by an object containing Template methods) to be used to construct a Template, or a Template instance.

\n\n\n\n"},"hideGroupedHeader":{"!type":"bool","!doc":"

True to hide the header that is currently grouped.

\n"},"showGroupsText":{"!type":"string","!doc":"

Text displayed in the grid header for enabling/disabling grouping.

\n"},"showSummaryRow":{"!type":"bool","!doc":"

\n"},"startCollapsed":{"!type":"bool","!doc":"

True to start all groups collapsed.

\n"},"collapseTip":{"!type":"string","!doc":"

\n"},"collapsedCls":{"!type":"string"},"collapsibleCls":{"!type":"string"},"ctCls":{"!type":"string"},"eventPrefix":{"!type":"string","!doc":"

Prefix to use when firing events on the view.\nFor example a prefix of group would expose \"groupclick\", \"groupcontextmenu\", \"groupdblclick\".

\n"},"eventSelector":{"!type":"string","!doc":"

Selector used to determine when to fire the event with the eventPrefix.

\n"},"expandTip":{"!type":"string","!doc":"

\n"},"groupCls":{"!type":"string"},"groupInfo":{"!type":"?"},"groupTpl":{"!type":"?"},"hdCollapsedCls":{"!type":"string"},"hdNotCollapsibleCls":{"!type":"string"},"refreshData":{"!type":"?"},"tableTpl":{"!type":"?"},"wrapsItem":{"!type":"bool"},"afterCollapseExpand":{"!type":"fn(collapsed: ?, groupName: ?, focus: ?) -> !this"},"afterViewRender":{"!type":"fn() -> !this","!doc":"

Attach events to view

\n"},"block":{"!type":"fn(fromPartner: ?) -> !this"},"cleanup":{"!type":"fn(rows: ?, rowValues: ?) -> !this"},"clearGroupCache":{"!type":"fn() -> !this"},"collapse":{"!type":"fn(groupName: string, focus: bool) -> !this","!doc":"

Collapse a group

\n"},"collapseAll":{"!type":"fn() -> !this","!doc":"

Collapse all groups

\n"},"createGroupCls":{"!type":"fn(group: ?) -> !this"},"createGroupId":{"!type":"fn(group: ?) -> !this"},"destroy":{"!type":"fn() -> !this"},"disable":{"!type":"fn() -> !this","!doc":"

Disables the feature.

\n"},"doCollapseExpand":{"!type":"fn(collapsed: ?, groupName: ?, focus: ?) -> !this"},"enable":{"!type":"fn() -> !this","!doc":"

Enables the feature.

\n"},"expand":{"!type":"fn(groupName: string, focus: bool) -> !this","!doc":"

Expand a group

\n"},"expandAll":{"!type":"fn() -> !this","!doc":"

Expand all groups

\n"},"getFireEventArgs":{"!type":"fn(type: ?, view: ?, targetEl: ?, e: ?) -> !this","!doc":"

Abstract method to be overriden when a feature should add additional\narguments to its event signature. By default the event will fire:

\n\n\n\n\n

The method must also return the eventName as the first index of the array\nto be passed to fireEvent.

\n"},"getGroup":{"!type":"fn(name: ?) -> !this"},"getGroupField":{"!type":"fn() -> !this"},"getGroupName":{"!type":"fn(element: ?) -> !this"},"getGroupedHeader":{"!type":"fn(groupField: ?) -> !this"},"getHeaderNode":{"!type":"fn(groupName: ?) -> !this"},"getMenuItem":{"!type":"fn(dataIndex: ?) -> +Ext.grid.header.Container","!doc":"

Gets the related menu item for a dataIndex

\n"},"getMenuItems":{"!type":"fn() -> !this"},"getRecordGroup":{"!type":"fn(record: +Ext.data.Model) -> ?","!doc":"

Returns the group data object for the group to which the passed record belongs if the Store is grouped.

\n"},"init":{"!type":"fn(grid: ?) -> !this","!doc":"

Listen for store updates. Eg, from an Editor.

\n"},"injectGroupingMenu":{"!type":"fn() -> !this"},"isAllCollapsed":{"!type":"fn() -> !this","!doc":"

private\nReturns true if all groups are collapsed

\n"},"isAllExpanded":{"!type":"fn() -> !this","!doc":"

private\nReturns true if all groups are expanded

\n"},"isExpanded":{"!type":"fn(groupName: string) -> bool","!doc":"

Returns true if the named group is expanded.

\n"},"onColumnHideShow":{"!type":"fn(headerOwnerCt: ?, header: ?) -> !this"},"onColumnMove":{"!type":"fn() -> !this","!doc":"

Update first and last records in groups when column moves\nBecause of the RowWrap template, this will update the groups' headers and footers

\n"},"onGroupChange":{"!type":"fn() -> !this"},"onGroupClick":{"!type":"fn(view: ?, rowElement: ?, groupName: ?, e: ?) -> !this","!doc":"

Toggle between expanded/collapsed state when clicking on\nthe group.

\n"},"onGroupKey":{"!type":"fn(keyCode: ?, event: ?) -> !this"},"onGroupMenuItemClick":{"!type":"fn(menuItem: ?, e: ?) -> !this","!doc":"

Group by the header the user has clicked on.

\n"},"onGroupToggleMenuItemClick":{"!type":"fn(menuItem: ?, checked: ?) -> !this","!doc":"

Turn on and off grouping via the menu

\n"},"onReconfigure":{"!type":"fn(grid: ?, store: ?, columns: ?, oldStore: ?, oldColumns: ?) -> !this"},"pruneGroupedHeader":{"!type":"fn() -> !this","!doc":"

Prunes the grouped header from the header container

\n"},"refreshIf":{"!type":"fn() -> !this"},"setup":{"!type":"fn(rows: ?, rowValues: ?) -> !this"},"setupRowData":{"!type":"fn(record: ?, idx: ?, rowValues: ?) -> !this"},"showMenuBy":{"!type":"fn(t: ?, header: ?) -> !this"},"unblock":{"!type":"fn(fromPartner: ?) -> !this"},"vetoEvent":{"!type":"fn(record: ?, row: ?, rowIndex: ?, e: ?) -> !this"},"groupclick":{"!type":"fn(view: +Ext.view.Table, node: +HTMLElement, group: string, e: +Ext.EventObject, eOpts: ?)"},"groupcollapse":{"!type":"fn(view: +Ext.view.Table, node: +HTMLElement, group: string, eOpts: ?)"},"groupcontextmenu":{"!type":"fn(view: +Ext.view.Table, node: +HTMLElement, group: string, e: +Ext.EventObject, eOpts: ?)"},"groupdblclick":{"!type":"fn(view: +Ext.view.Table, node: +HTMLElement, group: string, e: +Ext.EventObject, eOpts: ?)"},"groupexpand":{"!type":"fn(view: +Ext.view.Table, node: +HTMLElement, group: string, eOpts: ?)"}}},"GroupingSummary":{"!doc":"

This feature adds an aggregate summary row at the bottom of each group that is provided\nby the Ext.grid.feature.Grouping feature. There are two aspects to the summary:

\n\n

Calculation

\n\n

The summary value needs to be calculated for each column in the grid. This is controlled\nby the summaryType option specified on the column. There are several built in summary types,\nwhich can be specified as a string on the column configuration. These call underlying methods\non the store:

\n\n\n\n\n

Alternatively, the summaryType can be a function definition. If this is the case,\nthe function is called with an array of records to calculate the summary value.

\n\n

Rendering

\n\n

Similar to a column, the summary also supports a summaryRenderer function. This\nsummaryRenderer is called before displaying a value. The function is optional, if\nnot specified the default calculated value is shown. The summaryRenderer is called with:

\n\n\n\n\n

Example Usage

\n\n
Ext.define('TestResult', {\n    extend: 'Ext.data.Model',\n    fields: ['student', 'subject', {\n        name: 'mark',\n        type: 'int'\n    }]\n});\n\nExt.create('Ext.grid.Panel', {\n    width: 200,\n    height: 240,\n    renderTo: document.body,\n    features: [{\n        groupHeaderTpl: 'Subject: {name}',\n        ftype: 'groupingsummary'\n    }],\n    store: {\n        model: 'TestResult',\n        groupField: 'subject',\n        data: [{\n            student: 'Student 1',\n            subject: 'Math',\n            mark: 84\n        },{\n            student: 'Student 1',\n            subject: 'Science',\n            mark: 72\n        },{\n            student: 'Student 2',\n            subject: 'Math',\n            mark: 96\n        },{\n            student: 'Student 2',\n            subject: 'Science',\n            mark: 68\n        }]\n    },\n    columns: [{\n        dataIndex: 'student',\n        text: 'Name',\n        summaryType: 'count',\n        summaryRenderer: function(value){\n            return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : '');\n        }\n    }, {\n        dataIndex: 'mark',\n        text: 'Mark',\n        summaryType: 'average'\n    }]\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.grid.feature.Grouping.prototype","showSummaryRow":{"!type":"bool","!doc":"

True to show the summary row.

\n"},"vetoEvent":{"!type":"fn(record: ?, row: ?, rowIndex: ?, e: ?) -> !this"}}},"RowBody":{"!doc":"

The rowbody feature enhances the grid's markup to have an additional\ntr -> td -> div which spans the entire width of the original row.

\n\n

This is useful to to associate additional information with a particular\nrecord in a grid.

\n\n

Rowbodies are initially hidden unless you override setupRowData.

\n\n

Will expose additional events on the gridview with the prefix of 'rowbody'.\nFor example: 'rowbodyclick', 'rowbodydblclick', 'rowbodycontextmenu'.

\n\n

Example

\n\n
Ext.define('Animal', {\n    extend: 'Ext.data.Model',\n    fields: ['name', 'latin', 'desc']\n});\n\nExt.create('Ext.grid.Panel', {\n    width: 400,\n    height: 300,\n    renderTo: Ext.getBody(),\n    store: {\n        model: 'Animal',\n        data: [\n            {name: 'Tiger', latin: 'Panthera tigris',\n             desc: 'The largest cat species, weighing up to 306 kg (670 lb).'},\n            {name: 'Roman snail', latin: 'Helix pomatia',\n             desc: 'A species of large, edible, air-breathing land snail.'},\n            {name: 'Yellow-winged darter', latin: 'Sympetrum flaveolum',\n             desc: 'A dragonfly found in Europe and mid and Northern China.'},\n            {name: 'Superb Fairy-wren', latin: 'Malurus cyaneus',\n             desc: 'Common and familiar across south-eastern Australia.'}\n        ]\n    },\n    columns: [{\n        dataIndex: 'name',\n        text: 'Common name',\n        width: 125\n    }, {\n        dataIndex: 'latin',\n        text: 'Scientific name',\n        flex: 1\n    }],\n    features: [{\n        ftype: 'rowbody',\n        setupRowData: function(record, rowIndex, rowValues) {\n            var headerCt = this.view.headerCt,\n                colspan = headerCt.getColumnCount();\n            // Usually you would style the my-body-class in CSS file\n            return {\n                rowBody: '<div style=\"padding: 1em\">'+record.get(\"desc\")+'</div>',\n                rowBodyCls: \"my-body-class\",\n                rowBodyColspan: colspan\n            };\n        }\n    }]\n});\n
\n","!type":"fn(config: Ext_grid_feature_RowBody_cfg)","prototype":{"!proto":"Ext.grid.feature.Feature.prototype","eventPrefix":{"!type":"string","!doc":"

Prefix to use when firing events on the view.\nFor example a prefix of group would expose \"groupclick\", \"groupcontextmenu\", \"groupdblclick\".

\n"},"eventSelector":{"!type":"string","!doc":"

Selector used to determine when to fire the event with the eventPrefix.

\n"},"extraRowTpl":{"!type":"?"},"rowBodyCls":{"!type":"string"},"rowBodyHiddenCls":{"!type":"string"},"rowBodyTdSelector":{"!type":"string"},"tableTpl":{"!type":"?"},"cleanup":{"!type":"fn(rows: ?, rowValues: ?) -> !this"},"getAdditionalData":{"!type":"fn(data: ?, idx: number, record: +Ext.data.Model, orig: ?)","!doc":"

Provides additional data to the prepareData call within the grid view.\nThe rowbody feature adds 3 additional variables into the grid view's template.\nThese are rowBodyCls, rowBodyColspan, and rowBody.

\n"},"getSelectedRow":{"!type":"fn(view: ?, rowIndex: ?) -> !this"},"init":{"!type":"fn(grid: ?) -> !this"},"onColumnsChanged":{"!type":"fn(headerCt: ?) -> !this","!doc":"

When columns added/removed, keep row body colspan in sync with number of columns.

\n"},"onMouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

Needed when not used inside a RowWrap to select the data row when mousedown on the body row.

\n"},"onStoreRemove":{"!type":"fn(store: ?, model: ?, index: ?) -> !this"},"setup":{"!type":"fn(rows: ?, rowValues: ?) -> !this"}}},"RowWrap":{"!type":"fn(config: Ext_grid_feature_RowWrap_cfg)","prototype":{"!proto":"Ext.grid.feature.Feature.prototype","hasFeatureEvent":{"!type":"bool","!doc":"

turn off feature events.

\n"},"rowWrapTd":{"!type":"string"},"tableTpl":{"!type":"?"},"wrapTpl":{"!type":"[?]"},"init":{"!type":"fn(grid: ?) -> !this"},"onColumnHideShow":{"!type":"fn() -> !this","!doc":"

Keep row wtap colspan in sync with number of visible columns.

\n"}}},"Summary":{"!doc":"

This feature is used to place a summary row at the bottom of the grid. If using a grouping,\nsee Ext.grid.feature.GroupingSummary. There are 2 aspects to calculating the summaries,\ncalculation and rendering.

\n\n

Calculation

\n\n

The summary value needs to be calculated for each column in the grid. This is controlled\nby the summaryType option specified on the column. There are several built in summary types,\nwhich can be specified as a string on the column configuration. These call underlying methods\non the store:

\n\n\n\n\n

Alternatively, the summaryType can be a function definition. If this is the case,\nthe function is called with an array of records to calculate the summary value.

\n\n

Rendering

\n\n

Similar to a column, the summary also supports a summaryRenderer function. This\nsummaryRenderer is called before displaying a value. The function is optional, if\nnot specified the default calculated value is shown. The summaryRenderer is called with:

\n\n\n\n\n

Example Usage

\n\n
Ext.define('TestResult', {\n    extend: 'Ext.data.Model',\n    fields: ['student', {\n        name: 'mark',\n        type: 'int'\n    }]\n});\n\nExt.create('Ext.grid.Panel', {\n    width: 400,\n    height: 200,\n    title: 'Summary Test',\n    style: 'padding: 20px',\n    renderTo: document.body,\n    features: [{\n        ftype: 'summary'\n    }],\n    store: {\n        model: 'TestResult',\n        data: [{\n            student: 'Student 1',\n            mark: 84\n        },{\n            student: 'Student 2',\n            mark: 72\n        },{\n            student: 'Student 3',\n            mark: 96\n        },{\n            student: 'Student 4',\n            mark: 68\n        }]\n    },\n    columns: [{\n        dataIndex: 'student',\n        text: 'Name',\n        summaryType: 'count',\n        summaryRenderer: function(value, summaryData, dataIndex) {\n            return Ext.String.format('{0} student{1}', value, value !== 1 ? 's' : ''); \n        }\n    }, {\n        dataIndex: 'mark',\n        text: 'Mark',\n        summaryType: 'average'\n    }]\n});\n
\n","!type":"fn(config: Ext_grid_feature_Summary_cfg)","prototype":{"!proto":"Ext.grid.feature.AbstractSummary.prototype","dock":{"!type":"string","!doc":"

Configure 'top' or 'bottom' top create a fixed summary row either above or below the scrollable table.

\n"},"dockedSummaryCls":{"!type":"string"},"panelBodyCls":{"!type":"string"},"createSummaryRecord":{"!type":"fn(view: ?) -> !this"},"init":{"!type":"fn(grid: ?) -> !this","!doc":"

Listen for store updates. Eg, from an Editor.

\n"},"onColumnHeaderLayout":{"!type":"fn() -> !this","!doc":"

Synchronize column widths in the docked summary Component

\n"},"onStoreUpdate":{"!type":"fn() -> !this"},"onViewScroll":{"!type":"fn() -> !this"},"renderTFoot":{"!type":"fn(values: ?, out: ?) -> !this"},"vetoEvent":{"!type":"fn(record: ?, row: ?, rowIndex: ?, e: ?) -> !this"}}}},"header":{"Container":{"!doc":"

Container which holds headers and is docked at the top or bottom of a TablePanel.\nThe HeaderContainer drives resizing/moving/hiding of columns within the TableView.\nAs headers are hidden, moved or resized the headercontainer is responsible for\ntriggering changes within the view.

\n","!type":"fn(config: +Ext.Element|string|Ext_grid_header_Container_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"defaultWidth":{"!type":"number","!doc":"

Width of the header if no width or flex is specified.

\n"},"detachOnRemove":{"!type":"bool","!doc":"

True to move any component to the detachedBody when the component is\nremoved from this container. This option is only applicable when the component is not destroyed while\nbeing removed, see autoDestroy and remove. If this option is set to false, the DOM\nof the component will remain in the current place until it is explicitly moved.

\n"},"enableColumnHide":{"!type":"bool","!doc":"

False to disable column hiding within this grid.

\n"},"sealed":{"!type":"bool","!doc":"

Specify as true to constrain column dragging so that a column cannot be dragged into or out of this column.

\n\n

Note that this config is only valid for column headers which contain child column headers, eg:\n {\n sealed: true\n text: 'ExtJS',\n columns: [{\n text: '3.0.4',\n dataIndex: 'ext304'\n }, {\n text: '4.1.0',\n dataIndex: 'ext410'\n }\n }

\n"},"sortable":{"!type":"bool","!doc":"

Provides the default sortable state for all Headers within this HeaderContainer.\nAlso turns on or off the menus in the HeaderContainer. Note that the menu is\nshared across every header and therefore turning it off will remove the menu\nitems for every header.

\n"},"weight":{"!type":"number","!doc":"

HeaderContainer overrides the default weight of 0 for all docked items to 100.\nThis is so that it has more priority over things like toolbars.

\n"},"columnsText":{"!type":"string","!doc":"

\n

\n"},"ddLock":{"!type":"bool"},"dock":{"!type":"string"},"dragging":{"!type":"bool"},"headerOpenCls":{"!type":"string","!doc":"

\n"},"isGroupHeader":{"!type":"bool","!doc":"

True if this HeaderContainer is in fact a group header which contains sub headers.

\n"},"menuColsIcon":{"!type":"string"},"menuSortAscCls":{"!type":"string"},"menuSortDescCls":{"!type":"string"},"sortAscText":{"!type":"string","!doc":"

\n"},"sortClearText":{"!type":"string","!doc":"

\n

\n"},"sortDescText":{"!type":"string","!doc":"

\n

\n"},"triStateSort":{"!type":"bool","!doc":"

private; will probably be removed by 4.0

\n"},"applyColumnsState":{"!type":"fn(columns: ?) -> !this"},"applyDefaults":{"!type":"fn(config: ?) -> !this"},"autoSizeColumn":{"!type":"fn(header: ?) -> !this"},"clearOtherSortStates":{"!type":"fn(activeHeader: ?) -> !this","!doc":"

invoked internally by a header when not using triStateSorting

\n"},"getColumnCount":{"!type":"fn() -> !this","!doc":"

Returns the number of grid columns descended from this HeaderContainer.\nGroup Columns are HeaderContainers. All grid columns are returned, including hidden ones.

\n"},"getColumnMenu":{"!type":"fn(headerContainer: ?) -> !this","!doc":"

Returns an array of menu CheckItems corresponding to all immediate children\nof the passed Container which have been configured as hideable.

\n"},"getColumnsState":{"!type":"fn() -> !this"},"getFullWidth":{"!type":"fn() -> !this","!doc":"

Gets the full width of all columns that are visible.

\n"},"getGridColumns":{"!type":"fn(inResult: ?, hiddenAncestor: ?) -> [?]","!doc":"

Returns an array of all columns which appear in the grid's View. This goes down to the leaf column header\nlevel, and does not return grouped headers which contain sub headers.

\n\n

It includes hidden headers even though they are not rendered. This is for collection of menu items for the column hide/show menu.

\n\n

Headers which have a hidden ancestor have a hiddenAncestor: true property injected so that they can also be rendered at zero width without interrogating\nthat header's ownerCt axis for a hidden ancestor.

\n"},"getHeaderAtIndex":{"!type":"fn(index: number) -> !this","!doc":"

Get a leaf level header by index regardless of what the nesting\nstructure is.

\n"},"getHeaderIndex":{"!type":"fn(header: +Ext.grid.column.Column) -> number","!doc":"

Returns the index of a leaf level header regardless of what the nesting\nstructure is.

\n\n

If a group header is passed, the index of the first leaf level header within it is returned.

\n"},"getHeaderMenu":{"!type":"fn() -> !this"},"getHideableColumns":{"!type":"fn() -> !this","!doc":"

For use by column headers in determining whether there are any hideable columns when deciding whether or not\nthe header menu should be disabled.

\n"},"getMenu":{"!type":"fn() -> !this","!doc":"

Gets the menu (and will create it if it doesn't already exist)

\n"},"getMenuItemForHeader":{"!type":"fn(menu: ?, header: ?) -> !this"},"getMenuItems":{"!type":"fn() -> [?]","!doc":"

Returns an array of menu items to be placed into the shared menu\nacross all headers in this header container.

\n"},"getOwnerHeaderCt":{"!type":"fn() -> !this","!doc":"

Find the topmost HeaderContainer

\n"},"getVisibleGridColumns":{"!type":"fn() -> [?]","!doc":"

Returns an array of the visible columns in the grid. This goes down to the lowest column header\nlevel, and does not return grouped headers which contain sub headers.

\n"},"getVisibleHeaderClosestToIndex":{"!type":"fn(index: number) -> !this","!doc":"

When passed a column index, returns the closet visible column to that. If the column at the passed index is visible,\nthat is returned. If it is hidden, either the next visible, or the previous visible column is returned.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"isLayoutRoot":{"!type":"fn() -> !this","!doc":"

Determines whether this Component is the root of a layout. This returns true if\nthis component can run its layout without assistance from or impact on its owner.\nIf this component cannot run its layout given these restrictions, false is returned\nand its owner will be considered as the next candidate for the layout root.

\n\n

Setting the _isLayoutRoot property to true causes this method to always\nreturn true. This may be useful when updating a layout of a Container which shrink\nwraps content, and you know that it will not change size, and so can safely be the\ntopmost participant in the layout run.

\n"},"moveHeader":{"!type":"fn(fromIdx: ?, toIdx: ?) -> !this"},"onAdd":{"!type":"fn(c: ?) -> !this","!doc":"

Invalidate column cache on add\nWe cannot refresh the View on every add because this method is called\nwhen the HeaderDropZone moves Headers around, that will also refresh the view

\n"},"onColumnCheckChange":{"!type":"fn(checkItem: ?, checked: ?) -> !this"},"onColumnsChanged":{"!type":"fn() -> !this","!doc":"

Private\nCalled whenever a column is added or removed or moved.\nEnsures that the gridColumns caches are cleared.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onHeaderClick":{"!type":"fn(header: ?, e: ?, t: ?) -> !this"},"onHeaderContextMenu":{"!type":"fn(header: ?, e: ?, t: ?) -> !this"},"onHeaderHide":{"!type":"fn(header: ?) -> !this"},"onHeaderMoved":{"!type":"fn(header: ?, colsToMove: ?, fromIdx: ?, toIdx: ?) -> !this"},"onHeaderResize":{"!type":"fn(header: ?, w: ?, suppressFocus: ?) -> !this"},"onHeaderShow":{"!type":"fn(header: ?) -> !this"},"onHeaderTriggerClick":{"!type":"fn(header: ?, e: ?, t: ?) -> !this"},"onHeaderVisibilityChange":{"!type":"fn(header: ?, visible: ?) -> !this"},"onMenuHide":{"!type":"fn(menu: ?) -> !this","!doc":"

remove the trigger open class when the menu is hidden

\n"},"onMove":{"!type":"fn() -> !this"},"onRemove":{"!type":"fn(c: ?) -> !this","!doc":"

Invalidate column cache on remove\nWe cannot refresh the View on every remove because this method is called\nwhen the HeaderDropZone moves Headers around, that will also refresh the view

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"onSortAscClick":{"!type":"fn() -> !this","!doc":"

sort asc when clicking on item in menu

\n"},"onSortDescClick":{"!type":"fn() -> !this","!doc":"

sort desc when clicking on item in menu

\n"},"purgeCache":{"!type":"fn() -> !this"},"setSortState":{"!type":"fn() -> !this"},"showMenuBy":{"!type":"fn(t: ?, header: ?) -> !this"},"tempLock":{"!type":"fn() -> !this","!doc":"

Temporarily lock the headerCt. This makes it so that clicking on headers\ndon't trigger actions like sorting or opening of the header menu. This is\ndone because extraneous events may be fired on the headers after interacting\nwith a drag drop operation.

\n"},"updateMenuDisabledState":{"!type":"fn(menu: ?) -> !this"},"columnhide":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, eOpts: ?)"},"columnmove":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, fromIdx: number, toIdx: number, eOpts: ?)"},"columnresize":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, width: number, eOpts: ?)"},"columnschanged":{"!type":"fn(ct: +Ext.grid.header.Container, eOpts: ?)","!doc":"

Fired after the columns change in any way, when a column has been hidden or shown, or when a column\nis added to or removed from this header container.

\n"},"columnshow":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, eOpts: ?)"},"headerclick":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)"},"headercontextmenu":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)"},"headertriggerclick":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)"},"menucreate":{"!type":"fn(ct: +Ext.grid.header.Container, menu: +Ext.menu.Menu, eOpts: ?)","!doc":"

Fired immediately after the column header menu is created.

\n"},"sortchange":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, direction: string, eOpts: ?)"}}},"DragZone":{"!type":"fn(headerCt: ?)","prototype":{"!proto":"Ext.dd.DragZone.prototype","colHeaderSelector":{"!type":"string"},"colInnerSelector":{"!type":"string"},"maxProxyWidth":{"!type":"number"},"afterRepair":{"!type":"fn() -> !this"},"disable":{"!type":"fn() -> !this"},"enable":{"!type":"fn() -> !this"},"getDDGroup":{"!type":"fn() -> !this"},"getDragData":{"!type":"fn(e: ?) -> ?","!doc":"

Called when a mousedown occurs in this container. Looks in Ext.dd.Registry for a valid target to drag\nbased on the mouse down. Override this method to provide your own lookup logic (e.g. finding a child by class\nname). Make sure your returned object has a \"ddel\" attribute (with an HTML Element) for other functions to work.

\n"},"getRepairXY":{"!type":"fn() -> [number]","!doc":"

Called before a repair of an invalid drop to get the XY to animate to. By default returns the XY of\nthis.dragData.ddel

\n"},"onBeforeDrag":{"!type":"fn() -> bool","!doc":"

An empty function by default, but provided so that you can perform a custom action before the initial\ndrag event begins and optionally cancel it.

\n"},"onDragDrop":{"!type":"fn() -> !this","!doc":"

Abstract method called when this item is dropped on another DragDrop\nobj

\n"},"onInitDrag":{"!type":"fn() -> bool","!doc":"

Called once drag threshold has been reached to initialize the proxy element. By default, it clones the\nthis.dragData.ddel

\n"}}},"DropZone":{"!type":"fn(headerCt: ?)","prototype":{"!proto":"Ext.dd.DropZone.prototype","colHeaderCls":{"!type":"string"},"proxyOffsets":{"!type":"?"},"getBottomIndicator":{"!type":"fn() -> !this"},"getDDGroup":{"!type":"fn() -> !this"},"getLocation":{"!type":"fn(e: ?, t: ?) -> !this"},"getTargetFromEvent":{"!type":"fn(e: ?) -> ?","!doc":"

Returns a custom data object associated with the DOM node that is the target of the event. By default\nthis looks up the event target in the Ext.dd.Registry, although you can override this method to\nprovide your own custom lookup.

\n"},"getTopIndicator":{"!type":"fn() -> !this"},"hideIndicators":{"!type":"fn() -> !this"},"invalidateDrop":{"!type":"fn() -> !this"},"onNodeDrop":{"!type":"fn(node: ?, dragZone: ?, e: ?, data: ?) -> bool","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dropped onto\nthe drop node. The default implementation returns false, so it should be overridden to provide the\nappropriate processing of the drop event and return true so that the drag source's repair action does not run.

\n"},"onNodeOut":{"!type":"fn() -> !this","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dragged out of\nthe drop node without dropping. This method has no default implementation and should be overridden to provide\nnode-specific processing if necessary.

\n"},"onNodeOver":{"!type":"fn(node: ?, dragZone: ?, e: ?, data: ?) -> string","!doc":"

Called while the DropZone determines that a Ext.dd.DragSource is over a drop node\nthat has either been registered or detected by a configured implementation of getTargetFromEvent.\nThe default implementation returns this.dropAllowed, so it should be\noverridden to provide the proper feedback.

\n"},"positionIndicator":{"!type":"fn(data: ?, node: ?, e: ?) -> !this"}}}},"locking":{"HeaderContainer":{"!doc":"

Private class which acts as a HeaderContainer for the Lockable which aggregates all columns\nfrom both sides of the Loackable. It is never rendered, it's just used to interrogate the\ncolumn collection.

\n","!type":"fn(lockable: ?)","prototype":{"!proto":"Ext.grid.header.Container.prototype","applyColumnsState":{"!type":"fn(columns: ?) -> !this","!doc":"

Lockable uses its headerCt to apply column state

\n"},"getColumnsState":{"!type":"fn() -> !this","!doc":"

Lockable uses its headerCt to gather column state

\n"},"getGridColumns":{"!type":"fn() -> [?]","!doc":"

This is the function which all other column access methods are based upon\nReturn the full column set for the whole Lockable assembly

\n"},"getRefItems":{"!type":"fn() -> !this","!doc":"

Used by ComponentQuery, child and down to retrieve all of the items\nwhich can potentially be considered a child of this Container.

\n\n

This may be overriden by Components which have ownership of Components\nthat are not contained in the items collection.

\n\n

NOTE: IMPORTANT note for maintainers:\nItems are returned in tree traversal order. Each item is appended to the result array\nfollowed by the results of that child's getRefItems call.\nFloating child items are appended after internal child items.

\n"}}},"Lockable":{"!doc":"

Lockable is a private mixin which injects lockable behavior into any\nTablePanel subclass such as GridPanel or TreePanel. TablePanel will\nautomatically inject the Ext.grid.locking.Lockable mixin in when one of the\nthese conditions are met:

\n\n\n\n\n

Each TablePanel subclass must register an alias. It should have an array\nof configurations to copy to the 2 separate tablepanel's that will be generated\nto note what configurations should be copied. These are named normalCfgCopy and\nlockedCfgCopy respectively.

\n\n

Columns which are locked must specify a fixed width. They do NOT support a\nflex width.

\n\n

Configurations which are specified in this class will be available on any grid or\ntree which is using the lockable functionality.

\n","prototype":{"lockedGridConfig":{"!type":"?","!doc":"

Any special configuration options for the locked part of the grid

\n"},"lockedViewConfig":{"!type":"?","!doc":"

A view configuration to be applied to the\nlocked side of the grid. Any conflicting configurations between lockedViewConfig\nand viewConfig will be overwritten by the lockedViewConfig.

\n"},"normalGridConfig":{"!type":"?","!doc":"

Any special configuration options for the normal part of the grid

\n"},"normalViewConfig":{"!type":"?","!doc":"

A view configuration to be applied to the\nnormal/unlocked side of the grid. Any conflicting configurations between normalViewConfig\nand viewConfig will be overwritten by the normalViewConfig.

\n"},"scrollDelta":{"!type":"number","!doc":"

Number of pixels to scroll when scrolling the locked section with mousewheel.

\n"},"subGridXType":{"!type":"string","!doc":"

The xtype of the subgrid to specify. If this is\nnot specified lockable will determine the subgrid xtype to create by the\nfollowing rule. Use the superclasses xtype if the superclass is NOT\ntablepanel, otherwise use the xtype itself.

\n"},"syncRowHeight":{"!type":"bool","!doc":"

Synchronize rowHeight between the normal and\nlocked grid view. This is turned on by default. If your grid is guaranteed\nto have rows of all the same height, you should set this to false to\noptimize performance.

\n"},"bothCfgCopy":{"!type":"[?]","!doc":"

Required for the Lockable Mixin. These are the configurations which will be copied to the\nnormal and locked sub tablepanels

\n"},"lockText":{"!type":"string","!doc":"

\n

\n"},"lockedCfgCopy":{"!type":"[?]"},"normalCfgCopy":{"!type":"[?]"},"unlockText":{"!type":"string","!doc":"

i8n text\n

\n"},"afterLockedViewLayout":{"!type":"fn() -> !this","!doc":"

Due to automatic component border setting using inline style, to create the scrollbar-replacing\nbottom border, we have to postprocess the locked view after render.\nIf there are visible normal columns, we do need the fat bottom border.

\n"},"constructLockableFeatures":{"!type":"fn() -> !this"},"constructLockablePlugins":{"!type":"fn() -> !this"},"destroyLockable":{"!type":"fn() -> !this"},"determineXTypeToCreate":{"!type":"fn(lockedSide: ?) -> !this"},"getColumnWidth":{"!type":"fn(column: ?) -> !this","!doc":"

Used when calculating total locked column width in processColumns\nUse shrinkwrapping of child columns if no top level width.

\n"},"getLockingViewConfig":{"!type":"fn() -> !this"},"getMenuItems":{"!type":"fn(getMenuItems: ?, locked: ?) -> !this"},"injectLockable":{"!type":"fn() -> !this","!doc":"

injectLockable will be invoked before initComponent's parent class implementation\nis called, so throughout this method this. are configurations

\n"},"lock":{"!type":"fn(header?: +Ext.grid.column.Column, toIdx?: number) -> !this","!doc":"

Locks the activeHeader as determined by which menu is open OR a header\nas specified.

\n"},"modifyHeaderCt":{"!type":"fn() -> !this","!doc":"

inject Lock and Unlock text\nHide/show Lock/Unlock options

\n"},"onLockMenuClick":{"!type":"fn() -> !this"},"onLockedHeaderAdd":{"!type":"fn() -> !this"},"onLockedHeaderHide":{"!type":"fn() -> !this"},"onLockedHeaderResize":{"!type":"fn() -> !this"},"onLockedHeaderShow":{"!type":"fn() -> !this"},"onLockedHeaderSortChange":{"!type":"fn(headerCt: ?, header: ?, sortState: ?) -> !this"},"onLockedViewMouseWheel":{"!type":"fn(e: ?) -> !this","!doc":"

Listen for mousewheel events on the locked section which does not scroll.\nScroll it in response, and the other section will automatically sync.

\n"},"onLockedViewScroll":{"!type":"fn() -> !this"},"onNormalHeaderSortChange":{"!type":"fn(headerCt: ?, header: ?, sortState: ?) -> !this"},"onNormalViewScroll":{"!type":"fn() -> !this"},"onUnlockMenuClick":{"!type":"fn() -> !this"},"processColumns":{"!type":"fn(columns: ?) -> !this"},"reconfigureLockable":{"!type":"fn(store: ?, columns: ?) -> !this","!doc":"

we want to totally override the reconfigure behaviour here, since we're creating 2 sub-grids

\n"},"showMenuBy":{"!type":"fn(t: ?, header: ?) -> !this"},"syncLockedWidth":{"!type":"fn() -> bool","!doc":"

Updates the overall view after columns have been resized, or moved from\nthe locked to unlocked side or vice-versa.

\n\n

If all columns are removed from either side, that side must be hidden, and the\nsole remaining column owning grid then becomes the grid. It must flex to occupy the\nwhole of the locking view. And it must also allow scrolling.

\n\n

If columns are shared between the two sides, the locked grid shrinkwraps the\nwidth of the visible locked columns while the normal grid flexes in what space remains.

\n"},"syncRowHeights":{"!type":"fn() -> !this","!doc":"

Synchronizes the row heights between the locked and non locked portion of the grid for each\nrow. If one row is smaller than the other, the height will be increased to match the larger one.

\n"},"unlock":{"!type":"fn(header?: +Ext.grid.column.Column, toIdx?: number) -> !this","!doc":"

Unlocks the activeHeader as determined by which menu is open OR a header\nas specified.

\n"},"filterchange":{"!type":"fn(store: +Ext.data.Store, filters: [+Ext.util.Filter], eOpts: ?)","!doc":"

Fired whenever the filter set changes.

\n"},"lockcolumn":{"!type":"fn(this: +Ext.grid.Panel, column: +Ext.grid.column.Column, eOpts: ?)","!doc":"

Fires when a column is locked.

\n"},"processcolumns":{"!type":"fn(lockedColumns: [+Ext.grid.column.Column], normalColumns: [+Ext.grid.column.Column], eOpts: ?)","!doc":"

Fires when the configured (or reconfigured) column set is split into two depending on the locked flag.

\n"},"unlockcolumn":{"!type":"fn(this: +Ext.grid.Panel, column: +Ext.grid.column.Column, eOpts: ?)","!doc":"

Fires when a column is unlocked.

\n"}}},"View":{"!doc":"

This class is used internally to provide a single interface when using\na locking grid. Internally, the locking grid creates two separate grids,\nso this class is used to map calls appropriately.

\n","!type":"fn(config: Ext_grid_locking_View_cfg)","prototype":{"!proto":"Ext.Base.prototype","eventRelayRe":{"!type":"+RegExp"},"isLockingView":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated LockingView, or subclass thereof.

\n"},"addElListener":{"!type":"fn(eventName: ?, fn: ?, scope: ?) -> !this"},"addRowCls":{"!type":"fn() -> !this"},"bindStore":{"!type":"fn() -> !this"},"destroy":{"!type":"fn() -> !this"},"focus":{"!type":"fn() -> !this"},"focusCell":{"!type":"fn(position: ?) -> !this"},"focusRow":{"!type":"fn(row: ?) -> !this"},"getCell":{"!type":"fn(record: ?, column: ?) -> !this"},"getEl":{"!type":"fn(column: ?) -> !this"},"getGridColumns":{"!type":"fn() -> !this"},"getNode":{"!type":"fn(nodeInfo: ?, dataRow: ?) -> !this"},"getRecord":{"!type":"fn(node: ?) -> !this"},"getSelectionModel":{"!type":"fn() -> !this"},"getStore":{"!type":"fn() -> !this"},"getViewForColumn":{"!type":"fn(column: ?) -> !this"},"indexOf":{"!type":"fn(record: ?) -> !this"},"isVisible":{"!type":"fn(deep: ?) -> !this"},"onItemMouseEnter":{"!type":"fn(view: ?, record: ?) -> !this"},"onItemMouseLeave":{"!type":"fn(view: ?, record: ?) -> !this"},"onPanelRender":{"!type":"fn() -> !this"},"refresh":{"!type":"fn() -> !this"},"refreshNode":{"!type":"fn() -> !this"},"relayFn":{"!type":"fn(name: ?, args: ?) -> !this"},"removeRowCls":{"!type":"fn() -> !this"},"scrollBy":{"!type":"fn() -> !this"}}}},"plugin":{"BufferedRenderer":{"!doc":"

Implements buffered rendering of a grid, allowing users can scroll\nthrough thousands of records without the performance penalties of\nrenderering all the records on screen at once.

\n\n

The number of rows rendered outside the visible area, and the\nbuffering of pages of data from the remote server for immediate\nrendering upon scroll can be controlled by configuring the plugin.

\n\n

You can tell it to create a larger table to provide more scrolling\nbefore new rows need to be added to the leading edge of the table.

\n\n
var myStore = Ext.create('Ext.data.Store', {\n    // ...\n    pageSize: 100,\n    // ...\n});\n\nvar grid = Ext.create('Ext.grid.Panel', {\n    // ...\n    autoLoad: true,\n    plugins: {\n        ptype: 'bufferedrenderer',\n        trailingBufferZone: 20,  // Keep 20 rows rendered in the table behind scroll\n        leadingBufferZone: 50   // Keep 50 rows rendered in the table ahead of scroll\n    },\n    // ...\n});\n
\n\n

Implementation notes

\n\n

This class monitors scrolling of the TableView within a GridPanel to render a small section of\nthe dataset.

\n","!type":"fn(config?: Ext_grid_plugin_BufferedRenderer_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","leadingBufferZone":{"!type":"number","!doc":"

The number of extra rows to render on the leading side of scrolling\noutside the numFromEdge buffer as scrolling proceeds.

\n"},"numFromEdge":{"!type":"number","!doc":"

The zone which causes new rows to be appended to the view. As soon as the edge\nof the rendered grid is this number of rows from the edge of the viewport, the view is moved.

\n"},"percentageFromEdge":{"!type":"number"},"scrollToLoadBuffer":{"!type":"number","!doc":"

This is the time in milliseconds to buffer load requests when scrolling the PagingScrollbar.

\n"},"synchronousRender":{"!type":"bool","!doc":"

By default, on detection of a scroll event which brings the end of the rendered table within\nnumFromEdge rows of the grid viewport, if the required rows are available in the Store,\nthe BufferedRenderer will render rows from the Store immediately before returning from the event handler.\nThis setting helps avoid the impression of whitespace appearing during scrolling.

\n\n

Set this to true to defer the render until the scroll event handler exits. This allows for faster\nscrolling, but also allows whitespace to be more easily scrolled into view.

\n"},"trailingBufferZone":{"!type":"number","!doc":"

The number of extra rows to render on the trailing side of scrolling\noutside the numFromEdge buffer as scrolling proceeds.

\n"},"variableRowHeight":{"!type":"bool","!doc":"

Configure as true if the row heights are not all the same height as the first row. Only configure this is needed - this will be if the\nrows contain unpredictably sized data, or you have changed the cell's text overflow stype to 'wrap'.

\n"},"bodyTop":{"!type":"number"},"lastScrollDirection":{"!type":"number"},"lockableScope":{"!type":"string"},"position":{"!type":"number","!doc":"

Current pixel scroll position of the associated View.

\n"},"rowHeight":{"!type":"number","!doc":"

private. Start at default value

\n"},"viewSize":{"!type":"number","!doc":"

private. Initial value of zero.

\n"},"attemptLoad":{"!type":"fn(start: ?, end: ?) -> !this"},"bindStore":{"!type":"fn(store: ?) -> !this"},"cancelLoad":{"!type":"fn() -> !this"},"destroy":{"!type":"fn() -> !this","!doc":"

The destroy method is invoked by the owning Component at the time the Component is being destroyed.

\n\n

The supplied implementation is empty. Subclasses should perform plugin cleanup in their own implementation of\nthis method.

\n"},"doAttemptLoad":{"!type":"fn(start: ?, end: ?) -> !this"},"getFirstVisibleRowIndex":{"!type":"fn(startRow: ?, endRow: ?, viewportTop: ?, viewportBottom: ?) -> !this"},"getLastVisibleRowIndex":{"!type":"fn(startRow: ?, endRow: ?, viewportTop: ?, viewportBottom: ?) -> !this"},"getScrollHeight":{"!type":"fn() -> !this"},"getViewRange":{"!type":"fn() -> !this"},"handleViewScroll":{"!type":"fn(direction: ?) -> !this"},"init":{"!type":"fn(grid: ?) -> !this","!doc":"

Initialize this as a plugin

\n"},"onRangeFetched":{"!type":"fn(range: ?, start: ?, end: ?, fromLockingPartner: ?) -> !this"},"onReconfigure":{"!type":"fn(grid: ?, store: ?) -> !this"},"onStoreClear":{"!type":"fn() -> !this"},"onViewRefresh":{"!type":"fn() -> !this"},"onViewResize":{"!type":"fn(view: ?, width: ?, height: ?, oldWidth: ?, oldHeight: ?) -> !this"},"onViewScroll":{"!type":"fn(e: ?, t: ?) -> !this"},"renderRange":{"!type":"fn(start: ?, end: ?, forceSynchronous: ?) -> !this"},"scrollTo":{"!type":"fn(recordIdx: number, doSelect: bool, callback: fn(), scope: ?) -> !this","!doc":"

Scrolls to and optionlly selects the specified row index in the total dataset.

\n"},"setBodyTop":{"!type":"fn(bodyTop: ?, calculatedTop: ?) -> !this"},"setViewSize":{"!type":"fn(viewSize: ?) -> !this"},"stretchView":{"!type":"fn(view: ?, scrollRange: ?) -> !this"},"unbindStore":{"!type":"fn() -> !this"}}},"CellEditing":{"!doc":"

The Ext.grid.plugin.CellEditing plugin injects editing at a cell level for a Grid. Only a single\ncell will be editable at a time. The field that will be used for the editor is defined at the\neditor. The editor can be a field instance or a field configuration.

\n\n

If an editor is not specified for a particular column then that cell will not be editable and it will\nbe skipped when activated via the mouse or the keyboard.

\n\n

The editor may be shared for each column in the grid, or a different one may be specified for each column.\nAn appropriate field type should be chosen to match the data structure that it will be editing. For example,\nto edit a date, it would be useful to specify Ext.form.field.Date as the editor.

\n\n

Example

\n\n

A grid with editor for the name and the email columns:

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'simpsonsStore',\n    fields:['name', 'email', 'phone'],\n    data:{'items':[\n        {\"name\":\"Lisa\", \"email\":\"lisa@simpsons.com\", \"phone\":\"555-111-1224\"},\n        {\"name\":\"Bart\", \"email\":\"bart@simpsons.com\", \"phone\":\"555-222-1234\"},\n        {\"name\":\"Homer\", \"email\":\"home@simpsons.com\", \"phone\":\"555-222-1244\"},\n        {\"name\":\"Marge\", \"email\":\"marge@simpsons.com\", \"phone\":\"555-222-1254\"}\n    ]},\n    proxy: {\n        type: 'memory',\n        reader: {\n            type: 'json',\n            root: 'items'\n        }\n    }\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Simpsons',\n    store: Ext.data.StoreManager.lookup('simpsonsStore'),\n    columns: [\n        {header: 'Name',  dataIndex: 'name', editor: 'textfield'},\n        {header: 'Email', dataIndex: 'email', flex:1,\n            editor: {\n                xtype: 'textfield',\n                allowBlank: false\n            }\n        },\n        {header: 'Phone', dataIndex: 'phone'}\n    ],\n    selType: 'cellmodel',\n    plugins: [\n        Ext.create('Ext.grid.plugin.CellEditing', {\n            clicksToEdit: 1\n        })\n    ],\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n
\n\n

This requires a little explanation. We're passing in store and columns as normal, but\nwe also specify a field on two of our columns. For the\nName column we just want a default textfield to edit the value, so we specify 'textfield'.\nFor the Email column we customized the editor slightly by passing allowBlank: false, which\nwill provide inline validation.

\n\n

To support cell editing, we also specified that the grid should use the 'cellmodel'\nselType, and created an instance of the CellEditing plugin,\nwhich we configured to activate each editor after a single click.

\n","!type":"fn(config: Ext_grid_plugin_CellEditing_cfg)","prototype":{"!proto":"Ext.grid.plugin.Editing.prototype","lockableScope":{"!type":"string"},"cancelActiveEdit":{"!type":"fn(column: ?) -> !this"},"cancelEdit":{"!type":"fn() -> !this","!doc":"

Cancels any active editing.

\n"},"completeEdit":{"!type":"fn() -> !this","!doc":"

Completes the edit if there is an active edit in progress.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"getActiveColumn":{"!type":"fn() -> !this"},"getActiveEditor":{"!type":"fn() -> !this"},"getActiveRecord":{"!type":"fn() -> !this"},"getCell":{"!type":"fn(record: +Ext.data.Model, column: +Ext.grid.column.Column) -> !this","!doc":"

Gets the cell (td) for a particular record and column.

\n"},"getEditor":{"!type":"fn(record: ?, column: ?) -> !this"},"initCancelTriggers":{"!type":"fn() -> !this","!doc":"

Template method called from base class's initEvents

\n"},"isCellEditable":{"!type":"fn(record: ?, columnHeader: ?) -> !this"},"onBodyScroll":{"!type":"fn() -> !this"},"onEditComplete":{"!type":"fn(ed: ?, value: ?, startValue: ?) -> !this"},"onReconfigure":{"!type":"fn(grid: ?, store: ?, columns: ?) -> !this","!doc":"

Fires after the grid is reconfigured

\n"},"onSpecialKey":{"!type":"fn(ed: ?, field: ?, e: ?) -> !this"},"setActiveColumn":{"!type":"fn(column: ?) -> !this"},"setActiveEditor":{"!type":"fn(ed: ?) -> !this"},"setActiveRecord":{"!type":"fn(record: ?) -> !this"},"setColumnField":{"!type":"fn(column: ?, field: ?) -> !this","!doc":"

inherit docs

\n"},"setEditingContext":{"!type":"fn(context: ?) -> !this","!doc":"

internal getters/setters

\n"},"showEditor":{"!type":"fn(ed: ?, context: ?, value: ?) -> !this"},"startEdit":{"!type":"fn(record: +Ext.data.Model|number, columnHeader: +Ext.grid.column.Column|number) -> bool","!doc":"

Starts editing the specified record, using the specified Column definition to define which field is being edited.

\n"},"startEditByPosition":{"!type":"fn(position: ?) -> !this","!doc":"

Starts editing by position (row/column)

\n"},"beforeedit":{"!type":"fn(editor: +Ext.grid.plugin.CellEditing, e: ?, eOpts: ?)","!doc":"

Fires before cell editing is triggered. Return false from event handler to stop the editing.

\n"},"canceledit":{"!type":"fn(editor: +Ext.grid.plugin.CellEditing, e: ?, eOpts: ?)","!doc":"

Fires when the user started editing a cell but then cancelled the edit.

\n"},"edit":{"!type":"fn(editor: +Ext.grid.plugin.CellEditing, e: ?, eOpts: ?)","!doc":"

Fires after a cell is edited. Usage example:

\n\n
grid.on('edit', function(editor, e) {\n    // commit the changes right after editing finished\n    e.record.commit();\n});\n
\n"},"validateedit":{"!type":"fn(editor: +Ext.grid.plugin.CellEditing, e: ?, eOpts: ?)","!doc":"

Fires after a cell is edited, but before the value is set in the record. Return false from event handler to\ncancel the change.

\n\n

Usage example showing how to remove the red triangle (dirty record indicator) from some records (not all). By\nobserving the grid's validateedit event, it can be cancelled if the edit occurs on a targeted row (for\nexample) and then setting the field's new value in the Record directly:

\n\n
grid.on('validateedit', function(editor, e) {\n  var myTargetRow = 6;\n\n  if (e.row == myTargetRow) {\n    e.cancel = true;\n    e.record.data[e.field] = e.value;\n  }\n});\n
\n"}}},"DragDrop":{"!doc":"

This plugin provides drag and/or drop functionality for a GridView.

\n\n

It creates a specialized instance of DragZone which knows how to drag out of a GridView and loads the data object which is passed to a cooperating DragZone's\nmethods with the following properties:

\n\n\n\n\n

It also creates a specialized instance of Ext.dd.DropZone which cooperates with other DropZones which are\nmembers of the same ddGroup which processes such data objects.

\n\n

Adding this plugin to a view means that two new events may be fired from the client GridView, beforedrop and drop

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'simpsonsStore',\n    fields:['name'],\n    data: [[\"Lisa\"], [\"Bart\"], [\"Homer\"], [\"Marge\"]],\n    proxy: {\n        type: 'memory',\n        reader: 'array'\n    }\n});\n\nExt.create('Ext.grid.Panel', {\n    store: 'simpsonsStore',\n    columns: [\n        {header: 'Name',  dataIndex: 'name', flex: true}\n    ],\n    viewConfig: {\n        plugins: {\n            ptype: 'gridviewdragdrop',\n            dragText: 'Drag and drop to reorganize'\n        }\n    },\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config?: Ext_grid_plugin_DragDrop_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","containerScroll":{"!type":"?|bool","!doc":"

true to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then both the DragZones and\nDropZone used by this plugin will only interact with other drag drop objects in the same group.

\n"},"dragGroup":{"!type":"string","!doc":"

The ddGroup to which the DragZone will belong.

\n\n

This defines which other DropZones the DragZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"dragText":{"!type":"string","!doc":"

The text to show while dragging.

\n\n

Two placeholders can be used in the text:

\n\n\n\n"},"dropGroup":{"!type":"string","!doc":"

The ddGroup to which the DropZone will belong.

\n\n

This defines which other DragZones the DropZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"enableDrag":{"!type":"bool","!doc":"

false to disallow dragging items from the View.

\n"},"enableDrop":{"!type":"bool","!doc":"

false to disallow the View from accepting drop gestures.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to true

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to false

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"init":{"!type":"fn(view: ?) -> !this","!doc":"

The init method is invoked after initComponent method has been run for the client Component.

\n\n

The supplied implementation is empty. Subclasses should perform plugin initialization, and set up bidirectional\nlinks between the plugin and its client Component in their own implementation of this method.

\n"},"onViewRender":{"!type":"fn(view: ?) -> !this"},"beforedrop":{"!type":"fn(node: +HTMLElement, data: ?, overModel: +Ext.data.Model, dropPosition: string, dropHandlers: ?, eOpts: ?)","!doc":"

This event is fired through the GridView. Add listeners to the GridView object

\n\n

Fired when a drop gesture has been triggered by a mouseup event in a valid drop position in the GridView.

\n\n

Returning false to this event signals that the drop gesture was invalid, and if the drag proxy will animate\nback to the point from which the drag began.

\n\n

The dropHandlers parameter can be used to defer the processing of this event. For example to wait for the result of\na message box confirmation or an asynchronous server call. See the details of this property for more information.

\n\n
view.on('beforedrop', function(node, data, overModel, dropPosition, dropHandlers) {\n    // Defer the handling\n    dropHandlers.wait = true;\n    Ext.MessageBox.confirm('Drop', 'Are you sure', function(btn){\n        if (btn === 'yes') {\n            dropHandlers.processDrop();\n        } else {\n            dropHandlers.cancelDrop();\n        }\n    });\n});\n
\n\n

Any other return value continues with the data transfer operation, unless the wait property is set.

\n"},"drop":{"!type":"fn(node: +HTMLElement, data: ?, overModel: +Ext.data.Model, dropPosition: string, eOpts: ?)","!doc":"

This event is fired through the GridView. Add listeners to the GridView object Fired when a drop operation\nhas been completed and the data has been moved or copied.

\n"}}},"Editing":{"!doc":"

This class provides an abstract grid editing plugin on selected columns.\nThe editable columns are specified by providing an editor\nin the column configuration.

\n\n

Note: This class should not be used directly. See Ext.grid.plugin.CellEditing and\nExt.grid.plugin.RowEditing.

\n","!type":"fn(config: Ext_grid_plugin_Editing_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","clicksToEdit":{"!type":"number","!doc":"

The number of clicks on a grid required to display the editor.\nThe only accepted values are 1 and 2.

\n"},"triggerEvent":{"!type":"string","!doc":"

The event which triggers editing. Supercedes the clicksToEdit configuration. Maybe one of:

\n\n\n\n"},"defaultFieldXType":{"!type":"string"},"editStyle":{"!type":"string","!doc":"

cell, row, form

\n"},"editing":{"!type":"bool","!doc":"

Set to true while the editing plugin is active and an Editor is visible.

\n"},"relayedEvents":{"!type":"[?]"},"beforeEdit":{"!type":"fn(context: ?) -> bool","!doc":"

Template method called before editing begins.

\n"},"beforeViewCellFocus":{"!type":"fn(position: ?) -> !this","!doc":"

Override of View's method so that we can pre-empt the View's processing if the view is being triggered by a mousedown

\n"},"cancelEdit":{"!type":"fn() -> !this","!doc":"

Cancels any active edit that is in progress.

\n"},"completeEdit":{"!type":"fn() -> !this","!doc":"

Completes the edit if there is an active edit in progress.

\n"},"createColumnField":{"!type":"fn(columnHeader: ?, defaultField: ?) -> !this"},"destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"getColumnField":{"!type":"fn(columnHeader: ?, defaultField: ?) -> !this","!doc":"

remaps to the public API of Ext.grid.column.Column.getEditor

\n"},"getEditStyle":{"!type":"fn() -> !this"},"getEditingContext":{"!type":"fn(record: ?, columnHeader: ?) -> ?|+undefined","!doc":"

Collects all information necessary for any subclasses to perform their editing functions.

\n"},"hasColumnField":{"!type":"fn(columnHeader: ?) -> !this","!doc":"

remaps to the public API of Ext.grid.column.Column.hasEditor

\n"},"init":{"!type":"fn(grid: ?) -> !this","!doc":"

The init method is invoked after initComponent method has been run for the client Component.

\n\n

The supplied implementation is empty. Subclasses should perform plugin initialization, and set up bidirectional\nlinks between the plugin and its client Component in their own implementation of this method.

\n"},"initAddRemoveHeaderEvents":{"!type":"fn() -> !this"},"initCancelTriggers":{"!type":"fn() -> !this"},"initEditTriggers":{"!type":"fn() -> !this"},"initEvents":{"!type":"fn() -> !this"},"initFieldAccessors":{"!type":"fn(columns: ?) -> !this"},"initKeyNavHeaderEvents":{"!type":"fn() -> !this"},"onCellClick":{"!type":"fn(view: ?, cell: ?, colIdx: ?, record: ?, row: ?, rowIdx: ?, e: ?) -> !this","!doc":"

Used if we are triggered by a cellclick event

\n"},"onCellFocus":{"!type":"fn(record: ?, cell: ?, position: ?) -> !this","!doc":"

Used if we are triggered by the cellfocus event

\n"},"onColumnAdd":{"!type":"fn(ct: ?, column: ?) -> !this"},"onColumnMove":{"!type":"fn(headerCt: ?, column: ?, fromIdx: ?, toIdx: ?) -> !this","!doc":"

Inject field accessors on move because if the move FROM the main headerCt and INTO a grouped header,\nthe accessors will have been deleted but not added. They are added conditionally.

\n"},"onColumnRemove":{"!type":"fn(ct: ?, column: ?) -> !this"},"onEnterKey":{"!type":"fn(e: ?) -> !this"},"onEscKey":{"!type":"fn(e: ?) -> !this"},"onReconfigure":{"!type":"fn() -> !this","!doc":"

Fires after the grid is reconfigured

\n"},"onRowFocus":{"!type":"fn(record: ?, row: ?, rowIdx: ?) -> !this","!doc":"

Used if we are triggered by the rowfocus event

\n"},"removeFieldAccessors":{"!type":"fn(columns: ?) -> !this"},"setColumnField":{"!type":"fn(columnHeader: ?, field: ?) -> !this","!doc":"

remaps to the public API of Ext.grid.column.Column.setEditor

\n"},"startEdit":{"!type":"fn(record: +Ext.data.Model|number, columnHeader: +Ext.grid.column.Column|number) -> !this","!doc":"

Starts editing the specified record, using the specified Column definition to define which field is being edited.

\n"},"validateEdit":{"!type":"fn() -> !this"},"beforeedit":{"!type":"fn(editor: +Ext.grid.plugin.Editing, context: ?, eOpts: ?)","!doc":"

Fires before editing is triggered. Return false from event handler to stop the editing.

\n"},"canceledit":{"!type":"fn(editor: +Ext.grid.plugin.Editing, context: ?, eOpts: ?)","!doc":"

Fires when the user started editing but then cancelled the edit.

\n"},"edit":{"!type":"fn(editor: +Ext.grid.plugin.Editing, context: ?, eOpts: ?)","!doc":"

Fires after a editing. Usage example:

\n\n
grid.on('edit', function(editor, e) {\n    // commit the changes right after editing finished\n    e.record.commit();\n});\n
\n"},"validateedit":{"!type":"fn(editor: +Ext.grid.plugin.Editing, context: ?, eOpts: ?)","!doc":"

Fires after editing, but before the value is set in the record. Return false from event handler to\ncancel the change.

\n\n

Usage example showing how to remove the red triangle (dirty record indicator) from some records (not all). By\nobserving the grid's validateedit event, it can be cancelled if the edit occurs on a targeted row (for example)\nand then setting the field's new value in the Record directly:

\n\n
grid.on('validateedit', function(editor, e) {\n  var myTargetRow = 6;\n\n  if (e.rowIdx == myTargetRow) {\n    e.cancel = true;\n    e.record.data[e.field] = e.value;\n  }\n});\n
\n"}}},"HeaderReorderer":{"!type":"fn(config?: Ext_grid_plugin_HeaderReorderer_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to true

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to false

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"init":{"!type":"fn(headerCt: ?) -> !this","!doc":"

The init method is invoked after initComponent method has been run for the client Component.

\n\n

The supplied implementation is empty. Subclasses should perform plugin initialization, and set up bidirectional\nlinks between the plugin and its client Component in their own implementation of this method.

\n"},"onHeaderCtRender":{"!type":"fn() -> !this"}}},"HeaderResizer":{"!doc":"

Plugin to add header resizing functionality to a HeaderContainer.\nAlways resizing header to the left of the splitter you are resizing.

\n","!type":"fn(config?: Ext_grid_plugin_HeaderResizer_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","dynamic":{"!type":"bool","!doc":"

True to resize on the fly rather than using a proxy marker.

\n"},"colHeaderCls":{"!type":"string"},"disabled":{"!type":"bool"},"eResizeCursor":{"!type":"string"},"maxColWidth":{"!type":"number"},"minColWidth":{"!type":"number"},"wResizeCursor":{"!type":"string"},"adjustColumnWidth":{"!type":"fn(offsetX: ?) -> !this"},"adjustConstrainRegion":{"!type":"fn(region: ?, t: ?, r: ?, b: ?, l: ?) -> !this"},"afterHeaderRender":{"!type":"fn() -> !this"},"calculateDragX":{"!type":"fn(markerOwner: ?) -> !this"},"destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to true

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"doResize":{"!type":"fn() -> !this"},"enable":{"!type":"fn() -> !this","!doc":"

The base implementation just sets the plugin's disabled flag to false

\n\n

Plugin subclasses which need more complex processing may implement an overriding implementation.

\n"},"getConstrainRegion":{"!type":"fn() -> !this","!doc":"

get the region to constrain to, takes into account max and min col widths

\n"},"getDynamic":{"!type":"fn() -> bool","!doc":"

Returns the value of dynamic.

\n"},"getLeftMarkerX":{"!type":"fn(markerOwner: ?) -> !this"},"getMovingMarker":{"!type":"fn(markerOwner: ?) -> !this"},"headerInSameGrid":{"!type":"fn(header: ?) -> !this","!doc":"

nextNode can traverse out of this grid, possibly to others on the page, so limit it here

\n"},"init":{"!type":"fn(headerCt: ?) -> !this","!doc":"

not using w and e resize bc we are only ever resizing one\ncolumn\nwResizeCursor: Ext.isWebKit ? 'w-resize' : 'col-resize',\neResizeCursor: Ext.isWebKit ? 'e-resize' : 'col-resize',

\n"},"onBeforeStart":{"!type":"fn(e: ?) -> !this","!doc":"

only start when there is an activeHd

\n"},"onDrag":{"!type":"fn(e: ?) -> !this","!doc":"

synchronize the rhsMarker with the mouse movement

\n"},"onEnd":{"!type":"fn(e: ?) -> !this"},"onHeaderCtMouseMove":{"!type":"fn(e: ?, t: ?) -> !this","!doc":"

As we mouse over individual headers, change the cursor to indicate\nthat resizing is available, and cache the resize target header for use\nif/when they mousedown.

\n"},"onStart":{"!type":"fn(e: ?) -> !this","!doc":"

initialize the left and right hand side markers around\nthe header that we are resizing

\n"},"setDynamic":{"!type":"fn(dynamic: bool)","!doc":"

Sets the value of dynamic.

\n"},"setMarkerX":{"!type":"fn(marker: ?, x: ?) -> !this"}}},"RowEditing":{"!doc":"

The Ext.grid.plugin.RowEditing plugin injects editing at a row level for a Grid. When editing begins,\na small floating dialog will be shown for the appropriate row. Each editable column will show a field\nfor editing. There is a button to save or cancel all changes for the edit.

\n\n

The field that will be used for the editor is defined at the\neditor. The editor can be a field instance or a field configuration.\nIf an editor is not specified for a particular column then that column won't be editable and the value of\nthe column will be displayed. To provide a custom renderer for non-editable values, use the\neditRenderer configuration on the column.

\n\n

The editor may be shared for each column in the grid, or a different one may be specified for each column.\nAn appropriate field type should be chosen to match the data structure that it will be editing. For example,\nto edit a date, it would be useful to specify Ext.form.field.Date as the editor.

\n\n
Ext.create('Ext.data.Store', {\n    storeId:'simpsonsStore',\n    fields:['name', 'email', 'phone'],\n    data: [\n        {\"name\":\"Lisa\", \"email\":\"lisa@simpsons.com\", \"phone\":\"555-111-1224\"},\n        {\"name\":\"Bart\", \"email\":\"bart@simpsons.com\", \"phone\":\"555-222-1234\"},\n        {\"name\":\"Homer\", \"email\":\"home@simpsons.com\", \"phone\":\"555-222-1244\"},\n        {\"name\":\"Marge\", \"email\":\"marge@simpsons.com\", \"phone\":\"555-222-1254\"}\n    ]\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Simpsons',\n    store: Ext.data.StoreManager.lookup('simpsonsStore'),\n    columns: [\n        {header: 'Name',  dataIndex: 'name', editor: 'textfield'},\n        {header: 'Email', dataIndex: 'email', flex:1,\n            editor: {\n                xtype: 'textfield',\n                allowBlank: false\n            }\n        },\n        {header: 'Phone', dataIndex: 'phone'}\n    ],\n    selType: 'rowmodel',\n    plugins: [\n        Ext.create('Ext.grid.plugin.RowEditing', {\n            clicksToEdit: 1\n        })\n    ],\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.grid.plugin.Editing.prototype","autoCancel":{"!type":"bool","!doc":"

true to automatically cancel any pending changes when the row editor begins editing a new row.\nfalse to force the user to explicitly cancel the pending changes.

\n"},"clicksToMoveEditor":{"!type":"number","!doc":"

The number of clicks to move the row editor to a new row while it is visible and actively editing another row.\nThis will default to the same value as clicksToEdit.

\n"},"errorSummary":{"!type":"bool","!doc":"

True to show a tooltip that summarizes all validation errors present\nin the row editor. Set to false to prevent the tooltip from showing.

\n"},"editStyle":{"!type":"string","!doc":"

cell, row, form

\n"},"lockableScope":{"!type":"string"},"cancelEdit":{"!type":"fn() -> !this","!doc":"

Cancels any active edit that is in progress.

\n"},"completeEdit":{"!type":"fn() -> !this","!doc":"

Completes the edit if there is an active edit in progress.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"getEditor":{"!type":"fn() -> !this"},"initEditTriggers":{"!type":"fn() -> !this"},"initEditor":{"!type":"fn() -> !this"},"initEditorConfig":{"!type":"fn() -> !this"},"moveEditorByClick":{"!type":"fn() -> !this"},"onColumnAdd":{"!type":"fn(ct: ?, column: ?) -> !this"},"onColumnHide":{"!type":"fn(ct: ?, column: ?) -> !this"},"onColumnMove":{"!type":"fn(ct: ?, column: ?, fromIdx: ?, toIdx: ?) -> !this","!doc":"

Inject field accessors on move because if the move FROM the main headerCt and INTO a grouped header,\nthe accessors will have been deleted but not added. They are added conditionally.

\n"},"onColumnRemove":{"!type":"fn(ct: ?, column: ?) -> !this"},"onColumnResize":{"!type":"fn(ct: ?, column: ?, width: ?) -> !this"},"onColumnShow":{"!type":"fn(ct: ?, column: ?) -> !this"},"setColumnField":{"!type":"fn(column: ?, field: ?) -> !this","!doc":"

remaps to the public API of Ext.grid.column.Column.setEditor

\n"},"startEdit":{"!type":"fn(record: +Ext.data.Model, columnHeader: +Ext.data.Model) -> bool","!doc":"

Starts editing the specified record, using the specified Column definition to define which field is being edited.

\n"},"startEditByClick":{"!type":"fn() -> !this"},"validateEdit":{"!type":"fn() -> !this"}}},"RowExpander":{"!doc":"

Plugin (ptype = 'rowexpander') that adds the ability to have a Column in a grid which enables\na second row body which expands/contracts. The expand/contract behavior is configurable to react\non clicking of the column, double click of the row, and/or hitting enter while a row is selected.

\n","!type":"fn(config?: Ext_grid_plugin_RowExpander_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","expandOnDblClick":{"!type":"bool","!doc":"

true to toggle a row between expanded/collapsed when double clicked\n(defaults to true).

\n"},"expandOnEnter":{"!type":"bool","!doc":"

true to toggle selected row(s) between expanded/collapsed when the enter\nkey is pressed (defaults to true).

\n"},"selectRowOnExpand":{"!type":"bool","!doc":"

true to select a row when clicking on the expander icon\n(defaults to false).

\n"},"addCollapsedCls":{"!type":"?"},"lockableScope":{"!type":"string"},"rowBodyHiddenCls":{"!type":"string"},"rowBodyTpl":{"!type":"?"},"rowBodyTrSelector":{"!type":"string"},"rowCollapsedCls":{"!type":"string"},"addExpander":{"!type":"fn() -> !this","!doc":"

Inject the expander column into the correct grid.

\n\n

If we are expanding the normal side of a lockable grid, poke the column into the locked side

\n"},"beforeReconfigure":{"!type":"fn(grid: ?, store: ?, columns: ?, oldStore: ?, oldColumns: ?) -> !this"},"bindView":{"!type":"fn(view: ?) -> !this"},"doRefreshRowHeights":{"!type":"fn() -> !this"},"getHeaderConfig":{"!type":"fn() -> !this"},"getRowBodyFeatureData":{"!type":"fn(record: ?, idx: ?, rowValues: ?) -> !this"},"init":{"!type":"fn(grid: ?) -> !this","!doc":"

The init method is invoked after initComponent method has been run for the client Component.

\n\n

The supplied implementation is empty. Subclasses should perform plugin initialization, and set up bidirectional\nlinks between the plugin and its client Component in their own implementation of this method.

\n"},"onDblClick":{"!type":"fn(view: ?, record: ?, row: ?, rowIdx: ?, e: ?) -> !this"},"onKeyDown":{"!type":"fn(view: ?, record: ?, row: ?, rowIdx: ?, e: ?) -> !this"},"refreshRowHeights":{"!type":"fn() -> !this","!doc":"

refreshRowHeights often gets called in the middle of some complex processing.\nFor example, it's called on the store's datachanged event, but it must execute\nafter* other objects interested in datachanged have done their job.\n Or it's called on column lock/unlock, but that could be just the start of a cross-container\n drag/drop of column headers which then moves the column into its final place.\n So this throws execution forwards until the idle event.

\n"},"setup":{"!type":"fn(rows: ?, rowValues: ?) -> !this"},"toggleRow":{"!type":"fn(rowIdx: ?, record: ?) -> !this"},"collapsebody":{"!type":"fn(rowNode: +HTMLElement, record: +Ext.data.Model, expandRow: +HTMLElement, eOpts: ?)","!doc":"

Fired through the grid's View.

\n"},"expandbody":{"!type":"fn(rowNode: +HTMLElement, record: +Ext.data.Model, expandRow: +HTMLElement, eOpts: ?)","!doc":"

Fired through the grid's View

\n"}}}},"property":{"Grid":{"!doc":"

A specialized grid implementation intended to mimic the traditional property grid as typically seen in\ndevelopment IDEs. Each row in the grid represents a property of some object, and the data is stored\nas a set of name/value pairs in Properties. By default, the editors\nshown are inferred from the data in the cell. More control over this can be specified by using the\nsourceConfig option. Example usage:

\n\n
Ext.create('Ext.grid.property.Grid', {\n    title: 'Properties Grid',\n    width: 300,\n    renderTo: Ext.getBody(),\n    source: {\n        \"(name)\": \"My Object\",\n        \"Created\": Ext.Date.parse('10/15/2006', 'm/d/Y'),\n        \"Available\": false,\n        \"Version\": 0.01,\n        \"Description\": \"A test object\"\n    }\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_grid_property_Grid_cfg)","prototype":{"!proto":"Ext.grid.Panel.prototype","columnLines":{"!type":"bool","!doc":"

Adds column line styling

\n"},"columns":{"!type":"?"},"customEditors":{"!type":"?","!doc":"

An object containing name/value pairs of custom editor type definitions that allow\nthe grid to support additional types of editable fields. By default, the grid supports strongly-typed editing\nof strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and\nassociated with a custom input control by specifying a custom editor. The name of the editor\ntype should correspond with the name of the property that will use the editor. Example usage:

\n\n
var grid = new Ext.grid.property.Grid({\n\n    // Custom editors for certain property names\n    customEditors: {\n        evtStart: Ext.create('Ext.form.TimeField', {selectOnFocus: true})\n    },\n\n    // Displayed name for property names in the source\n    propertyNames: {\n        evtStart: 'Start Time'\n    },\n\n    // Data object containing properties to edit\n    source: {\n        evtStart: '10:00 AM'\n    }\n});\n
\n"},"customRenderers":{"!type":"?","!doc":"

An object containing name/value pairs of custom renderer type definitions that allow\nthe grid to support custom rendering of fields. By default, the grid supports strongly-typed rendering\nof strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and\nassociated with the type of the value. The name of the renderer type should correspond with the name of the property\nthat it will render. Example usage:

\n\n
var grid = Ext.create('Ext.grid.property.Grid', {\n    customRenderers: {\n        Available: function(v){\n            if (v) {\n                return '<span style=\"color: green;\">Yes</span>';\n            } else {\n                return '<span style=\"color: red;\">No</span>';\n            }\n        }\n    },\n    source: {\n        Available: true\n    }\n});\n
\n"},"enableColumnMove":{"!type":"bool","!doc":"

private config overrides

\n"},"inferTypes":{"!type":"bool","!doc":"

True to automatically infer the type based on the initial value passed\nfor each field. This ensures the editor remains the correct type even if the value is blanked\nand becomes empty.

\n"},"nameColumnWidth":{"!type":"number|string","!doc":"

Specify the width for the name column. The value column will take any remaining space.

\n"},"nameField":{"!type":"string","!doc":"

The name of the field from the property store to use as the property field name.\nThis may be useful if you do not configure the property Grid from an object, but use your own store configuration.

\n"},"propertyNames":{"!type":"?","!doc":"

An object containing custom property name/display name pairs.\nIf specified, the display name will be shown in the name column instead of the property name.

\n"},"source":{"!type":"?","!doc":"

A data object to use as the data source of the grid (see setSource for details).

\n"},"sourceConfig":{"!type":"?","!doc":"

This option allows various configurations to be set for each field in the property grid.\nNone of these configurations are required

\n\n

displayName

\n\n

A custom name to appear as label for this field. If specified, the display name will be shown\nin the name column instead of the property name. Example usage:

\n\n
new Ext.grid.property.Grid({\n    source: {\n        clientIsAvailable: true\n    },\n    sourceConfig: {\n        clientIsAvailable: {\n            // Custom name different to the field\n            displayName: 'Available'\n        }\n    }\n});\n
\n\n

renderer

\n\n

A function used to transform the underlying value before it is displayed in the grid.\nBy default, the grid supports strongly-typed rendering of strings, dates, numbers and booleans using built-in form editors,\nbut any custom type can be supported and associated with the type of the value. Example usage:

\n\n
new Ext.grid.property.Grid({\n    source: {\n        clientIsAvailable: true\n    },\n    sourceConfig: {\n        clientIsAvailable: {\n            // Custom renderer to change the color based on the value\n            renderer: function(v){\n                var color = v ? 'green' : 'red';\n                return '<span style=\"color: ' + color + ';\">' + v + '</span>';\n            }\n        }\n    }\n});\n
\n\n

type

\n\n

Used to explicitly specify the editor type for a particular value. By default, the type is\nautomatically inferred from the value. See inferTypes. Accepted values are:

\n\n\n\n\n

For more advanced control an editor configuration can be passed (see the next section).\nExample usage:

\n\n
new Ext.grid.property.Grid({\n    source: {\n        attending: null\n    },\n    sourceConfig: {\n        attending: {\n            // Force the type to be a numberfield, a null value would otherwise default to a textfield\n            type: 'number'\n        }\n    }\n});\n
\n\n

editor

\n\n

Allows the grid to support additional types of editable fields. By default, the grid supports strongly-typed editing\nof strings, dates, numbers and booleans using built-in form editors, but any custom type can be supported and\nassociated with a custom input control by specifying a custom editor. Example usage

\n\n
new Ext.grid.property.Grid({\n    // Data object containing properties to edit\n    source: {\n        evtStart: '10:00 AM'\n    },\n\n    sourceConfig: {\n        evtStart: {\n            editor: Ext.create('Ext.form.field.Time', {selectOnFocus: true}),\n            displayName: 'Start Time'\n        }\n    }\n});\n
\n"},"store":{"!type":"?"},"valueField":{"!type":"string","!doc":"

The name of the field from the property store to use as the value field name.\nThis may be useful if you do not configure the property Grid from an object, but use your own store configuration.

\n"},"clicksToEdit":{"!type":"number"},"enableHdMenu":{"!type":"bool"},"gridCls":{"!type":"string"},"stripeRows":{"!type":"bool"},"trackMouseOver":{"!type":"bool"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"configure":{"!type":"fn(config: ?) -> !this"},"configureLegacy":{"!type":"fn(config: ?) -> !this","!doc":"

to be deprecated in 4.2

\n"},"copyLegacyObject":{"!type":"fn(config: ?, o: ?, keyName: ?) -> !this"},"destroyEditors":{"!type":"fn(editors: ?) -> !this"},"getCellEditor":{"!type":"fn(record: ?, column: ?) -> !this","!doc":"

Returns the correct editor type for the property type, or a custom one keyed by the property name

\n"},"getConfig":{"!type":"fn(name: ?) -> !this"},"getSource":{"!type":"fn() -> ?","!doc":"

Gets the source data object containing the property data. See setSource for details regarding the\nformat of the data object.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"onUpdate":{"!type":"fn(store: ?, record: ?, operation: ?) -> !this"},"removeProperty":{"!type":"fn(prop: string) -> !this","!doc":"

Removes a property from the grid.

\n"},"setConfig":{"!type":"fn(fieldName: ?, key: ?, value: ?) -> !this"},"setProperty":{"!type":"fn(prop: string, value: ?, create?: bool) -> !this","!doc":"

Sets the value of a property.

\n"},"setSource":{"!type":"fn(source: ?, sourceConfig?: ?) -> !this","!doc":"

Sets the source data object containing the property data. The data object can contain one or more name/value\npairs representing all of the properties of an object to display in the grid, and this data will automatically\nbe loaded into the grid's store. The values should be supplied in the proper data type if needed,\notherwise string type will be assumed. If the grid already contains data, this method will replace any\nexisting data. See also the source config value. Example usage:

\n\n
grid.setSource({\n    \"(name)\": \"My Object\",\n    \"Created\": Ext.Date.parse('10/15/2006', 'm/d/Y'),  // date type\n    \"Available\": false,  // boolean type\n    \"Version\": .01,      // decimal type\n    \"Description\": \"A test object\"\n});\n
\n"},"walkCells":{"!type":"fn(pos: ?, direction: ?, e: ?, preventWrap: ?, verifierFn: ?, scope: ?) -> !this","!doc":"

Custom implementation of walkCells which only goes up and down.

\n"},"beforepropertychange":{"!type":"fn(source: ?, recordId: string, value: ?, oldValue: ?, eOpts: ?)","!doc":"

Fires before a property value changes. Handlers can return false to cancel the property change\n(this will internally call Ext.data.Model.reject on the property's record).

\n"},"propertychange":{"!type":"fn(source: ?, recordId: string, value: ?, oldValue: ?, eOpts: ?)","!doc":"

Fires after a property value has changed.

\n"}}},"HeaderContainer":{"!doc":"

A custom HeaderContainer for the Ext.grid.property.Grid.\nGenerally it should not need to be used directly.

\n","!type":"fn(grid: +Ext.grid.property.Grid, source: ?)","prototype":{"!proto":"Ext.grid.header.Container.prototype","dateFormat":{"!type":"string","!doc":"

\n

\n"},"falseText":{"!type":"string","!doc":"

\n

\n"},"nameColumnCls":{"!type":"string"},"nameColumnInnerCls":{"!type":"string"},"nameText":{"!type":"string","!doc":"

strings used for locale support\n

\n"},"nameWidth":{"!type":"number"},"renderDate":{"!type":"?"},"trueText":{"!type":"string","!doc":"

\n

\n"},"valueText":{"!type":"string","!doc":"

\n

\n"},"getCellEditor":{"!type":"fn(record: ?) -> !this"},"getPropertyName":{"!type":"fn(name: ?) -> !this","!doc":"

Renders custom property names instead of raw names if defined in the Grid

\n"},"renderBool":{"!type":"fn(bVal: ?) -> !this"},"renderCell":{"!type":"fn(val: ?, meta: ?, rec: ?) -> !this","!doc":"

Render a property value cell

\n"},"renderProp":{"!type":"fn(v: ?) -> !this","!doc":"

Render a property name cell

\n"}}},"Property":{"!doc":"

A specific Ext.data.Model type that represents a name/value pair and is made to work with the\nExt.grid.property.Grid. Typically, Properties do not need to be created directly as they can be\ncreated implicitly by simply using the appropriate data configs either via the\nExt.grid.property.Grid.source config property or by calling Ext.grid.property.Grid.setSource.\nHowever, if the need arises, these records can also be created explicitly as shown below. Example usage:

\n\n
var rec = new Ext.grid.property.Property({\n    name: 'birthday',\n    value: Ext.Date.parse('17/06/1962', 'd/m/Y')\n});\n// Add record to an already populated grid\ngrid.store.addSorted(rec);\n
\n","!type":"fn(config: Ext_grid_property_Property_cfg)","prototype":{"!proto":"Ext.data.Model.prototype","idProperty":{"!type":"string|?|+Ext.data.Field","!doc":"

The name of the field treated as this Model's unique id. Defaults to 'id'.

\n\n

This may also be specified as a Field config object. This means that the identifying field can be calculated\nusing a convert function which might aggregate several values from the\nraw data object to use as an identifier.

\n\n

The resulting Field is added to the Model's field collection unless there is already\na configured field with a mapping that reads the same property.

\n\n

If defining an abstract base Model class, the idProperty may be configured as null which will mean that\nno identifying field will be generated.

\n"},"fields":{"!type":"+Ext.util.MixedCollection","!doc":"

A Collection of the fields defined for this Model (including fields defined in superclasses)

\n\n

This is a collection of Ext.data.Field instances, each of which encapsulates information that the field was configured with.\nBy default, you can specify a field as simply a String, representing the name of the field, but a Field encapsulates\ndata type, custom conversion of raw data, and a mapping\nproperty to specify by name of index, how to extract a field's value from a raw data object.

\n"}}},"Store":{"!doc":"

A custom Ext.data.Store for the Ext.grid.property.Grid. This class handles the mapping\nbetween the custom data source objects supported by the grid and the Ext.grid.property.Property format\nused by the Ext.data.Store base class.

\n","!type":"fn(grid: +Ext.grid.Panel, source: ?)","prototype":{"!proto":"Ext.data.Store.prototype","sortOnLoad":{"!type":"bool","!doc":"

If true, any sorters attached to this Store will be run after loading data, before the datachanged event is fired.\nDefaults to true, igored if remoteSort is true

\n"},"getProperty":{"!type":"fn(row: ?) -> !this"},"getProxy":{"!type":"fn() -> +Ext.data.proxy.Proxy","!doc":"

Return a singleton, customized Proxy object which configures itself with a custom Reader

\n"},"getReader":{"!type":"fn() -> !this","!doc":"

Return a singleton, customized Reader object which reads Ext.grid.property.Property records from an object.

\n"},"getRec":{"!type":"fn(prop: ?) -> !this"},"getSource":{"!type":"fn() -> !this","!doc":"

Should only be called by the grid. Use grid.getSource instead.

\n"},"remove":{"!type":"fn(prop: ?) -> !this","!doc":"

Removes the specified record(s) from the Store, firing the remove event for each instance that is removed.

\n\n

A bulkremove event is called at the end passing all removed records and their indices.\nplus a single 'datachanged' event after removal.

\n"},"setSource":{"!type":"fn(dataObject: ?) -> !this","!doc":"

Should only be called by the grid. Use grid.setSource instead.

\n"},"setValue":{"!type":"fn(prop: ?, value: ?, create: ?) -> !this"}}}}},"is":{"!doc":"

Determines information about the current platform the application is running on.

\n","Android":{"!type":"bool","!doc":"

True when the browser is running on an Android device

\n"},"Blackberry":{"!type":"bool","!doc":"

True when the browser is running on a Blackberry

\n"},"Desktop":{"!type":"bool","!doc":"

True if the browser is running on a desktop machine

\n"},"Linux":{"!type":"bool","!doc":"

True when the browser is running on Linux

\n"},"Mac":{"!type":"bool","!doc":"

True when the browser is running on a Mac

\n"},"Phone":{"!type":"bool","!doc":"

True if the browser is running on a phone.

\n"},"Standalone":{"!type":"bool","!doc":"

Detects when application has been saved to homescreen.

\n"},"Tablet":{"!type":"?","!doc":"

True if the browser is running on a tablet (iPad)

\n"},"Windows":{"!type":"bool","!doc":"

True when the browser is running on Windows

\n"},"iOS":{"!type":"bool","!doc":"

True if the browser is running on iOS

\n"},"iPad":{"!type":"bool","!doc":"

True when the browser is running on a iPad

\n"},"iPhone":{"!type":"bool","!doc":"

True when the browser is running on a iPhone

\n"},"iPod":{"!type":"bool","!doc":"

True when the browser is running on a iPod

\n"}},"!doc":"

The Ext namespace (global object) encapsulates all classes, singletons, and\nutility methods provided by Sencha's libraries.

\n\n

Most user interface Components are at a lower level of nesting in the namespace,\nbut many common utility functions are provided as direct properties of the Ext namespace.

\n\n

Also many frequently used methods from other classes are provided as shortcuts\nwithin the Ext namespace. For example Ext.getCmp aliases\nExt.ComponentManager.get.

\n\n

Many applications are initiated with Ext.onReady which is\ncalled once the DOM is ready. This ensures all scripts have been loaded,\npreventing dependency issues. For example:

\n\n
Ext.onReady(function(){\n    new Ext.Component({\n        renderTo: document.body,\n        html: 'DOM ready!'\n    });\n});\n
\n\n

For more information about how to use the Ext classes, see:

\n\n\n\n","BLANK_IMAGE_URL":{"!type":"string","!doc":"

URL to a 1x1 transparent gif image used by Ext to create inline icons with\nCSS background images. In older versions of IE, this defaults to\n\"http://sencha.com/s.gif\" and you should change this to a URL on your server.\nFor other browsers it uses an inline data URL.

\n"},"Logger":{"!type":"?"},"SSL_SECURE_URL":{"!type":"string","!doc":"

URL to a blank file used by Ext when in secure mode for iframe src and onReady src\nto prevent the IE insecure content warning ('about:blank', except for IE\nin secure mode, which is 'javascript:\"\"').

\n"},"USE_NATIVE_JSON":{"!type":"bool","!doc":"

Indicates whether to use native browser parsing for JSON methods.\nThis option is ignored if the browser does not support native JSON methods.

\n\n

Note: Native JSON methods will not work with objects that have functions.\nAlso, property names must be quoted, otherwise the data will not parse.

\n"},"chromeVersion":{"!type":"number","!doc":"

The current version of Chrome (0 if the browser is not Chrome).

\n"},"emptyFn":{"!type":"fn()","!doc":"

A reusable empty function

\n"},"emptyString":{"!type":"?","!doc":"

A zero length string which will pass a truth test. Useful for passing to methods\nwhich use a truth test to reject falsy values where a string value must be cleared.

\n"},"enableFx":{"!type":"bool","!doc":"

True if the Ext.fx.Anim Class is available.

\n"},"enableGarbageCollector":{"!type":"bool","!doc":"

True to automatically uncache orphaned Ext.Elements periodically

\n"},"enableListenerCollection":{"!type":"bool","!doc":"

True to automatically purge event listeners during garbageCollection.

\n"},"enableNestedListenerRemoval":{"!type":"bool","!doc":"

Experimental. True to cascade listener removal to child elements when an element\nis removed. Currently not optimized for performance.

\n"},"enumerables":{"!type":"[string]","!doc":"

An array containing extra enumerables for old browsers

\n"},"firefoxVersion":{"!type":"number","!doc":"

The current version of Firefox (0 if the browser is not Firefox).

\n"},"functionFactoryCache":{"!type":"?"},"globalEvents":{"!type":"+Ext.util.Observable","!doc":"

An instance of Ext.util.Observable through which Ext fires global events.

\n\n

This Observable instance fires the following events:

\n\n\n\n"},"ieVersion":{"!type":"number","!doc":"

The current version of IE (0 if the browser is not IE). This does not account\nfor the documentMode of the current page, which is factored into isIE7,\nisIE8 and isIE9. Thus this is not always true:

\n\n
Ext.isIE8 == (Ext.ieVersion == 8)\n
\n"},"isChrome":{"!type":"bool","!doc":"

True if the detected browser is Chrome.

\n"},"isFF10":{"!type":"bool","!doc":"

True if the detected browser uses FireFox 10

\n"},"isFF3_0":{"!type":"bool","!doc":"

True if the detected browser uses FireFox 3.0

\n"},"isFF3_5":{"!type":"bool","!doc":"

True if the detected browser uses FireFox 3.5

\n"},"isFF3_6":{"!type":"bool","!doc":"

True if the detected browser uses FireFox 3.6

\n"},"isFF4":{"!type":"bool","!doc":"

True if the detected browser uses FireFox 4

\n"},"isFF5":{"!type":"bool","!doc":"

True if the detected browser uses FireFox 5

\n"},"isGecko":{"!type":"bool","!doc":"

True if the detected browser uses the Gecko layout engine (e.g. Mozilla, Firefox).

\n"},"isGecko10":{"!type":"bool","!doc":"

True if the detected browser uses a Gecko 5.0+ layout engine (e.g. Firefox 5.x).

\n"},"isGecko3":{"!type":"bool","!doc":"

True if the detected browser uses a Gecko 1.9+ layout engine (e.g. Firefox 3.x).

\n"},"isGecko4":{"!type":"bool","!doc":"

True if the detected browser uses a Gecko 2.0+ layout engine (e.g. Firefox 4.x).

\n"},"isGecko5":{"!type":"bool","!doc":"

True if the detected browser uses a Gecko 5.0+ layout engine (e.g. Firefox 5.x).

\n"},"isIE":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer.

\n"},"isIE10":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 10.x.

\n"},"isIE10m":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 10.x or lower.

\n"},"isIE10p":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 10.x or higher.

\n"},"isIE6":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 6.x.

\n"},"isIE7":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 7.x.

\n"},"isIE7m":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 7.x or lower.

\n"},"isIE7p":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 7.x or higher.

\n"},"isIE8":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 8.x.

\n"},"isIE8m":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 8.x or lower.

\n"},"isIE8p":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 8.x or higher.

\n"},"isIE9":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 9.x.

\n"},"isIE9m":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 9.x or lower.

\n"},"isIE9p":{"!type":"bool","!doc":"

True if the detected browser is Internet Explorer 9.x or higher.

\n"},"isLinux":{"!type":"bool","!doc":"

True if the detected platform is Linux.

\n"},"isMac":{"!type":"bool","!doc":"

True if the detected platform is Mac OS.

\n"},"isOpera":{"!type":"bool","!doc":"

True if the detected browser is Opera.

\n"},"isOpera10_5":{"!type":"bool","!doc":"

True if the detected browser is Opera 10.5x.

\n"},"isReady":{"!type":"bool","!doc":"

True when the document is fully initialized and ready for action

\n"},"isSafari":{"!type":"bool","!doc":"

True if the detected browser is Safari.

\n"},"isSafari2":{"!type":"bool","!doc":"

True if the detected browser is Safari 2.x.

\n"},"isSafari3":{"!type":"bool","!doc":"

True if the detected browser is Safari 3.x.

\n"},"isSafari4":{"!type":"bool","!doc":"

True if the detected browser is Safari 4.x.

\n"},"isSafari5":{"!type":"bool","!doc":"

True if the detected browser is Safari 5.x.

\n"},"isSafari5_0":{"!type":"bool","!doc":"

True if the detected browser is Safari 5.0.x.

\n"},"isSecure":{"!type":"bool","!doc":"

True if the page is running over SSL

\n"},"isWebKit":{"!type":"bool","!doc":"

True if the detected browser uses WebKit.

\n"},"isWindows":{"!type":"bool","!doc":"

True if the detected platform is Windows.

\n"},"lastRegisteredVersion":{"!type":"?"},"mergeIf":{"!type":"?"},"name":{"!type":"string","!doc":"

The name of the property in the global namespace (The window in browser environments) which refers to the current instance of Ext.

\n\n\n

This is usually \"Ext\", but if a sandboxed build of ExtJS is being used, this will be an alternative name.

\n\n\n

If code is being generated for use by eval or to create a new Function, and the global instance\nof Ext must be referenced, this is the name that should be built into the code.

\n\n"},"operaVersion":{"!type":"number","!doc":"

The current version of Opera (0 if the browser is not Opera).

\n"},"rootHierarchyState":{"!type":"?","!doc":"

the top level hierarchy state to which\nall other hierarchy states are chained. If there is a viewport instance,\nthis object becomes the viewport's heirarchyState. See also\nExt.AbstractComponent.getHierarchyState

\n"},"safariVersion":{"!type":"number","!doc":"

The current version of Safari (0 if the browser is not Safari).

\n"},"useShims":{"!type":"bool","!doc":"

By default, Ext intelligently decides whether floating elements should be shimmed.\nIf you are using flash, you may want to set this to true.

\n"},"versions":{"!type":"?"},"webKitVersion":{"!type":"number","!doc":"

The current version of WebKit (0 if the browser does not use WebKit).

\n"},"addBehaviors":{"!type":"fn(obj: ?) -> !this","!doc":"

Applies event listeners to elements by selectors when the document is ready.\nThe event name is specified with an @ suffix.

\n\n
Ext.addBehaviors({\n    // add a listener for click on all anchors in element with id foo\n    '#foo a@click' : function(e, t){\n        // do something\n    },\n\n    // add the same listener to multiple selectors (separated by comma BEFORE the @)\n    '#foo a, #bar span.some-class@mouseover' : function(){\n        // do something\n    }\n});\n
\n"},"addNamespaces":{"!type":"fn(namespace: string|[string]) -> !this","!doc":"

Adds namespace(s) to known list.

\n"},"application":{"!type":"fn(config: ?|string) -> !this","!doc":"

Loads Ext.app.Application class and starts it up with given configuration after the\npage is ready.

\n\n

See Ext.app.Application for details.

\n"},"apply":{"!type":"fn(object: ?, config: ?, defaults?: ?) -> ?","!doc":"

Copies all the properties of config to the specified object.\nNote that if recursive merging and cloning without referencing the original objects / arrays is needed, use\nExt.Object.merge instead.

\n"},"applyIf":{"!type":"fn(object: ?, config: ?) -> ?","!doc":"

Copies all the properties of config to object if they don't already exist.

\n"},"batchLayouts":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Utility wrapper that suspends layouts of all components for the duration of a given function.

\n"},"bind":{"!type":"fn(fn: fn(), scope?: ?, args?: [?], appendArgs?: bool|number) -> fn()","!doc":"

Create a new function from the provided fn, change this to the provided scope, optionally\noverrides arguments for the call. (Defaults to the arguments passed by the caller)

\n\n

Ext.bind is alias for Ext.Function.bind

\n"},"callback":{"!type":"fn(callback: fn(), scope?: ?, args?: [?], delay?: number) -> ?","!doc":"

Execute a callback function in a particular scope. If callback argument is a\nfunction reference, that is called. If it is a string, the string is assumed to\nbe the name of a method on the given scope. If no function is passed the call\nis ignored.

\n\n

For example, these calls are equivalent:

\n\n
 var myFunc = this.myFunc;\n\n Ext.callback('myFunc', this, [arg1, arg2]);\n Ext.callback(myFunc, this, [arg1, arg2]);\n\n Ext.isFunction(myFunc) && this.myFunc(arg1, arg2);\n
\n"},"clean":{"!type":"fn(array: [?]) -> [?]","!doc":"

Old alias to Ext.Array.clean

\n"},"clearNamespaces":{"!type":"fn() -> !this","!doc":"

Clear all namespaces from known list.

\n"},"clone":{"!type":"fn(item: ?) -> ?","!doc":"

Clone simple variables including array, {}-like objects, DOM nodes and Date without keeping the old reference.\nA reference for the object itself is returned if it's not a direct decendant of Object. For model cloning,\nsee Model.copy.

\n"},"coerce":{"!type":"fn(from: +Mixed, to: +Mixed) -> ?","!doc":"

Coerces the first value if possible so that it is comparable to the second value.

\n\n

Coercion only works between the basic atomic data types String, Boolean, Number, Date, null and undefined.

\n\n

Numbers and numeric strings are coerced to Dates using the value as the millisecond era value.

\n\n

Strings are coerced to Dates by parsing using the defaultFormat.

\n\n

For example

\n\n
Ext.coerce('false', true);\n
\n\n

returns the boolean value false because the second parameter is of type Boolean.

\n"},"collectNamespaces":{"!type":"fn(paths: ?) -> !this"},"copyTo":{"!type":"fn(dest: ?, source: ?, names: string|[string], usePrototypeKeys?: bool) -> ?","!doc":"

Copies a set of named properties fom the source object to the destination object.

\n\n

Example:

\n\n
ImageComponent = Ext.extend(Ext.Component, {\n    initComponent: function() {\n        this.autoEl = { tag: 'img' };\n        MyComponent.superclass.initComponent.apply(this, arguments);\n        this.initialBox = Ext.copyTo({}, this.initialConfig, 'x,y,width,height');\n    }\n});\n
\n\n

Important note: To borrow class prototype methods, use Ext.Base.borrow instead.

\n"},"create":{"!type":"fn(name?: string, args?: ?) -> ?","!doc":"

Instantiate a class by either full name, alias or alternate name.

\n\n

If Ext.Loader is enabled and the class has\nnot been defined yet, it will attempt to load the class via synchronous loading.

\n\n

For example, all these three lines return the same result:

\n\n
 // alias\n var window = Ext.create('widget.window', {\n     width: 600,\n     height: 800,\n     ...\n });\n\n // alternate name\n var window = Ext.create('Ext.Window', {\n     width: 600,\n     height: 800,\n     ...\n });\n\n // full class name\n var window = Ext.create('Ext.window.Window', {\n     width: 600,\n     height: 800,\n     ...\n });\n\n // single object with xclass property:\n var window = Ext.create({\n     xclass: 'Ext.window.Window', // any valid value for 'name' (above)\n     width: 600,\n     height: 800,\n     ...\n });\n
\n"},"createByAlias":{"!type":"fn(alias: string, args: ?) -> ?","!doc":"

Instantiate a class by its alias.

\n\n

Ext.ClassManager.instantiateByAlias is usually invoked by the shorthand createByAlias.

\n\n

If Ext.Loader is enabled and the class has not been defined yet, it will\nattempt to load the class via synchronous loading.

\n\n
var window = Ext.createByAlias('widget.window', { width: 600, height: 800, ... });\n
\n"},"createWidget":{"!type":"fn() -> !this","!doc":"

Old name for widget.

\n"},"decode":{"!type":"fn(json: string, safe?: bool) -> ?","!doc":"

Shorthand for Ext.JSON.decode

\n"},"defer":{"!type":"fn(fn: fn(), millis: number, scope?: ?, args?: [?], appendArgs?: bool|number) -> number","!doc":"

Calls this function after the number of millseconds specified, optionally in a specific scope. Example usage:

\n\n
var sayHi = function(name){\n    alert('Hi, ' + name);\n}\n\n// executes immediately:\nsayHi('Fred');\n\n// executes after 2 seconds:\nExt.Function.defer(sayHi, 2000, this, ['Fred']);\n\n// this syntax is sometimes useful for deferring\n// execution of an anonymous function:\nExt.Function.defer(function(){\n    alert('Anonymous');\n}, 100);\n
\n\n

Ext.defer is alias for Ext.Function.defer

\n"},"define":{"!type":"fn(className: string, data: ?, createdFn: fn()) -> +Ext.Base","!doc":"

Defines a class or override. A basic class is defined like this:

\n\n
 Ext.define('My.awesome.Class', {\n     someProperty: 'something',\n\n     someMethod: function(s) {\n         alert(s + this.someProperty);\n     }\n\n     ...\n });\n\n var obj = new My.awesome.Class();\n\n obj.someMethod('Say '); // alerts 'Say something'\n
\n\n

To create an anonymous class, pass null for the className:

\n\n
 Ext.define(null, {\n     constructor: function () {\n         // ...\n     }\n });\n
\n\n

In some cases, it is helpful to create a nested scope to contain some private\nproperties. The best way to do this is to pass a function instead of an object\nas the second parameter. This function will be called to produce the class\nbody:

\n\n
 Ext.define('MyApp.foo.Bar', function () {\n     var id = 0;\n\n     return {\n         nextId: function () {\n             return ++id;\n         }\n     };\n });\n
\n\n

Note that when using override, the above syntax will not override successfully, because\nthe passed function would need to be executed first to determine whether or not the result\nis an override or defining a new object. As such, an alternative syntax that immediately\ninvokes the function can be used:

\n\n
 Ext.define('MyApp.override.BaseOverride', function () {\n     var counter = 0;\n\n     return {\n         override: 'Ext.Component',\n         logId: function () {\n             console.log(++counter, this.id);\n         }\n     };\n }());\n
\n\n

When using this form of Ext.define, the function is passed a reference to its\nclass. This can be used as an efficient way to access any static properties you\nmay have:

\n\n
 Ext.define('MyApp.foo.Bar', function (Bar) {\n     return {\n         statics: {\n             staticMethod: function () {\n                 // ...\n             }\n         },\n\n         method: function () {\n             return Bar.staticMethod();\n         }\n     };\n });\n
\n\n

To define an override, include the override property. The content of an\noverride is aggregated with the specified class in order to extend or modify\nthat class. This can be as simple as setting default property values or it can\nextend and/or replace methods. This can also extend the statics of the class.

\n\n

One use for an override is to break a large class into manageable pieces.

\n\n
 // File: /src/app/Panel.js\n\n Ext.define('My.app.Panel', {\n     extend: 'Ext.panel.Panel',\n     requires: [\n         'My.app.PanelPart2',\n         'My.app.PanelPart3'\n     ]\n\n     constructor: function (config) {\n         this.callParent(arguments); // calls Ext.panel.Panel's constructor\n         //...\n     },\n\n     statics: {\n         method: function () {\n             return 'abc';\n         }\n     }\n });\n\n // File: /src/app/PanelPart2.js\n Ext.define('My.app.PanelPart2', {\n     override: 'My.app.Panel',\n\n     constructor: function (config) {\n         this.callParent(arguments); // calls My.app.Panel's constructor\n         //...\n     }\n });\n
\n\n

Another use of overrides is to provide optional parts of classes that can be\nindependently required. In this case, the class may even be unaware of the\noverride altogether.

\n\n
 Ext.define('My.ux.CoolTip', {\n     override: 'Ext.tip.ToolTip',\n\n     constructor: function (config) {\n         this.callParent(arguments); // calls Ext.tip.ToolTip's constructor\n         //...\n     }\n });\n
\n\n

The above override can now be required as normal.

\n\n
 Ext.define('My.app.App', {\n     requires: [\n         'My.ux.CoolTip'\n     ]\n });\n
\n\n

Overrides can also contain statics:

\n\n
 Ext.define('My.app.BarMod', {\n     override: 'Ext.foo.Bar',\n\n     statics: {\n         method: function (x) {\n             return this.callParent([x * 2]); // call Ext.foo.Bar.method\n         }\n     }\n });\n
\n\n

IMPORTANT: An override is only included in a build if the class it overrides is\nrequired. Otherwise, the override, like the target class, is not included.

\n"},"deprecate":{"!type":"fn(packageName: string, since: string, closure: fn(), scope: ?) -> !this","!doc":"

Create a closure for deprecated code.

\n\n
// This means Ext.oldMethod is only supported in 4.0.0beta and older.\n// If Ext.getVersion('extjs') returns a version that is later than '4.0.0beta', for example '4.0.0RC',\n// the closure will not be invoked\nExt.deprecate('extjs', '4.0.0beta', function() {\n    Ext.oldMethod = Ext.newMethod;\n\n    ...\n});\n
\n"},"destroy":{"!type":"fn(args: +Ext.dom.Element|+Ext.util.Observable|[+Ext.dom.Element]|[+Ext.util.Observable]) -> !this","!doc":"

Attempts to destroy any objects passed to it by removing all event listeners, removing them from the\nDOM (if applicable) and calling their destroy functions (if available). This method is primarily\nintended for arguments of type Ext.Element and Ext.Component, but any subclass of\nExt.util.Observable can be passed in. Any number of elements and/or components can be\npassed into this function in a single call as separate arguments.

\n"},"destroyMembers":{"!type":"fn(o: ?, args: string) -> !this","!doc":"

Attempts to destroy and then remove a set of named properties of the passed object.

\n"},"each":{"!type":"fn(iterable: [?]|+NodeList|?, fn: fn(), scope?: ?, reverse?: bool) -> bool","!doc":"

Iterates an array or an iterable value and invoke the given callback function for each item.

\n\n
var countries = ['Vietnam', 'Singapore', 'United States', 'Russia'];\n\nExt.Array.each(countries, function(name, index, countriesItSelf) {\n    console.log(name);\n});\n\nvar sum = function() {\n    var sum = 0;\n\n    Ext.Array.each(arguments, function(value) {\n        sum += value;\n    });\n\n    return sum;\n};\n\nsum(1, 2, 3); // returns 6\n
\n\n

The iteration can be stopped by returning false in the function callback.

\n\n
Ext.Array.each(countries, function(name, index, countriesItSelf) {\n    if (name === 'Singapore') {\n        return false; // break here\n    }\n});\n
\n\n

Ext.each is alias for Ext.Array.each

\n"},"encode":{"!type":"fn(o: ?) -> string","!doc":"

Shorthand for Ext.JSON.encode

\n"},"escapeRe":{"!type":"fn(str: string) -> string","!doc":"

Escapes the passed string for use in a regular expression.

\n"},"exclude":{"!type":"fn(excludes: [?]) -> ?","!doc":"

Convenient shortcut to Ext.Loader.exclude

\n"},"extend":{"!type":"fn(superclass: fn(), overrides: ?) -> fn()","!doc":"

This method deprecated. Use Ext.define instead.

\n"},"flatten":{"!type":"fn(array: [?]) -> [?]","!doc":"

Old alias to Ext.Array.flatten

\n"},"fly":{"!type":"fn(dom: string|+HTMLElement, named?: string) -> +Ext.dom.Element.Fly","!doc":"

Gets the singleton flyweight element, with the passed node as the active element.

\n\n

Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.\nYou may not keep and use the reference to this singleton over multiple lines because methods that you call\nmay themselves make use of fly and may change the DOM element to which the instance refers.

\n\n

fly is alias for Ext.dom.AbstractElement.fly.

\n\n

Use this to make one-time references to DOM elements which are not going to be accessed again either by\napplication code, or by Ext's classes. If accessing an element which will be processed regularly, then Ext.get will be more appropriate to take advantage of the caching provided by the Ext.dom.Element\nclass.

\n"},"get":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> +Ext.dom.Element","!doc":"

Retrieves Ext.dom.Element objects. get is alias for Ext.dom.Element.get.

\n\n

This method does not retrieve Components. This method retrieves Ext.dom.Element\nobjects which encapsulate DOM elements. To retrieve a Component by its ID, use Ext.ComponentManager.get.

\n\n

When passing an id, it should not include the # character that is used for a css selector.

\n\n
// For an element with id 'foo'\nExt.get('foo'); // Correct\nExt.get('#foo'); // Incorrect\n
\n\n

Uses simple caching to consistently return the same object. Automatically fixes if an object was recreated with\nthe same id via AJAX or DOM.

\n"},"getBody":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the current document body as an Ext.Element.

\n"},"getClass":{"!type":"fn(object: ?) -> +Ext.Class","!doc":"

Get the class of the provided object; returns null if it's not an instance\nof any class created with Ext.define.

\n\n

Ext.ClassManager.getClass is usually invoked by the shorthand getClass.

\n\n
var component = new Ext.Component();\n\nExt.getClass(component); // returns Ext.Component\n
\n"},"getClassName":{"!type":"fn(object: +Ext.Class|?) -> string","!doc":"

Get the name of the class by its reference or its instance;

\n\n

Ext.ClassManager.getName is usually invoked by the shorthand getClassName.

\n\n
Ext.getName(Ext.Action); // returns \"Ext.Action\"\n
\n"},"getCmp":{"!type":"fn(id: string) -> ?","!doc":"

This is shorthand reference to Ext.ComponentManager.get.\nLooks up an existing Component by id

\n"},"getDetachedBody":{"!type":"fn() -> !this"},"getDoc":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the current HTML document object as an Ext.Element.

\n"},"getDom":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> ?","!doc":"

Returns the dom node for the passed String (id), dom node, or Ext.Element.\nOptional 'strict' flag is needed for IE since it can return 'name' and\n'id' elements by using getElementById.

\n\n

Here are some examples:

\n\n
// gets dom node based on id\nvar elDom = Ext.getDom('elId');\n// gets dom node based on the dom node\nvar elDom1 = Ext.getDom(elDom);\n\n// If we don&#39;t know if we are working with an\n// Ext.Element or a dom node use Ext.getDom\nfunction(el){\n    var dom = Ext.getDom(el);\n    // do something with the dom node\n}\n
\n\n

Note: the dom node to be found actually needs to exist (be rendered, etc)\nwhen this method is called to be successful.

\n"},"getElementById":{"!type":"fn(id: ?) -> !this"},"getHead":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the current document head as an Ext.Element.

\n"},"getNamespace":{"!type":"fn(className: string) -> string","!doc":"

Get namespace prefix for a class name.

\n"},"getOrientation":{"!type":"fn() -> string","!doc":"

Returns the current orientation of the mobile device

\n"},"getScrollBarWidth":{"!type":"fn(force?: bool) -> number","!doc":"

Utility method for getting the width of the browser's vertical scrollbar. This\ncan differ depending on operating system settings, such as the theme or font size.

\n\n

This method is deprected in favor of getScrollbarSize.

\n"},"getScrollbarSize":{"!type":"fn(force?: bool) -> ?","!doc":"

Returns the size of the browser scrollbars. This can differ depending on\noperating system settings, such as the theme or font size.

\n"},"getStore":{"!type":"fn(store: string|?) -> +Ext.data.Store","!doc":"

Shortcut to Ext.data.StoreManager.lookup.

\n"},"getUniqueGlobalNamespace":{"!type":"fn() -> !this","!doc":"

Generate a unique reference of Ext in the global scope, useful for sandboxing

\n"},"getVersion":{"!type":"fn(packageName?: string) -> +Ext.Version","!doc":"

Get the version number of the supplied package name; will return the last registered version\n(last Ext.setVersion call) if there's no package name given.

\n"},"htmlDecode":{"!type":"fn(value: string) -> string","!doc":"

Old alias to Ext.String.htmlDecode

\n"},"htmlEncode":{"!type":"fn(value: string) -> string","!doc":"

Old alias to Ext.String.htmlEncode

\n"},"id":{"!type":"fn(el?: +HTMLElement|+Ext.Element, prefix?: string) -> string","!doc":"

Generates unique ids. If the element already has an id, it is unchanged

\n"},"identityFn":{"!type":"fn(o: ?) -> !this","!doc":"

A reusable identity function. The function will always return the first argument, unchanged.

\n"},"invoke":{"!type":"fn(arr: [?]|+NodeList, methodName: string, args: ?) -> [?]","!doc":"

Invokes a method on each item in an Array.

\n\n

Example:

\n\n
Ext.invoke(Ext.query(\"p\"), \"getAttribute\", \"id\");\n// [el1.getAttribute(\"id\"), el2.getAttribute(\"id\"), ..., elN.getAttribute(\"id\")]\n
\n"},"isArray":{"!type":"fn(target: ?) -> bool","!doc":"

Returns true if the passed value is a JavaScript Array, false otherwise.

\n"},"isBoolean":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a boolean.

\n"},"isDate":{"!type":"fn(object: ?) -> bool","!doc":"

Returns true if the passed value is a JavaScript Date object, false otherwise.

\n"},"isDefined":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is defined.

\n"},"isElement":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is an HTMLElement

\n"},"isEmpty":{"!type":"fn(value: ?, allowEmptyString?: bool) -> bool","!doc":"

Returns true if the passed value is empty, false otherwise. The value is deemed to be empty if it is either:

\n\n\n\n"},"isFunction":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a JavaScript Function, false otherwise.

\n"},"isIterable":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is iterable, that is, if elements of it are addressable using array\nnotation with numeric indices, false otherwise.

\n\n

Arrays and function arguments objects are iterable. Also HTML collections such as NodeList and `HTMLCollection'\nare iterable.

\n"},"isNumber":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a number. Returns false for non-finite numbers.

\n"},"isNumeric":{"!type":"fn(value: ?) -> bool","!doc":"

Validates that a value is numeric.

\n"},"isObject":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a JavaScript Object, false otherwise.

\n"},"isPrimitive":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a JavaScript 'primitive', a string, number or boolean.

\n"},"isSimpleObject":{"!type":"fn(value: ?) -> !this"},"isString":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a string.

\n"},"isTextNode":{"!type":"fn(value: ?) -> bool","!doc":"

Returns true if the passed value is a TextNode

\n"},"iterate":{"!type":"fn(object: ?|[?], fn: fn(), scope?: ?) -> !this","!doc":"

Iterates either an array or an object. This method delegates to\nExt.Array.each if the given value is iterable, and Ext.Object.each otherwise.

\n"},"log":{"!type":"fn(options?: string|?, message?: string) -> !this","!doc":"

Logs a message. If a console is present it will be used. On Opera, the method\n\"opera.postError\" is called. In other cases, the message is logged to an array\n\"Ext.log.out\". An attached debugger can watch this array and view the log. The\nlog buffer is limited to a maximum of \"Ext.log.max\" entries (defaults to 250).\nThe Ext.log.out array can also be written to a popup window by entering the\nfollowing in the URL bar (a \"bookmarklet\"):

\n\n
javascript:void(Ext.log.show());\n
\n\n

If additional parameters are passed, they are joined and appended to the message.\nA technique for tracing entry and exit of a function is this:

\n\n
function foo () {\n    Ext.log({ indent: 1 }, '>> foo');\n\n    // log statements in here or methods called from here will be indented\n    // by one step\n\n    Ext.log({ outdent: 1 }, '<< foo');\n}\n
\n\n

This method does nothing in a release build.

\n"},"max":{"!type":"fn(array: [?]|+NodeList, comparisonFn?: fn()) -> ?","!doc":"

Old alias to Ext.Array.max

\n"},"mean":{"!type":"fn(array: [?]) -> number","!doc":"

Old alias to Ext.Array.mean

\n"},"merge":{"!type":"fn(destination: ?, object: ?) -> ?","!doc":"

A convenient alias method for Ext.Object.merge.

\n"},"min":{"!type":"fn(array: [?]|+NodeList, comparisonFn?: fn()) -> ?","!doc":"

Old alias to Ext.Array.min

\n"},"namespace":{"!type":"fn(namespaces: string) -> ?","!doc":"

Creates namespaces to be used for scoping variables and classes so that they are not global.\nSpecifying the last node of a namespace implicitly creates all other nodes. Usage:

\n\n
Ext.namespace('Company', 'Company.data');\n\n// equivalent and preferable to the above syntax\nExt.ns('Company.data');\n\nCompany.Widget = function() { ... };\n\nCompany.data.CustomStore = function(config) { ... };\n
\n"},"ns":{"!type":"fn(namespaces: string) -> ?","!doc":"

Convenient alias for Ext.namespace.

\n"},"num":{"!type":"fn(value: ?, defaultValue: number) -> number","!doc":"

Validate that a value is numeric and convert it to a number if necessary. Returns the specified default value if\nit is not.

\n\n
Ext.Number.from('1.23', 1); // returns 1.23\nExt.Number.from('abc', 1); // returns 1\n
\n"},"on":{"!type":"fn(eventName: string|?, fn?: fn(), scope?: ?, options?: ?) -> ?","!doc":"

Shorthand for the Ext.util.Observable.addListener method of the\nglobalEvents Observable instance.

\n"},"onDocumentReady":{"!type":"fn(fn: fn(), scope?: ?, options?: ?) -> !this","!doc":"

Adds a listener to be notified when the document is ready (before onload and before images are loaded).

\n\n

onDocumentReady is an alias for Ext.EventManager.onDocumentReady.

\n"},"onReady":{"!type":"fn(fn: fn(), scope: ?, options: ?) -> !this","!doc":"

Adds a function to be called when the DOM is ready, and all required classes have been loaded.

\n\n

If the DOM is ready and all classes are loaded, the passed function is executed immediately.

\n"},"override":{"!type":"fn(target: ?, overrides: ?) -> !this","!doc":"

Overrides members of the specified target with the given values.

\n\n

If the target is a class declared using Ext.define, the\noverride method of that class is called (see Ext.Base.override) given\nthe overrides.

\n\n

If the target is a function, it is assumed to be a constructor and the contents\nof overrides are applied to its prototype using Ext.apply.

\n\n

If the target is an instance of a class declared using Ext.define,\nthe overrides are applied to only that instance. In this case, methods are\nspecially processed to allow them to use Ext.Base.callParent.

\n\n
 var panel = new Ext.Panel({ ... });\n\n Ext.override(panel, {\n     initComponent: function () {\n         // extra processing...\n\n         this.callParent();\n     }\n });\n
\n\n

If the target is none of these, the overrides are applied to the target\nusing Ext.apply.

\n\n

Please refer to Ext.define and Ext.Base.override for\nfurther details.

\n"},"partition":{"!type":"fn(arr: [?]|+NodeList, truth?: fn()) -> [?]","!doc":"

Partitions the set into two sets: a true set and a false set.

\n\n

Example 1:

\n\n
Ext.partition([true, false, true, true, false]);\n// returns [[true, true, true], [false, false]]\n
\n\n

Example 2:

\n\n
Ext.partition(\n    Ext.query(\"p\"),\n    function(val){\n        return val.className == \"class1\"\n    }\n);\n// true are those paragraph elements with a className of \"class1\",\n// false set are those that do not have that className.\n
\n"},"pass":{"!type":"fn(fn: fn(), args: [?], scope?: ?) -> fn()","!doc":"

Create a new function from the provided fn, the arguments of which are pre-set to args.\nNew arguments passed to the newly created callback when it's invoked are appended after the pre-set ones.\nThis is especially useful when creating callbacks.

\n\n

For example:

\n\n
var originalFunction = function(){\n    alert(Ext.Array.from(arguments).join(' '));\n};\n\nvar callback = Ext.Function.pass(originalFunction, ['Hello', 'World']);\n\ncallback(); // alerts 'Hello World'\ncallback('by Me'); // alerts 'Hello World by Me'\n
\n\n

Ext.pass is alias for Ext.Function.pass

\n"},"pluck":{"!type":"fn(array: [?]|+NodeList, propertyName: string) -> [?]","!doc":"

Old alias to Ext.Array.pluck

\n"},"preg":{"!type":"fn(ptype: string, cls: fn()) -> !this","!doc":"

Shorthand for Ext.PluginManager.registerType

\n"},"query":{"!type":"fn(path: string, root?: +HTMLElement, type?: string, single?: bool) -> [+HTMLElement]","!doc":"

Shorthand of Ext.dom.Query.select

\n"},"regModel":{"!type":"fn(name: string, config: ?) -> +Ext.data.Model","!doc":"

Old way for creating Model classes. Instead use:

\n\n
Ext.define(\"MyModel\", {\n    extend: \"Ext.data.Model\",\n    fields: []\n});\n
\n"},"regStore":{"!type":"fn(id: string, config: ?) -> !this","!doc":"

Creates a new store for the given id and config, then registers it with the Store Manager.\nSample usage:

\n\n
Ext.regStore('AllUsers', {\n    model: 'User'\n});\n\n// the store can now easily be used throughout the application\nnew Ext.List({\n    store: 'AllUsers',\n    ... other config\n});\n
\n"},"removeNode":{"!type":"fn(node: +HTMLElement) -> !this","!doc":"

Removes a DOM node from the document.

\n\n

Removes this element from the document, removes all DOM event listeners, and\ndeletes the cache reference. All DOM event listeners are removed from this element.\nIf Ext.enableNestedListenerRemoval is\ntrue, then DOM event listeners are also removed from all child nodes.\nThe body node will be ignored if passed in.

\n"},"require":{"!type":"fn(expressions: string|[?], fn?: fn(), scope?: ?, excludes?: string|[?]) -> !this","!doc":"

Loads all classes by the given names and all their direct dependencies; optionally executes\nthe given callback function when finishes, within the optional scope.

\n\n

require is alias for Ext.Loader.require.

\n"},"resolveMethod":{"!type":"fn(fn: ?, scope: ?) -> !this"},"resumeLayouts":{"!type":"fn(flush: ?) -> !this"},"select":{"!type":"fn(selector: string, unique?: bool) -> +Ext.CompositeElement","!doc":"

Shorthand of Ext.Element.select.

\n"},"setGlyphFontFamily":{"!type":"fn(fontFamily: string) -> !this","!doc":"

Sets the default font-family to use for components that support a glyph config.

\n"},"setVersion":{"!type":"fn(packageName: string, version: string|+Ext.Version) -> +Ext","!doc":"

Set version number for the given package name.

\n"},"sum":{"!type":"fn(array: [?]) -> number","!doc":"

Old alias to Ext.Array.sum

\n"},"suspendLayouts":{"!type":"fn() -> !this"},"syncRequire":{"!type":"fn(expressions: string|[?], fn?: fn(), scope?: ?, excludes?: string|[?]) -> !this","!doc":"

Synchronously loads all classes by the given names and all their direct dependencies; optionally\nexecutes the given callback function when finishes, within the optional scope.

\n\n

syncRequire is alias for Ext.Loader.syncRequire.

\n"},"toArray":{"!type":"fn(iterable: ?, start?: number, end?: number) -> [?]","!doc":"

Converts any iterable (numeric indices and a length property) into a true array.

\n\n
function test() {\n    var args = Ext.Array.toArray(arguments),\n        fromSecondToLastArgs = Ext.Array.toArray(arguments, 1);\n\n    alert(args.join(' '));\n    alert(fromSecondToLastArgs.join(' '));\n}\n\ntest('just', 'testing', 'here'); // alerts 'just testing here';\n                                 // alerts 'testing here';\n\nExt.Array.toArray(document.getElementsByTagName('div')); // will convert the NodeList into an array\nExt.Array.toArray('splitted'); // returns ['s', 'p', 'l', 'i', 't', 't', 'e', 'd']\nExt.Array.toArray('splitted', 0, 3); // returns ['s', 'p', 'l']\n
\n\n

Ext.toArray is alias for Ext.Array.toArray

\n"},"toSentence":{"!type":"fn(items: [string], connector: string) -> string","!doc":"

Turns an array into a sentence, joined by a specified connector - e.g.:

\n\n
Ext.toSentence(['Adama', 'Tigh', 'Roslin']); //'Adama, Tigh and Roslin'\nExt.toSentence(['Adama', 'Tigh', 'Roslin'], 'or'); //'Adama, Tigh or Roslin'\n
\n"},"type":{"!type":"fn(value: ?) -> string","!doc":"

Old alias to typeOf

\n"},"typeOf":{"!type":"fn(value: ?) -> string","!doc":"

Returns the type of the given variable in string format. List of possible values are:

\n\n\n\n"},"un":{"!type":"fn(eventName: string, fn: fn(), scope?: ?) -> !this","!doc":"

Shorthand for the Ext.util.Observable.removeListener method of the\nglobalEvents Observable instance.

\n"},"unique":{"!type":"fn(array: [?]) -> [?]","!doc":"

Old alias to Ext.Array.unique

\n"},"urlAppend":{"!type":"fn(url: string, string: string) -> string","!doc":"

Old alias to Ext.String.urlAppend

\n"},"urlDecode":{"!type":"fn(queryString: string, recursive?: bool) -> ?","!doc":"

Alias for Ext.Object.fromQueryString.

\n"},"urlEncode":{"!type":"fn(object: ?, recursive?: bool) -> string","!doc":"

Takes an object and converts it to an encoded query string.

\n\n

Non-recursive:

\n\n
Ext.Object.toQueryString({foo: 1, bar: 2}); // returns \"foo=1&bar=2\"\nExt.Object.toQueryString({foo: null, bar: 2}); // returns \"foo=&bar=2\"\nExt.Object.toQueryString({'some price': '$300'}); // returns \"some%20price=%24300\"\nExt.Object.toQueryString({date: new Date(2011, 0, 1)}); // returns \"date=%222011-01-01T00%3A00%3A00%22\"\nExt.Object.toQueryString({colors: ['red', 'green', 'blue']}); // returns \"colors=red&colors=green&colors=blue\"\n
\n\n

Recursive:

\n\n
Ext.Object.toQueryString({\n    username: 'Jacky',\n    dateOfBirth: {\n        day: 1,\n        month: 2,\n        year: 1911\n    },\n    hobbies: ['coding', 'eating', 'sleeping', ['nested', 'stuff']]\n}, true); // returns the following string (broken down and url-decoded for ease of reading purpose):\n// username=Jacky\n//    &dateOfBirth[day]=1&dateOfBirth[month]=2&dateOfBirth[year]=1911\n//    &hobbies[0]=coding&hobbies[1]=eating&hobbies[2]=sleeping&hobbies[3][0]=nested&hobbies[3][1]=stuff\n
\n"},"value":{"!type":"fn(value: ?, defaultValue: ?, allowBlank?: bool) -> ?","!doc":"

Utility method for returning a default value if the passed value is empty.

\n\n

The value is deemed to be empty if it is:

\n\n\n\n"},"valueFrom":{"!type":"fn(value: ?, defaultValue: ?, allowBlank?: bool) -> ?","!doc":"

Returns the given value itself if it's not empty, as described in isEmpty; returns the default\nvalue (second argument) otherwise.

\n"},"widget":{"!type":"fn(name?: string, config?: ?) -> ?","!doc":"

Convenient shorthand to create a widget by its xtype or a config object.\nSee also Ext.ClassManager.instantiateByAlias.

\n\n
 var button = Ext.widget('button'); // Equivalent to Ext.create('widget.button');\n\n var panel = Ext.widget('panel', { // Equivalent to Ext.create('widget.panel')\n     title: 'Panel'\n });\n\n var grid = Ext.widget({\n     xtype: 'grid',\n     ...\n });\n
\n\n

If a component instance is passed, it is simply returned.

\n"},"zip":{"!type":"fn(arr: [?]|+NodeList, zipper?: fn()) -> [?]","!doc":"

Zips N sets together.

\n\n

Example 1:

\n\n
Ext.zip([1,2,3],[4,5,6]); // [[1,4],[2,5],[3,6]]\n
\n\n

Example 2:

\n\n
Ext.zip(\n    [ \"+\", \"-\", \"+\"],\n    [  12,  10,  22],\n    [  43,  15,  96],\n    function(a, b, c){\n        return \"$\" + a + \"\" + b + \".\" + c\n    }\n); // [\"$+12.43\", \"$-10.15\", \"$+22.96\"]\n
\n"},"layout":{"ClassList":{"!doc":"

This class provides a DOM ClassList API to buffer access to an element's class.\nInstances of this class are created by Ext.layout.ContextItem.getClassList.

\n","prototype":{"add":{"!type":"fn(cls: ?) -> !this","!doc":"

Adds a single class to the class list.

\n"},"addMany":{"!type":"fn(classes: ?) -> !this","!doc":"

Adds one or more classes in an array or space-delimited string to the class list.

\n"},"remove":{"!type":"fn(cls: ?) -> !this","!doc":"

Removes a single class from the class list.

\n"},"removeMany":{"!type":"fn(classes: ?) -> !this","!doc":"

Removes one or more classes in an array or space-delimited string from the class\nlist.

\n"}}},"Context":{"!doc":"

Manages context information during a layout.

\n\n

Algorithm

\n\n

This class performs the following jobs:

\n\n\n\n\n

Work done during layout falls into either a \"read phase\" or a \"write phase\" and it is\nessential to always be aware of the current phase. Most methods in\nLayout are called during a read phase:\ncalculate,\ncompleteLayout and\nfinalizeLayout. The exceptions to this are\nbeginLayout,\nbeginLayoutCycle and\nfinishedLayout which are called during\na write phase. While finishedLayout is called\na write phase, it is really intended to be a catch-all for post-processing after a\nlayout run.

\n\n

In a read phase, it is OK to read the DOM but this should be done using the appropriate\nContextItem where possible since that provides a cache\nto avoid redundant reads. No writes should be made to the DOM in a read phase! Instead,\nthe values should be written to the proper ContextItem for later write-back.

\n\n

The rules flip-flop in a write phase. The only difference is that ContextItem methods\nlike getStyle will still read the DOM unless the\nvalue was previously read. This detail is unknowable from the outside of ContextItem, so\nread calls to ContextItem should also be avoided in a write phase.

\n\n

Calculating interdependent layouts requires a certain amount of iteration. In a given\ncycle, some layouts will contribute results that allow other layouts to proceed. The\ngeneral flow then is to gather all of the layouts (both component and container) in a\ncomponent tree and queue them all for processing. The initial queue order is bottom-up\nand component layout first, then container layout (if applicable) for each component.

\n\n

This initial step also calls the beginLayout method on all layouts to clear any values\nfrom the DOM that might interfere with calculations and measurements. In other words,\nthis is a \"write phase\" and reads from the DOM should be strictly avoided.

\n\n

Next the layout enters into its iterations or \"cycles\". Each cycle consists of calling\nthe calculate method on all layouts in the\nlayoutQueue. These calls are part of a \"read phase\" and writes to the DOM should\nbe strictly avoided.

\n\n

Considerations

\n\n

RULE 1: Respect the read/write cycles. Always use the getProp\nor getDomProp methods to get calculated values;\nonly use the getStyle method to read styles; use\nsetProp to set DOM values. Some reads will, of\ncourse, still go directly to the DOM, but if there is a method in\nContextItem to do a certain job, it should be used instead\nof a lower-level equivalent.

\n\n

The basic logic flow in calculate consists of gathering\nvalues by calling getProp or\ngetDomProp, calculating results and publishing\nthem by calling setProp. It is important to realize\nthat getProp will return undefined if the value\nis not yet known. But the act of calling the method is enough to track the fact that the\ncalling layout depends (in some way) on this value. In other words, the calling layout is\n\"triggered\" by the properties it requests.

\n\n

RULE 2: Avoid calling getProp unless the value\nis needed. Gratuitous calls cause inefficiency because the layout will appear to depend on\nvalues that it never actually uses. This applies equally to\ngetDomProp and the test-only methods\nhasProp and hasDomProp.

\n\n

Because getProp can return undefined, it is often\nthe case that subsequent math will produce NaN's. This is usually not a problem as the\nNaN's simply propagate along and result in final results that are NaN. Both undefined\nand NaN are ignored by Ext.layout.ContextItem.setProp, so it is often not necessary\nto even know that this is happening. It does become important for determining if a layout\nis not done or if it might lead to publishing an incorrect (but not NaN or undefined)\nvalue.

\n\n

RULE 3: If a layout has not calculated all the values it is required to calculate, it\nmust set done to false before returning from\ncalculate. This value is always true on entry because\nit is simpler to detect the incomplete state rather than the complete state (especially up\nand down a class hierarchy).

\n\n

RULE 4: A layout must never publish an incomplete (wrong) result. Doing so would cause\ndependent layouts to run their calculations on those wrong values, producing more wrong\nvalues and some layouts may even incorrectly flag themselves as done\nbefore the correct values are determined and republished. Doing this will poison the\ncalculations.

\n\n

RULE 5: Each value should only be published by one layout. If multiple layouts attempt\nto publish the same values, it would be nearly impossible to avoid breaking RULE 4. To\nhelp detect this problem, the layout diagnostics will trap on an attempt to set a value\nfrom different layouts.

\n\n

Complex layouts can produce many results as part of their calculations. These values are\nimportant for other layouts to proceed and need to be published by the earliest possible\ncall to Ext.layout.Layout.calculate to avoid unnecessary cycles and poor performance. It is\nalso possible, however, for some results to be related in a way such that publishing them\nmay be an all-or-none proposition (typically to avoid breaking RULE 4).

\n\n

RULE 6: Publish results as soon as they are known to be correct rather than wait for\nall values to be calculated. Waiting for everything to be complete can lead to deadlock.\nThe key here is not to forget RULE 4 in the process.

\n\n

Some layouts depend on certain critical values as part of their calculations. For example,\nHBox depends on width and cannot do anything until the width is known. In these cases, it\nis best to use block or\ndomBlock and thereby avoid processing the layout\nuntil the needed value is available.

\n\n

RULE 7: Use block or\ndomBlock when values are required to make progress.\nThis will mimize wasted recalculations.

\n\n

RULE 8: Blocks should only be used when no forward progress can be made. If even one\nvalue could still be calculated, a block could result in a deadlock.

\n\n

Historically, layouts have been invoked directly by component code, sometimes in places\nlike an afterLayout method for a child component. With the flexibility now available\nto solve complex, iterative issues, such things should be done in a responsible layout\n(be it component or container).

\n\n

RULE 9: Use layouts to solve layout issues and don't wait for the layout to finish to\nperform further layouts. This is especially important now that layouts process entire\ncomponent trees and not each layout in isolation.

\n\n

Sequence Diagram

\n\n

The simplest sequence diagram for a layout run looks roughly like this:

\n\n
  Context         Layout 1     Item 1     Layout 2     Item 2\n     |               |           |           |           |\n---->X-------------->X           |           |           |\nrun  X---------------|-----------|---------->X           |\n     X beginLayout   |           |           |           |\n     X               |           |           |           |\n   A X-------------->X           |           |           |\n     X  calculate    X---------->X           |           |\n     X             C X  getProp  |           |           |\n   B X               X---------->X           |           |\n     X               |  setProp  |           |           |\n     X               |           |           |           |\n   D X---------------|-----------|---------->X           |\n     X  calculate    |           |           X---------->X\n     X               |           |           |  setProp  |\n   E X               |           |           |           |\n     X---------------|-----------|---------->X           |\n     X completeLayout|           |         F |           |\n     X               |           |           |           |\n   G X               |           |           |           |\n   H X-------------->X           |           |           |\n     X  calculate    X---------->X           |           |\n     X             I X  getProp  |           |           |\n     X               X---------->X           |           |\n     X               |  setProp  |           |           |\n   J X-------------->X           |           |           |\n     X completeLayout|           |           |           |\n     X               |           |           |           |\n   K X-------------->X           |           |           |\n     X---------------|-----------|---------->X           |\n     X finalizeLayout|           |           |           |\n     X               |           |           |           |\n   L X-------------->X           |           |           |\n     X---------------|-----------|---------->X           |\n     X finishedLayout|           |           |           |\n     X               |           |           |           |\n   M X-------------->X           |           |           |\n     X---------------|-----------|---------->X           |\n     X notifyOwner   |           |           |           |\n   N |               |           |           |           |\n     -               -           -           -           -\n
\n\n

Notes:

\n\n

A. This is a call from the run method to the runCycle method.\nEach layout in the queue will have its calculate\nmethod called.

\n\n

B. After each calculate method is called the\ndone flag is checked to see if the Layout has completed.\nIf it has completed and that layout object implements a\ncompleteLayout method, this layout is queued to\nreceive its call. Otherwise, the layout will be queued again unless there are blocks or\ntriggers that govern its requeueing.

\n\n

C. The call to getProp is made to the Item\nand that will be tracked as a trigger (keyed by the name of the property being requested).\nChanges to this property will cause this layout to be requeued. The call to\nsetProp will place a value in the item and not\ndirectly into the DOM.

\n\n

D. Call the other layouts now in the first cycle (repeat B and C for each\nlayout).

\n\n

E. After completing a cycle, if progress was made (new properties were written to\nthe context) and if the layoutQueue is not empty, the next cycle is run. If no\nprogress was made or no layouts are ready to run, all buffered values are written to\nthe DOM (a flush).

\n\n

F. After flushing, any layouts that were marked as done\nthat also have a completeLayout method are called.\nThis can cause them to become no longer done (see invalidate). As with\ncalculate, this is considered a \"read phase\" and\ndirect DOM writes should be avoided.

\n\n

G. Flushing and calling any pending completeLayout\nmethods will likely trigger layouts that called getDomProp\nand unblock layouts that have called domBlock.\nThese variants are used when a layout needs the value to be correct in the DOM and not\nsimply known. If this does not cause at least one layout to enter the queue, we have a\nlayout FAILURE. Otherwise, we continue with the next cycle.

\n\n

H. Call calculate on any layouts in the queue\nat the start of this cycle. Just a repeat of B through G.

\n\n

I. Once the layout has calculated all that it is resposible for, it can leave itself\nin the done state. This is the value on entry to\ncalculate and must be cleared in that call if the\nlayout has more work to do.

\n\n

J. Now that all layouts are done, flush any DOM values and\ncompleteLayout calls. This can again cause\nlayouts to become not done, and so we will be back on another cycle if that happens.

\n\n

K. After all layouts are done, call the finalizeLayout\nmethod on any layouts that have one. As with completeLayout,\nthis can cause layouts to become no longer done. This is less desirable than using\ncompleteLayout because it will cause all\nfinalizeLayout methods to be called again\nwhen we think things are all wrapped up.

\n\n

L. After finishing the last iteration, layouts that have a\nfinishedLayout method will be called. This\ncall will only happen once per run and cannot cause layouts to be run further.

\n\n

M. After calling finahedLayout, layouts that have a\nnotifyOwner method will be called. This\ncall will only happen once per run and cannot cause layouts to be run further.

\n\n

N. One last flush to make sure everything has been written to the DOM.

\n\n

Inter-Layout Collaboration

\n\n

Many layout problems require collaboration between multiple layouts. In some cases, this\nis as simple as a component's container layout providing results used by its component\nlayout or vise-versa. A slightly more distant collaboration occurs in a box layout when\nstretchmax is used: the child item's component layout provides results that are consumed\nby the ownerCt's box layout to determine the size of the children.

\n\n

The various forms of interdependence between a container and its children are described by\neach components' size model.

\n\n

To facilitate this collaboration, the following pairs of properties are published to the\ncomponent's ContextItem:

\n\n\n\n","!type":"fn(config: Ext_layout_Context_cfg)","prototype":{"!proto":"Ext.Base.prototype","layoutQueue":{"!type":"+Ext.util.Queue","!doc":"

List of layouts to perform.

\n"},"logOn":{"!type":"?","!doc":"

Defined in override Ext.diag.layout.Context.

\n"},"remainingLayouts":{"!type":"number"},"state":{"!type":"number","!doc":"

One of these values:

\n\n\n\n"},"callLayout":{"!type":"fn(layout: ?, methodName: ?) -> !this","!doc":"

Overridden in Ext.diag.layout.Context.

\n"},"cancelComponent":{"!type":"fn(comp: ?, isChild: ?, isDestroying: ?) -> !this","!doc":"

From override Ext.diag.layout.Context: reportOnSuccess: true,

\n"},"cancelLayout":{"!type":"fn(layout: ?) -> !this","!doc":"

Overridden in Ext.diag.layout.Context.

\n"},"chainFns":{"!type":"fn(oldOptions: ?, newOptions: ?, funcName: ?) -> !this"},"checkRemainingLayouts":{"!type":"fn() -> !this","!doc":"

Defined in override Ext.diag.layout.Context.

\n"},"clearTriggers":{"!type":"fn(layout: ?, inDom: ?) -> !this"},"flush":{"!type":"fn() -> !this","!doc":"

Flushes any pending writes to the DOM by calling each ContextItem in the flushQueue.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"flushAnimations":{"!type":"fn() -> !this"},"flushInvalidates":{"!type":"fn() -> !this","!doc":"

Overridden in Ext.diag.layout.Context.

\n"},"flushLayouts":{"!type":"fn(queueName: ?, methodName: ?, dontClear: ?) -> !this"},"getCmp":{"!type":"fn(cmp: +Ext.Component) -> !this","!doc":"

Returns the ContextItem for a component.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"getEl":{"!type":"fn(parent: +Ext.layout.ContextItem, el: +Ext.dom.Element) -> !this","!doc":"

Returns the ContextItem for an element.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"getItem":{"!type":"fn(target: ?, el: ?) -> !this"},"getLayoutName":{"!type":"fn(layout: ?) -> !this","!doc":"

Defined in override Ext.diag.layout.Context.

\n"},"handleFailure":{"!type":"fn() -> !this"},"invalidate":{"!type":"fn(components: +Ext.Component|[?], full: bool) -> !this","!doc":"

Invalidates one or more components' layouts (component and container). This can be\ncalled before run to identify the components that need layout or during the run to\nrestart the layout of a component. This is called internally to flush any queued\ninvalidations at the start of a cycle. If called during a run, it is not expected\nthat new components will be introduced to the layout.

\n"},"layoutDone":{"!type":"fn(layout: ?) -> !this","!doc":"

Overridden in Ext.diag.layout.Context.

\n"},"layoutTreeHasFailures":{"!type":"fn(layout: ?, reported: ?) -> !this","!doc":"

Defined in override Ext.diag.layout.Context.

\n"},"newQueue":{"!type":"fn() -> !this"},"processInvalidate":{"!type":"fn(options: ?, item: ?, name: ?) -> !this"},"queueAnimation":{"!type":"fn(item: +Ext.layout.ContextItem) -> !this","!doc":"

Queues a ContextItem to have its Ext.layout.ContextItem.flushAnimations method called.

\n"},"queueCompletion":{"!type":"fn(layout: +Ext.layout.Layout) -> !this","!doc":"

Queues a layout to have its Ext.layout.Layout.completeLayout method called.

\n"},"queueFinalize":{"!type":"fn(layout: +Ext.layout.Layout) -> !this","!doc":"

Queues a layout to have its Ext.layout.Layout.finalizeLayout method called.

\n"},"queueFlush":{"!type":"fn(item: +Ext.layout.ContextItem) -> !this","!doc":"

Queues a ContextItem for the next flush to the DOM. This should only be called by\nthe Ext.layout.ContextItem class.

\n"},"queueInvalidate":{"!type":"fn(item: +Ext.Component|+Ext.layout.ContextItem, options: ?) -> !this","!doc":"

Queue a component (and its tree) to be invalidated on the next cycle.

\n"},"queueItemLayouts":{"!type":"fn(item: ?) -> !this"},"queueLayout":{"!type":"fn(layout: +Ext.layout.Layout) -> !this","!doc":"

Queues a layout for the next calculation cycle. This should not be called if the\nlayout is done, blocked or already in the queue. The only classes that should call\nthis method are this class and Ext.layout.ContextItem.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"removeEl":{"!type":"fn(parent: +Ext.layout.ContextItem, el: +Ext.dom.Element) -> !this","!doc":"

Removes the ContextItem for an element from the cache and from the parent's\n\"children\" array.

\n"},"reportLayoutResult":{"!type":"fn(layout: ?, reported: ?) -> !this","!doc":"

Defined in override Ext.diag.layout.Context.

\n"},"resetLayout":{"!type":"fn(layout: ?, ownerContext: ?, firstTime: ?) -> !this","!doc":"

Resets the given layout object. This is called at the start of the run and can also\nbe called during the run by calling invalidate.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"round":{"!type":"fn(t: ?) -> !this","!doc":"

Defined in override Ext.diag.layout.Context.

\n"},"run":{"!type":"fn() -> bool","!doc":"

Runs the layout calculations. This can be called only once on this object.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"runComplete":{"!type":"fn() -> !this"},"runCycle":{"!type":"fn() -> bool","!doc":"

Performs one layout cycle by calling each layout in the layout queue.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"runLayout":{"!type":"fn(layout: ?) -> !this","!doc":"

Runs one layout as part of a cycle.

\n\n

Overridden in Ext.diag.layout.Context.

\n"},"setItemSize":{"!type":"fn(items: +Ext.Component|[+Ext.Component]|+Ext.dom.Element|[+Ext.dom.Element]|+Ext.dom.CompositeElement, width: number, height: number) -> !this","!doc":"

Set the size of a component, element or composite or an array of components or elements.

\n"}}},"ContextItem":{"!doc":"

This class manages state information for a component or element during a layout.

\n\n

Blocks

\n\n

A \"block\" is a required value that is preventing further calculation. When a layout has\nencountered a situation where it cannot possibly calculate results, it can associate\nitself with the context item and missing property so that it will not be rescheduled\nuntil that property is set.

\n\n

Blocks are a one-shot registration. Once the property changes, the block is removed.

\n\n

Be careful with blocks. If any further calculations can be made, a block is not the\nright choice.

\n\n

Triggers

\n\n

Whenever any call to getProp, getDomProp, hasProp or\nhasDomProp is made, the current layout is automatically registered as being\ndependent on that property in the appropriate state. Any changes to the property will\ntrigger the layout and it will be queued in the Ext.layout.Context.

\n\n

Triggers, once added, remain for the entire layout. Any changes to the property will\nreschedule all unfinished layouts in their trigger set.

\n","!type":"fn(config: Ext_layout_ContextItem_cfg)","prototype":{"!proto":"Ext.Base.prototype","borderNames":{"!type":"[?]"},"boxChildren":{"!type":"?","!doc":"

plaed here by AbstractComponent.getSizeModel

\n"},"boxParent":{"!type":"?"},"cacheMissHandlers":{"!type":"?"},"children":{"!type":"[?]"},"consumersContainerHeight":{"!type":"number"},"consumersContainerWidth":{"!type":"number"},"consumersContentHeight":{"!type":"number"},"consumersContentWidth":{"!type":"number"},"consumersHeight":{"!type":"number"},"consumersWidth":{"!type":"number"},"dirty":{"!type":"?"},"dirtyCount":{"!type":"number","!doc":"

The number of dirty properties

\n"},"hasRawContent":{"!type":"bool"},"heightModel":{"!type":"?"},"isBorderBoxValue":{"!type":"?"},"isContextItem":{"!type":"bool"},"isTopLevel":{"!type":"bool"},"marginNames":{"!type":"[?]"},"optOut":{"!type":"bool","!doc":"

There are several cases that allow us to skip (opt out) of laying out a component\nand its children as long as its lastBox is not marked as invalid. If anything\nhappens to change things, the lastBox is marked as invalid by updateLayout\nas it ascends the component hierarchy.

\n"},"ownerCtContext":{"!type":"?"},"ownerSizePolicy":{"!type":"?"},"paddingNames":{"!type":"[?]"},"props":{"!type":"?","!doc":"

the current set of property values:

\n"},"remainingChildDimensions":{"!type":"number"},"sizeModel":{"!type":"?"},"state":{"!type":"?","!doc":"

State variables that are cleared when invalidated. Only applies to component items.

\n"},"styles":{"!type":"?","!doc":"

Adds x and y values from a props object to a styles object as \"left\" and \"top\" values.\nOverridden to add the x property as \"right\" in rtl mode.A styles object for an Element

\n"},"translateProps":{"!type":"?"},"trblNames":{"!type":"[?]"},"widthModel":{"!type":"?"},"wrapsComponent":{"!type":"bool","!doc":"

True if this item wraps a Component (rather than an Element).

\n"},"addBlock":{"!type":"fn(name: string, layout: +Ext.layout.Layout, propName: string) -> !this","!doc":"

Adds a block.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"addBoxChild":{"!type":"fn(boxChildItem: ?) -> !this","!doc":"

Overridden in Ext.diag.layout.ContextItem.

\n"},"addCls":{"!type":"fn(newCls: ?) -> !this","!doc":"

Queue the addition of a class name (or array of class names) to this ContextItem's target when next flushed.

\n"},"addTrigger":{"!type":"fn(propName: string, inDom: bool) -> !this","!doc":"

Adds a trigger.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"block":{"!type":"fn(layout: +Ext.layout.Layout, propName: string) -> !this","!doc":"

Registers a layout in the block list for the given property. Once the property is\nset in the Ext.layout.Context, the layout is unblocked.

\n"},"boxChildMeasured":{"!type":"fn() -> !this"},"checkAuthority":{"!type":"fn(prop: ?) -> !this","!doc":"

Defined in override Ext.diag.layout.ContextItem.

\n"},"checkCache":{"!type":"fn(entry: ?) -> !this"},"clearAllBlocks":{"!type":"fn(name: ?) -> !this"},"clearBlocks":{"!type":"fn(name: string, propName: string) -> !this","!doc":"

Removes any blocks on a property in the specified set. Any layouts that were blocked\nby this property and are not still blocked (by other properties) will be rescheduled.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"clearMarginCache":{"!type":"fn() -> !this","!doc":"

clears the margin cache so that marginInfo get re-read from the dom on the next call to getMarginInfo()\nThis is needed in some special cases where the margins have changed since the last layout, making the cached\nvalues invalid. For example collapsed window headers have different margin than expanded ones.

\n"},"domBlock":{"!type":"fn(layout: +Ext.layout.Layout, propName: string) -> !this","!doc":"

Registers a layout in the DOM block list for the given property. Once the property\nflushed to the DOM by the Ext.layout.Context, the layout is unblocked.

\n"},"fireTriggers":{"!type":"fn(name: string, propName: string) -> !this","!doc":"

Reschedules any layouts associated with a given trigger.

\n"},"flush":{"!type":"fn() -> !this","!doc":"

Flushes any updates in the dirty collection to the DOM. This is only called if there\nare dirty entries because this object is only added to the flushQueue of the\nExt.layout.Context when entries become dirty.

\n"},"flushAnimations":{"!type":"fn() -> !this"},"getBorderInfo":{"!type":"fn() -> ?","!doc":"

Gets the border information for the element as an object with left, top, right and\nbottom properties holding border size in pixels. This object is only read from the\nDOM on first request and is cached.

\n"},"getClassList":{"!type":"fn() -> !this","!doc":"

Returns a ClassList-like object to buffer access to this item's element's classes.

\n"},"getDomProp":{"!type":"fn(propName: string) -> ?","!doc":"

Gets a property of this object if it is correct in the DOM. Also tracks the current\nlayout as dependent on this property so that DOM writes of it will trigger the\nlayout to be recalculated.

\n"},"getEl":{"!type":"fn(nameOrEl: string|+Ext.dom.Element, owner?: +Ext.layout.container.Container|+Ext.Component) -> +Ext.layout.ContextItem","!doc":"

Returns the context item for an owned element. This should only be called on a\ncomponent's item. The list of child items is used to manage invalidating calculated\nresults.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"getFrameInfo":{"!type":"fn() -> ?","!doc":"

Gets the \"frame\" information for the element as an object with left, top, right and\nbottom properties holding border+framing size in pixels. This object is calculated\non first request and is cached.

\n"},"getMarginInfo":{"!type":"fn() -> ?","!doc":"

Gets the margin information for the element as an object with left, top, right and\nbottom properties holding margin size in pixels. This object is only read from the\nDOM on first request and is cached.

\n"},"getPaddingInfo":{"!type":"fn() -> ?","!doc":"

Gets the padding information for the element as an object with left, top, right and\nbottom properties holding padding size in pixels. This object is only read from the\nDOM on first request and is cached.

\n"},"getProp":{"!type":"fn(propName: string) -> ?","!doc":"

Gets a property of this object. Also tracks the current layout as dependent on this\nproperty so that changes to it will trigger the layout to be recalculated.

\n"},"getStyle":{"!type":"fn(styleName: string) -> ?","!doc":"

Returns a style for this item. Each style is read from the DOM only once on first\nrequest and is then cached. If the value is an integer, it is parsed automatically\n(so '5px' is not returned, but rather 5).

\n"},"getStyles":{"!type":"fn(styleNames: [string], altNames?: [string]) -> ?","!doc":"

Returns styles for this item. Each style is read from the DOM only once on first\nrequest and is then cached. If the value is an integer, it is parsed automatically\n(so '5px' is not returned, but rather 5).

\n"},"hasDomProp":{"!type":"fn(propName: string) -> bool","!doc":"

Returns true if the given property is correct in the DOM. This is equivalent to\ncalling getDomProp and not getting an undefined result. In particular,\nthis call registers the current layout to be triggered by flushes of this property.

\n"},"hasProp":{"!type":"fn(propName: string) -> bool","!doc":"

Returns true if the given property has been set. This is equivalent to calling\ngetProp and not getting an undefined result. In particular, this call\nregisters the current layout to be triggered by changes to this property.

\n"},"init":{"!type":"fn(full: bool) -> +Mixed","!doc":"

Clears all properties on this object except (perhaps) those not calculated by this\ncomponent. This is more complex than it would seem because a layout can decide to\ninvalidate its results and run the component's layouts again, but since some of the\nvalues may be calculated by the container, care must be taken to preserve those\nvalues.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"initAnimation":{"!type":"fn() -> !this"},"initContinue":{"!type":"fn(full: ?) -> !this"},"initDone":{"!type":"fn(containerLayoutDone: ?) -> !this"},"invalidate":{"!type":"fn(options: ?) -> !this","!doc":"

Invalidates the component associated with this item. The layouts for this component\nand all of its contained items will be re-run after first clearing any computed\nvalues.

\n\n

If state needs to be carried forward beyond the invalidation, the options parameter\ncan be used.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"markDirty":{"!type":"fn() -> !this"},"onBoxMeasured":{"!type":"fn() -> !this"},"parseMargins":{"!type":"fn(comp: ?, margins: ?, defaultMargins: ?) -> !this"},"peek":{"!type":"fn(propName: ?) -> !this"},"recoverProp":{"!type":"fn(propName: string, oldProps: ?, oldDirty: ?) -> !this","!doc":"

Recovers a property value from the last computation and restores its value and\ndirty state.

\n"},"redo":{"!type":"fn(deep: ?) -> !this"},"removeCls":{"!type":"fn(removeCls: ?) -> !this","!doc":"

Queue the removal of a class name (or array of class names) from this ContextItem's target when next flushed.

\n"},"removeEl":{"!type":"fn(nameOrEl: string|+Ext.dom.Element, owner?: +Ext.layout.container.Container|+Ext.Component) -> !this","!doc":"

Removes a cached ContextItem that was created using getEl. It may be\nnecessary to call this method if the dom reference for owned element changes so\nthat getEl can be called again to reinitialize the ContextItem with the\nnew element.

\n"},"revertProps":{"!type":"fn(props: ?) -> !this"},"setAttribute":{"!type":"fn(name: ?, value: ?) -> !this","!doc":"

Queue the setting of a DOM attribute on this ContextItem's target when next flushed.

\n"},"setBox":{"!type":"fn(box: ?) -> !this"},"setContentHeight":{"!type":"fn(height: ?, measured: ?) -> !this","!doc":"

Sets the contentHeight property. If the component uses raw content, then only the\nmeasured height is acceptable.

\n\n

Calculated values can sometimes be NaN or undefined, which generally mean the\ncalculation is not done. To indicate that such as value was passed, 0 is returned.\nOtherwise, 1 is returned.

\n\n

If the caller is not measuring (i.e., they are calculating) and the component has raw\ncontent, 1 is returned indicating that the caller is done.

\n"},"setContentSize":{"!type":"fn(width: ?, height: ?, measured: ?) -> !this","!doc":"

Sets the contentWidth and contentHeight properties. If the component uses raw content,\nthen only the measured values are acceptable.

\n\n

Calculated values can sometimes be NaN or undefined, which generally means that the\ncalculation is not done. To indicate that either passed value was such a value, false\nreturned. Otherwise, true is returned.

\n\n

If the caller is not measuring (i.e., they are calculating) and the component has raw\ncontent, true is returned indicating that the caller is done.

\n"},"setContentWidth":{"!type":"fn(width: ?, measured: ?) -> !this","!doc":"

Sets the contentWidth property. If the component uses raw content, then only the\nmeasured width is acceptable.

\n\n

Calculated values can sometimes be NaN or undefined, which generally means that the\ncalculation is not done. To indicate that such as value was passed, 0 is returned.\nOtherwise, 1 is returned.

\n\n

If the caller is not measuring (i.e., they are calculating) and the component has raw\ncontent, 1 is returned indicating that the caller is done.

\n"},"setHeight":{"!type":"fn(height: number, dirty?: bool) -> number","!doc":"

Sets the height and constrains the height to min/maxHeight range.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"setProp":{"!type":"fn(propName: string, value: ?, dirty: bool) -> number","!doc":"

Sets a property value. This will unblock and/or trigger dependent layouts if the\nproperty value is being changed. Values of NaN and undefined are not accepted by\nthis method.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"setSize":{"!type":"fn(width: ?, height: ?, dirty: ?) -> !this"},"setWidth":{"!type":"fn(width: number, dirty?: bool) -> number","!doc":"

Sets the height and constrains the width to min/maxWidth range.

\n\n

Overridden in Ext.diag.layout.ContextItem.

\n"},"undo":{"!type":"fn(deep: ?) -> !this"},"unsetProp":{"!type":"fn(propName: ?) -> !this"},"writeProps":{"!type":"fn(dirtyProps: ?, flushing: ?) -> !this"}}},"Layout":{"!doc":"

This class is the base for all layout types: component and container.

\n","!type":"fn(config: Ext_layout_Layout_cfg)","prototype":{"!proto":"Ext.Base.prototype","autoSizePolicy":{"!type":"?"},"done":{"!type":"bool","!doc":"

Used only during a layout run, this value indicates that a\nlayout has finished its calculations. This flag is set to true prior to the call to\ncalculate and should be set to false if this layout has more work to do.

\n"},"initialized":{"!type":"bool"},"isLayout":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Layout, or subclass thereof.

\n"},"running":{"!type":"bool"},"afterRemove":{"!type":"fn(item: ?) -> !this","!doc":"

Removes layout's itemCls and owning Container's itemCls.\nClears the managed dimensions flags

\n"},"afterRenderItem":{"!type":"fn() -> !this"},"beginLayout":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: +Ext.layout.ContextItem)","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"completeLayout":{"!type":"fn(ownerContext: +Ext.layout.ContextItem)","!doc":"

This method (if implemented) is called at the end of the cycle in which this layout\ncompletes (by not setting done to false in calculate). It is\npossible for the layout to complete and yet become invalid before the end of the cycle,\nin which case, this method will not be called. It is also possible for this method to\nbe called and then later the layout becomes invalidated. This will result in\ncalculate being called again, followed by another call to this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"configureItem":{"!type":"fn(item: +Ext.Component) -> !this","!doc":"

Called before an item is rendered to allow the layout to configure the item.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys this layout. This method removes a targetCls from the target\nelement and calls onDestroy.

\n\n

A derived class can override either this method or onDestroy but in all\ncases must call the base class versions of these methods to allow the base class to\nperform its cleanup.

\n\n

This method (or onDestroy) are overridden by subclasses most often to purge\nevent handlers or remove unmanged DOM nodes.

\n"},"finalizeLayout":{"!type":"fn(ownerContext: +Ext.layout.ContextItem)","!doc":"

This method (if implemented) is called after all layouts have completed. In most\nways this is similar to completeLayout. This call can cause this (or any\nlayout) to be become invalid (see Ext.layout.Context.invalidate), but this\nis best avoided. This method is intended to be where final reads are made and so it\nis best to avoid invalidating layouts at this point whenever possible. Even so, this\nmethod can be used to perform final checks that may require all other layouts to be\ncomplete and then invalidate some results.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"finishRender":{"!type":"fn() -> !this"},"finishRenderItems":{"!type":"fn(target: ?, items: ?) -> !this"},"finishedLayout":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getAnimatePolicy":{"!type":"fn() -> !this"},"getItemSizePolicy":{"!type":"fn(item: +Ext.Component) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"getItemsRenderTree":{"!type":"fn(items: ?, renderCfgs: ?) -> !this","!doc":"
\n"},"getLayoutItems":{"!type":"fn() -> !this","!doc":"

Returns the set of items to layout (empty by default).

\n"},"getPositionOffset":{"!type":"fn(position: ?) -> !this"},"initLayout":{"!type":"fn() -> !this","!doc":"

A one-time initialization method called just before rendering.

\n"},"isItemBoxParent":{"!type":"fn(itemContext: ?) -> !this"},"isItemLayoutRoot":{"!type":"fn(item: ?) -> !this"},"isItemShrinkWrap":{"!type":"fn(item: ?) -> !this"},"isRunning":{"!type":"fn() -> !this"},"isValidParent":{"!type":"fn(item: ?, target: ?, position: ?) -> !this","!doc":"

Validates item is in the proper place in the dom.

\n"},"moveItem":{"!type":"fn(item: ?, target: ?, position: ?) -> !this","!doc":"

Moves Component to the provided target instead.

\n"},"notifyOwner":{"!type":"fn(ownerContext: +Ext.layout.ContextItem)","!doc":"

This method (if implemented) is called after all layouts are finished, and all have\na lastComponentSize cached. No further layouts will be run and this method is only\ncalled once per layout run. It is the bookend to beginLayout.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method. This is the catch-all tail method to a layout and so the rules are more\nrelaxed. Even so, for performance reasons, it is best to avoid reading the DOM. If\na read is necessary, consider implementing a finalizeLayout method to do the\nrequired reads.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"onAdd":{"!type":"fn(item: ?) -> !this"},"onContentChange":{"!type":"fn(child: +Ext.Component) -> bool","!doc":"

This method is called when a child item changes in some way. By default this calls\nExt.AbstractComponent.updateLayout on this layout's owner.

\n"},"onDestroy":{"!type":"fn() -> !this"},"onRemove":{"!type":"fn() -> !this"},"renderChildren":{"!type":"fn() -> !this"},"renderItem":{"!type":"fn(item: +Ext.Component, target: +Ext.dom.Element, position: number) -> !this","!doc":"

Renders the given Component into the target Element.

\n"},"renderItems":{"!type":"fn(items: ?, target: ?) -> !this","!doc":"

Iterates over all passed items, ensuring they are rendered. If the items are already rendered,\nalso determines if the items are in the proper place in the dom.

\n"},"setOwner":{"!type":"fn(owner: ?) -> !this","!doc":"

Sets the layout owner

\n"},"sortWeightedItems":{"!type":"fn(items: ?, reverseProp: ?) -> !this"},"undoLayout":{"!type":"fn() -> !this"}},"layoutsByType":{"!type":"?"},"create":{"!type":"fn(layout: ?, defaultType: ?) -> !this"}},"SizeModel":{"!doc":"

This class describes a size determination strategy or algorithm used by the layout\nsystem. There are special instances of this class stored as static properties to\navoid needless object instantiation. These instances should be treated as readonly.

\n\n\n\n\n

Using one of these instances is simply:

\n\n
  var calculated = Ext.layout.SizeModel.calculated;\n
\n","!type":"fn(config: Ext_layout_SizeModel_cfg)","prototype":{"!proto":"Ext.Base.prototype","auto":{"!type":"bool","!doc":"

True if the size is either natural or shrinkWrap, otherwise false.

\n"},"calculated":{"!type":"bool","!doc":"

True if the size is calculated by the ownerLayout.

\n"},"calculatedFromConfigured":{"!type":"bool","!doc":"

True if the size is calculated by the ownerLayout based on a configured size.

\n"},"calculatedFromNatural":{"!type":"bool","!doc":"

True if the size is calculated by the ownerLayout based on natural size model\nresults.

\n"},"calculatedFromShrinkWrap":{"!type":"bool","!doc":"

True if the size is calculated by the ownerLayout based on shrinkWrap size model\nresults.

\n"},"configured":{"!type":"bool","!doc":"

True if the size is configured (e.g., by a width or minWidth). The names of\nconfiguration properties can be found in the names property.

\n"},"constrainedMax":{"!type":"bool","!doc":"

True if the size is constrained by a maxWidth or maxHeight configuration. This\nis a flavor of configured (since maxWidth and maxHeight are config options).\nIf true, the names property will be defined as well.

\n"},"constrainedMin":{"!type":"bool","!doc":"

True if the size is constrained by a minWidth or minHeight configuration. This\nis a flavor of configured (since minWidth and minHeight are config options).\nIf true, the names property will be defined as well.

\n"},"fixed":{"!type":"bool","!doc":"

True if the size is either calculated or configured, otherwise false.

\n"},"name":{"!type":"string","!doc":"

The name of this size model (e.g., \"calculated\").

\n"},"names":{"!type":"?","!doc":"

An object with the config property names that determine the\nsize.

\n"},"natural":{"!type":"bool","!doc":"

True if the size is determined by CSS and not by content. Such sizes are assumed to\nbe dependent on the container box and measurement occurs on the outer-most element.

\n"},"ordinal":{"!type":"number","!doc":"

The 0-based ordinal for this SizeModel instance.

\n"},"pairsByHeightOrdinal":{"!type":"[?]","!doc":"

An array of objects indexed by the ordinal of a height SizeModel on\na width SizeModel to yield an object describing both height and width size\nmodels.

\n\n

Used like this:

\n\n
 widthModel.pairsByHeightOrdinal[heightModel.ordinal]\n
\n\n

This provides a reusable object equivalent to the following:

\n\n
 {\n     width: widthModel,\n     height: heightModel\n }\n
\n"},"shrinkWrap":{"!type":"bool","!doc":"

True if the size is determined by content irrespective of the container box.

\n"}},"sizeModels":{"!type":"?","!doc":"

An object containing all SizeModel instances keyed by name.

\n"},"sizeModelsArray":{"!type":"[?]","!doc":"

An array of all SizeModel instances.

\n"}},"SizePolicy":{"!doc":"

This class describes how a layout will interact with a component it manages.

\n\n

There are special instances of this class stored as static properties to avoid object\ninstantiation. All instances of this class should be treated as readonly objects.

\n","prototype":{"readsHeight":{"!type":"bool","!doc":"

Indicates that the height of the component is consumed.

\n"},"readsWidth":{"!type":"bool","!doc":"

Indicates that the width of the component is consumed.

\n"},"setsHeight":{"!type":"bool","!doc":"

Indicates that the height of the component will be set (i.e., calculated).

\n"},"setsWidth":{"!type":"bool","!doc":"

Indicates that the width of the component will be set (i.e., calculated).

\n"}}},"component":{"Auto":{"!doc":"

The class is the default component layout for Ext.Component when no explicit\ncomponentLayout is configured.

\n\n

This class uses template methods to perform the individual aspects of measurement,\ncalculation and publication of results. The methods called depend on the component's\nsize model.

\n\n

configured / calculated

\n\n

In either of these size models, the dimension of the outer element is of a known size.\nThe size is found in the ownerContext (the Ext.layout.ContextItem for the owner\ncomponent) as either \"width\" or \"height\". This value, if available, is passed to the\npublishInnerWidth or publishInnerHeight method, respectively.

\n\n

shrinkWrap

\n\n

When a dimension uses the shrinkWrap size model, that means the content is measured,\nthen the outer (owner) size is calculated and published.

\n\n

For example, for a shrinkWrap width, the following sequence of calls are made:

\n\n\n\n\n

natural

\n\n

When a dimension uses the natural size model, the measurement is made on the outer\n(owner) element. This size is then used to determine the content area in much the same\nway as if the outer element had a configured or calculated size model.

\n\n\n\n","!type":"fn(config: Ext_layout_component_Auto_cfg)","prototype":{"!proto":"Ext.layout.component.Component.prototype","setHeightInDom":{"!type":"bool","!doc":"

When publishing height of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"setWidthInDom":{"!type":"bool","!doc":"

When publishing width of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"waitForOuterHeightInDom":{"!type":"bool"},"waitForOuterWidthInDom":{"!type":"bool"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"calculateOwnerHeightFromContentHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this"},"calculateOwnerWidthFromContentWidth":{"!type":"fn(ownerContext: ?, contentWidth: ?) -> !this"},"publishOwnerHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this"},"publishOwnerWidth":{"!type":"fn(ownerContext: ?, contentWidth: ?) -> !this"}}},"Body":{"!doc":"

Component layout for components which maintain an inner body element which must be resized to synchronize with the\nComponent size.

\n","!type":"fn(config: Ext_layout_component_Body_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculateOwnerHeightFromContentHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this","!doc":"

Padding is exciting here because we have 2 el's: owner.el and owner.body. Content\nsize always includes the padding of the targetEl, which should be owner.body. But\nit is common to have padding on owner.el also (such as a panel header), so we need\nto do some more padding work if targetContext is not owner.el. The base class has\nalready handled the ownerContext's frameInfo (border+framing) so all that is left\nis padding.

\n"},"calculateOwnerWidthFromContentWidth":{"!type":"fn(ownerContext: ?, contentWidth: ?) -> !this"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"}}},"BoundList":{"!doc":"

Component layout for Ext.view.BoundList.

\n","!type":"fn(config: Ext_layout_component_BoundList_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculateOwnerHeightFromContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getLayoutItems":{"!type":"fn() -> !this","!doc":"

Returns the set of items to layout (empty by default).

\n"},"isValidParent":{"!type":"fn() -> !this","!doc":"

Validates item is in the proper place in the dom.

\n"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"}}},"Button":{"!doc":"

Component layout for buttons

\n","!type":"fn(config: Ext_layout_component_Button_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","htmlRE":{"!type":"+RegExp"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"centerInnerEl":{"!type":"fn(ownerContext: ?, btnElHeight: ?) -> !this"},"ieCenterIcon":{"!type":"fn(ownerContext: ?, btnElHeight: ?) -> !this"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"}}},"Component":{"!doc":"

This class is intended to be extended or created via the layout\nconfiguration property. See Ext.Component.componentLayout for additional details.

\n","!type":"fn(config: Ext_layout_component_Component_cfg)","prototype":{"!proto":"Ext.layout.Layout.prototype","isComponentLayout":{"!type":"bool"},"nullBox":{"!type":"?"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"usesContentHeight":{"!type":"bool"},"usesContentWidth":{"!type":"bool"},"usesHeight":{"!type":"bool"},"usesWidth":{"!type":"bool"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"cacheTargetInfo":{"!type":"fn(ownerContext: ?) -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getRenderTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the element into which rendering must take place. Defaults to the owner Component's encapsulating element.

\n\n

May be overridden in Component layout managers which implement an inner element.

\n"},"getTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the owner component's resize element.

\n"},"measureAutoDimensions":{"!type":"fn(ownerContext: ?, dimensions: ?) -> !this"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"measureOwnerHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureOwnerWidth":{"!type":"fn(ownerContext: ?) -> !this"},"notifyOwner":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method (if implemented) is called after all layouts are finished, and all have\na lastComponentSize cached. No further layouts will be run and this method is only\ncalled once per layout run. It is the bookend to beginLayout.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method. This is the catch-all tail method to a layout and so the rules are more\nrelaxed. Even so, for performance reasons, it is best to avoid reading the DOM. If\na read is necessary, consider implementing a finalizeLayout method to do the\nrequired reads.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"}}},"Dock":{"!doc":"

This ComponentLayout handles docking for Panels. It takes care of panels that are\npart of a ContainerLayout that sets this Panel's size and Panels that are part of\nan AutoContainerLayout in which this panel get his height based of the CSS or\nor its content.

\n","!type":"fn(config: Ext_layout_component_Dock_cfg)","prototype":{"!proto":"Ext.layout.component.Component.prototype","borderCollapseMap":{"!type":"?","!doc":"

This object is indexed by a component's baseCls to yield another object which\nis then indexed by the component's ui to produce an array of CSS class names.\nThis array is indexed in the same manner as the noBorderClassTable and indicates\nthe a particular edge of a docked item or the body element is actually \"collapsed\"\nwith the component's outer border.

\n"},"borderWidthProps":{"!type":"?"},"horizontalCollapsePolicy":{"!type":"?"},"horzAxisProps":{"!type":"?"},"initializedBorders":{"!type":"?"},"noBorderClasses":{"!type":"[?]"},"noBorderClassesSides":{"!type":"?"},"sizePolicy":{"!type":"?"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"vertAxisProps":{"!type":"?"},"verticalCollapsePolicy":{"!type":"?"},"afterInvalidateShrinkWrapDock":{"!type":"fn(itemContext: ?, options: ?) -> !this"},"afterRemove":{"!type":"fn(item: ?) -> !this","!doc":"

Removes layout's itemCls and owning Container's itemCls.\nClears the managed dimensions flags

\n"},"beforeInvalidateShrinkWrapDock":{"!type":"fn(itemContext: ?, options: ?) -> !this"},"beforeLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"configureItem":{"!type":"fn(item: +Ext.Component) -> !this","!doc":"

We are overriding the Ext.layout.Layout configureItem method to also add a class that\nindicates the position of the docked item. We use the itemCls (x-docked) as a prefix.\nAn example of a class added to a dock: right item is x-docked-right

\n"},"createAxis":{"!type":"fn(ownerContext: ?, contentSize: ?, sizeModel: ?, axisProps: ?, collapsedAxis: ?) -> !this","!doc":"

Creates an axis object given the particulars. The process starts by placing the\ndockedItems in an idealized box where this method is called once for each side.\nThe ideal box is defined by the CSS3 border and padding values (which account for\nthe influence of border-radius). The origin (the (0,0) point) of the ideal box is\nthe top-left edge of the border or the border-box. Normal dockedItems are placed\ninside this box at an offset to clear the border and padding and sit properly in\nthe panel next to the body.

\n\n

The origin has to be started differently if the axis is in shrinkWrap mode. When\nshrink-wrapping an axis, the axis starts at the edge of the body and expands\noutwards as items are docked. This means the ideal (0,0) for shrinkWrap is on the\ntop-left corner of the body.

\n\n

The following diagram illustrates this using the vertical axis.

\n\n
 +---------------------------+ 10px (border)\n |                           |\n |  xxxxxxxxxxxxxxxxxxxxxxx  | 5px (padding)   shrinkWrap    other\n |  +=====================+  |                   -50         15\n |  |  Header             |  | 30px\n |  |                     |  |\n |  +=====================+  |\n |  +---------------------+  |                   -20         45\n |  |  tbar               |  | 20 px\n |  +---------------------+  |\n |  +---------------------+  |                   0           65\n |  |  Body               |  | 100px\n |  |                     |  |\n |  |                     |  |\n |  +---------------------+  |\n |  +---------------------+  |                   100         165\n |  |  bbar               |  | 15px\n |  +---------------------+  |\n |  xxxxxxxxxxxxxxxxxxxxxxx  | 5px\n |                           |\n +---------------------------+ 10px\n
\n\n

These are sufficient to determine sizes of things, but to finalize this process\nand assign proper positions, the tentative coordinates have to be adjusted by an\namount appropriate for the item. Because dockedItems are position:absolute, they\nsit inside the border and so must be adjusted for padding. The body is different\nbecause it is position:relative and so it naturally sits inside the padding and\nthe padding must not be included in its position.

\n\n

Headers and footers that use ignoreParentFrame interact with this process by\nmoving themselves outside the border and padding. So in the above diagram, the\nHeader would move up by 15px and everything else would move up by 10px. When\nshrinkWrap is taking place, the 10px of border on the top is removed from the\nheight as well.

\n\n

The bbar behaves slightly different when it is ignoreParentFrame. In shrinkWrap\nmode, it alone would move down by the padding and the bottom border would not be\nincluded in the height. Otherwise, the bbar would be moved down 15px (since the\nedge is fixed) and the next dockedItem would be placed at, or the body would be\nstretched down to, 5px (padding) pixels above the bbar.

\n"},"dockChild":{"!type":"fn(ownerContext: ?, axis: ?, backward: ?, forward: ?) -> !this","!doc":"

Docks a child item on the specified axis. This boils down to determining if the item\nis docked at the \"beginning\" of the axis (\"left\" if horizontal, \"top\" if vertical),\nthe \"end\" of the axis (\"right\" if horizontal, \"bottom\" if vertical) or stretches\nalong the axis (\"top\" or \"bottom\" if horizontal, \"left\" or \"right\" if vertical). It\nalso has to differentiate between fixed and shrinkWrap sized dimensions.

\n"},"dockInwardBegin":{"!type":"fn(ownerContext: ?, itemContext: ?, item: ?, axis: ?) -> !this","!doc":"

Docks an item on a fixed-size axis at the \"beginning\". The \"beginning\" of the horizontal\naxis is \"left\" and the vertical is \"top\". For a fixed-size axis, the size works from\nthe outer element (the panel) towards the body.

\n"},"dockInwardEnd":{"!type":"fn(ownerContext: ?, itemContext: ?, item: ?, axis: ?) -> !this","!doc":"

Docks an item on a fixed-size axis at the \"end\". The \"end\" of the horizontal axis is\n\"right\" and the vertical is \"bottom\".

\n"},"dockOutwardBegin":{"!type":"fn(ownerContext: ?, itemContext: ?, item: ?, axis: ?) -> !this","!doc":"

Docks an item on a shrinkWrap axis at the \"beginning\". The \"beginning\" of the horizontal\naxis is \"left\" and the vertical is \"top\". For a shrinkWrap axis, the size works from\nthe body outward to the outermost element (the panel).

\n\n

During the docking process, coordinates are allowed to be negative. We start with the\nbody at (0,0) so items docked \"top\" or \"left\" will simply be assigned negative x/y. In\nthe finishPositions method these are corrected and framing is added. This way\nthe correction is applied as a simple translation of delta x/y on all coordinates to\nbring the origin back to (0,0).

\n"},"dockOutwardEnd":{"!type":"fn(ownerContext: ?, itemContext: ?, item: ?, axis: ?) -> !this","!doc":"

Docks an item on a shrinkWrap axis at the \"end\". The \"end\" of the horizontal axis is\n\"right\" and the vertical is \"bottom\".

\n"},"dockStretch":{"!type":"fn(ownerContext: ?, itemContext: ?, item: ?, axis: ?) -> !this","!doc":"

Docks an item that might stretch across an axis. This is done for dock \"top\" and\n\"bottom\" items on the horizontal axis and dock \"left\" and \"right\" on the vertical.

\n"},"finishAxis":{"!type":"fn(ownerContext: ?, axis: ?) -> !this","!doc":"

Finishes the calculation of an axis by determining its size. In non-shrink-wrap\ncases, this is also where we set the body size.

\n"},"finishConstraints":{"!type":"fn(ownerContext: ?, horz: ?, vert: ?) -> !this","!doc":"

Finishes processing of each axis by applying the min/max size constraints.

\n"},"finishPositions":{"!type":"fn(ownerContext: ?, horz: ?, vert: ?) -> !this","!doc":"

Finishes the calculation by setting positions on the body and all of the items.

\n"},"finishRender":{"!type":"fn() -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getAnimatePolicy":{"!type":"fn(ownerContext: ?) -> !this"},"getBorderCollapseTable":{"!type":"fn() -> !this","!doc":"

Returns the array of class names to add to a docked item or body element when for\nthe edges that should collapse with the outer component border. Basically, the\npanel's outer border must look visually like a contiguous border but may need to\nbe realized by using the border of docked items and/or the body. This class name\nallows the border color and width to be controlled accordingly and distinctly from\nthe border of the docked item or body element when it is not having its border\ncollapsed.

\n"},"getDockCls":{"!type":"fn(dock: string) -> string","!doc":"

Get's the css class name for a given dock position.

\n"},"getDockedItems":{"!type":"fn(order?: string, beforeBody?: bool) -> [+Ext.Component]","!doc":"

Retrieve an ordered and/or filtered array of all docked Components.

\n"},"getItemSizePolicy":{"!type":"fn(item: ?, ownerSizeModel: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"getItemWeight":{"!type":"fn(item: ?, order: ?) -> !this"},"getLayoutItems":{"!type":"fn() -> [?]","!doc":"

Returns an array containing all the visible docked items inside this layout's owner Panel

\n"},"handleItemBorders":{"!type":"fn() -> !this"},"invalidateAxes":{"!type":"fn(ownerContext: ?, horz: ?, vert: ?) -> !this","!doc":"

The default weighting of docked items produces this arrangement:

\n\n
 +--------------------------------------------+\n |                    Top 1                   |\n +--------------------------------------------+\n |                    Top 2                   |\n +-----+-----+--------------------+-----+-----+\n |     |     |                    |     |     |\n |     |     |                    |     |     |\n |     |     |                    |  R  |  R  |\n |  L  |  L  |                    |  I  |  I  |\n |  E  |  E  |                    |  G  |  G  |\n |  F  |  F  |                    |  H  |  H  |\n |  T  |  T  |                    |  T  |  T  |\n |     |     |                    |     |     |\n |  2  |  1  |                    |  1  |  2  |\n |     |     |                    |     |     |\n |     |     |                    |     |     |\n +-----+-----+--------------------+-----+-----+\n |                  Bottom 1                  |\n +--------------------------------------------+\n |                  Bottom 2                  |\n +--------------------------------------------+\n
\n\n

So when we are shrinkWrapDock on the horizontal, the stretch size for top/bottom\ndocked items is the final axis size. For the vertical axis, however, the stretch

\n"},"isItemBoxParent":{"!type":"fn(itemContext: ?) -> !this"},"isItemShrinkWrap":{"!type":"fn(item: ?) -> !this"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Content size includes padding but not borders, so subtract them off

\n"},"redoLayout":{"!type":"fn(ownerContext: ?) -> !this"},"renderChildren":{"!type":"fn() -> !this","!doc":"

override inherited.\nWe need to render in the correct order, top/left before bottom/right

\n"},"renderItems":{"!type":"fn(items: ?, target: ?) -> !this","!doc":"

Render the top and left docked items before any existing DOM nodes in our render target,\nand then render the right and bottom docked items after. This is important, for such things\nas tab stops and ARIA readers, that the DOM nodes are in a meaningful order.\nOur collection of docked items will already be ordered via Panel.getDockedItems().

\n"},"undoLayout":{"!type":"fn(ownerContext: ?) -> !this"}}},"Draw":{"!type":"fn(config: Ext_layout_component_Draw_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","setHeightInDom":{"!type":"bool","!doc":"

When publishing height of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"setWidthInDom":{"!type":"bool","!doc":"

When publishing width of an auto Component, it is usually not written to the DOM.\nSetting this to true overrides this behaviour.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getBBox":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"}}},"FieldSet":{"!doc":"

Component layout for Ext.form.FieldSet components

\n","!type":"fn(config: Ext_layout_component_FieldSet_cfg)","prototype":{"!proto":"Ext.layout.component.Body.prototype","defaultCollapsedWidth":{"!type":"number"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"beforeLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculateOwnerHeightFromContentHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this","!doc":"

Padding is exciting here because we have 2 el's: owner.el and owner.body. Content\nsize always includes the padding of the targetEl, which should be owner.body. But\nit is common to have padding on owner.el also (such as a panel header), so we need\nto do some more padding work if targetContext is not owner.el. The base class has\nalready handled the ownerContext's frameInfo (border+framing) so all that is left\nis padding.

\n"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getLayoutItems":{"!type":"fn() -> !this","!doc":"

Returns the set of items to layout (empty by default).

\n"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"}}},"ProgressBar":{"!type":"fn(config: Ext_layout_component_ProgressBar_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"}}},"field":{"ComboBox":{"!doc":"

Layout class for Ext.form.field.ComboBox fields. Handles sizing the input field.

\n","!type":"fn(config: Ext_layout_component_field_ComboBox_cfg)","prototype":{"!proto":"Ext.layout.component.field.Trigger.prototype","startingWidth":{"!type":"?"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"getTextWidth":{"!type":"fn() -> !this"}}},"Field":{"!doc":"

Layout class for components with field labeling, handling the sizing and alignment of\nthe form control, label, and error message treatment.

\n","!type":"fn(config: Ext_layout_component_field_Field_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","elementId":{"!type":"?","!doc":"

Error message displayed as content of an element with a given id elsewhere in the app

\n"},"errorStrategies":{"!type":"?","!doc":"

Collection of named strategies for laying out and adjusting insets to accommodate error messages.\nAn appropriate one will be chosen based on the owner field's Ext.form.Labelable.msgTarget config.

\n"},"labelStrategies":{"!type":"?","!doc":"

Collection of named strategies for laying out and adjusting labels to accommodate error messages.\nAn appropriate one will be chosen based on the owner field's Ext.form.Labelable.labelAlign config.

\n"},"left":{"!type":"?","!doc":"

Label displayed to the left of the bodyEl

\n"},"naturalSizingProp":{"!type":"string"},"qtip":{"!type":"?","!doc":"

Error displayed as QuickTip on hover of the field container

\n"},"right":{"!type":"?","!doc":"

Same as left, only difference is text-align in CSS

\n"},"side":{"!type":"?","!doc":"

Error displayed as icon (with QuickTip on hover) to right of the bodyEl

\n"},"title":{"!type":"?","!doc":"

Error displayed as title tip on hover of the field container

\n"},"top":{"!type":"?","!doc":"

Label displayed above the bodyEl

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"under":{"!type":"?","!doc":"

Error message displayed underneath the bodyEl

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutFixed":{"!type":"fn(ownerContext: ?, width: ?, suffix: ?) -> !this"},"beginLayoutShrinkWrap":{"!type":"fn(ownerContext: ?) -> !this"},"calculateOwnerHeightFromContentHeight":{"!type":"fn(ownerContext: ?, contentHeight: ?) -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getErrorStrategy":{"!type":"fn() -> !this","!doc":"

Return the set of strategy functions from the errorStrategies collection\nthat is appropriate for the field's msgTarget config.

\n"},"getLabelStrategy":{"!type":"fn() -> !this","!doc":"

Return the set of strategy functions from the labelStrategies collection\nthat is appropriate for the field's labelAlign config.

\n"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"measureLabelErrorHeight":{"!type":"fn(ownerContext: ?) -> !this"},"onFocus":{"!type":"fn() -> !this"}},"destroyTip":{"!type":"fn() -> !this","!doc":"

Destroy the error tip instance.

\n"},"initTip":{"!type":"fn() -> !this","!doc":"

Use a custom QuickTip instance separate from the main QuickTips singleton, so that we\ncan give it a custom frame style. Responds to errorqtip rather than the qtip property.

\n"}},"FieldContainer":{"!type":"fn(config: Ext_layout_component_field_FieldContainer_cfg)","prototype":{"!proto":"Ext.layout.component.field.Field.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"waitForOuterHeightInDom":{"!type":"bool"},"waitForOuterWidthInDom":{"!type":"bool"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"}}},"HtmlEditor":{"!doc":"

Layout class for Ext.form.field.HtmlEditor fields. Sizes textarea and iframe elements.

\n","!type":"fn(config: Ext_layout_component_field_HtmlEditor_cfg)","prototype":{"!proto":"Ext.layout.component.field.FieldContainer.prototype","naturalHeight":{"!type":"number"},"naturalWidth":{"!type":"number"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"finishedLayout":{"!type":"fn() -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this","!doc":"

The offsets for the text area are needed for bugs in sizing with IE.\nThe main issue behind it is that the iframe requires an initial height\nto be set while the component is auto sizing, however we need to switch\nit when using a configured size. A more permanent solution might be to\nhave the iframe and text area be child components of the container\nas opposed to being directly inserted into the DOM.

\n"},"publishOwnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"}}},"Slider":{"!type":"fn(config: Ext_layout_component_field_Slider_cfg)","prototype":{"!proto":"Ext.layout.component.field.Field.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutFixed":{"!type":"fn(ownerContext: ?, width: ?, suffix: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"},"publishInnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"}}},"Text":{"!doc":"

Layout class for Ext.form.field.Text fields. Handles sizing the input field.

\n","!type":"fn(config: Ext_layout_component_field_Text_cfg)","prototype":{"!proto":"Ext.layout.component.field.Field.prototype","canGrowWidth":{"!type":"bool"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"adjustIEInputPadding":{"!type":"fn(ownerContext: ?) -> !this"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutFixed":{"!type":"fn(ownerContext: ?, width: ?, suffix: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"}}},"TextArea":{"!doc":"

Layout class for Ext.form.field.TextArea fields. Handles sizing the textarea field.

\n","!type":"fn(config: Ext_layout_component_field_TextArea_cfg)","prototype":{"!proto":"Ext.layout.component.field.Text.prototype","canGrowWidth":{"!type":"bool"},"naturalSizingProp":{"!type":"string"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"}}},"Trigger":{"!doc":"

Layout class for Ext.form.field.Trigger fields. Adjusts the input field size to accommodate\nthe trigger button(s).

\n","!type":"fn(config: Ext_layout_component_field_Trigger_cfg)","prototype":{"!proto":"Ext.layout.component.field.Field.prototype","borderWidths":{"!type":"?","!doc":"

Private. Cached extra width values containing width of all a trigger field's \"furniture\" round the actual input element

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"adjustIEInputPadding":{"!type":"fn(ownerContext: ?) -> !this"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"beginLayoutFixed":{"!type":"fn(ownerContext: ?, width: ?, suffix: ?) -> !this"},"beginLayoutShrinkWrap":{"!type":"fn(ownerContext: ?) -> !this"},"getExtraWidth":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Returns the width of the \"extras\" around the input field. This includes the total width\nof all the triggers in the field and any outer bordering.

\n\n

This measurement is used when explicitly sizing the contained input field to a smaller inner\nwidth while keeping the outer component width the same. This extra width is subtracted from the\ntotal component width to calculate the new width for the input field.

\n"},"getTextWidth":{"!type":"fn() -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"publishInnerHeight":{"!type":"fn(ownerContext: ?, height: ?) -> !this"},"publishOwnerWidth":{"!type":"fn(ownerContext: ?, width: ?) -> !this"},"updateEditState":{"!type":"fn() -> !this"}}}}},"container":{"Absolute":{"!doc":"

This is a layout that inherits the anchoring of Ext.layout.container.Anchor and adds the\nability for x/y positioning using the standard x and y component config options.

\n\n

This class is intended to be extended or created via the layout\nconfiguration property. See Ext.container.Container.layout for additional details.

\n\n
Ext.create('Ext.form.Panel', {\n    title: 'Absolute Layout',\n    width: 300,\n    height: 275,\n    layout: {\n        type: 'absolute'\n        // layout-specific configs go here\n        //itemCls: 'x-abs-layout-item',\n    },\n    url:'save-form.php',\n    defaultType: 'textfield',\n    items: [{\n        x: 10,\n        y: 10,\n        xtype:'label',\n        text: 'Send To:'\n    },{\n        x: 80,\n        y: 10,\n        name: 'to',\n        anchor:'90%'  // anchor width by percentage\n    },{\n        x: 10,\n        y: 40,\n        xtype:'label',\n        text: 'Subject:'\n    },{\n        x: 80,\n        y: 40,\n        name: 'subject',\n        anchor: '90%'  // anchor width by percentage\n    },{\n        x:0,\n        y: 80,\n        xtype: 'textareafield',\n        name: 'msg',\n        anchor: '100% 100%'  // anchor width and height\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Anchor.prototype","ignoreOnContentChange":{"!type":"bool","!doc":"

True indicates that changes to one item in this layout do not effect the layout in\ngeneral. This may need to be set to false if Ext.Component.autoScroll\nis enabled for the container.

\n"},"itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"targetCls":{"!type":"string","!doc":"

End Definitions

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"adjustHeightAnchor":{"!type":"fn(value: ?, childContext: ?) -> !this","!doc":"

private

\n"},"adjustWidthAnchor":{"!type":"fn(value: ?, childContext: ?) -> !this","!doc":"

private

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"calculateContentSize":{"!type":"fn(ownerContext: ?, dimensions: ?) -> !this"},"isItemBoxParent":{"!type":"fn(itemContext: ?) -> !this"},"isItemLayoutRoot":{"!type":"fn(item: ?) -> !this"},"isItemShrinkWrap":{"!type":"fn(item: ?) -> !this"},"onContentChange":{"!type":"fn() -> bool","!doc":"

This method is called when a child item changes in some way. By default this calls\nExt.AbstractComponent.updateLayout on this layout's owner.

\n"}}},"Accordion":{"!doc":"

This is a layout that manages multiple Panels in an expandable accordion style such that by default only\none Panel can be expanded at any given time (set multi config to have more open). Each Panel has\nbuilt-in support for expanding and collapsing.

\n\n

Note: Only Ext Panels and all subclasses of Ext.panel.Panel may be used in an accordion layout Container.

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Accordion Layout',\n    width: 300,\n    height: 300,\n    defaults: {\n        // applied to each contained panel\n        bodyStyle: 'padding:15px'\n    },\n    layout: {\n        // layout-specific configs go here\n        type: 'accordion',\n        titleCollapse: false,\n        animate: true,\n        activeOnTop: true\n    },\n    items: [{\n        title: 'Panel 1',\n        html: 'Panel content!'\n    },{\n        title: 'Panel 2',\n        html: 'Panel content!'\n    },{\n        title: 'Panel 3',\n        html: 'Panel content!'\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.VBox.prototype","activeOnTop":{"!type":"bool","!doc":"

Only valid when multi is false and animate is false.

\n\n

True to swap the position of each panel as it is expanded so that it becomes the first item in the container,\nfalse to keep the panels in the rendered order.

\n"},"align":{"!type":"string","!doc":"

Controls how the child items of the container are aligned. Acceptable configuration values for this property are:

\n\n\n\n"},"animate":{"!type":"bool","!doc":"

True to slide the contained panels open and closed during expand/collapse using animation, false to open and\nclose directly with no animation. Note: The layout performs animated collapsing\nand expanding, not the child Panels.

\n"},"autoWidth":{"!type":"bool","!doc":"

Child Panels have their width actively managed to fit within the accordion's width.

\n"},"collapseFirst":{"!type":"bool","!doc":"

True to make sure the collapse/expand toggle button always renders first (to the left of) any other tools\nin the contained Panels' title bars, false to render it last. By default, this will use the\nExt.panel.Panel.collapseFirst setting on the panel. If the config option is specified on the layout,\nit will override the panel value.

\n"},"fill":{"!type":"bool","!doc":"

True to adjust the active item's height to fill the available space in the container, false to use the\nitem's current height, or auto height if not explicitly set.

\n"},"hideCollapseTool":{"!type":"bool","!doc":"

True to hide the contained Panels' collapse/expand toggle buttons, false to display them.\nWhen set to true, titleCollapse is automatically set to true.

\n"},"itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"multi":{"!type":"bool","!doc":"

Set to true to enable multiple accordion items to be open at once.

\n"},"titleCollapse":{"!type":"bool","!doc":"

True to allow expand/collapse of each contained panel by clicking anywhere on the title bar, false to allow\nexpand/collapse only when the toggle tool button is clicked. When set to false,\nhideCollapseTool should be false also. An explicit Ext.panel.Panel.titleCollapse declared\non the panel will override this setting.

\n"},"defaultAnimatePolicy":{"!type":"?"},"targetCls":{"!type":"string"},"beforeRenderItems":{"!type":"fn(items: ?) -> !this"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"configureItem":{"!type":"fn(item: ?) -> !this","!doc":"

Adds layout's itemCls and owning Container's itemCls

\n"},"getExpanded":{"!type":"fn(explicitCheck: ?) -> !this"},"getItemsRenderTree":{"!type":"fn(items: ?) -> !this","!doc":"
\n"},"onComponentCollapse":{"!type":"fn(comp: ?) -> !this"},"onComponentExpand":{"!type":"fn(toExpand: ?) -> !this","!doc":"

When a Component expands, adjust the heights of the other Components to be just enough to accommodate\ntheir headers.\nThe expanded Component receives the only flex value, and so gets all remaining space.

\n"},"onComponentShow":{"!type":"fn(comp: ?) -> !this"},"renderItems":{"!type":"fn(items: ?, target: ?) -> !this","!doc":"

Iterates over all passed items, ensuring they are rendered. If the items are already rendered,\nalso determines if the items are in the proper place in the dom.

\n"},"updatePanelClasses":{"!type":"fn(ownerContext: ?) -> !this"}}},"Anchor":{"!doc":"

This is a layout that enables anchoring of contained elements relative to the container's dimensions.\nIf the container is resized, all anchored items are automatically rerendered according to their\nanchor rules.

\n\n

This class is intended to be extended or created via the layout: 'anchor'\nconfig, and should generally not need to be created directly via the new keyword.

\n\n

AnchorLayout does not have any direct config options (other than inherited ones). By default,\nAnchorLayout will calculate anchor measurements based on the size of the container itself. However, the\ncontainer using the AnchorLayout can supply an anchoring-specific config property of anchorSize.

\n\n

If anchorSize is specifed, the layout will use it as a virtual container for the purposes of calculating\nanchor measurements based on it instead, allowing the container to be sized independently of the anchoring\nlogic if necessary.

\n\n
Ext.create('Ext.Panel', {\n    width: 500,\n    height: 400,\n    title: \"AnchorLayout Panel\",\n    layout: 'anchor',\n    renderTo: Ext.getBody(),\n    items: [\n        {\n            xtype: 'panel',\n            title: '75% Width and 20% Height',\n            anchor: '75% 20%'\n        },\n        {\n            xtype: 'panel',\n            title: 'Offset -300 Width & -200 Height',\n            anchor: '-300 -200'     \n        },\n        {\n            xtype: 'panel',\n            title: 'Mixed Offset and Percent',\n            anchor: '-250 20%'\n        }\n    ]\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Auto.prototype","anchor":{"!type":"string","!doc":"

This configuation option is to be applied to child items of a container managed by\nthis layout (ie. configured with layout:'anchor').

\n\n

This value is what tells the layout how an item should be anchored to the container. items\nadded to an AnchorLayout accept an anchoring-specific config property of anchor which is a string\ncontaining two values: the horizontal anchor value and the vertical anchor value (for example, '100% 50%').\nThe following types of anchor values are supported:

\n\n\n\n"},"defaultAnchor":{"!type":"string","!doc":"

Default anchor for all child container items applied if no anchor or specific width is set on the child item.

\n"},"anchorFactory":{"!type":"?","!doc":"

private

\n"},"manageOverflow":{"!type":"bool","!doc":"

true to rerun the layout if scrollbars are needed.

\n"},"parseAnchorRE":{"!type":"+RegExp"},"sizePolicy":{"!type":"?"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"adjustHeightAnchor":{"!type":"fn(value: ?, childContext: ?) -> !this","!doc":"

private

\n"},"adjustWidthAnchor":{"!type":"fn(value: ?, childContext: ?) -> !this","!doc":"

private

\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculateItems":{"!type":"fn(ownerContext: ?, containerSize: ?) -> !this"},"configureItem":{"!type":"fn(item: ?) -> !this","!doc":"

Adds layout's itemCls and owning Container's itemCls

\n"},"getItemSizePolicy":{"!type":"fn(item: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"parseAnchor":{"!type":"fn(a: ?, start: ?, cstart: ?) -> !this"},"sanityCheck":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

\n"}}},"Auto":{"!doc":"

The AutoLayout is the default layout manager delegated by Ext.container.Container to\nrender any child Components when no layout is configured into\na Container. AutoLayout provides only a passthrough of any layout calls\nto any child containers.

\n\n
Ext.create('Ext.Panel', {\n    width: 500,\n    height: 280,\n    title: \"AutoLayout Panel\",\n    layout: 'auto',\n    renderTo: document.body,\n    items: [{\n        xtype: 'panel',\n        title: 'Top Inner Panel',\n        width: '75%',\n        height: 90\n    },\n    {\n        xtype: 'panel',\n        title: 'Bottom Inner Panel',\n        width: '75%',\n        height: 90\n    }]\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","reserveScrollbar":{"!type":"bool","!doc":"

Set to true to leave space for a vertical scrollbar (if the OS shows space-consuming scrollbars) regardless\nof whether a scrollbar is needed.

\n\n

This is useful if content height changes during application usage, but you do not want the calculated width\nof child items to change when a scrollbar appears or disappears. The scrollbar will appear in the reserved space,\nand the calculated width of child Components will not change.

\n\n
Ext.define('Employee', {\n    extend: 'Ext.data.Model',\n    fields: [\n       {name: 'rating', type: 'int'},\n       {name: 'salary', type: 'float'},\n       {name: 'name'}\n    ]\n});\n\nfunction createFakeData(count) {\n    var firstNames   = ['Ed', 'Tommy', 'Aaron', 'Abe', 'Jamie', 'Adam', 'Dave', 'David', 'Jay', 'Nicolas', 'Nige'],\n        lastNames    = ['Spencer', 'Maintz', 'Conran', 'Elias', 'Avins', 'Mishcon', 'Kaneda', 'Davis', 'Robinson', 'Ferrero', 'White'],\n        ratings      = [1, 2, 3, 4, 5],\n        salaries     = [100, 400, 900, 1500, 1000000];\n\n    var data = [];\n    for (var i = 0; i < (count || 25); i++) {\n        var ratingId    = Math.floor(Math.random() * ratings.length),\n            salaryId    = Math.floor(Math.random() * salaries.length),\n            firstNameId = Math.floor(Math.random() * firstNames.length),\n            lastNameId  = Math.floor(Math.random() * lastNames.length),\n\n            rating      = ratings[ratingId],\n            salary      = salaries[salaryId],\n            name        = Ext.String.format(\"{0} {1}\", firstNames[firstNameId], lastNames[lastNameId]);\n\n        data.push({\n            rating: rating,\n            salary: salary,\n            name: name\n        });\n    }\n    store.loadData(data);\n}\n\n// create the Data Store\nvar store = Ext.create('Ext.data.Store', {\n    id: 'store',\n    model: 'Employee',\n    proxy: {\n        type: 'memory'\n    }\n});\ncreateFakeData(10);\n\nvar grid = Ext.create('Ext.grid.Panel', {\n    title: 'Grid loaded with varying number of records',\n    anchor: '100%',\n    store: store,\n    columns: [{\n        xtype: 'rownumberer',\n        width: 40,\n        sortable: false\n    },{\n        text: 'Name',\n        flex: 1,\n        sortable: true,\n        dataIndex: 'name'\n    },{\n        text: 'Rating',\n        width: 125,\n        sortable: true,\n        dataIndex: 'rating'\n    },{\n        text: 'Salary',\n        width: 125,\n        sortable: true,\n        dataIndex: 'salary',\n        align: 'right',\n        renderer: Ext.util.Format.usMoney\n    }]\n});\n\nExt.create('Ext.panel.Panel', {\n    renderTo: document.body,\n    width: 800,\n    height: 600,\n    layout: {\n        type: 'anchor',\n        reserveScrollbar: true // There will be a gap even when there's no scrollbar\n    },\n    autoScroll: true,\n    items: grid,\n    tbar: {\n        defaults: {\n            handler: function(b) {\n                createFakeData(b.count);\n            }\n        },\n        items: [{\n             text: '10 Items',\n             count: 10\n        },{\n             text: '100 Items',\n             count: 100\n        },{\n             text: '300 Items',\n             count: 300\n        },{\n             text: '1000 Items',\n             count: 1000\n        },{\n             text: '5000 Items',\n             count: 5000\n        }]\n    }\n});\n
\n"},"childEls":{"!type":"[?]"},"isShrinkWrapTpl":{"!type":"bool"},"lastOverflowAdjust":{"!type":"?","!doc":"

Begin with no previous adjustments

\n"},"manageOverflow":{"!type":"bool","!doc":"

true to rerun the layout if scrollbars are needed.

\n"},"managePadding":{"!type":"bool","!doc":"

indicates that this layout will correct cross browser padding differences when the\ncontainer has overflow.

\n\n

In some browsers the right and/or bottom padding of a container is lost when\nthe container has overflow. If managePadding is true the layout will apply the\npadding to an inner wrapping element instead of the container element that has the\noverflow so that paddding will be included in the scrollable area.\nNote: padding will not be managed if it is configured on the container using\na style config or css class. In order to be managed, padding must be added to the\ncontainer using the appropriate contentPaddingProperty. For Panels use\nExt.panel.AbstractPanel.bodyPadding, and for\nContainers, use\npadding

\n"},"renderTpl":{"!type":"?","!doc":"

Auto layout's renderTpl wraps the content in an outerCt which is used to accomplish\nthe following 3 goals:

\n\n
    \n
  1. When the container has a shrink wrapped width and/or height, the outerCt is used\nto measure the size of the content.
  2. \n
  3. When the container has overflow some browsers lose the container's right and/or\nbottom padding. To fix this, the padding is rendered to the outerCt instead of\nthe container target element. This ensures that the padding is included in the\ncontainer's scrollWidth/scrollHeight. In Old IE when a table is used, the padding\nis rendered to the innerCt td element.
  4. \n
  5. The outerCt contains the margins of its children, that is to say, it prevents\nthem from collapsing.
  6. \n
\n\n"},"tableTpl":{"!type":"?","!doc":"

This template is used for dynamically inserting a table outerCt/innerCt when needed.\nIt should be identical to the table template defined in renderTpl except that it\ndoes not have renderBody or clearEl. It is an empty shell so that the contents\nof an already existing innerCt can be moved into it.

\n"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"beforeLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"calculateContentSize":{"!type":"fn(ownerContext: ?) -> !this"},"calculateOverflow":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> !this","!doc":"

Handles overflow processing for a container. In addition to the ownerContext\npassed to the calculate method, this method also needs the containerSize\n(the object returned by getContainerSize).

\n"},"completeLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method (if implemented) is called at the end of the cycle in which this layout\ncompletes (by not setting done to false in calculate). It is\npossible for the layout to complete and yet become invalid before the end of the cycle,\nin which case, this method will not be called. It is also possible for this method to\nbe called and then later the layout becomes invalidated. This will result in\ncalculate being called again, followed by another call to this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"doRenderPadding":{"!type":"fn(out: ?, renderData: ?) -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getContainerSize":{"!type":"fn(ownerContext: +Ext.layout.ContextItem, inDom?: bool) -> ?","!doc":"

Returns the container size (that of the target). Only the fixed-sized dimensions can\nbe returned because the shrinkWrap dimensions are based on the contentWidth/Height\nas determined by the container layout.

\n\n

If the calculateOverflow method is used and if manageOverflow is\ntrue, this will adjust the width/height by the size of scrollbars.

\n"},"getContentTarget":{"!type":"fn() -> !this"},"getElementTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Overridden method from Ext.layout.container.Container.\nUsed by Container classes to insert special DOM elements which must exist in addition to the child components

\n"},"getOverflowXStyle":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> string","!doc":"

Returns the overflow-x style of the render target.\nNote: If overflow is configured on a container using style or css class this method\nwill read the dom the first time it is called. It is therefore preferable for\nperformance reasons to use the autoScroll or overflowX config when horizontal\noverflow is desired.

\n"},"getOverflowYStyle":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> string","!doc":"

Returns the overflow-y style of the render target.\nNote: If overflow is configured on a container using style or css class this method\nwill read the dom the first time it is called. It is therefore preferable for\nperformance reasons to use the autoScroll or overflowY config when vertical\noverflow is desired.

\n"},"getRenderData":{"!type":"fn() -> !this"},"getRenderTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Overridden method from Ext.layout.container.Container.\nUsed in the beforeLayout method to render all items into.

\n"},"initContextItems":{"!type":"fn(ownerContext: ?) -> !this"},"initLayout":{"!type":"fn() -> !this","!doc":"

A one-time initialization method called just before rendering.

\n"},"insertTableCt":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In some cases a table-based outerCt/innerCt is required in old IE (see renderTpl).\nMost of the time this is determined at render time, however its possible that\nwe made the wrong determination at render time and now that the layout is in\nprogress we need a table. If so, this method should be called to replace the\nexisting outerCt with a new table outerCt, and move the child elements to the new\ninnerCt.

\n"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"measureContentWidth":{"!type":"fn(ownerContext: ?) -> !this"},"setCtSizeIfNeeded":{"!type":"fn(ownerContext: +Ext.layout.ContextItem, containerSize: ?) -> !this","!doc":"

This method sets the height and/or width of the outerCt/innerCt to adjust for the\nfollowing browser-specific issues:

\n\n
    \n
  1. In IE6 and 7 strict if we are using the shrink wrap template, and the outerCt\nhas a 100% width (because the container is not shrink wrapping width currently),\nand the target element has a vertical scrollbar, the browser disregards the\nscrollbar when sizing the width of the outerCt. This can result in the target\nelement gaining a horizontal scrollbar. We fix this issue by setting a pixel\nwidth on the outerCt

  2. \n
  3. In IE quirks when using the \"non shrink wrap\" template, a long non-breaking word\ncan cause the outerCt's width to expand beyond the width of its container. This\nbehavior is desired if the container has the potential for horizontal overflow,\nbut can cause text to be hidden if the container's overflow is hidden. To prevent\nthis from happening we give the outerCt a fixed width in IE quirks when the\ncontainer does not have horizontal overflow.

  4. \n
  5. In some browsers a percentage-height element ignores the horizontal scrollbar\nof its parent (see Ext.supports.PercentageHeightOverflowBug). If the browser is\naffected by this bug the outerCt needs a pixel height in order to support\npercentage-height children when not shrink-wrapping height. If the browser is not\naffected by this bug, a height of 100% is assigned to the outerCt (see\nbeginLayoutCycle).

  6. \n
  7. In IE6/7 strict when using the \"shrink wrap\" template, percentage heights on\nchildren do not work unless the innerCt td has a height set. We can't use height\n100% on the innerCt because conent-box sizing will cause any top/bottom padding to\nbe added to the height. The solution is to set a pixel height on the innerCt.

  8. \n
  9. IE8 strict mode has a bug with percentage height children. if the innerCt has\na height of 100%, has padding, and has a child item with a percentage height, that\nchild item will be sized as a percentage of the parent's height plus padding height.\nIn other words, a child with height:50% would have its height caclulated thusly:\n(parentHeight + parentPaddingHeight) * 0.5\nTo fix this, we have to give the innerCt a pixel height.

  10. \n
  11. In IE7 strict if we're using the \"non shrink wrap\" template, and the target\nelement has overflow-y:auto, the outerCt reserves space for the target element's\nvertical scrollbar even when there is no vertical scrollbar. This is fixed by\nsetting the targetEl's overflow property to \"hidden\" and then back to \"auto\".

  12. \n
\n\n"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"}}},"Border":{"!doc":"

This is a multi-pane, application-oriented UI layout style that supports multiple nested panels, automatic bars\nbetween regions and built-in expanding and collapsing of regions.

\n\n

This class is intended to be extended or created via the layout:'border' Ext.container.Container.layout\nconfig, and should generally not need to be created directly via the new keyword.

\n\n
Ext.create('Ext.panel.Panel', {\n    width: 500,\n    height: 300,\n    title: 'Border Layout',\n    layout: 'border',\n    items: [{\n        title: 'South Region is resizable',\n        region: 'south',     // position for region\n        xtype: 'panel',\n        height: 100,\n        split: true,         // enable resizing\n        margins: '0 5 5 5'\n    },{\n        // xtype: 'panel' implied by default\n        title: 'West Region is collapsible',\n        region:'west',\n        xtype: 'panel',\n        margins: '5 0 0 5',\n        width: 200,\n        collapsible: true,   // make collapsible\n        id: 'west-region-container',\n        layout: 'fit'\n    },{\n        title: 'Center Region',\n        region: 'center',     // center region is required, no width/height specified\n        xtype: 'panel',\n        layout: 'fit',\n        margins: '5 5 0 0'\n    }],\n    renderTo: Ext.getBody()\n});\n
\n\n

Notes

\n\n\n\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"padding":{"!type":"number|string|?","!doc":"

Sets the padding to be applied to all child items managed by this layout.

\n\n

This property can be specified as a string containing space-separated, numeric\npadding values. The order of the sides associated with each value matches the way\nCSS processes padding values:

\n\n\n\n"},"regionWeights":{"!type":"?","!doc":"

The default weights to assign to regions in the border layout. These values are\nused when a region does not contain a weight property. This object must have\nproperties for all regions (\"north\", \"south\", \"east\" and \"west\").

\n\n

IMPORTANT: Since this is an object, changing its properties will impact ALL\ninstances of Border layout. If this is not desired, provide a replacement object as\na config option instead:

\n\n
 layout: {\n     type: 'border',\n     regionWeights: {\n         west: 20,\n         north: 10,\n         south: -10,\n         east: -20\n     }\n }\n
\n\n

The region with the highest weight is assigned space from the border before other\nregions. Regions of equal weight are assigned space based on their position in the\nowner's items list (first come, first served).

\n"},"split":{"!type":"bool","!doc":"

This configuration option is to be applied to the child items managed by this layout.\nEach region with split:true will get a Splitter that\nallows for manual resizing of the container. Except for the center region.

\n"},"splitterResize":{"!type":"bool","!doc":"

This configuration option is to be applied to the child items managed by this layout and\nis used in conjunction with split. By default, when specifying split, the region\ncan be dragged to be resized. Set this option to false to show the split bar but prevent resizing.

\n"},"axisProps":{"!type":"?","!doc":"

Reused meta-data objects that describe axis properties.

\n"},"centerRegion":{"!type":"?"},"horzMarginProp":{"!type":"string"},"isBorderLayout":{"!type":"bool"},"manageMargins":{"!type":"bool"},"padNotOnContainerProp":{"!type":"string"},"padOnContainerProp":{"!type":"string"},"panelCollapseAnimate":{"!type":"bool"},"panelCollapseMode":{"!type":"string"},"percentageRe":{"!type":"+RegExp"},"regionFlags":{"!type":"?","!doc":"

Flags and configs that get set of regions based on their region property.

\n"},"regionMeta":{"!type":"?","!doc":"
\n\n

Misc

\n"},"sizePolicies":{"!type":"?"},"targetCls":{"!type":"string"},"touchedRegions":{"!type":"?","!doc":"

Lists the regions that would consider an interior region a neighbor. For example,\na north region would consider an east or west region its neighbords (as well as\nan inner north region).

\n"},"type":{"!type":"string"},"beginAxis":{"!type":"fn(ownerContext: ?, regions: ?, name: ?) -> !this","!doc":"

Creates the axis objects for the layout. These are only missing size information\nwhich is added during calculate.

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"calculateChildAxis":{"!type":"fn(childContext: ?, axis: ?) -> !this","!doc":"

Performs the calculations for a region on a specified axis.

\n"},"finishAxis":{"!type":"fn(ownerContext: ?, axis: ?) -> !this","!doc":"

Finishes the calculations on an axis. This basically just assigns the remaining\nspace to the center region.

\n"},"finishPositions":{"!type":"fn(childItems: ?) -> !this","!doc":"

Finishes by setting the positions on the child items.

\n"},"getItemSizePolicy":{"!type":"fn(item: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"getLayoutItems":{"!type":"fn() -> [+Ext.Component]","!doc":"

Returns an array of child components either for a render phase (Performed in the beforeLayout\nmethod of the layout's base class), or the layout phase (onLayout).

\n"},"getPlaceholder":{"!type":"fn(comp: ?) -> !this"},"getSplitterTarget":{"!type":"fn(splitter: ?) -> !this"},"insertSplitter":{"!type":"fn(item: ?, index: ?, hidden: ?, splitterCfg: ?) -> !this","!doc":"

Inserts the splitter for a given region. A reference to the splitter is also stored\non the component as \"splitter\".

\n"},"isItemBoxParent":{"!type":"fn(itemContext: ?) -> !this"},"isItemShrinkWrap":{"!type":"fn(item: ?) -> !this"},"onAdd":{"!type":"fn(item: ?, index: ?) -> !this","!doc":"

Called when a region (actually when any component) is added to the container. The\nregion is decorated with some helpful properties (isCenter, isHorz, isVert) and its\nsplitter is added if its \"split\" property is true.

\n"},"onDestroy":{"!type":"fn() -> !this"},"onRemove":{"!type":"fn(item: ?) -> !this"},"setupSplitterNeighbors":{"!type":"fn(items: ?) -> !this"}}},"Box":{"!doc":"

Base Class for HBoxLayout and VBoxLayout Classes. Generally it should not need to be used directly.

\n","!type":"fn(config: Ext_layout_container_Box_cfg)","prototype":{"!proto":"Ext.layout.container.Container.prototype","defaultMargins":{"!type":"?","!doc":"

If the individual contained items do not have a margins property specified or margin specified via CSS, the\ndefault margins from this property will be applied to each item.

\n\n

This property may be specified as an object containing margins to apply in the format:

\n\n
{\n    top: (top margin),\n    right: (right margin),\n    bottom: (bottom margin),\n    left: (left margin)\n}\n
\n\n

This property may also be specified as a string containing space-separated, numeric margin values. The order of\nthe sides associated with each value matches the way CSS processes margin values:

\n\n\n\n"},"flex":{"!type":"number","!doc":"

This configuration option is to be applied to child items of the container managed by this layout. Each child\nitem with a flex property will be flexed (horizontally in hbox, vertically in vbox) according to each item's\nrelative flex value compared to the sum of all items with a flex value specified. Any child items that have\neither a flex = 0 or flex = undefined will not be 'flexed' (the initial size will not be changed).

\n"},"itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"pack":{"!type":"string","!doc":"

Controls how the child items of the container are packed together. Acceptable configuration values for this\nproperty are:

\n\n\n\n"},"padding":{"!type":"string","!doc":"

Sets the padding to be applied to all child items managed by this layout.

\n\n

This property must be specified as a string containing space-separated, numeric padding values. The order of the\nsides associated with each value matches the way CSS processes padding values:

\n\n\n\n"},"stretchMaxPartner":{"!type":"string|+Ext.Component","!doc":"

Allows stretchMax calculation to take into account the max perpendicular size (height for HBox layout and width\nfor VBox layout) of another Box layout when calculating its maximum perpendicular child size.

\n\n

If specified as a string, this may be either a known Container ID, or a ComponentQuery selector which is rooted\nat this layout's Container (ie, to find a sibling, use \"^>#siblingItemId).

\n"},"_percentageRe":{"!type":"+RegExp","!doc":"

Matches: <spaces>digits[.digits]<spaces>%<spaces>\nCaptures: digits[.digits]

\n"},"alignRoundingMethod":{"!type":"string"},"availableSpaceOffset":{"!type":"number","!doc":"

availableSpaceOffset is used to adjust the availableWidth, typically used\nto reserve space for a scrollbar

\n"},"calculateChildBox":{"!type":"?","!doc":"

\n"},"calculateChildBoxes":{"!type":"?"},"childEls":{"!type":"[?]"},"createsInnerCt":{"!type":"bool"},"innerCls":{"!type":"string"},"manageMargins":{"!type":"bool"},"renderTpl":{"!type":"[?]"},"reserveOffset":{"!type":"bool","!doc":"

whether or not to reserve the availableSpaceOffset in layout calculations

\n"},"scrollOffset":{"!type":"number"},"targetCls":{"!type":"string"},"targetElCls":{"!type":"string"},"type":{"!type":"string"},"updateChildBoxes":{"!type":"?"},"beginCollapse":{"!type":"fn(child: ?) -> !this","!doc":"

Called by an owning Panel before the Panel begins its collapse process.\nMost layouts will not need to override the default Ext.emptyFn implementation.

\n"},"beginExpand":{"!type":"fn(child: ?) -> !this","!doc":"

Called by an owning Panel before the Panel begins its expand process.\nMost layouts will not need to override the default Ext.emptyFn implementation.

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"cacheFlexes":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called to (re)cache our understanding of flexes. This happens during beginLayout and may need to\nbe called again if the flexes are changed during the layout (e.g., like ColumnLayout).

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"calculateParallel":{"!type":"fn(ownerContext: ?, names: ?, plan: ?) -> !this"},"calculatePerpendicular":{"!type":"fn(ownerContext: ?, names: ?, plan: ?) -> !this"},"calculateStretchMax":{"!type":"fn(ownerContext: ?, names: ?, plan: ?) -> !this"},"completeLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method (if implemented) is called at the end of the cycle in which this layout\ncompletes (by not setting done to false in calculate). It is\npossible for the layout to complete and yet become invalid before the end of the cycle,\nin which case, this method will not be called. It is also possible for this method to\nbe called and then later the layout becomes invalidated. This will result in\ncalculate being called again, followed by another call to this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"destroy":{"!type":"fn() -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"flexSort":{"!type":"fn(a: ?, b: ?) -> !this"},"getElementTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Overridden method from Ext.layout.container.Container.\nUsed by Container classes to insert special DOM elements which must exist in addition to the child components

\n"},"getItemSizePolicy":{"!type":"fn(item: ?, ownerSizeModel: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"getRenderData":{"!type":"fn() -> !this"},"getRenderTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Overridden method from Ext.layout.container.Container.\nUsed in the beforeLayout method to render all items into.

\n"},"initOverflowHandler":{"!type":"fn() -> !this"},"isItemBoxParent":{"!type":"fn(itemContext: ?) -> !this"},"isItemShrinkWrap":{"!type":"fn(item: ?) -> !this"},"onAfterConstrainInvalidateChild":{"!type":"fn(childContext: ?, options: ?) -> !this"},"onAfterStretchMaxInvalidateChild":{"!type":"fn(childContext: ?, options: ?) -> !this"},"onBeforeConstrainInvalidateChild":{"!type":"fn(childContext: ?, options: ?) -> !this"},"onBeforeStretchMaxInvalidateChild":{"!type":"fn(childContext: ?, options: ?) -> !this"},"onRemove":{"!type":"fn(comp: ?) -> !this"},"publishInnerCtSize":{"!type":"fn(ownerContext: ?, reservedSpace: ?) -> !this"},"roundFlex":{"!type":"fn(width: ?) -> !this"}}},"Card":{"!doc":"

This layout manages multiple child Components, each fitted to the Container, where only a single child Component can be\nvisible at any given time. This layout style is most commonly used for wizards, tab implementations, etc.\nThis class is intended to be extended or created via the layout:'card' Ext.container.Container.layout config,\nand should generally not need to be created directly via the new keyword.

\n\n

The CardLayout's focal method is setActiveItem. Since only one panel is displayed at a time,\nthe only way to move from one Component to the next is by calling setActiveItem, passing the next panel to display\n(or its id or index). The layout itself does not provide a user interface for handling this navigation,\nso that functionality must be provided by the developer.

\n\n

To change the active card of a container, call the setActiveItem method of its layout:

\n\n
var p = Ext.create('Ext.panel.Panel', {\n    layout: 'card',\n    items: [\n        { html: 'Card 1' },\n        { html: 'Card 2' }\n    ],\n    renderTo: Ext.getBody()\n});\n\np.getLayout().setActiveItem(1);\n
\n\n

The beforedeactivate and beforeactivate\nevents can be used to prevent a card from activating or deactivating by returning false.

\n\n
var active = 0;\nvar main = Ext.create('Ext.panel.Panel', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    layout: 'card',\n    tbar: [{\n        text: 'Next',\n        handler: function(){\n            var layout = main.getLayout();\n            ++active;\n            layout.setActiveItem(active);\n            active = main.items.indexOf(layout.getActiveItem());\n        }\n    }],\n    items: [{\n        title: 'P1'\n    }, {\n        title: 'P2'\n    }, {\n        title: 'P3',\n        listeners: {\n            beforeactivate: function(){\n                return false;\n            }\n        }\n    }]\n});\n
\n\n

In the following example, a simplistic wizard setup is demonstrated. A button bar is added\nto the footer of the containing panel to provide navigation buttons. The buttons will be handled by a\ncommon navigation routine. Note that other uses of a CardLayout (like a tab control) would require a\ncompletely different implementation. For serious implementations, a better approach would be to extend\nCardLayout to provide the custom functionality needed.

\n\n
var navigate = function(panel, direction){\n    // This routine could contain business logic required to manage the navigation steps.\n    // It would call setActiveItem as needed, manage navigation button state, handle any\n    // branching logic that might be required, handle alternate actions like cancellation\n    // or finalization, etc.  A complete wizard implementation could get pretty\n    // sophisticated depending on the complexity required, and should probably be\n    // done as a subclass of CardLayout in a real-world implementation.\n    var layout = panel.getLayout();\n    layout[direction]();\n    Ext.getCmp('move-prev').setDisabled(!layout.getPrev());\n    Ext.getCmp('move-next').setDisabled(!layout.getNext());\n};\n\nExt.create('Ext.panel.Panel', {\n    title: 'Example Wizard',\n    width: 300,\n    height: 200,\n    layout: 'card',\n    bodyStyle: 'padding:15px',\n    defaults: {\n        // applied to each contained panel\n        border: false\n    },\n    // just an example of one possible navigation scheme, using buttons\n    bbar: [\n        {\n            id: 'move-prev',\n            text: 'Back',\n            handler: function(btn) {\n                navigate(btn.up(\"panel\"), \"prev\");\n            },\n            disabled: true\n        },\n        '->', // greedy spacer so that the buttons are aligned to each side\n        {\n            id: 'move-next',\n            text: 'Next',\n            handler: function(btn) {\n                navigate(btn.up(\"panel\"), \"next\");\n            }\n        }\n    ],\n    // the panels (or \"cards\") within the layout\n    items: [{\n        id: 'card-0',\n        html: '<h1>Welcome to the Wizard!</h1><p>Step 1 of 3</p>'\n    },{\n        id: 'card-1',\n        html: '<p>Step 2 of 3</p>'\n    },{\n        id: 'card-2',\n        html: '<h1>Congratulations!</h1><p>Step 3 of 3 - Complete</p>'\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Fit.prototype","deferredRender":{"!type":"bool","!doc":"

True to render each contained item at the time it becomes active, false to render all contained items\nas soon as the layout is rendered (defaults to false). If there is a significant amount of content or\na lot of heavy controls being rendered into panels that are not displayed by default, setting this to\ntrue might improve performance.

\n"},"hideInactive":{"!type":"bool"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"configureItem":{"!type":"fn(item: ?) -> !this","!doc":"

. Called before both dynamic render, and bulk render.\nEnsure that the active item starts visible, and inactive ones start invisible

\n"},"getActiveItem":{"!type":"fn() -> +Ext.Component","!doc":"

Return the active (visible) component in the layout.

\n"},"getAnimation":{"!type":"fn(newCard: ?, owner: ?) -> !this"},"getNext":{"!type":"fn() -> +Ext.Component","!doc":"

Return the active (visible) component in the layout to the next card

\n"},"getPrev":{"!type":"fn() -> +Ext.Component","!doc":"

Return the active (visible) component in the layout to the previous card

\n"},"getRenderTree":{"!type":"fn() -> !this"},"isValidParent":{"!type":"fn(item: ?, target: ?, position: ?) -> !this","!doc":"

Validates item is in the proper place in the dom.

\n"},"next":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the active (visible) component in the layout to the next card

\n"},"onRemove":{"!type":"fn(component: ?) -> !this"},"parseActiveItem":{"!type":"fn(item: ?) -> !this"},"prev":{"!type":"fn() -> +Ext.Component","!doc":"

Sets the active (visible) component in the layout to the previous card

\n"},"renderChildren":{"!type":"fn() -> !this"},"setActiveItem":{"!type":"fn(newCard: +Ext.Component|number|string) -> +Ext.Component","!doc":"

Makes the given card active.

\n\n
var card1 = Ext.create('Ext.panel.Panel', {itemId: 'card-1'});\nvar card2 = Ext.create('Ext.panel.Panel', {itemId: 'card-2'});\nvar panel = Ext.create('Ext.panel.Panel', {\n    layout: 'card',\n    activeItem: 0,\n    items: [card1, card2]\n});\n// These are all equivalent\npanel.getLayout().setActiveItem(card2);\npanel.getLayout().setActiveItem('card-2');\npanel.getLayout().setActiveItem(1);\n
\n"}}},"CheckboxGroup":{"!doc":"

This layout implements the column arrangement for Ext.form.CheckboxGroup and Ext.form.RadioGroup.\nIt groups the component's sub-items into columns based on the component's\ncolumns and Ext.form.CheckboxGroup.vertical config properties.

\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","autoFlex":{"!type":"bool","!doc":"

By default, CheckboxGroup allocates all available space to the configured columns meaning that\ncolumn are evenly spaced across the container.

\n\n

To have each column only be wide enough to fit the container Checkboxes (or Radios), set autoFlex to false

\n"},"childEls":{"!type":"[?]"},"createsInnerCt":{"!type":"bool"},"lastOwnerItemsGeneration":{"!type":"?"},"renderTpl":{"!type":"?"},"type":{"!type":"string"},"addMissingColumns":{"!type":"fn(itemsCount: ?) -> !this"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"cacheElements":{"!type":"fn() -> !this"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Just wait for the child items to all lay themselves out in the width we are configured\nto make available to them. Then we can measure our height.

\n"},"doRenderColumn":{"!type":"fn(out: ?, renderData: ?, columnIndex: ?) -> !this"},"getColumnCount":{"!type":"fn() -> !this","!doc":"

Returns the number of columns in the checkbox group.

\n"},"getItemSizePolicy":{"!type":"fn(item: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"getNodeAt":{"!type":"fn(rowIndex: ?, columnIndex: ?) -> !this"},"getRenderColumnIndex":{"!type":"fn(itemIndex: ?, rowCount: ?, columnCount: ?) -> !this"},"getRenderData":{"!type":"fn() -> !this"},"getRenderRowIndex":{"!type":"fn(itemIndex: ?, rowCount: ?, columnCount: ?) -> !this"},"initLayout":{"!type":"fn() -> !this","!doc":"

A one-time initialization method called just before rendering.

\n"},"isItemAtPosition":{"!type":"fn(item: ?, rowIndex: ?, columnIndex: ?) -> !this"},"isValidParent":{"!type":"fn() -> !this","!doc":"

Always valid. beginLayout ensures the encapsulating elements of all children are in the correct place

\n"},"moveItem":{"!type":"fn(item: +Ext.Component, rowIndex: number, columnIndex: number) -> !this","!doc":"

Moves the given already rendered Component to the specified row and column

\n"},"removeExceedingColumns":{"!type":"fn(itemsCount: ?) -> !this"},"renderChildren":{"!type":"fn() -> !this"},"renderItem":{"!type":"fn(item: +Ext.Component, rowIndex: number, columnIndex: number) -> !this","!doc":"

Renders the given Component into the specified row and column

\n"},"renderItems":{"!type":"fn(items: ?) -> !this","!doc":"

Iterates over all passed items, ensuring they are rendered. If the items are already rendered,\nalso determines if the items are in the proper place in the dom.

\n"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"}}},"Column":{"!doc":"

This is the layout style of choice for creating structural layouts in a multi-column format where the width of each\ncolumn can be specified as a percentage or fixed width, but the height is allowed to vary based on the content. This\nclass is intended to be extended or created via the layout:'column' Ext.container.Container.layout config,\nand should generally not need to be created directly via the new keyword.

\n\n

ColumnLayout does not have any direct config options (other than inherited ones), but it does support a specific\nconfig property of columnWidth that can be included in the config of any panel added to it. The layout will use\nthe columnWidth (if present) or width of each panel during layout to determine how to size each panel. If width or\ncolumnWidth is not specified for a given panel, its width will default to the panel's width (or auto).

\n\n

The width property is always evaluated as pixels, and must be a number greater than or equal to 1. The columnWidth\nproperty is always evaluated as a percentage, and must be a decimal value greater than 0 and less than 1 (e.g., .25).

\n\n

The basic rules for specifying column widths are pretty simple. The logic makes two passes through the set of\ncontained panels. During the first layout pass, all panels that either have a fixed width or none specified (auto)\nare skipped, but their widths are subtracted from the overall container width.

\n\n

During the second pass, all panels with columnWidths are assigned pixel widths in proportion to their percentages\nbased on the total remaining container width. In other words, percentage width panels are designed to fill\nthe space left over by all the fixed-width and/or auto-width panels. Because of this, while you can specify any\nnumber of columns with different percentages, the columnWidths must always add up to 1 (or 100%) when added\ntogether, otherwise your layout may not render as expected.

\n\n
// All columns are percentages -- they must add up to 1\nExt.create('Ext.panel.Panel', {\n    title: 'Column Layout - Percentage Only',\n    width: 350,\n    height: 250,\n    layout:'column',\n    items: [{\n        title: 'Column 1',\n        columnWidth: 0.25\n    },{\n        title: 'Column 2',\n        columnWidth: 0.55\n    },{\n        title: 'Column 3',\n        columnWidth: 0.20\n    }],\n    renderTo: Ext.getBody()\n});\n\n// Mix of width and columnWidth -- all columnWidth values must add up\n// to 1. The first column will take up exactly 120px, and the last two\n// columns will fill the remaining container width.\n\nExt.create('Ext.Panel', {\n    title: 'Column Layout - Mixed',\n    width: 350,\n    height: 250,\n    layout:'column',\n    items: [{\n        title: 'Column 1',\n        width: 120\n    },{\n        title: 'Column 2',\n        columnWidth: 0.7\n    },{\n        title: 'Column 3',\n        columnWidth: 0.3\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Auto.prototype","itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"columnWidthSizePolicy":{"!type":"?","!doc":"

Columns with a columnWidth have their width managed.

\n"},"createsInnerCt":{"!type":"bool"},"manageOverflow":{"!type":"bool","!doc":"

true to rerun the layout if scrollbars are needed.

\n"},"targetCls":{"!type":"string"},"type":{"!type":"string","!doc":"

End Definitions

\n"},"calculateItems":{"!type":"fn(ownerContext: ?, containerSize: ?) -> !this"},"getItemSizePolicy":{"!type":"fn(item: ?, ownerSizeModel: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"isItemShrinkWrap":{"!type":"fn(ownerContext: ?) -> !this"},"setCtSizeIfNeeded":{"!type":"fn(ownerContext: ?, containerSize: ?) -> !this","!doc":"

This method sets the height and/or width of the outerCt/innerCt to adjust for the\nfollowing browser-specific issues:

\n\n
    \n
  1. In IE6 and 7 strict if we are using the shrink wrap template, and the outerCt\nhas a 100% width (because the container is not shrink wrapping width currently),\nand the target element has a vertical scrollbar, the browser disregards the\nscrollbar when sizing the width of the outerCt. This can result in the target\nelement gaining a horizontal scrollbar. We fix this issue by setting a pixel\nwidth on the outerCt

  2. \n
  3. In IE quirks when using the \"non shrink wrap\" template, a long non-breaking word\ncan cause the outerCt's width to expand beyond the width of its container. This\nbehavior is desired if the container has the potential for horizontal overflow,\nbut can cause text to be hidden if the container's overflow is hidden. To prevent\nthis from happening we give the outerCt a fixed width in IE quirks when the\ncontainer does not have horizontal overflow.

  4. \n
  5. In some browsers a percentage-height element ignores the horizontal scrollbar\nof its parent (see Ext.supports.PercentageHeightOverflowBug). If the browser is\naffected by this bug the outerCt needs a pixel height in order to support\npercentage-height children when not shrink-wrapping height. If the browser is not\naffected by this bug, a height of 100% is assigned to the outerCt (see\nbeginLayoutCycle).

  6. \n
  7. In IE6/7 strict when using the \"shrink wrap\" template, percentage heights on\nchildren do not work unless the innerCt td has a height set. We can't use height\n100% on the innerCt because conent-box sizing will cause any top/bottom padding to\nbe added to the height. The solution is to set a pixel height on the innerCt.

  8. \n
  9. IE8 strict mode has a bug with percentage height children. if the innerCt has\na height of 100%, has padding, and has a child item with a percentage height, that\nchild item will be sized as a percentage of the parent's height plus padding height.\nIn other words, a child with height:50% would have its height caclulated thusly:\n(parentHeight + parentPaddingHeight) * 0.5\nTo fix this, we have to give the innerCt a pixel height.

  10. \n
  11. In IE7 strict if we're using the \"non shrink wrap\" template, and the target\nelement has overflow-y:auto, the outerCt reserves space for the target element's\nvertical scrollbar even when there is no vertical scrollbar. This is fixed by\nsetting the targetEl's overflow property to \"hidden\" and then back to \"auto\".

  12. \n
\n\n"}}},"Container":{"!doc":"

This class is intended to be extended or created via the layout\nconfiguration property. See Ext.container.Container.layout for additional details.

\n","!type":"fn()","prototype":{"!proto":"Ext.layout.Layout.prototype","itemCls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to the container. This can be useful for\nadding customized styles to the container or any of its children using standard CSS\nrules. See Ext.Component.componentCls also.

\n"},"animatePolicy":{"!type":"?","!doc":"

An object which contains boolean properties specifying which properties are to be\nanimated upon flush of child Component ContextItems. For example, Accordion would\nhave:

\n\n
 {\n     y: true,\n     height: true\n }\n
\n"},"childEls":{"!type":"[?]"},"overflowPadderEl":{"!type":"+Ext.Element","!doc":"

The element used to correct body padding during overflow.

\n"},"renderTpl":{"!type":"[?]"},"type":{"!type":"string"},"usesContainerHeight":{"!type":"bool"},"usesContainerWidth":{"!type":"bool"},"usesHeight":{"!type":"bool"},"usesWidth":{"!type":"bool"},"beginCollapse":{"!type":"fn() -> !this","!doc":"

Called by an owning Panel before the Panel begins its collapse process.\nMost layouts will not need to override the default Ext.emptyFn implementation.

\n"},"beginExpand":{"!type":"fn() -> !this","!doc":"

Called by an owning Panel before the Panel begins its expand process.\nMost layouts will not need to override the default Ext.emptyFn implementation.

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

In addition to work done by our base classes, containers benefit from some extra\ncached data. The following properties are added to the ownerContext:

\n\n\n\n"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"cacheChildItems":{"!type":"fn(ownerContext: ?) -> !this"},"cacheElements":{"!type":"fn() -> !this"},"configureItem":{"!type":"fn(item: ?) -> !this","!doc":"

Adds layout's itemCls and owning Container's itemCls

\n"},"destroy":{"!type":"fn() -> !this"},"doRenderBody":{"!type":"fn(out: ?, renderData: ?) -> !this"},"doRenderContainer":{"!type":"fn(out: ?, renderData: ?) -> !this"},"doRenderItems":{"!type":"fn(out: ?, renderData: ?) -> !this"},"finishRender":{"!type":"fn() -> !this"},"getContainerSize":{"!type":"fn(ownerContext: +Ext.layout.ContextItem, inDom?: bool) -> ?","!doc":"

Returns the container size (that of the target). Only the fixed-sized dimensions can\nbe returned because the shrinkWrap dimensions are based on the contentWidth/Height\nas determined by the container layout.

\n"},"getContentTarget":{"!type":"fn() -> !this"},"getElementTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the element into which extra functional DOM elements can be inserted. Defaults to the owner Component's encapsulating element.

\n\n

May be overridden in Component layout managers which implement a component render target which must only\ncontain child components.

\n"},"getLayoutItems":{"!type":"fn() -> [+Ext.Component]","!doc":"

Returns an array of child components either for a render phase (Performed in the beforeLayout\nmethod of the layout's base class), or the layout phase (onLayout).

\n"},"getPositionOffset":{"!type":"fn(position: ?) -> !this","!doc":"

This method is used to offset the DOM position when checking\nwhether the element is a certain child of the target. This is\nrequired in cases where the extra elements prepended to the target\nbefore any of the items. An example of this is when using labelAlign: 'top'\non a field. The label appears first in the DOM before any child items are\ncreated, so when we check the position we need to add an extra offset.\nContainers that create an innerCt are exempt because this new element\npreserves the order

\n"},"getRenderData":{"!type":"fn() -> !this"},"getRenderTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the element into which rendering must take place. Defaults to the owner Container's\ntarget element.

\n\n

May be overridden in layout managers which implement an inner element.

\n"},"getRenderTpl":{"!type":"fn() -> !this"},"getRenderTree":{"!type":"fn() -> !this"},"getRenderedItems":{"!type":"fn() -> [?]","!doc":"

Returns all items that are rendered

\n"},"getScrollbarsNeeded":{"!type":"fn(width: ?, height: ?, contentWidth: ?, contentHeight: ?) -> !this"},"getTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the owner component's resize element.

\n"},"getVisibleItems":{"!type":"fn() -> [?]","!doc":"

Returns all items that are both rendered and visible

\n"},"notifyOwner":{"!type":"fn() -> !this","!doc":"

Called for every layout in the layout context after all the layouts have been finally flushed

\n"},"renderChildren":{"!type":"fn() -> !this"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"}}},"Editor":{"!doc":"

Component layout for editors

\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","autoSizeDefault":{"!type":"?","!doc":"

End Definitions

\n"},"sizePolicies":{"!type":"?"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"getDimension":{"!type":"fn(owner: ?, type: ?, getMethod: ?, ownerSize: ?) -> !this"},"getItemSizePolicy":{"!type":"fn(item: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"}}},"Fit":{"!doc":"

This is a base class for layouts that contain a single item that automatically expands to fill the layout's\ncontainer. This class is intended to be extended or created via the layout:'fit'\nExt.container.Container.layout config, and should generally not need to be created directly via the new keyword.

\n\n

Fit layout does not have any direct config options (other than inherited ones). To fit a panel to a container using\nFit layout, simply set layout: 'fit' on the container and add a single panel to it.

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Fit Layout',\n    width: 300,\n    height: 150,\n    layout:'fit',\n    items: {\n        title: 'Inner Panel',\n        html: 'This is the inner panel content',\n        bodyPadding: 20,\n        border: false\n    },\n    renderTo: Ext.getBody()\n});\n
\n\n

If the container has multiple items, all of the items will all be equally sized. This is usually not\ndesired, so to avoid this, place only a single item in the container. This sizing of all items\ncan be used to provide a background image that is \"behind\" another item\nsuch as a dataview if you also absolutely position the items.

\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","defaultMargins":{"!type":"?","!doc":"

If the individual contained items do not have a margins property specified or margin specified via CSS, the\ndefault margins from this property will be applied to each item.

\n\n

This property may be specified as an object containing margins to apply in the format:

\n\n
{\n    top: (top margin),\n    right: (right margin),\n    bottom: (bottom margin),\n    left: (left margin)\n}\n
\n\n

This property may also be specified as a string containing space-separated, numeric margin values. The order of\nthe sides associated with each value matches the way CSS processes margin values:

\n\n\n\n"},"itemCls":{"!type":"string","!doc":"

End Definitions

\n"},"manageMargins":{"!type":"bool"},"sizePolicies":{"!type":"?"},"targetCls":{"!type":"string"},"type":{"!type":"string"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

Called before any calculation cycles to reset DOM values and prepare for calculation.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"fitItem":{"!type":"fn(itemContext: ?, info: ?) -> !this"},"fitItemHeight":{"!type":"fn(itemContext: ?, info: ?) -> !this"},"fitItemWidth":{"!type":"fn(itemContext: ?, info: ?) -> !this"},"getItemSizePolicy":{"!type":"fn(item: ?, ownerSizeModel: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"positionItemX":{"!type":"fn(itemContext: ?, info: ?) -> !this"},"positionItemY":{"!type":"fn(itemContext: ?, info: ?) -> !this"},"setItemHeight":{"!type":"fn(itemContext: ?, info: ?) -> !this"},"setItemWidth":{"!type":"fn(itemContext: ?, info: ?) -> !this"}}},"Form":{"!doc":"

This is a layout that will render form Fields, one under the other all stretched to the Container width.

\n\n
Ext.create('Ext.Panel', {\n    width: 500,\n    height: 300,\n    title: \"FormLayout Panel\",\n    layout: 'form',\n    renderTo: Ext.getBody(),\n    bodyPadding: 5,\n    defaultType: 'textfield',\n    items: [{\n       fieldLabel: 'First Name',\n        name: 'first',\n        allowBlank:false\n    },{\n        fieldLabel: 'Last Name',\n        name: 'last'\n    },{\n        fieldLabel: 'Company',\n        name: 'company'\n    }, {\n        fieldLabel: 'Email',\n        name: 'email',\n        vtype:'email'\n    }, {\n        fieldLabel: 'DOB',\n        name: 'dob',\n        xtype: 'datefield'\n    }, {\n        fieldLabel: 'Age',\n        name: 'age',\n        xtype: 'numberfield',\n        minValue: 0,\n        maxValue: 100\n    }, {\n        xtype: 'timefield',\n        fieldLabel: 'Time',\n        name: 'time',\n        minValue: '8:00am',\n        maxValue: '6:00pm'\n    }]\n});\n
\n\n

Note that any configured padding will be ignored on items within a Form layout.

\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","childEls":{"!type":"[?]"},"createsInnerCt":{"!type":"bool"},"getScrollRangeFlags":{"!type":"?","!doc":"

Returns flags indicating cross-browser handling of scrollHeight/Width. In particular,\nIE has issues with padding-bottom in a scrolling element (it does not include that\npadding in the scrollHeight). Also, margin-bottom on a child in a scrolling element\ncan be lost.

\n\n

All browsers seem to ignore margin-right on children and padding-right on the parent\nelement (the one with the overflow)

\n\n

This method returns a number with the follow bit positions set based on things not\naccounted for in scrollHeight and scrollWidth:

\n\n\n\n\n

To work around the margin-bottom issue, it is sufficient to create a 0px tall last\nchild that will \"hide\" the margin. This can also be handled by wrapping the children\nin an element, again \"hiding\" the margin. Wrapping the elements is about the only\nway to preserve their right margins. This is the strategy used by Column layout.

\n\n

To work around the padding-bottom problem, since it is comes from a style on the\nparent element, about the only simple fix is to create a last child with height\nequal to padding-bottom. To preserve the right padding, the sizing element needs to\nhave a width that includes the right padding.

\n"},"lastOverflowAdjust":{"!type":"?","!doc":"

Begin with no previous adjustments

\n"},"manageOverflow":{"!type":"bool"},"padRow":{"!type":"string"},"renderTpl":{"!type":"[?]"},"tableCls":{"!type":"string","!doc":"

End Definitions

\n"},"type":{"!type":"string"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this","!doc":"

All of the below methods are old methods moved here from Container layout\nTODO: remove these methods once Form layout extends Auto layout

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"calculateOverflow":{"!type":"fn(ownerContext: +Ext.layout.ContextItem, containerSize: ?, dimensions: number) -> !this","!doc":"

Handles overflow processing for a container. This should be called once the layout\nhas determined contentWidth/Height. In addition to the ownerContext passed to the\ncalculate method, this method also needs the containerSize (the object\nreturned by getContainerSize).

\n"},"completeLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

This method (if implemented) is called at the end of the cycle in which this layout\ncompletes (by not setting done to false in calculate). It is\npossible for the layout to complete and yet become invalid before the end of the cycle,\nin which case, this method will not be called. It is also possible for this method to\nbe called and then later the layout becomes invalidated. This will result in\ncalculate being called again, followed by another call to this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"doRenderPadder":{"!type":"fn(out: ?, renderData: ?) -> !this","!doc":"

Creates an element that makes bottom/right body padding consistent across browsers.\nThis element is sized based on the need for scrollbars in calculateOverflow.\nIf the manageOverflow option is false, this element is not created.

\n\n

See getScrollRangeFlags for more details.

\n"},"getContainerSize":{"!type":"fn(ownerContext: +Ext.layout.ContextItem, inDom?: bool, ignoreOverflow?: bool) -> ?","!doc":"

Returns the container size (that of the target). Only the fixed-sized dimensions can\nbe returned because the shrinkWrap dimensions are based on the contentWidth/Height\nas determined by the container layout.

\n\n

If the calculateOverflow method is used and if manageOverflow is\ntrue, this may adjust the width/height by the size of scrollbars.

\n"},"getItemSizePolicy":{"!type":"fn(item: ?) -> +Ext.layout.SizePolicy","!doc":"

Returns an object describing how this layout manages the size of the given component.\nThis method must be implemented by any layout that manages components.

\n"},"getOverflowXStyle":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> string","!doc":"

returns the overflow-x style of the render target

\n"},"getOverflowYStyle":{"!type":"fn(ownerContext: +Ext.layout.ContextItem) -> string","!doc":"

returns the overflow-y style of the render target

\n"},"getRenderData":{"!type":"fn() -> !this"},"getRenderTarget":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the element into which rendering must take place. Defaults to the owner Container's\ntarget element.

\n\n

May be overridden in layout managers which implement an inner element.

\n"},"getRenderTree":{"!type":"fn() -> !this"},"initLayout":{"!type":"fn() -> !this","!doc":"

A one-time initialization method called just before rendering.

\n"},"isItemShrinkWrap":{"!type":"fn(item: ?) -> !this"},"isValidParent":{"!type":"fn(item: ?, target: ?, position: ?) -> !this","!doc":"

Validates item is in the proper place in the dom.

\n"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"},"transformItemRenderTree":{"!type":"fn(item: ?) -> !this"}}},"HBox":{"!doc":"

A layout that arranges items horizontally across a Container. This layout optionally divides available horizontal\nspace between child items containing a numeric flex configuration.

\n\n

This layout may also be used to set the heights of child items by configuring it with the align option.

\n\n
Ext.create('Ext.Panel', {\n    width: 500,\n    height: 300,\n    title: \"HBoxLayout Panel\",\n    layout: {\n        type: 'hbox',\n        align: 'stretch'\n    },\n    renderTo: document.body,\n    items: [{\n        xtype: 'panel',\n        title: 'Inner Panel One',\n        flex: 2\n    },{\n        xtype: 'panel',\n        title: 'Inner Panel Two',\n        flex: 1\n    },{\n        xtype: 'panel',\n        title: 'Inner Panel Three',\n        flex: 1\n    }]\n});\n
\n","!type":"fn(config: Ext_layout_container_HBox_cfg)","prototype":{"!proto":"Ext.layout.container.Box.prototype","align":{"!type":"string","!doc":"

Controls how the child items of the container are aligned. Acceptable configuration values for this property are:

\n\n\n\n"},"alignRoundingMethod":{"!type":"string|string|string","!doc":"

The Math method to use\nfor rounding fractional pixels when align:middle is used.

\n"},"constrainAlign":{"!type":"bool","!doc":"

Limits the size of aligned components to the size of the container under certain circumstances.\nFirstly, the container height must not be determined by the height of the child components. Secondly, the child\ncomponents must have their height shrinkwrapped.

\n"},"direction":{"!type":"string"},"horizontal":{"!type":"bool"},"names":{"!type":"?"},"sizePolicy":{"!type":"?"},"type":{"!type":"string"}}},"Table":{"!doc":"

This layout allows you to easily render content into an HTML table. The total number of columns can be specified, and\nrowspan and colspan can be used to create complex layouts within the table. This class is intended to be extended or\ncreated via the layout: {type: 'table'} Ext.container.Container.layout config, and should generally not\nneed to be created directly via the new keyword.

\n\n

Note that when creating a layout via config, the layout-specific config properties must be passed in via the Ext.container.Container.layout object which will then be applied internally to the layout. In the case of\nTableLayout, the only valid layout config properties are columns and tableAttrs. However, the items\nadded to a TableLayout can supply the following table-specific config properties:

\n\n\n\n\n

The basic concept of building up a TableLayout is conceptually very similar to building up a standard HTML table. You\nsimply add each panel (or \"cell\") that you want to include along with any span attributes specified as the special\nconfig properties of rowspan and colspan which work exactly like their HTML counterparts. Rather than explicitly\ncreating and nesting rows and columns as you would in HTML, you simply specify the total column count in the\nlayout config and start adding panels in their natural order from left to right, top to bottom. The layout will\nautomatically figure out, based on the column count, rowspans and colspans, how to position each panel within the\ntable. Just like with HTML tables, your rowspans and colspans must add up correctly in your overall layout or you'll\nend up with missing and/or extra cells! Example usage:

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Table Layout',\n    width: 300,\n    height: 150,\n    layout: {\n        type: 'table',\n        // The total column count must be specified here\n        columns: 3\n    },\n    defaults: {\n        // applied to each contained panel\n        bodyStyle: 'padding:20px'\n    },\n    items: [{\n        html: 'Cell A content',\n        rowspan: 2\n    },{\n        html: 'Cell B content',\n        colspan: 2\n    },{\n        html: 'Cell C content',\n        cellCls: 'highlight'\n    },{\n        html: 'Cell D content'\n    }],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn()","prototype":{"!proto":"Ext.layout.container.Container.prototype","columns":{"!type":"number","!doc":"

The total number of columns to create in the table for this layout. If not specified, all Components added to\nthis layout will be rendered into a single row using one column per Component.

\n"},"tableAttrs":{"!type":"?","!doc":"

An object containing properties which are added to the DomHelper specification used to\ncreate the layout's <table> element. Example:

\n\n
{\n    xtype: 'panel',\n    layout: {\n        type: 'table',\n        columns: 3,\n        tableAttrs: {\n            style: {\n                width: '100%'\n            }\n        }\n    }\n}\n
\n"},"tdAttrs":{"!type":"?","!doc":"

An object containing properties which are added to the DomHelper specification used to\ncreate the layout's <td> elements.

\n"},"trAttrs":{"!type":"?","!doc":"

An object containing properties which are added to the DomHelper specification used to\ncreate the layout's <tr> elements.

\n"},"cellCls":{"!type":"string"},"createsInnerCt":{"!type":"bool"},"monitorResize":{"!type":"bool","!doc":"

private

\n"},"tableCls":{"!type":"string"},"targetCls":{"!type":"string"},"type":{"!type":"string"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"calculateCells":{"!type":"fn(items: [?]) -> [?]","!doc":"

Determine the row and cell indexes for each component, taking into consideration\nthe number of columns and each item's configured colspan/rowspan values.

\n"},"ensureInDocument":{"!type":"fn(el: ?) -> !this"},"finalizeLayout":{"!type":"fn() -> !this","!doc":"

This method (if implemented) is called after all layouts have completed. In most\nways this is similar to completeLayout. This call can cause this (or any\nlayout) to be become invalid (see Ext.layout.Context.invalidate), but this\nis best avoided. This method is intended to be where final reads are made and so it\nis best to avoid invalidating layouts at this point whenever possible. Even so, this\nmethod can be used to perform final checks that may require all other layouts to be\ncomplete and then invalidate some results.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\nbe flushed at the next opportunity.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"getHiddenItems":{"!type":"fn() -> !this"},"getLayoutItems":{"!type":"fn() -> [+Ext.Component]","!doc":"

Returns an array of child components either for a render phase (Performed in the beforeLayout\nmethod of the layout's base class), or the layout phase (onLayout).

\n"},"getRenderTree":{"!type":"fn() -> !this"},"initHierarchyState":{"!type":"fn(hierarchyStateInner: ?) -> !this"},"isValidParent":{"!type":"fn(item: ?, target: ?, rowIdx: ?, cellIdx: ?) -> !this","!doc":"

Validates item is in the proper place in the dom.

\n"},"needsDivWrap":{"!type":"fn() -> !this","!doc":"

Opera 10.5 has a bug where if a table cell's child has box-sizing:border-box and padding, it\nwill include that padding in the size of the cell, making it always larger than the\nshrink-wrapped size of its contents. To get around this we have to wrap the contents in a div\nand then set that div's width to match the item rendered within it afterLayout. This method\ndetermines whether we need the wrapper div; it currently does a straight UA sniff as this bug\nseems isolated to just Opera 10.5, but feature detection could be added here if needed.

\n"},"renderChildren":{"!type":"fn() -> !this","!doc":"

Iterates over all passed items, ensuring they are rendered in a cell in the proper\nlocation in the table structure.

\n"}}},"VBox":{"!doc":"

A layout that arranges items vertically down a Container. This layout optionally divides available vertical space\nbetween child items containing a numeric flex configuration.

\n\n

This layout may also be used to set the widths of child items by configuring it with the align option.

\n\n
Ext.create('Ext.Panel', {\n    width: 500,\n    height: 400,\n    title: \"VBoxLayout Panel\",\n    layout: {\n        type: 'vbox',\n        align: 'center'\n    },\n    renderTo: document.body,\n    items: [{\n        xtype: 'panel',\n        title: 'Inner Panel One',\n        width: 250,\n        flex: 2\n    },\n    {\n        xtype: 'panel',\n        title: 'Inner Panel Two',\n        width: 250,\n        flex: 4\n    },\n    {\n        xtype: 'panel',\n        title: 'Inner Panel Three',\n        width: '50%',\n        flex: 4\n    }]\n});\n
\n","!type":"fn(config: Ext_layout_container_VBox_cfg)","prototype":{"!proto":"Ext.layout.container.Box.prototype","align":{"!type":"string","!doc":"

Controls how the child items of the container are aligned. Acceptable configuration values for this property are:

\n\n\n\n"},"alignRoundingMethod":{"!type":"string|string|string","!doc":"

The Math method to use\nfor rounding fractional pixels when align:center is used.

\n"},"constrainAlign":{"!type":"bool","!doc":"

Limits the size of aligned components to the size of the container under certain circumstances.\nFirstly, the container width must not be determined by the width of the child components. Secondly, the child\ncomponents must have their width shrinkwrapped.

\n"},"direction":{"!type":"string"},"horizontal":{"!type":"bool"},"names":{"!type":"?"},"sizePolicy":{"!type":"?"},"type":{"!type":"string"}}},"boxOverflow":{"Menu":{"!type":"fn(layout: ?)","prototype":{"!proto":"Ext.layout.container.boxOverflow.None.prototype","triggerButtonCls":{"!type":"string","!doc":"

CSS class added to the Button which shows the overflow menu.

\n"},"_asLayoutRoot":{"!type":"?"},"menu":{"!type":"+Ext.menu.Menu","!doc":"

The expand menu - holds items for every item that cannot be shown\nbecause the container is currently not large enough.

\n"},"menuItems":{"!type":"[?]","!doc":"

Array of all items that are currently hidden and should go into the dropdown menu

\n"},"menuTrigger":{"!type":"+Ext.button.Button","!doc":"

The expand button which triggers the overflow menu to be shown

\n"},"noItemsMenuText":{"!type":"string","!doc":"

HTML fragment to render into the toolbar overflow menu if there are no items to display

\n"},"addComponentToMenu":{"!type":"fn(menu: +Ext.menu.Menu, component: +Ext.Component) -> !this","!doc":"

Adds the given Toolbar item to the given menu. Buttons inside a buttongroup are added individually.

\n"},"beforeMenuShow":{"!type":"fn(menu: ?) -> !this","!doc":"

Called before the overflow menu is shown. This constructs the menu's items, caching them for as long as it can.

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this"},"beginLayoutCycle":{"!type":"fn(ownerContext: ?, firstCycle: ?) -> !this"},"captureChildElements":{"!type":"fn() -> !this","!doc":"

Finishes the render operation of the trigger Button.

\n"},"clearMenu":{"!type":"fn() -> !this","!doc":"

Deletes the sub-menu of each item in the expander menu. Submenus are created for items such as\nsplitbuttons and buttongroups, where the Toolbar item cannot be represented by a single menu item

\n"},"clearOverflow":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called by the layout, when it determines that there is no overflow.\nAlso called as an interceptor to the layout's onLayout method to reshow\npreviously hidden overflowing items.

\n"},"createMenuConfig":{"!type":"fn(component: +Ext.Component, hideOnClick: bool) -> !this","!doc":"

Returns a menu config for a given component. This config is used to create a menu item\nto be added to the expander menu

\n"},"destroy":{"!type":"fn() -> !this"},"getOverflowCls":{"!type":"fn() -> !this"},"getSuffixConfig":{"!type":"fn() -> !this","!doc":"

We don't define a prefix in menu overflow.

\n"},"handleOverflow":{"!type":"fn(ownerContext: ?) -> !this"},"hideTrigger":{"!type":"fn() -> !this"},"onButtonAttrChange":{"!type":"fn(btn: ?) -> !this"},"onButtonToggle":{"!type":"fn(btn: ?, state: ?) -> !this"},"onRemove":{"!type":"fn(comp: ?) -> !this"},"showTrigger":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Shows the overflow trigger when enableOverflow is set to true and the items\nin the layout are too wide to fit in the space available

\n"}}},"None":{"!doc":"

Base class for Box Layout overflow handlers. These specialized classes are invoked when a Box Layout\n(either an HBox or a VBox) has child items that are either too wide (for HBox) or too tall (for VBox)\nfor its container.

\n","!type":"fn(layout: ?, config: Ext_layout_container_boxOverflow_None_cfg)","prototype":{"!proto":"Ext.Base.prototype","beginLayout":{"!type":"fn() -> !this"},"beginLayoutCycle":{"!type":"fn() -> !this"},"calculate":{"!type":"fn(ownerContext: ?) -> !this"},"clearOverflow":{"!type":"fn() -> !this"},"completeLayout":{"!type":"fn() -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this"},"getItem":{"!type":"fn(item: +Ext.Component|string|number) -> +Ext.Component","!doc":"

Normalizes an item reference, string id or numerical index into a reference to the item

\n"},"getOverflowCls":{"!type":"fn() -> !this"},"getOwnerType":{"!type":"fn(owner: ?) -> !this"},"getPrefixConfig":{"!type":"fn() -> !this"},"getSuffixConfig":{"!type":"fn() -> !this"},"handleOverflow":{"!type":"fn() -> !this"},"onRemove":{"!type":"fn() -> !this"}}},"Scroller":{"!type":"fn(layout: ?, config: Ext_layout_container_boxOverflow_Scroller_cfg)","prototype":{"!proto":"Ext.layout.container.boxOverflow.None.prototype","afterCtCls":{"!type":"string","!doc":"

CSS class added to the afterCt element. This is the element that holds any special items such as scrollers,\nwhich must always be present at the rightmost edge of the Container

\n"},"afterScrollerCls":{"!type":"string","!doc":"

CSS class added to the right scroller element if enableScroll is used

\n"},"animateScroll":{"!type":"bool","!doc":"

True to animate the scrolling of items within the layout (ignored if enableScroll is false)

\n"},"beforeCtCls":{"!type":"string","!doc":"

CSS class added to the beforeCt element. This is the element that holds any special items such as scrollers,\nwhich must always be present at the leftmost edge of the Container

\n"},"beforeScrollerCls":{"!type":"string","!doc":"

CSS class added to the left scroller element if enableScroll is used

\n"},"scrollDuration":{"!type":"number","!doc":"

Number of milliseconds that each scroll animation lasts

\n"},"scrollIncrement":{"!type":"number","!doc":"

The number of pixels to scroll by on scroller click

\n"},"scrollRepeatInterval":{"!type":"number","!doc":"

Number of milliseconds between each scroll while a scroller button is held down

\n"},"scrollerCls":{"!type":"string","!doc":"

CSS class added to both scroller elements if enableScroll is used

\n"},"wheelIncrement":{"!type":"number","!doc":"

The number of pixels to increment on mouse wheel scrolling.

\n"},"atExtremeAfter":{"!type":"fn() -> bool","!doc":"

Returns true if the innerCt scroll is already at its right-most point

\n"},"atExtremeBefore":{"!type":"fn() -> bool","!doc":"

Returns true if the innerCt scroll is already at its left-most point

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this"},"captureChildElements":{"!type":"fn() -> !this","!doc":"

Gets references to the beforeCt and afterCt elements if they have not already been captured\nand creates click handlers for them.

\n"},"clearOverflow":{"!type":"fn() -> !this"},"completeLayout":{"!type":"fn(ownerContext: ?) -> !this"},"createWheelListener":{"!type":"fn() -> !this","!doc":"

Sets up an listener to scroll on the layout's innerCt mousewheel event

\n"},"destroy":{"!type":"fn() -> !this"},"finishedLayout":{"!type":"fn(ownerContext: ?) -> !this"},"getItemVisibility":{"!type":"fn(item: +Ext.Component) -> ?","!doc":"

For a given item in the container, return an object with information on whether the item is visible\nwith the current innerCt scroll value.

\n"},"getMaxScrollPosition":{"!type":"fn() -> number","!doc":"

Returns the maximum value we can scrollTo

\n"},"getOverflowCls":{"!type":"fn() -> !this"},"getPrefixConfig":{"!type":"fn() -> !this"},"getScrollAnim":{"!type":"fn() -> ?"},"getScrollPosition":{"!type":"fn() -> number","!doc":"

Returns the current scroll position of the innerCt element

\n"},"getSuffixConfig":{"!type":"fn() -> !this"},"getWheelDelta":{"!type":"fn(e: ?) -> !this"},"handleOverflow":{"!type":"fn(ownerContext: ?) -> !this"},"hideScrollers":{"!type":"fn() -> !this","!doc":"

Hides the scroller elements in the beforeCt and afterCt

\n"},"initCSSClasses":{"!type":"fn() -> !this"},"scrollBy":{"!type":"fn(delta: number) -> !this","!doc":"

Scrolls left or right by the number of pixels specified

\n"},"scrollLeft":{"!type":"fn() -> !this","!doc":"

Scrolls to the left by the configured amount

\n"},"scrollRight":{"!type":"fn() -> !this","!doc":"

Scrolls to the right by the configured amount

\n"},"scrollTo":{"!type":"fn(position: number, animate: bool) -> !this","!doc":"

Scrolls to the given position. Performs bounds checking.

\n"},"scrollToItem":{"!type":"fn(item: string|number|+Ext.Component, animate: bool) -> !this","!doc":"

Scrolls to the given component.

\n"},"showScrollers":{"!type":"fn() -> !this","!doc":"

Shows the scroller elements in the beforeCt and afterCt. Creates the scrollers first if they are not already\npresent.

\n"},"updateScrollButtons":{"!type":"fn() -> !this","!doc":"

Enables or disables each scroller button based on the current scroll position

\n"},"scroll":{"!type":"fn(scroller: +Ext.layout.container.boxOverflow.Scroller, newPosition: number, animate: bool|?, eOpts: ?)"}}}}}},"menu":{"CheckItem":{"!doc":"

A menu item that contains a togglable checkbox by default, but that can also be a part of a radio group.

\n\n
Ext.create('Ext.menu.Menu', {\n    width: 100,\n    height: 110,\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        xtype: 'menucheckitem',\n        text: 'select all'\n    },{\n        xtype: 'menucheckitem',\n        text: 'select specific'\n    },{\n        iconCls: 'add16',\n        text: 'icon item'\n    },{\n        text: 'regular item'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_menu_CheckItem_cfg)","prototype":{"!proto":"Ext.menu.Item.prototype","checkChangeDisabled":{"!type":"bool","!doc":"

True to prevent the checked item from being toggled. Any submenu will still be accessible.

\n"},"checkHandler":{"!type":"fn()","!doc":"

Alternative for the checkchange event. Gets called with the same parameters.

\n"},"checked":{"!type":"bool","!doc":"

True to render the menuitem initially checked.

\n"},"checkedCls":{"!type":"string","!doc":"

The CSS class used by cls to show the checked state.\nDefaults to Ext.baseCSSPrefix + 'menu-item-checked'.

\n"},"group":{"!type":"string","!doc":"

Name of a radio group that the item belongs.

\n\n

Specifying this option will turn check item into a radio item.

\n\n

Note that the group name must be globally unique.

\n"},"groupCls":{"!type":"string","!doc":"

The CSS class applied to this item's icon image to denote being a part of a radio group.\nDefaults to Ext.baseCSSClass + 'menu-group-icon'.\nAny specified iconCls overrides this.

\n"},"hideOnClick":{"!type":"bool","!doc":"

Whether to not to hide the owning menu when this item is clicked.\nDefaults to false for checkbox items, and to true for radio group items.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

Scope for the checkHandler callback.

\n"},"uncheckedCls":{"!type":"string","!doc":"

The CSS class used by cls to show the unchecked state.\nDefaults to Ext.baseCSSPrefix + 'menu-item-unchecked'.

\n"},"childEls":{"!type":"[?]"},"showCheckbox":{"!type":"bool"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"beforeRender":{"!type":"fn() -> !this"},"disableCheckChange":{"!type":"fn() -> !this","!doc":"

Disables just the checkbox functionality of this menu Item. If this menu item has a submenu, that submenu\nwill still be accessible

\n"},"enableCheckChange":{"!type":"fn() -> !this","!doc":"

Reenables the checkbox functionality of this menu item after having been disabled by disableCheckChange

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onClick":{"!type":"fn(e: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"setChecked":{"!type":"fn(checked: bool, suppressEvents?: bool) -> !this","!doc":"

Sets the checked state of the item

\n"},"beforecheckchange":{"!type":"fn(this: +Ext.menu.CheckItem, checked: bool, eOpts: ?)","!doc":"

Fires before a change event. Return false to cancel.

\n"},"checkchange":{"!type":"fn(this: +Ext.menu.CheckItem, checked: bool, eOpts: ?)","!doc":"

Fires after a change event.

\n"}}},"ColorPicker":{"!doc":"

A menu containing a Ext.picker.Color Component.

\n\n

Notes:

\n\n\n\n\n

Example:

\n\n
var colorPicker = Ext.create('Ext.menu.ColorPicker', {\n    value: '000000'\n});\n\nExt.create('Ext.menu.Menu', {\n    width: 100,\n    height: 90,\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        text: 'choose a color',\n        menu: colorPicker\n    },{\n        iconCls: 'add16',\n        text: 'icon item'\n    },{\n        text: 'regular item'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_menu_ColorPicker_cfg)","prototype":{"!proto":"Ext.menu.Menu.prototype","hideOnClick":{"!type":"bool","!doc":"

False to continue showing the menu after a color is selected.

\n"},"maxHeight":{"!type":"number"},"pickerId":{"!type":"string","!doc":"

An id to assign to the underlying color picker.

\n"},"picker":{"!type":"+Ext.picker.Color","!doc":"

The Ext.picker.Color instance for this ColorMenu

\n"},"hidePickerOnSelect":{"!type":"fn() -> !this","!doc":"

Hides picker on select if hideOnClick is true

\n"},"click":{"!type":"fn(eOpts: ?)"},"select":{"!type":"fn(this: +Ext.picker.Color, color: string, eOpts: ?)","!doc":"

Fires when a color is selected

\n"}}},"DatePicker":{"!doc":"

A menu containing an Ext.picker.Date Component.

\n\n

Notes:

\n\n\n\n\n

Example:

\n\n
var dateMenu = Ext.create('Ext.menu.DatePicker', {\n    handler: function(dp, date){\n        Ext.Msg.alert('Date Selected', 'You selected ' + Ext.Date.format(date, 'M j, Y'));\n    }\n});\n\nExt.create('Ext.menu.Menu', {\n    width: 100,\n    height: 90,\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        text: 'choose a date',\n        menu: dateMenu\n    },{\n        iconCls: 'add16',\n        text: 'icon item'\n    },{\n        text: 'regular item'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_menu_DatePicker_cfg)","prototype":{"!proto":"Ext.menu.Menu.prototype","hideOnClick":{"!type":"bool","!doc":"

False to continue showing the menu after a date is selected.

\n"},"maxHeight":{"!type":"number"},"pickerId":{"!type":"string","!doc":"

An id to assign to the underlying date picker.

\n"},"picker":{"!type":"+Ext.picker.Date","!doc":"

The Ext.picker.Date instance for this DateMenu

\n"},"hidePickerOnSelect":{"!type":"fn() -> !this"},"select":{"!type":"fn(this: +Ext.picker.Date, date: +Date, eOpts: ?)","!doc":"

Fires when a date is selected

\n"}}},"Item":{"!doc":"

A base class for all menu items that require menu-related functionality such as click handling,\nsub-menus, icons, etc.

\n\n
Ext.create('Ext.menu.Menu', {\n    width: 100,\n    height: 100,\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        text: 'icon item',\n        iconCls: 'add16'\n    },{\n        text: 'text item'\n    },{\n        text: 'plain item',\n        plain: true\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_menu_Item_cfg)","prototype":{"!proto":"Ext.Component.prototype","activeCls":{"!type":"string","!doc":"

The CSS class added to the menu item when the item is activated (focused/mouseover).

\n"},"ariaRole":{"!type":"string"},"canActivate":{"!type":"bool","!doc":"

Whether or not this menu item can be activated when focused/mouseovered.

\n"},"clickHideDelay":{"!type":"number","!doc":"

The delay in milliseconds to wait before hiding the menu after clicking the menu item.\nThis only has an effect when hideOnClick: true.

\n"},"destroyMenu":{"!type":"bool","!doc":"

Whether or not to destroy any associated sub-menu when this item is destroyed.

\n"},"disabledCls":{"!type":"string","!doc":"

The CSS class added to the menu item when the item is disabled.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for this item. The default\nfont-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"handler":{"!type":"fn()","!doc":"

A function called when the menu item is clicked (can be used instead of click event).

\n"},"hideOnClick":{"!type":"bool","!doc":"

Whether to not to hide the owning menu when this item is clicked.

\n"},"href":{"!type":"string","!doc":"

The href attribute to use for the underlying anchor link.

\n"},"hrefTarget":{"!type":"string","!doc":"

The target attribute to use for the underlying anchor link.

\n"},"icon":{"!type":"string","!doc":"

The path to an icon to display in this item.

\n\n

Defaults to Ext.BLANK_IMAGE_URL.

\n"},"iconCls":{"!type":"string","!doc":"

A CSS class that specifies a background-image to use as the icon for this item.

\n"},"menu":{"!type":"+Ext.menu.Menu","!doc":"

The sub-menu associated with this item, if one was configured.

\n"},"menuAlign":{"!type":"string","!doc":"

The default Ext.util.Positionable.getAlignToXY anchor position value for this\nitem's sub-menu relative to this item's position.

\n"},"menuExpandDelay":{"!type":"number","!doc":"

The delay in milliseconds before this item's sub-menu expands after this item is moused over.

\n"},"menuHideDelay":{"!type":"number","!doc":"

The delay in milliseconds before this item's sub-menu hides after this item is moused out.

\n"},"plain":{"!type":"bool","!doc":"

Whether or not this item is plain text/html with no icon or visual activation.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"text":{"!type":"string","!doc":"

The text/html to display in this item.

\n"},"tooltip":{"!type":"string|?","!doc":"

The tooltip for the button - can be a string to be used as innerHTML (html tags are accepted) or\nQuickTips config object.

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' for QuickTips or 'title' for title attribute.

\n"},"activated":{"!type":"bool","!doc":"

Whether or not this item is currently activated

\n"},"arrowCls":{"!type":"string"},"childEls":{"!type":"[?]"},"maskOnDisable":{"!type":"bool","!doc":"

This is an internal flag that you use when creating custom components. By default this is set to true which means\nthat every component gets a mask when it's disabled. Components like FieldContainer, FieldSet, Field, Button, Tab\noverride this property to false since they want to implement custom disable logic.

\n"},"parentMenu":{"!type":"+Ext.menu.Menu","!doc":"

The parent Menu of this item.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"cancelDeferHide":{"!type":"fn() -> !this"},"clearTip":{"!type":"fn() -> !this","!doc":"

private

\n"},"deactivate":{"!type":"fn(item: +Ext.menu.Item, eOpts: ?)","!doc":"

Fires when this tiem is deactivated

\n"},"deferHideMenu":{"!type":"fn() -> !this"},"deferHideParentMenus":{"!type":"fn() -> !this"},"doExpandMenu":{"!type":"fn() -> !this"},"expandMenu":{"!type":"fn(delay: ?) -> !this"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

Returns the focus holder element associated with this Component. At the Component base class level, this function returns undefined.

\n\n

Subclasses which use embedded focusable elements (such as Window, Field and Button) should override this\nfor use by the focus method.

\n\n

Containers which need to participate in the FocusManager's navigation and Container focusing scheme also\nneed to return a focusEl, although focus is only listened for in this case if the FocusManager is enabled.

\n"},"getRefItems":{"!type":"fn(deep: ?) -> !this"},"getTipAttr":{"!type":"fn() -> !this"},"hideMenu":{"!type":"fn(delay: ?) -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onClick":{"!type":"fn(e: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onRemoved":{"!type":"fn() -> !this","!doc":"

Method to manage awareness of when components are removed from their\nrespective Container, firing a removed event. References are properly\ncleaned up after removing a component from its owning container.

\n\n

Allows addition of behavior when a Component is removed from\nits parent Container. At this stage, the Component has been\nremoved from its parent Container's collection of child items,\nbut has not been destroyed (It will be destroyed if the parent\nContainer's autoDestroy is true, or if the remove call was\npassed a truthy second parameter). After calling the\nsuperclass's onRemoved, the ownerCt and the refOwner will not\nbe present.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"setHandler":{"!type":"fn(fn: fn(), scope?: ?) -> !this","!doc":"

Sets the click handler of this item

\n"},"setIcon":{"!type":"fn(icon: string) -> !this","!doc":"

Sets the icon on this item.

\n"},"setIconCls":{"!type":"fn(iconCls: string) -> !this","!doc":"

Sets the iconCls of this item

\n"},"setMenu":{"!type":"fn(menu: +Ext.menu.Menu|?, destroyMenu?: bool) -> !this","!doc":"

Set a child menu for this item. See the menu configuration.

\n"},"setText":{"!type":"fn(text: string) -> !this","!doc":"

Sets the text of this item

\n"},"setTooltip":{"!type":"fn(tooltip: string|?) -> +Ext.menu.Item","!doc":"

Sets the tooltip for this menu item.

\n"},"activate":{"!type":"fn(item: +Ext.menu.Item, eOpts: ?)","!doc":"

Fires when this item is activated

\n"},"click":{"!type":"fn(item: +Ext.menu.Item, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when this item is clicked

\n"},"iconchange":{"!type":"fn(this: +Ext.menu.Item, oldIcon: string, newIcon: string, eOpts: ?)","!doc":"

Fired when the item's icon is changed by the setIcon or setIconCls methods.

\n"},"textchange":{"!type":"fn(this: +Ext.menu.Item, oldText: string, newText: string, eOpts: ?)","!doc":"

Fired when the item's text is changed by the setText method.

\n"}}},"KeyNav":{"!type":"fn(config: Ext_menu_KeyNav_cfg)","prototype":{"!proto":"Ext.util.KeyNav.prototype","down":{"!type":"fn(e: ?) -> !this"},"enter":{"!type":"fn(e: ?) -> !this"},"escape":{"!type":"fn(e: ?) -> !this"},"focusNextItem":{"!type":"fn(step: ?) -> !this"},"isWhitelisted":{"!type":"fn(item: ?) -> !this"},"left":{"!type":"fn(e: ?) -> !this"},"right":{"!type":"fn(e: ?) -> !this"},"tab":{"!type":"fn(e: ?) -> !this"},"up":{"!type":"fn(e: ?) -> !this"}}},"Manager":{"!doc":"

Provides a common registry of all menus on a page.

\n","attached":{"!type":"bool"},"groups":{"!type":"?"},"lastShow":{"!type":"?"},"menuSelector":{"!type":"string"},"menus":{"!type":"?"},"get":{"!type":"fn(menu: string|?) -> +Ext.menu.Menu","!doc":"

Returns a Ext.menu.Menu object

\n"},"hideAll":{"!type":"fn() -> bool","!doc":"

Hides all menus that are currently visible

\n"},"init":{"!type":"fn() -> !this"},"onBeforeHide":{"!type":"fn(m: ?) -> !this"},"onBeforeShow":{"!type":"fn(m: ?) -> !this"},"onCheckChange":{"!type":"fn(menuItem: ?, state: ?) -> !this"},"onHide":{"!type":"fn(m: ?) -> !this"},"onMouseDown":{"!type":"fn(e: ?) -> !this"},"onShow":{"!type":"fn(m: ?) -> !this"},"register":{"!type":"fn(menu: ?) -> !this"},"registerCheckable":{"!type":"fn(menuItem: ?) -> !this"},"unregister":{"!type":"fn(menu: ?) -> !this"},"unregisterCheckable":{"!type":"fn(menuItem: ?) -> !this"}},"Menu":{"!doc":"

A menu object. This is the container to which you may add menu items.

\n\n

Menus may contain either menu items, or general Components.\nMenus may also contain docked items because it extends Ext.panel.Panel.

\n\n

By default, non menu items are indented so that they line up with the text of menu items. clearing\nthe icon column. To make a contained general Component left aligned configure the child\nComponent with `indent: false.

\n\n

By default, Menus are absolutely positioned, floating Components. By configuring a Menu with floating: false,\na Menu may be used as a child of a Container.

\n\n
Ext.create('Ext.menu.Menu', {\n    width: 100,\n    margin: '0 0 10 0',\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        text: 'regular item 1'\n    },{\n        text: 'regular item 2'\n    },{\n        text: 'regular item 3'\n    }]\n});\n\nExt.create('Ext.menu.Menu', {\n    width: 100,\n    plain: true,\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        text: 'plain item 1'\n    },{\n        text: 'plain item 2'\n    },{\n        text: 'plain item 3'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_menu_Menu_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","allowOtherMenus":{"!type":"bool","!doc":"

True to allow multiple menus to be displayed at the same time.

\n"},"ariaRole":{"!type":"string"},"autoRender":{"!type":"bool","!doc":"

Floating is true, so autoRender always happens.

\n"},"constrain":{"!type":"bool","!doc":"

Menus are constrained to the document body by default.

\n"},"enableKeyNav":{"!type":"bool","!doc":"

True to enable keyboard navigation for controlling the menu.\nThis option should generally be disabled when form fields are\nbeing used inside the menu.

\n"},"floating":{"!type":"bool","!doc":"

A Menu configured as floating: true (the default) will be rendered as an absolutely positioned,\nfloating Component. If configured as floating: false, the Menu may be\nused as a child item of another Container.

\n"},"hidden":{"!type":"bool","!doc":"

True to initially render the Menu as hidden, requiring to be shown manually.

\n\n

Defaults to true when floating: true, and defaults to false when floating: false.

\n"},"hideMode":{"!type":"string","!doc":"

A String which specifies how this Component's encapsulating DOM element will be hidden. Values may be:

\n\n\n\n"},"ignoreParentClicks":{"!type":"bool","!doc":"

True to ignore clicks on any item in this menu that is a parent item (displays a submenu)\nso that the submenu is not dismissed when clicking the parent item.

\n"},"layout":{"!type":"+Ext.enums.Layout|?"},"minWidth":{"!type":"number","!doc":"

The minimum width of the Menu. The default minWidth only applies when the floating config is true.

\n"},"plain":{"!type":"bool","!doc":"

True to remove the incised line down the left side of the menu and to not indent general Component items.

\n\n

MenuItems will always have space at their start for an icon. With the plain setting,\nnon MenuItem child components will not be indented to line up.

\n\n

Basically, plain:true makes a Menu behave more like a regular HBox layout\nPanel which just has the same background as a Menu.

\n\n

See also the showSeparator config.

\n"},"showSeparator":{"!type":"bool","!doc":"

True to show the icon separator.

\n"},"defaultMinWidth":{"!type":"number"},"isMenu":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Menu, or subclass thereof.

\n"},"parentMenu":{"!type":"+Ext.menu.Menu","!doc":"

The parent Menu of this Menu.

\n"},"afterShow":{"!type":"fn() -> !this","!doc":"

Invoked after the Component is shown (after onShow is called).

\n\n

Gets passed the same parameters as show.

\n"},"beforeRender":{"!type":"fn() -> !this"},"beforeShow":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is shown.

\n"},"canActivateItem":{"!type":"fn(item: ?) -> bool","!doc":"

Returns whether a menu item can be activated or not.

\n"},"deactivateActiveItem":{"!type":"fn(andBlurFocusedItem: ?) -> !this","!doc":"

Deactivates the current active item on the menu, if one exists.

\n"},"getFocusEl":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the focus holder element associated with this Container. By default, this is the Container's target\nelement. Subclasses which use embedded focusable elements (such as Window and Button) should override this for use\nby the focus method.

\n"},"getHierarchyState":{"!type":"fn() -> !this","!doc":"

As menus are never contained, a Menu's visibility only ever depends upon its own hidden state.\nIgnore hiddenness from the ancestor hierarchy, override it with local hidden state.

\n"},"getItemFromEvent":{"!type":"fn(e: ?) -> !this"},"getRefOwner":{"!type":"fn() -> !this","!doc":"

Used by ComponentQuery, and the up method to find the\nowning Component in the linkage hierarchy.

\n\n

By default this returns the Container which contains this Component.

\n\n

This may be overriden by Component authors who implement ownership hierarchies which are not\nbased upon ownerCt, such as BoundLists being owned by Fields or Menus being owned by Buttons.

\n"},"hide":{"!type":"fn() -> +Ext.Component","!doc":"

Hides this Component, setting it to invisible using the configured hideMode.

\n"},"initHierarchyEvents":{"!type":"fn() -> !this","!doc":"

Menus do not have owning containers on which they depend for visibility. They stand outside\nany container hierarchy.

\n"},"isVisible":{"!type":"fn() -> bool","!doc":"

Menus are never contained, and must not ascertain their visibility from the ancestor hierarchy

\n"},"lookupComponent":{"!type":"fn(cmp: ?) -> !this"},"lookupItemFromObject":{"!type":"fn(cmp: ?) -> !this"},"lookupItemFromString":{"!type":"fn(cmp: ?) -> !this"},"onBoxReady":{"!type":"fn() -> !this"},"onClick":{"!type":"fn(e: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onMouseLeave":{"!type":"fn(e: ?) -> !this"},"onMouseOver":{"!type":"fn(e: ?) -> !this"},"registerWithOwnerCt":{"!type":"fn() -> !this","!doc":"

Private implementation for Menus. They are a special case.\nThey are always global floaters, never contained.

\n"},"setActiveItem":{"!type":"fn(item: ?) -> !this"},"setVerticalPosition":{"!type":"fn() -> !this","!doc":"

adjust the vertical position of the menu if the height of the\nmenu is equal (or greater than) the viewport size

\n"},"showBy":{"!type":"fn(cmp: ?, pos: ?, off: ?) -> +Ext.Component","!doc":"

Shows this component by the specified Component or Element.\nUsed when this component is floating.

\n"},"click":{"!type":"fn(menu: +Ext.menu.Menu, item: +Ext.Component, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when this menu is clicked

\n"},"mouseenter":{"!type":"fn(menu: +Ext.menu.Menu, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse enters this menu

\n"},"mouseleave":{"!type":"fn(menu: +Ext.menu.Menu, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse leaves this menu

\n"},"mouseover":{"!type":"fn(menu: +Ext.menu.Menu, item: +Ext.Component, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse is hovering over this menu

\n"}}},"Separator":{"!doc":"

Adds a separator bar to a menu, used to divide logical groups of menu items. Generally you will\nadd one of these by using \"-\" in your call to add() or in your items config rather than creating one directly.

\n\n
Ext.create('Ext.menu.Menu', {\n    width: 100,\n    height: 100,\n    floating: false,  // usually you want this set to True (default)\n    renderTo: Ext.getBody(),  // usually rendered by it's containing component\n    items: [{\n        text: 'icon item',\n        iconCls: 'add16'\n    },{\n        xtype: 'menuseparator'\n    },{\n       text: 'separator above'\n    },{\n       text: 'regular item'\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_menu_Separator_cfg)","prototype":{"!proto":"Ext.menu.Item.prototype","activeCls":{"!type":"string"},"canActivate":{"!type":"bool"},"clickHideDelay":{"!type":"bool"},"destroyMenu":{"!type":"bool"},"disabledCls":{"!type":"bool"},"hideOnClick":{"!type":"bool"},"href":{"!type":"string"},"hrefTarget":{"!type":"string"},"icon":{"!type":"string"},"iconCls":{"!type":"string"},"menu":{"!type":"?"},"menuAlign":{"!type":"string"},"menuExpandDelay":{"!type":"number"},"menuHideDelay":{"!type":"number"},"plain":{"!type":"bool"},"separatorCls":{"!type":"string","!doc":"

The CSS class used by the separator item to show the incised line.

\n"},"text":{"!type":"string"},"beforeRender":{"!type":"fn(ct: ?, pos: ?) -> !this"}}}},"panel":{"AbstractPanel":{"!doc":"

A base class which provides methods common to Panel classes across the Sencha product range.

\n\n

Please refer to sub class's documentation

\n","!type":"fn(config: +Ext.Element|string|Ext_panel_AbstractPanel_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"bodyBorder":{"!type":"bool","!doc":"

A shortcut to add or remove the border on the body of a panel. In the classic theme\nthis only applies to a panel which has the frame configuration set to true.

\n"},"bodyCls":{"!type":"string|[string]","!doc":"

A CSS class, space-delimited string of classes, or array of classes to be applied to the panel's body element.\nThe following examples are all valid:

\n\n
bodyCls: 'foo'\nbodyCls: 'foo bar'\nbodyCls: ['foo', 'bar']\n
\n\n"},"bodyPadding":{"!type":"number|string","!doc":"

A shortcut for setting a padding style on the body element. The value can either be\na number to be applied to all sides, or a normal css string describing padding.\nDefaults to undefined.

\n"},"bodyStyle":{"!type":"string|?|fn()","!doc":"

Custom CSS styles to be applied to the panel's body element, which can be supplied as a valid CSS style string,\nan object containing style property name/value pairs or a function that returns such a string or object.\nFor example, these two formats are interpreted to be equivalent:

\n\n
bodyStyle: 'background:#ffc; padding:10px;'\n\nbodyStyle: {\n    background: '#ffc',\n    padding: '10px'\n}\n
\n\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"dockedItems":{"!type":"?|[?]","!doc":"

A component or series of components to be added as docked items to this panel.\nThe docked items can be docked to either the top, right, left or bottom of a panel.\nThis is typically used for things like toolbars or tab bars:

\n\n
var panel = new Ext.panel.Panel({\n    fullscreen: true,\n    dockedItems: [{\n        xtype: 'toolbar',\n        dock: 'top',\n        items: [{\n            text: 'Docked to the top'\n        }]\n    }]\n});
\n\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shrinkWrapDock":{"!type":"bool|number","!doc":"

Allows for this panel to include the dockedItems when trying to determine the overall\nsize of the panel. This option is only applicable when this panel is also shrink wrapping in the\nsame dimensions. See Ext.AbstractComponent.shrinkWrap for an explanation of the configuration options.

\n"},"body":{"!type":"+Ext.dom.Element","!doc":"

The Panel's body Element which may be used to contain HTML content.\nThe content may be specified in the html config, or it may be loaded using the\nloader config. Read-only.

\n\n

If this is used to load visible HTML elements in either way, then\nthe Panel may not be used as a Layout for hosting nested Panels.

\n\n

If this Panel is intended to be used as the host of a Layout (See layout\nthen the body Element must not be loaded or changed - it is under the control\nof the Panel's Layout.

\n"},"bodyPosProps":{"!type":"?"},"childEls":{"!type":"[?]"},"contentPaddingProperty":{"!type":"string","!doc":"

The name of the padding property that is used by the layout to manage\npadding. See managePadding

\n"},"emptyArray":{"!type":"[?]"},"isPanel":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Panel, or subclass thereof.

\n"},"addBodyCls":{"!type":"fn(cls: string) -> +Ext.panel.Panel","!doc":"

Adds a CSS class to the body element. If not rendered, the class will\nbe added when the panel is rendered.

\n"},"addUIClsToElement":{"!type":"fn(cls: ?) -> !this","!doc":"

inherit docs

\n"},"addUIToElement":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"applyTargetCls":{"!type":"fn(targetCls: ?) -> !this","!doc":"

The targetCls is a CSS class that the layout needs added to the targetEl. The targetEl is where the container's\nchildren are rendered and is usually just the main el. Some containers (e.g. panels) use a body instead.

\n\n

In general, if a class overrides getTargetEl it will also need to override this method. This is necessary to\navoid a post-render step to add the targetCls.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"getCollapsedDockedItems":{"!type":"fn() -> !this"},"getComponent":{"!type":"fn(comp: string|number) -> +Ext.Component","!doc":"

Attempts a default component lookup (see Ext.container.Container.getComponent). If the component is not found in the normal\nitems, the dockedItems are searched and the matched component (if any) returned (see getDockedComponent). Note that docked\nitems will only be matched by component id or itemId -- if you pass a numeric index only non-docked child components will be searched.

\n"},"getProtoBody":{"!type":"fn() -> !this"},"getRefItems":{"!type":"fn(deep: ?) -> !this","!doc":"

Used by ComponentQuery, child and down to retrieve all of the items\nwhich can potentially be considered a child of this Container.

\n\n

This may be overriden by Components which have ownership of Components\nthat are not contained in the items collection.

\n\n

NOTE: IMPORTANT note for maintainers:\nItems are returned in tree traversal order. Each item is appended to the result array\nfollowed by the results of that child's getRefItems call.\nFloating child items are appended after internal child items.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"initBodyBorder":{"!type":"fn() -> !this"},"initBodyStyles":{"!type":"fn() -> string","!doc":"

Parses the bodyStyle config if available to create a style string that will be applied to the body element.\nThis also includes bodyPadding and bodyBorder if available.

\n"},"initBorderProps":{"!type":"fn() -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initItems":{"!type":"fn() -> !this"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"removeBodyCls":{"!type":"fn(cls: string) -> +Ext.panel.Panel","!doc":"

Removes a CSS class from the body element.

\n"},"removeUIClsFromElement":{"!type":"fn(cls: ?) -> !this","!doc":"

inherit docs

\n"},"removeUIFromElement":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"setBodyStyle":{"!type":"fn(style: +Mixed, value: string) -> +Ext.panel.Panel","!doc":"

Sets the body style according to the passed parameters.

\n"},"setupRenderTpl":{"!type":"fn(renderTpl: ?) -> !this"}}},"DD":{"!doc":"

DD implementation for Panels.

\n","!type":"fn(panel: ?, cfg: ?)","prototype":{"!proto":"Ext.dd.DragSource.prototype","afterInvalidDrop":{"!type":"fn(e: +Event, id: string)","!doc":"

An empty function by default, but provided so that you can perform a custom action\nafter an invalid drop has occurred by providing an implementation.

\n"},"autoOffset":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

Sets the pointer offset to the distance between the linked element's top\nleft corner and the location the element was clicked.

\n"},"b4MouseDown":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop

\n"},"b4StartDrag":{"!type":"fn(x: ?, y: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop

\n"},"createFrame":{"!type":"fn() -> !this","!doc":"

Creates the proxy element if it does not yet exist

\n"},"endDrag":{"!type":"fn(e: ?) -> !this","!doc":"

overrides Ext.dd.DragDrop\nBy default we try to move the element to the last location of the frame.\nThis is so that the default behavior mirrors that of Ext.dd.DD.

\n"},"getDragEl":{"!type":"fn(e: ?) -> +HTMLElement","!doc":"

Returns a reference to the actual element to drag. By default this is\nthe same as the html element, but it can be assigned to another\nelement. An example of this can be found in Ext.dd.DDProxy

\n"},"onInitDrag":{"!type":"fn(x: ?, y: ?) -> !this"},"onInvalidDrop":{"!type":"fn(target: ?, e: ?, id: ?) -> !this","!doc":"

Override this, we don't want to repair on an \"invalid\" drop, the panel\nshould main it's position

\n"},"setupEl":{"!type":"fn(panel: ?) -> !this"},"showFrame":{"!type":"fn(iPageX: number, iPageY: number) -> !this","!doc":"

Resizes the drag frame to the dimensions of the clicked object, positions\nit over the object, and finally displays it

\n"},"startDrag":{"!type":"fn() -> !this","!doc":"

Abstract method called after a drag/drop object is clicked\nand the drag or mousedown time thresholds have beeen met.

\n"}}},"Header":{"!doc":"

Simple header class which is used for on Ext.panel.Panel and Ext.window.Window.

\n","!type":"fn(config: +Ext.Element|string|Ext_panel_Header_cfg)","prototype":{"!proto":"Ext.container.Container.prototype","componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for the panel header. The\ndefault font-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"icon":{"!type":"string","!doc":"

Path to image for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"iconCls":{"!type":"string","!doc":"

CSS class for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shrinkWrap":{"!type":"bool|number","!doc":"

If this property is a number, it is interpreted as follows:

\n\n\n\n\n

In CSS terms, shrink-wrap width is analogous to an inline-block element as opposed\nto a block-level element. Some container layouts always shrink-wrap their children,\neffectively ignoring this property (e.g., Ext.layout.container.HBox,\nExt.layout.container.VBox, Ext.layout.component.Dock).

\n"},"title":{"!type":"string","!doc":"

The title text to display.

\n"},"titleAlign":{"!type":"string","!doc":"

The alignment of the title text within the available space between the\nicon and the tools.

\n\n

May be \"left\", \"right\" or \"center\". Defaults to the browser's natural\nbehavior depending on the css direction property - \"left\" when direction\nis ltr and \"right\" when direction is rtl\n(see Ext.AbstractComponent.rtl).

\n"},"titlePosition":{"!type":"number","!doc":"

The ordinal position among the header items (tools and other components specified using the items config)\nat which the title component is inserted. See Panel's header config.

\n\n

If not specified, the title is inserted after any items, but before any Ext.panel.Panel.tools.

\n\n

Note that if an icon or iconCls has been configured, then the icon component will be the\nfirst item before all specified tools or items. This configuration does not include the icon.

\n"},"headerCls":{"!type":"string","!doc":"

a class for styling that is shared between panel and window headers

\n"},"headingTpl":{"!type":"[?]"},"indicateDrag":{"!type":"bool"},"isHeader":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Header, or subclass thereof.

\n"},"weight":{"!type":"?"},"addTool":{"!type":"fn(tool: ?) -> !this","!doc":"

Add a tool to the header

\n"},"addUIClsToElement":{"!type":"fn(cls: ?) -> !this","!doc":"

inherit docs

\n"},"addUIToElement":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"adjustTitlePosition":{"!type":"fn() -> !this"},"afterLayout":{"!type":"fn() -> !this","!doc":"

Invoked after the Container has laid out (and rendered if necessary)\nits child Components.

\n"},"applyTargetCls":{"!type":"fn(targetCls: ?) -> !this","!doc":"

The targetCls is a CSS class that the layout needs added to the targetEl. The targetEl is where the container's\nchildren are rendered and is usually just the main el. Some containers (e.g. panels) use a body instead.

\n\n

In general, if a class overrides getTargetEl it will also need to override this method. This is necessary to\navoid a post-render step to add the targetCls.

\n"},"beforeLayout":{"!type":"fn() -> !this","!doc":"

Occurs before componentLayout is run. In previous releases, this method could\nreturn false to prevent its layout but that is not supported in Ext JS 4.1 or\nhigher. This method is simply a notification of the impending layout to give the\ncomponent a chance to adjust the DOM. Ideally, DOM reads should be avoided at this\ntime to reduce expensive document reflows.

\n"},"beforeRender":{"!type":"fn() -> !this"},"fireClickEvent":{"!type":"fn(type: ?, e: ?) -> !this"},"getDockName":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the focus holder element associated with this Container. By default, this is the Container's target\nelement. Subclasses which use embedded focusable elements (such as Window and Button) should override this for use\nby the focus method.

\n"},"getFramingInfoCls":{"!type":"fn() -> !this"},"getMinWidth":{"!type":"fn() -> !this","!doc":"

Used when shrink wrapping a Panel to either content width or header width.\nThis returns the minimum width required to display the header, icon and tools.\nThis is only intended for use with horizontal headers.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"getTools":{"!type":"fn() -> [+Ext.panel.Tool]","!doc":"

Gets the tools for this header.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initIconCmp":{"!type":"fn() -> !this"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Add bodyCls to the renderData object

\n"},"onAdd":{"!type":"fn(component: ?, index: ?) -> !this","!doc":"

Set up the tools.<tool type> link in the owning Panel.

\n"},"onClick":{"!type":"fn(e: ?) -> !this"},"onDblClick":{"!type":"fn(e: ?) -> !this"},"onTitleRender":{"!type":"fn() -> !this"},"removeUIClsFromElement":{"!type":"fn(cls: ?) -> !this","!doc":"

inherit docs

\n"},"removeUIFromElement":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"setGlyph":{"!type":"fn(glyph: number|string) -> !this","!doc":"

Sets glyph that provides the icon image for this header. This method will replace any existing\nglyph if one has already been set.

\n"},"setIcon":{"!type":"fn(icon: string) -> !this","!doc":"

Sets the image path that provides the icon image for this header. This method will replace any existing\nicon if one has already been set.

\n"},"setIconCls":{"!type":"fn(cls: string) -> !this","!doc":"

Sets the CSS class that provides the icon image for this header. This method will replace any existing\nicon class if one has already been set.

\n"},"setTitle":{"!type":"fn(title: string) -> !this","!doc":"

Sets the title of the header.

\n"},"syncBeforeAfterTitleClasses":{"!type":"fn() -> !this"},"click":{"!type":"fn(this: +Ext.panel.Header, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the header is clicked. This event will not be fired\nif the click was on a Ext.panel.Tool

\n"},"dblclick":{"!type":"fn(this: +Ext.panel.Header, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the header is double clicked. This event will not\nbe fired if the click was on a Ext.panel.Tool

\n"}}},"Panel":{"!doc":"

Panel is a container that has specific functionality and structural components that make it the perfect building\nblock for application-oriented user interfaces.

\n\n

Panels are, by virtue of their inheritance from Ext.container.Container, capable of being configured with a\nlayout, and containing child Components.

\n\n

When either specifying child items of a Panel, or dynamically adding\nComponents to a Panel, remember to consider how you wish the Panel to arrange those child elements, and whether those\nchild elements need to be sized using one of Ext's built-in layout\nschemes. By default, Panels use the Auto scheme. This simply renders child\ncomponents, appending them one after the other inside the Container, and does not apply any sizing at all.

\n\n

\"Panel

\n\n

A Panel may also contain bottom and top toolbars, along with separate header, footer and body sections.

\n\n

Panel also provides built-in collapsible, expandable and closable behavior. Panels can\nbe easily dropped into any Container or layout, and the layout and rendering pipeline\nis completely managed by the framework.

\n\n

Note: By default, the close header tool destroys the Panel resulting in removal of the\nPanel and the destruction of any descendant Components. This makes the Panel object, and all its descendants\nunusable. To enable the close tool to simply hide a Panel for later re-use, configure the Panel with\ncloseAction: 'hide'.

\n\n

Usually, Panels are used as constituents within an application, in which case, they would be used as child items of\nContainers, and would themselves use Ext.Components as child items. However to illustrate simply rendering a\nPanel into the document, here's how to do it:

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Hello',\n    width: 200,\n    html: '<p>World!</p>',\n    renderTo: Ext.getBody()\n});\n
\n\n

A more realistic scenario is a Panel created to house input fields which will not be rendered, but used as a\nconstituent part of a Container:

\n\n
var filterPanel = Ext.create('Ext.panel.Panel', {\n    bodyPadding: 5,  // Don't want content to crunch against the borders\n    width: 300,\n    title: 'Filters',\n    items: [{\n        xtype: 'datefield',\n        fieldLabel: 'Start date'\n    }, {\n        xtype: 'datefield',\n        fieldLabel: 'End date'\n    }],\n    renderTo: Ext.getBody()\n});\n
\n\n

Note that the Panel above is configured to render into the document and assigned a size. In a real world scenario,\nthe Panel will often be added inside a Container which will use a layout to render, size and position its\nchild Components.

\n\n

Panels will often use specific layouts to provide an application with shape and structure by containing and\narranging child Components:

\n\n
var resultsPanel = Ext.create('Ext.panel.Panel', {\n    title: 'Results',\n    width: 600,\n    height: 400,\n    renderTo: Ext.getBody(),\n    layout: {\n        type: 'vbox',       // Arrange child items vertically\n        align: 'stretch',    // Each takes up full width\n        padding: 5\n    },\n    items: [{               // Results grid specified as a config object with an xtype of 'grid'\n        xtype: 'grid',\n        columns: [{header: 'Column One'}],            // One header just for show. There's no data,\n        store: Ext.create('Ext.data.ArrayStore', {}), // A dummy empty data store\n        flex: 1                                       // Use 1/3 of Container's height (hint to Box layout)\n    }, {\n        xtype: 'splitter'   // A splitter between the two child items\n    }, {                    // Details Panel specified as a config object (no xtype defaults to 'panel').\n        title: 'Details',\n        bodyPadding: 5,\n        items: [{\n            fieldLabel: 'Data item',\n            xtype: 'textfield'\n        }], // An array of form fields\n        flex: 2             // Use 2/3 of Container's height (hint to Box layout)\n    }]\n});\n
\n\n

The example illustrates one possible method of displaying search results. The Panel contains a grid with the\nresulting data arranged in rows. Each selected row may be displayed in detail in the Panel below. The vbox layout is used to arrange the two vertically. It is configured to stretch child items\nhorizontally to full width. Child items may either be configured with a numeric height, or with a flex value to\ndistribute available space proportionately.

\n\n

This Panel itself may be a child item of, for exaple, a Ext.tab.Panel which will size its child items to fit\nwithin its content area.

\n\n

Using these techniques, as long as the layout is chosen and configured correctly, an application may have any\nlevel of nested containment, all dynamically sized according to configuration, the user's preference and available\nbrowser size.

\n","!type":"fn(config: +Ext.Element|string|Ext_panel_Panel_cfg)","prototype":{"!proto":"Ext.panel.AbstractPanel.prototype","animCollapse":{"!type":"bool","!doc":"

true to animate the transition when the panel is collapsed, false to skip the animation (defaults to true\nif the Ext.fx.Anim class is available, otherwise false). May also be specified as the animation\nduration in milliseconds.

\n"},"bbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Bottom Bar'.

\n\n
bbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'bottom',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"buttonAlign":{"!type":"string","!doc":"

The alignment of any buttons added to this panel. Valid values are 'right', 'left' and 'center' (defaults to\n'right' for buttons/fbar, 'left' for other toolbar types).

\n\n

NOTE: The prefered way to specify toolbars is to use the dockedItems config. Instead of buttonAlign you\nwould add the layout: { pack: 'start' | 'center' | 'end' } option to the dockedItem config.

\n"},"buttons":{"!type":"?|[?]","!doc":"

Convenience config used for adding buttons docked to the bottom of the panel. This is a\nsynonym for the fbar config.

\n\n
buttons: [\n  { text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'bottom',\n    ui: 'footer',\n    defaults: {minWidth: minButtonWidth},\n    items: [\n        { xtype: 'component', flex: 1 },\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n\n

The minButtonWidth is used as the default minWidth for\neach of the buttons in the buttons toolbar.

\n"},"closable":{"!type":"bool","!doc":"

True to display the 'close' tool button and allow the user to close the window, false to hide the button and\ndisallow closing the window.

\n\n

By default, when close is requested by clicking the close button in the header, the close method will be\ncalled. This will destroy the Panel and its content meaning that it may not be\nreused.

\n\n

To make closing a Panel hide the Panel so that it may be reused, set closeAction to 'hide'.

\n"},"closeAction":{"!type":"string","!doc":"

The action to take when the close header tool is clicked:

\n\n\n\n\n

Note: This behavior has changed! setting does affect the close method which will invoke the\napproriate closeAction.

\n"},"collapseDirection":{"!type":"string","!doc":"

The direction to collapse the Panel when the toggle button is clicked.

\n\n

Defaults to the headerPosition

\n\n

Important: This config is ignored for collapsible Panels which are direct child items of a border layout.

\n\n

Specify as 'top', 'bottom', 'left' or 'right'.

\n"},"collapseFirst":{"!type":"bool","!doc":"

true to make sure the collapse/expand toggle button always renders first (to the left of) any other tools in\nthe panel's title bar, false to render it last.

\n"},"collapseMode":{"!type":"string","!doc":"

Important: this config is only effective for collapsible Panels which are direct child items of a\nborder layout.

\n\n

When not a direct child item of a border layout, then the Panel's header\nremains visible, and the body is collapsed to zero dimensions. If the Panel has no header, then a new header\n(orientated correctly depending on the collapseDirection) will be inserted to show a the title and a re-\nexpand tool.

\n\n

When a child item of a border layout, this config has three possible values:

\n\n\n\n"},"collapsed":{"!type":"bool","!doc":"

true to render the panel collapsed, false to render it expanded.

\n"},"collapsedCls":{"!type":"string","!doc":"

A CSS class to add to the panel's element after it has been collapsed.

\n"},"collapsible":{"!type":"bool","!doc":"

True to make the panel collapsible and have an expand/collapse toggle Tool added into the header tool button\narea. False to keep the panel sized either statically, or by an owning layout manager, with no toggle Tool.\nWhen a panel is used in a border layout, the floatable option\ncan influence the behavior of collapsing.\nSee collapseMode and collapseDirection

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the panel within its containing element, false to allow it to fall outside of its containing\nelement. By default floating components such as Windows will be rendered to document.body. To render and constrain the window within\nanother element specify renderTo. Optionally the header only can be constrained\nusing constrainHeader.

\n"},"constrainHeader":{"!type":"bool","!doc":"

True to constrain the panel header within its containing element (allowing the panel body to fall outside of\nits containing element) or false to allow the header to fall outside its containing element.\nOptionally the entire panel can be constrained using constrain.

\n"},"dockedItems":{"!type":"?|[?]","!doc":"

A component or series of components to be added as docked items to this panel. The docked items can be docked to\neither the top, right, left or bottom of a panel. This is typically used for things like toolbars or tab bars:

\n\n
var panel = new Ext.panel.Panel({\n    dockedItems: [{\n        xtype: 'toolbar',\n        dock: 'top',\n        items: [{\n            text: 'Docked to the top'\n        }]\n    }]\n});\n
\n"},"fbar":{"!type":"?|[?]","!doc":"

Convenience config used for adding items to the bottom of the panel. Short for Footer Bar.

\n\n
fbar: [\n  { type: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'bottom',\n    ui: 'footer',\n    defaults: {minWidth: minButtonWidth},\n    items: [\n        { xtype: 'component', flex: 1 },\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n\n

The minButtonWidth is used as the default minWidth for\neach of the buttons in the fbar.

\n"},"floatable":{"!type":"bool","!doc":"

Important: This config is only effective for collapsible Panels which are direct child items of a\nborder layout.

\n\n

true to allow clicking a collapsed Panel's placeholder to display the Panel floated above the layout,\nfalse to force the user to fully expand a collapsed region by clicking the expand button to see it again.

\n"},"frame":{"!type":"bool","!doc":"

True to apply a frame to the panel.

\n"},"frameHeader":{"!type":"bool","!doc":"

True to apply a frame to the panel panels header (if 'frame' is true).

\n"},"glyph":{"!type":"number|string","!doc":"

A numeric unicode character code to use as the icon for the panel header. The\ndefault font-family for glyphs can be set globally using\nExt.setGlyphFontFamily(). Alternatively, this\nconfig option accepts a string with the charCode and font-family separated by the\n@ symbol. For example '65@My Font Family'.

\n"},"header":{"!type":"bool|?","!doc":"

Pass as false to prevent a Header from being created and shown.

\n\n

Pass as a config object (optionally containing an xtype) to custom-configure this Panel's header.

\n\n

See Ext.panel.Header for all the options that may be specified here.

\n\n

A panel header is a Ext.container.Container which contains the Panel's title and tools.\nYou may also configure the Panel's header option with its own child items which go before the tools

\n\n

By default the panel title is inserted after items configured in this config, but before any tools.\nTo insert the title at any point in the full array, specify the #titlePosition config:

\n\n

new Ext.panel.Panel({\n title: 'Test',\n tools: [{\n type: 'refresh\n }, {\n type: 'help'\n }],\n titlePosition: 2 // Title will come AFTER the two tools\n ...\n });

\n"},"headerOverCls":{"!type":"string","!doc":"

Optional CSS class to apply to the header element on mouseover

\n"},"headerPosition":{"!type":"string","!doc":"

Specify as 'top', 'bottom', 'left' or 'right'.

\n"},"hideCollapseTool":{"!type":"bool","!doc":"

true to hide the expand/collapse toggle button when collapsible == true, false to display it.

\n"},"icon":{"!type":"string","!doc":"

Path to image for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"iconCls":{"!type":"string","!doc":"

CSS class for an icon in the header. Used for displaying an icon to the left of a title.

\n"},"lbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Left Bar' (left-docked, vertical toolbar).

\n\n
lbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'left',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"manageHeight":{"!type":"bool","!doc":"

When true, the dock component layout writes\nheight information to the panel's DOM elements based on its shrink wrap height\ncalculation. This ensures that the browser respects the calculated height.\nWhen false, the dock component layout will not write heights on the panel or its\nbody element. In some simple layout cases, not writing the heights to the DOM may\nbe desired because this allows the browser to respond to direct DOM manipulations\n(like animations).

\n"},"minButtonWidth":{"!type":"number","!doc":"

Minimum width of all footer toolbar buttons in pixels. If set, this will be used as the default\nvalue for the Ext.button.Button.minWidth config of each Button added to the footer toolbar via the\nfbar or buttons configurations. It will be ignored for buttons that have a minWidth configured\nsome other way, e.g. in their own config object or via the defaults of\ntheir parent container.

\n"},"overlapHeader":{"!type":"bool","!doc":"

True to overlap the header in a panel over the framing of the panel itself. This is needed when frame:true (and\nis done automatically for you). Otherwise it is undefined. If you manually add rounded corners to a panel header\nwhich does not have frame:true, this will need to be set to true.

\n"},"placeholder":{"!type":"+Ext.Component|?","!doc":"

Important: This config is only effective for collapsible Panels which are direct child items of a\nborder layout when not using the 'header' collapseMode.

\n\n

Optional. A Component (or config object for a Component) to show in place of this Panel when this Panel is\ncollapsed by a border layout. Defaults to a generated Header containing a Tool to re-expand the Panel.

\n"},"placeholderCollapseHideMode":{"!type":"number","!doc":"

The mode for hiding collapsed panels when\nusing collapseMode \"placeholder\".

\n"},"preventHeader":{"!type":"bool"},"rbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Right Bar' (right-docked, vertical toolbar).

\n\n
rbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'right',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"simpleDrag":{"!type":"bool","!doc":"

When draggable is true, Specify this as true to cause the draggable config\nto work the same as it does in Window. This Panel\njust becomes movable. No DragDrop instances receive any notifications.\nFor example:

\n\n
var win = Ext.create('widget.window', {\n    height: 300,\n    width: 300,\n    title: 'Constraining Window',\n    closable: false,\n    items: {\n        title: \"Floating Panel\",\n        width: 100,\n        height: 100,\n        floating: true,\n        draggable: true,\n        constrain: true,\n        simpleDrag: true\n    }\n});\nwin.show();\n// Floating components begin life hidden\nwin.child('[title=Floating Panel]').show();\n
\n"},"tbar":{"!type":"?|[?]","!doc":"

Convenience config. Short for 'Top Bar'.

\n\n
tbar: [\n  { xtype: 'button', text: 'Button 1' }\n]\n
\n\n

is equivalent to

\n\n
dockedItems: [{\n    xtype: 'toolbar',\n    dock: 'top',\n    items: [\n        { xtype: 'button', text: 'Button 1' }\n    ]\n}]\n
\n"},"title":{"!type":"string","!doc":"

The title text to be used to display in the panel header. When a\ntitle is specified the Ext.panel.Header will automatically be created and displayed unless\nheader is set to false.

\n"},"titleAlign":{"!type":"string","!doc":"

The alignment of the title text within the available space between the\nicon and the tools.

\n\n

May be \"left\", \"right\" or \"center\". Defaults to the browser's natural\nbehavior depending on the css direction property - \"left\" when direction\nis ltr and \"right\" when direction is rtl\n(see Ext.AbstractComponent.rtl).

\n"},"titleCollapse":{"!type":"bool","!doc":"

true to allow expanding and collapsing the panel (when collapsible = true) by clicking anywhere in\nthe header bar, false) to allow it only by clicking to tool button). When a panel is used in a\nborder layout, the floatable option can influence the behavior of collapsing.

\n"},"tools":{"!type":"[?]|[+Ext.panel.Tool]","!doc":"

An array of Ext.panel.Tool configs/instances to be added to the header tool area. The tools are stored as\nchild components of the header container. They can be accessed using down and {query}, as well as the\nother component methods. The toggle tool is automatically created if collapsible is set to true.

\n\n

Note that, apart from the toggle tool which is provided when a panel is collapsible, these tools only provide the\nvisual button. Any required functionality must be provided by adding handlers that implement the necessary\nbehavior.

\n\n

Example usage:

\n\n
tools:[{\n    type:'refresh',\n    tooltip: 'Refresh form Data',\n    // hidden:true,\n    handler: function(event, toolEl, panelHeader) {\n        // refresh logic\n    }\n},\n{\n    type:'help',\n    tooltip: 'Get Help',\n    callback: function(panel, tool, event) {\n        // show help here\n    }\n}]\n
\n\n

The difference between handler and callback is the signature. For details on\nthe distinction, see Ext.panel.Tool.

\n"},"dd":{"!type":"+Ext.dd.DragSource|+Ext.util.ComponentDragger","!doc":"

Only present if this Panel has been configured with draggable true.

\n\n

Simple dragging

\n\n

If this Panel is configured simpleDrag true (the default is false), this property\nwill reference an instance of Ext.util.ComponentDragger (A subclass of\nDragTracker) which handles moving the Panel's DOM Element,\nand constraining according to the constrain and constrainHeader .

\n\n

This object fires various events during its lifecycle and during a drag operation.

\n\n

Complex dragging interacting with other DragDrop instances

\n\n

By default, this property in a draggable Panel will contain an instance of Ext.dd.DragSource which handles dragging the Panel.

\n\n

The developer must provide implementations of the abstract methods of Ext.dd.DragSource in order to\nsupply behaviour for each stage of the drag/drop process. See draggable.

\n"},"addTool":{"!type":"fn(tools: [?]|[+Ext.panel.Tool]) -> !this","!doc":"

Add tools to this panel

\n"},"addTools":{"!type":"fn() -> !this","!doc":"

Template method to be implemented in subclasses to add their tools after the collapsible tool.

\n"},"afterCollapse":{"!type":"fn(animated: bool) -> !this","!doc":"

Invoked after the Panel is Collapsed.

\n"},"afterExpand":{"!type":"fn(animated: bool) -> !this","!doc":"

Invoked after the Panel is Expanded.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"beginCollapse":{"!type":"fn() -> !this","!doc":"

Called before the change from default, configured state into the collapsed state.\nThis method may be called at render time to enable rendering in an initially collapsed state,\nor at runtime when an existing, fully layed out Panel may be collapsed.\nIt basically saves configs which need to be clobbered for the duration of the collapsed state.

\n"},"beginDrag":{"!type":"fn() -> !this"},"beginExpand":{"!type":"fn() -> !this"},"bridgeToolbars":{"!type":"fn() -> !this"},"close":{"!type":"fn(panel: +Ext.panel.Panel, eOpts: ?)","!doc":"

Fires when the user closes the panel.

\n"},"collapse":{"!type":"fn(p: +Ext.panel.Panel, eOpts: ?)","!doc":"

Fires after this Panel has collapsed.

\n"},"collapsedHorizontal":{"!type":"fn() -> !this"},"collapsedVertical":{"!type":"fn() -> !this"},"convertCollapseDir":{"!type":"fn(collapseDir: ?) -> !this","!doc":"

converts a collapsdDir into an anchor argument for Element.slideIn\noverridden in rtl mode to switch \"l\" and \"r\"

\n"},"createReExpander":{"!type":"fn(direction: ?, defaults: ?) -> !this"},"doClose":{"!type":"fn() -> !this"},"doCollapseExpand":{"!type":"fn(flags: ?, animate: ?) -> !this"},"endDrag":{"!type":"fn() -> !this"},"expand":{"!type":"fn(p: +Ext.panel.Panel, eOpts: ?)","!doc":"

Fires after this Panel has expanded.

\n"},"findReExpander":{"!type":"fn(direction: ?) -> !this"},"floatCollapsedPanel":{"!type":"fn() -> !this"},"getCollapsed":{"!type":"fn() -> bool|string","!doc":"

Returns the current collapsed state of the panel.

\n"},"getDefaultContentTarget":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the focus holder element associated with this Container. By default, this is the Container's target\nelement. Subclasses which use embedded focusable elements (such as Window and Button) should override this for use\nby the focus method.

\n"},"getHeader":{"!type":"fn() -> !this","!doc":"

Gets the Header for this panel.

\n"},"getHeaderCollapsedClasses":{"!type":"fn(header: ?) -> !this","!doc":"

Create the class array to add to the Header when collpsed.

\n"},"getHeightAuthority":{"!type":"fn() -> !this"},"getKeyMap":{"!type":"fn() -> !this"},"getOppositeDirection":{"!type":"fn(d: ?) -> !this"},"getPlaceholder":{"!type":"fn(direction: ?) -> !this"},"getReExpander":{"!type":"fn(direction: ?) -> !this"},"getState":{"!type":"fn() -> ?","!doc":"

The supplied default state gathering method for the AbstractComponent class.

\n\n

This method returns dimension settings such as flex, anchor, width and height along with collapsed\nstate.

\n\n

Subclasses which implement more complex state should call the superclass's implementation, and apply their state\nto the result if this basic state is to be saved.

\n\n

Note that Component state will only be saved if the Component has a stateId and there as a StateProvider\nconfigured for the document.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"getWidthAuthority":{"!type":"fn() -> !this"},"ghost":{"!type":"fn(cls: ?) -> !this","!doc":"

used for dragging

\n"},"ghostTools":{"!type":"fn() -> !this","!doc":"

helper function for ghost

\n"},"initAria":{"!type":"fn() -> !this"},"initDraggable":{"!type":"fn() -> !this"},"initHeaderAria":{"!type":"fn() -> !this"},"initResizable":{"!type":"fn() -> !this"},"initSimpleDraggable":{"!type":"fn() -> !this","!doc":"

Override Component.initDraggable.\nPanel (and subclasses) use the header element as the delegate.

\n"},"initTools":{"!type":"fn() -> !this","!doc":"

Tools are a Panel-specific capabilty.\nPanel uses initTools. Subclasses may contribute tools by implementing addTools.

\n"},"isLayoutRoot":{"!type":"fn() -> !this","!doc":"

Determines whether this Component is the root of a layout. This returns true if\nthis component can run its layout without assistance from or impact on its owner.\nIf this component cannot run its layout given these restrictions, false is returned\nand its owner will be considered as the next candidate for the layout root.

\n\n

Setting the _isLayoutRoot property to true causes this method to always\nreturn true. This may be useful when updating a layout of a Container which shrink\nwraps content, and you know that it will not change size, and so can safely be the\ntopmost participant in the layout run.

\n"},"isPlaceHolderCollapse":{"!type":"fn() -> !this"},"isVisible":{"!type":"fn(deep: ?) -> bool","!doc":"

Returns true if this component is visible.

\n"},"onBoxReady":{"!type":"fn() -> !this"},"onHide":{"!type":"fn() -> !this","!doc":"

Possibly animates down to a target element.

\n\n

Allows addition of behavior to the hide operation. After\ncalling the superclass’s onHide, the Component will be hidden.

\n\n

Gets passed the same parameters as hide.

\n"},"onMouseEnterFloated":{"!type":"fn(e: ?) -> !this"},"onMouseLeaveFloated":{"!type":"fn(e: ?) -> !this"},"onRemoved":{"!type":"fn(destroying: ?) -> !this","!doc":"

Method to manage awareness of when components are removed from their\nrespective Container, firing a removed event. References are properly\ncleaned up after removing a component from its owning container.

\n\n

Allows addition of behavior when a Component is removed from\nits parent Container. At this stage, the Component has been\nremoved from its parent Container's collection of child items,\nbut has not been destroyed (It will be destroyed if the parent\nContainer's autoDestroy is true, or if the remove call was\npassed a truthy second parameter). After calling the\nsuperclass's onRemoved, the ownerCt and the refOwner will not\nbe present.

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"placeholderCollapse":{"!type":"fn(direction: ?, animate: ?) -> !this"},"placeholderExpand":{"!type":"fn(animate: ?) -> !this"},"restoreDimension":{"!type":"fn() -> !this"},"restoreHiddenDocked":{"!type":"fn() -> !this"},"setBorder":{"!type":"fn(border: ?, targetEl: ?) -> !this"},"setGlyph":{"!type":"fn(newGlyph: number|string) -> !this","!doc":"

Set the glyph for the panel's header. See Ext.panel.Header.glyph. It will\nfire the glyphchange event after completion.

\n"},"setHiddenDocked":{"!type":"fn() -> !this"},"setIcon":{"!type":"fn(newIcon: string) -> !this","!doc":"

Set the icon for the panel's header. See Ext.panel.Header.icon. It will fire the\niconchange event after completion.

\n"},"setIconCls":{"!type":"fn(newIconCls: string) -> !this","!doc":"

Set the iconCls for the panel's header. See Ext.panel.Header.iconCls. It will fire the\niconclschange event after completion.

\n"},"setTitle":{"!type":"fn(newTitle: string) -> !this","!doc":"

Set a title for the panel's header. See Ext.panel.Header.title.

\n"},"setUI":{"!type":"fn(ui: ?) -> !this","!doc":"

Sets the UI for the component. This will remove any existing UIs on the component. It will also loop through any\nuiCls set on the component and rename them so they include the new UI.

\n"},"slideOutFloatedPanel":{"!type":"fn() -> !this"},"slideOutFloatedPanelBegin":{"!type":"fn() -> !this","!doc":"

This method begins the slide out of the floated panel.

\n"},"slideOutFloatedPanelEnd":{"!type":"fn() -> !this","!doc":"

This method cleans up after the slide out of the floated panel.

\n"},"toggleCollapse":{"!type":"fn() -> +Ext.panel.Panel","!doc":"

Shortcut for performing an expand or collapse based on the current state of the panel.

\n"},"unghost":{"!type":"fn(show: ?, matchPosition: ?) -> !this"},"updateCollapseTool":{"!type":"fn() -> !this"},"updateHeader":{"!type":"fn(force: bool) -> !this","!doc":"

Create, hide, or show the header component as appropriate based on the current config.

\n"},"beforeclose":{"!type":"fn(panel: +Ext.panel.Panel, eOpts: ?)","!doc":"

Fires before the user closes the panel. Return false from any listener to stop the close event being\nfired

\n"},"beforecollapse":{"!type":"fn(p: +Ext.panel.Panel, direction: string, animate: bool, eOpts: ?)","!doc":"

Fires before this panel is collapsed. Return false to prevent the collapse.

\n"},"beforeexpand":{"!type":"fn(p: +Ext.panel.Panel, animate: bool, eOpts: ?)","!doc":"

Fires before this panel is expanded. Return false to prevent the expand.

\n"},"float":{"!type":"fn(eOpts: ?)","!doc":"

Fires after a collapsed Panel has been \"floated\" by clicking on\nit's header. Only applicable when the Panel is an item in a\nBorder Layout.

\n"},"glyphchange":{"!type":"fn(this: +Ext.panel.Panel, newGlyph: number|string, oldGlyph: number|string, eOpts: ?)","!doc":"

Fired when the Panel glyph has been changed by the setGlyph method.

\n"},"iconchange":{"!type":"fn(p: +Ext.panel.Panel, newIcon: string, oldIcon: string, eOpts: ?)","!doc":"

Fires after the Panel icon has been set or changed.

\n"},"iconclschange":{"!type":"fn(p: +Ext.panel.Panel, newIconCls: string, oldIconCls: string, eOpts: ?)","!doc":"

Fires after the Panel iconCls has been set or changed.

\n"},"titlechange":{"!type":"fn(p: +Ext.panel.Panel, newTitle: string, oldTitle: string, eOpts: ?)","!doc":"

Fires after the Panel title has been set or changed.

\n"},"unfloat":{"!type":"fn(eOpts: ?)","!doc":"

Fires after a \"floated\" Panel has returned to it's collapsed state\nas a result of the mouse leaving the Panel. Only applicable when\nthe Panel is an item in a\nBorder Layout.

\n"}}},"Proxy":{"!doc":"

A custom drag proxy implementation specific to Ext.panel.Panels. This class\nis primarily used internally for the Panel's drag drop implementation, and\nshould never need to be created directly.

\n","!type":"fn(panel: +Ext.panel.Panel, config?: Ext_panel_Proxy_cfg)","prototype":{"!proto":"Ext.Base.prototype","insertProxy":{"!type":"bool","!doc":"

True to insert a placeholder proxy element while dragging the panel, false to drag with no proxy.\nMost Panels are not absolute positioned and therefore we need to reserve this space.

\n"},"moveOnDrag":{"!type":"bool","!doc":"

True to move the panel to the dragged position when dropped

\n"},"panel":{"!type":"+Ext.panel.Panel"},"getEl":{"!type":"fn() -> +Ext.Element","!doc":"

Gets the proxy's element

\n"},"getGhost":{"!type":"fn() -> +Ext.panel.Panel","!doc":"

Gets the proxy's ghost Panel

\n"},"getProxy":{"!type":"fn() -> +Ext.Element","!doc":"

Gets the proxy element. This is the element that represents where the\nPanel was before we started the drag operation.

\n"},"hide":{"!type":"fn() -> !this","!doc":"

Hides the proxy

\n"},"moveProxy":{"!type":"fn(parentNode: +HTMLElement, before?: +HTMLElement) -> !this","!doc":"

Moves the proxy to a different position in the DOM. This is typically\ncalled while dragging the Panel to keep the proxy sync'd to the Panel's\nlocation.

\n"},"repair":{"!type":"fn(xy: ?, callback: ?, scope: ?) -> !this","!doc":"

private

\n"},"reset":{"!type":"fn() -> !this"},"setStatus":{"!type":"fn() -> !this","!doc":"

private overrides

\n"},"show":{"!type":"fn() -> !this","!doc":"

Shows the proxy

\n"},"stop":{"!type":"fn() -> !this"},"sync":{"!type":"fn() -> !this"},"update":{"!type":"fn() -> !this"}}},"Table":{"!doc":"

TablePanel is the basis of both TreePanel and GridPanel.

\n\n

TablePanel aggregates:

\n\n\n\n","!type":"fn(config: +Ext.Element|string|Ext_panel_Table_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","allowDeselect":{"!type":"bool","!doc":"

True to allow deselecting a record. This config is forwarded to Ext.selection.Model.allowDeselect.

\n"},"columnLines":{"!type":"bool","!doc":"

Adds column line styling

\n"},"columns":{"!type":"[+Ext.grid.column.Column]|?","!doc":"

An array of column definition objects which define all columns that appear in this\ngrid. Each column definition provides the header text for the column, and a definition of where the data for that\ncolumn comes from.

\n\n

This can also be a configuration object for a {Ext.grid.header.Container HeaderContainer} which may override\ncertain default configurations if necessary. For example, the special layout may be overridden to use a simpler\nlayout, or one can set default values shared by all columns:

\n\n
columns: {\n    items: [\n        {\n            text: \"Column A\"\n            dataIndex: \"field_A\"\n        },{\n            text: \"Column B\",\n            dataIndex: \"field_B\"\n        }, \n        ...\n    ],\n    defaults: {\n        flex: 1\n    }\n}\n
\n"},"deferRowRender":{"!type":"bool","!doc":"

Defaults to true to enable deferred row rendering.

\n\n

This allows the View to execute a refresh quickly, with the expensive update of the row structure deferred so\nthat layouts with GridPanels appear, and lay out more quickly.

\n"},"disableSelection":{"!type":"bool","!doc":"

True to disable selection model.

\n"},"emptyText":{"!type":"string","!doc":"

Default text (html tags are accepted) to display in the Panel body when the Store\nis empty. When specified, and the Store is empty, the text will be rendered inside a DIV with the CSS class \"x-grid-empty\".

\n"},"enableColumnHide":{"!type":"bool","!doc":"

False to disable column hiding within this grid.

\n"},"enableColumnMove":{"!type":"bool","!doc":"

False to disable column dragging within this grid.

\n"},"enableColumnResize":{"!type":"bool","!doc":"

False to disable column resizing within this grid.

\n"},"enableLocking":{"!type":"bool","!doc":"

Configure as true to enable locking support for this grid. Alternatively, locking will also be automatically\nenabled if any of the columns in the columns configuration contain a locked config option.

\n\n

A locking grid is processed in a special way. The configuration options are cloned and two grids are created to be the locked (left) side\nand the normal (right) side. This Panel becomes merely a container which arranges both in an HBox layout.

\n\n

Plugins may be targeted at either locked, or unlocked grid, or, both, in which case the plugin is cloned and used on both sides.

\n\n

Plugins may also be targeted at the containing locking Panel.

\n\n

This is configured by specifying a lockableScope property in your plugin which may have the following values:

\n\n\n\n\n

If both is specified, then each copy of the plugin gains a property lockingPartner which references its sibling on the other side so that they\ncan synchronize operations is necessary.

\n\n

Features may also be configured with lockableScope and may target the locked grid, the normal grid or both grids. Features\nalso get a lockingPartner reference injected.

\n"},"features":{"!type":"[+Ext.grid.feature.Feature]|[?]|[+Ext.enums.Feature]","!doc":"

An array of grid Features to be added to this grid. Can also be just a single feature instead of array.

\n\n

Features config behaves much like plugins.\nA feature can be added by either directly referencing the instance:

\n\n
features: [Ext.create('Ext.grid.feature.GroupingSummary', {groupHeaderTpl: 'Subject: {name}'})],\n
\n\n

By using config object with ftype:

\n\n
features: [{ftype: 'groupingsummary', groupHeaderTpl: 'Subject: {name}'}],\n
\n\n

Or with just a ftype:

\n\n
features: ['grouping', 'groupingsummary'],\n
\n\n

See Ext.enums.Feature for list of all ftypes.

\n"},"forceFit":{"!type":"bool","!doc":"

True to force the columns to fit into the available width. Headers are first sized according to configuration,\nwhether that be a specific width, or flex. Then they are all proportionally changed in width so that the entire\ncontent width is used. For more accurate control, it is more optimal to specify a flex setting on the columns\nthat are to be stretched & explicit widths on columns that are not.

\n"},"hideHeaders":{"!type":"bool","!doc":"

True to hide column headers.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"multiSelect":{"!type":"bool","!doc":"

True to enable 'MULTI' selection mode on selection model.

\n"},"rowLines":{"!type":"bool","!doc":"

Adds row line styling

\n"},"scroll":{"!type":"string|bool","!doc":"

Scrollers configuration. Valid values are 'both', 'horizontal' or 'vertical'.\nTrue implies 'both'. False implies 'none'.

\n"},"sealedColumns":{"!type":"bool","!doc":"

True to constrain column dragging so that a column cannot be dragged in or out of it's\ncurrent group. Only relevant while enableColumnMove is enabled.

\n"},"selModel":{"!type":"+Ext.selection.Model|?","!doc":"

A selection model instance or config object. In latter case the selType\nconfig option determines to which type of selection model this config is applied.

\n"},"selType":{"!type":"string","!doc":"

An xtype of selection model to use. Defaults to 'rowmodel'. This is used to create selection model if just\na config object or nothing at all given in selModel config.

\n"},"simpleSelect":{"!type":"bool","!doc":"

True to enable 'SIMPLE' selection mode on selection model.

\n"},"sortableColumns":{"!type":"bool","!doc":"

False to disable column sorting via clicking the header and via the Sorting menu items.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Store the grid should use as its data source.

\n"},"verticalScroller":{"!type":"?","!doc":"

A config object to be used when configuring the scroll monitor to control\nrefreshing of data in an \"infinite grid\".

\n\n

Configurations of this object allow fine tuning of data caching which can improve performance and usability\nof the infinite grid.

\n"},"view":{"!type":"+Ext.view.Table","!doc":"

The Ext.view.Table used by the grid. Use viewConfig to just supply some config options to\nview (instead of creating an entire View instance).

\n"},"viewConfig":{"!type":"?","!doc":"

A config object that will be applied to the grid's UI view. Any of the config options available for\nExt.view.Table can be specified here. This option is ignored if view is specified.

\n"},"viewType":{"!type":"string","!doc":"

An xtype of view to use. This is automatically set to 'gridview' by Grid\nand to 'treeview' by Tree.

\n"},"emptyCls":{"!type":"string"},"extraBaseCls":{"!type":"string"},"extraBodyCls":{"!type":"string"},"hasView":{"!type":"bool","!doc":"

True to indicate that a view has been injected into the panel.

\n"},"hiddenHeaderCls":{"!type":"string"},"hiddenHeaderCtCls":{"!type":"string"},"noRowLinesCls":{"!type":"string"},"optimizedColumnMove":{"!type":"bool","!doc":"

If you are writing a grid plugin or a {Ext.grid.feature.Feature Feature} which creates a column-based structure which\nneeds a view refresh when columns are moved, then set this property in the grid.

\n\n

An example is the built in Summary Feature. This creates summary rows, and the\nsummary columns must be in the same order as the data columns. This plugin sets the optimizedColumnMove to `false.

\n"},"resizeMarkerCls":{"!type":"string"},"rowLinesCls":{"!type":"string"},"scrollerOwner":{"!type":"bool","!doc":"

private property used to determine where to go down to find views\nthis is here to support locking.

\n"},"afterCollapse":{"!type":"fn() -> !this","!doc":"

Invoked after the Panel is Collapsed.

\n"},"afterExpand":{"!type":"fn() -> !this","!doc":"

Invoked after the Panel is Expanded.

\n"},"applyState":{"!type":"fn(state: ?) -> !this","!doc":"

Applies the state to the object. This should be overridden in subclasses to do\nmore complex state operations. By default it applies the state properties onto\nthe current object.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"bindStore":{"!type":"fn(store: ?, initial: ?) -> !this"},"delayScroll":{"!type":"fn() -> !this"},"determineScrollbars":{"!type":"fn() -> !this","!doc":"

This method is obsolete in 4.1. The closest equivalent in\n4.1 is doLayout, but it is also possible that no\nlayout is needed.

\n"},"getEditorParent":{"!type":"fn() -> !this"},"getLhsMarker":{"!type":"fn() -> !this","!doc":"

Gets left hand side marker for header resizing.

\n"},"getRhsMarker":{"!type":"fn() -> !this","!doc":"

Gets right hand side marker for header resizing.

\n"},"getScrollTarget":{"!type":"fn() -> !this"},"getScrollerOwner":{"!type":"fn() -> !this"},"getSelectionModel":{"!type":"fn() -> +Ext.selection.Model","!doc":"

Returns the selection model being used and creates it via the configuration if it has not been created already.

\n"},"getState":{"!type":"fn() -> ?","!doc":"

The supplied default state gathering method for the AbstractComponent class.

\n\n

This method returns dimension settings such as flex, anchor, width and height along with collapsed\nstate.

\n\n

Subclasses which implement more complex state should call the superclass's implementation, and apply their state\nto the result if this basic state is to be saved.

\n\n

Note that Component state will only be saved if the Component has a stateId and there as a StateProvider\nconfigured for the document.

\n"},"getStore":{"!type":"fn() -> +Ext.data.Store","!doc":"

Returns the store associated with this Panel.

\n"},"getView":{"!type":"fn() -> +Ext.view.Table","!doc":"

Gets the view for this panel.

\n"},"hasLockedColumns":{"!type":"fn(columns: ?) -> !this","!doc":"

Private. Determine if there are any columns with a locked configuration option

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"invalidateScroller":{"!type":"fn() -> !this","!doc":"

This method is obsolete in 4.1. The closest equivalent in 4.1 is\nExt.AbstractComponent.updateLayout, but it is also possible that no layout\nis needed.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onHeaderHide":{"!type":"fn(headerCt: ?, header: ?) -> !this","!doc":"

Section onHeaderHide is invoked after view.

\n"},"onHeaderMove":{"!type":"fn(headerCt: ?, header: ?, colsToMove: ?, fromIdx: ?, toIdx: ?) -> !this","!doc":"

Update the view when a header moves

\n"},"onHeaderResize":{"!type":"fn() -> !this"},"onHeaderShow":{"!type":"fn(headerCt: ?, header: ?) -> !this"},"onHorizontalScroll":{"!type":"fn(event: ?, target: ?) -> !this"},"onRestoreHorzScroll":{"!type":"fn() -> !this","!doc":"

Tracks when things happen to the view and preserves the horizontal scroll position.

\n"},"onStoreLoad":{"!type":"fn() -> !this","!doc":"

template method meant to be overriden

\n"},"onViewReady":{"!type":"fn() -> !this","!doc":"

Fires the TablePanel's viewready event when the view declares that its internal DOM is ready

\n"},"processEvent":{"!type":"fn(type: string, view: +Ext.view.Table, cell: +HTMLElement, recordIndex: number, cellIndex: number, e: +Ext.EventObject) -> !this","!doc":"

Processes UI events from the view. Propagates them to whatever internal Components need to process them.

\n"},"reconfigure":{"!type":"fn(store: ?, columns: ?) -> !this","!doc":"

documented on GridPanel

\n"},"relayHeaderCtEvents":{"!type":"fn(headerCt: ?) -> !this"},"restoreScrollPos":{"!type":"fn() -> !this"},"saveScrollPos":{"!type":"fn() -> !this"},"scrollByDeltaX":{"!type":"fn(xDelta: ?, animate: ?) -> !this"},"scrollByDeltaY":{"!type":"fn(yDelta: ?, animate: ?) -> !this"},"setAutoScroll":{"!type":"fn() -> !this","!doc":"

autoScroll is never valid for all classes which extend TablePanel.

\n"},"syncHorizontalScroll":{"!type":"fn(left: ?, setBody: ?) -> !this"},"unbindStore":{"!type":"fn() -> !this"},"beforecellclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell click is processed. Return false to cancel the default action.

\n"},"beforecellcontextmenu":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell right click is processed. Return false to cancel the default action.

\n"},"beforecelldblclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell double click is processed. Return false to cancel the default action.

\n"},"beforecellkeydown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell key down is processed. Return false to cancel the default action.

\n"},"beforecellmousedown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell mouse down is processed. Return false to cancel the default action.

\n"},"beforecellmouseup":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell mouse up is processed. Return false to cancel the default action.

\n"},"beforecontainerclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the click event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainercontextmenu":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the contextmenu event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainerdblclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the dblclick event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermousedown":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mousedown event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermouseout":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseout event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermouseover":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseover event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermouseup":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseup event on the container is processed. Returns false to cancel the default action.

\n"},"beforedeselect":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired before a record is deselected. If any listener returns false, the\ndeselection is cancelled.

\n"},"beforeitemclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the click event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemcontextmenu":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the contextmenu event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemdblclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the dblclick event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmousedown":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mousedown event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmouseenter":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseenter event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmouseleave":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseleave event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmouseup":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseup event on an item is processed. Returns false to cancel the default action.

\n"},"beforeselect":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired before a record is selected. If any listener returns false, the\nselection is cancelled.

\n"},"cellclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when table cell is clicked.

\n"},"cellcontextmenu":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when table cell is right clicked.

\n"},"celldblclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when table cell is double clicked.

\n"},"cellkeydown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when the keydown event is captured on the cell.

\n"},"cellmousedown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when the mousedown event is captured on the cell.

\n"},"cellmouseup":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when the mouseup event is captured on the cell.

\n"},"columnhide":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, eOpts: ?)"},"columnmove":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, fromIdx: number, toIdx: number, eOpts: ?)"},"columnresize":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, width: number, eOpts: ?)"},"columnschanged":{"!type":"fn(ct: +Ext.grid.header.Container, eOpts: ?)","!doc":"

Fired after the columns change in any way, when a column has been hidden or shown, or when a column\nis added to or removed from this header container.

\n"},"columnshow":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, eOpts: ?)"},"containerclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the container is clicked.

\n"},"containercontextmenu":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the container is right clicked.

\n"},"containerdblclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the container is double clicked.

\n"},"containermouseout":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when you move the mouse out of the container.

\n"},"containermouseover":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when you move the mouse over the container.

\n"},"containermouseup":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when there is a mouse up on the container

\n"},"deselect":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired after a record is deselected

\n"},"filterchange":{"!type":"fn(store: +Ext.data.Store, filters: [+Ext.util.Filter], eOpts: ?)","!doc":"

Fired whenever the filter set changes.

\n"},"headerclick":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)"},"headercontextmenu":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)"},"headertriggerclick":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, e: +Ext.EventObject, t: +HTMLElement, eOpts: ?)"},"itemclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when an item is clicked.

\n"},"itemcontextmenu":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when an item is right clicked.

\n"},"itemdblclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when an item is double clicked.

\n"},"itemmousedown":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when there is a mouse down on an item

\n"},"itemmouseenter":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse enters an item.

\n"},"itemmouseleave":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse leaves an item.

\n"},"itemmouseup":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when there is a mouse up on an item

\n"},"select":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired after a record is selected

\n"},"selectionchange":{"!type":"fn(this: +Ext.selection.Model, selected: [+Ext.data.Model], eOpts: ?)","!doc":"

Fired after a selection change has occurred

\n"},"sortchange":{"!type":"fn(ct: +Ext.grid.header.Container, column: +Ext.grid.column.Column, direction: string, eOpts: ?)"},"viewready":{"!type":"fn(this: +Ext.panel.Table, eOpts: ?)","!doc":"

Fires when the grid view is available (use this for selecting a default row).

\n"}}},"Tool":{"!doc":"

This class is used to display small visual icons in the header of a panel. There are a set of\n25 icons that can be specified by using the type config. The callback config\ncan be used to provide a function that will respond to any click events. In general, this class\nwill not be instantiated directly, rather it will be created by specifying the Ext.panel.Panel.tools\nconfiguration on the Panel itself.

\n\n
Ext.create('Ext.panel.Panel', {\n    width: 200,\n    height: 200,\n    renderTo: document.body,\n    title: 'A Panel',\n    tools: [{\n        type: 'help',\n        callback: function() {\n            // show help here\n        }\n    }, {\n        itemId: 'refresh',\n        type: 'refresh',\n        hidden: true,\n        callback: function() {\n            // do refresh\n        }\n    }, {\n        type: 'search',\n        callback: function (panel) {\n            // do search\n            panel.down('#refresh').show();\n        }\n    }]\n});\n
\n\n

The callback config was added in Ext JS 4.2.1 as an alternative to handler\nto provide a more convenient list of arguments. In Ext JS 4.2.1 it is also possible to\npass a method name instead of a direct function:

\n\n
 tools: [{\n     type: 'help',\n     callback: 'onHelp',\n     scope: this\n },\n ...\n
\n\n

The callback (or handler) name is looked up on the scope which will also be the\nthis reference when the method is called.

\n","!type":"fn(config: +Ext.Element|string|Ext_panel_Tool_cfg)","prototype":{"!proto":"Ext.Component.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"callback":{"!type":"fn()","!doc":"

A function to execute when the tool is clicked.

\n"},"disabledCls":{"!type":"string","!doc":"

CSS class to add when the Component is disabled.

\n"},"handler":{"!type":"fn()","!doc":"

A function to execute when the tool is clicked. Arguments passed are:

\n\n\n\n"},"height":{"!type":"number","!doc":"

Tool size is fixed so that Box layout can avoid measurements.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

The scope to execute the callback or handler function. Defaults\nto the tool.

\n"},"stopEvent":{"!type":"bool","!doc":"

Specify as false to allow click event to propagate.

\n"},"toolOverCls":{"!type":"string"},"toolOwner":{"!type":"+Ext.Component","!doc":"

The owner to report to the callback method. Default is null for the ownerCt.

\n"},"toolPressedCls":{"!type":"string"},"tooltip":{"!type":"string|?","!doc":"

The tooltip for the tool - can be a string to be used as innerHTML (html tags are accepted) or QuickTips config\nobject

\n"},"tooltipType":{"!type":"string","!doc":"

The type of tooltip to use. Either 'qtip' (default) for QuickTips or 'title' for title attribute.

\n"},"type":{"!type":"string","!doc":"

The type of tool to render. The following types are available:

\n\n\n\n"},"width":{"!type":"number","!doc":"

The width of this component in pixels.

\n"},"_toolTypes":{"!type":"?","!doc":"

\n"},"ariaRole":{"!type":"string"},"childEls":{"!type":"[?]"},"isTool":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Tool, or subclass thereof.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

Returns the focus holder element associated with this Component. At the Component base class level, this function returns undefined.

\n\n

Subclasses which use embedded focusable elements (such as Window, Field and Button) should override this\nfor use by the focus method.

\n\n

Containers which need to participate in the FocusManager's navigation and Container focusing scheme also\nneed to return a focusEl, although focus is only listened for in this case if the FocusManager is enabled.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

\n"},"onClick":{"!type":"fn(e: +Ext.EventObject, target: +HTMLElement) -> !this","!doc":"

Called when the tool element is clicked

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"onMouseDown":{"!type":"fn() -> !this","!doc":"

Called when the user presses their mouse button down on a tool\nAdds the press class (toolPressedCls)

\n"},"onMouseOut":{"!type":"fn() -> !this","!doc":"

Called when the user rolls out from a tool.\nRemoves the over class (toolOverCls)

\n"},"onMouseOver":{"!type":"fn() -> !this","!doc":"

Called when the user rolls over a tool\nAdds the over class (toolOverCls)

\n"},"setType":{"!type":"fn(type: string) -> +Ext.panel.Tool","!doc":"

Sets the type of the tool. Allows the icon to be changed.

\n"},"click":{"!type":"fn(this: +Ext.panel.Tool, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the tool is clicked

\n"}}}},"perf":{"Accumulator":{},"Monitor":{"!type":"fn()","prototype":{"!proto":"Ext.Base.prototype"},"calibrate":{"!type":"fn() -> !this"},"enter":{"!type":"fn(name: ?) -> !this"},"get":{"!type":"fn(name: ?) -> !this"},"getData":{"!type":"fn(all: ?) -> !this"},"monitor":{"!type":"fn(name: ?, fn: ?, scope: ?) -> !this"},"report":{"!type":"fn() -> !this"},"reset":{"!type":"fn() -> !this"},"setup":{"!type":"fn(config: ?) -> !this"},"updateGC":{"!type":"fn() -> !this"},"watchGC":{"!type":"fn() -> !this"}}},"picker":{"Color":{"!doc":"

Color picker provides a simple color palette for choosing colors. The picker can be rendered to any container. The\navailable default to a standard 40-color palette; this can be customized with the colors config.

\n\n

Typically you will need to implement a handler function to be notified when the user chooses a color from the picker;\nyou can register the handler using the select event, or by implementing the handler method.

\n\n
Ext.create('Ext.picker.Color', {\n    value: '993300',  // initial selected color\n    renderTo: Ext.getBody(),\n    listeners: {\n        select: function(picker, selColor) {\n            alert(selColor);\n        }\n    }\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_picker_Color_cfg)","prototype":{"!proto":"Ext.Component.prototype","allowReselect":{"!type":"bool","!doc":"

If set to true then reselecting a color that is already selected fires the select event

\n"},"clickEvent":{"!type":"string","!doc":"

The DOM event that will cause a color to be selected. This can be any valid event name (dblclick, contextmenu).

\n"},"componentCls":{"!type":"string","!doc":"

The CSS class to apply to the containing element.

\n"},"handler":{"!type":"fn()","!doc":"

A function that will handle the select event of this picker. The handler is passed the following parameters:

\n\n\n\n"},"itemCls":{"!type":"string","!doc":"

The CSS class to apply to the color picker's items

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler function will be called.

\n\n

Defaults to this Color picker instance.

\n"},"selectedCls":{"!type":"string","!doc":"

The CSS class to apply to the selected element

\n"},"value":{"!type":"string","!doc":"

The initial color to highlight (should be a valid 6-digit color hex code without the # symbol). Note that the hex\ncodes are case-sensitive.

\n"},"colors":{"!type":"[string]","!doc":"

An array of 6-digit color hex code strings (without the # symbol). This array can contain any number of colors,\nand each hex code should be unique. The width of the picker is controlled via CSS by adjusting the width property\nof the 'x-color-picker' class (or assigning a custom class), so you can balance the number of colors with the\nwidth setting until the box is symmetrical.

\n\n

You can override individual colors if needed:

\n\n
var cp = new Ext.picker.Color();\ncp.colors[0] = 'FF0000';  // change the first box to red\n
\n\n

Or you can provide a custom array of your own for complete control:

\n\n
var cp = new Ext.picker.Color();\ncp.colors = ['000000', '993300', '333300'];\n
\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"clear":{"!type":"fn() -> !this","!doc":"

Clears any selection and sets the value to null.

\n"},"getValue":{"!type":"fn() -> string","!doc":"

Get the currently selected color value.

\n"},"handleClick":{"!type":"fn(event: ?, target: ?) -> !this"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initRenderData":{"!type":"fn() -> ?","!doc":"

Initialized the renderData to be used when rendering the renderTpl.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"select":{"!type":"fn(this: +Ext.picker.Color, color: string, eOpts: ?)","!doc":"

Fires when a color is selected

\n"}}},"Date":{"!doc":"

A date picker. This class is used by the Ext.form.field.Date field to allow browsing and selection of valid\ndates in a popup next to the field, but may also be used with other components.

\n\n

Typically you will need to implement a handler function to be notified when the user chooses a date from the picker;\nyou can register the handler using the select event, or by implementing the handler method.

\n\n

By default the user will be allowed to pick any date; this can be changed by using the minDate,\nmaxDate, disabledDays, disabledDatesRE, and/or disabledDates configs.

\n\n

All the string values documented below may be overridden by including an Ext locale file in your page.

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Choose a future date:',\n    width: 200,\n    bodyPadding: 10,\n    renderTo: Ext.getBody(),\n    items: [{\n        xtype: 'datepicker',\n        minDate: new Date(),\n        handler: function(picker, date) {\n            // do something with the selected date\n        }\n    }]\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_picker_Date_cfg)","prototype":{"!proto":"Ext.Component.prototype","ariaTitle":{"!type":"string","!doc":"

The text to display for the aria title

\n"},"ariaTitleDateFormat":{"!type":"string","!doc":"

The date format to display for the current value in the ariaTitle

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this components element.

\n"},"border":{"!type":"number|string|bool","!doc":"

Specifies the border size for this component. The border can be a single numeric value to apply to all sides or it can\nbe a CSS style specification for each style, for example: '10 5 3 10' (top, right, bottom, left).

\n\n

For components that have no border by default, setting this won't make the border appear by itself.\nYou also need to specify border color and style:

\n\n
border: 5,\nstyle: {\n    borderColor: 'red',\n    borderStyle: 'solid'\n}\n
\n\n

To turn off the border, use border: false.

\n"},"dayNames":{"!type":"[string]","!doc":"

An array of textual day names which can be overriden for localization support (defaults to Ext.Date.dayNames)

\n"},"disableAnim":{"!type":"bool","!doc":"

True to disable animations when showing the month picker.

\n"},"disabledCellCls":{"!type":"string","!doc":"

The class to apply to disabled cells.

\n"},"disabledDates":{"!type":"[string]","!doc":"

An array of 'dates' to disable, as strings. These strings will be used to build a dynamic regular expression so\nthey are very powerful. Some examples:

\n\n\n\n\n

Note that the format of the dates included in the array should exactly match the format config. In order\nto support regular expressions, if you are using a date format that has '.' in it, you will have to escape the\ndot when restricting dates. For example: ['03\\.08\\.03'].

\n"},"disabledDatesRE":{"!type":"+RegExp","!doc":"

JavaScript regular expression used to disable a pattern of dates. The disabledDates\nconfig will generate this regex internally, but if you specify disabledDatesRE it will take precedence over the\ndisabledDates value.

\n"},"disabledDatesText":{"!type":"string","!doc":"

The tooltip text to display when the date falls on a disabled date.

\n"},"disabledDays":{"!type":"[number]","!doc":"

An array of days to disable, 0-based. For example, [0, 6] disables Sunday and Saturday.

\n"},"disabledDaysText":{"!type":"string","!doc":"

The tooltip to display when the date falls on a disabled day.

\n"},"focusOnShow":{"!type":"bool","!doc":"

True to automatically focus the picker on show.

\n"},"format":{"!type":"string","!doc":"

The default date format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse (defaults to Ext.Date.defaultFormat).

\n"},"handler":{"!type":"fn()","!doc":"

Optional. A function that will handle the select event of this picker. The handler is passed the following\nparameters:

\n\n\n\n\n

This Date picker.

\n\n\n\n\n

The selected date.

\n"},"keyNavConfig":{"!type":"?","!doc":"

Specifies optional custom key event handlers for the Ext.util.KeyNav attached to this date picker. Must\nconform to the config format recognized by the Ext.util.KeyNav constructor. Handlers specified in this\nobject will replace default handlers of the same name.

\n"},"longDayFormat":{"!type":"string","!doc":"

The format for displaying a date in a longer format.

\n"},"maxDate":{"!type":"+Date","!doc":"

Maximum allowable date (JavaScript date object)

\n"},"maxText":{"!type":"string","!doc":"

The error text to display if the maxDate validation fails.

\n"},"minDate":{"!type":"+Date","!doc":"

Minimum allowable date (JavaScript date object)

\n"},"minText":{"!type":"string","!doc":"

The error text to display if the minDate validation fails.

\n"},"monthNames":{"!type":"[string]","!doc":"

An array of textual month names which can be overriden for localization support (defaults to Ext.Date.monthNames)

\n"},"monthYearFormat":{"!type":"string","!doc":"

The date format for the header month

\n"},"monthYearText":{"!type":"string","!doc":"

The header month selector tooltip

\n"},"nextText":{"!type":"string","!doc":"

The next month navigation button tooltip

\n"},"prevText":{"!type":"string","!doc":"

The previous month navigation button tooltip

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"scope":{"!type":"?","!doc":"

The scope (this reference) in which the handler function will be called.

\n\n

Defaults to this DatePicker instance.

\n"},"selectedCls":{"!type":"string","!doc":"

The class to apply to the selected cell.

\n"},"showToday":{"!type":"bool","!doc":"

False to hide the footer area containing the Today button and disable the keyboard handler for spacebar that\nselects the current date.

\n"},"startDay":{"!type":"number","!doc":"

Day index at which the week should begin, 0-based.

\n\n

Defaults to 0 (Sunday).

\n"},"todayText":{"!type":"string","!doc":"

The text to display on the button that selects the current date

\n"},"todayTip":{"!type":"string","!doc":"

A string used to format the message for displaying in a tooltip over the button that selects the current date.\nThe {0} token in string is replaced by today's date.

\n"},"childEls":{"!type":"[?]"},"focusOnSelect":{"!type":"bool","!doc":"

Set by other components to stop the picker focus being updated when the value changes.

\n"},"initHour":{"!type":"number","!doc":"

Default value used to initialise each date in the DatePicker.\nNote: 12 noon was chosen because it steers well clear of all DST timezone changes.

\n"},"numDays":{"!type":"number","!doc":"

24-hour format

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"createMonthPicker":{"!type":"fn() -> +Ext.picker.Month","!doc":"

Create the month picker instance

\n"},"finishRenderChildren":{"!type":"fn() -> !this","!doc":"

Do the job of a container layout at this point even though we are not a Container.\nTODO: Refactor as a Container.

\n"},"focus":{"!type":"fn() -> +Ext.Component","!doc":"

Try to focus this component.

\n"},"fullUpdate":{"!type":"fn(date: +Date) -> !this","!doc":"

Update the contents of the picker for a new month

\n"},"getActive":{"!type":"fn() -> +Date","!doc":"

Get the current active date.

\n"},"getDayInitial":{"!type":"fn(value: ?) -> string","!doc":"

Gets a single character to represent the day of the week

\n"},"getSelectedDate":{"!type":"fn(date: ?) -> !this"},"getValue":{"!type":"fn() -> +Date","!doc":"

Gets the current selected value of the date field

\n"},"handleDateClick":{"!type":"fn(e: +Ext.EventObject, t: +HTMLElement) -> !this","!doc":"

Respond to a date being clicked in the picker

\n"},"handleMouseWheel":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Respond to the mouse wheel event

\n"},"handleTabClick":{"!type":"fn(e: ?) -> !this"},"hideMonthPicker":{"!type":"fn(animate?: bool) -> +Ext.picker.Date","!doc":"

Hides the month picker, if it's visible.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private, inherit docs

\n"},"initDisabledDays":{"!type":"fn() -> !this","!doc":"

Setup the disabled dates regex based on config options

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

Initialize any events on this component

\n"},"onCancelClick":{"!type":"fn() -> !this","!doc":"

Respond to a cancel click on the month picker

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the disable operation.\nAfter calling the superclass's onDisable, the Component will be disabled.

\n"},"onEnable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the enable operation.\nAfter calling the superclass's onEnable, the Component will be enabled.

\n"},"onOkClick":{"!type":"fn(picker: ?, value: ?) -> !this","!doc":"

Respond to an ok click on the month picker

\n"},"onRender":{"!type":"fn(container: ?, position: ?) -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"onSelect":{"!type":"fn() -> !this","!doc":"

Perform any post-select actions

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"runAnimation":{"!type":"fn(isHide: bool) -> !this","!doc":"

Run any animation required to hide/show the month picker.

\n"},"selectToday":{"!type":"fn() -> +Ext.picker.Date","!doc":"

Sets the current value to today.

\n"},"selectedUpdate":{"!type":"fn(date: +Date) -> !this","!doc":"

Update the selected cell

\n"},"setDisabledDates":{"!type":"fn(disabledDates: [string]|+RegExp) -> +Ext.picker.Date","!doc":"

Replaces any existing disabled dates with new values and refreshes the DatePicker.

\n"},"setDisabledDays":{"!type":"fn(disabledDays: [number]) -> +Ext.picker.Date","!doc":"

Replaces any existing disabled days (by index, 0-6) with new values and refreshes the DatePicker.

\n"},"setDisabledStatus":{"!type":"fn(disabled: bool) -> !this","!doc":"

Set the disabled state of various internal components

\n"},"setMaxDate":{"!type":"fn(value: +Date) -> +Ext.picker.Date","!doc":"

Replaces any existing maxDate with the new value and refreshes the DatePicker.

\n"},"setMinDate":{"!type":"fn(value: +Date) -> +Ext.picker.Date","!doc":"

Replaces any existing minDate with the new value and refreshes the DatePicker.

\n"},"setValue":{"!type":"fn(value: +Date) -> +Ext.picker.Date","!doc":"

Sets the value of the date field

\n"},"shouldAnimate":{"!type":"fn(animate?: bool) -> bool","!doc":"

Checks whether a hide/show action should animate

\n"},"showMonthPicker":{"!type":"fn(animate?: bool) -> +Ext.picker.Date","!doc":"

Show the month picker

\n"},"showNextMonth":{"!type":"fn(e: ?) -> +Ext.picker.Date","!doc":"

Show the next month.

\n"},"showNextYear":{"!type":"fn() -> +Ext.picker.Date","!doc":"

Show the next year.

\n"},"showPrevMonth":{"!type":"fn(e: ?) -> +Ext.picker.Date","!doc":"

Show the previous month.

\n"},"showPrevYear":{"!type":"fn() -> +Ext.picker.Date","!doc":"

Show the previous year.

\n"},"update":{"!type":"fn(date: +Date, forceRefresh: bool) -> !this","!doc":"

Update the contents of the picker

\n"},"select":{"!type":"fn(this: +Ext.picker.Date, date: +Date, eOpts: ?)","!doc":"

Fires when a date is selected

\n"}}},"Month":{"!doc":"

A month picker component. This class is used by the Date picker class\nto allow browsing and selection of year/months combinations.

\n","!type":"fn(config: +Ext.Element|string|Ext_picker_Month_cfg)","prototype":{"!proto":"Ext.Component.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to the picker element.

\n"},"cancelText":{"!type":"string","!doc":"

The text to display on the cancel button.

\n"},"okText":{"!type":"string","!doc":"

The text to display on the ok button.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"selectedCls":{"!type":"string","!doc":"

The class to be added to selected items in the picker.

\n"},"showButtons":{"!type":"bool","!doc":"

True to show ok and cancel buttons below the picker.

\n"},"value":{"!type":"+Date|[number]","!doc":"

The default value to set. See setValue

\n"},"childEls":{"!type":"[?]"},"measureMaxHeight":{"!type":"number"},"monthOffset":{"!type":"number","!doc":"

10 years in total, 2 per row

\n"},"smallCls":{"!type":"string","!doc":"

used when attached to date picker which isnt showing buttons

\n"},"totalYears":{"!type":"number"},"yearOffset":{"!type":"number"},"adjustYear":{"!type":"fn(offset?: number) -> !this","!doc":"

Modify the year display by passing an offset.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"calculateMonthMargin":{"!type":"fn() -> !this"},"finishRenderChildren":{"!type":"fn() -> !this","!doc":"

Do the job of a container layout at this point even though we are not a Container.\nTODO: Refactor as a Container.

\n"},"getLargest":{"!type":"fn(months: ?) -> !this"},"getValue":{"!type":"fn() -> [number]","!doc":"

Gets the selected value. It is returned as an array [month, year]. It may\nbe a partial value, for example [null, 2010]. The month is returned as\n0 based.

\n"},"getYear":{"!type":"fn(defaultValue: number, offset: number) -> number","!doc":"

Gets the current year value, or the default.

\n"},"getYears":{"!type":"fn() -> [number]","!doc":"

Get an array of years to be pushed in the template. It is not in strict\nnumerical order because we want to show them in columns.

\n"},"hasSelection":{"!type":"fn() -> bool","!doc":"

Checks whether the picker has a selection

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onBodyClick":{"!type":"fn(e: ?, t: ?) -> !this","!doc":"

React to clicks on the body

\n"},"onCancelClick":{"!type":"fn() -> !this","!doc":"

React to the cancel button being pressed

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onMonthClick":{"!type":"fn(target: +HTMLElement, isDouble: bool) -> !this","!doc":"

React to a month being clicked

\n"},"onOkClick":{"!type":"fn() -> !this","!doc":"

React to the ok button being pressed

\n"},"onYearClick":{"!type":"fn(target: +HTMLElement, isDouble: bool) -> !this","!doc":"

React to a year being clicked

\n"},"resolveOffset":{"!type":"fn(index: ?, offset: ?) -> number","!doc":"

Returns an offsetted number based on the position in the collection. Since our collections aren't\nnumerically ordered, this function helps to normalize those differences.

\n"},"setValue":{"!type":"fn(value: +Date|[number]) -> +Ext.picker.Month","!doc":"

Set the value for the picker.

\n"},"updateBody":{"!type":"fn() -> !this","!doc":"

Update the years in the body based on any change

\n"},"cancelclick":{"!type":"fn(this: +Ext.picker.Month, eOpts: ?)","!doc":"

Fires when the cancel button is pressed.

\n"},"monthclick":{"!type":"fn(this: +Ext.picker.Month, value: [?], eOpts: ?)","!doc":"

Fires when a month is clicked.

\n"},"monthdblclick":{"!type":"fn(this: +Ext.picker.Month, value: [?], eOpts: ?)","!doc":"

Fires when a month is clicked.

\n"},"okclick":{"!type":"fn(this: +Ext.picker.Month, value: [?], eOpts: ?)","!doc":"

Fires when the ok button is pressed.

\n"},"select":{"!type":"fn(this: +Ext.picker.Month, value: [?], eOpts: ?)","!doc":"

Fires when a month/year is selected.

\n"},"yearclick":{"!type":"fn(this: +Ext.picker.Month, value: [?], eOpts: ?)","!doc":"

Fires when a year is clicked.

\n"},"yeardblclick":{"!type":"fn(this: +Ext.picker.Month, value: [?], eOpts: ?)","!doc":"

Fires when a year is clicked.

\n"}}},"Time":{"!doc":"

A time picker which provides a list of times from which to choose. This is used by the Ext.form.field.Time\nclass to allow browsing and selection of valid times, but could also be used with other components.

\n\n

By default, all times starting at midnight and incrementing every 15 minutes will be presented. This list of\navailable times can be controlled using the minValue, maxValue, and increment\nconfiguration properties. The format of the times presented in the list can be customized with the format\nconfig.

\n\n

To handle when the user selects a time from the list, you can subscribe to the selectionchange event.

\n\n
Ext.create('Ext.picker.Time', {\n   width: 60,\n   minValue: Ext.Date.parse('04:30:00 AM', 'h:i:s A'),\n   maxValue: Ext.Date.parse('08:00:00 AM', 'h:i:s A'),\n   renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_picker_Time_cfg)","prototype":{"!proto":"Ext.view.BoundList.prototype","componentCls":{"!type":"string","!doc":"

CSS Class to be added to a components root level element to give distinction to it via styling.

\n"},"format":{"!type":"string","!doc":"

The default time format string which can be overriden for localization support. The format must be valid\naccording to Ext.Date.parse.

\n\n

Defaults to 'g:i A', e.g., '3:15 PM'. For 24-hour time format try 'H:i' instead.

\n"},"increment":{"!type":"number","!doc":"

The number of minutes between each time value in the list.

\n"},"loadMask":{"!type":"bool"},"maxValue":{"!type":"+Date","!doc":"

The maximum time to be shown in the list of times. This must be a Date object (only the time fields will be\nused); no parsing of String values will be done.

\n"},"minValue":{"!type":"+Date","!doc":"

The minimum time to be shown in the list of times. This must be a Date object (only the time fields will be\nused); no parsing of String values will be done.

\n"},"displayField":{"!type":"string","!doc":"

The field in the implicitly-generated Model objects that gets displayed in the list. This is\nan internal field name only and is not useful to change via config.

\n"},"initDate":{"!type":"[?]","!doc":"

Year, month, and day that all times will be normalized into internally.

\n"},"createStore":{"!type":"fn() -> !this","!doc":"

Creates the internal Ext.data.Store that contains the available times. The store\nis loaded with all possible times, and it is later filtered to hide those times outside\nthe minValue/maxValue.

\n"},"focusNode":{"!type":"fn(rec: ?) -> !this","!doc":"

Focuses a node in the view.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"normalizeDate":{"!type":"fn(date: +Date) -> !this","!doc":"

Sets the year/month/day of the given Date object to the initDate, so that only\nthe time fields are significant. This makes values suitable for time comparison.

\n"},"setMaxValue":{"!type":"fn(value: +Date) -> !this","!doc":"

Set the maxValue and update the list of available times. This must be a Date object (only the time\nfields will be used); no parsing of String values will be done.

\n"},"setMinValue":{"!type":"fn(value: +Date) -> !this","!doc":"

Set the minValue and update the list of available times. This must be a Date object (only the time\nfields will be used); no parsing of String values will be done.

\n"},"updateList":{"!type":"fn() -> !this","!doc":"

Update the list of available times in the list to be constrained within the minValue\nand maxValue.

\n"}}}},"resizer":{"BorderSplitter":{"!doc":"

Private utility class for Ext.layout.container.Border.

\n","!type":"fn(config: +Ext.Element|string|Ext_resizer_BorderSplitter_cfg)","prototype":{"!proto":"Ext.resizer.Splitter.prototype","collapseTarget":{"!type":"string|+Ext.panel.Panel","!doc":"

must be configured in by the border layout:

\n"},"getTrackerConfig":{"!type":"fn() -> !this","!doc":"

Returns the config object (with an xclass property) for the splitter tracker. This\nis overridden by BorderSplitter to create a\nBorderSplitterTracker.

\n"}}},"BorderSplitterTracker":{"!doc":"

Private utility class for Ext.BorderSplitter.

\n","prototype":{"constraintAdjusters":{"!type":"?"},"getNextCmp":{"!type":"?"},"getPrevCmp":{"!type":"?"},"splitAdjusters":{"!type":"?"},"calculateConstrainRegion":{"!type":"fn() -> !this","!doc":"

calculate the constrain Region in which the splitter el may be moved.

\n"},"getCollapseDirection":{"!type":"fn() -> !this"},"onBeforeStart":{"!type":"fn(e: ?) -> !this","!doc":"

ensure the tracker is enabled, store boxes of previous and next\ncomponents and calculate the constrain region

\n"},"performResize":{"!type":"fn(e: ?, offset: ?) -> !this","!doc":"

Performs the actual resizing of the previous and next components

\n"}}},"Handle":{"!doc":"

Provides a handle for 9-point resizing of Elements or Components.

\n","!type":"fn(config: +Ext.Element|string|Ext_resizer_Handle_cfg)","prototype":{"!proto":"Ext.Component.prototype","region":{"!type":"string|string|string|string|string","!doc":"

Ext.resizer.Resizer.prototype.possiblePositions define the regions\nwhich will be passed in as a region configuration.

\n"},"baseHandleCls":{"!type":"string"},"handleCls":{"!type":"string"},"beforeRender":{"!type":"fn() -> !this"}}},"ResizeTracker":{"!doc":"

Private utility class for Ext.resizer.Resizer.

\n","!type":"fn(config: Ext_resizer_ResizeTracker_cfg)","prototype":{"!proto":"Ext.dd.DragTracker.prototype","constrainTo":{"!type":"+Ext.util.Region|+Ext.Element","!doc":"

Default to no constraint

\n"},"dynamic":{"!type":"bool"},"preserveRatio":{"!type":"bool"},"proxyCls":{"!type":"string"},"convertRegionName":{"!type":"fn(name: ?) -> !this"},"createProxy":{"!type":"fn(target: +Ext.Component|+Ext.Element) -> +Ext.Element","!doc":"

Create a proxy for this resizer

\n"},"getDynamicTarget":{"!type":"fn() -> !this","!doc":"

Returns the object that will be resized on every mousemove event.\nIf dynamic is false, this will be a proxy, otherwise it will be our actual target.

\n"},"getResizeTarget":{"!type":"fn(atEnd: ?) -> !this"},"onBeforeStart":{"!type":"fn(e: ?) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when the user first clicks and\nholds the mouse button down. Return false to disallow the drag

\n"},"onDrag":{"!type":"fn(e: ?) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called whenever a drag has been detected.

\n"},"onEnd":{"!type":"fn(e: ?) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when a drag operation has been completed\n(e.g. the user clicked and held the mouse down, dragged the element and then released the mouse button)

\n"},"onStart":{"!type":"fn(e: ?) -> !this","!doc":"

Template method which should be overridden by each DragTracker instance. Called when a drag operation starts\n(e.g. the user has moved the tracked element beyond the specified tolerance)

\n"},"resize":{"!type":"fn(box: ?, direction: ?, atEnd: ?) -> !this"},"updateDimensions":{"!type":"fn(e: ?, atEnd: ?) -> !this"}}},"Resizer":{"!doc":"

Applies drag handles to an element or component to make it resizable. The drag handles are inserted into the element\n(or component's element) and positioned absolute.

\n\n

Textarea and img elements will be wrapped with an additional div because these elements do not support child nodes.\nThe original element can be accessed through the originalTarget property.

\n\n

Here is the list of valid resize handles:

\n\n
Value   Description\n------  -------------------\n 'n'     north\n 's'     south\n 'e'     east\n 'w'     west\n 'nw'    northwest\n 'sw'    southwest\n 'se'    southeast\n 'ne'    northeast\n 'all'   all\n
\n\n

\"Ext.resizer.Resizer

\n\n

Here's an example showing the creation of a typical Resizer:

\n\n
Ext.create('Ext.resizer.Resizer', {\n    el: 'elToResize',\n    handles: 'all',\n    minWidth: 200,\n    minHeight: 100,\n    maxWidth: 500,\n    maxHeight: 400,\n    pinned: true\n});\n
\n","prototype":{"constrainTo":{"!type":"+Ext.Element|+Ext.util.Region","!doc":"

An element, or a Region into which the resize operation must be constrained.

\n"},"dynamic":{"!type":"bool","!doc":"

Specify as true to update the target (Element or Component) dynamically during\ndragging. This is true by default, but the Component class passes false when it is\nconfigured as Ext.Component.resizable.

\n\n

If specified as false, a proxy element is displayed during the resize operation, and the target is\nupdated on mouseup.

\n"},"handles":{"!type":"string","!doc":"

String consisting of the resize handles to display. Defaults to 's e se' for Elements and fixed position\nComponents. Defaults to 8 point resizing for floating Components (such as Windows). Specify either 'all' or any\nof 'n s e w ne nw se sw'.

\n"},"height":{"!type":"number","!doc":"

Optional. The height to set target to in pixels

\n"},"heightIncrement":{"!type":"number","!doc":"

The increment to snap the height resize in pixels.

\n"},"maxHeight":{"!type":"number","!doc":"

The maximum height for the element

\n"},"maxWidth":{"!type":"number","!doc":"

The maximum width for the element

\n"},"minHeight":{"!type":"number","!doc":"

The minimum height for the element

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width for the element

\n"},"pinned":{"!type":"bool","!doc":"

True to ensure that the resize handles are always visible, false indicates resizing by cursor changes only

\n"},"preserveRatio":{"!type":"bool","!doc":"

True to preserve the original ratio between height and width during resize

\n"},"target":{"!type":"+Ext.Element|+Ext.Component","!doc":"

The Element or Component to resize.

\n"},"transparent":{"!type":"bool","!doc":"

True for transparent handles. This is only applied at config time.

\n"},"width":{"!type":"number","!doc":"

Optional. The width to set the target to in pixels

\n"},"widthIncrement":{"!type":"number","!doc":"

The increment to snap the width resize in pixels.

\n"},"delimiterRe":{"!type":"+RegExp"},"el":{"!type":"+Ext.Element","!doc":"

Outer element for resizing behavior.

\n"},"handleCls":{"!type":"string"},"originalTarget":{"!type":"+Ext.Element|+Ext.Component","!doc":"

Reference to the original resize target if the element of the original resize target was a\nField, or an IMG or a TEXTAREA which must be wrapped in a DIV.

\n"},"overCls":{"!type":"string"},"pinnedCls":{"!type":"string"},"resizeTracker":{"!type":"+Ext.resizer.ResizeTracker"},"wrapCls":{"!type":"string"},"destroy":{"!type":"fn() -> !this"},"disable":{"!type":"fn() -> !this"},"enable":{"!type":"fn() -> !this"},"forceHandlesHeight":{"!type":"fn() -> !this","!doc":"

Fix IE6 handle height issue.

\n"},"getEl":{"!type":"fn() -> +Ext.Element","!doc":"

Returns the element that was configured with the el or target config property. If a component was configured with\nthe target property then this will return the element of this component.

\n\n

Textarea and img elements will be wrapped with an additional div because these elements do not support child\nnodes. The original element can be accessed through the originalTarget property.

\n"},"getTarget":{"!type":"fn() -> +Ext.Element|+Ext.Component","!doc":"

Returns the element or component that was configured with the target config property.

\n\n

Textarea and img elements will be wrapped with an additional div because these elements do not support child\nnodes. The original element can be accessed through the originalTarget property.

\n"},"onBeforeResize":{"!type":"fn(tracker: ?, e: ?) -> !this","!doc":"

Relay the Tracker's mousedown event as beforeresize

\n"},"onResize":{"!type":"fn(tracker: ?, e: ?) -> !this","!doc":"

Relay the Tracker's drag event as resizedrag

\n"},"onResizeEnd":{"!type":"fn(tracker: ?, e: ?) -> !this","!doc":"

Relay the Tracker's dragend event as resize

\n"},"resizeTo":{"!type":"fn(width: number, height: number) -> !this","!doc":"

Perform a manual resize and fires the 'resize' event.

\n"},"beforeresize":{"!type":"fn(this: +Ext.resizer.Resizer, width: number, height: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before resize is allowed. Return false to cancel resize.

\n"},"resize":{"!type":"fn(this: +Ext.resizer.Resizer, width: number, height: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired after a resize.

\n"},"resizedrag":{"!type":"fn(this: +Ext.resizer.Resizer, width: number, height: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires during resizing. Return false to cancel resize.

\n"}}},"Splitter":{"!doc":"

This class functions between siblings of a VBox or HBox\nlayout to resize both immediate siblings.

\n\n

A Splitter will preserve the flex ratio of any flexed siblings it is required to resize. It does this by setting the flex property of all flexed siblings\nto equal their pixel size. The actual numerical flex property in the Components will change, but the ratio to the total flex value will be preserved.

\n\n

A Splitter may be configured to show a centered mini-collapse tool orientated to collapse the collapseTarget.\nThe Splitter will then call that sibling Panel's collapse or expand method\nto perform the appropriate operation (depending on the sibling collapse state). To create the mini-collapse tool but take care\nof collapsing yourself, configure the splitter with performCollapse: false.

\n","!type":"fn(config: +Ext.Element|string|Ext_resizer_Splitter_cfg)","prototype":{"!proto":"Ext.Component.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"collapseOnDblClick":{"!type":"bool","!doc":"

True to enable dblclick to toggle expand and collapse on the collapseTarget Panel.

\n"},"collapseTarget":{"!type":"string|+Ext.panel.Panel","!doc":"

A string describing the relative position of the immediate sibling Panel to collapse. May be 'prev' or 'next'.

\n\n

Or the immediate sibling Panel to collapse.

\n\n

The orientation of the mini-collapse tool will be inferred from this setting.

\n\n

Note that only Panels may be collapsed.

\n"},"collapsedCls":{"!type":"string","!doc":"

A class to add to the splitter when it is collapsed. See collapsible.

\n"},"collapsible":{"!type":"bool","!doc":"

True to show a mini-collapse tool in the Splitter to toggle expand and collapse on the collapseTarget Panel.\nDefaults to the collapsible setting of the Panel.

\n"},"defaultSplitMax":{"!type":"number","!doc":"

Provides a default maximum width or height for the two components\nthat the splitter is between.

\n"},"defaultSplitMin":{"!type":"number","!doc":"

Provides a default minimum width or height for the two components\nthat the splitter is between.

\n"},"performCollapse":{"!type":"bool","!doc":"

Set to false to prevent this Splitter's mini-collapse tool from managing the collapse\nstate of the collapseTarget.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"size":{"!type":"number","!doc":"

The size of the splitter. This becomes the height for vertical splitters and\nwidth for horizontal splitters.

\n"},"canResize":{"!type":"bool","!doc":"

Default to tree, allow internal classes to disable resizing

\n"},"childEls":{"!type":"[?]"},"collapseDirProps":{"!type":"?"},"collapsedClsInternal":{"!type":"string"},"orientation":{"!type":"string","!doc":"

Orientation of this Splitter. 'vertical' when used in an hbox layout, 'horizontal'\nwhen used in a vbox layout.

\n"},"orientationProps":{"!type":"?"},"vertical":{"!type":"bool"},"applyCollapseDirection":{"!type":"fn() -> !this"},"applyOrientation":{"!type":"fn() -> !this"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"getCollapseDirection":{"!type":"fn() -> !this"},"getCollapseTarget":{"!type":"fn() -> !this"},"getTrackerConfig":{"!type":"fn() -> !this","!doc":"

Returns the config object (with an xclass property) for the splitter tracker. This\nis overridden by BorderSplitter to create a\nBorderSplitterTracker.

\n"},"onBeforeTargetCollapse":{"!type":"fn() -> !this"},"onBeforeTargetExpand":{"!type":"fn(target: ?) -> !this"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"onTargetCollapse":{"!type":"fn(target: ?) -> !this"},"onTargetExpand":{"!type":"fn(target: ?) -> !this"},"setCollapseEl":{"!type":"fn(display: ?) -> !this"},"setOrientation":{"!type":"fn(orientation: ?) -> !this"},"setSize":{"!type":"fn() -> +Ext.Component","!doc":"

Work around IE bug. %age margins do not get recalculated on element resize unless repaint called.

\n"},"toggleTargetCmp":{"!type":"fn(e: ?, t: ?) -> !this"},"updateOrientation":{"!type":"fn() -> !this"}}},"SplitterTracker":{"!doc":"

Private utility class for Ext.Splitter.

\n","prototype":{"enabled":{"!type":"bool"},"overlayCls":{"!type":"string"},"calculateConstrainRegion":{"!type":"fn() -> !this","!doc":"

calculate the constrain Region in which the splitter el may be moved.

\n"},"createDragOverlay":{"!type":"fn() -> !this"},"endDrag":{"!type":"fn() -> !this","!doc":"

Cleans up the overlay (if we have one) and calls the base. This cannot be done in\nonEnd, because onEnd is only called if a drag is detected but the overlay is created\nregardless (by onBeforeStart).

\n"},"getNextCmp":{"!type":"fn() -> !this"},"getPrevCmp":{"!type":"fn() -> !this"},"getResizeOffset":{"!type":"fn() -> !this"},"getSplitter":{"!type":"fn() -> !this"},"getVertNextConstrainLeft":{"!type":"fn(o: ?) -> !this"},"getVertNextConstrainRight":{"!type":"fn(o: ?) -> !this"},"getVertPrevConstrainLeft":{"!type":"fn(o: ?) -> !this"},"getVertPrevConstrainRight":{"!type":"fn(o: ?) -> !this"},"onBeforeStart":{"!type":"fn(e: ?) -> !this","!doc":"

ensure the tracker is enabled, store boxes of previous and next\ncomponents and calculate the constrain region

\n"},"onDrag":{"!type":"fn(e: ?) -> !this","!doc":"

Track the proxy and set the proper XY coordinates\nwhile constraining the drag

\n"},"onEnd":{"!type":"fn(e: ?) -> !this","!doc":"

perform the resize and remove the proxy class from the splitter el

\n"},"onStart":{"!type":"fn(e: ?) -> !this","!doc":"

We move the splitter el. Add the proxy class.

\n"},"performResize":{"!type":"fn(e: ?, offset: ?) -> !this","!doc":"

Performs the actual resizing of the previous and next components

\n"}}}},"selection":{"CellModel":{"!type":"fn()","prototype":{"!proto":"Ext.selection.Model.prototype","enableKeyNav":{"!type":"bool","!doc":"

Turns on/off keyboard navigation within the grid.

\n"},"mode":{"!type":"string","!doc":"

Mode of selection. Valid values are:

\n\n\n\n"},"preventWrap":{"!type":"bool","!doc":"

Set this configuration to true to prevent wrapping around of selection as\na user navigates to the first or last column.

\n"},"noSelection":{"!type":"?","!doc":"

private property to use when firing a deselect when no old selection exists.

\n"},"bindComponent":{"!type":"fn(view: ?) -> !this"},"deselect":{"!type":"fn(this: +Ext.selection.CellModel, record: +Ext.data.Model, row: number, column: number, eOpts: ?)","!doc":"

Fired after a cell is deselected

\n"},"doMove":{"!type":"fn(direction: ?, e: ?) -> !this"},"getCurrentPosition":{"!type":"fn() -> !this","!doc":"

Returns the current position in the format {row: row, column: column}

\n"},"getHeaderCt":{"!type":"fn() -> !this"},"initKeyNav":{"!type":"fn(view: ?) -> !this"},"isCellSelected":{"!type":"fn(view: ?, row: ?, column: ?) -> !this"},"move":{"!type":"fn(dir: ?, e: ?) -> !this"},"onCellDeselect":{"!type":"fn(position: ?, supressEvent: ?) -> !this","!doc":"

notify view that the cell has been deselected to update the ui\nappropriately

\n"},"onCellSelect":{"!type":"fn(position: ?, supressEvent: ?) -> !this","!doc":"

notify the view that the cell has been selected to update the ui\nappropriately and bring the cell into focus

\n"},"onColumnMove":{"!type":"fn(headerCt: ?, header: ?, fromIdx: ?, toIdx: ?) -> !this","!doc":"

When grid uses optimizedColumnMove (the default), this is added as a\ncolumnmove handler to correctly maintain the\nselected column using the same column header.

\n\n

If optimizedColumnMove === false, (which some grid Features set) then the view is refreshed,\nso this is not added as a handler because the selected column.

\n"},"onEditorTab":{"!type":"fn(editingPlugin: ?, e: ?) -> !this"},"onKeyDown":{"!type":"fn(e: ?) -> !this"},"onKeyLeft":{"!type":"fn(e: ?) -> !this"},"onKeyRight":{"!type":"fn(e: ?) -> !this"},"onKeyTab":{"!type":"fn(e: ?, t: ?) -> !this","!doc":"

Tab key from the View's KeyNav, not from an editor.

\n"},"onKeyUp":{"!type":"fn(e: ?) -> !this"},"onMouseDown":{"!type":"fn(view: ?, cell: ?, cellIndex: ?, record: ?, row: ?, recordIndex: ?, e: ?) -> !this","!doc":"

Set the current position based on where the user clicks.

\n"},"onSelectChange":{"!type":"fn(record: ?, isSelected: ?, suppressEvent: ?, commitFn: ?) -> !this"},"onStoreRemove":{"!type":"fn(store: ?, records: ?, indexes: ?) -> !this","!doc":"

Keep selection model in consistent state upon record deletion.

\n"},"onUpdate":{"!type":"fn(record: ?) -> !this","!doc":"

Called when the contents of the node are updated, perform any processing here.

\n"},"onVetoUIEvent":{"!type":"fn() -> !this"},"onViewRefresh":{"!type":"fn(view: ?) -> !this"},"refresh":{"!type":"fn() -> !this"},"select":{"!type":"fn(this: +Ext.selection.CellModel, record: +Ext.data.Model, row: number, column: number, eOpts: ?)","!doc":"

Fired after a cell is selected

\n"},"selectByPosition":{"!type":"fn(position: ?, suppressEvent: ?) -> !this"},"setCurrentPosition":{"!type":"fn(position: ?, suppressEvent: bool) -> !this","!doc":"

Sets the current position

\n"}}},"CheckboxModel":{"!doc":"

A selection model that renders a column of checkboxes that can be toggled to\nselect or deselect rows. The default mode for this selection model is MULTI.

\n\n

The selection model will inject a header for the checkboxes in the first view\nand according to the injectCheckbox configuration.

\n","!type":"fn()","prototype":{"!proto":"Ext.selection.RowModel.prototype","checkOnly":{"!type":"bool","!doc":"

True if rows can only be selected by clicking on the checkbox column.

\n"},"checkSelector":{"!type":"string","!doc":"

The selector for determining whether the checkbox element is clicked. This may be changed to\nallow for a wider area to be clicked, for example, the whole cell for the selector.

\n"},"injectCheckbox":{"!type":"number|string","!doc":"

The index at which to insert the checkbox column.\nSupported values are a numeric index, and the strings 'first' and 'last'.

\n"},"mode":{"!type":"string|string|string","!doc":"

Modes of selection.\nValid values are \"SINGLE\", \"SIMPLE\", and \"MULTI\".

\n"},"showHeaderCheckbox":{"!type":"bool","!doc":"

Configure as false to not display the header checkbox at the top of the column.\nWhen Ext.data.Store.buffered is set to true, this configuration will\nnot be available because the buffered data set does not always contain all data.

\n"},"checkerOnCls":{"!type":"string","!doc":"

private

\n"},"headerWidth":{"!type":"number"},"addCheckbox":{"!type":"fn(initial: bool) -> !this","!doc":"

Add the header checkbox to the header row

\n"},"beforeViewRender":{"!type":"fn(view: ?) -> !this"},"bindComponent":{"!type":"fn(view: ?) -> !this"},"getHeaderConfig":{"!type":"fn() -> !this","!doc":"

Retrieve a configuration to be used in a HeaderContainer.\nThis should be used when injectCheckbox is set to false.

\n"},"hasLockedHeader":{"!type":"fn() -> !this"},"maybeFireSelectionChange":{"!type":"fn(fireEvent: ?) -> !this","!doc":"

fire selection change as long as true is not passed\ninto maybeFireSelectionChange

\n"},"onHeaderClick":{"!type":"fn(headerCt: ?, header: ?, e: ?) -> !this","!doc":"

Toggle between selecting all and deselecting all when clicking on\na checkbox header.

\n"},"onReconfigure":{"!type":"fn(grid: +Ext.panel.Table, store: +Ext.data.Store, columns: [?]) -> !this","!doc":"

Handles the grid's reconfigure event. Adds the checkbox header if the columns have been reconfigured.

\n"},"onSelectChange":{"!type":"fn() -> !this","!doc":"

Synchronize header checker value as selection changes.

\n"},"onStoreAdd":{"!type":"fn() -> !this","!doc":"

when a record is added to a store

\n"},"onStoreLoad":{"!type":"fn() -> !this"},"onStoreRefresh":{"!type":"fn() -> !this"},"onStoreRemove":{"!type":"fn() -> !this","!doc":"

prune records from the SelectionModel if\nthey were selected at the time they were\nremoved.

\n"},"processSelection":{"!type":"fn(view: ?, record: ?, item: ?, index: ?, e: ?) -> !this"},"refresh":{"!type":"fn() -> !this","!doc":"

After refresh, ensure that the header checkbox state matches

\n"},"renderEmpty":{"!type":"fn() -> !this"},"renderer":{"!type":"fn(value: ?, metaData: ?, record: ?, rowIndex: ?, colIndex: ?, store: ?, view: ?) -> !this","!doc":"

Generates the HTML to be rendered in the injected checkbox column for each row.\nCreates the standard checkbox markup by default; can be overridden to provide custom rendering.\nSee Ext.grid.column.Column.renderer for description of allowed parameters.

\n"},"resumeChanges":{"!type":"fn() -> !this"},"toggleUiHeader":{"!type":"fn(isChecked: bool) -> !this","!doc":"

Toggle the ui header between checked and unchecked state.

\n"},"updateHeaderState":{"!type":"fn() -> !this"}}},"DataViewModel":{"!type":"fn(cfg: ?)","prototype":{"!proto":"Ext.selection.Model.prototype","enableKeyNav":{"!type":"bool","!doc":"

Turns on/off keyboard navigation within the DataView.

\n"},"deselectOnContainerClick":{"!type":"bool"},"bindComponent":{"!type":"fn(view: ?) -> !this"},"destroy":{"!type":"fn() -> !this","!doc":"

cleanup.

\n"},"initKeyNav":{"!type":"fn(view: ?) -> !this"},"onContainerClick":{"!type":"fn() -> !this"},"onItemClick":{"!type":"fn(view: ?, record: ?, item: ?, index: ?, e: ?) -> !this"},"onLastFocusChanged":{"!type":"fn(oldFocus: ?, newFocus: ?, suppressFocus: ?) -> !this"},"onNavKey":{"!type":"fn(step: ?) -> !this"},"onSelectChange":{"!type":"fn(record: ?, isSelected: ?, suppressEvent: ?, commitFn: ?) -> !this","!doc":"

Allow the DataView to update the ui

\n"},"onUpdate":{"!type":"fn(record: ?) -> !this","!doc":"

Called when the contents of the node are updated, perform any processing here.

\n"},"beforedeselect":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired before a record is deselected. If any listener returns false, the\ndeselection is cancelled.

\n"},"beforeselect":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired before a record is selected. If any listener returns false, the\nselection is cancelled.

\n"},"deselect":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired after a record is deselected

\n"},"select":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired after a record is selected

\n"}}},"Model":{"!doc":"

Tracks what records are currently selected in a databound component.

\n\n

This is an abstract class and is not meant to be directly used. Databound UI widgets such as\nGrid and Tree should subclass Ext.selection.Model\nand provide a way to binding to the component.

\n\n

The abstract methods onSelectChange and onLastFocusChanged should be implemented in these\nsubclasses to update the UI widget.

\n","!type":"fn(cfg: ?)","prototype":{"!proto":"Ext.util.Observable.prototype","allowDeselect":{"!type":"bool","!doc":"

Allow users to deselect a record in a DataView, List or Grid.\nOnly applicable when the mode is 'SINGLE'.

\n"},"mode":{"!type":"string|string|string","!doc":"

Mode of selection. Valid values are:

\n\n\n\n"},"pruneRemoved":{"!type":"bool","!doc":"

Remove records from the selection when they are removed from the store.

\n\n

Important: When using paging or a sparsely populated (buffered) Store,\nrecords which are cached in the Store's data collection may be removed from the Store when pages change,\nor when rows are scrolled out of view. For this reason pruneRemoved should be set to false when using a buffered Store.

\n\n

Also, when previously pruned pages are returned to the cache, the records objects in the page will be\nnew instances, and will not match the instances in the selection model's collection. For this reason,\nyou MUST ensure that the Model definition's idProperty references a unique\nkey because in this situation, records in the Store have their IDs compared to records in the SelectionModel\nin order to re-select a record which is scrolled back into view.

\n"},"toggleOnClick":{"!type":"bool","!doc":"

true to toggle the selection state of an item when clicked.\nOnly applicable when the mode is 'SINGLE'.\nOnly applicable when the allowDeselect is 'true'.

\n"},"selected":{"!type":"+Ext.util.MixedCollection","!doc":"

A MixedCollection that maintains all of the currently selected records.

\n"},"suspendChange":{"!type":"number"},"afterKeyNavigate":{"!type":"fn(e: ?, record: ?) -> !this","!doc":"

Private\nCalled after a new record has been navigated to by a keystroke.\nEvent is passed so that shift and ctrl can be handled.

\n"},"beforeViewRender":{"!type":"fn(view: ?) -> !this"},"bindComponent":{"!type":"fn() -> !this"},"bindStore":{"!type":"fn(store: ?, initial: ?) -> !this","!doc":"

binds the store to the selModel.

\n"},"clearSelections":{"!type":"fn() -> !this","!doc":"

A fast reset of the selections without firing events, updating the ui, etc.\nFor private usage only.

\n"},"deselect":{"!type":"fn(records: [+Ext.data.Model]|number, suppressEvent?: bool) -> !this","!doc":"

Deselects a record instance by record instance or index.

\n"},"deselectAll":{"!type":"fn(suppressEvent?: bool) -> !this","!doc":"

Deselects all records in the view.

\n"},"deselectDeletedRecords":{"!type":"fn(records: ?) -> !this","!doc":"

Called by subclasses to deselect records upon detection of deletion from the store

\n"},"deselectDuringSelect":{"!type":"fn(toSelect: ?, selected: ?, suppressEvent: ?) -> !this"},"deselectRange":{"!type":"fn(startRow: +Ext.data.Model|number, endRow: +Ext.data.Model|number) -> !this","!doc":"

Deselects a range of rows if the selection model is not locked.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

cleanup.

\n"},"doDeselect":{"!type":"fn(records: ?, suppressEvent: ?) -> !this","!doc":"

records can be an index, a record or an array of records

\n"},"doMultiSelect":{"!type":"fn(records: ?, keepExisting: ?, suppressEvent: ?) -> !this"},"doSelect":{"!type":"fn(records: ?, keepExisting: ?, suppressEvent: ?) -> !this"},"doSingleSelect":{"!type":"fn(record: ?, suppressEvent: ?) -> !this"},"getCount":{"!type":"fn() -> number","!doc":"

Returns the count of selected records.

\n"},"getLastFocused":{"!type":"fn() -> !this"},"getLastSelected":{"!type":"fn() -> +Ext.data.Model"},"getSelection":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Returns an array of the currently selected records.

\n"},"getSelectionId":{"!type":"fn(record: ?) -> !this"},"getSelectionMode":{"!type":"fn() -> string","!doc":"

Returns the current selectionMode.

\n"},"getStoreListeners":{"!type":"fn() -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"hasSelection":{"!type":"fn() -> bool","!doc":"

Returns true if there are any a selected records.

\n"},"isFocused":{"!type":"fn(record: +Ext.data.Model) -> !this","!doc":"

Determines if this record is currently focused.

\n"},"isLocked":{"!type":"fn() -> bool","!doc":"

Returns true if the selections are locked.

\n"},"isRangeSelected":{"!type":"fn(from: +Ext.data.Model|number, to: +Ext.data.Model|number) -> bool","!doc":"

Returns true if the specified row is selected.

\n"},"isSelected":{"!type":"fn(record: +Ext.data.Model|number) -> bool","!doc":"

Returns true if the specified row is selected.

\n"},"maybeFireSelectionChange":{"!type":"fn(fireEvent: ?) -> !this","!doc":"

fire selection change as long as true is not passed\ninto maybeFireSelectionChange

\n"},"normalizeRowRange":{"!type":"fn(startRow: ?, endRow: ?) -> !this"},"onEditorKey":{"!type":"fn() -> !this"},"onLastFocusChanged":{"!type":"fn(oldFocused: ?, newFocused: ?) -> !this"},"onModelIdChanged":{"!type":"fn(store: ?, model: ?, oldId: ?, newId: ?, oldInternalId: ?) -> !this"},"onSelectChange":{"!type":"fn(record: ?, isSelected: ?, suppressEvent: ?, commitFn: ?) -> !this"},"onStoreAdd":{"!type":"fn() -> !this","!doc":"

when a record is added to a store

\n"},"onStoreClear":{"!type":"fn() -> !this","!doc":"

when a store is cleared remove all selections\n(if there were any)

\n"},"onStoreLoad":{"!type":"fn() -> !this"},"onStoreRefresh":{"!type":"fn() -> !this"},"onStoreRemove":{"!type":"fn(store: ?, records: ?, indexes: ?, isMove: ?) -> !this","!doc":"

prune records from the SelectionModel if\nthey were selected at the time they were\nremoved.

\n"},"onStoreUpdate":{"!type":"fn() -> !this","!doc":"

if records are updated

\n"},"onUpdate":{"!type":"fn() -> !this","!doc":"

Called when the contents of the node are updated, perform any processing here.

\n"},"pruneIf":{"!type":"fn() -> !this"},"refresh":{"!type":"fn() -> !this"},"resumeChanges":{"!type":"fn() -> !this"},"select":{"!type":"fn(records: [+Ext.data.Model]|number, keepExisting?: bool, suppressEvent?: bool) -> !this","!doc":"

Selects a record instance by record instance or index.

\n"},"selectAll":{"!type":"fn(suppressEvent: bool) -> !this","!doc":"

Selects all records in the view.

\n"},"selectRange":{"!type":"fn(startRow: +Ext.data.Model|number, endRow: +Ext.data.Model|number, keepExisting?: bool) -> !this","!doc":"

Selects a range of rows if the selection model is not locked.\nAll rows in between startRow and endRow are also selected.

\n"},"selectWithEvent":{"!type":"fn(record: ?, e: ?) -> !this","!doc":"

Provides differentiation of logic between MULTI, SIMPLE and SINGLE\nselection modes. Requires that an event be passed so that we can know\nif user held ctrl or shift.

\n"},"setLastFocused":{"!type":"fn(record: +Ext.data.Model) -> !this","!doc":"

Sets a record as the last focused record. This does NOT mean\nthat the record has been selected.

\n"},"setLocked":{"!type":"fn(locked: bool) -> !this","!doc":"

Locks the current selection and disables any changes from happening to the selection.

\n"},"setSelectionMode":{"!type":"fn(selMode: string) -> !this","!doc":"

Sets the current selectionMode.

\n"},"storeHasSelected":{"!type":"fn(record: ?) -> !this","!doc":"

We need this special check because we could have a model\nwithout an idProperty. getById() is fast, so we use that\nif possible, otherwise we need to check the internalId

\n"},"suspendChanges":{"!type":"fn() -> !this"},"focuschange":{"!type":"fn(this: +Ext.selection.Model, oldFocused: +Ext.data.Model, newFocused: +Ext.data.Model, eOpts: ?)","!doc":"

Fired when a row is focused

\n"},"selectionchange":{"!type":"fn(this: +Ext.selection.Model, selected: [+Ext.data.Model], eOpts: ?)","!doc":"

Fired after a selection change has occurred

\n"}}},"RowModel":{"!doc":"

Implements row based navigation via keyboard.

\n\n

Must synchronize across grid sections.

\n","!type":"fn()","prototype":{"!proto":"Ext.selection.Model.prototype","enableKeyNav":{"!type":"bool","!doc":"

Turns on/off keyboard navigation within the grid.

\n"},"ignoreRightMouseSelection":{"!type":"bool","!doc":"

True to ignore selections that are made when using the right mouse button if there are\nrecords that are already selected. If no records are selected, selection will continue\nas normal

\n"},"deltaScroll":{"!type":"number","!doc":"

Number of pixels to scroll to the left/right when pressing\nleft/right keys.

\n"},"afterBufferedScrollTo":{"!type":"fn(newIdx: ?, newRecord: ?) -> !this"},"allowRightMouseSelection":{"!type":"fn(e: +Ext.EventObject) -> bool","!doc":"

Checks whether a selection should proceed based on the ignoreRightMouseSelection\noption.

\n"},"bindComponent":{"!type":"fn(view: ?) -> !this"},"getCurrentPosition":{"!type":"fn() -> !this","!doc":"

Returns position of the first selected cell in the selection in the format {row: row, column: column}

\n"},"getRowsVisible":{"!type":"fn() -> !this","!doc":"

Returns the number of rows currently visible on the screen or\nfalse if there were no rows. This assumes that all rows are\nof the same height and the first view is accurate.

\n"},"initKeyNav":{"!type":"fn(view: ?) -> !this"},"isRowSelected":{"!type":"fn(record: ?, index: ?) -> !this"},"onEditorTab":{"!type":"fn(editingPlugin: ?, e: ?) -> !this"},"onKeyDown":{"!type":"fn(e: ?) -> !this","!doc":"

Navigate one record down. This could be a selection or\ncould be simply focusing a record for discontiguous\nselection. Provides bounds checking.

\n"},"onKeyEnd":{"!type":"fn(e: ?) -> !this","!doc":"

go to last visible record in grid.

\n"},"onKeyEnter":{"!type":"fn() -> !this"},"onKeyHome":{"!type":"fn(e: ?) -> !this","!doc":"

go to first visible record in grid.

\n"},"onKeyLeft":{"!type":"fn(e: ?) -> !this"},"onKeyPageDown":{"!type":"fn(e: ?) -> !this","!doc":"

Go one page down from the lastFocused record in the grid.

\n"},"onKeyPageUp":{"!type":"fn(e: ?) -> !this","!doc":"

Go one page up from the lastFocused record in the grid.

\n"},"onKeyRight":{"!type":"fn(e: ?) -> !this"},"onKeySpace":{"!type":"fn(e: ?) -> !this","!doc":"

Select/Deselect based on pressing Spacebar.

\n"},"onKeyUp":{"!type":"fn(e: ?) -> !this","!doc":"

Navigate one record up. This could be a selection or\ncould be simply focusing a record for discontiguous\nselection. Provides bounds checking.

\n"},"onLastFocusChanged":{"!type":"fn(oldFocused: ?, newFocused: ?, supressFocus: ?) -> !this","!doc":"

Provide indication of what row was last focused via\nthe gridview.

\n"},"onRowClick":{"!type":"fn(view: ?, record: ?, item: ?, index: ?, e: ?) -> !this"},"onRowMouseDown":{"!type":"fn(view: ?, record: ?, item: ?, index: ?, e: ?) -> !this","!doc":"

Select the record with the event included so that\nwe can take into account ctrlKey, shiftKey, etc

\n"},"onSelectChange":{"!type":"fn(record: ?, isSelected: ?, suppressEvent: ?, commitFn: ?) -> !this","!doc":"

Allow the GridView to update the UI by\nadding/removing a CSS class from the row.

\n"},"onUpdate":{"!type":"fn(record: ?) -> !this","!doc":"

Called when the contents of the node are updated, perform any processing here.

\n"},"onVetoUIEvent":{"!type":"fn(type: ?, view: ?, cell: ?, rowIndex: ?, cellIndex: ?, e: ?, record: ?) -> !this","!doc":"

If the mousedown event is vetoed, we still want to treat it as though we've had\na mousedown because we don't want to proceed on click. For example, the click on\nan action column vetoes the mousedown event so the click isn't processed.

\n"},"processSelection":{"!type":"fn(view: ?, record: ?, item: ?, index: ?, e: ?) -> !this"},"scrollByDeltaX":{"!type":"fn(delta: ?) -> !this"},"selectByPosition":{"!type":"fn(position: ?) -> !this"},"selectNext":{"!type":"fn(keepExisting?: bool, suppressEvent?: bool) -> bool","!doc":"

Selects the record immediately following the currently selected record.

\n"},"selectPrevious":{"!type":"fn(keepExisting?: bool, suppressEvent?: bool) -> bool","!doc":"

Selects the record that precedes the currently selected record.

\n"},"beforedeselect":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired before a record is deselected. If any listener returns false, the\ndeselection is cancelled.

\n"},"beforeselect":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired before a record is selected. If any listener returns false, the\nselection is cancelled.

\n"},"deselect":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired after a record is deselected

\n"},"select":{"!type":"fn(this: +Ext.selection.RowModel, record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fired after a record is selected

\n"}}},"TreeModel":{"!doc":"

Adds custom behavior for left/right keyboard navigation for use with a tree.\nDepends on the view having an expand and collapse method which accepts a\nrecord. This selection model is created by default for Ext.tree.Panel.

\n","!type":"fn()","prototype":{"!proto":"Ext.selection.RowModel.prototype","bindStore":{"!type":"fn(store: ?, initial: ?) -> !this","!doc":"

binds the store to the selModel.

\n"},"navCollapse":{"!type":"fn(e: ?, t: ?) -> !this"},"navExpand":{"!type":"fn(e: ?, t: ?) -> !this"},"onKeyEnter":{"!type":"fn(e: ?, t: ?) -> !this"},"onKeyLeft":{"!type":"fn(e: ?, t: ?) -> !this"},"onKeyRight":{"!type":"fn(e: ?, t: ?) -> !this"},"onKeySpace":{"!type":"fn(e: ?, t: ?) -> !this","!doc":"

Select/Deselect based on pressing Spacebar.

\n"},"onNodeRemove":{"!type":"fn(parent: ?, node: ?, isMove: ?) -> !this"},"toggleCheck":{"!type":"fn(e: ?) -> !this"}}}},"slider":{"Multi":{"!doc":"

Slider which supports vertical or horizontal orientation, keyboard adjustments, configurable snapping, axis clicking\nand animation. Can be added as an item to any container.

\n\n

Sliders can be created with more than one thumb handle by passing an array of values instead of a single one:

\n\n
Ext.create('Ext.slider.Multi', {\n    width: 200,\n    values: [25, 50, 75],\n    increment: 5,\n    minValue: 0,\n    maxValue: 100,\n\n    // this defaults to true, setting to false allows the thumbs to pass each other\n    constrainThumbs: false,\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_slider_Multi_cfg)","prototype":{"!proto":"Ext.form.field.Base.prototype","animate":{"!type":"bool","!doc":"

Turn on or off animation.

\n"},"clickToChange":{"!type":"bool","!doc":"

Determines whether or not clicking on the Slider axis will change the slider.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"constrainThumbs":{"!type":"bool","!doc":"

True to disallow thumbs from overlapping one another.

\n"},"decimalPrecision":{"!type":"number|bool","!doc":"

The number of decimal places to which to round the Slider's value.

\n\n

To disable rounding, configure as false.

\n"},"fieldSubTpl":{"!type":"+Ext.XTemplate","!doc":"

note: {id} here is really {inputId}, but {cmpId} is available

\n"},"increment":{"!type":"number","!doc":"

How many units to change the slider when adjusting by drag and drop. Use this option to enable 'snapping'.

\n"},"keyIncrement":{"!type":"number","!doc":"

How many units to change the Slider when adjusting with keyboard navigation. If the increment\nconfig is larger, it will be used instead.

\n"},"maxValue":{"!type":"number","!doc":"

The maximum value for the Slider.

\n"},"minValue":{"!type":"number","!doc":"

The minimum value for the Slider.

\n"},"tipText":{"!type":"fn()","!doc":"

A function used to display custom text for the slider tip.

\n\n

Defaults to null, which will use the default on the plugin.

\n"},"useTips":{"!type":"?|bool","!doc":"

True to use an Ext.slider.Tip to display tips for the value. This option may also\nprovide a configuration object for an Ext.slider.Tip.

\n"},"value":{"!type":"number","!doc":"

A value with which to initialize the slider. Setting this will only result in the creation\nof a single slider thumb; if you want multiple thumbs then use the values config instead.

\n\n

Defaults to minValue.

\n"},"values":{"!type":"[number]","!doc":"

Array of Number values with which to initalize the slider. A separate slider thumb will be created for each value\nin this array. This will take precedence over the single value config.

\n"},"vertical":{"!type":"bool","!doc":"

Orient the Slider vertically rather than horizontally.

\n"},"zeroBasedSnapping":{"!type":"bool","!doc":"

Set to true to calculate snap points based on increments from zero as opposed to\nfrom this Slider's minValue.

\n\n

By Default, valid snap points are calculated starting increments from the minValue

\n"},"ariaRole":{"!type":"string"},"childEls":{"!type":"[?]"},"clickRange":{"!type":"[number]","!doc":"

Determines whether or not a click to the slider component is considered to be a user request to change the value. Specified as an array of [top, bottom],\nthe click event's 'top' property is compared to these numbers and the click only considered a change request if it falls within them. e.g. if the 'top'\nvalue of the click event is 4 or 16, the click is not considered a change request as it falls outside of the [5, 15] range

\n"},"dragging":{"!type":"bool","!doc":"

True while the thumb is in a drag operation

\n"},"horizontalProp":{"!type":"string"},"thumbs":{"!type":"[?]","!doc":"

Array containing references to each thumb

\n"},"transformTrackPoints":{"!type":"?"},"addThumb":{"!type":"fn(value?: number) -> +Ext.slider.Thumb","!doc":"

Creates a new thumb and adds it to the slider

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

private

\n"},"calculateThumbPosition":{"!type":"fn(v: ?) -> !this","!doc":"

Given a value within this Slider's range, calculates a Thumb's percentage CSS position to map that value.

\n"},"getNearest":{"!type":"fn(trackPoint: number) -> ?","!doc":"

Returns the nearest thumb to a click event, along with its distance

\n"},"getRange":{"!type":"fn() -> !this"},"getRatio":{"!type":"fn() -> number","!doc":"

Returns the ratio of pixels to mapped values. e.g. if the slider is 200px wide and maxValue - minValue is 100,\nthe ratio is 2

\n"},"getSubTplData":{"!type":"fn() -> ?","!doc":"

private override

\n"},"getSubmitValue":{"!type":"fn() -> string","!doc":"

Returns the value that would be included in a standard form submit for this field. This will be combined with the\nfield's name to form a name=value pair in the submitted parameters. If an empty string is\nreturned then just the name= will be submitted; if null is returned then nothing will be submitted.

\n\n

Note that the value returned will have been processed but may or may not have been\nsuccessfully validated.

\n"},"getTrackpoint":{"!type":"fn(xy: [number]) -> !this","!doc":"

Given an [x, y] position within the slider's track (Points outside the slider's track are coerced to either the minimum or maximum value),\ncalculate how many pixels from the slider origin (left for horizontal Sliders and bottom for vertical Sliders) that point is.

\n\n

If the point is outside the range of the Slider's track, the return value is undefined

\n"},"getValue":{"!type":"fn(index: number) -> number|[number]","!doc":"

Returns the current value of the slider

\n"},"getValues":{"!type":"fn() -> [number]","!doc":"

Returns an array of values - one for the location of each thumb

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private override

\n"},"initEvents":{"!type":"fn() -> !this","!doc":"

Adds keyboard and mouse listeners on this.el. Ignores click events on the internal focus element.

\n"},"initValue":{"!type":"fn() -> !this","!doc":"

private override

\n"},"normalizeValue":{"!type":"fn(value: number) -> number","!doc":"

Returns a snapped, constrained value when given a desired value

\n"},"onClickChange":{"!type":"fn(trackPoint: number) -> !this","!doc":"

Moves the thumb to the indicated position.\nOnly changes the value if the click was within this.clickRange.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onDragEnd":{"!type":"fn() -> !this"},"onDragStart":{"!type":"fn() -> !this"},"onEnable":{"!type":"fn() -> !this","!doc":"

private

\n"},"onKeyDown":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Handler for any keypresses captured by the slider. If the key is UP or RIGHT, the thumb is moved along to the right\nby this.keyIncrement. If DOWN or LEFT it is moved left. Pressing CTRL moves the slider to the end in either direction

\n"},"onMouseDown":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Mousedown handler for the slider. If the clickToChange is enabled and the click was not on the draggable 'thumb',\nthis calculates the new value of the slider and tells the implementation (Horizontal or Vertical) to move the thumb

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

private

\n"},"promoteThumb":{"!type":"fn(topThumb: +Ext.slider.Thumb) -> !this","!doc":"

Moves the given thumb above all other by increasing its z-index. This is called when as drag\nany thumb, so that the thumb that was just dragged is always at the highest z-index. This is\nrequired when the thumbs are stacked on top of each other at one of the ends of the slider's\nrange, which can result in the user not being able to move any of them.

\n"},"reset":{"!type":"fn() -> !this","!doc":"

Resets the current field value to the originally loaded value and clears any validation messages. See Ext.form.Basic.trackResetOnLoad

\n"},"reversePercentageValue":{"!type":"fn(pos: number) -> number","!doc":"

Given a Thumb's percentage position along the slider, returns the mapped slider value for that pixel.\nE.g. if we have a slider 200px wide with minValue = 100 and maxValue = 500, reversePercentageValue(25)\nreturns 200

\n"},"reversePixelValue":{"!type":"fn(pos: number) -> number","!doc":"

Given a pixel location along the slider, returns the mapped slider value for that pixel.\nE.g. if we have a slider 200px wide with minValue = 100 and maxValue = 500, reversePixelValue(50)\nreturns 200

\n"},"setMaxValue":{"!type":"fn(val: number) -> !this","!doc":"

Sets the maximum value for the slider instance. If the current value is more than the maximum value, the current\nvalue will be changed.

\n"},"setMinValue":{"!type":"fn(val: number) -> !this","!doc":"

Sets the minimum value for the slider instance. If the current value is less than the minimum value, the current\nvalue will be changed.

\n"},"setReadOnly":{"!type":"fn(readOnly: ?) -> !this","!doc":"

Sets the read only state of this field.

\n"},"setValue":{"!type":"fn(index: number|[number], value: number, animate?: bool) -> +Ext.slider.Multi","!doc":"

Programmatically sets the value of the Slider. Ensures that the value is constrained within the minValue and\nmaxValue.

\n\n

Setting a single value:\n // Set the second slider value, don't animate\n mySlider.setValue(1, 50, false);

\n\n

Setting multiple values at once\n // Set 3 thumb values, animate\n mySlider.setValue([20, 40, 60], true);

\n"},"syncThumbs":{"!type":"fn() -> !this","!doc":"

Synchronizes thumbs position to the proper proportion of the total component width based on the current slider\nvalue. This will be called automatically when the Slider is resized by a layout, but if it is rendered\nauto width, this method can be called from another resize handler to sync the Slider if necessary.

\n"},"beforechange":{"!type":"fn(slider: +Ext.slider.Multi, newValue: number, oldValue: number, eOpts: ?)","!doc":"

Fires before the slider value is changed. By returning false from an event handler, you can cancel the\nevent and prevent the slider from changing.

\n"},"change":{"!type":"fn(slider: +Ext.slider.Multi, newValue: number, thumb: +Ext.slider.Thumb, eOpts: ?)","!doc":"

Fires when the slider value is changed.

\n"},"changecomplete":{"!type":"fn(slider: +Ext.slider.Multi, newValue: number, thumb: +Ext.slider.Thumb, eOpts: ?)","!doc":"

Fires when the slider value is changed by the user and any drag operations have completed.

\n"},"drag":{"!type":"fn(slider: +Ext.slider.Multi, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires continuously during the drag operation while the mouse is moving.

\n"},"dragend":{"!type":"fn(slider: +Ext.slider.Multi, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires after the drag operation has completed.

\n"},"dragstart":{"!type":"fn(slider: +Ext.slider.Multi, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires after a drag operation has started.

\n"}}},"Single":{"!doc":"

Slider which supports vertical or horizontal orientation, keyboard adjustments, configurable snapping, axis clicking\nand animation. Can be added as an item to any container.

\n\n
Ext.create('Ext.slider.Single', {\n    width: 200,\n    value: 50,\n    increment: 10,\n    minValue: 0,\n    maxValue: 100,\n    renderTo: Ext.getBody()\n});\n
\n\n

The class Ext.slider.Single is aliased to Ext.Slider for backwards compatibility.

\n","!type":"fn(config: +Ext.Element|string|Ext_slider_Single_cfg)","prototype":{"!proto":"Ext.slider.Multi.prototype","getNearest":{"!type":"fn(trackPoint: number) -> ?","!doc":"

private

\n"},"getValue":{"!type":"fn() -> number","!doc":"

Returns the current value of the slider

\n"},"setValue":{"!type":"fn(value: number, animate?: bool) -> !this","!doc":"

Programmatically sets the value of the Slider. Ensures that the value is constrained within the minValue and\nmaxValue.

\n"}}},"Thumb":{"!doc":"

Represents a single thumb element on a Slider. This would not usually be created manually and would instead\nbe created internally by an Multi slider.

\n","!type":"fn(config?: Ext_slider_Thumb_cfg)","prototype":{"!proto":"Ext.Base.prototype","constrain":{"!type":"bool","!doc":"

True to constrain the thumb so that it cannot overlap its siblings

\n"},"slider":{"!type":"+Ext.slider.MultiSlider","!doc":"

The slider this thumb is contained within

\n"},"topThumbZIndex":{"!type":"number","!doc":"

The number used internally to set the z index of the top thumb (see promoteThumb for details)

\n"},"bringToFront":{"!type":"fn() -> !this","!doc":"

Bring thumb dom element to front.

\n"},"destroy":{"!type":"fn() -> !this"},"disable":{"!type":"fn() -> !this","!doc":"

Disables the thumb if it is currently enabled

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enables the thumb if it is currently disabled

\n"},"getElConfig":{"!type":"fn() -> !this"},"getValueFromTracker":{"!type":"fn() -> !this"},"initEvents":{"!type":"fn() -> !this","!doc":"

Sets up an Ext.dd.DragTracker for this thumb

\n"},"move":{"!type":"fn(v: ?, animate: ?) -> !this","!doc":"

move the thumb

\n"},"onBeforeDragStart":{"!type":"fn(e: ?) -> bool","!doc":"

This is tied into the internal Ext.dd.DragTracker. If the slider is currently disabled,\nthis returns false to disable the DragTracker too.

\n"},"onDrag":{"!type":"fn(e: ?) -> !this","!doc":"

This is tied into the internal Ext.dd.DragTracker's onDrag template method. This is called every time\nthe DragTracker detects a drag movement. It updates the Slider's value using the position of the drag

\n"},"onDragEnd":{"!type":"fn(e: ?) -> !this","!doc":"

This is tied to the internal Ext.dd.DragTracker's onEnd template method. Removes the drag CSS class and\nfires the 'changecomplete' event with the new value

\n"},"onDragStart":{"!type":"fn(e: ?) -> !this","!doc":"

This is tied into the internal Ext.dd.DragTracker's onStart template method. Adds the drag CSS class\nto the thumb and fires the 'dragstart' event

\n"},"onRender":{"!type":"fn() -> !this"},"render":{"!type":"fn() -> !this","!doc":"

Renders the thumb into a slider

\n"},"sendToBack":{"!type":"fn() -> !this","!doc":"

Send thumb dom element to back.

\n"}}},"Tip":{"!doc":"

Simple plugin for using an Ext.tip.Tip with a slider to show the slider value. In general this class is not created\ndirectly, instead pass the Ext.slider.Multi.useTips and Ext.slider.Multi.tipText configuration\noptions to the slider directly.

\n\n
Ext.create('Ext.slider.Single', {\n    width: 214,\n    minValue: 0,\n    maxValue: 100,\n    useTips: true,\n    renderTo: Ext.getBody()\n});\n
\n\n

Optionally provide your own tip text by passing tipText:

\n\n
Ext.create('Ext.slider.Single', {\n    width: 214,\n    minValue: 0,\n    maxValue: 100,\n    useTips: true,\n    tipText: function(thumb){\n        return Ext.String.format('**{0}% complete**', thumb.value);\n    },\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_slider_Tip_cfg)","prototype":{"!proto":"Ext.tip.Tip.prototype","align":{"!type":"string","!doc":"

Alignment configuration for the tip to the slider. See Ext.util.Positionable.alignTo. Default\nvalues for alignment are provided by specifying the position config.

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width of the tip in pixels.

\n"},"offsets":{"!type":"[?]","!doc":"

Offsets for aligning the tip to the slider. See Ext.util.Positionable.alignTo. Default values\nfor offsets are provided by specifying the position config.

\n"},"position":{"!type":"string","!doc":"

Sets the position for where the tip will be displayed related to the thumb. This sets\ndefaults for align and offsets configurations. If align or\noffsets configurations are specified, they will override the defaults defined\nby position.

\n"},"defaultHorizontalPosition":{"!type":"string"},"defaultVerticalPosition":{"!type":"string"},"isSliderTip":{"!type":"bool"},"getText":{"!type":"fn(thumb: +Ext.slider.Thumb) -> string","!doc":"

Used to create the text that appears in the Tip's body. By default this just returns the value of the Slider\nThumb that the Tip is attached to. Override to customize.

\n"},"init":{"!type":"fn(slider: ?) -> !this"},"onSlide":{"!type":"fn(slider: +Ext.slider.MultiSlider, e: +Ext.EventObject, thumb: +Ext.slider.Thumb) -> !this","!doc":"

Called whenever a dragstart or drag event is received on the associated Thumb.\nAligns the Tip with the Thumb's new position.

\n"}}}},"supports":{"!doc":"

Determines information about features are supported in the current environment

\n","ArraySort":{"!type":"bool","!doc":"

True if the Array sort native method isn't bugged.

\n"},"AudioTag":{"!type":"bool","!doc":"

True if the device supports the HTML5 audio tag

\n"},"BoundingClientRect":{"!type":"bool","!doc":"

True if the browser supports the getBoundingClientRect method on elements

\n"},"CSS3BorderRadius":{"!type":"bool","!doc":"

True if the device supports CSS3 border radius

\n"},"CSS3BoxShadow":{"!type":"bool","!doc":"

True if document environment supports the CSS3 box-shadow style.

\n"},"CSS3DTransform":{"!type":"bool","!doc":"

True if the device supports CSS3DTransform

\n"},"CSS3LinearGradient":{"!type":"bool","!doc":"

True if the device supports CSS3 linear gradients

\n"},"Canvas":{"!type":"bool","!doc":"

True if the device supports Canvas

\n"},"ClassList":{"!type":"bool","!doc":"

True if document environment supports the HTML5 classList API.

\n"},"ComputedStyle":{"!type":"bool","!doc":"

True if the browser supports document.defaultView.getComputedStyle()

\n"},"CreateContextualFragment":{"!type":"bool","!doc":"

True if browser support CreateContextualFragment range native methods.

\n"},"DeviceMotion":{"!type":"bool","!doc":"

True if the device supports device motion (acceleration and rotation rate)

\n"},"Direct2DBug":{"!type":"bool","!doc":"

True if when asking for an element's dimension via offsetWidth or offsetHeight,\ngetBoundingClientRect, etc. the browser returns the subpixel width rounded to the nearest pixel.

\n"},"DisplayChangeInputSelectionBug":{"!type":"?","!doc":"

True if INPUT elements lose their\nselection when their display style is changed. Essentially, if a text input\nhas focus and its display style is changed, the I-beam disappears.

\n\n

This bug is encountered due to the work around in place for the RightMargin\nbug. This has been observed in Safari 4.0.4 and older, and appears to be fixed\nin Safari 5. It's not clear if Safari 4.1 has the bug, but it has the same WebKit\nversion number as Safari 5 (according to http://unixpapa.com/js/gecko.html).

\n"},"DisplayChangeTextAreaSelectionBug":{"!type":"?","!doc":"

True if TEXTAREA elements lose their\nselection when their display style is changed. Essentially, if a text area has\nfocus and its display style is changed, the I-beam disappears.

\n\n

This bug is encountered due to the work around in place for the RightMargin\nbug. This has been observed in Chrome 10 and Safari 5 and older, and appears to\nbe fixed in Chrome 11.

\n"},"Float":{"!type":"bool","!doc":"

True if the device supports CSS float

\n"},"GeoLocation":{"!type":"bool","!doc":"

True if the device supports GeoLocation

\n"},"GetPositionPercentage":{"!type":"bool","!doc":"

True if the browser will return the left/top/right/bottom\nposition as a percentage when explicitly set as a percentage value.

\n"},"History":{"!type":"bool","!doc":"

True if the device supports HTML5 history

\n"},"LocalStorage":{"!type":"?","!doc":"

True if localStorage is supported

\n"},"MouseEnterLeave":{"!type":"bool","!doc":"

True if the browser supports mouseenter and mouseleave events

\n"},"MouseWheel":{"!type":"bool","!doc":"

True if the browser supports the mousewheel event

\n"},"Opacity":{"!type":"bool","!doc":"

True if the browser supports normal css opacity

\n"},"OrientationChange":{"!type":"bool","!doc":"

True if the device supports orientation change

\n"},"PercentageHeightOverflowBug":{"!type":"bool","!doc":"

In some browsers (IE quirks, IE6, IE7, IE9, chrome, safari and opera at the time\nof this writing) a percentage-height element ignores the horizontal scrollbar\nof its parent element. This method returns true if the browser is affected\nby this bug.

\n"},"Placeholder":{"!type":"bool","!doc":"

True if the browser supports the HTML5 placeholder attribute on inputs

\n"},"PointerEvents":{"!type":"bool","!doc":"

True if document environment supports the CSS3 pointer-events style.

\n"},"Range":{"!type":"bool","!doc":"

True if browser support document.createRange native method.

\n"},"RightMargin":{"!type":"bool","!doc":"

True if the device supports right margin.\nSee https://bugs.webkit.org/show_bug.cgi?id=13343 for why this is needed.

\n"},"RotatedBoundingClientRect":{"!type":"bool","!doc":"

True if the BoundingClientRect is\nrotated when the element is rotated using a CSS transform.

\n"},"ScrollWidthInlinePaddingBug":{"!type":"bool","!doc":"

In some browsers the right padding of an overflowing element is not accounted\nfor in its scrollWidth. The result can vary depending on whether or not\nThe element contains block-level children. This method tests the effect\nof padding on scrollWidth when there are no block-level children inside the\noverflowing element.

\n\n

This method returns true if the browser is affected by this bug.

\n"},"Svg":{"!type":"bool","!doc":"

True if the device supports SVG

\n"},"TextAreaMaxLength":{"!type":"bool","!doc":"

True if the browser supports maxlength on textareas.

\n"},"TimeoutActualLateness":{"!type":"bool","!doc":"

True if the browser passes the \"actualLateness\" parameter to\nsetTimeout. See: https://developer.mozilla.org/en/DOM/window.setTimeout

\n"},"Touch":{"!type":"bool","!doc":"

True if the device supports touch

\n"},"Transitions":{"!type":"bool","!doc":"

True if the device supports CSS3 Transitions

\n"},"TransparentColor":{"!type":"bool","!doc":"

True if the device supports transparent color

\n"},"Vml":{"!type":"bool","!doc":"

True if the device supports VML

\n"},"WindowOnError":{"!type":"bool","!doc":"

True if browser supports window.onerror.

\n"},"xOriginBug":{"!type":"bool","!doc":"

In Chrome 24.0, an RTL element which has vertical overflow positions its right X origin incorrectly.\nIt skips a non-existent scrollbar which has been moved to the left edge due to the RTL setting.

\n\n

http://code.google.com/p/chromium/issues/detail?id=174656

\n\n

This method returns true if the browser is affected by this bug.

\n"},"generateVector":{"!type":"fn() -> !this","!doc":"

Generates a support vector for the current browser/mode. The result can be\nadded to supportsVectors to eliminate feature detection at startup time.

\n"},"init":{"!type":"fn() -> !this","!doc":"

Runs feature detection routines and sets the various flags. This is called when\nthe scripts loads (very early) and again at Ext.onReady. Some detections\nare flagged as early and run immediately. Others that require the document body\nwill not run until ready.

\n\n

Each test is run only once, so calling this method from an onReady function is safe\nand ensures that all flags have been set.

\n"}},"tab":{"Bar":{"!doc":"

TabBar is used internally by a TabPanel and typically should not need to be created manually.\nThe tab bar automatically removes the default title provided by Ext.panel.Header

\n","!type":"fn(config: +Ext.Element|string|Ext_tab_Bar_cfg)","prototype":{"!proto":"Ext.panel.Header.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"maxTabWidth":{"!type":"number","!doc":"

The maximum width for a tab in this tab Bar. Defaults to the tab Panel's maxTabWidth value.

\n"},"minTabWidth":{"!type":"number","!doc":"

The minimum width for a tab in this tab Bar. Defaults to the tab Panel's minTabWidth value.

\n"},"plain":{"!type":"bool","!doc":"

True to not show the full background on the tabbar

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"childEls":{"!type":"[?]"},"isTabBar":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Tab Bar, or subclass thereof.

\n"},"adjustTabPositions":{"!type":"fn() -> !this"},"afterComponentLayout":{"!type":"fn(width: ?) -> !this","!doc":"

Called by the layout system after the Component has been laid out.

\n"},"afterLayout":{"!type":"fn() -> !this","!doc":"

Invoked after the Container has laid out (and rendered if necessary)\nits child Components.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"closeTab":{"!type":"fn(toClose: +Ext.tab.Tab) -> !this","!doc":"

Closes the given tab by removing it from the TabBar and removing the corresponding card from the TabPanel

\n"},"findNextActivatable":{"!type":"fn(toClose: ?) -> !this","!doc":"

private - used by TabPanel too.\nWorks out the next tab to activate when one tab is closed.

\n"},"getLayout":{"!type":"fn() -> +Ext.layout.container.Container","!doc":"

Returns the layout instance currently associated with this Container.\nIf a layout has not been instantiated yet, that is done first

\n"},"getTabInfoFromPoint":{"!type":"fn(xy: ?) -> !this","!doc":"

in IE8 and IE9 the clickable region of a rotated element is not its new rotated\nposition, but it's original unrotated position. The result is that rotated tabs do\nnot capture click and mousenter/mosueleave events correctly. This method accepts\nan xy position and calculates if the coordinates are within a tab and if they\nare within the tab's close icon (if any)

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onAdd":{"!type":"fn(tab: ?) -> !this","!doc":"

Set up the tools.<tool type> link in the owning Panel.

\n"},"onClick":{"!type":"fn(e: ?, target: ?) -> !this"},"onMouseLeave":{"!type":"fn(e: ?) -> !this"},"onMouseMove":{"!type":"fn(e: ?) -> !this","!doc":"

private

\n"},"onRemove":{"!type":"fn(tab: ?) -> !this","!doc":"

This method is invoked after a new Component has been\nremoved. It is passed the Component which has been\nremoved. This method may be used to update any internal\nstructure which may depend upon the state of the child items.

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"setActiveTab":{"!type":"fn(tab: +Ext.tab.Tab, initial: bool) -> !this","!doc":"

Marks the given tab as active

\n"},"change":{"!type":"fn(tabBar: +Ext.tab.Bar, tab: +Ext.tab.Tab, card: +Ext.Component, eOpts: ?)","!doc":"

Fired when the currently-active tab has changed

\n"}}},"Panel":{"!doc":"

A basic tab container. TabPanels can be used exactly like a standard Ext.panel.Panel for\nlayout purposes, but also have special support for containing child Components\n(items) that are managed using a\nCardLayout layout manager, and displayed as separate tabs.

\n\n

Note: By default, a tab's close tool destroys the child tab Component and all its descendants.\nThis makes the child tab Component, and all its descendants unusable. To enable re-use of a tab,\nconfigure the TabPanel with autoDestroy: false.

\n\n

TabPanel's layout

\n\n

TabPanels use a Dock layout to position the TabBar at the top of the widget.\nPanels added to the TabPanel will have their header hidden by default because the Tab will\nautomatically take the Panel's configured title and icon.

\n\n

TabPanels use their header or footer\nelement (depending on the tabPosition configuration) to accommodate the tab selector buttons.\nThis means that a TabPanel will not display any configured title, and will not display any configured\nheader tools.

\n\n

To display a header, embed the TabPanel in a Panel which uses\nlayout: 'fit'.

\n\n

Controlling tabs

\n\n

Configuration options for the Ext.tab.Tab that represents the component can be passed in\nby specifying the tabConfig option:

\n\n
Ext.create('Ext.tab.Panel', {\n    width: 400,\n    height: 400,\n    renderTo: document.body,\n    items: [{\n        title: 'Foo'\n    }, {\n        title: 'Bar',\n        tabConfig: {\n            title: 'Custom Title',\n            tooltip: 'A button tooltip'\n        }\n    }]\n});\n
\n\n

Vetoing Changes

\n\n

User interaction when changing the tabs can be vetoed by listening to the beforetabchange event.\nBy returning false, the tab change will not occur.

\n\n
Ext.create('Ext.tab.Panel', {\n    renderTo: Ext.getBody(),\n    width: 200,\n    height: 200,\n    listeners: {\n        beforetabchange: function(tabs, newTab, oldTab) {\n            return newTab.title != 'P2';\n        }\n    },\n    items: [{\n        title: 'P1'\n    }, {\n        title: 'P2'\n    }, {\n        title: 'P3'\n    }]\n}); \n
\n\n

Examples

\n\n

Here is a basic TabPanel rendered to the body. This also shows the useful configuration activeTab,\nwhich allows you to set the active tab on render. If you do not set an activeTab, no tabs will be\nactive by default.

\n\n
Ext.create('Ext.tab.Panel', {\n    width: 300,\n    height: 200,\n    activeTab: 0,\n    items: [\n        {\n            title: 'Tab 1',\n            bodyPadding: 10,\n            html : 'A simple tab'\n        },\n        {\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n
\n\n

It is easy to control the visibility of items in the tab bar. Specify hidden: true to have the\ntab button hidden initially. Items can be subsequently hidden and show by accessing the\ntab property on the child item.

\n\n
var tabs = Ext.create('Ext.tab.Panel', {\n    width: 400,\n    height: 400,\n    renderTo: document.body,\n    items: [{\n        title: 'Home',\n        html: 'Home',\n        itemId: 'home'\n    }, {\n        title: 'Users',\n        html: 'Users',\n        itemId: 'users',\n        hidden: true\n    }, {\n        title: 'Tickets',\n        html: 'Tickets',\n        itemId: 'tickets'\n    }]\n});\n\nsetTimeout(function(){\n    tabs.child('#home').tab.hide();\n    var users = tabs.child('#users');\n    users.tab.show();\n    tabs.setActiveTab(users);\n}, 1000);\n
\n\n

You can remove the background of the TabBar by setting the plain property to true.

\n\n
Ext.create('Ext.tab.Panel', {\n    width: 300,\n    height: 200,\n    activeTab: 0,\n    plain: true,\n    items: [\n        {\n            title: 'Tab 1',\n            bodyPadding: 10,\n            html : 'A simple tab'\n        },\n        {\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n
\n\n

Another useful configuration of TabPanel is tabPosition. This allows you to change the\nposition where the tabs are displayed. The available options for this are 'top' (default) and\n'bottom'.

\n\n
Ext.create('Ext.tab.Panel', {\n    width: 300,\n    height: 200,\n    activeTab: 0,\n    bodyPadding: 10,\n    tabPosition: 'bottom',\n    items: [\n        {\n            title: 'Tab 1',\n            html : 'A simple tab'\n        },\n        {\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n
\n\n

The setActiveTab is a very useful method in TabPanel which will allow you to change the\ncurrent active tab. You can either give it an index or an instance of a tab. For example:

\n\n
var tabs = Ext.create('Ext.tab.Panel', {\n    items: [\n        {\n            id   : 'my-tab',\n            title: 'Tab 1',\n            html : 'A simple tab'\n        },\n        {\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n\nvar tab = Ext.getCmp('my-tab');\n\nExt.create('Ext.button.Button', {\n    renderTo: Ext.getBody(),\n    text    : 'Select the first tab',\n    scope   : this,\n    handler : function() {\n        tabs.setActiveTab(tab);\n    }\n});\n\nExt.create('Ext.button.Button', {\n    text    : 'Select the second tab',\n    scope   : this,\n    handler : function() {\n        tabs.setActiveTab(1);\n    },\n    renderTo : Ext.getBody()\n});\n
\n\n

The getActiveTab is a another useful method in TabPanel which will return the current active tab.

\n\n
var tabs = Ext.create('Ext.tab.Panel', {\n    items: [\n        {\n            title: 'Tab 1',\n            html : 'A simple tab'\n        },\n        {\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n\nExt.create('Ext.button.Button', {\n    text    : 'Get active tab',\n    scope   : this,\n    handler : function() {\n        var tab = tabs.getActiveTab();\n        alert('Current tab: ' + tab.title);\n    },\n    renderTo : Ext.getBody()\n});\n
\n\n

Adding a new tab is very simple with a TabPanel. You simple call the add method with an config\nobject for a panel.

\n\n
var tabs = Ext.create('Ext.tab.Panel', {\n    items: [\n        {\n            title: 'Tab 1',\n            html : 'A simple tab'\n        },\n        {\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n\nExt.create('Ext.button.Button', {\n    text    : 'New tab',\n    scope   : this,\n    handler : function() {\n        var tab = tabs.add({\n            // we use the tabs.items property to get the length of current items/tabs\n            title: 'Tab ' + (tabs.items.length + 1),\n            html : 'Another one'\n        });\n\n        tabs.setActiveTab(tab);\n    },\n    renderTo : Ext.getBody()\n});\n
\n\n

Additionally, removing a tab is very also simple with a TabPanel. You simple call the remove method\nwith an config object for a panel.

\n\n
var tabs = Ext.create('Ext.tab.Panel', {\n    items: [\n        {\n            title: 'Tab 1',\n            html : 'A simple tab'\n        },\n        {\n            id   : 'remove-this-tab',\n            title: 'Tab 2',\n            html : 'Another one'\n        }\n    ],\n    renderTo : Ext.getBody()\n});\n\nExt.create('Ext.button.Button', {\n    text    : 'Remove tab',\n    scope   : this,\n    handler : function() {\n        var tab = Ext.getCmp('remove-this-tab');\n        tabs.remove(tab);\n    },\n    renderTo : Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_tab_Panel_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","activeItem":{"!type":"string|number","!doc":"

Doesn't apply for TabPanel, use activeTab instead.

\n"},"activeTab":{"!type":"string|number|+Ext.Component","!doc":"

The tab to activate initially. Either an ID, index or the tab component itself.

\n"},"deferredRender":{"!type":"bool","!doc":"

True by default to defer the rendering of child items to the browsers DOM\nuntil a tab is activated. False will render all contained items as soon as\nthe layout is rendered. If there is a significant amount of content or a lot of\nheavy controls being rendered into panels that are not displayed by default, setting this to true might improve\nperformance.

\n\n

The deferredRender property is internally passed to the layout manager for TabPanels (Ext.layout.container.Card) as its Ext.layout.container.Card.deferredRender configuration value.

\n\n

Note: leaving deferredRender as true means that the content within an unactivated tab will not be available

\n"},"itemCls":{"!type":"string","!doc":"

The class added to each child item of this TabPanel.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Optional configuration object for the internal card layout.\nIf present, this is passed straight through to the layout's constructor

\n"},"maxTabWidth":{"!type":"number","!doc":"

The maximum width for each tab.

\n"},"minTabWidth":{"!type":"number","!doc":"

The minimum width for a tab in the tabBar.

\n"},"plain":{"!type":"bool","!doc":"

True to not show the full background on the TabBar.

\n"},"removePanelHeader":{"!type":"bool","!doc":"

True to instruct each Panel added to the TabContainer to not render its header element.\nThis is to ensure that the title of the panel does not appear twice.

\n"},"tabBar":{"!type":"+Ext.tab.Bar","!doc":"

Internal reference to the docked TabBar

\n"},"tabPosition":{"!type":"string|string|string|string","!doc":"

The position where the tab strip should be rendered. Can be top, bottom,\nleft or right

\n"},"doRemove":{"!type":"fn(item: ?, autoDestroy: ?) -> !this","!doc":"

Unlink the removed child item from its (@link Ext.tab.Tab Tab}.

\n\n

If we're removing the currently active tab, activate the nearest one. The item is removed when we call super,\nso we can do preprocessing before then to find the card's index

\n"},"getActiveTab":{"!type":"fn() -> +Ext.Component","!doc":"

Returns the item that is currently active inside this TabPanel.

\n"},"getTabBar":{"!type":"fn() -> +Ext.tab.Bar","!doc":"

Returns the Ext.tab.Bar currently used in this TabPanel

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"onAdd":{"!type":"fn(item: ?, index: ?) -> !this","!doc":"

Makes sure we have a Tab for each item added to the TabPanel

\n"},"onItemBeforeShow":{"!type":"fn(item: ?) -> !this","!doc":"

Sets activeTab before item is shown.

\n"},"onItemDisable":{"!type":"fn(item: ?) -> !this","!doc":"

Disable corresponding tab when item is enabled.

\n"},"onItemEnable":{"!type":"fn(item: ?) -> !this","!doc":"

Enable corresponding tab when item is enabled.

\n"},"onItemIconChange":{"!type":"fn(item: ?, newIcon: ?) -> !this","!doc":"

Update the tab icon when panel icon has been set or changed.

\n"},"onItemIconClsChange":{"!type":"fn(item: ?, newIconCls: ?) -> !this","!doc":"

Update the tab iconCls when panel iconCls has been set or changed.

\n"},"onItemTitleChange":{"!type":"fn(item: ?, newTitle: ?) -> !this","!doc":"

Update the tab title when panel title has been set or changed.

\n"},"onRemove":{"!type":"fn(item: ?, destroying: ?) -> !this","!doc":"

Makes sure we remove the corresponding Tab when an item is removed

\n"},"setActiveTab":{"!type":"fn(card: string|number|+Ext.Component) -> +Ext.Component","!doc":"

Makes the given card active. Makes it the visible card in the TabPanel's CardLayout and highlights the Tab.

\n"},"beforetabchange":{"!type":"fn(tabPanel: +Ext.tab.Panel, newCard: +Ext.Component, oldCard: +Ext.Component, eOpts: ?)","!doc":"

Fires before a tab change (activated by setActiveTab). Return false in any listener to cancel\nthe tabchange

\n"},"tabchange":{"!type":"fn(tabPanel: +Ext.tab.Panel, newCard: +Ext.Component, oldCard: +Ext.Component, eOpts: ?)","!doc":"

Fires when a new tab has been activated (activated by setActiveTab).

\n"}}},"Tab":{"!doc":"

Represents a single Tab in a TabPanel. A Tab is simply a slightly customized Button,\nstyled to look like a tab. Tabs are optionally closable, and can also be disabled. 99% of the time you will not\nneed to create Tabs manually as the framework does so automatically when you use a TabPanel

\n","!type":"fn(config: +Ext.Element|string|Ext_tab_Tab_cfg)","prototype":{"!proto":"Ext.button.Button.prototype","activeCls":{"!type":"string","!doc":"

The CSS class to be applied to a Tab when it is active.\nProviding your own CSS for this class enables you to customize the active state.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to add to all buttons.

\n"},"closable":{"!type":"bool","!doc":"

True if the tab is currently closable

\n"},"closableCls":{"!type":"string","!doc":"

The CSS class which is added to the tab when it is closable

\n"},"closeText":{"!type":"string","!doc":"

The accessible text label for the close button link; only used when closable = true.

\n"},"disabledCls":{"!type":"string","!doc":"

The CSS class to be applied to a Tab when it is disabled.

\n"},"scale":{"!type":"string|string|string","!doc":"

The size of the Button. Three values are allowed:

\n\n\n\n"},"active":{"!type":"bool","!doc":"

Indicates that this tab is currently active. This is NOT a public configuration.

\n"},"closeElOverCls":{"!type":"string"},"isTab":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Tab, or subclass thereof.

\n"},"position":{"!type":"string"},"activate":{"!type":"fn(this: +Ext.tab.Tab, eOpts: ?)","!doc":"

Fired when the tab is activated.

\n"},"beforeRender":{"!type":"fn() -> !this"},"deactivate":{"!type":"fn(this: +Ext.tab.Tab, eOpts: ?)","!doc":"

Fired when the tab is deactivated.

\n"},"disable":{"!type":"fn(silent: ?) -> !this","!doc":"

inherit docs

\n"},"enable":{"!type":"fn(silent: ?) -> !this","!doc":"

inherit docs

\n"},"fireClose":{"!type":"fn() -> !this","!doc":"

Fires the close event on the tab.

\n"},"getFramingInfoCls":{"!type":"fn() -> !this"},"getTemplateArgs":{"!type":"fn() -> ?","!doc":"

This method returns an object which provides substitution parameters for the XTemplate used to\ncreate this Button's DOM structure.

\n\n

Instances or subclasses which use a different Template to create a different DOM structure may need to provide\ntheir own implementation of this method.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

inherit docs

\n"},"onCloseClick":{"!type":"fn() -> !this","!doc":"

Listener attached to click events on the Tab's close button

\n"},"onDeleteKey":{"!type":"fn(e: ?) -> !this"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onEnterKey":{"!type":"fn(e: ?) -> !this"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"setCard":{"!type":"fn(card: +Ext.Component) -> !this","!doc":"

Sets this tab's attached card. Usually this is handled automatically by the Ext.tab.Panel that this Tab\nbelongs to and would not need to be done by the developer

\n"},"setClosable":{"!type":"fn(closable: bool) -> !this","!doc":"

Sets the tab as either closable or not.

\n"},"setElOrientation":{"!type":"fn() -> !this"},"syncClosableElements":{"!type":"fn() -> !this","!doc":"

This method ensures that the closeBtn element exists or not based on 'closable'.

\n"},"syncClosableUI":{"!type":"fn() -> !this","!doc":"

This method ensures that the UI classes are added or removed based on 'closable'.

\n"},"beforeclose":{"!type":"fn(tab: +Ext.tab.Tab, eOpts: ?)","!doc":"

Fires if the user clicks on the Tab's close button, but before the close event is fired. Return\nfalse from any listener to stop the close event being fired

\n"},"close":{"!type":"fn(tab: +Ext.tab.Tab, eOpts: ?)","!doc":"

Fires to indicate that the tab is to be closed, usually because the user has clicked the close button.

\n"}}}},"tip":{"QuickTip":{"!doc":"

A specialized tooltip class for tooltips that can be specified in markup and automatically managed\nby the global Ext.tip.QuickTipManager instance. See the QuickTipManager documentation for\nadditional usage details and examples.

\n","!type":"fn(config: +Ext.Element|string|Ext_tip_QuickTip_cfg)","prototype":{"!proto":"Ext.tip.ToolTip.prototype","interceptTitles":{"!type":"bool","!doc":"

true to automatically use the element's DOM title value if available.

\n"},"target":{"!type":"string|+HTMLElement|+Ext.Element","!doc":"

The target HTMLElement, Ext.Element or id to associate with this Quicktip.

\n\n

Defaults to the document.

\n"},"title":{"!type":"string","!doc":"

Force creation of header Component

\n"},"tagConfig":{"!type":"?"},"cancelShow":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Hides a visible tip or cancels an impending show for a particular element.

\n"},"getTipCfg":{"!type":"fn(e: ?) -> !this","!doc":"

Reads the tip text from the closest node to the event target which contains the\nattribute we are configured to look for. Returns an object containing the text\nfrom the attribute, and the target element from which the text was read.

\n"},"hide":{"!type":"fn() -> !this","!doc":"

Hides this tooltip if visible.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onTargetOut":{"!type":"fn(e: ?) -> !this"},"onTargetOver":{"!type":"fn(e: ?) -> !this"},"register":{"!type":"fn(config: ?) -> !this","!doc":"

Configures a new quick tip instance and assigns it to a target element.

\n\n

For example usage, see the Ext.tip.QuickTipManager class header.

\n"},"show":{"!type":"fn() -> !this","!doc":"

Shows this tooltip at the current event target XY position.

\n"},"showAt":{"!type":"fn(xy: ?) -> !this","!doc":"

Shows this tip at the specified XY position. Example usage:

\n\n
// Show the tip at x:50 and y:100\ntip.showAt([50,100]);\n
\n"},"targetTextEmpty":{"!type":"fn() -> !this"},"unregister":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Removes this quick tip from its element and destroys it.

\n"}}},"QuickTipManager":{"!doc":"

Provides attractive and customizable tooltips for any element. The QuickTips\nsingleton is used to configure and manage tooltips globally for multiple elements\nin a generic manner. To create individual tooltips with maximum customizability,\nyou should consider either Ext.tip.Tip or Ext.tip.ToolTip.

\n\n

Quicktips can be configured via tag attributes directly in markup, or by\nregistering quick tips programmatically via the register method.

\n\n

The singleton's instance of Ext.tip.QuickTip is available via\ngetQuickTip, and supports all the methods, and all the all the\nconfiguration properties of Ext.tip.QuickTip. These settings will apply to all\ntooltips shown by the singleton.

\n\n

Below is the summary of the configuration properties which can be used.\nFor detailed descriptions see the config options for the\nQuickTip class

\n\n

QuickTips singleton configs (all are optional)

\n\n\n\n\n

Target element configs (optional unless otherwise noted)

\n\n\n\n\n

Here is an example showing how some of these config options could be used:

\n\n
// Init the singleton.  Any tag-based quick tips will start working.\nExt.tip.QuickTipManager.init();\n\n// Apply a set of config properties to the singleton\nExt.apply(Ext.tip.QuickTipManager.getQuickTip(), {\n    maxWidth: 200,\n    minWidth: 100,\n    showDelay: 50      // Show 50ms after entering target\n});\n\n// Create a small panel to add a quick tip to\nExt.create('Ext.container.Container', {\n    id: 'quickTipContainer',\n    width: 200,\n    height: 150,\n    style: {\n        backgroundColor:'#000000'\n    },\n    renderTo: Ext.getBody()\n});\n\n\n// Manually register a quick tip for a specific element\nExt.tip.QuickTipManager.register({\n    target: 'quickTipContainer',\n    title: 'My Tooltip',\n    text: 'This tooltip was added in code',\n    width: 100,\n    dismissDelay: 10000 // Hide after 10 seconds hover\n});\n
\n\n

To register a quick tip in markup, you simply add one or more of the valid QuickTip\nattributes prefixed with the data- namespace. The HTML element itself is\nautomatically set as the quick tip target. Here is the summary of supported attributes\n(optional unless otherwise noted):

\n\n\n\n\n

Here is an example of configuring an HTML element to display a tooltip from markup:

\n\n
// Add a quick tip to an HTML button\n<input type=\"button\" value=\"OK\" data-qtitle=\"OK Button\" data-qwidth=\"100\"\n     data-qtip=\"This is a quick tip from markup!\"></input>\n
\n","disabled":{"!type":"bool"},"ddDisable":{"!type":"fn() -> !this","!doc":"

Protected method called by the dd classes

\n"},"ddEnable":{"!type":"fn() -> !this","!doc":"

Protected method called by the dd classes

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroys the QuickTips instance.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

Disables quick tips globally.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enables quick tips globally.

\n"},"getQuickTip":{"!type":"fn() -> +Ext.tip.QuickTip","!doc":"

Gets the single QuickTip instance used to show tips\nfrom all registered elements.

\n"},"init":{"!type":"fn(autoRender?: bool, config?: ?) -> !this","!doc":"

Initializes the global QuickTips instance and prepare any quick tips.

\n"},"isEnabled":{"!type":"fn() -> bool","!doc":"

Returns true if quick tips are enabled, else false.

\n"},"register":{"!type":"fn(config: ?) -> !this","!doc":"

Configures a new quick tip instance and assigns it to a target element. See\nExt.tip.QuickTip.register for details.

\n"},"tips":{"!type":"fn(config: ?) -> !this","!doc":"

Alias of register.

\n"},"unregister":{"!type":"fn(el: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Removes any registered quick tip from the target element and destroys it.

\n"}},"Tip":{"!doc":"

This is the base class for Ext.tip.QuickTip and Ext.tip.ToolTip that provides the basic layout and\npositioning that all tip-based classes require. This class can be used directly for simple, statically-positioned\ntips that are displayed programmatically, or it can be extended to provide custom tip implementations.

\n","!type":"fn(config: +Ext.Element|string|Ext_tip_Tip_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","autoRender":{"!type":"bool|string|+HTMLElement|+Ext.Element","!doc":"

private panel overrides

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"closable":{"!type":"bool","!doc":"

True to render a close tool button into the tooltip header.

\n"},"closeAction":{"!type":"string","!doc":"

The action to take when the close header tool is clicked:

\n\n\n\n\n

Note: This behavior has changed! setting does affect the close method\nwhich will invoke the approriate closeAction.

\n"},"constrainPosition":{"!type":"bool","!doc":"

If true, then the tooltip will be automatically constrained to stay within\nthe browser viewport.

\n"},"defaultAlign":{"!type":"string","!doc":"

Experimental. The default Ext.util.Positionable.alignTo anchor position value\nfor this tip relative to its element of origin.

\n"},"floating":{"!type":"bool","!doc":"

Specify as true to float the Component outside of the document flow using CSS absolute positioning.

\n\n

Components such as Windows and Menus are floating by default.

\n\n

Floating Components that are programatically rendered will register\nthemselves with the global ZIndexManager

\n\n

Floating Components as child items of a Container

\n\n

A floating Component may be used as a child item of a Container. This just allows the floating Component to seek\na ZIndexManager by examining the ownerCt chain.

\n\n

When configured as floating, Components acquire, at render time, a ZIndexManager which\nmanages a stack of related floating Components. The ZIndexManager brings a single floating Component to the top\nof its stack when the Component's toFront method is called.

\n\n

The ZIndexManager is found by traversing up the ownerCt chain to find an ancestor which itself is\nfloating. This is so that descendant floating Components of floating Containers (Such as a ComboBox dropdown\nwithin a Window) can have its zIndex managed relative to any siblings, but always above that floating\nancestor Container.

\n\n

If no floating ancestor is found, a floating Component registers itself with the default ZIndexManager.

\n\n

Floating components do not participate in the Container's layout. Because of this, they are not rendered until\nyou explicitly show them.

\n\n

After rendering, the ownerCt reference is deleted, and the floatParent property is set to the found\nfloating ancestor Container. If no floating ancestor Container was found the floatParent property will\nnot be set.

\n"},"focusOnToFront":{"!type":"bool","!doc":"

Specifies whether the floated component should be automatically focused when\nit is brought to the front.

\n"},"frameHeader":{"!type":"bool","!doc":"

True to apply a frame to the panel panels header (if 'frame' is true).

\n"},"hidden":{"!type":"bool","!doc":"

true to hide the component.

\n"},"maxWidth":{"!type":"number","!doc":"

The maximum width of the tip in pixels. The maximum supported value is 500.

\n"},"minWidth":{"!type":"number","!doc":"

The minimum width of the tip in pixels.

\n"},"shadow":{"!type":"bool|string","!doc":"

true or \"sides\" for the default effect, \"frame\" for 4-way shadow, and \"drop\"\nfor bottom-right shadow.

\n"},"width":{"!type":"number","!doc":"

Width in pixels of the tip. Width will be ignored if it\nexceeds the bounds of minWidth or maxWidth.

\n"},"alwaysFramed":{"!type":"bool","!doc":"

Flag to Renderable to always look up the framing styles for this Component

\n"},"ariaRole":{"!type":"string"},"ghost":{"!type":"?","!doc":"

Tip does not ghost. Drag is \"live\"

\n"},"unghost":{"!type":"?"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initDraggable":{"!type":"fn() -> !this","!doc":"

Set Tip draggable using base Component's draggability.

\n"},"showAt":{"!type":"fn(xy: [number]) -> !this","!doc":"

Shows this tip at the specified XY position. Example usage:

\n\n
// Show the tip at x:50 and y:100\ntip.showAt([50,100]);\n
\n"}}},"ToolTip":{"!doc":"

ToolTip is a Ext.tip.Tip implementation that handles the common case of displaying a\ntooltip when hovering over a certain element or elements on the page. It allows fine-grained\ncontrol over the tooltip's alignment relative to the target element or mouse, and the timing\nof when it is automatically shown and hidden.

\n\n

This implementation does not have a built-in method of automatically populating the tooltip's\ntext based on the target element; you must either configure a fixed html value for each\nToolTip instance, or implement custom logic (e.g. in a beforeshow event listener) to\ngenerate the appropriate tooltip content on the fly. See Ext.tip.QuickTip for a more\nconvenient way of automatically populating and configuring a tooltip based on specific DOM\nattributes of each target element.

\n\n

Basic Example

\n\n
var tip = Ext.create('Ext.tip.ToolTip', {\n    target: 'clearButton',\n    html: 'Press this button to clear the form'\n});\n
\n\n

\"Basic

\n\n

Delegation

\n\n

In addition to attaching a ToolTip to a single element, you can also use delegation to attach\none ToolTip to many elements under a common parent. This is more efficient than creating many\nToolTip instances. To do this, point the target config to a common ancestor of all the\nelements, and then set the delegate config to a CSS selector that will select all the\nappropriate sub-elements.

\n\n

When using delegation, it is likely that you will want to programmatically change the content\nof the ToolTip based on each delegate element; you can do this by implementing a custom\nlistener for the beforeshow event. Example:

\n\n
var store = Ext.create('Ext.data.ArrayStore', {\n    fields: ['company', 'price', 'change'],\n    data: [\n        ['3m Co',                               71.72, 0.02],\n        ['Alcoa Inc',                           29.01, 0.42],\n        ['Altria Group Inc',                    83.81, 0.28],\n        ['American Express Company',            52.55, 0.01],\n        ['American International Group, Inc.',  64.13, 0.31],\n        ['AT&T Inc.',                           31.61, -0.48]\n    ]\n});\n\nvar grid = Ext.create('Ext.grid.Panel', {\n    title: 'Array Grid',\n    store: store,\n    columns: [\n        {text: 'Company', flex: 1, dataIndex: 'company'},\n        {text: 'Price', width: 75, dataIndex: 'price'},\n        {text: 'Change', width: 75, dataIndex: 'change'}\n    ],\n    height: 200,\n    width: 400,\n    renderTo: Ext.getBody()\n});\n\nvar view = grid.getView();\nvar tip = Ext.create('Ext.tip.ToolTip', {\n    // The overall target element.\n    target: view.el,\n    // Each grid row causes its own separate show and hide.\n    delegate: view.itemSelector,\n    // Moving within the row should not hide the tip.\n    trackMouse: true,\n    // Render immediately so that tip.body can be referenced prior to the first show.\n    renderTo: Ext.getBody(),\n    listeners: {\n        // Change content dynamically depending on which element triggered the show.\n        beforeshow: function updateTipBody(tip) {\n            tip.update('Over company \"' + view.getRecord(tip.triggerElement).get('company') + '\"');\n        }\n    }\n});\n
\n\n

\"Ext.tip.ToolTip

\n\n

Alignment

\n\n

The following configuration properties allow control over how the ToolTip is aligned relative to\nthe target element and/or mouse pointer:

\n\n\n\n\n

Showing/Hiding

\n\n

The following configuration properties allow control over how and when the ToolTip is automatically\nshown and hidden:

\n\n\n\n","!type":"fn(config: +Ext.Element|string|Ext_tip_ToolTip_cfg)","prototype":{"!proto":"Ext.tip.Tip.prototype","anchor":{"!type":"string","!doc":"

If specified, indicates that the tip should be anchored to a\nparticular side of the target element or mouse pointer (\"top\", \"right\", \"bottom\",\nor \"left\"), with an arrow pointing back at the target or mouse pointer. If\nconstrainPosition is enabled, this will be used as a preferred value\nonly and may be flipped as needed.

\n"},"anchorOffset":{"!type":"number","!doc":"

A numeric pixel value used to offset the default position of the anchor arrow. When the anchor\nposition is on the top or bottom of the tooltip, anchorOffset will be used as a horizontal offset.\nLikewise, when the anchor position is on the left or right side, anchorOffset will be used as\na vertical offset.

\n"},"anchorToTarget":{"!type":"bool","!doc":"

True to anchor the tooltip to the target element, false to anchor it relative to the mouse coordinates.\nWhen anchorToTarget is true, use defaultAlign to control tooltip alignment to the\ntarget element. When anchorToTarget is false, use anchor instead to control alignment.

\n"},"autoHide":{"!type":"bool","!doc":"

True to automatically hide the tooltip after the\nmouse exits the target element or after the dismissDelay\nhas expired if set. If closable = true\na close tool button will be rendered into the tooltip header.

\n"},"delegate":{"!type":"string","!doc":"

A DomQuery selector which allows selection of individual elements within the\ntarget element to trigger showing and hiding the ToolTip as the mouse moves within the\ntarget.

\n\n

When specified, the child element of the target which caused a show event is placed into the\ntriggerElement property before the ToolTip is shown.

\n\n

This may be useful when a Component has regular, repeating elements in it, each of which need a\nToolTip which contains information specific to that element.

\n\n

See the delegate example in class documentation of Ext.tip.ToolTip.

\n"},"dismissDelay":{"!type":"number","!doc":"

Delay in milliseconds before the tooltip automatically hides. To disable automatic hiding, set\ndismissDelay = 0.

\n"},"hideDelay":{"!type":"number","!doc":"

Delay in milliseconds after the mouse exits the target element but before the tooltip actually hides.\nSet to 0 for the tooltip to hide immediately.

\n"},"mouseOffset":{"!type":"[number]","!doc":"

An XY offset from the mouse position where the tooltip should be shown.

\n"},"showDelay":{"!type":"number","!doc":"

Delay in milliseconds before the tooltip displays after the mouse enters the target element.

\n"},"target":{"!type":"+HTMLElement|+Ext.Element|string","!doc":"

The target element or string id to monitor for mouseover events to trigger\nshowing this ToolTip.

\n"},"trackMouse":{"!type":"bool","!doc":"

True to have the tooltip follow the mouse as it moves over the target element.

\n"},"_timerNames":{"!type":"?"},"quickShowInterval":{"!type":"number"},"targetCounter":{"!type":"number"},"triggerElement":{"!type":"+HTMLElement","!doc":"

When a ToolTip is configured with the delegate\noption to cause selected child elements of the target\nElement to each trigger a separate show event, this property is set to\nthe DOM element which triggered the show.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"clearTimer":{"!type":"fn(name: ?) -> !this"},"clearTimers":{"!type":"fn() -> !this"},"delayHide":{"!type":"fn() -> !this"},"delayShow":{"!type":"fn() -> !this"},"doEnable":{"!type":"fn() -> !this"},"getAnchorAlign":{"!type":"fn() -> !this"},"getAnchorPosition":{"!type":"fn() -> !this"},"getMouseOffset":{"!type":"fn() -> !this"},"getOffsets":{"!type":"fn() -> !this"},"getTargetXY":{"!type":"fn() -> !this"},"hide":{"!type":"fn() -> !this","!doc":"

Hides this tooltip if visible.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onDisable":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the disable operation.\nAfter calling the superclass's onDisable, the Component will be disabled.

\n"},"onDocMouseDown":{"!type":"fn(e: ?) -> !this"},"onHide":{"!type":"fn() -> !this","!doc":"

Possibly animates down to a target element.

\n\n

Allows addition of behavior to the hide operation. After\ncalling the superclass’s onHide, the Component will be hidden.

\n\n

Gets passed the same parameters as hide.

\n"},"onMouseMove":{"!type":"fn(e: ?) -> !this"},"onRender":{"!type":"fn(ct: ?, position: ?) -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"onShowVeto":{"!type":"fn() -> !this"},"onTargetOut":{"!type":"fn(e: ?) -> !this"},"onTargetOver":{"!type":"fn(e: ?) -> !this"},"setPagePosition":{"!type":"fn(x: ?, y: ?) -> +Ext.Component","!doc":"

Sets the page XY position of the component. To set the left and top instead, use setPosition.\nThis method fires the move event.

\n"},"setTarget":{"!type":"fn(t: string|+HTMLElement|+Ext.Element) -> !this","!doc":"

Binds this ToolTip to the specified element. The tooltip will be displayed when the mouse moves over the element.

\n"},"show":{"!type":"fn() -> !this","!doc":"

Shows this tooltip at the current event target XY position.

\n"},"showAt":{"!type":"fn(xy: ?) -> !this","!doc":"

Shows this tip at the specified XY position. Example usage:

\n\n
// Show the tip at x:50 and y:100\ntip.showAt([50,100]);\n
\n"},"showFromDelay":{"!type":"fn() -> !this"},"syncAnchor":{"!type":"fn() -> !this"}}}},"toolbar":{"Fill":{"!doc":"

A non-rendering placeholder item which instructs the Toolbar's Layout to begin using\nthe right-justified button container.

\n\n
Ext.create('Ext.panel.Panel', {\n     title: 'Toolbar Fill Example',\n     width: 300,\n     height: 200,\n     tbar : [\n         'Item 1',\n         { xtype: 'tbfill' },\n         'Item 2'\n     ],\n     renderTo: Ext.getBody()\n });\n
\n","!type":"fn(config: +Ext.Element|string|Ext_toolbar_Fill_cfg)","prototype":{"!proto":"Ext.Component.prototype","flex":{"!type":"number"},"isFill":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Fill, or subclass thereof.

\n"}}},"Item":{"!doc":"

The base class that other non-interacting Toolbar Item classes should extend in order to\nget some basic common toolbar item functionality.

\n","!type":"fn(config: +Ext.Element|string|Ext_toolbar_Item_cfg)","prototype":{"!proto":"Ext.Component.prototype","overflowText":{"!type":"string","!doc":"

Text to be used for the menu if the item is overflowed.

\n"},"disable":{"!type":"fn() -> !this","!doc":"

Disable the component.

\n"},"enable":{"!type":"fn() -> !this","!doc":"

Enable the component

\n"},"focus":{"!type":"fn() -> +Ext.Component","!doc":"

Try to focus this component.

\n"}}},"Paging":{"!doc":"

As the number of records increases, the time required for the browser to render them increases. Paging is used to\nreduce the amount of data exchanged with the client. Note: if there are more records/rows than can be viewed in the\navailable screen area, vertical scrollbars will be added.

\n\n

Paging is typically handled on the server side (see exception below). The client sends parameters to the server side,\nwhich the server needs to interpret and then respond with the appropriate data.

\n\n

Ext.toolbar.Paging is a specialized toolbar that is bound to a Ext.data.Store and provides automatic\npaging control. This Component loads blocks of data into the store by passing\nparameters used for paging criteria.

\n\n

\"Ext.toolbar.Paging

\n\n

Paging Toolbar is typically used as one of the Grid's toolbars:

\n\n
var itemsPerPage = 2;   // set the number of items you want per page\n\nvar store = Ext.create('Ext.data.Store', {\n    id:'simpsonsStore',\n    autoLoad: false,\n    fields:['name', 'email', 'phone'],\n    pageSize: itemsPerPage, // items per page\n    proxy: {\n        type: 'ajax',\n        url: 'pagingstore.js',  // url that will load data with respect to start and limit params\n        reader: {\n            type: 'json',\n            root: 'items',\n            totalProperty: 'total'\n        }\n    }\n});\n\n// specify segment of data you want to load using params\nstore.load({\n    params:{\n        start:0,\n        limit: itemsPerPage\n    }\n});\n\nExt.create('Ext.grid.Panel', {\n    title: 'Simpsons',\n    store: store,\n    columns: [\n        { header: 'Name',  dataIndex: 'name' },\n        { header: 'Email', dataIndex: 'email', flex: 1 },\n        { header: 'Phone', dataIndex: 'phone' }\n    ],\n    width: 400,\n    height: 125,\n    dockedItems: [{\n        xtype: 'pagingtoolbar',\n        store: store,   // same store GridPanel is using\n        dock: 'bottom',\n        displayInfo: true\n    }],\n    renderTo: Ext.getBody()\n});\n
\n\n

To use paging, you need to set a pageSize configuration on the Store, and pass the paging requirements to\nthe server when the store is first loaded.

\n\n
store.load({\n    params: {\n        // specify params for the first page load if using paging\n        start: 0,\n        limit: myPageSize,\n        // other params\n        foo:   'bar'\n    }\n});\n
\n\n

If using store's autoLoad configuration:

\n\n
var myStore = Ext.create('Ext.data.Store', {\n    autoLoad: {start: 0, limit: 25},\n    ...\n});\n
\n\n

The packet sent back from the server would have this form:

\n\n
{\n    \"success\": true,\n    \"results\": 2000,\n    \"rows\": [ // ***Note:** this must be an Array\n        { \"id\":  1, \"name\": \"Bill\", \"occupation\": \"Gardener\" },\n        { \"id\":  2, \"name\":  \"Ben\", \"occupation\": \"Horticulturalist\" },\n        ...\n        { \"id\": 25, \"name\":  \"Sue\", \"occupation\": \"Botanist\" }\n    ]\n}\n
\n\n

Paging with Local Data

\n\n

Paging can also be accomplished with local data using extensions:

\n\n\n\n","!type":"fn(config: Ext_toolbar_Paging_cfg|[?])","prototype":{"!proto":"Ext.toolbar.Toolbar.prototype","afterPageText":{"!type":"string","!doc":"

Customizable piece of the default paging text. Note that this string is formatted using\n{0} as a token that is replaced by the number of total pages. This token should be preserved when overriding this\nstring if showing the total page count is desired.

\n"},"beforePageText":{"!type":"string","!doc":"

The text displayed before the input item.

\n"},"displayInfo":{"!type":"bool","!doc":"

true to display the displayMsg

\n"},"displayMsg":{"!type":"string","!doc":"

The paging status message to display. Note that this string is\nformatted using the braced numbers {0}-{2} as tokens that are replaced by the values for start, end and total\nrespectively. These tokens should be preserved when overriding this string if showing those values is desired.

\n"},"emptyMsg":{"!type":"string","!doc":"

The message to display when no records are found.

\n"},"firstText":{"!type":"string","!doc":"

The quicktip text displayed for the first page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"inputItemWidth":{"!type":"number","!doc":"

The width in pixels of the input field used to display and change the current page number.

\n"},"lastText":{"!type":"string","!doc":"

The quicktip text displayed for the last page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"nextText":{"!type":"string","!doc":"

The quicktip text displayed for the next page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"prependButtons":{"!type":"bool","!doc":"

true to insert any configured items before the paging buttons.

\n"},"prevText":{"!type":"string","!doc":"

The quicktip text displayed for the previous page button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"refreshText":{"!type":"string","!doc":"

The quicktip text displayed for the Refresh button.\nNote: quick tips must be initialized for the quicktip to show.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Ext.data.Store the paging toolbar should use as its data source.

\n"},"beforeLoad":{"!type":"fn() -> !this"},"bind":{"!type":"fn(store: +Ext.data.Store) -> !this","!doc":"

Binds the paging toolbar to the specified Ext.data.Store (deprecated)

\n"},"doRefresh":{"!type":"fn() -> !this","!doc":"

Refresh the current page, has the same effect as clicking the 'refresh' button.

\n"},"getInputItem":{"!type":"fn() -> !this"},"getPageData":{"!type":"fn() -> !this"},"getPagingItems":{"!type":"fn() -> !this","!doc":"

Gets the standard paging items in the toolbar

\n"},"getStoreListeners":{"!type":"fn() -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"moveFirst":{"!type":"fn() -> !this","!doc":"

Move to the first page, has the same effect as clicking the 'first' button.

\n"},"moveLast":{"!type":"fn() -> !this","!doc":"

Move to the last page, has the same effect as clicking the 'last' button.

\n"},"moveNext":{"!type":"fn() -> !this","!doc":"

Move to the next page, has the same effect as clicking the 'next' button.

\n"},"movePrevious":{"!type":"fn() -> !this","!doc":"

Move to the previous page, has the same effect as clicking the 'previous' button.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onLoad":{"!type":"fn() -> !this"},"onLoadError":{"!type":"fn() -> !this"},"onPagingBlur":{"!type":"fn(e: ?) -> !this"},"onPagingFocus":{"!type":"fn() -> !this"},"onPagingKeyDown":{"!type":"fn(field: ?, e: ?) -> !this"},"readPageFromInput":{"!type":"fn(pageData: ?) -> !this"},"setChildDisabled":{"!type":"fn(selector: ?, disabled: ?) -> !this"},"unbind":{"!type":"fn(store: +Ext.data.Store) -> !this","!doc":"

Unbinds the paging toolbar from the specified Ext.data.Store (deprecated)

\n"},"updateInfo":{"!type":"fn() -> !this"},"beforechange":{"!type":"fn(this: +Ext.toolbar.Paging, page: number, eOpts: ?)","!doc":"

Fires just before the active page is changed. Return false to prevent the active page from being changed.

\n"},"change":{"!type":"fn(this: +Ext.toolbar.Paging, pageData: ?, eOpts: ?)","!doc":"

Fires after the active page has been changed.

\n"}}},"Separator":{"!doc":"

A simple class that adds a vertical separator bar between toolbar items (css class: 'x-toolbar-separator').

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Toolbar Separator Example',\n    width: 300,\n    height: 200,\n    tbar : [\n        'Item 1',\n        { xtype: 'tbseparator' },\n        'Item 2'\n    ],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_toolbar_Separator_cfg)","prototype":{"!proto":"Ext.toolbar.Item.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"focusable":{"!type":"bool"}}},"Spacer":{"!doc":"

A simple element that adds extra horizontal space between items in a toolbar.\nBy default a 2px wide space is added via CSS specification:

\n\n
.x-toolbar .x-toolbar-spacer {\n    width: 2px;\n}\n
\n\n

Example:

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Toolbar Spacer Example',\n    width: 300,\n    height: 200,\n    tbar : [\n        'Item 1',\n        { xtype: 'tbspacer' }, // or ' '\n        'Item 2',\n        // space width is also configurable via javascript\n        { xtype: 'tbspacer', width: 50 }, // add a 50px space\n        'Item 3'\n    ],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_toolbar_Spacer_cfg)","prototype":{"!proto":"Ext.Component.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"focusable":{"!type":"bool"}}},"TextItem":{"!doc":"

A simple class that renders text directly into a toolbar.

\n\n
Ext.create('Ext.panel.Panel', {\n    title: 'Panel with TextItem',\n    width: 300,\n    height: 200,\n    tbar: [\n        { xtype: 'tbtext', text: 'Sample Text Item' }\n    ],\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(text: ?)","prototype":{"!proto":"Ext.toolbar.Item.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"text":{"!type":"string","!doc":"

The text to be used as innerHTML (html tags are accepted).

\n"},"beforeRender":{"!type":"fn() -> !this"},"setText":{"!type":"fn(text: string) -> !this","!doc":"

Updates this item's text, setting the text to be used as innerHTML.

\n"}}},"Toolbar":{"!doc":"

Basic Toolbar class. Although the defaultType for\nToolbar is button, Toolbar elements (child items for the Toolbar container)\nmay be virtually any type of Component. Toolbar elements can be created explicitly via their\nconstructors, or implicitly via their xtypes, and can be added dynamically.

\n\n

Some items have shortcut strings for creation:

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n
Shortcut xtype Class Description
'->' tbfill Ext.toolbar.Fill begin using the right-justified button container
'-' tbseparator Ext.toolbar.Separator add a vertical separator bar between toolbar items
' ' tbspacer Ext.toolbar.Spacer add horizontal space between elements
\n\n\n
Ext.create('Ext.toolbar.Toolbar', {\n    renderTo: document.body,\n    width   : 500,\n    items: [\n        {\n            // xtype: 'button', // default for Toolbars\n            text: 'Button'\n        },\n        {\n            xtype: 'splitbutton',\n            text : 'Split Button'\n        },\n        // begin using the right-justified button container\n        '->', // same as { xtype: 'tbfill' }\n        {\n            xtype    : 'textfield',\n            name     : 'field1',\n            emptyText: 'enter search term'\n        },\n        // add a vertical separator bar between toolbar items\n        '-', // same as {xtype: 'tbseparator'} to create Ext.toolbar.Separator\n        'text 1', // same as {xtype: 'tbtext', text: 'text1'} to create Ext.toolbar.TextItem\n        { xtype: 'tbspacer' },// same as ' ' to create Ext.toolbar.Spacer\n        'text 2',\n        { xtype: 'tbspacer', width: 50 }, // add a 50px space\n        'text 3'\n    ]\n});\n
\n\n

Toolbars have enable and disable methods which when called, will\nenable/disable all items within your toolbar.

\n\n
Ext.create('Ext.toolbar.Toolbar', {\n    renderTo: document.body,\n    width   : 400,\n    items: [\n        {\n            text: 'Button'\n        },\n        {\n            xtype: 'splitbutton',\n            text : 'Split Button'\n        },\n        '->',\n        {\n            xtype    : 'textfield',\n            name     : 'field1',\n            emptyText: 'enter search term'\n        }\n    ]\n});\n
\n\n

Example

\n\n
var enableBtn = Ext.create('Ext.button.Button', {\n    text    : 'Enable All Items',\n    disabled: true,\n    scope   : this,\n    handler : function() {\n        //disable the enable button and enable the disable button\n        enableBtn.disable();\n        disableBtn.enable();\n\n        //enable the toolbar\n        toolbar.enable();\n    }\n});\n\nvar disableBtn = Ext.create('Ext.button.Button', {\n    text    : 'Disable All Items',\n    scope   : this,\n    handler : function() {\n        //enable the enable button and disable button\n        disableBtn.disable();\n        enableBtn.enable();\n\n        //disable the toolbar\n        toolbar.disable();\n    }\n});\n\nvar toolbar = Ext.create('Ext.toolbar.Toolbar', {\n    renderTo: document.body,\n    width   : 400,\n    margin  : '5 0 0 0',\n    items   : [enableBtn, disableBtn]\n});\n
\n\n

Adding items to and removing items from a toolbar is as simple as calling the add\nand remove methods. There is also a removeAll method\nwhich remove all items within the toolbar.

\n\n
var toolbar = Ext.create('Ext.toolbar.Toolbar', {\n    renderTo: document.body,\n    width   : 700,\n    items: [\n        {\n            text: 'Example Button'\n        }\n    ]\n});\n\nvar addedItems = [];\n\nExt.create('Ext.toolbar.Toolbar', {\n    renderTo: document.body,\n    width   : 700,\n    margin  : '5 0 0 0',\n    items   : [\n        {\n            text   : 'Add a button',\n            scope  : this,\n            handler: function() {\n                var text = prompt('Please enter the text for your button:');\n                addedItems.push(toolbar.add({\n                    text: text\n                }));\n            }\n        },\n        {\n            text   : 'Add a text item',\n            scope  : this,\n            handler: function() {\n                var text = prompt('Please enter the text for your item:');\n                addedItems.push(toolbar.add(text));\n            }\n        },\n        {\n            text   : 'Add a toolbar separator',\n            scope  : this,\n            handler: function() {\n                addedItems.push(toolbar.add('-'));\n            }\n        },\n        {\n            text   : 'Add a toolbar spacer',\n            scope  : this,\n            handler: function() {\n                addedItems.push(toolbar.add('->'));\n            }\n        },\n        '->',\n        {\n            text   : 'Remove last inserted item',\n            scope  : this,\n            handler: function() {\n                if (addedItems.length) {\n                    toolbar.remove(addedItems.pop());\n                } else if (toolbar.items.length) {\n                    toolbar.remove(toolbar.items.last());\n                } else {\n                    alert('No items in the toolbar');\n                }\n            }\n        },\n        {\n            text   : 'Remove all items',\n            scope  : this,\n            handler: function() {\n                toolbar.removeAll();\n            }\n        }\n    ]\n});\n
\n","!type":"fn(config: Ext_toolbar_Toolbar_cfg|[?])","prototype":{"!proto":"Ext.container.Container.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"defaultButtonUI":{"!type":"string","!doc":"

A default ui to use for Button items

\n"},"defaultType":{"!type":"string","!doc":"

The default xtype of child Components to create in this Container when\na child item is specified as a raw configuration object, rather than as an instantiated Component.

\n"},"enableOverflow":{"!type":"bool","!doc":"

Configure true to make the toolbar provide a button which activates a dropdown Menu to show\nitems which overflow the Toolbar's width.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

This class assigns a default layout (layout: 'hbox').\nDevelopers may override this configuration option if another layout\nis required (the constructor must be passed a configuration object in this\ncase instead of an array).\nSee Ext.container.Container.layout for additional information.

\n"},"menuTriggerCls":{"!type":"string","!doc":"

Configure the icon class of the overflow button.

\n"},"vertical":{"!type":"bool","!doc":"

Set to true to make the toolbar vertical. The layout will become a vbox.

\n"},"ariaRole":{"!type":"string"},"isToolbar":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Toolbar, or subclass thereof.

\n"},"itemCls":{"!type":"string"},"trackMenus":{"!type":"bool"},"add":{"!type":"fn(args: +Ext.Component|?|string|+HTMLElement) -> [+Ext.Component]|+Ext.Component","!doc":"

Adds element(s) to the toolbar -- this function takes a variable number of\narguments of mixed type and adds them to the toolbar.

\n\n

Note: See the notes within Ext.container.Container.add.

\n"},"applyDefaults":{"!type":"fn(c: ?) -> !this"},"getChildItemsToDisable":{"!type":"fn() -> [+Ext.Component]","!doc":"

Gets a list of child components to enable/disable when the container is\nenabled/disabled

\n"},"getRefItems":{"!type":"fn(deep: ?) -> !this","!doc":"

Used by ComponentQuery, child and down to retrieve all of the items\nwhich can potentially be considered a child of this Container.

\n\n

This may be overriden by Components which have ownership of Components\nthat are not contained in the items collection.

\n\n

NOTE: IMPORTANT note for maintainers:\nItems are returned in tree traversal order. Each item is appended to the result array\nfollowed by the results of that child's getRefItems call.\nFloating child items are appended after internal child items.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"insert":{"!type":"fn(index: number, component: +Ext.Component|?|string|+HTMLElement) -> +Ext.Component","!doc":"

Inserts a Component into this Container at a specified index.

\n"},"lookupComponent":{"!type":"fn(c: ?) -> !this"},"onAdd":{"!type":"fn(component: ?) -> !this","!doc":"

This method is invoked after a new Component has been added. It\nis passed the Component which has been added. This method may\nbe used to update any internal structure which may depend upon\nthe state of the child items.

\n"},"onBeforeAdd":{"!type":"fn(component: ?) -> !this","!doc":"

This method is invoked before adding a new child Component. It\nis passed the new Component, and may be used to modify the\nComponent, or prepare the Container in some way. Returning\nfalse aborts the add operation.

\n"},"onButtonMenuHide":{"!type":"fn(btn: ?) -> !this"},"onButtonMenuShow":{"!type":"fn(btn: ?) -> !this"},"onButtonOver":{"!type":"fn(btn: ?) -> !this"},"onRemove":{"!type":"fn(c: ?) -> !this","!doc":"

This method is invoked after a new Component has been\nremoved. It is passed the Component which has been\nremoved. This method may be used to update any internal\nstructure which may depend upon the state of the child items.

\n"},"trackMenu":{"!type":"fn(item: ?, remove: ?) -> !this"},"overflowchange":{"!type":"fn(lastHiddenCount: number, hiddenCount: number, The: [?], eOpts: ?)","!doc":"

Fires after the overflow state has changed.

\n"}},"shortcuts":{"!type":"?"},"shortcutsHV":{"!type":"?"}}},"tree":{"Column":{"!doc":"

Provides indentation and folder structure markup for a Tree taking into account\ndepth and position within the tree hierarchy.

\n","!type":"fn(config: +Ext.Element|string|Ext_tree_Column_cfg)","prototype":{"!proto":"Ext.grid.column.Column.prototype","hideable":{"!type":"bool","!doc":"

False to prevent the user from hiding this column.

\n"},"lockable":{"!type":"bool","!doc":"

If the grid is configured with enableLocking, or has columns which are\nconfigured with a locked value, this option may be used to disable user-driven locking or unlocking\nof this column. This column will remain in the side into which its own locked configuration placed it.

\n"},"tdCls":{"!type":"string","!doc":"

A CSS class names to apply to the table cells for this column.

\n"},"autoLock":{"!type":"bool"},"cellTpl":{"!type":"[?]"},"checkboxCls":{"!type":"string"},"draggable":{"!type":"bool","!doc":"

Indicates whether or not the component can be dragged.

\n"},"elbowCls":{"!type":"string"},"expanderCls":{"!type":"string"},"iconCls":{"!type":"string"},"innerCls":{"!type":"string"},"isTreeColumn":{"!type":"bool"},"textCls":{"!type":"string"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"treeRenderer":{"!type":"fn(value: ?, metaData: ?, record: ?, rowIdx: ?, colIdx: ?, store: ?, view: ?) -> !this"}}},"Panel":{"!doc":"

The TreePanel provides tree-structured UI representation of tree-structured data.\nA TreePanel must be bound to a Ext.data.TreeStore. TreePanel's support\nmultiple columns through the columns configuration.

\n\n

Simple TreePanel using inline data:

\n\n
var store = Ext.create('Ext.data.TreeStore', {\n    root: {\n        expanded: true,\n        children: [\n            { text: \"detention\", leaf: true },\n            { text: \"homework\", expanded: true, children: [\n                { text: \"book report\", leaf: true },\n                { text: \"algebra\", leaf: true}\n            ] },\n            { text: \"buy lottery tickets\", leaf: true }\n        ]\n    }\n});\n\nExt.create('Ext.tree.Panel', {\n    title: 'Simple Tree',\n    width: 200,\n    height: 150,\n    store: store,\n    rootVisible: false,\n    renderTo: Ext.getBody()\n});\n
\n\n

For the tree node config options (like text, leaf, expanded), see the documentation of\nNodeInterface config options.

\n","!type":"fn(config: Ext_tree_Panel_cfg)","prototype":{"!proto":"Ext.panel.Table.prototype","animate":{"!type":"bool","!doc":"

True to enable animated expand/collapse. Defaults to the value of Ext.enableFx.

\n"},"deferRowRender":{"!type":"bool","!doc":"

Defaults to true to enable deferred row rendering.

\n\n

This allows the View to execute a refresh quickly, with the expensive update of the row structure deferred so\nthat layouts with GridPanels appear, and lay out more quickly.

\n"},"displayField":{"!type":"string","!doc":"

The field inside the model that will be used as the node's text.

\n"},"folderSort":{"!type":"bool","!doc":"

True to automatically prepend a leaf sorter to the store.

\n"},"hideHeaders":{"!type":"bool","!doc":"

True to hide the headers.

\n"},"lines":{"!type":"bool","!doc":"

False to disable tree lines.

\n"},"root":{"!type":"+Ext.data.Model|+Ext.data.NodeInterface|?","!doc":"

Allows you to not specify a store on this TreePanel. This is useful for creating a simple tree with preloaded\ndata without having to specify a TreeStore and Model. A store and model will be created and root will be passed\nto that store. For example:

\n\n
Ext.create('Ext.tree.Panel', {\n    title: 'Simple Tree',\n    root: {\n        text: \"Root node\",\n        expanded: true,\n        children: [\n            { text: \"Child 1\", leaf: true },\n            { text: \"Child 2\", leaf: true }\n        ]\n    },\n    renderTo: Ext.getBody()\n});\n
\n"},"rootVisible":{"!type":"bool","!doc":"

False to hide the root node.

\n"},"rowLines":{"!type":"bool","!doc":"

False so that rows are not separated by lines.

\n"},"selType":{"!type":"string","!doc":"

An xtype of selection model to use. Defaults to 'rowmodel'. This is used to create selection model if just\na config object or nothing at all given in selModel config.

\n"},"singleExpand":{"!type":"bool","!doc":"

True if only 1 node per branch may be expanded.

\n"},"store":{"!type":"+Ext.data.TreeStore","!doc":"

The Store the tree should use as its data source.

\n"},"useArrows":{"!type":"bool","!doc":"

True to use Vista-style arrows in the tree.

\n"},"viewType":{"!type":"string","!doc":"

An xtype of view to use. This is automatically set to 'gridview' by Grid\nand to 'treeview' by Tree.

\n"},"autoWidthCls":{"!type":"string"},"ddConfig":{"!type":"?"},"isTree":{"!type":"bool"},"linesCls":{"!type":"string"},"lockedCfgCopy":{"!type":"[?]"},"noLinesCls":{"!type":"string"},"normalCfgCopy":{"!type":"[?]","!doc":"

Required for the Lockable Mixin. These are the configurations which will be copied to the\nnormal and locked sub tablepanels

\n"},"treeCls":{"!type":"string"},"bindStore":{"!type":"fn(store: ?, initial: ?) -> !this","!doc":"

Hook into the TreeStore.\nDo not callParent in TreePanel's bindStore\nThe TreeStore is only relevant to the tree - the View has its own NodeStore

\n"},"collapseAll":{"!type":"fn(callback?: fn(), scope?: ?) -> !this","!doc":"

Collapse all nodes

\n"},"collapseNode":{"!type":"fn(record: +Ext.data.Model, deep?: bool, callback?: fn(), scope?: ?) -> !this","!doc":"

Collapses a record that is loaded in the tree.

\n"},"expandAll":{"!type":"fn(callback?: fn(), scope?: ?) -> !this","!doc":"

Expand all nodes

\n"},"expandNode":{"!type":"fn(record: +Ext.data.Model, deep?: bool, callback?: fn(), scope?: ?) -> !this","!doc":"

Expands a record that is loaded in the tree.

\n"},"expandPath":{"!type":"fn(path: string, field?: string, separator?: string, callback?: fn(), scope?: ?) -> !this","!doc":"

Expand the tree to the path of a particular node.

\n"},"getChecked":{"!type":"fn() -> [+Ext.data.NodeInterface]","!doc":"

Retrieve an array of checked records.

\n"},"getRootNode":{"!type":"fn() -> +Ext.data.NodeInterface","!doc":"

Returns the root node for this tree.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"isItemChecked":{"!type":"fn(rec: ?) -> !this"},"onClear":{"!type":"fn() -> !this"},"onRootChange":{"!type":"fn(root: ?) -> !this"},"selectPath":{"!type":"fn(path: string, field?: string, separator?: string, callback?: fn(), scope?: ?) -> !this","!doc":"

Expand the tree to the path of a particular node, then select it.

\n"},"setRootNode":{"!type":"fn(root: +Ext.data.Model|+Ext.data.NodeInterface|?) -> +Ext.data.NodeInterface","!doc":"

Sets root node of this tree.

\n"},"unbindStore":{"!type":"fn() -> !this","!doc":"

TODO: Decide whether it is possible to reconfigure a TreePanel.

\n"},"afteritemcollapse":{"!type":"fn(node: +Ext.data.NodeInterface, index: number, item: +HTMLElement, eOpts: ?)","!doc":"

Fires after an item has been visually collapsed and is no longer visible in the tree.

\n"},"afteritemexpand":{"!type":"fn(node: +Ext.data.NodeInterface, index: number, item: +HTMLElement, eOpts: ?)","!doc":"

Fires after an item has been visually expanded and is visible in the tree.

\n"},"beforeitemappend":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is appended, return false to cancel the append.

\n"},"beforeitemcollapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is collapsed.

\n"},"beforeitemexpand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before this node is expanded.

\n"},"beforeiteminsert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires before a new child is inserted, return false to cancel the insert.

\n"},"beforeitemmove":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires before this node is moved to a new location in the tree. Return false to cancel the move.

\n"},"beforeitemremove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires before a child is removed, return false to cancel the remove.

\n"},"beforeload":{"!type":"fn(store: +Ext.data.Store, operation: +Ext.data.Operation, eOpts: ?)","!doc":"

Fires before a request is made for a new data object. If the beforeload handler returns false the load\naction will be canceled.

\n"},"checkchange":{"!type":"fn(node: +Ext.data.NodeInterface, checked: bool, eOpts: ?)","!doc":"

Fires when a node with a checkbox's checked property changes

\n"},"itemappend":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when a new child node is appended

\n"},"itemcollapse":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is collapsed.

\n"},"itemexpand":{"!type":"fn(this: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when this node is expanded.

\n"},"iteminsert":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, refNode: +Ext.data.NodeInterface, eOpts: ?)","!doc":"

Fires when a new child node is inserted.

\n"},"itemmove":{"!type":"fn(this: +Ext.data.NodeInterface, oldParent: +Ext.data.NodeInterface, newParent: +Ext.data.NodeInterface, index: number, eOpts: ?)","!doc":"

Fires when this node is moved to a new location in the tree

\n"},"itemremove":{"!type":"fn(this: +Ext.data.NodeInterface, node: +Ext.data.NodeInterface, isMove: bool, eOpts: ?)","!doc":"

Fires when a child node is removed

\n"},"load":{"!type":"fn(this: +Ext.data.TreeStore, node: +Ext.data.NodeInterface, records: [+Ext.data.Model], successful: bool, eOpts: ?)","!doc":"

Fires whenever the store reads data from a remote data source.

\n"}}},"View":{"!doc":"

Used as a view by TreePanel.

\n\n

From override Ext.grid.plugin.BufferedRendererTreeView: A set of overrides required by the presence of the BufferedRenderer plugin.

\n\n

These overrides of Ext.tree.View take into account the affect of a buffered renderer and\ndivert execution from the default course where necessary.

\n","!type":"fn(config: Ext_tree_View_cfg)","prototype":{"!proto":"Ext.view.Table.prototype","animate":{"!type":"bool","!doc":"

True to enable animated expand/collapse (defaults to the value of Ext.enableFx)

\n"},"blockRefresh":{"!type":"bool","!doc":"

Set this to true to ignore refresh events on the bound store. This is useful if\nyou wish to provide custom transition animations via a plugin

\n"},"deferInitialRefresh":{"!type":"bool","!doc":"

Must be false for Tree Views because the root node must be rendered in order to be updated with its child nodes.

\n"},"loadMask":{"!type":"bool","!doc":"

False to disable a load mask from displaying while the view is loading. This can also be a\nExt.LoadMask configuration object.

\n"},"loadingCls":{"!type":"string","!doc":"

The CSS class to apply to the loading message element. Defaults to Ext.LoadMask.prototype.msgCls \"x-mask-loading\".

\n"},"rootVisible":{"!type":"bool","!doc":"

False to hide the root node.

\n"},"stripeRows":{"!type":"bool","!doc":"

True to stripe the rows.

\n\n

This causes the CSS class x-grid-row-alt to be added to alternate rows of\nthe grid. A default CSS rule is provided which sets a background color, but you can override this\nwith a rule which either overrides the background-color style using the !important\nmodifier, or which uses a CSS selector of higher specificity.

\n"},"checkboxSelector":{"!type":"string"},"collapseDuration":{"!type":"number"},"expandedCls":{"!type":"string"},"expanderIconOverCls":{"!type":"string"},"expanderSelector":{"!type":"string"},"isTreeView":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated TreeView, or subclass thereof.

\n"},"leafCls":{"!type":"string"},"nodeAnimWrapCls":{"!type":"string","!doc":"

Class to add to the node wrap element used to hold nodes when a parent is being\ncollapsed or expanded. During the animation, UI interaction is forbidden by testing\nfor an ancestor node with this class.

\n"},"toggleOnDblClick":{"!type":"bool"},"treeRowTpl":{"!type":"?","!doc":"

treeRowTpl which is inserted into thwe rowTpl chain before the base rowTpl. Sets tree-specific classes and attributes

\n"},"uiFields":{"!type":"[?]","!doc":"

fields that will trigger a change in the ui that aren't likely to be bound to a column

\n"},"afterComponentLayout":{"!type":"fn() -> !this","!doc":"

Called by the layout system after the Component has been laid out.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"collapse":{"!type":"fn(record: +Ext.data.Model, deep?: bool, callback?: fn(), scope?: ?) -> !this","!doc":"

Collapses a record that is loaded in the view.

\n\n

If an animated collapse or expand of the record is in progress, this call will be ignored.

\n"},"createAnimWrap":{"!type":"fn(record: ?, index: ?) -> !this"},"doAdd":{"!type":"fn(records: ?, index: ?) -> !this"},"doRemove":{"!type":"fn(record: ?, index: ?) -> !this","!doc":"

private

\n"},"ensureSingleExpand":{"!type":"fn(node: ?) -> !this"},"expand":{"!type":"fn(record: +Ext.data.Model, deep?: bool, callback?: fn(), scope?: ?) -> !this","!doc":"

Expands a record that is loaded in the view.

\n\n

If an animated collapse or expand of the record is in progress, this call will be ignored.

\n"},"getAnimWrap":{"!type":"fn(parent: ?, bubble?: ?) -> +Ext.Element","!doc":"

Returns the animation wrapper element for the specified parent node, used to wrap the child nodes as\nthey slide up or down during expand/collapse.

\n"},"getChecked":{"!type":"fn() -> !this"},"getMaskStore":{"!type":"fn() -> !this"},"getStoreListeners":{"!type":"fn() -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"getTreeStore":{"!type":"fn() -> !this","!doc":"

Gets the base TreeStore from the bound TreePanel.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"isAnimating":{"!type":"fn(node: +Ext.data.Model) -> bool","!doc":"

Checks if a node is currently undergoing animation

\n"},"isItemChecked":{"!type":"fn(rec: ?) -> !this"},"onBeforeCollapse":{"!type":"fn(parent: ?, records: ?, index: ?, callback: ?, scope: ?) -> !this","!doc":"

Triggered by the NodeStore's onNodeCollapse event.

\n"},"onBeforeExpand":{"!type":"fn(parent: ?, records: ?, index: ?) -> !this"},"onBeforeFill":{"!type":"fn(treeStore: ?, fillRoot: ?) -> !this"},"onBeforeItemMouseDown":{"!type":"fn(record: ?, item: ?, index: ?, e: ?) -> !this"},"onBeforeSort":{"!type":"fn() -> !this"},"onBindStore":{"!type":"fn() -> !this","!doc":"

Template method, it is called when a new store is bound\nto the current instance.

\n"},"onCheckChange":{"!type":"fn(record: ?) -> !this"},"onCheckboxChange":{"!type":"fn(e: ?, t: ?) -> !this"},"onClear":{"!type":"fn() -> !this"},"onCollapse":{"!type":"fn(parent: ?) -> !this"},"onExpand":{"!type":"fn(parent: ?) -> !this"},"onExpanderMouseOut":{"!type":"fn(e: ?, t: ?) -> !this"},"onExpanderMouseOver":{"!type":"fn(e: ?, t: ?) -> !this"},"onFillComplete":{"!type":"fn(treeStore: ?, fillRoot: ?, newNodes: ?) -> !this"},"onItemClick":{"!type":"fn(record: ?, item: ?, index: ?, e: ?) -> !this"},"onItemDblClick":{"!type":"fn(record: ?, item: ?, index: ?) -> !this"},"onRemove":{"!type":"fn(ds: ?, records: ?, indexes: ?) -> !this","!doc":"

Overridden in Ext.grid.plugin.BufferedRendererTreeView.

\n"},"onSort":{"!type":"fn(o: ?) -> !this"},"onStoreDataChanged":{"!type":"fn(store: +Ext.data.NodeStore, operation: +Ext.data.Operation) -> !this","!doc":"

Re-fires the NodeStore's \"datachanged\" event as a TreeStore event

\n"},"onStoreWrite":{"!type":"fn(store: +Ext.data.NodeStore, operation: +Ext.data.Operation) -> !this","!doc":"

Re-fires the NodeStore's \"write\" event as a TreeStore event

\n"},"onUnbindStore":{"!type":"fn() -> !this","!doc":"

Template method, it is called when an existing store is unbound\nfrom the current instance.

\n"},"processUIEvent":{"!type":"fn(e: ?) -> !this"},"refreshPartner":{"!type":"fn() -> !this"},"setRootNode":{"!type":"fn(node: ?) -> !this"},"shouldUpdateCell":{"!type":"fn(record: ?, column: ?, changedFieldNames: ?) -> !this"},"toggle":{"!type":"fn(record: +Ext.data.Model, deep?: bool, callback?: fn(), scope?: ?) -> !this","!doc":"

Toggles a record between expanded and collapsed.

\n\n

If an animated collapse or expand of the record is in progress, this call will be ignored.

\n"},"afteritemcollapse":{"!type":"fn(node: +Ext.data.NodeInterface, index: number, item: +HTMLElement, eOpts: ?)","!doc":"

Fires after an item has been visually collapsed and is no longer visible in the tree.

\n"},"afteritemexpand":{"!type":"fn(node: +Ext.data.NodeInterface, index: number, item: +HTMLElement, eOpts: ?)","!doc":"

Fires after an item has been visually expanded and is visible in the tree.

\n"},"nodedragover":{"!type":"fn(targetNode: +Ext.data.NodeInterface, position: string, dragData: ?, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a tree node is being targeted for a drag drop, return false to signal drop not allowed.

\n"}}},"ViewDragZone":{"!type":"fn(config: Ext_tree_ViewDragZone_cfg)","prototype":{"!proto":"Ext.view.DragZone.prototype","afterRepair":{"!type":"fn() -> !this"},"getDragText":{"!type":"fn() -> !this"},"isPreventDrag":{"!type":"fn(e: ?, record: ?) -> !this","!doc":"

private template method

\n"}}},"ViewDropZone":{"!type":"fn(config: Ext_tree_ViewDropZone_cfg)","prototype":{"!proto":"Ext.view.DropZone.prototype","allowContainerDrop":{"!type":"bool","!doc":"

True if drops on the tree container (outside of a specific tree node) are allowed.

\n"},"allowParentInserts":{"!type":"bool","!doc":"

Allow inserting a dragged node between an expanded parent node and its first child that will become a\nsibling of the parent when dropped.

\n"},"appendOnly":{"!type":"bool","!doc":"

True if the tree should only allow append drops (use for trees which are sorted).

\n"},"expandDelay":{"!type":"number","!doc":"

The delay in milliseconds to wait before expanding a target tree node while dragging a droppable node\nover the target.

\n"},"indicatorCls":{"!type":"string"},"cancelExpand":{"!type":"fn() -> !this"},"expandNode":{"!type":"fn(node: ?) -> !this"},"getPosition":{"!type":"fn(e: ?, node: ?) -> !this"},"handleNodeDrop":{"!type":"fn(data: ?, targetNode: ?, position: ?) -> !this"},"isValidDropPoint":{"!type":"fn(node: ?, position: ?, dragZone: ?, e: ?, data: ?) -> !this"},"notifyOut":{"!type":"fn() -> !this","!doc":"

Moved out of the DropZone without dropping.\nRemove drop position indicator

\n"},"onContainerOver":{"!type":"fn(dd: ?, e: ?, data: ?) -> string","!doc":"

The mouse is past the end of all nodes (or there are no nodes)

\n"},"onNodeOut":{"!type":"fn(n: ?, dd: ?, e: ?, data: ?) -> !this","!doc":"

The mouse is no longer over a tree node, so dropping is not valid

\n"},"onNodeOver":{"!type":"fn(node: ?, dragZone: ?, e: ?, data: ?) -> string","!doc":"

The mouse is over a View node

\n"},"queueExpand":{"!type":"fn(node: ?) -> !this"}}},"plugin":{"TreeViewDragDrop":{"!doc":"

This plugin provides drag and/or drop functionality for a TreeView.

\n\n

It creates a specialized instance of DragZone which knows how to drag out of a\nTreeView and loads the data object which is passed to a cooperating\nDragZone's methods with the following properties:

\n\n\n\n\n

It also creates a specialized instance of Ext.dd.DropZone which cooperates with other DropZones which are\nmembers of the same ddGroup which processes such data objects.

\n\n

Adding this plugin to a view means that two new events may be fired from the client TreeView, beforedrop and\ndrop.

\n\n

Note that the plugin must be added to the tree view, not to the tree panel. For example using viewConfig:

\n\n
viewConfig: {\n    plugins: { ptype: 'treeviewdragdrop' }\n}\n
\n","!type":"fn(config?: Ext_tree_plugin_TreeViewDragDrop_cfg)","prototype":{"!proto":"Ext.AbstractPlugin.prototype","allowContainerDrops":{"!type":"bool","!doc":"

True if drops on the tree container (outside of a specific tree node) are allowed.

\n"},"allowParentInserts":{"!type":"bool","!doc":"

Allow inserting a dragged node between an expanded parent node and its first child that will become a sibling of\nthe parent when dropped.

\n"},"appendOnly":{"!type":"bool","!doc":"

True if the tree should only allow append drops (use for trees which are sorted).

\n"},"containerScroll":{"!type":"?|bool","!doc":"

True to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"ddGroup":{"!type":"string","!doc":"

A named drag drop group to which this object belongs. If a group is specified, then both the DragZones and\nDropZone used by this plugin will only interact with other drag drop objects in the same group.

\n"},"displayField":{"!type":"string","!doc":"

The name of the model field that is used to display the text for the nodes

\n"},"dragGroup":{"!type":"string","!doc":"

The ddGroup to which the DragZone will belong.

\n\n

This defines which other DropZones the DragZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"dragText":{"!type":"string","!doc":"

The text to show while dragging.

\n\n

Two placeholders can be used in the text:

\n\n\n\n"},"dropGroup":{"!type":"string","!doc":"

The ddGroup to which the DropZone will belong.

\n\n

This defines which other DragZones the DropZone will interact with. Drag/DropZones only interact with other\nDrag/DropZones which are members of the same ddGroup.

\n"},"enableDrag":{"!type":"bool","!doc":"

Set to false to disallow dragging items from the View.

\n"},"enableDrop":{"!type":"bool","!doc":"

Set to false to disallow the View from accepting drop gestures.

\n"},"expandDelay":{"!type":"number","!doc":"

The delay in milliseconds to wait before expanding a target tree node while dragging a droppable node over the\ntarget.

\n"},"nodeHighlightColor":{"!type":"string","!doc":"

The color to use when visually highlighting the dragged or dropped node (default value is light blue).\nThe color must be a 6 digit hex value, without a preceding '#'. See also nodeHighlightOnDrop and\nnodeHighlightOnRepair.

\n"},"nodeHighlightOnDrop":{"!type":"bool","!doc":"

Whether or not to highlight any nodes after they are\nsuccessfully dropped on their target. Defaults to the value of Ext.enableFx.\nSee also nodeHighlightColor and nodeHighlightOnRepair.

\n"},"nodeHighlightOnRepair":{"!type":"bool","!doc":"

Whether or not to highlight any nodes after they are\nrepaired from an unsuccessful drag/drop. Defaults to the value of Ext.enableFx.\nSee also nodeHighlightColor and nodeHighlightOnDrop.

\n"},"sortOnDrop":{"!type":"bool","!doc":"

Configure as true to sort the target node into the current tree sort order after the dropped node is added.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

AbstractComponent calls destroy on all its plugins at destroy time.

\n"},"init":{"!type":"fn(view: ?) -> !this","!doc":"

The init method is invoked after initComponent method has been run for the client Component.

\n\n

The supplied implementation is empty. Subclasses should perform plugin initialization, and set up bidirectional\nlinks between the plugin and its client Component in their own implementation of this method.

\n"},"onViewRender":{"!type":"fn(view: ?) -> !this"},"beforedrop":{"!type":"fn(node: +HTMLElement, data: ?, overModel: +Ext.data.Model, dropPosition: string, dropHandlers: ?, eOpts: ?)","!doc":"

This event is fired through the TreeView. Add listeners to the TreeView object

\n\n

Fired when a drop gesture has been triggered by a mouseup event in a valid drop position in the TreeView.

\n\n

Returning false to this event signals that the drop gesture was invalid, and if the drag proxy will animate\nback to the point from which the drag began.

\n\n

The dropHandlers parameter can be used to defer the processing of this event. For example to wait for the result of\na message box confirmation or an asynchronous server call. See the details of this property for more information.

\n\n
view.on('beforedrop', function(node, data, overModel, dropPosition, dropHandlers) {\n    // Defer the handling\n    dropHandlers.wait = true;\n    Ext.MessageBox.confirm('Drop', 'Are you sure', function(btn){\n        if (btn === 'yes') {\n            dropHandlers.processDrop();\n        } else {\n            dropHandlers.cancelDrop();\n        }\n    });\n});\n
\n\n

Any other return value continues with the data transfer operation, unless the wait property is set.

\n"},"drop":{"!type":"fn(node: +HTMLElement, data: ?, overModel: +Ext.data.Model, dropPosition: string, eOpts: ?)","!doc":"

This event is fired through the TreeView. Add listeners to the TreeView object Fired when a drop operation\nhas been completed and the data has been moved or copied.

\n"}}}}},"view":{"AbstractView":{"!doc":"

This is an abstract superclass and should not be used directly. Please see Ext.view.View.

\n","!type":"fn(config: +Ext.Element|string|Ext_view_AbstractView_cfg)","prototype":{"!proto":"Ext.Component.prototype","blockRefresh":{"!type":"bool","!doc":"

Set this to true to ignore refresh events on the bound store. This is useful if\nyou wish to provide custom transition animations via a plugin

\n"},"deferEmptyText":{"!type":"bool","!doc":"

True to defer emptyText being applied until the store's first load.

\n"},"deferInitialRefresh":{"!type":"bool","!doc":"

Defaults to true to defer the initial refresh of the view.

\n\n\n

This allows the View to execute its render and initial layout more quickly because the process will not be encumbered\nby the expensive update of the view structure.

\n\n\n

Important: Be aware that this will mean that the View's item elements will not be available immediately upon render, so\nselection may not take place at render time. To access a View's item elements as soon as possible, use the viewready event.\nOr set deferInitialrefresh to false, but this will be at the cost of slower rendering.

\n\n"},"disableSelection":{"!type":"bool","!doc":"

True to disable selection within the DataView. This configuration will lock the selection model\nthat the DataView uses.

\n"},"emptyText":{"!type":"string","!doc":"

The text to display in the view when there is no data to display.\nNote that when using local data the emptyText will not be displayed unless you set\nthe deferEmptyText option to false.

\n"},"itemCls":{"!type":"string","!doc":"

Specifies the class to be assigned to each element in the view when used in conjunction with the\nitemTpl configuration.

\n"},"itemSelector":{"!type":"string","!doc":"

This is a required setting. A simple CSS selector (e.g. div.some-class or\nspan:first-child) that will be used to determine what nodes this DataView will be\nworking with. The itemSelector is used to map DOM nodes to records. As such, there should\nonly be one root level element that matches the selector for each record.

\n"},"itemTpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The inner portion of the item template to be rendered. Follows an XTemplate\nstructure and will be placed inside of a tpl.

\n"},"loadMask":{"!type":"bool|?","!doc":"

False to disable a load mask from displaying while the view is loading. This can also be a\nExt.LoadMask configuration object.

\n"},"loadingCls":{"!type":"string","!doc":"

The CSS class to apply to the loading message element. Defaults to Ext.LoadMask.prototype.msgCls \"x-mask-loading\".

\n"},"loadingHeight":{"!type":"number","!doc":"

If specified, gives an explicit height for the data view when it is showing the loadingText,\nif that is specified. This is useful to prevent the view's height from collapsing to zero when the\nloading mask is applied and there are no other contents in the data view.

\n"},"loadingText":{"!type":"string","!doc":"

A string to display during data load operations. If specified, this text will be\ndisplayed in a loading div and the view's contents will be cleared while loading, otherwise the view's\ncontents will continue to display normally until the new data is loaded and the contents are replaced.

\n"},"loadingUseMsg":{"!type":"bool","!doc":"

Whether or not to use the loading message.

\n"},"multiSelect":{"!type":"bool","!doc":"

True to allow selection of more than one item at a time, false to allow selection of only a single item\nat a time or no selection at all, depending on the value of singleSelect.

\n"},"overItemCls":{"!type":"string","!doc":"

A CSS class to apply to each item in the view on mouseover.\nSetting this will automatically set trackOver to true.

\n"},"preserveScrollOnRefresh":{"!type":"bool","!doc":"

True to preserve scroll position across refresh operations.

\n"},"selectedItemCls":{"!type":"string","!doc":"

A CSS class to apply to each selected item in the view.

\n"},"simpleSelect":{"!type":"bool","!doc":"

True to enable multiselection by clicking on multiple items without requiring the user to hold Shift or Ctrl,\nfalse to force the user to hold Ctrl or Shift to select more than on item.

\n"},"singleSelect":{"!type":"bool","!doc":"

Allows selection of exactly one item at a time. As this is the default selection mode anyway, this config\nis completely ignored.

\n"},"store":{"!type":"+Ext.data.Store","!doc":"

The Ext.data.Store to bind this DataView to.

\n"},"tpl":{"!type":"string|[string]|+Ext.XTemplate","!doc":"

The HTML fragment or an array of fragments that will make up the template used by this DataView. This should\nbe specified in the same format expected by the constructor of Ext.XTemplate.

\n"},"trackOver":{"!type":"bool","!doc":"

When true the overItemCls will be applied to rows when hovered over.\nThis in return will also cause highlightitem and\nunhighlightitem events to be fired.

\n\n

Enabled automatically when the overItemCls config is set.

\n"},"last":{"!type":"bool","!doc":"

private

\n"},"triggerCtEvent":{"!type":"string"},"triggerEvent":{"!type":"string"},"addCmpEvents":{"!type":"fn() -> !this"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"applyFirstRefresh":{"!type":"fn() -> !this"},"beforeRender":{"!type":"fn() -> !this"},"bindStore":{"!type":"fn(store: +Ext.data.Store) -> !this","!doc":"

Changes the data store bound to this view and refreshes it.

\n"},"bufferRender":{"!type":"fn(records: ?, index: ?) -> !this","!doc":"

private

\n"},"clearSelections":{"!type":"fn() -> !this","!doc":"

Deselects all selected records.

\n"},"clearViewEl":{"!type":"fn() -> !this"},"collectData":{"!type":"fn(records: [+Ext.data.Model], startIndex: number) -> [?]","!doc":"

Function which can be overridden which returns the data object passed to this\nDataView's template to render the whole DataView.

\n\n

This is usually an Array of data objects, each element of which is processed by an\nXTemplate which uses '&lt;tpl for=\".\"&gt;' to iterate over its supplied\ndata object as an Array. However, named properties may be placed into the data object to\nprovide non-repeating data such as headings, totals etc.

\n"},"collectNodes":{"!type":"fn(targetEl: ?) -> !this","!doc":"

Private\nCalled by refresh to collect the view item nodes.

\n"},"deselect":{"!type":"fn(records: [+Ext.data.Model]|number, suppressEvent: bool) -> !this","!doc":"

Deselects a record instance by record instance or index.

\n"},"doAdd":{"!type":"fn(records: ?, index: ?) -> !this"},"doFirstRefresh":{"!type":"fn(store: ?) -> !this","!doc":"

Perform the first refresh of the View from a newly bound store.

\n\n

This is called when this View has been sized for the first time.

\n"},"doRemove":{"!type":"fn(record: ?, index: ?) -> !this","!doc":"

private

\n"},"findItemByChild":{"!type":"fn(node: +HTMLElement) -> +HTMLElement","!doc":"

Returns the template node the passed child belongs to, or null if it doesn't belong to one.

\n"},"findTargetByEvent":{"!type":"fn(e: +Ext.EventObject) -> !this","!doc":"

Returns the template node by the Ext.EventObject or null if it is not found.

\n"},"finishRender":{"!type":"fn(containerIdx: number) -> !this","!doc":"

This method visits the rendered component tree in a \"top-down\" order. That is, this\ncode runs on a parent component before running on a child. This method calls the\nonRender method of each component.

\n"},"getItemSelector":{"!type":"fn() -> !this"},"getMaskStore":{"!type":"fn() -> !this"},"getNode":{"!type":"fn(nodeInfo: +HTMLElement|string|number|+Ext.data.Model) -> +HTMLElement","!doc":"

Gets a template node.

\n"},"getNodeByRecord":{"!type":"fn(record: ?) -> !this"},"getNodeContainer":{"!type":"fn() -> !this"},"getNodes":{"!type":"fn(start?: number, end?: number) -> [+HTMLElement]","!doc":"

Gets a range nodes.

\n"},"getRecord":{"!type":"fn(node: +Ext.Element|+HTMLElement) -> +Ext.data.Model","!doc":"

Gets a record from a node

\n"},"getRecords":{"!type":"fn(nodes: [+HTMLElement]) -> [+Ext.data.Model]","!doc":"

Gets an array of the records from an array of nodes

\n"},"getSelectedNodes":{"!type":"fn() -> [+HTMLElement]","!doc":"

Gets the currently selected nodes.

\n"},"getSelectedRecords":{"!type":"fn() -> [+Ext.data.Model]","!doc":"

Gets an array of the selected records

\n"},"getSelectionCount":{"!type":"fn() -> number","!doc":"

Gets the number of selected nodes.

\n"},"getSelectionModel":{"!type":"fn() -> +Ext.selection.Model","!doc":"

Gets the selection model for this view.

\n"},"getStore":{"!type":"fn() -> +Ext.data.Store","!doc":"

Returns the store associated with this DataView.

\n"},"getStoreListeners":{"!type":"fn() -> ?","!doc":"

Gets the listeners to bind to a new store.

\n"},"getViewRange":{"!type":"fn() -> !this"},"indexOf":{"!type":"fn(nodeInfo: +HTMLElement|string|number|+Ext.data.Model) -> number","!doc":"

Finds the index of the passed node.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"isSelected":{"!type":"fn(node: +HTMLElement|number|+Ext.data.Model) -> bool","!doc":"

Returns true if the passed node is selected, else false.

\n"},"onAdd":{"!type":"fn(store: ?, records: ?, index: ?) -> !this","!doc":"

private

\n"},"onBindStore":{"!type":"fn(store: ?, initial: ?, propName: ?) -> !this","!doc":"

Template method, it is called when a new store is bound\nto the current instance.

\n"},"onBoxReady":{"!type":"fn() -> !this"},"onDataRefresh":{"!type":"fn() -> !this","!doc":"

Calls this.refresh if this.blockRefresh is not true

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onIdChanged":{"!type":"fn() -> !this"},"onItemDeselect":{"!type":"fn(record: ?) -> !this","!doc":"

invoked by the selection model to maintain visual UI cues

\n"},"onItemSelect":{"!type":"fn(record: ?) -> !this","!doc":"

invoked by the selection model to maintain visual UI cues

\n"},"onMaskBeforeShow":{"!type":"fn() -> !this"},"onMaskHide":{"!type":"fn() -> !this"},"onRemove":{"!type":"fn(ds: ?, records: ?, indexes: ?) -> !this","!doc":"

private

\n"},"onRender":{"!type":"fn() -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"onUnbindStore":{"!type":"fn(store: ?) -> !this","!doc":"

Template method, it is called when an existing store is unbound\nfrom the current instance.

\n"},"onUpdate":{"!type":"fn(ds: ?, record: ?) -> !this","!doc":"

private

\n"},"onViewScroll":{"!type":"fn() -> !this","!doc":"

Private template method to be overridden in subclasses.

\n"},"prepareData":{"!type":"fn(data: ?|[?], recordIndex: number, record: +Ext.data.Model) -> [?]|?","!doc":"

Function which can be overridden to provide custom formatting for each Record that is used by this\nDataView's template to render each node.

\n"},"refresh":{"!type":"fn(this: +Ext.view.View, eOpts: ?)","!doc":"

Fires when the view is refreshed

\n"},"refreshNode":{"!type":"fn(index: number) -> !this","!doc":"

Refreshes an individual node's data from the store.

\n"},"refreshSize":{"!type":"fn() -> !this","!doc":"

Called by the framework when the view is refreshed, or when rows are added or deleted.

\n\n

These operations may cause the view's dimensions to change, and if the owning container\nis shrinkwrapping this view, then the layout must be updated to accommodate these new dimensions.

\n"},"refreshView":{"!type":"fn() -> !this"},"restoreScrollState":{"!type":"fn() -> !this","!doc":"

Restores the scrollState.\nMust be used in conjunction with saveScrollState

\n"},"saveScrollState":{"!type":"fn() -> !this","!doc":"

Saves the scrollState in a private variable. Must be used in conjunction with restoreScrollState.

\n"},"select":{"!type":"fn(records: [+Ext.data.Model]|number, keepExisting: bool, suppressEvent: bool) -> !this","!doc":"

Selects a record instance by record instance or index.

\n"},"setMaskBind":{"!type":"fn(store: ?) -> !this"},"updateIndexes":{"!type":"fn(startIndex: ?, endIndex: ?) -> !this","!doc":"

private

\n"},"beforerefresh":{"!type":"fn(this: +Ext.view.View, eOpts: ?)","!doc":"

Fires before the view is refreshed

\n"},"itemadd":{"!type":"fn(records: [+Ext.data.Model], index: number, node: [+HTMLElement], eOpts: ?)","!doc":"

Fires when the nodes associated with an recordset have been added to the underlying store

\n"},"itemremove":{"!type":"fn(record: +Ext.data.Model, index: number, eOpts: ?)","!doc":"

Fires when the node associated with an individual record is removed

\n"},"itemupdate":{"!type":"fn(record: +Ext.data.Model, index: number, node: +HTMLElement, eOpts: ?)","!doc":"

Fires when the node associated with an individual record is updated

\n"},"viewready":{"!type":"fn(this: +Ext.view.View, eOpts: ?)","!doc":"

Fires when the View's item elements representing Store items has been rendered. If the deferInitialRefresh flag\nwas set (and it is true by default), this will be after initial render, and no items will be available\nfor selection until this event fires.

\n"}},"getBoundView":{"!type":"fn(node: ?) -> !this"},"getRecord":{"!type":"fn(node: ?) -> !this"}},"BoundList":{"!doc":"

An internally used DataView for ComboBox.

\n","!type":"fn(config: +Ext.Element|string|Ext_view_BoundList_cfg)","prototype":{"!proto":"Ext.view.View.prototype","baseCls":{"!type":"string","!doc":"

private overrides

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"deferInitialRefresh":{"!type":"bool","!doc":"

This Component is used as a popup, not part of a complex layout. Display data immediately.

\n"},"displayField":{"!type":"string","!doc":"

The field from the store to show in the view.

\n"},"itemCls":{"!type":"string","!doc":"

Specifies the class to be assigned to each element in the view when used in conjunction with the\nitemTpl configuration.

\n"},"pageSize":{"!type":"number","!doc":"

If greater than 0, a Ext.toolbar.Paging is displayed at the bottom of the list and store\nqueries will execute with page start and\nlimit parameters.

\n"},"renderTpl":{"!type":"+Ext.XTemplate|string|[string]","!doc":"

An XTemplate used to create the internal structure inside this Component's encapsulating\nElement.

\n\n

You do not normally need to specify this. For the base classes Ext.Component and\nExt.container.Container, this defaults to null which means that they will be initially rendered\nwith no internal structure; they render their Element empty. The more specialized Ext JS and Sencha Touch\nclasses which use a more complex DOM structure, provide their own template definitions.

\n\n

This is intended to allow the developer to create application-specific utility Components with customized\ninternal structure.

\n\n

Upon rendering, any created child elements may be automatically imported into object properties using the\nrenderSelectors and childEls options.

\n"},"shadow":{"!type":"string|bool","!doc":"

Specifies whether the floating component should be given a shadow. Set to true to automatically create an\nExt.Shadow, or a string indicating the shadow's display Ext.Shadow.mode. Set to false to\ndisable the shadow.

\n"},"tpl":{"!type":"string|+Ext.XTemplate","!doc":"

A String or Ext.XTemplate instance to apply to inner template.

\n\n

Ext.view.BoundList is used for the dropdown list of Ext.form.field.ComboBox.\nTo customize the template you can do this:

\n\n
Ext.create('Ext.form.field.ComboBox', {\n    fieldLabel   : 'State',\n    queryMode    : 'local',\n    displayField : 'text',\n    valueField   : 'abbr',\n    store        : Ext.create('StateStore', {\n        fields : ['abbr', 'text'],\n        data   : [\n            {\"abbr\":\"AL\", \"name\":\"Alabama\"},\n            {\"abbr\":\"AK\", \"name\":\"Alaska\"},\n            {\"abbr\":\"AZ\", \"name\":\"Arizona\"}\n            //...\n        ]\n    }),\n    listConfig : {\n        tpl : '<tpl for=\".\"><div class=\"x-boundlist-item\">{abbr}</div></tpl>'\n    }\n});\n
\n\n

Defaults to:

\n\n
Ext.create('Ext.XTemplate',\n    '<ul><tpl for=\".\">',\n        '<li role=\"option\" class=\"' + itemCls + '\">' + me.getInnerTpl(me.displayField) + '</li>',\n    '</tpl></ul>'\n);\n
\n"},"trackOver":{"!type":"bool","!doc":"

When true the overItemCls will be applied to rows when hovered over.\nThis in return will also cause highlightitem and\nunhighlightitem events to be fired.

\n\n

Enabled automatically when the overItemCls config is set.

\n"},"childEls":{"!type":"[?]"},"listItemCls":{"!type":"string"},"pagingToolbar":{"!type":"+Ext.toolbar.Paging","!doc":"

A reference to the PagingToolbar instance in this view. Only populated if pageSize is greater\nthan zero and the BoundList has been rendered.

\n"},"refreshed":{"!type":"number"},"beforeRender":{"!type":"fn() -> !this"},"bindStore":{"!type":"fn(store: ?, initial: ?) -> !this","!doc":"

Changes the data store bound to this view and refreshes it.

\n"},"createPagingToolbar":{"!type":"fn() -> !this"},"finishRenderChildren":{"!type":"fn() -> !this","!doc":"

Do the job of a container layout at this point even though we are not a Container.\nTODO: Refactor as a Container.

\n"},"getInnerTpl":{"!type":"fn(displayField: string) -> string","!doc":"

A method that returns the inner template for displaying items in the list.\nThis method is useful to override when using a more complex display value, for example\ninserting an icon along with the text.

\n\n

The XTemplate is created with a reference to the owning form field in the field property to provide access\nto context. For example to highlight the currently typed value, the getInnerTpl may be configured into a\nComboBox as part of the listConfig:

\n\n

listConfig: {\n getInnerTpl: function() {\n return '{[values.name.replace(this.field.getRawValue(), \"\" + this.field.getRawValue() + \"\")]}';\n }\n }

\n"},"getRefItems":{"!type":"fn() -> !this"},"getRefOwner":{"!type":"fn() -> !this","!doc":"

Used by ComponentQuery, and the up method to find the\nowning Component in the linkage hierarchy.

\n\n

By default this returns the Container which contains this Component.

\n\n

This may be overriden by Component authors who implement ownership hierarchies which are not\nbased upon ownerCt, such as BoundLists being owned by Fields or Menus being owned by Buttons.

\n"},"getTargetEl":{"!type":"fn() -> !this","!doc":"

This is used to determine where to insert the 'html', 'contentEl' and 'items' in this component.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"refresh":{"!type":"fn() -> !this","!doc":"

Refreshes the view by reloading the data from the store and re-rendering the template.

\n"}}},"BoundListKeyNav":{"!doc":"

A specialized Ext.util.KeyNav implementation for navigating a Ext.view.BoundList using\nthe keyboard. The up, down, pageup, pagedown, home, and end keys move the active highlight\nthrough the list. The enter key invokes the selection model's select action using the highlighted item.

\n","!type":"fn(config: Ext_view_BoundListKeyNav_cfg)","prototype":{"!proto":"Ext.util.KeyNav.prototype","boundList":{"!type":"+Ext.view.BoundList","!doc":"

The Ext.view.BoundList instance for which key navigation will be managed.

\n"},"defaultHandlers":{"!type":"?"},"highlightAt":{"!type":"fn(index: number) -> !this","!doc":"

Highlights the item at the given index.

\n"},"selectHighlighted":{"!type":"fn(e: ?) -> !this","!doc":"

Triggers selection of the currently highlighted item according to the behavior of\nthe configured SelectionModel.

\n"}}},"DragZone":{"!type":"fn(config: Ext_view_DragZone_cfg)","prototype":{"!proto":"Ext.dd.DragZone.prototype","containerScroll":{"!type":"?|bool","!doc":"

True to register this container with the Scrollmanager for auto scrolling during drag operations.\nA Ext.dd.ScrollManager configuration may also be passed.

\n"},"getDragData":{"!type":"fn(e: ?) -> ?","!doc":"

Called when a mousedown occurs in this container. Looks in Ext.dd.Registry for a valid target to drag\nbased on the mouse down. Override this method to provide your own lookup logic (e.g. finding a child by class\nname). Make sure your returned object has a \"ddel\" attribute (with an HTML Element) for other functions to work.

\n"},"getDragText":{"!type":"fn() -> !this"},"getRepairXY":{"!type":"fn(e: ?, data: ?) -> [number]","!doc":"

Called before a repair of an invalid drop to get the XY to animate to. By default returns the XY of\nthis.dragData.ddel

\n"},"init":{"!type":"fn(id: ?, sGroup: ?, config: ?) -> !this","!doc":"

Sets up the DragDrop object. Must be called in the constructor of any\nExt.dd.DragDrop subclass

\n"},"isPreventDrag":{"!type":"fn(e: ?) -> !this","!doc":"

private template method

\n"},"onInitDrag":{"!type":"fn(x: ?, y: ?) -> bool","!doc":"

Called once drag threshold has been reached to initialize the proxy element. By default, it clones the\nthis.dragData.ddel

\n"},"onItemMouseDown":{"!type":"fn(view: ?, record: ?, item: ?, index: ?, e: ?) -> !this"},"onValidDrop":{"!type":"fn(target: ?, e: ?, id: ?) -> !this"}}},"DropZone":{"!type":"fn(config: Ext_view_DropZone_cfg)","prototype":{"!proto":"Ext.dd.DropZone.prototype","indicatorCls":{"!type":"string"},"indicatorHtml":{"!type":"string"},"containsRecordAtOffset":{"!type":"fn(records: ?, record: ?, offset: ?) -> bool","!doc":"

Determines whether the record at the specified offset from the passed record\nis in the drag payload.

\n"},"destroy":{"!type":"fn() -> !this","!doc":"

Destroy this DragDrop instance

\n"},"fireViewEvent":{"!type":"fn() -> !this","!doc":"

Fire an event through the client DataView. Lock this DropZone during the event processing so that\nits data does not become corrupted by processing mouse events.

\n"},"getIndicator":{"!type":"fn() -> !this"},"getPosition":{"!type":"fn(e: ?, node: ?) -> !this"},"getTargetFromEvent":{"!type":"fn(e: ?) -> ?","!doc":"

Returns a custom data object associated with the DOM node that is the target of the event. By default\nthis looks up the event target in the Ext.dd.Registry, although you can override this method to\nprovide your own custom lookup.

\n"},"invalidateDrop":{"!type":"fn() -> !this"},"notifyOut":{"!type":"fn(node: ?, dragZone: ?, e: ?, data: ?) -> !this","!doc":"

Moved out of the DropZone without dropping.\nRemove drop position indicator

\n"},"onContainerDrop":{"!type":"fn(dd: ?, e: ?, data: ?) -> bool","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dropped on it,\nbut not on any of its registered drop nodes. The default implementation returns false, so it should be\noverridden to provide the appropriate processing of the drop event if you need the drop zone itself to\nbe able to accept drops. It should return true when valid so that the drag source's repair action does not run.

\n"},"onContainerOver":{"!type":"fn(dd: ?, e: ?, data: ?) -> string","!doc":"

The mouse is past the end of all nodes (or there are no nodes)

\n"},"onNodeDrop":{"!type":"fn(targetNode: ?, dragZone: ?, e: ?, data: ?) -> bool","!doc":"

Called when the DropZone determines that a Ext.dd.DragSource has been dropped onto\nthe drop node. The default implementation returns false, so it should be overridden to provide the\nappropriate processing of the drop event and return true so that the drag source's repair action does not run.

\n"},"onNodeOver":{"!type":"fn(node: ?, dragZone: ?, e: ?, data: ?) -> string","!doc":"

The mouse is over a View node

\n"},"positionIndicator":{"!type":"fn(node: ?, data: ?, e: ?) -> !this"}}},"NodeCache":{"!doc":"

A cache of View elements keyed using the index of the associated record in the store.

\n\n

This implements the methods of {Ext.dom.CompositeElement} which are used by Ext.view.AbstractView\nto privide a map of record nodes and methods to manipulate the nodes.

\n","!type":"fn(view: ?)","prototype":{"!proto":"Ext.Base.prototype","clear":{"!type":"fn(removeDom?: bool) -> !this","!doc":"

Removes all elements from this NodeCache.

\n"},"fill":{"!type":"fn(els: [+HTMLElement]) -> +Ext.view.NodeCache","!doc":"

Clears this NodeCache and adds the elements passed.

\n"},"first":{"!type":"fn(asDom: ?) -> !this"},"getCount":{"!type":"fn() -> !this"},"indexOf":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number) -> number","!doc":"

Find the index of the passed element within the composite collection.

\n"},"insert":{"!type":"fn(insertPoint: ?, nodes: ?) -> !this"},"item":{"!type":"fn(index: ?, asDom: ?) -> !this"},"last":{"!type":"fn(asDom: ?) -> !this"},"removeElement":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number, removeDom?: bool) -> !this","!doc":"

Removes the specified element(s).

\n"},"removeRange":{"!type":"fn(start: ?, end: ?, removeDom: ?) -> !this"},"replaceElement":{"!type":"fn(el: string|+HTMLElement|+Ext.Element|number, replacement: string|+Ext.Element, domReplace?: bool) -> +Ext.view.NodeCache","!doc":"

Replaces the specified element with the passed element.

\n"},"scroll":{"!type":"fn(newRecords: [+Ext.data.Model], direction: number, removeCount: number) -> !this","!doc":"

Appends/prepends records depending on direction flag

\n"},"slice":{"!type":"fn(start: ?, end: ?) -> !this"}}},"Table":{"!doc":"

This class encapsulates the user interface for a tabular data set.\nIt acts as a centralized manager for controlling the various interface\nelements of the view. This includes handling events, such as row and cell\nlevel based DOM events. It also reacts to events from the underlying Ext.selection.Model\nto provide visual feedback to the user.

\n\n

This class does not provide ways to manipulate the underlying data of the configured\nExt.data.Store.

\n\n

This is the base class for both Ext.grid.View and Ext.tree.View and is not\nto be used directly.

\n\n

From override Ext.grid.plugin.BufferedRendererTableView: A set of overrides required by the presence of the BufferedRenderer plugin.

\n\n

These overrides of Ext.view.Table take into account the affect of a buffered renderer and\ndivert execution from the default course where necessary.

\n","!type":"fn(config: Ext_view_Table_cfg)","prototype":{"!proto":"Ext.view.View.prototype","baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this component's element. This will also be prepended to elements within this\ncomponent like Panel's body will get a class x-panel-body. This means that if you create a subclass of Panel, and\nyou want it to get all the Panels styling for the element and the body, you leave the baseCls x-panel and use\ncomponentCls to add specific styling for this component.

\n"},"componentLayout":{"!type":"string|?","!doc":"

The sizing and positioning of a Component's internal Elements is the responsibility of the Component's layout\nmanager which sizes a Component's internal structure in response to the Component being sized.

\n\n

Generally, developers will not use this configuration as all provided Components which need their internal\nelements sizing (Such as input fields) come with their own componentLayout managers.

\n\n

The default layout manager will be used on instances of the base Ext.Component\nclass which simply sizes the Component's encapsulating element to the height and width specified in the\nsetSize method.

\n"},"enableTextSelection":{"!type":"bool","!doc":"

True to enable text selections.

\n"},"firstCls":{"!type":"string","!doc":"

A CSS class to add to the first cell in every row to enable special styling for the first column.\nIf no styling is needed on the first column, this may be configured as null.

\n"},"itemSelector":{"!type":"string","!doc":"

view item (may be a wrapper)

\n"},"lastCls":{"!type":"string","!doc":"

A CSS class to add to the last cell in every row to enable special styling for the last column.\nIf no styling is needed on the last column, this may be configured as null.

\n"},"markDirty":{"!type":"bool","!doc":"

True to show the dirty cell indicator when a cell has been modified.

\n"},"overItemCls":{"!type":"string","!doc":"

A CSS class to apply to each item in the view on mouseover.\nSetting this will automatically set trackOver to true.

\n"},"selectedItemCls":{"!type":"string","!doc":"

A CSS class to apply to each selected item in the view.

\n"},"stripeRows":{"!type":"bool","!doc":"

True to stripe the rows.

\n\n

This causes the CSS class x-grid-row-alt to be added to alternate rows of\nthe grid. A default CSS rule is provided which sets a background color, but you can override this\nwith a rule which either overrides the background-color style using the !important\nmodifier, or which uses a CSS selector of higher specificity.

\n"},"trackOver":{"!type":"bool","!doc":"

cfg docs inherited

\n"},"altRowCls":{"!type":"string"},"beforeFocusedItemCls":{"!type":"string"},"beforeOverItemCls":{"!type":"string"},"beforeSelectedItemCls":{"!type":"string"},"body":{"!type":"+Ext.dom.AbstractElement.Fly","!doc":"

A flyweight Ext.Element which encapsulates a reference to the view's main row containing element.\nNote that the dom reference will not be present until the first data refresh

\n"},"bodySelector":{"!type":"string","!doc":"

Outer table

\n"},"cellRe":{"!type":"?"},"cellSelector":{"!type":"string","!doc":"

cell

\n"},"cellTpl":{"!type":"[?]"},"cellValues":{"!type":"?"},"dataRowSelector":{"!type":"string","!doc":"

row which contains cells as opposed to wrapping rows

\n"},"dirtyCls":{"!type":"string"},"focusedItemCls":{"!type":"string"},"headerRowSelector":{"!type":"string"},"innerSelector":{"!type":"string"},"nodeContainerSelector":{"!type":"string","!doc":"

Element which contains rows

\n"},"positionBody":{"!type":"bool"},"refreshSelmodelOnRefresh":{"!type":"bool","!doc":"

Flag to disable refreshing SelectionModel on view refresh. Table views render rows with selected CSS class already added if necessary.

\n"},"renderBuffer":{"!type":"?","!doc":"

/ Private used for buffered rendering

\n"},"rowClsRe":{"!type":"?"},"rowTpl":{"!type":"[?]"},"rowValues":{"!type":"?","!doc":"

Private properties used during the row and cell render process.\nThey are allocated here on the prototype, and cleared/re-used to avoid GC churn during repeated rendering.

\n"},"selectedCellCls":{"!type":"string"},"sizerSelector":{"!type":"string","!doc":"

<column sizer>

\n"},"tableFocusedFirstCls":{"!type":"string"},"tableOverFirstCls":{"!type":"string"},"tableSelectedFirstCls":{"!type":"string"},"tableTpl":{"!type":"[?]"},"tableValues":{"!type":"?"},"tpl":{"!type":"string","!doc":"

Simple initial tpl for TableView just to satisfy the validation within AbstractView.initComponent.

\n"},"addCellTpl":{"!type":"fn(newTpl: ?) -> !this"},"addElListener":{"!type":"fn(eventName: ?, fn: ?, scope: ?) -> !this","!doc":"

Add a listener to the main view element. It will be destroyed with the view.

\n"},"addFooterFn":{"!type":"fn(fn: ?) -> !this"},"addHeaderFn":{"!type":"fn() -> !this","!doc":"

Currently, we don't have ordering support for header/footer functions,\nthey will be pushed on at construction time. If the need does arise,\nwe can add this functionality in the future, but for now it's not\nreally necessary since currently only the summary feature uses this.

\n"},"addRowCls":{"!type":"fn(rowInfo: +HTMLElement|string|number|+Ext.data.Model, cls: string) -> !this","!doc":"

Adds a CSS Class to a specific row.

\n"},"addRowTpl":{"!type":"fn(newTpl: ?) -> !this"},"addTableTpl":{"!type":"fn(newTpl: ?) -> !this"},"addTpl":{"!type":"fn(which: ?, newTpl: ?) -> !this"},"autoSizeColumn":{"!type":"fn(header: +Ext.grid.column.Column|number) -> !this","!doc":"

Sizes the passed header to fit the max content width.\nNote that group columns shrinkwrap around the size of leaf columns. Auto sizing a group column\nautosizes descendant leaf columns.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"beforeRender":{"!type":"fn() -> !this"},"bufferRender":{"!type":"fn(records: ?, index: ?) -> !this","!doc":"

private\nOverride so that we can use a quicker way to access the row nodes.\nThey are simply all child nodes of the TBODY element.

\n"},"collectData":{"!type":"fn(records: ?, startIndex: ?) -> [?]","!doc":"

Function which can be overridden which returns the data object passed to this\nDataView's template to render the whole DataView.

\n\n

This is usually an Array of data objects, each element of which is processed by an\nXTemplate which uses '&lt;tpl for=\".\"&gt;' to iterate over its supplied\ndata object as an Array. However, named properties may be placed into the data object to\nprovide non-repeating data such as headings, totals etc.

\n"},"collectNodes":{"!type":"fn(targetEl: ?) -> !this","!doc":"

Overridden implementation.\nCalled by refresh to collect the view item nodes.\nNote that these may be wrapping rows which contain rows which map to records

\n"},"constructFeatures":{"!type":"fn() -> !this","!doc":"

Converts the features array as configured, into an array of instantiated Feature objects.

\n\n

Must have no side effects other than Feature instantiation.

\n\n

MUST NOT update the this.features property, and MUST NOT update the instantiated Features.

\n"},"constructRowId":{"!type":"fn(internalId: ?) -> !this"},"createRowElement":{"!type":"fn(record: ?, index: ?) -> !this","!doc":"

private\nCreate the DOM element which enapsulates the passed record.\nUsed when updating existing rows, so drills down into resulting structure .

\n"},"doStripeRows":{"!type":"fn(startRow: number, endRow?: number) -> !this","!doc":"

Stripes rows from a particular row index.

\n"},"expandToFit":{"!type":"fn(header: ?) -> !this","!doc":"

Expands a particular header to fit the max content width.

\n"},"findFeature":{"!type":"fn(ftype: ?) -> !this","!doc":"

Finds a features by ftype in the features array

\n"},"focus":{"!type":"fn(selectText: ?, delay: ?) -> +Ext.Component","!doc":"

Try to focus this component.

\n"},"focusCell":{"!type":"fn(position: ?) -> !this"},"focusRow":{"!type":"fn(row: +HTMLElement|string|number|+Ext.data.Model, delay?: bool|number) -> !this","!doc":"

Focuses a particular row and brings it into view. Will fire the rowfocus event.

\n"},"getBodySelector":{"!type":"fn() -> !this","!doc":"

Returns a CSS selector which selects the outermost element(s) in this view.

\n"},"getCell":{"!type":"fn(record: +Ext.data.Model, column: +Ext.grid.column.Column) -> !this","!doc":"

Get the cell (td) for a particular record and column.

\n"},"getCellByPosition":{"!type":"fn(position: ?, returnDom: ?) -> !this"},"getCellInnerSelector":{"!type":"fn(header: ?) -> !this","!doc":"

Returns a CSS selector which selects the content carrying element within cells.

\n"},"getCellPaddingAfter":{"!type":"fn(cell: ?) -> !this"},"getCellSelector":{"!type":"fn(header?: +Ext.grid.column.Column) -> !this","!doc":"

Returns a CSS selector which selects a particular column if the desired header is passed,\nor a general cell selector is no parameter is passed.

\n"},"getColumnSizerSelector":{"!type":"fn(header: ?) -> !this","!doc":"

Returns a CSS selector which selects the element(s) which define the width of a column.

\n\n

This is used by the Ext.view.TableLayout when resizing columns.

\n"},"getDataRowSelector":{"!type":"fn() -> !this","!doc":"

Returns a CSS selector which selects a row which contains cells.

\n\n

These may not correspond to actual records in the store. This selector may be used\nto identify things like total rows or header rows as injected by features which modify\nthe rowTpl.

\n"},"getFeature":{"!type":"fn(id: string) -> +Ext.grid.feature.Feature","!doc":"

Get a reference to a feature

\n"},"getFirstVisibleRowIndex":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

Returns the focus holder element associated with this Component. At the Component base class level, this function returns undefined.

\n\n

Subclasses which use embedded focusable elements (such as Window, Field and Button) should override this\nfor use by the focus method.

\n\n

Containers which need to participate in the FocusManager's navigation and Container focusing scheme also\nneed to return a focusEl, although focus is only listened for in this case if the FocusManager is enabled.

\n"},"getGridColumns":{"!type":"fn() -> !this","!doc":"

Get the leaf columns used for rendering the grid rows.

\n"},"getHeaderAtIndex":{"!type":"fn(index: number) -> !this","!doc":"

Get a leaf level header by index regardless of what the nesting\nstructure is.

\n"},"getHeaderByCell":{"!type":"fn(cell: ?) -> !this"},"getHeaderCt":{"!type":"fn() -> !this"},"getItemSelector":{"!type":"fn() -> !this","!doc":"

Returns a CSS selector which selects items of the view rendered by the rowTpl

\n"},"getLastVisibleRowIndex":{"!type":"fn() -> !this"},"getMaxContentWidth":{"!type":"fn(header: ?) -> !this","!doc":"

Returns the max contentWidth of the header's text and all cells\nin the grid under this header.

\n"},"getNode":{"!type":"fn(nodeInfo: +HTMLElement|string|number|+Ext.data.Model, dataRow?: bool) -> +HTMLElement","!doc":"

Returns the node given the passed Record, or index or node.

\n"},"getNodeById":{"!type":"fn(id: ?, dataRow: ?) -> !this"},"getNodeByRecord":{"!type":"fn(record: ?, dataRow: ?) -> !this"},"getNodeContainer":{"!type":"fn() -> !this"},"getNodeContainerSelector":{"!type":"fn() -> !this","!doc":"

Returns a CSS selector which selects the element which contains record nodes.

\n"},"getPosition":{"!type":"fn(record: ?, header: ?) -> [number]","!doc":"

Gets the current XY position of the component's underlying element.

\n"},"getPositionByEvent":{"!type":"fn(e: ?) -> !this"},"getRecord":{"!type":"fn(node: ?) -> +Ext.data.Model","!doc":"

Gets a record from a node

\n"},"getRowClass":{"!type":"fn(record: +Ext.data.Model, index: number, rowParams: ?, store: +Ext.data.Store) -> string","!doc":"

Override this function to apply custom CSS classes to rows during rendering. This function should return the\nCSS class name (or empty string '' for none) that will be added to the row's wrapping div. To apply multiple\nclass names, simply return them space-delimited within the string (e.g. 'my-class another-class').\nExample usage:

\n\n
viewConfig: {\n    getRowClass: function(record, rowIndex, rowParams, store){\n        return record.get(\"valid\") ? \"row-valid\" : \"row-error\";\n    }\n}\n
\n"},"getRowId":{"!type":"fn(record: ?) -> !this"},"getRowStyleTableEl":{"!type":"fn(item: ?) -> !this","!doc":"

private\nreturns the table that gains a top border when the first grid row is focused, selected,\nor hovered. Usually the main grid table but can be a sub-table, if a grouping\nfeature is being used.

\n"},"indexInStore":{"!type":"fn(node: ?) -> !this"},"indexOf":{"!type":"fn(node: ?) -> number","!doc":"

Finds the index of the passed node.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"initFeatures":{"!type":"fn(grid: ?) -> !this","!doc":"

Initializes each feature and bind it to this view.

\n"},"isDataRow":{"!type":"fn(row: ?) -> bool","!doc":"

Used to test if a row being updated is a basic data row as opposed to containing extra markup\nprovided by a Feature, eg a wrapping row containing extra elements such as group header, group summary,\nrow body etc.

\n\n

If A row being updated is not a data row, then the elements within it which are not valid data rows\nmust be copied.

\n"},"isRowStyleFirst":{"!type":"fn(item: ?) -> !this","!doc":"

private\nreturns true if the row should be treated as the first row stylistically. Typically\nonly returns true for the first row in a grid. Returns true for the first row\nin each group of a grouped grid.

\n"},"moveColumn":{"!type":"fn(fromIdx: number, toIdx: number, colsToMove?: number) -> !this","!doc":"

Move a grid column from one position to another

\n"},"onAdd":{"!type":"fn(ds: ?, records: ?, index: ?) -> !this","!doc":"

after adding a row stripe rows from then on

\n\n

From override Ext.grid.plugin.BufferedRendererTableView: Listener function for the Store's add event

\n"},"onBeforeCellClick":{"!type":"fn() -> !this"},"onBeforeCellContextMenu":{"!type":"fn() -> !this"},"onBeforeCellDblClick":{"!type":"fn() -> !this"},"onBeforeCellKeyDown":{"!type":"fn() -> !this"},"onBeforeCellMouseDown":{"!type":"fn() -> !this"},"onBeforeCellMouseUp":{"!type":"fn() -> !this"},"onCellClick":{"!type":"fn() -> !this"},"onCellContextMenu":{"!type":"fn() -> !this"},"onCellDblClick":{"!type":"fn() -> !this"},"onCellDeselect":{"!type":"fn(position: ?) -> !this"},"onCellKeyDown":{"!type":"fn() -> !this"},"onCellMouseDown":{"!type":"fn() -> !this"},"onCellMouseUp":{"!type":"fn() -> !this"},"onCellSelect":{"!type":"fn(position: ?) -> !this"},"onDataRefresh":{"!type":"fn() -> !this","!doc":"

When there's a buffered renderer present, store refresh events cause TableViews to go to scrollTop:0

\n\n

Defined in override Ext.grid.plugin.BufferedRendererTableView.

\n"},"onDestroy":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the destroy operation.\nAfter calling the superclass's onDestroy, the Component will be destroyed.

\n"},"onIdChanged":{"!type":"fn(store: ?, rec: ?, oldId: ?, newId: ?, oldInternalId: ?) -> !this"},"onRemove":{"!type":"fn(ds: ?, records: ?, indexes: ?) -> !this","!doc":"

after removing a row stripe rows from then on

\n\n

Overridden in Ext.grid.plugin.BufferedRendererTableView.

\n"},"onRowDeselect":{"!type":"fn(rowIdx: ?) -> !this","!doc":"

GridSelectionModel invokes onRowDeselect as selection changes

\n"},"onRowFocus":{"!type":"fn(rowIdx: ?, highlight: ?, supressFocus: ?) -> !this","!doc":"

GridSelectionModel invokes onRowFocus to 'highlight'\nthe last row focused

\n"},"onRowSelect":{"!type":"fn(rowIdx: ?) -> !this","!doc":"

GridSelectionModel invokes onRowSelect as selection changes

\n"},"onUpdate":{"!type":"fn(store: ?, record: ?, operation: ?, changedFieldNames: ?) -> !this","!doc":"

private

\n"},"onViewScroll":{"!type":"fn(e: ?, t: ?) -> !this","!doc":"

Private template method implemented starting at the AbstractView class.

\n"},"processItemEvent":{"!type":"fn(record: ?, row: ?, rowIndex: ?, e: ?) -> !this","!doc":"

Private template method

\n"},"processSpecialEvent":{"!type":"fn(e: ?) -> !this"},"refresh":{"!type":"fn() -> !this","!doc":"

Refreshes the grid view. Sets the sort state and focuses the previously focused row.

\n"},"refreshSize":{"!type":"fn() -> !this","!doc":"

Private. Called when the table changes height.\nFor example, see examples/grid/group-summary-grid.html\nIf we have flexed column headers, we need to update the header layout\nbecause it may have to accommodate (or cease to accommodate) a vertical scrollbar.\nOnly do this on platforms which have a space-consuming scrollbar.\nOnly do it when vertical scrolling is enabled.

\n"},"removeRowCls":{"!type":"fn(rowInfo: +HTMLElement|string|number|+Ext.data.Model, cls: string) -> !this","!doc":"

Removes a CSS Class from a specific row.

\n"},"renderCell":{"!type":"fn(column: +Ext.grid.column.Column, recordIndex: number, columnIndex: number, out: [string]) -> !this","!doc":"

Emits the HTML representing a single grid cell into the passed output stream (which is an array of strings).

\n"},"renderColumnSizer":{"!type":"fn(out: ?) -> !this","!doc":"

Alternative column sizer element renderer.\n renderTHeadColumnSizer: function(out) {\n var columns = this.getGridColumns(),\n len = columns.length, i,\n column, width;

\n\n
   out.push('<thead><tr class=\"' + Ext.baseCSSPrefix + 'grid-header-row\">');\n   for (i = 0; i < len; i++) {\n       column = columns[i];\n       width = column.hidden ? 0 : (column.lastBox ? column.lastBox.width : Ext.grid.header.Container.prototype.defaultWidth);\n       out.push('<th class=\"', Ext.baseCSSPrefix, 'grid-cell-', columns[i].getItemId(), '\" style=\"width:' + width + 'px\"></th>');\n   }\n   out.push('</tr></thead>');\n
\n\n

},

\n"},"renderRow":{"!type":"fn(record: +Ext.data.Model, out?: [string]) -> string","!doc":"

Renders the HTML markup string for a single row into the passed array as a sequence of strings, or\nreturns the HTML markup for a single row.

\n"},"renderRows":{"!type":"fn(rows: ?, viewStartIndex: ?, out: ?) -> !this"},"renderTFoot":{"!type":"fn(values: ?, out: ?) -> !this"},"renderTHead":{"!type":"fn(values: ?, out: ?) -> !this"},"repaintRow":{"!type":"fn(rowIdx: ?) -> !this"},"retrieveNode":{"!type":"fn(id: ?, dataRow: ?) -> !this"},"scrollByDelta":{"!type":"fn(delta: number, dir?: string) -> !this","!doc":"

Scrolls by delta. This affects this individual view ONLY and does not\nsynchronize across views or scrollers.

\n"},"scrollCellIntoView":{"!type":"fn(cell: ?) -> !this"},"scrollRowIntoView":{"!type":"fn(row: ?) -> !this"},"scrollToTop":{"!type":"fn() -> !this","!doc":"

scroll the view to the top

\n"},"setHighlightedItem":{"!type":"fn(item: ?) -> !this"},"shouldUpdateCell":{"!type":"fn(record: ?, column: ?, changedFieldNames: ?) -> !this"},"syncRowHeights":{"!type":"fn(firstRow: ?, secondRow: ?) -> !this"},"tplApplyOut":{"!type":"fn(values: ?, out: ?) -> !this"},"updateColumns":{"!type":"fn(record: ?, oldRowDom: ?, newRowDom: ?, columns: ?, changedFieldNames: ?) -> !this"},"updateIndexes":{"!type":"fn() -> !this","!doc":"

Links back from grid rows are installed by the XTemplate as data attributes

\n"},"walkCells":{"!type":"fn(position: ?, direction: string, e: +Ext.EventObject, preventWrap: bool, verifierFn: fn(), scope: ?) -> +Ext.grid.CellContext"},"walkRecs":{"!type":"fn(startRec: +Ext.data.Model, distance: number) -> !this","!doc":"

Navigates from the passed record by the passed increment which may be +ve or -ve

\n\n

Skips hidden records.

\n\n

If no record is visible in the specified direction, returns the starting record index unchanged.

\n"},"walkRows":{"!type":"fn(startRow: number, distance: number) -> !this","!doc":"

Increments the passed row index by the passed increment which may be +ve or -ve

\n\n

Skips hidden rows.

\n\n

If no row is visible in the specified direction, returns the input row index unchanged.

\n"},"beforecellclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell click is processed. Return false to cancel the default action.

\n"},"beforecellcontextmenu":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell right click is processed. Return false to cancel the default action.

\n"},"beforecelldblclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell double click is processed. Return false to cancel the default action.

\n"},"beforecellkeydown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell key down is processed. Return false to cancel the default action.

\n"},"beforecellmousedown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell mouse down is processed. Return false to cancel the default action.

\n"},"beforecellmouseup":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired before the cell mouse up is processed. Return false to cancel the default action.

\n"},"cellclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when table cell is clicked.

\n"},"cellcontextmenu":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when table cell is right clicked.

\n"},"celldblclick":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when table cell is double clicked.

\n"},"cellkeydown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when the keydown event is captured on the cell.

\n"},"cellmousedown":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when the mousedown event is captured on the cell.

\n"},"cellmouseup":{"!type":"fn(this: +Ext.view.Table, td: +HTMLElement, cellIndex: number, record: +Ext.data.Model, tr: +HTMLElement, rowIndex: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fired when the mouseup event is captured on the cell.

\n"}},"getBoundView":{"!type":"fn(node: ?) -> !this"}},"TableLayout":{"!doc":"

Component layout for Ext.view.Table

\n","!type":"fn(config: Ext_view_TableLayout_cfg)","prototype":{"!proto":"Ext.layout.component.Auto.prototype","type":{"!type":"string","!doc":"

End Definitions

\n"},"beginLayout":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called before any calculation cycles to prepare for layout.

\n\n

This is a write phase and DOM reads should be strictly avoided when overridding\nthis method.

\n"},"calculate":{"!type":"fn(ownerContext: ?) -> !this","!doc":"

Called to perform the calculations for this layout. This method will be called at\nleast once and may be called repeatedly if the done property is cleared\nbefore return to indicate that this layout is not yet done. The done property\nis always set to true before entering this method.

\n\n

This is a read phase and DOM writes should be strictly avoided in derived classes.\nInstead, DOM writes need to be written to Ext.layout.ContextItem objects to\n be flushed at the next opportunity.

\n"},"finishedLayout":{"!type":"fn() -> !this","!doc":"

This method is called after all layouts are complete and their calculations flushed\nto the DOM. No further layouts will be run and this method is only called once per\nlayout run. The base component layout caches lastComponentSize.

\n\n

This is a write phase and DOM reads should be avoided if possible when overridding\nthis method.

\n\n

This method need not be implemented by derived classes and, in fact, should only be\nimplemented when needed.

\n"},"measureContentHeight":{"!type":"fn(ownerContext: ?) -> !this"},"setColumnWidths":{"!type":"fn(ownerContext: ?) -> !this"}}},"View":{"!doc":"

A mechanism for displaying data using custom layout templates and formatting.

\n\n

The View uses an Ext.XTemplate as its internal templating mechanism, and is bound to an\nExt.data.Store so that as the data in the store changes the view is automatically updated\nto reflect the changes. The view also provides built-in behavior for many common events that can\noccur for its contained items including click, doubleclick, mouseover, mouseout, etc. as well as a\nbuilt-in selection model. In order to use these features, an itemSelector config must\nbe provided for the View to determine what nodes it will be working with.

\n\n

The example below binds a View to a Ext.data.Store and renders it into an Ext.panel.Panel.

\n\n
Ext.define('Image', {\n    extend: 'Ext.data.Model',\n    fields: [\n        { name:'src', type:'string' },\n        { name:'caption', type:'string' }\n    ]\n});\n\nExt.create('Ext.data.Store', {\n    id:'imagesStore',\n    model: 'Image',\n    data: [\n        { src:'http://www.sencha.com/img/20110215-feat-drawing.png', caption:'Drawing & Charts' },\n        { src:'http://www.sencha.com/img/20110215-feat-data.png', caption:'Advanced Data' },\n        { src:'http://www.sencha.com/img/20110215-feat-html5.png', caption:'Overhauled Theme' },\n        { src:'http://www.sencha.com/img/20110215-feat-perf.png', caption:'Performance Tuned' }\n    ]\n});\n\nvar imageTpl = new Ext.XTemplate(\n    '<tpl for=\".\">',\n        '<div style=\"margin-bottom: 10px;\" class=\"thumb-wrap\">',\n          '<img src=\"{src}\" />',\n          '<br/><span>{caption}</span>',\n        '</div>',\n    '</tpl>'\n);\n\nExt.create('Ext.view.View', {\n    store: Ext.data.StoreManager.lookup('imagesStore'),\n    tpl: imageTpl,\n    itemSelector: 'div.thumb-wrap',\n    emptyText: 'No images available',\n    renderTo: Ext.getBody()\n});\n
\n","!type":"fn(config: +Ext.Element|string|Ext_view_View_cfg)","prototype":{"!proto":"Ext.view.AbstractView.prototype","mouseOverOutBuffer":{"!type":"number","!doc":"

The number of milliseconds to buffer mouseover and mouseout event handling on view items.

\n\n

Configure this as false to process mouseover and mouseout events immediately.

\n"},"deferHighlight":{"!type":"?","!doc":"

private delay to buffer row highlighting/unhighlighting on mouse move.\nThis is ignored if the public mouseOverOutBuffer remains a non-zero value

\n"},"inputTagRe":{"!type":"+RegExp"},"addCmpEvents":{"!type":"fn() -> !this"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"clearHighlight":{"!type":"fn() -> !this","!doc":"

Un-highlights the currently highlighted item, if any.

\n"},"focusNode":{"!type":"fn(rec: +Ext.data.Model) -> !this","!doc":"

Focuses a node in the view.

\n"},"getFocusEl":{"!type":"fn() -> +undefined","!doc":"

Returns the focus holder element associated with this Component. At the Component base class level, this function returns undefined.

\n\n

Subclasses which use embedded focusable elements (such as Window, Field and Button) should override this\nfor use by the focus method.

\n\n

Containers which need to participate in the FocusManager's navigation and Container focusing scheme also\nneed to return a focusEl, although focus is only listened for in this case if the FocusManager is enabled.

\n"},"handleEvent":{"!type":"fn(e: ?) -> !this"},"handleMouseOverOrOut":{"!type":"fn(e: ?) -> !this"},"highlightItem":{"!type":"fn(item: +HTMLElement) -> !this","!doc":"

Highlights a given item in the View. This is called by the mouseover handler if overItemCls\nand trackOver are configured, but can also be called manually by other code, for instance to\nhandle stepping through the list via keyboard navigation.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

private

\n"},"onBeforeContainerClick":{"!type":"fn() -> !this"},"onBeforeContainerContextMenu":{"!type":"fn() -> !this"},"onBeforeContainerDblClick":{"!type":"fn() -> !this"},"onBeforeContainerKeyDown":{"!type":"fn() -> !this"},"onBeforeContainerMouseDown":{"!type":"fn() -> !this"},"onBeforeContainerMouseOut":{"!type":"fn() -> !this"},"onBeforeContainerMouseOver":{"!type":"fn() -> !this"},"onBeforeContainerMouseUp":{"!type":"fn() -> !this"},"onBeforeItemClick":{"!type":"fn() -> !this"},"onBeforeItemContextMenu":{"!type":"fn() -> !this"},"onBeforeItemDblClick":{"!type":"fn() -> !this"},"onBeforeItemFocus":{"!type":"fn() -> !this"},"onBeforeItemKeyDown":{"!type":"fn() -> !this"},"onBeforeItemMouseDown":{"!type":"fn() -> !this"},"onBeforeItemMouseEnter":{"!type":"fn() -> !this"},"onBeforeItemMouseLeave":{"!type":"fn() -> !this"},"onBeforeItemMouseUp":{"!type":"fn() -> !this"},"onContainerClick":{"!type":"fn() -> !this"},"onContainerContextMenu":{"!type":"fn() -> !this"},"onContainerDblClick":{"!type":"fn() -> !this"},"onContainerKeyDown":{"!type":"fn() -> !this"},"onContainerMouseDown":{"!type":"fn() -> !this","!doc":"

private, template methods

\n"},"onContainerMouseOut":{"!type":"fn() -> !this"},"onContainerMouseOver":{"!type":"fn() -> !this"},"onContainerMouseUp":{"!type":"fn() -> !this"},"onItemClick":{"!type":"fn() -> !this"},"onItemContextMenu":{"!type":"fn() -> !this"},"onItemDblClick":{"!type":"fn() -> !this"},"onItemFocus":{"!type":"fn() -> !this"},"onItemKeyDown":{"!type":"fn() -> !this"},"onItemMouseDown":{"!type":"fn() -> !this","!doc":"

private, template methods

\n"},"onItemMouseEnter":{"!type":"fn(record: ?, item: ?, index: ?, e: ?) -> !this"},"onItemMouseLeave":{"!type":"fn(record: ?, item: ?, index: ?, e: ?) -> !this"},"onItemMouseUp":{"!type":"fn() -> !this"},"onMouseOverOut":{"!type":"fn(e: ?) -> !this"},"onUpdate":{"!type":"fn(store: ?, record: ?) -> !this","!doc":"

private

\n"},"processContainerEvent":{"!type":"fn() -> !this"},"processItemEvent":{"!type":"fn() -> !this","!doc":"

Private template method

\n"},"processSpecialEvent":{"!type":"fn() -> !this"},"processUIEvent":{"!type":"fn(e: ?) -> !this"},"refresh":{"!type":"fn() -> !this","!doc":"

Refreshes the view by reloading the data from the store and re-rendering the template.

\n"},"setHighlightedItem":{"!type":"fn(item: ?) -> !this"},"beforecontainerclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the click event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainercontextmenu":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the contextmenu event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainerdblclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the dblclick event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainerkeydown":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the keydown event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermousedown":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mousedown event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermouseout":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseout event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermouseover":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseover event on the container is processed. Returns false to cancel the default action.

\n"},"beforecontainermouseup":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseup event on the container is processed. Returns false to cancel the default action.

\n"},"beforedeselect":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired before a record is deselected. If any listener returns false, the\ndeselection is cancelled.

\n"},"beforeitemclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the click event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemcontextmenu":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the contextmenu event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemdblclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the dblclick event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemkeydown":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the keydown event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmousedown":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mousedown event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmouseenter":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseenter event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmouseleave":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseleave event on an item is processed. Returns false to cancel the default action.

\n"},"beforeitemmouseup":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires before the mouseup event on an item is processed. Returns false to cancel the default action.

\n"},"beforeselect":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired before a record is selected. If any listener returns false, the\nselection is cancelled.

\n"},"containerclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the container is clicked.

\n"},"containercontextmenu":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the container is right clicked.

\n"},"containerdblclick":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the container is double clicked.

\n"},"containerkeydown":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a key is pressed while the container is focused, and no item is currently selected.

\n"},"containermouseout":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when you move the mouse out of the container.

\n"},"containermouseover":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when you move the mouse over the container.

\n"},"containermouseup":{"!type":"fn(this: +Ext.view.View, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when there is a mouse up on the container

\n"},"deselect":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired after a record is deselected

\n"},"focuschange":{"!type":"fn(this: +Ext.selection.Model, oldFocused: +Ext.data.Model, newFocused: +Ext.data.Model, eOpts: ?)","!doc":"

Fired when a row is focused

\n"},"highlightitem":{"!type":"fn(view: +Ext.view.View, node: +Ext.Element, eOpts: ?)","!doc":"

Fires when a node is highlighted using keyboard navigation, or mouseover.

\n"},"itemclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when an item is clicked.

\n"},"itemcontextmenu":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when an item is right clicked.

\n"},"itemdblclick":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when an item is double clicked.

\n"},"itemkeydown":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when a key is pressed while an item is currently selected.

\n"},"itemmousedown":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when there is a mouse down on an item

\n"},"itemmouseenter":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse enters an item.

\n"},"itemmouseleave":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when the mouse leaves an item.

\n"},"itemmouseup":{"!type":"fn(this: +Ext.view.View, record: +Ext.data.Model, item: +HTMLElement, index: number, e: +Ext.EventObject, eOpts: ?)","!doc":"

Fires when there is a mouse up on an item

\n"},"select":{"!type":"fn(this: +Ext.selection.DataViewModel, record: +Ext.data.Model, eOpts: ?)","!doc":"

Fired after a record is selected

\n"},"selectionchange":{"!type":"fn(this: +Ext.selection.Model, selected: [+Ext.data.Model], eOpts: ?)","!doc":"

Fired after a selection change has occurred

\n"},"unhighlightitem":{"!type":"fn(view: +Ext.view.View, node: +Ext.Element, eOpts: ?)","!doc":"

Fires when a node is unhighlighted using keyboard navigation, or mouseout.

\n"}},"EventMap":{"!type":"?"}}},"window":{"MessageBox":{"!doc":"

Utility class for generating different styles of message boxes. The singleton instance, Ext.MessageBox\nalias Ext.Msg can also be used.

\n\n

Note that a MessageBox is asynchronous. Unlike a regular JavaScript alert (which will halt\nbrowser execution), showing a MessageBox will not cause the code to stop. For this reason, if you have code\nthat should only run after some user feedback from the MessageBox, you must use a callback function\n(see the function parameter for show for more details).

\n\n

Basic alert

\n\n
Ext.Msg.alert('Status', 'Changes saved successfully.');\n
\n\n

Prompt for user data and process the result using a callback

\n\n
Ext.Msg.prompt('Name', 'Please enter your name:', function(btn, text){\n    if (btn == 'ok'){\n        // process text value and close...\n    }\n});\n
\n\n

Show a dialog using config options

\n\n
Ext.Msg.show({\n     title:'Save Changes?',\n     msg: 'You are closing a tab that has unsaved changes. Would you like to save your changes?',\n     buttons: Ext.Msg.YESNOCANCEL,\n     icon: Ext.Msg.QUESTION\n});\n
\n","!type":"fn(cfg: ?)","prototype":{"!proto":"Ext.window.Window.prototype","closeAction":{"!type":"string","!doc":"

The action to take when the close header tool is clicked:

\n\n\n\n\n

Note: This behavior has changed! setting does affect the close method which will invoke the\napproriate closeAction.

\n"},"cls":{"!type":"string","!doc":"

An optional extra CSS class that will be added to this component's Element. This can be useful\nfor adding customized styles to the component or any of its children using standard CSS rules.

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the window within its containing element, false to allow it to fall outside of its containing\nelement. By default the window will be rendered to document.body. To render and constrain the window within\nanother element specify renderTo. Optionally the header only can be constrained\nusing constrainHeader.

\n"},"hideMode":{"!type":"string","!doc":"

hide it by offsets. Windows are hidden on render by default.

\n"},"layout":{"!type":"+Ext.enums.Layout|?","!doc":"

Important: In order for child items to be correctly sized and\npositioned, typically a layout manager must be specified through\nthe layout configuration option.

\n\n

The sizing and positioning of child items is the responsibility of\nthe Container's layout manager which creates and manages the type of layout\nyou have in mind. For example:

\n\n

If the layout configuration is not explicitly specified for\na general purpose container (e.g. Container or Panel) the\ndefault layout manager will be used\nwhich does nothing but render child components sequentially into the\nContainer (no sizing or positioning will be performed in this situation).

\n\n

layout may be specified as either as an Object or as a String:

\n\n

Specify as an Object

\n\n

Example usage:

\n\n
layout: {\n    type: 'vbox',\n    align: 'left'\n}\n
\n\n\n\n\n

Specify as a String

\n\n

Example usage:

\n\n
layout: 'vbox'\n
\n\n\n\n\n

Configuring the default layout type

\n\n

If a certain Container class has a default layout (For example a Toolbar\nwith a default Box layout), then to simply configure the default layout,\nuse an object, but without the type property:

\n\n
xtype: 'toolbar',\nlayout: {\n    pack: 'center'\n}\n
\n"},"maxHeight":{"!type":"number","!doc":"

The maximum value in pixels which this Component will set its height to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"maxWidth":{"!type":"number","!doc":"

The maximum value in pixels which this Component will set its width to.

\n\n

Warning: This will override any size management applied by layout managers.

\n"},"minHeight":{"!type":"number","!doc":"

inherit docs

\n"},"minWidth":{"!type":"number","!doc":"

Forcibly set these to null on the prototype to override anything set higher in\nthe hierarchy

\n"},"resizable":{"!type":"bool|?","!doc":"

Specify as true to allow user resizing at each edge and corner of the window, false to disable resizing.

\n\n

This may also be specified as a config object to Ext.resizer.Resizer

\n"},"shrinkWrapDock":{"!type":"bool|number","!doc":"

We want to shrinkWrap around all docked items

\n"},"title":{"!type":"string","!doc":"

The title text to be used to display in the panel header. When a\ntitle is specified the Ext.panel.Header will automatically be created and displayed unless\nheader is set to false.

\n"},"CANCEL":{"!type":"number","!doc":"

Button config that displays a single Cancel button

\n"},"ERROR":{"!type":"string","!doc":"

The CSS class that provides the ERROR icon image

\n"},"INFO":{"!type":"string","!doc":"

The CSS class that provides the INFO icon image

\n"},"NO":{"!type":"number","!doc":"

Button config that displays a single No button

\n"},"OK":{"!type":"number","!doc":"

Button config that displays a single OK button

\n"},"OKCANCEL":{"!type":"number","!doc":"

Button config that displays OK and Cancel buttons

\n"},"QUESTION":{"!type":"string","!doc":"

The CSS class that provides the QUESTION icon image

\n"},"WARNING":{"!type":"string","!doc":"

The CSS class that provides the WARNING icon image

\n"},"YES":{"!type":"number","!doc":"

Button config that displays a single Yes button

\n"},"YESNO":{"!type":"number","!doc":"

Button config that displays Yes and No buttons

\n"},"YESNOCANCEL":{"!type":"number","!doc":"

Button config that displays Yes, No and Cancel buttons

\n"},"buttonIds":{"!type":"[?]","!doc":"

\n"},"buttonText":{"!type":"?","!doc":"

An object containing the default button text strings that can be overriden for localized language support.\nSupported properties are: ok, cancel, yes and no. Generally you should include a locale-specific\nresource file for handling language support across the framework.\nCustomize the default text like so:

\n\n
Ext.window.MessageBox.buttonText.yes = \"oui\"; //french\n
\n"},"defaultMaxHeight":{"!type":"number"},"defaultMaxWidth":{"!type":"number"},"defaultMinHeight":{"!type":"number"},"defaultMinWidth":{"!type":"number"},"defaultTextHeight":{"!type":"number","!doc":"

The default height in pixels of the message box's multiline textarea if displayed.

\n"},"iconHeight":{"!type":"number","!doc":"

\n"},"iconWidth":{"!type":"number"},"minProgressWidth":{"!type":"number","!doc":"

The minimum width in pixels of the message box if it is a progress-style dialog. This is useful\nfor setting a different minimum width than text-only dialogs may need.

\n"},"minPromptWidth":{"!type":"number","!doc":"

The minimum width in pixels of the message box if it is a prompt dialog. This is useful\nfor setting a different minimum width than text-only dialogs may need.

\n"},"titleText":{"!type":"?","!doc":"

\n"},"alert":{"!type":"fn(title: string, msg: string, fn?: fn(), scope?: ?) -> +Ext.window.MessageBox","!doc":"

Displays a standard read-only message box with an OK button (comparable to the basic JavaScript alert prompt).\nIf a callback function is passed it will be called after the user clicks the button, and the\nid of the button that was clicked will be passed as the only parameter to the callback\n(could also be the top-right close button, which will always report as \"cancel\").

\n"},"btnCallback":{"!type":"fn(btn: ?) -> !this"},"confirm":{"!type":"fn(title: string, msg: string, fn?: fn(), scope?: ?) -> +Ext.window.MessageBox","!doc":"

Displays a confirmation message box with Yes and No buttons (comparable to JavaScript's confirm).\nIf a callback function is passed it will be called after the user clicks either button,\nand the id of the button that was clicked will be passed as the only parameter to the callback\n(could also be the top-right close button, which will always report as \"cancel\").

\n"},"hide":{"!type":"fn() -> +Ext.Component","!doc":"

Hides this Component, setting it to invisible using the configured hideMode.

\n"},"initComponent":{"!type":"fn(cfg: ?) -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"makeButton":{"!type":"fn(btnIdx: ?) -> !this"},"onClose":{"!type":"fn() -> !this"},"onEsc":{"!type":"fn() -> !this"},"onPromptKey":{"!type":"fn(textField: ?, e: ?) -> !this"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"progress":{"!type":"fn(title: string, msg: string, progressText?: string) -> +Ext.window.MessageBox","!doc":"

Displays a message box with a progress bar.

\n\n

You are responsible for updating the progress bar as needed via updateProgress\nand closing the message box when the process is complete.

\n"},"prompt":{"!type":"fn(title: string, msg: string, fn?: fn(), scope?: ?, multiline?: bool|number, value?: string) -> +Ext.window.MessageBox","!doc":"

Displays a message box with OK and Cancel buttons prompting the user to enter some text (comparable to JavaScript's prompt).\nThe prompt can be a single-line or multi-line textbox. If a callback function is passed it will be called after the user\nclicks either button, and the id of the button that was clicked (could also be the top-right\nclose button, which will always report as \"cancel\") and the text that was entered will be passed as the two parameters to the callback.

\n"},"reconfigure":{"!type":"fn(cfg: ?) -> !this"},"setIcon":{"!type":"fn(icon: string, width?: number, height?: number) -> +Ext.window.MessageBox","!doc":"

Adds the specified icon to the dialog. By default, the class 'x-messagebox-icon' is applied for default\nstyling, and the class passed in is expected to supply the background image url. Pass in empty string ('')\nto clear any existing icon. This method must be called before the MessageBox is shown.\nThe following built-in icon classes are supported, but you can also pass in a custom class name:

\n\n
Ext.window.MessageBox.INFO\nExt.window.MessageBox.WARNING\nExt.window.MessageBox.QUESTION\nExt.window.MessageBox.ERROR\n
\n"},"show":{"!type":"fn(config: ?) -> +Ext.window.MessageBox","!doc":"

Displays a new message box, or reinitializes an existing message box, based on the config options passed in. All\ndisplay functions (e.g. prompt, alert, etc.) on MessageBox call this function internally, although those calls\nare basic shortcuts and do not support all of the config options allowed here.

\n\n

Example usage:

\n\n
Ext.Msg.show({\n    title: 'Address',\n    msg: 'Please enter your address:',\n    width: 300,\n    buttons: Ext.Msg.OKCANCEL,\n    multiline: true,\n    fn: saveAddress,\n    animateTarget: 'addAddressBtn',\n    icon: Ext.window.MessageBox.INFO\n});\n
\n"},"updateButtonText":{"!type":"fn() -> number","!doc":"

Set button text according to current buttonText property object

\n"},"updateProgress":{"!type":"fn(value?: number, progressText?: string, msg?: string) -> +Ext.window.MessageBox","!doc":"

Updates a progress-style message box's text and progress bar. Only relevant on message boxes\ninitiated via progress or wait,\nor by calling show with progress: true.

\n"},"updateText":{"!type":"fn(text: ?) -> !this"},"wait":{"!type":"fn(msg: string, title?: string, config?: ?) -> +Ext.window.MessageBox","!doc":"

Displays a message box with an infinitely auto-updating progress bar. This can be used to block user\ninteraction while waiting for a long-running process to complete that does not have defined intervals.\nYou are responsible for closing the message box when the process is complete.

\n"}}},"Window":{"!doc":"

A specialized panel intended for use as an application window. Windows are floated, resizable, and\ndraggable by default. Windows can be maximized to fill the viewport, restored to\ntheir prior size, and can be minimized.

\n\n

Windows can also be linked to a Ext.ZIndexManager or managed by the Ext.WindowManager to provide\ngrouping, activation, to front, to back and other application-specific behavior.

\n\n

By default, Windows will be rendered to document.body. To constrain a Window to another element specify\nrenderTo.

\n\n

As with all Containers, it is important to consider how you want the Window to size\nand arrange any child Components. Choose an appropriate layout configuration which lays out child Components\nin the required manner.

\n\n
Ext.create('Ext.window.Window', {\n    title: 'Hello',\n    height: 200,\n    width: 400,\n    layout: 'fit',\n    items: {  // Let's put an empty grid in just to illustrate fit layout\n        xtype: 'grid',\n        border: false,\n        columns: [{header: 'World'}],                 // One header just for show. There's no data,\n        store: Ext.create('Ext.data.ArrayStore', {}) // A dummy empty data store\n    }\n}).show();\n
\n","!type":"fn(config: +Ext.Element|string|Ext_window_Window_cfg)","prototype":{"!proto":"Ext.panel.Panel.prototype","animateTarget":{"!type":"string|+Ext.Element","!doc":"

Id or element from which the window should animate while opening.

\n"},"autoRender":{"!type":"bool","!doc":"

Windows render to the body on first show.

\n"},"baseCls":{"!type":"string","!doc":"

The base CSS class to apply to this panel's element.

\n"},"closable":{"!type":"bool","!doc":"

True to display the 'close' tool button and allow the user to close the window, false to hide the button and\ndisallow closing the window.

\n\n

By default, when close is requested by either clicking the close button in the header or pressing ESC when the\nWindow has focus, the close method will be called. This will destroy the\nWindow and its content meaning that it may not be reused.

\n\n

To make closing a Window hide the Window so that it may be reused, set closeAction to 'hide'.

\n"},"collapsed":{"!type":"bool","!doc":"

True to render the window collapsed, false to render it expanded. Note that if expandOnShow\nis true (the default) it will override the collapsed config and the window will always be\nexpanded when shown.

\n"},"collapsible":{"!type":"bool","!doc":"

inherited docs, same default

\n"},"constrain":{"!type":"bool","!doc":"

True to constrain the window within its containing element, false to allow it to fall outside of its containing\nelement. By default the window will be rendered to document.body. To render and constrain the window within\nanother element specify renderTo. Optionally the header only can be constrained\nusing constrainHeader.

\n"},"constrainHeader":{"!type":"bool","!doc":"

True to constrain the window header within its containing element (allowing the window body to fall outside of\nits containing element) or false to allow the header to fall outside its containing element.\nOptionally the entire window can be constrained using constrain.

\n"},"defaultFocus":{"!type":"string|number|+Ext.Component","!doc":"

Specifies a Component to receive focus when this Window is focused.

\n\n

This may be one of:

\n\n\n\n"},"draggable":{"!type":"bool","!doc":"

True to allow the window to be dragged by the header bar, false to disable dragging. Note that\nby default the window will be centered in the viewport, so if dragging is disabled the window may need to be\npositioned programmatically after render (e.g., myWindow.setPosition(100, 100);).

\n"},"expandOnShow":{"!type":"bool","!doc":"

True to always expand the window when it is displayed, false to keep it in its current state (which may be\ncollapsed) when displayed.

\n"},"ghost":{"!type":"bool|fn()","!doc":"

Set to false to disable the ghost panel during dragging the window.\nDo note that you should not set this to true, by default it is a function.

\n"},"hidden":{"!type":"bool","!doc":"

Render this Window hidden. If true, the hide method will be called internally.

\n"},"hideMode":{"!type":"string","!doc":"

Windows hide using offsets in order to preserve the scroll positions of their descendants.

\n"},"hideShadowOnDeactivate":{"!type":"bool","!doc":"

True to hide this Window's shadow when another floating item in the same z-index stack is activated.

\n"},"maximizable":{"!type":"bool","!doc":"

True to display the 'maximize' tool button and allow the user to maximize the window, false to hide the button\nand disallow maximizing the window. Note that when a window is maximized, the tool button\nwill automatically change to a 'restore' button with the appropriate behavior already built-in that will restore\nthe window to its previous size.

\n"},"maximized":{"!type":"bool","!doc":"

True to initially display the window in a maximized state.

\n"},"minHeight":{"!type":"number","!doc":"

inherit docs

\n"},"minWidth":{"!type":"number","!doc":"

inherit docs

\n"},"minimizable":{"!type":"bool","!doc":"

True to display the 'minimize' tool button and allow the user to minimize the window, false to hide the button\nand disallow minimizing the window. Note that this button provides no implementation -- the\nbehavior of minimizing a window is implementation-specific, so the minimize event must be handled and a custom\nminimize behavior implemented for this option to be useful.

\n"},"modal":{"!type":"bool","!doc":"

True to make the window modal and mask everything behind it when displayed, false to display it without\nrestricting access to other UI elements.

\n"},"onEsc":{"!type":"fn(k: ?, e: ?) -> !this"},"overlapHeader":{"!type":"bool","!doc":"

True to overlap the header in a panel over the framing of the panel itself. This is needed when frame:true (and\nis done automatically for you). Otherwise it is undefined. If you manually add rounded corners to a panel header\nwhich does not have frame:true, this will need to be set to true.

\n"},"plain":{"!type":"bool","!doc":"

True to render the window body with a transparent background so that it will blend into the framing elements,\nfalse to add a lighter background color to visually highlight the body element and separate it more distinctly\nfrom the surrounding frame.

\n"},"resizable":{"!type":"bool|?","!doc":"

Specify as true to allow user resizing at each edge and corner of the window, false to disable resizing.

\n\n

This may also be specified as a config object to Ext.resizer.Resizer

\n"},"x":{"!type":"number","!doc":"

The X position of the left edge of the window on initial showing. Defaults to centering the Window within the\nwidth of the Window's container Element (The Element that the Window is rendered to).

\n"},"y":{"!type":"number","!doc":"

The Y position of the top edge of the window on initial showing. Defaults to centering the Window within the\nheight of the Window's container Element (The Element that the Window is rendered to).

\n"},"alwaysFramed":{"!type":"bool","!doc":"

Flag to Renderable to always look up the framing styles for this Component

\n"},"dd":{"!type":"+Ext.util.ComponentDragger","!doc":"

If this Window is configured draggable, this property will contain an instance of\nExt.util.ComponentDragger (A subclass of DragTracker) which handles dragging\nthe Window's DOM Element, and constraining according to the constrain and constrainHeader .

\n\n

This has implementations of onBeforeStart, onDrag and onEnd which perform the dragging action. If\nextra logic is needed at these points, use createInterceptor or\ncreateSequence to augment the existing implementations.

\n"},"floating":{"!type":"bool","!doc":"

A Window is always floating.

\n"},"ignoreHeaderBorderManagement":{"!type":"bool"},"initialAlphaNum":{"!type":"+RegExp"},"isRootCfg":{"!type":"?","!doc":"

Buffer this so we don't recreate the same object

\n"},"isWindow":{"!type":"bool","!doc":"

true in this class to identify an object as an instantiated Window, or subclass thereof.

\n"},"itemCls":{"!type":"string"},"addTools":{"!type":"fn() -> !this","!doc":"

Contribute class-specific tools to the header.\nCalled by Panel's initTools.

\n"},"afterCollapse":{"!type":"fn() -> !this","!doc":"

Invoked after the Panel is Collapsed.

\n"},"afterExpand":{"!type":"fn() -> !this","!doc":"

Invoked after the Panel is Expanded.

\n"},"afterHide":{"!type":"fn() -> !this","!doc":"

Invoked after the Component has been hidden.

\n\n

Gets passed the same callback and scope parameters that onHide received.

\n"},"afterRender":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior after rendering is complete. At this stage the Component’s Element\nwill have been styled according to the configuration, will have had any configured CSS class\nnames added, and will be in the configured visibility and the configured enable state.

\n"},"applyState":{"!type":"fn(state: ?) -> !this","!doc":"

Applies the state to the object. This should be overridden in subclasses to do\nmore complex state operations. By default it applies the state properties onto\nthe current object.

\n"},"beforeDestroy":{"!type":"fn() -> !this","!doc":"

Invoked before the Component is destroyed.

\n"},"doClose":{"!type":"fn() -> !this"},"getDefaultFocus":{"!type":"fn() -> !this","!doc":"

Gets the configured default focus item. If a defaultFocus is set, it will\nreceive focus when the Window's focus method is called, otherwise the\nWindow itself will receive focus.

\n"},"getElConfig":{"!type":"fn() -> !this"},"getFocusEl":{"!type":"fn() -> +Ext.Element|+Ext.Component","!doc":"

Returns the focus holder element associated with this Window. By default, this is the Window's element.

\n"},"getState":{"!type":"fn() -> ?","!doc":"

The supplied default state gathering method for the AbstractComponent class.

\n\n

This method returns dimension settings such as flex, anchor, width and height along with collapsed\nstate.

\n\n

Subclasses which implement more complex state should call the superclass's implementation, and apply their state\nto the result if this basic state is to be saved.

\n\n

Note that Component state will only be saved if the Component has a stateId and there as a StateProvider\nconfigured for the document.

\n"},"initComponent":{"!type":"fn() -> !this","!doc":"

The initComponent template method is an important initialization step for a Component. It is intended to be\nimplemented by each subclass of Ext.Component to provide any needed constructor logic. The\ninitComponent method of the class being created is called first, with each initComponent method\nup the hierarchy to Ext.Component being called thereafter. This makes it easy to implement and,\nif needed, override the constructor logic of the Component at any step in the hierarchy.

\n\n

The initComponent method must contain a call to callParent in order\nto ensure that the parent class' initComponent method is also called.

\n\n

All config options passed to the constructor are applied to this before initComponent is called,\nso you can simply access them with this.someOption.

\n\n

The following example demonstrates using a dynamic string for the text of a button at the time of\ninstantiation of the class.

\n\n
Ext.define('DynamicButtonText', {\n    extend: 'Ext.button.Button',\n\n    initComponent: function() {\n        this.text = new Date();\n        this.renderTo = Ext.getBody();\n        this.callParent();\n    }\n});\n\nExt.onReady(function() {\n    Ext.create('DynamicButtonText');\n});\n
\n"},"initDraggable":{"!type":"fn() -> !this","!doc":"

Override. Windows are always simple draggable, they do not use Ext.Panel.DDs\nThe dd property in a Window is always a ComponentDragger

\n"},"initResizable":{"!type":"fn() -> !this"},"maximize":{"!type":"fn(this: +Ext.window.Window, eOpts: ?)","!doc":"

Fires after the window has been maximized.

\n"},"minimize":{"!type":"fn(this: +Ext.window.Window, eOpts: ?)","!doc":"

Fires after the window has been minimized.

\n"},"onFocus":{"!type":"fn() -> !this","!doc":"

Called when a Component's focusEl receives focus.\nIf there is a valid default focus Component to jump to, focus that,\notherwise continue as usual, focus this Component.

\n"},"onRender":{"!type":"fn(ct: ?, position: ?) -> !this","!doc":"

Template method called when this Component's DOM structure is created.

\n\n

At this point, this Component's (and all descendants') DOM structure exists but it has not\nbeen layed out (positioned and sized).

\n\n

Subclasses which override this to gain access to the structure at render time should\ncall the parent class's method before attempting to access any child elements of the Component.

\n"},"onShow":{"!type":"fn() -> !this","!doc":"

Allows addition of behavior to the show operation. After\ncalling the superclass's onShow, the Component will be visible.

\n\n

Override in subclasses where more complex behaviour is needed.

\n\n

Gets passed the same parameters as show.

\n"},"onWindowResize":{"!type":"fn() -> !this"},"restore":{"!type":"fn(this: +Ext.window.Window, eOpts: ?)","!doc":"

Fires after the window has been restored to its original size after being maximized.

\n"},"resumeHeaderLayout":{"!type":"fn(changed: ?) -> !this"},"syncMonitorWindowResize":{"!type":"fn() -> !this","!doc":"

Synchronizes the presence of our listener for window resize events. This method\nshould be called whenever this status might change.

\n"},"toggleMaximize":{"!type":"fn() -> +Ext.window.Window","!doc":"

A shortcut method for toggling between maximize and restore based on the current maximized\nstate of the window.

\n"},"activate":{"!type":"fn(this: +Ext.window.Window, eOpts: ?)","!doc":"

Fires after the window has been visually activated via setActive.

\n"},"deactivate":{"!type":"fn(this: +Ext.window.Window, eOpts: ?)","!doc":"

Fires after the window has been visually deactivated via setActive.

\n"},"resize":{"!type":"fn(this: +Ext.window.Window, width: number, height: number, eOpts: ?)","!doc":"

Fires after the window has been resized.

\n"}}}}}}; });