extjs-rails 4.1.0.alpha1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +18 -0
- data/Gemfile +4 -0
- data/LICENSE +36 -0
- data/README.md +29 -0
- data/Rakefile +2 -0
- data/app/assets/javascripts/extjs-rails/extjs-rails.js +1 -0
- data/app/assets/javascripts/extjs-rails/index.js.erb +9 -0
- data/app/assets/javascripts/extjs-rails/sdk.jsb3 +2017 -0
- data/app/assets/javascripts/extjs-rails/src/AbstractComponent.js +3290 -0
- data/app/assets/javascripts/extjs-rails/src/AbstractManager.js +144 -0
- data/app/assets/javascripts/extjs-rails/src/AbstractPlugin.js +72 -0
- data/app/assets/javascripts/extjs-rails/src/Action.js +276 -0
- data/app/assets/javascripts/extjs-rails/src/Ajax.js +99 -0
- data/app/assets/javascripts/extjs-rails/src/Component.js +1344 -0
- data/app/assets/javascripts/extjs-rails/src/ComponentLoader.js +202 -0
- data/app/assets/javascripts/extjs-rails/src/ComponentManager.js +47 -0
- data/app/assets/javascripts/extjs-rails/src/ComponentQuery.js +521 -0
- data/app/assets/javascripts/extjs-rails/src/Editor.js +494 -0
- data/app/assets/javascripts/extjs-rails/src/ElementLoader.js +404 -0
- data/app/assets/javascripts/extjs-rails/src/FocusManager.js +712 -0
- data/app/assets/javascripts/extjs-rails/src/Img.js +111 -0
- data/app/assets/javascripts/extjs-rails/src/Layer.js +543 -0
- data/app/assets/javascripts/extjs-rails/src/LoadMask.js +432 -0
- data/app/assets/javascripts/extjs-rails/src/ModelManager.js +186 -0
- data/app/assets/javascripts/extjs-rails/src/PluginManager.js +110 -0
- data/app/assets/javascripts/extjs-rails/src/ProgressBar.js +336 -0
- data/app/assets/javascripts/extjs-rails/src/Shadow.js +233 -0
- data/app/assets/javascripts/extjs-rails/src/ShadowPool.js +43 -0
- data/app/assets/javascripts/extjs-rails/src/Template.js +331 -0
- data/app/assets/javascripts/extjs-rails/src/XTemplate.js +365 -0
- data/app/assets/javascripts/extjs-rails/src/XTemplateCompiler.js +450 -0
- data/app/assets/javascripts/extjs-rails/src/XTemplateParser.js +249 -0
- data/app/assets/javascripts/extjs-rails/src/ZIndexManager.js +519 -0
- data/app/assets/javascripts/extjs-rails/src/app/Application.js +271 -0
- data/app/assets/javascripts/extjs-rails/src/app/Controller.js +458 -0
- data/app/assets/javascripts/extjs-rails/src/app/EventBus.js +112 -0
- data/app/assets/javascripts/extjs-rails/src/button/Button.js +1483 -0
- data/app/assets/javascripts/extjs-rails/src/button/Cycle.js +215 -0
- data/app/assets/javascripts/extjs-rails/src/button/Split.js +99 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Callout.js +140 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Chart.js +966 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Highlight.js +172 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Label.js +241 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Legend.js +474 -0
- data/app/assets/javascripts/extjs-rails/src/chart/LegendItem.js +217 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Mask.js +230 -0
- data/app/assets/javascripts/extjs-rails/src/chart/MaskLayer.js +48 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Navigation.js +79 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Shape.js +106 -0
- data/app/assets/javascripts/extjs-rails/src/chart/Tip.js +98 -0
- data/app/assets/javascripts/extjs-rails/src/chart/TipSurface.js +42 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Abstract.js +73 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Axis.js +961 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Category.js +130 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Gauge.js +203 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Numeric.js +235 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Radial.js +204 -0
- data/app/assets/javascripts/extjs-rails/src/chart/axis/Time.js +135 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Area.js +803 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Bar.js +853 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Cartesian.js +328 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Column.js +104 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Gauge.js +490 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Line.js +1104 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Pie.js +1072 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Radar.js +440 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Scatter.js +668 -0
- data/app/assets/javascripts/extjs-rails/src/chart/series/Series.js +443 -0
- data/app/assets/javascripts/extjs-rails/src/chart/theme/Base.js +175 -0
- data/app/assets/javascripts/extjs-rails/src/chart/theme/Theme.js +253 -0
- data/app/assets/javascripts/extjs-rails/src/container/AbstractContainer.js +1062 -0
- data/app/assets/javascripts/extjs-rails/src/container/ButtonGroup.js +143 -0
- data/app/assets/javascripts/extjs-rails/src/container/Container.js +212 -0
- data/app/assets/javascripts/extjs-rails/src/container/DockingContainer.js +265 -0
- data/app/assets/javascripts/extjs-rails/src/container/Viewport.js +184 -0
- data/app/assets/javascripts/extjs-rails/src/core/dom/Element.form.js +50 -0
- data/app/assets/javascripts/extjs-rails/src/core/dom/Element.static-more.js +159 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/index.html +321 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/index.js +6 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CTO.js +25 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/CoolGuy.js +20 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Developer.js +43 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Gun.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/HumanResource.js +23 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Musician.js +20 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/Person.js +50 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanComposeSongs.js +9 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanPlayGuitar.js +9 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/ability/CanSing.js +18 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/A.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/B.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/C.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/D.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/deadlock/E.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/A.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/B.js +4 -0
- data/app/assets/javascripts/extjs-rails/src/core/examples/src/Sample/notdeadlock/C.js +3 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/EventManager.js +1167 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/EventObject.js +883 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/Ext-more.js +1283 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/Ext.js +736 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/Support.js +662 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/Base.js +1085 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/Class.js +676 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/ClassManager.js +1591 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/class/Loader.js +1423 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.alignment.js +173 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.insertion.js +193 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.js +681 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.position.js +356 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.static.js +474 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.style.js +851 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractElement.traversal.js +180 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractHelper.js +291 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/AbstractQuery.js +72 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElement.js +75 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/CompositeElementLite.js +436 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/dom/DomQuery-aria.js +1049 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/env/Browser.js +186 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/env/FeatureDetector.js +274 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/env/OS.js +141 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Array.js +1205 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Date.js +1463 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Error.js +326 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Function.js +485 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Number.js +175 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/Object.js +606 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/lang/String.js +333 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/misc/JSON.js +236 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/perf/Accumulator.js +244 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/perf/Monitor.js +197 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/DelayedTask.js +71 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/Event.js +215 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/Format.js +551 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/util/TaskManager.js +417 -0
- data/app/assets/javascripts/extjs-rails/src/core/src/version/Version.js +364 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/README.MD +91 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/bootstrap.js +39 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build-data.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/build/build.sh +2 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/data.js +27 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/index.html +15 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom.html +40 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/extjs-api.js +12 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/platform-api.js +134 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/sanity.js +4 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api-out.js +128 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/dom/touch-api.js +89 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/other_specs/env/Environment.js +357 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/APITest.js +37 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/jsb3.js +14 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/resources/test-setup.js +137 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/EventManager.js +629 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-mess.backup +198 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext-more.js +520 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Ext.js +1550 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/Support.js +250 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Base.js +47 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/Class.js +561 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/class/ClassManager.js +555 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/CompositeElementLite.js +409 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/DomHelper.js +444 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.insertion.js +342 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.js +731 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.static.js +201 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.style.js +118 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/dom/Element.traversal.js +336 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Array.js +1229 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Date.js +697 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Error.js +277 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Function.js +536 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Number.js +323 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/Object.js +591 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/lang/String.js +451 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/misc/JSON.js +252 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/util/Format.js +521 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/spec/version/Version.js +148 -0
- data/app/assets/javascripts/extjs-rails/src/core/test/unit/specs.html +19 -0
- data/app/assets/javascripts/extjs-rails/src/data/AbstractStore.js +887 -0
- data/app/assets/javascripts/extjs-rails/src/data/ArrayStore.js +74 -0
- data/app/assets/javascripts/extjs-rails/src/data/Batch.js +236 -0
- data/app/assets/javascripts/extjs-rails/src/data/BufferStore.js +13 -0
- data/app/assets/javascripts/extjs-rails/src/data/Connection.js +969 -0
- data/app/assets/javascripts/extjs-rails/src/data/DirectStore.js +50 -0
- data/app/assets/javascripts/extjs-rails/src/data/Errors.js +52 -0
- data/app/assets/javascripts/extjs-rails/src/data/Field.js +341 -0
- data/app/assets/javascripts/extjs-rails/src/data/IdGenerator.js +198 -0
- data/app/assets/javascripts/extjs-rails/src/data/JsonP.js +253 -0
- data/app/assets/javascripts/extjs-rails/src/data/JsonPStore.js +51 -0
- data/app/assets/javascripts/extjs-rails/src/data/JsonStore.js +60 -0
- data/app/assets/javascripts/extjs-rails/src/data/Model.js +1673 -0
- data/app/assets/javascripts/extjs-rails/src/data/NodeInterface.js +1294 -0
- data/app/assets/javascripts/extjs-rails/src/data/NodeStore.js +254 -0
- data/app/assets/javascripts/extjs-rails/src/data/Operation.js +331 -0
- data/app/assets/javascripts/extjs-rails/src/data/Request.js +40 -0
- data/app/assets/javascripts/extjs-rails/src/data/ResultSet.js +56 -0
- data/app/assets/javascripts/extjs-rails/src/data/SequentialIdGenerator.js +61 -0
- data/app/assets/javascripts/extjs-rails/src/data/SortTypes.js +125 -0
- data/app/assets/javascripts/extjs-rails/src/data/Store.js +2609 -0
- data/app/assets/javascripts/extjs-rails/src/data/StoreManager.js +156 -0
- data/app/assets/javascripts/extjs-rails/src/data/Tree.js +290 -0
- data/app/assets/javascripts/extjs-rails/src/data/TreeStore.js +655 -0
- data/app/assets/javascripts/extjs-rails/src/data/Types.js +190 -0
- data/app/assets/javascripts/extjs-rails/src/data/UuidGenerator.js +215 -0
- data/app/assets/javascripts/extjs-rails/src/data/XmlStore.js +76 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/Association.js +243 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/BelongsTo.js +291 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/HasMany.js +289 -0
- data/app/assets/javascripts/extjs-rails/src/data/association/HasOne.js +304 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Ajax.js +282 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Client.js +21 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Direct.js +181 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/JsonP.js +313 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/LocalStorage.js +69 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Memory.js +156 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Proxy.js +433 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Rest.js +173 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/Server.js +460 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/SessionStorage.js +39 -0
- data/app/assets/javascripts/extjs-rails/src/data/proxy/WebStorage.js +546 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Array.js +68 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Json.js +383 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Reader.js +735 -0
- data/app/assets/javascripts/extjs-rails/src/data/reader/Xml.js +292 -0
- data/app/assets/javascripts/extjs-rails/src/data/validations.js +149 -0
- data/app/assets/javascripts/extjs-rails/src/data/writer/Json.js +81 -0
- data/app/assets/javascripts/extjs-rails/src/data/writer/Writer.js +147 -0
- data/app/assets/javascripts/extjs-rails/src/data/writer/Xml.js +88 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DD.js +300 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DDProxy.js +204 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DDTarget.js +171 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragDrop.js +1101 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragDropManager.js +1264 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragSource.js +392 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragTracker.js +562 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DragZone.js +137 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DropTarget.js +118 -0
- data/app/assets/javascripts/extjs-rails/src/dd/DropZone.js +254 -0
- data/app/assets/javascripts/extjs-rails/src/dd/Registry.js +117 -0
- data/app/assets/javascripts/extjs-rails/src/dd/ScrollManager.js +218 -0
- data/app/assets/javascripts/extjs-rails/src/dd/StatusProxy.js +179 -0
- data/app/assets/javascripts/extjs-rails/src/diag/layout/Context.js +523 -0
- data/app/assets/javascripts/extjs-rails/src/diag/layout/ContextItem.js +179 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Event.js +35 -0
- data/app/assets/javascripts/extjs-rails/src/direct/ExceptionEvent.js +16 -0
- data/app/assets/javascripts/extjs-rails/src/direct/JsonProvider.js +82 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Manager.js +263 -0
- data/app/assets/javascripts/extjs-rails/src/direct/PollingProvider.js +156 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Provider.js +96 -0
- data/app/assets/javascripts/extjs-rails/src/direct/RemotingEvent.js +24 -0
- data/app/assets/javascripts/extjs-rails/src/direct/RemotingMethod.js +100 -0
- data/app/assets/javascripts/extjs-rails/src/direct/RemotingProvider.js +510 -0
- data/app/assets/javascripts/extjs-rails/src/direct/Transaction.js +41 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.alignment.js +378 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.anim.js +962 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.dd.js +40 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.fx.js +194 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.js +1407 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.position.js +501 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.scroll.js +214 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.style.js +792 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Element.traversal.js +8 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Helper.js +466 -0
- data/app/assets/javascripts/extjs-rails/src/dom/Query.js +1067 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Color.js +303 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Component.js +245 -0
- data/app/assets/javascripts/extjs-rails/src/draw/CompositeSprite.js +299 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Draw.js +1217 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Matrix.js +183 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Sprite.js +554 -0
- data/app/assets/javascripts/extjs-rails/src/draw/SpriteDD.js +87 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Surface.js +1001 -0
- data/app/assets/javascripts/extjs-rails/src/draw/Text.js +175 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/ImageExporter.js +106 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/Svg.js +734 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/SvgExporter.js +280 -0
- data/app/assets/javascripts/extjs-rails/src/draw/engine/Vml.js +916 -0
- data/app/assets/javascripts/extjs-rails/src/flash/Component.js +248 -0
- data/app/assets/javascripts/extjs-rails/src/form/Basic.js +1018 -0
- data/app/assets/javascripts/extjs-rails/src/form/CheckboxGroup.js +441 -0
- data/app/assets/javascripts/extjs-rails/src/form/CheckboxManager.js +26 -0
- data/app/assets/javascripts/extjs-rails/src/form/FieldAncestor.js +210 -0
- data/app/assets/javascripts/extjs-rails/src/form/FieldContainer.js +290 -0
- data/app/assets/javascripts/extjs-rails/src/form/FieldSet.js +506 -0
- data/app/assets/javascripts/extjs-rails/src/form/Label.js +110 -0
- data/app/assets/javascripts/extjs-rails/src/form/Labelable.js +764 -0
- data/app/assets/javascripts/extjs-rails/src/form/Panel.js +335 -0
- data/app/assets/javascripts/extjs-rails/src/form/RadioGroup.js +124 -0
- data/app/assets/javascripts/extjs-rails/src/form/RadioManager.js +26 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/Action.js +307 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/DirectLoad.js +107 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/DirectSubmit.js +119 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/Load.js +120 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/StandardSubmit.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/form/action/Submit.js +257 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Base.js +813 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Checkbox.js +505 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/ComboBox.js +1427 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Date.js +578 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Display.js +155 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Field.js +430 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/File.js +265 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Hidden.js +75 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/HtmlEditor.js +1439 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Number.js +380 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Picker.js +321 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Radio.js +279 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Spinner.js +321 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Text.js +727 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/TextArea.js +228 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Time.js +459 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/Trigger.js +469 -0
- data/app/assets/javascripts/extjs-rails/src/form/field/VTypes.js +172 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Anim.js +472 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Animator.js +410 -0
- data/app/assets/javascripts/extjs-rails/src/fx/CubicBezier.js +77 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Easing.js +136 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Manager.js +353 -0
- data/app/assets/javascripts/extjs-rails/src/fx/PropertyHandler.js +381 -0
- data/app/assets/javascripts/extjs-rails/src/fx/Queue.js +123 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Component.js +118 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElement.js +46 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeElementCSS.js +22 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/CompositeSprite.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Element.js +83 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/ElementCSS.js +77 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Sprite.js +128 -0
- data/app/assets/javascripts/extjs-rails/src/fx/target/Target.js +36 -0
- data/app/assets/javascripts/extjs-rails/src/grid/CellEditor.js +172 -0
- data/app/assets/javascripts/extjs-rails/src/grid/ColumnComponentLayout.js +34 -0
- data/app/assets/javascripts/extjs-rails/src/grid/ColumnLayout.js +201 -0
- data/app/assets/javascripts/extjs-rails/src/grid/Lockable.js +863 -0
- data/app/assets/javascripts/extjs-rails/src/grid/LockingView.js +169 -0
- data/app/assets/javascripts/extjs-rails/src/grid/PagingScroller.js +539 -0
- data/app/assets/javascripts/extjs-rails/src/grid/Panel.js +393 -0
- data/app/assets/javascripts/extjs-rails/src/grid/RowEditor.js +731 -0
- data/app/assets/javascripts/extjs-rails/src/grid/RowNumberer.js +76 -0
- data/app/assets/javascripts/extjs-rails/src/grid/Scroller.js +5 -0
- data/app/assets/javascripts/extjs-rails/src/grid/View.js +44 -0
- data/app/assets/javascripts/extjs-rails/src/grid/ViewDropZone.js +41 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Action.js +318 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Boolean.js +82 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Column.js +835 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Date.js +63 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Number.js +52 -0
- data/app/assets/javascripts/extjs-rails/src/grid/column/Template.js +58 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/AbstractSummary.js +154 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Chunking.js +77 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Feature.js +158 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Grouping.js +822 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/GroupingSummary.js +243 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/RowBody.js +116 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/RowWrap.js +120 -0
- data/app/assets/javascripts/extjs-rails/src/grid/feature/Summary.js +167 -0
- data/app/assets/javascripts/extjs-rails/src/grid/header/Container.js +965 -0
- data/app/assets/javascripts/extjs-rails/src/grid/header/DragZone.js +69 -0
- data/app/assets/javascripts/extjs-rails/src/grid/header/DropZone.js +265 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/CellEditing.js +453 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/DragDrop.js +254 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/Editing.js +561 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderReorderer.js +49 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/HeaderResizer.js +292 -0
- data/app/assets/javascripts/extjs-rails/src/grid/plugin/RowEditing.js +339 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/Grid.js +351 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/HeaderContainer.js +109 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/Property.js +36 -0
- data/app/assets/javascripts/extjs-rails/src/grid/property/Store.js +141 -0
- data/app/assets/javascripts/extjs-rails/src/layout/ClassList.js +90 -0
- data/app/assets/javascripts/extjs-rails/src/layout/Context.js +1232 -0
- data/app/assets/javascripts/extjs-rails/src/layout/ContextItem.js +1470 -0
- data/app/assets/javascripts/extjs-rails/src/layout/Layout.js +761 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Auto.js +220 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Body.js +80 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/BoundList.js +95 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Button.js +261 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Component.js +427 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Dock.js +1132 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Draw.js +79 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/FieldSet.js +62 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/ProgressBar.js +54 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/Tab.js +23 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/ComboBox.js +52 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Field.js +372 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/FieldContainer.js +48 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/HtmlEditor.js +54 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Slider.js +58 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Text.js +75 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/TextArea.js +51 -0
- data/app/assets/javascripts/extjs-rails/src/layout/component/field/Trigger.js +132 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Absolute.js +121 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Accordion.js +308 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Anchor.js +403 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Auto.js +70 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Border-old-js +1079 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Border.js +816 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Box.js +929 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Card.js +361 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/CheckboxGroup.js +376 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Column.js +234 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Container.js +961 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Editor.js +74 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Fit.js +287 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Form.js +157 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/HBox.js +134 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/Table.js +412 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/VBox.js +139 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Menu.js +365 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/None.js +83 -0
- data/app/assets/javascripts/extjs-rails/src/layout/container/boxOverflow/Scroller.js +475 -0
- data/app/assets/javascripts/extjs-rails/src/menu/CheckItem.js +169 -0
- data/app/assets/javascripts/extjs-rails/src/menu/ColorPicker.js +110 -0
- data/app/assets/javascripts/extjs-rails/src/menu/DatePicker.js +100 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Item.js +553 -0
- data/app/assets/javascripts/extjs-rails/src/menu/KeyNav.js +134 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Manager.js +219 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Menu.js +579 -0
- data/app/assets/javascripts/extjs-rails/src/menu/Separator.js +126 -0
- data/app/assets/javascripts/extjs-rails/src/panel/AbstractPanel.js +323 -0
- data/app/assets/javascripts/extjs-rails/src/panel/DD.js +99 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Header.js +518 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Panel.js +2150 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Proxy.js +131 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Table.js +1018 -0
- data/app/assets/javascripts/extjs-rails/src/panel/Tool.js +304 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Color.js +219 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Date.js +1140 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Month.js +490 -0
- data/app/assets/javascripts/extjs-rails/src/picker/Time.js +165 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitter.js +22 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/BorderSplitterTracker.js +210 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/Handle.js +29 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/ResizeTracker.js +346 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/Resizer.js +477 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/Splitter.js +242 -0
- data/app/assets/javascripts/extjs-rails/src/resizer/SplitterTracker.js +230 -0
- data/app/assets/javascripts/extjs-rails/src/selection/CellModel.js +395 -0
- data/app/assets/javascripts/extjs-rails/src/selection/CheckboxModel.js +234 -0
- data/app/assets/javascripts/extjs-rails/src/selection/DataViewModel.js +160 -0
- data/app/assets/javascripts/extjs-rails/src/selection/Model.js +646 -0
- data/app/assets/javascripts/extjs-rails/src/selection/RowModel.js +499 -0
- data/app/assets/javascripts/extjs-rails/src/selection/TreeModel.js +78 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Multi.js +835 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Single.js +56 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Thumb.js +259 -0
- data/app/assets/javascripts/extjs-rails/src/slider/Tip.js +130 -0
- data/app/assets/javascripts/extjs-rails/src/state/CookieProvider.js +120 -0
- data/app/assets/javascripts/extjs-rails/src/state/LocalStorageProvider.js +72 -0
- data/app/assets/javascripts/extjs-rails/src/state/Manager.js +70 -0
- data/app/assets/javascripts/extjs-rails/src/state/Provider.js +182 -0
- data/app/assets/javascripts/extjs-rails/src/state/Stateful.js +364 -0
- data/app/assets/javascripts/extjs-rails/src/tab/Bar.js +258 -0
- data/app/assets/javascripts/extjs-rails/src/tab/Panel.js +654 -0
- data/app/assets/javascripts/extjs-rails/src/tab/Tab.js +358 -0
- data/app/assets/javascripts/extjs-rails/src/tail.js +10 -0
- data/app/assets/javascripts/extjs-rails/src/tip/QuickTip.js +335 -0
- data/app/assets/javascripts/extjs-rails/src/tip/QuickTipManager.js +239 -0
- data/app/assets/javascripts/extjs-rails/src/tip/Tip.js +160 -0
- data/app/assets/javascripts/extjs-rails/src/tip/ToolTip.js +691 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Fill.js +28 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Item.js +16 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Paging.js +600 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Separator.js +23 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Spacer.js +33 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/TextItem.js +57 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar-legacy.js +123 -0
- data/app/assets/javascripts/extjs-rails/src/toolbar/Toolbar.js +447 -0
- data/app/assets/javascripts/extjs-rails/src/tree/Column.js +90 -0
- data/app/assets/javascripts/extjs-rails/src/tree/Panel.js +505 -0
- data/app/assets/javascripts/extjs-rails/src/tree/View.js +658 -0
- data/app/assets/javascripts/extjs-rails/src/tree/ViewDragZone.js +49 -0
- data/app/assets/javascripts/extjs-rails/src/tree/ViewDropZone.js +287 -0
- data/app/assets/javascripts/extjs-rails/src/tree/plugin/TreeViewDragDrop.js +244 -0
- data/app/assets/javascripts/extjs-rails/src/util/AbstractMixedCollection.js +772 -0
- data/app/assets/javascripts/extjs-rails/src/util/Animate.js +426 -0
- data/app/assets/javascripts/extjs-rails/src/util/Bindable.js +102 -0
- data/app/assets/javascripts/extjs-rails/src/util/CSS.js +185 -0
- data/app/assets/javascripts/extjs-rails/src/util/ClickRepeater.js +238 -0
- data/app/assets/javascripts/extjs-rails/src/util/ComponentDragger.js +126 -0
- data/app/assets/javascripts/extjs-rails/src/util/Cookies.js +91 -0
- data/app/assets/javascripts/extjs-rails/src/util/ElementContainer.js +293 -0
- data/app/assets/javascripts/extjs-rails/src/util/Filter.js +159 -0
- data/app/assets/javascripts/extjs-rails/src/util/Floating.js +321 -0
- data/app/assets/javascripts/extjs-rails/src/util/Grouper.js +26 -0
- data/app/assets/javascripts/extjs-rails/src/util/HashMap.js +356 -0
- data/app/assets/javascripts/extjs-rails/src/util/History.js +285 -0
- data/app/assets/javascripts/extjs-rails/src/util/Inflector.js +297 -0
- data/app/assets/javascripts/extjs-rails/src/util/KeyMap.js +427 -0
- data/app/assets/javascripts/extjs-rails/src/util/KeyNav.js +239 -0
- data/app/assets/javascripts/extjs-rails/src/util/LruCache.js +257 -0
- data/app/assets/javascripts/extjs-rails/src/util/Memento.js +131 -0
- data/app/assets/javascripts/extjs-rails/src/util/MixedCollection.js +239 -0
- data/app/assets/javascripts/extjs-rails/src/util/Observable.js +1003 -0
- data/app/assets/javascripts/extjs-rails/src/util/Offset.js +60 -0
- data/app/assets/javascripts/extjs-rails/src/util/Point.js +93 -0
- data/app/assets/javascripts/extjs-rails/src/util/ProtoElement.js +205 -0
- data/app/assets/javascripts/extjs-rails/src/util/Queue.js +76 -0
- data/app/assets/javascripts/extjs-rails/src/util/Region.js +388 -0
- data/app/assets/javascripts/extjs-rails/src/util/Renderable.js +1079 -0
- data/app/assets/javascripts/extjs-rails/src/util/Sortable.js +248 -0
- data/app/assets/javascripts/extjs-rails/src/util/Sorter.js +179 -0
- data/app/assets/javascripts/extjs-rails/src/util/TextMetrics.js +148 -0
- data/app/assets/javascripts/extjs-rails/src/view/AbstractView.js +1103 -0
- data/app/assets/javascripts/extjs-rails/src/view/BoundList.js +207 -0
- data/app/assets/javascripts/extjs-rails/src/view/BoundListKeyNav.js +92 -0
- data/app/assets/javascripts/extjs-rails/src/view/DragZone.js +106 -0
- data/app/assets/javascripts/extjs-rails/src/view/DropZone.js +240 -0
- data/app/assets/javascripts/extjs-rails/src/view/Table.js +1229 -0
- data/app/assets/javascripts/extjs-rails/src/view/TableChunker.js +139 -0
- data/app/assets/javascripts/extjs-rails/src/view/View.js +636 -0
- data/app/assets/javascripts/extjs-rails/src/window/MessageBox.js +880 -0
- data/app/assets/javascripts/extjs-rails/src/window/Window-legacy.js +56 -0
- data/app/assets/javascripts/extjs-rails/src/window/Window.js +793 -0
- data/extjs-rails.gemspec +24 -0
- data/lib/extjs-rails.rb +7 -0
- data/lib/extjs-rails/engine.rb +7 -0
- data/lib/extjs-rails/version.rb +5 -0
- metadata +660 -0
@@ -0,0 +1,110 @@
|
|
1
|
+
/**
|
2
|
+
* @docauthor Jason Johnston <jason@sencha.com>
|
3
|
+
*
|
4
|
+
* Produces a standalone `<label />` element which can be inserted into a form and be associated with a field
|
5
|
+
* in that form using the {@link #forId} property.
|
6
|
+
*
|
7
|
+
* **NOTE:** in most cases it will be more appropriate to use the {@link Ext.form.Labelable#fieldLabel fieldLabel}
|
8
|
+
* and associated config properties ({@link Ext.form.Labelable#labelAlign}, {@link Ext.form.Labelable#labelWidth},
|
9
|
+
* etc.) in field components themselves, as that allows labels to be uniformly sized throughout the form.
|
10
|
+
* Ext.form.Label should only be used when your layout can not be achieved with the standard
|
11
|
+
* {@link Ext.form.Labelable field layout}.
|
12
|
+
*
|
13
|
+
* You will likely be associating the label with a field component that extends {@link Ext.form.field.Base}, so
|
14
|
+
* you should make sure the {@link #forId} is set to the same value as the {@link Ext.form.field.Base#inputId inputId}
|
15
|
+
* of that field.
|
16
|
+
*
|
17
|
+
* The label's text can be set using either the {@link #text} or {@link #html} configuration properties; the
|
18
|
+
* difference between the two is that the former will automatically escape HTML characters when rendering, while
|
19
|
+
* the latter will not.
|
20
|
+
*
|
21
|
+
* # Example
|
22
|
+
*
|
23
|
+
* This example creates a Label after its associated Text field, an arrangement that cannot currently
|
24
|
+
* be achieved using the standard Field layout's labelAlign.
|
25
|
+
*
|
26
|
+
* @example
|
27
|
+
* Ext.create('Ext.form.Panel', {
|
28
|
+
* title: 'Field with Label',
|
29
|
+
* width: 400,
|
30
|
+
* bodyPadding: 10,
|
31
|
+
* renderTo: Ext.getBody(),
|
32
|
+
* layout: {
|
33
|
+
* type: 'hbox',
|
34
|
+
* align: 'middle'
|
35
|
+
* },
|
36
|
+
* items: [{
|
37
|
+
* xtype: 'textfield',
|
38
|
+
* hideLabel: true,
|
39
|
+
* flex: 1
|
40
|
+
* }, {
|
41
|
+
* xtype: 'label',
|
42
|
+
* forId: 'myFieldId',
|
43
|
+
* text: 'My Awesome Field',
|
44
|
+
* margin: '0 0 0 10'
|
45
|
+
* }]
|
46
|
+
* });
|
47
|
+
*/
|
48
|
+
Ext.define('Ext.form.Label', {
|
49
|
+
extend:'Ext.Component',
|
50
|
+
alias: 'widget.label',
|
51
|
+
requires: ['Ext.util.Format'],
|
52
|
+
|
53
|
+
autoEl: 'label',
|
54
|
+
|
55
|
+
/**
|
56
|
+
* @cfg {String} [text='']
|
57
|
+
* The plain text to display within the label. If you need to include HTML
|
58
|
+
* tags within the label's innerHTML, use the {@link #html} config instead.
|
59
|
+
*/
|
60
|
+
/**
|
61
|
+
* @cfg {String} forId
|
62
|
+
* The id of the input element to which this label will be bound via the standard HTML 'for'
|
63
|
+
* attribute. If not specified, the attribute will not be added to the label. In most cases you will be
|
64
|
+
* associating the label with a {@link Ext.form.field.Base} component, so you should make sure this matches
|
65
|
+
* the {@link Ext.form.field.Base#inputId inputId} of that field.
|
66
|
+
*/
|
67
|
+
/**
|
68
|
+
* @cfg {String} [html='']
|
69
|
+
* An HTML fragment that will be used as the label's innerHTML.
|
70
|
+
* Note that if {@link #text} is specified it will take precedence and this value will be ignored.
|
71
|
+
*/
|
72
|
+
|
73
|
+
maskOnDisable: false,
|
74
|
+
|
75
|
+
getElConfig: function(){
|
76
|
+
var me = this;
|
77
|
+
|
78
|
+
me.html = me.text ? Ext.util.Format.htmlEncode(me.text) : (me.html || '');
|
79
|
+
return Ext.apply(me.callParent(), {
|
80
|
+
htmlFor: me.forId || ''
|
81
|
+
});
|
82
|
+
},
|
83
|
+
|
84
|
+
/**
|
85
|
+
* Updates the label's innerHTML with the specified string.
|
86
|
+
* @param {String} text The new label text
|
87
|
+
* @param {Boolean} [encode=true] False to skip HTML-encoding the text when rendering it
|
88
|
+
* to the label. This might be useful if you want to include tags in the label's innerHTML rather
|
89
|
+
* than rendering them as string literals per the default logic.
|
90
|
+
* @return {Ext.form.Label} this
|
91
|
+
*/
|
92
|
+
setText : function(text, encode){
|
93
|
+
var me = this;
|
94
|
+
|
95
|
+
encode = encode !== false;
|
96
|
+
if(encode) {
|
97
|
+
me.text = text;
|
98
|
+
delete me.html;
|
99
|
+
} else {
|
100
|
+
me.html = text;
|
101
|
+
delete me.text;
|
102
|
+
}
|
103
|
+
|
104
|
+
if(me.rendered){
|
105
|
+
me.el.dom.innerHTML = encode !== false ? Ext.util.Format.htmlEncode(text) : text;
|
106
|
+
}
|
107
|
+
return this;
|
108
|
+
}
|
109
|
+
});
|
110
|
+
|
@@ -0,0 +1,764 @@
|
|
1
|
+
/**
|
2
|
+
* A mixin which allows a component to be configured and decorated with a label and/or error message as is
|
3
|
+
* common for form fields. This is used by e.g. Ext.form.field.Base and Ext.form.FieldContainer
|
4
|
+
* to let them be managed by the Field layout.
|
5
|
+
*
|
6
|
+
* NOTE: This mixin is mainly for internal library use and most users should not need to use it directly. It
|
7
|
+
* is more likely you will want to use one of the component classes that import this mixin, such as
|
8
|
+
* Ext.form.field.Base or Ext.form.FieldContainer.
|
9
|
+
*
|
10
|
+
* Use of this mixin does not make a component a field in the logical sense, meaning it does not provide any
|
11
|
+
* logic or state related to values or validation; that is handled by the related Ext.form.field.Field
|
12
|
+
* mixin. These two mixins may be used separately (for example Ext.form.FieldContainer is Labelable but not a
|
13
|
+
* Field), or in combination (for example Ext.form.field.Base implements both and has logic for connecting the
|
14
|
+
* two.)
|
15
|
+
*
|
16
|
+
* Component classes which use this mixin should use the Field layout
|
17
|
+
* or a derivation thereof to properly size and position the label and message according to the component config.
|
18
|
+
* They must also call the {@link #initLabelable} method during component initialization to ensure the mixin gets
|
19
|
+
* set up correctly.
|
20
|
+
*
|
21
|
+
* @docauthor Jason Johnston <jason@sencha.com>
|
22
|
+
*/
|
23
|
+
Ext.define("Ext.form.Labelable", {
|
24
|
+
requires: ['Ext.XTemplate'],
|
25
|
+
|
26
|
+
autoEl: {
|
27
|
+
tag: 'table',
|
28
|
+
cellpadding: 0
|
29
|
+
},
|
30
|
+
|
31
|
+
childEls: [
|
32
|
+
/**
|
33
|
+
* @property {Ext.Element} labelCell
|
34
|
+
* The `<TD>` Element which contains the label Element for this component. Only available after the component has been rendered.
|
35
|
+
*/
|
36
|
+
'labelCell',
|
37
|
+
|
38
|
+
/**
|
39
|
+
* @property {Ext.Element} labelEl
|
40
|
+
* The label Element for this component. Only available after the component has been rendered.
|
41
|
+
*/
|
42
|
+
'labelEl',
|
43
|
+
|
44
|
+
/**
|
45
|
+
* @property {Ext.Element} bodyEl
|
46
|
+
* The div Element wrapping the component's contents. Only available after the component has been rendered.
|
47
|
+
*/
|
48
|
+
'bodyEl',
|
49
|
+
|
50
|
+
/**
|
51
|
+
* @property {Ext.Element} errorEl
|
52
|
+
* The div Element that will contain the component's error message(s). Note that depending on the configured
|
53
|
+
* {@link #msgTarget}, this element may be hidden in favor of some other form of presentation, but will always
|
54
|
+
* be present in the DOM for use by assistive technologies.
|
55
|
+
*/
|
56
|
+
'errorEl',
|
57
|
+
|
58
|
+
'inputRow'
|
59
|
+
],
|
60
|
+
|
61
|
+
/**
|
62
|
+
* @cfg {String/String[]/Ext.XTemplate} labelableRenderTpl
|
63
|
+
* The rendering template for the field decorations. Component classes using this mixin
|
64
|
+
* should include logic to use this as their {@link Ext.AbstractComponent#renderTpl renderTpl},
|
65
|
+
* and implement the {@link #getSubTplMarkup} method to generate the field body content.
|
66
|
+
*
|
67
|
+
* The structure of a field is a table as follows:
|
68
|
+
*
|
69
|
+
* If `label:align: 'left|top'`:
|
70
|
+
*
|
71
|
+
* +----------------------+------------+---------+--------------+
|
72
|
+
* | Label: | InputField | sideErrorEl |
|
73
|
+
* +----------------------+------------+---------+-------------+
|
74
|
+
* | | underErrorEl (colspan=3) |
|
75
|
+
* +-----------------------------------------------------------+
|
76
|
+
*
|
77
|
+
* Or, if `labelAlign: 'top'`:
|
78
|
+
*
|
79
|
+
* +-----------------------------------------------------------+
|
80
|
+
* | labelAlign:'top' label: (colspan=3) |
|
81
|
+
* +----------------------+------------+---------+-------------+
|
82
|
+
* | InputField (colspan=2) | sideErrorEl |
|
83
|
+
* +----------------------+------------+---------+-------------+
|
84
|
+
* | underErrorEl (colspan=3) |
|
85
|
+
* +-----------------------------------------------------------+
|
86
|
+
*
|
87
|
+
* The total columns always adds up to 3 (even if `labelAlign: 'top'`) because when
|
88
|
+
* rendered into a {@link Ext.layout.container.Form} layout, just the `TR` of the table
|
89
|
+
* will be placed into the form's main `TABLE`, and the columns of all the siblings
|
90
|
+
* must match so that they all line up.
|
91
|
+
*
|
92
|
+
* When the triggerCell or side error cell are hidden or shown, the input cell's colspan
|
93
|
+
* is recalculated to maintain the correct 3 visible column count.
|
94
|
+
* @private
|
95
|
+
*/
|
96
|
+
labelableRenderTpl: [
|
97
|
+
|
98
|
+
// Top TR if labelAlign =='top'
|
99
|
+
'<tpl if="labelAlign==\'top\'">',
|
100
|
+
'<tr>',
|
101
|
+
'<td id="{id}-labelCell" colspan="3" style="{labelCellStyle}" {labelCellAttrs}>',
|
102
|
+
'{beforeLabelTpl}',
|
103
|
+
'<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"',
|
104
|
+
'<tpl if="labelStyle"> style="{labelStyle}"</tpl>>',
|
105
|
+
'{beforeLabelTextTpl}',
|
106
|
+
'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',
|
107
|
+
'{afterLabelTextTpl}',
|
108
|
+
'</label>',
|
109
|
+
'{afterLabelTpl}',
|
110
|
+
'</td>',
|
111
|
+
'</tr>',
|
112
|
+
'</tpl>',
|
113
|
+
|
114
|
+
// body row. If a heighted Field (eg TextArea, HtmlEditor, this must greedily consume height.
|
115
|
+
'<tr id="{id}-inputRow" <tpl if="inFormLayout">id="{id}"</tpl>>',
|
116
|
+
|
117
|
+
// Label cell
|
118
|
+
'<tpl if="labelOnLeft">',
|
119
|
+
'<td id="{id}-labelCell" style="{labelCellStyle}" {labelCellAttrs}>',
|
120
|
+
'{beforeLabelTpl}',
|
121
|
+
'<label id="{id}-labelEl" {labelAttrTpl}<tpl if="inputId"> for="{inputId}"</tpl> class="{labelCls}"',
|
122
|
+
'<tpl if="labelStyle"> style="{labelStyle}"</tpl>>',
|
123
|
+
'{beforeLabelTextTpl}',
|
124
|
+
'<tpl if="fieldLabel">{fieldLabel}{labelSeparator}</tpl>',
|
125
|
+
'{afterLabelTextTpl}',
|
126
|
+
'</label>',
|
127
|
+
'{afterLabelTpl}',
|
128
|
+
'</td>',
|
129
|
+
'</tpl>',
|
130
|
+
|
131
|
+
// Body of the input. That will be an input element, or, from a TriggerField, a table containing an input cell and trigger cell(s)
|
132
|
+
'<td class="{baseBodyCls} {fieldBodyCls}" id="{id}-bodyEl" role="presentation" colspan="{bodyColspan}">',
|
133
|
+
'{beforeSubTpl}',
|
134
|
+
'{[values.$comp.getSubTplMarkup()]}',
|
135
|
+
'{afterSubTpl}',
|
136
|
+
'</td>',
|
137
|
+
|
138
|
+
// Side error element
|
139
|
+
'<tpl if="msgTarget==\'side\'">',
|
140
|
+
'<td id="{id}-errorEl" class="{errorMsgCls}" style="display:none" width="{errorIconWidth}"></td>',
|
141
|
+
'</tpl>',
|
142
|
+
'</tr>',
|
143
|
+
|
144
|
+
// Under error element is another TR
|
145
|
+
'<tpl if="msgTarget==\'under\'">',
|
146
|
+
'<tr>',
|
147
|
+
// Align under the input element
|
148
|
+
'<tpl if="labelOnLeft">',
|
149
|
+
'<td></td>',
|
150
|
+
'</tpl>',
|
151
|
+
'<td id="{id}-errorEl" class="{errorMsgClass}" colspan="{[values.labelOnLeft ? 2 : 3]}" style="display:none"></td>',
|
152
|
+
'</tr>',
|
153
|
+
'</tpl>',
|
154
|
+
{
|
155
|
+
disableFormats: true
|
156
|
+
}
|
157
|
+
],
|
158
|
+
|
159
|
+
/**
|
160
|
+
* @cfg {String/String[]/Ext.XTemplate} activeErrorsTpl
|
161
|
+
* The template used to format the Array of error messages passed to {@link #setActiveErrors} into a single HTML
|
162
|
+
* string. By default this renders each message as an item in an unordered list.
|
163
|
+
*/
|
164
|
+
activeErrorsTpl: [
|
165
|
+
'<tpl if="errors && errors.length">',
|
166
|
+
'<ul><tpl for="errors"><li>{.}</li></tpl></ul>',
|
167
|
+
'</tpl>'
|
168
|
+
],
|
169
|
+
|
170
|
+
/**
|
171
|
+
* @property {Boolean} isFieldLabelable
|
172
|
+
* Flag denoting that this object is labelable as a field. Always true.
|
173
|
+
*/
|
174
|
+
isFieldLabelable: true,
|
175
|
+
|
176
|
+
/**
|
177
|
+
* @cfg {String} formItemCls
|
178
|
+
* A CSS class to be applied to the outermost element to denote that it is participating in the form field layout.
|
179
|
+
*/
|
180
|
+
formItemCls: Ext.baseCSSPrefix + 'form-item',
|
181
|
+
|
182
|
+
/**
|
183
|
+
* @cfg {String} labelCls
|
184
|
+
* The CSS class to be applied to the label element. This (single) CSS class is used to formulate the renderSelector
|
185
|
+
* and drives the field layout where it is concatenated with a hyphen ('-') and {@link #labelAlign}. To add
|
186
|
+
* additional classes, use {@link #labelClsExtra}.
|
187
|
+
*/
|
188
|
+
labelCls: Ext.baseCSSPrefix + 'form-item-label',
|
189
|
+
|
190
|
+
/**
|
191
|
+
* @cfg {String} labelClsExtra
|
192
|
+
* An optional string of one or more additional CSS classes to add to the label element. Defaults to empty.
|
193
|
+
*/
|
194
|
+
|
195
|
+
/**
|
196
|
+
* @cfg {String} errorMsgCls
|
197
|
+
* The CSS class to be applied to the error message element.
|
198
|
+
*/
|
199
|
+
errorMsgCls: Ext.baseCSSPrefix + 'form-error-msg',
|
200
|
+
|
201
|
+
/**
|
202
|
+
* @cfg {String} baseBodyCls
|
203
|
+
* The CSS class to be applied to the body content element.
|
204
|
+
*/
|
205
|
+
baseBodyCls: Ext.baseCSSPrefix + 'form-item-body',
|
206
|
+
|
207
|
+
/**
|
208
|
+
* @cfg {String} fieldBodyCls
|
209
|
+
* An extra CSS class to be applied to the body content element in addition to {@link #baseBodyCls}.
|
210
|
+
*/
|
211
|
+
fieldBodyCls: '',
|
212
|
+
|
213
|
+
/**
|
214
|
+
* @cfg {String} clearCls
|
215
|
+
* The CSS class to be applied to the special clearing div rendered directly after the field contents wrapper to
|
216
|
+
* provide field clearing.
|
217
|
+
*/
|
218
|
+
clearCls: Ext.baseCSSPrefix + 'clear',
|
219
|
+
|
220
|
+
/**
|
221
|
+
* @cfg {String} invalidCls
|
222
|
+
* The CSS class to use when marking the component invalid.
|
223
|
+
*/
|
224
|
+
invalidCls : Ext.baseCSSPrefix + 'form-invalid',
|
225
|
+
|
226
|
+
/**
|
227
|
+
* @cfg {String} fieldLabel
|
228
|
+
* The label for the field. It gets appended with the {@link #labelSeparator}, and its position and sizing is
|
229
|
+
* determined by the {@link #labelAlign}, {@link #labelWidth}, and {@link #labelPad} configs.
|
230
|
+
*/
|
231
|
+
fieldLabel: undefined,
|
232
|
+
|
233
|
+
/**
|
234
|
+
* @cfg {String} labelAlign
|
235
|
+
* Controls the position and alignment of the {@link #fieldLabel}. Valid values are:
|
236
|
+
*
|
237
|
+
* - "left" (the default) - The label is positioned to the left of the field, with its text aligned to the left.
|
238
|
+
* Its width is determined by the {@link #labelWidth} config.
|
239
|
+
* - "top" - The label is positioned above the field.
|
240
|
+
* - "right" - The label is positioned to the left of the field, with its text aligned to the right.
|
241
|
+
* Its width is determined by the {@link #labelWidth} config.
|
242
|
+
*/
|
243
|
+
labelAlign : 'left',
|
244
|
+
|
245
|
+
/**
|
246
|
+
* @cfg {Number} labelWidth
|
247
|
+
* The width of the {@link #fieldLabel} in pixels. Only applicable if the {@link #labelAlign} is set to "left" or
|
248
|
+
* "right".
|
249
|
+
*/
|
250
|
+
labelWidth: 100,
|
251
|
+
|
252
|
+
/**
|
253
|
+
* @cfg {Number} labelPad
|
254
|
+
* The amount of space in pixels between the {@link #fieldLabel} and the input field.
|
255
|
+
*/
|
256
|
+
labelPad : 5,
|
257
|
+
|
258
|
+
/**
|
259
|
+
* @cfg {String} labelSeparator
|
260
|
+
* Character(s) to be inserted at the end of the {@link #fieldLabel label text}.
|
261
|
+
*/
|
262
|
+
//<locale>
|
263
|
+
labelSeparator : ':',
|
264
|
+
//</locale>
|
265
|
+
|
266
|
+
/**
|
267
|
+
* @cfg {String} labelStyle
|
268
|
+
* A CSS style specification string to apply directly to this field's label.
|
269
|
+
*/
|
270
|
+
|
271
|
+
/**
|
272
|
+
* @cfg {Boolean} hideLabel
|
273
|
+
* Set to true to completely hide the label element ({@link #fieldLabel} and {@link #labelSeparator}). Also see
|
274
|
+
* {@link #hideEmptyLabel}, which controls whether space will be reserved for an empty fieldLabel.
|
275
|
+
*/
|
276
|
+
hideLabel: false,
|
277
|
+
|
278
|
+
/**
|
279
|
+
* @cfg {Boolean} hideEmptyLabel
|
280
|
+
* When set to true, the label element ({@link #fieldLabel} and {@link #labelSeparator}) will be automatically
|
281
|
+
* hidden if the {@link #fieldLabel} is empty. Setting this to false will cause the empty label element to be
|
282
|
+
* rendered and space to be reserved for it; this is useful if you want a field without a label to line up with
|
283
|
+
* other labeled fields in the same form.
|
284
|
+
*
|
285
|
+
* If you wish to unconditionall hide the label even if a non-empty fieldLabel is configured, then set the {@link
|
286
|
+
* #hideLabel} config to true.
|
287
|
+
*/
|
288
|
+
hideEmptyLabel: true,
|
289
|
+
|
290
|
+
/**
|
291
|
+
* @cfg {Boolean} preventMark
|
292
|
+
* true to disable displaying any {@link #setActiveError error message} set on this object.
|
293
|
+
*/
|
294
|
+
preventMark: false,
|
295
|
+
|
296
|
+
/**
|
297
|
+
* @cfg {Boolean} autoFitErrors
|
298
|
+
* Whether to adjust the component's body area to make room for 'side' or 'under' {@link #msgTarget error messages}.
|
299
|
+
*/
|
300
|
+
autoFitErrors: true,
|
301
|
+
|
302
|
+
/**
|
303
|
+
* @cfg {String} msgTarget
|
304
|
+
* The location where the error message text should display. Must be one of the following values:
|
305
|
+
*
|
306
|
+
* - `qtip` Display a quick tip containing the message when the user hovers over the field.
|
307
|
+
* This is the default.
|
308
|
+
*
|
309
|
+
* **{@link Ext.tip.QuickTipManager#init} must have been called for this setting to work.**
|
310
|
+
*
|
311
|
+
* - `title` Display the message in a default browser title attribute popup.
|
312
|
+
* - `under` Add a block div beneath the field containing the error message.
|
313
|
+
* - `side` Add an error icon to the right of the field, displaying the message in a popup on hover.
|
314
|
+
* - `none` Don't display any error message. This might be useful if you are implementing custom error display.
|
315
|
+
* - `[element id]` Add the error message directly to the innerHTML of the specified element.
|
316
|
+
*/
|
317
|
+
msgTarget: 'qtip',
|
318
|
+
|
319
|
+
/**
|
320
|
+
* @cfg {String} activeError
|
321
|
+
* If specified, then the component will be displayed with this value as its active error when first rendered. Use
|
322
|
+
* {@link #setActiveError} or {@link #unsetActiveError} to change it after component creation.
|
323
|
+
*/
|
324
|
+
|
325
|
+
/**
|
326
|
+
* @private
|
327
|
+
* Tells the layout system that the height can be measured immediately because the width does not need setting.
|
328
|
+
*/
|
329
|
+
noWrap: true,
|
330
|
+
|
331
|
+
labelableInsertions: [
|
332
|
+
/**
|
333
|
+
* @cfg {String/Array/Ext.XTemplate} beforeLabelTpl
|
334
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
335
|
+
* before the label element. If an `XTemplate` is used, the component's {@link Ext.AbstractComponent#renderData render data}
|
336
|
+
* serves as the context.
|
337
|
+
*/
|
338
|
+
'beforeLabelTpl',
|
339
|
+
|
340
|
+
/**
|
341
|
+
* @cfg {String/Array/Ext.XTemplate} afterLabelTpl
|
342
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
343
|
+
* after the label element. If an `XTemplate` is used, the component's {@link Ext.AbstractComponent#renderData render data}
|
344
|
+
* serves as the context.
|
345
|
+
*/
|
346
|
+
'afterLabelTpl',
|
347
|
+
|
348
|
+
/**
|
349
|
+
* @cfg {String/Array/Ext.XTemplate} beforeSubTpl
|
350
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
351
|
+
* before the {@link #getSubTplMarkup subTpl markup}. If an `XTemplate` is used, the
|
352
|
+
* component's {@link Ext.AbstractComponent#renderData render data} serves as the context.
|
353
|
+
*/
|
354
|
+
'beforeSubTpl',
|
355
|
+
|
356
|
+
/**
|
357
|
+
* @cfg {String/Array/Ext.XTemplate} afterSubTpl
|
358
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
359
|
+
* after the {@link #getSubTplMarkup subTpl markup}. If an `XTemplate` is used, the
|
360
|
+
* component's {@link Ext.AbstractComponent#renderData render data} serves as the context.
|
361
|
+
*/
|
362
|
+
'afterSubTpl',
|
363
|
+
|
364
|
+
/**
|
365
|
+
* @cfg {String/Array/Ext.XTemplate} beforeLabelTextTpl
|
366
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
367
|
+
* before the label text. If an `XTemplate` is used, the component's {@link Ext.AbstractComponent#renderData render data}
|
368
|
+
* serves as the context.
|
369
|
+
*/
|
370
|
+
'beforeLabelTextTpl',
|
371
|
+
|
372
|
+
/**
|
373
|
+
* @cfg {String/Array/Ext.XTemplate} afterLabelTextTpl
|
374
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
375
|
+
* after the label text. If an `XTemplate` is used, the component's {@link Ext.AbstractComponent#renderData render data}
|
376
|
+
* serves as the context.
|
377
|
+
*/
|
378
|
+
'afterLabelTextTpl',
|
379
|
+
|
380
|
+
/**
|
381
|
+
* @cfg {String/Array/Ext.XTemplate} labelAttrTpl
|
382
|
+
* An optional string or `XTemplate` configuration to insert in the field markup
|
383
|
+
* inside the label element (as attributes). If an `XTemplate` is used, the component's
|
384
|
+
* {@link Ext.AbstractComponent#renderData render data} serves as the context.
|
385
|
+
*/
|
386
|
+
'labelAttrTpl'
|
387
|
+
],
|
388
|
+
|
389
|
+
labelableRenderProps: 'allowBlank,labelAlign,fieldBodyCls,baseBodyCls,clearCls,labelSeparator,msgTarget',
|
390
|
+
|
391
|
+
/**
|
392
|
+
* Performs initialization of this mixin. Component classes using this mixin should call this method during their
|
393
|
+
* own initialization.
|
394
|
+
*/
|
395
|
+
initLabelable: function() {
|
396
|
+
var me = this,
|
397
|
+
padding = me.padding;
|
398
|
+
|
399
|
+
// This Component is rendered as a table. Padding doesn't work on tables
|
400
|
+
// Before padding can be applied to the encapsulating table element, copy the padding into
|
401
|
+
// an extraMargins property which is to be added to all computed margins post render :(
|
402
|
+
if (padding) {
|
403
|
+
me.padding = undefined;
|
404
|
+
me.extraMargins = Ext.Element.parseBox(padding);
|
405
|
+
}
|
406
|
+
|
407
|
+
me.addCls(me.formItemCls);
|
408
|
+
|
409
|
+
// Prevent first render of active error, at Field render time from signalling a change from undefined to "
|
410
|
+
me.lastActiveError = '';
|
411
|
+
|
412
|
+
me.addEvents(
|
413
|
+
/**
|
414
|
+
* @event errorchange
|
415
|
+
* Fires when the active error message is changed via {@link #setActiveError}.
|
416
|
+
* @param {Ext.form.Labelable} this
|
417
|
+
* @param {String} error The active error message
|
418
|
+
*/
|
419
|
+
'errorchange'
|
420
|
+
);
|
421
|
+
},
|
422
|
+
|
423
|
+
/**
|
424
|
+
* Returns the label for the field. Defaults to simply returning the {@link #fieldLabel} config. Can be overridden
|
425
|
+
* to provide
|
426
|
+
* @return {String} The configured field label, or empty string if not defined
|
427
|
+
*/
|
428
|
+
getFieldLabel: function() {
|
429
|
+
return this.fieldLabel || '';
|
430
|
+
},
|
431
|
+
|
432
|
+
/**
|
433
|
+
* Set the label of this field.
|
434
|
+
* @param {String} label The new label. The {@link #labelSeparator} will be automatically appended to the label
|
435
|
+
* string.
|
436
|
+
*/
|
437
|
+
setFieldLabel: function(label){
|
438
|
+
label = label || '';
|
439
|
+
|
440
|
+
var me = this,
|
441
|
+
separator = me.labelSeparator,
|
442
|
+
labelEl = me.labelEl,
|
443
|
+
last;
|
444
|
+
|
445
|
+
me.fieldLabel = label;
|
446
|
+
if (me.rendered) {
|
447
|
+
if (Ext.isEmpty(label) && me.hideEmptyLabel) {
|
448
|
+
labelEl.parent().setDisplayed('none');
|
449
|
+
} else {
|
450
|
+
if (separator) {
|
451
|
+
last = label.substr(label.length - 1);
|
452
|
+
// append separator if necessary
|
453
|
+
if (last != separator) {
|
454
|
+
label += separator;
|
455
|
+
}
|
456
|
+
}
|
457
|
+
labelEl.update(label);
|
458
|
+
labelEl.parent().setDisplayed('');
|
459
|
+
}
|
460
|
+
me.updateLayout();
|
461
|
+
}
|
462
|
+
},
|
463
|
+
|
464
|
+
getInsertionRenderData: function (data, names) {
|
465
|
+
var i = names.length,
|
466
|
+
name, value;
|
467
|
+
|
468
|
+
while (i--) {
|
469
|
+
name = names[i];
|
470
|
+
value = this[name];
|
471
|
+
|
472
|
+
if (value) {
|
473
|
+
if (typeof value != 'string') {
|
474
|
+
if (!value.isTemplate) {
|
475
|
+
value = Ext.XTemplate.getTpl(this, name);
|
476
|
+
}
|
477
|
+
value = value.apply(data);
|
478
|
+
}
|
479
|
+
}
|
480
|
+
|
481
|
+
data[name] = value || '';
|
482
|
+
}
|
483
|
+
|
484
|
+
return data;
|
485
|
+
},
|
486
|
+
|
487
|
+
/**
|
488
|
+
* Generates the arguments for the field decorations {@link #labelableRenderTpl rendering template}.
|
489
|
+
* @return {Object} The template arguments
|
490
|
+
* @protected
|
491
|
+
*/
|
492
|
+
getLabelableRenderData: function() {
|
493
|
+
var me = this,
|
494
|
+
data,
|
495
|
+
tempEl;
|
496
|
+
|
497
|
+
if (!Ext.form.Labelable.errorIconWidth) {
|
498
|
+
Ext.form.Labelable.errorIconWidth = (tempEl = Ext.getBody().createChild({style: 'position:absolute', cls: Ext.baseCSSPrefix + 'form-invalid-icon'})).getWidth();
|
499
|
+
tempEl.remove();
|
500
|
+
}
|
501
|
+
|
502
|
+
data = Ext.copyTo({
|
503
|
+
inFormLayout : me.ownerLayout && me.ownerLayout.type === 'form',
|
504
|
+
inputId : me.getInputId(),
|
505
|
+
labelOnLeft : me.labelAlign != 'top',
|
506
|
+
fieldLabel : me.getFieldLabel(),
|
507
|
+
labelCellStyle : me.getLabelCellStyle(),
|
508
|
+
labelCellAttrs : me.getLabelCellAttrs(),
|
509
|
+
labelCls : me.getLabelCls(),
|
510
|
+
labelStyle : me.getLabelStyle(),
|
511
|
+
bodyColspan : me.getBodyColspan(),
|
512
|
+
errorMsgCls : me.errorMsgCls + (me.autoFitErrors ? '' : ' ' + Ext.baseCSSPrefix + 'external-error-icon'),
|
513
|
+
errorIconWidth : Ext.form.Labelable.errorIconWidth
|
514
|
+
},
|
515
|
+
me, me.labelableRenderProps, true);
|
516
|
+
|
517
|
+
me.getInsertionRenderData(data, me.labelableInsertions);
|
518
|
+
|
519
|
+
return data;
|
520
|
+
},
|
521
|
+
|
522
|
+
beforeLabelableRender: function() {
|
523
|
+
var me = this;
|
524
|
+
if (me.ownerLayout) {
|
525
|
+
me.addCls(Ext.baseCSSPrefix + me.ownerLayout.type + '-form-item');
|
526
|
+
}
|
527
|
+
},
|
528
|
+
|
529
|
+
onLabelableRender: function() {
|
530
|
+
var me = this,
|
531
|
+
margins,
|
532
|
+
side,
|
533
|
+
style = {};
|
534
|
+
|
535
|
+
if (me.extraMargins) {
|
536
|
+
margins = me.el.getMargin();
|
537
|
+
for (side in margins) {
|
538
|
+
if (margins.hasOwnProperty(side)) {
|
539
|
+
style['margin-' + side] = (margins[side] + me.extraMargins[side]) + 'px';
|
540
|
+
}
|
541
|
+
}
|
542
|
+
me.el.setStyle(style);
|
543
|
+
}
|
544
|
+
},
|
545
|
+
|
546
|
+
/**
|
547
|
+
* Checks if the field has a visible label
|
548
|
+
* @return {Boolean} True if the field has a visible label
|
549
|
+
*/
|
550
|
+
hasVisibleLabel: function(){
|
551
|
+
if (this.hideLabel) {
|
552
|
+
return false;
|
553
|
+
}
|
554
|
+
return !(this.hideEmptyLabel && !this.getFieldLabel());
|
555
|
+
},
|
556
|
+
|
557
|
+
/**
|
558
|
+
* @private
|
559
|
+
* Calculates the colspan value for the body cell - the cell which contains the input field.
|
560
|
+
*
|
561
|
+
* The field table structure contains 4 columns:
|
562
|
+
*/
|
563
|
+
getBodyColspan: function() {
|
564
|
+
var me = this,
|
565
|
+
hideLabelCell = !me.hasVisibleLabel(),
|
566
|
+
result;
|
567
|
+
|
568
|
+
// In the base case, the body cell spans itself, the triggerWrap cell, and the sideErrorEl by default, so 3
|
569
|
+
// If the label cell is hidden, or on the row above, the body cell must span the left label cell too, so 4
|
570
|
+
// TriggerFields which show the trigger cell, decrement this in the subclass implementation.
|
571
|
+
result = (hideLabelCell || me.labelAlign === 'top') ? 3 : 2;
|
572
|
+
|
573
|
+
if (me.hasActiveError()) {
|
574
|
+
result--;
|
575
|
+
}
|
576
|
+
|
577
|
+
return result;
|
578
|
+
},
|
579
|
+
|
580
|
+
getLabelCls: function(){
|
581
|
+
var labelCls = this.labelCls,
|
582
|
+
labelClsExtra = this.labelClsExtra;
|
583
|
+
|
584
|
+
return labelClsExtra ? labelCls + ' ' + labelClsExtra : labelCls;
|
585
|
+
},
|
586
|
+
|
587
|
+
getLabelCellStyle: function() {
|
588
|
+
var me = this,
|
589
|
+
hideLabelCell = me.hideLabel || (!me.fieldLabel && me.hideEmptyLabel);
|
590
|
+
|
591
|
+
return hideLabelCell ? 'display:none;' : '';
|
592
|
+
},
|
593
|
+
|
594
|
+
getLabelCellAttrs: function() {
|
595
|
+
var me = this,
|
596
|
+
labelAlign = me.labelAlign,
|
597
|
+
result = '';
|
598
|
+
|
599
|
+
if (labelAlign !== 'top') {
|
600
|
+
result = 'valign="top" halign="' + labelAlign + '" width="' + (me.labelWidth + me.labelPad) + '"';
|
601
|
+
}
|
602
|
+
return result + ' class="' + Ext.baseCSSPrefix + 'field-label-cell"';
|
603
|
+
},
|
604
|
+
|
605
|
+
/**
|
606
|
+
* Gets any label styling for the labelEl
|
607
|
+
* @private
|
608
|
+
* @return {String} The label styling
|
609
|
+
*/
|
610
|
+
getLabelStyle: function(){
|
611
|
+
var me = this,
|
612
|
+
labelPad = me.labelPad,
|
613
|
+
labelStyle = '';
|
614
|
+
|
615
|
+
// Calculate label styles up front rather than in the Field layout for speed; this
|
616
|
+
// is safe because label alignment/width/pad are not expected to change.
|
617
|
+
if (me.labelAlign === 'top') {
|
618
|
+
labelStyle = 'margin-bottom:' + labelPad + 'px;';
|
619
|
+
} else {
|
620
|
+
if (me.labelWidth) {
|
621
|
+
labelStyle = 'width:' + me.labelWidth + 'px;';
|
622
|
+
}
|
623
|
+
labelStyle += 'margin-right:' + labelPad + 'px;';
|
624
|
+
}
|
625
|
+
|
626
|
+
return labelStyle + (me.labelStyle || '');
|
627
|
+
},
|
628
|
+
|
629
|
+
/**
|
630
|
+
* Gets the markup to be inserted into the outer template's bodyEl. Defaults to empty string, should be implemented
|
631
|
+
* by classes including this mixin as needed.
|
632
|
+
* @return {String} The markup to be inserted
|
633
|
+
* @protected
|
634
|
+
*/
|
635
|
+
getSubTplMarkup: function() {
|
636
|
+
return '';
|
637
|
+
},
|
638
|
+
|
639
|
+
/**
|
640
|
+
* Get the input id, if any, for this component. This is used as the "for" attribute on the label element.
|
641
|
+
* Implementing subclasses may also use this as e.g. the id for their own input element.
|
642
|
+
* @return {String} The input id
|
643
|
+
*/
|
644
|
+
getInputId: function() {
|
645
|
+
return '';
|
646
|
+
},
|
647
|
+
|
648
|
+
/**
|
649
|
+
* Gets the active error message for this component, if any. This does not trigger validation on its own, it merely
|
650
|
+
* returns any message that the component may already hold.
|
651
|
+
* @return {String} The active error message on the component; if there is no error, an empty string is returned.
|
652
|
+
*/
|
653
|
+
getActiveError : function() {
|
654
|
+
return this.activeError || '';
|
655
|
+
},
|
656
|
+
|
657
|
+
/**
|
658
|
+
* Tells whether the field currently has an active error message. This does not trigger validation on its own, it
|
659
|
+
* merely looks for any message that the component may already hold.
|
660
|
+
* @return {Boolean}
|
661
|
+
*/
|
662
|
+
hasActiveError: function() {
|
663
|
+
return !!this.getActiveError();
|
664
|
+
},
|
665
|
+
|
666
|
+
/**
|
667
|
+
* Sets the active error message to the given string. This replaces the entire error message contents with the given
|
668
|
+
* string. Also see {@link #setActiveErrors} which accepts an Array of messages and formats them according to the
|
669
|
+
* {@link #activeErrorsTpl}. Note that this only updates the error message element's text and attributes, you'll
|
670
|
+
* have to call doComponentLayout to actually update the field's layout to match. If the field extends {@link
|
671
|
+
* Ext.form.field.Base} you should call {@link Ext.form.field.Base#markInvalid markInvalid} instead.
|
672
|
+
* @param {String} msg The error message
|
673
|
+
*/
|
674
|
+
setActiveError: function(msg) {
|
675
|
+
this.setActiveErrors(msg);
|
676
|
+
},
|
677
|
+
|
678
|
+
/**
|
679
|
+
* Gets an Array of any active error messages currently applied to the field. This does not trigger validation on
|
680
|
+
* its own, it merely returns any messages that the component may already hold.
|
681
|
+
* @return {String[]} The active error messages on the component; if there are no errors, an empty Array is
|
682
|
+
* returned.
|
683
|
+
*/
|
684
|
+
getActiveErrors: function() {
|
685
|
+
return this.activeErrors || [];
|
686
|
+
},
|
687
|
+
|
688
|
+
/**
|
689
|
+
* Set the active error message to an Array of error messages. The messages are formatted into a single message
|
690
|
+
* string using the {@link #activeErrorsTpl}. Also see {@link #setActiveError} which allows setting the entire error
|
691
|
+
* contents with a single string. Note that this only updates the error message element's text and attributes,
|
692
|
+
* you'll have to call doComponentLayout to actually update the field's layout to match. If the field extends
|
693
|
+
* {@link Ext.form.field.Base} you should call {@link Ext.form.field.Base#markInvalid markInvalid} instead.
|
694
|
+
* @param {String[]} errors The error messages
|
695
|
+
*/
|
696
|
+
setActiveErrors: function(errors) {
|
697
|
+
errors = Ext.Array.from(errors);
|
698
|
+
this.activeError = errors[0];
|
699
|
+
this.activeErrors = errors;
|
700
|
+
this.activeError = this.getTpl('activeErrorsTpl').apply({errors: errors});
|
701
|
+
this.renderActiveError();
|
702
|
+
},
|
703
|
+
|
704
|
+
/**
|
705
|
+
* Clears the active error message(s). Note that this only clears the error message element's text and attributes,
|
706
|
+
* you'll have to call doComponentLayout to actually update the field's layout to match. If the field extends {@link
|
707
|
+
* Ext.form.field.Base} you should call {@link Ext.form.field.Base#clearInvalid clearInvalid} instead.
|
708
|
+
*/
|
709
|
+
unsetActiveError: function() {
|
710
|
+
delete this.activeError;
|
711
|
+
delete this.activeErrors;
|
712
|
+
this.renderActiveError();
|
713
|
+
},
|
714
|
+
|
715
|
+
/**
|
716
|
+
* @private
|
717
|
+
* Updates the rendered DOM to match the current activeError. This only updates the content and
|
718
|
+
* attributes, you'll have to call doComponentLayout to actually update the display.
|
719
|
+
*/
|
720
|
+
renderActiveError: function() {
|
721
|
+
var me = this,
|
722
|
+
activeError = me.getActiveError(),
|
723
|
+
hasError = !!activeError;
|
724
|
+
|
725
|
+
if (activeError !== me.lastActiveError) {
|
726
|
+
me.fireEvent('errorchange', me, activeError);
|
727
|
+
me.lastActiveError = activeError;
|
728
|
+
}
|
729
|
+
|
730
|
+
if (me.rendered && !me.isDestroyed && !me.preventMark) {
|
731
|
+
// Add/remove invalid class
|
732
|
+
me.el[hasError ? 'addCls' : 'removeCls'](me.invalidCls);
|
733
|
+
|
734
|
+
// Update the aria-invalid attribute
|
735
|
+
me.getActionEl().dom.setAttribute('aria-invalid', hasError);
|
736
|
+
|
737
|
+
// Update the errorEl (There will only be one if msgTarget is 'side' or 'under') with the error message text
|
738
|
+
if (me.errorEl) {
|
739
|
+
me.errorEl.dom.innerHTML = activeError;
|
740
|
+
}
|
741
|
+
}
|
742
|
+
},
|
743
|
+
|
744
|
+
/**
|
745
|
+
* Applies a set of default configuration values to this Labelable instance. For each of the properties in the given
|
746
|
+
* object, check if this component hasOwnProperty that config; if not then it's inheriting a default value from its
|
747
|
+
* prototype and we should apply the default value.
|
748
|
+
* @param {Object} defaults The defaults to apply to the object.
|
749
|
+
*/
|
750
|
+
setFieldDefaults: function(defaults) {
|
751
|
+
var me = this,
|
752
|
+
val, key;
|
753
|
+
|
754
|
+
for (key in defaults) {
|
755
|
+
if (defaults.hasOwnProperty(key)) {
|
756
|
+
val = defaults[key];
|
757
|
+
|
758
|
+
if (!me.hasOwnProperty(key)) {
|
759
|
+
me[key] = val;
|
760
|
+
}
|
761
|
+
}
|
762
|
+
}
|
763
|
+
}
|
764
|
+
});
|