extjs-rails 4.1.0.alpha1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,380 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @docauthor Jason Johnston <jason@sencha.com>
|
|
3
|
+
*
|
|
4
|
+
* A numeric text field that provides automatic keystroke filtering to disallow non-numeric characters,
|
|
5
|
+
* and numeric validation to limit the value to a range of valid numbers. The range of acceptable number
|
|
6
|
+
* values can be controlled by setting the {@link #minValue} and {@link #maxValue} configs, and fractional
|
|
7
|
+
* decimals can be disallowed by setting {@link #allowDecimals} to `false`.
|
|
8
|
+
*
|
|
9
|
+
* By default, the number field is also rendered with a set of up/down spinner buttons and has
|
|
10
|
+
* up/down arrow key and mouse wheel event listeners attached for incrementing/decrementing the value by the
|
|
11
|
+
* {@link #step} value. To hide the spinner buttons set `{@link #hideTrigger hideTrigger}:true`; to disable
|
|
12
|
+
* the arrow key and mouse wheel handlers set `{@link #keyNavEnabled keyNavEnabled}:false` and
|
|
13
|
+
* `{@link #mouseWheelEnabled mouseWheelEnabled}:false`. See the example below.
|
|
14
|
+
*
|
|
15
|
+
* # Example usage
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* Ext.create('Ext.form.Panel', {
|
|
19
|
+
* title: 'On The Wall',
|
|
20
|
+
* width: 300,
|
|
21
|
+
* bodyPadding: 10,
|
|
22
|
+
* renderTo: Ext.getBody(),
|
|
23
|
+
* items: [{
|
|
24
|
+
* xtype: 'numberfield',
|
|
25
|
+
* anchor: '100%',
|
|
26
|
+
* name: 'bottles',
|
|
27
|
+
* fieldLabel: 'Bottles of Beer',
|
|
28
|
+
* value: 99,
|
|
29
|
+
* maxValue: 99,
|
|
30
|
+
* minValue: 0
|
|
31
|
+
* }],
|
|
32
|
+
* buttons: [{
|
|
33
|
+
* text: 'Take one down, pass it around',
|
|
34
|
+
* handler: function() {
|
|
35
|
+
* this.up('form').down('[name=bottles]').spinDown();
|
|
36
|
+
* }
|
|
37
|
+
* }]
|
|
38
|
+
* });
|
|
39
|
+
*
|
|
40
|
+
* # Removing UI Enhancements
|
|
41
|
+
*
|
|
42
|
+
* @example
|
|
43
|
+
* Ext.create('Ext.form.Panel', {
|
|
44
|
+
* title: 'Personal Info',
|
|
45
|
+
* width: 300,
|
|
46
|
+
* bodyPadding: 10,
|
|
47
|
+
* renderTo: Ext.getBody(),
|
|
48
|
+
* items: [{
|
|
49
|
+
* xtype: 'numberfield',
|
|
50
|
+
* anchor: '100%',
|
|
51
|
+
* name: 'age',
|
|
52
|
+
* fieldLabel: 'Age',
|
|
53
|
+
* minValue: 0, //prevents negative numbers
|
|
54
|
+
*
|
|
55
|
+
* // Remove spinner buttons, and arrow key and mouse wheel listeners
|
|
56
|
+
* hideTrigger: true,
|
|
57
|
+
* keyNavEnabled: false,
|
|
58
|
+
* mouseWheelEnabled: false
|
|
59
|
+
* }]
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
* # Using Step
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* Ext.create('Ext.form.Panel', {
|
|
66
|
+
* renderTo: Ext.getBody(),
|
|
67
|
+
* title: 'Step',
|
|
68
|
+
* width: 300,
|
|
69
|
+
* bodyPadding: 10,
|
|
70
|
+
* items: [{
|
|
71
|
+
* xtype: 'numberfield',
|
|
72
|
+
* anchor: '100%',
|
|
73
|
+
* name: 'evens',
|
|
74
|
+
* fieldLabel: 'Even Numbers',
|
|
75
|
+
*
|
|
76
|
+
* // Set step so it skips every other number
|
|
77
|
+
* step: 2,
|
|
78
|
+
* value: 0,
|
|
79
|
+
*
|
|
80
|
+
* // Add change handler to force user-entered numbers to evens
|
|
81
|
+
* listeners: {
|
|
82
|
+
* change: function(field, value) {
|
|
83
|
+
* value = parseInt(value, 10);
|
|
84
|
+
* field.setValue(value + value % 2);
|
|
85
|
+
* }
|
|
86
|
+
* }
|
|
87
|
+
* }]
|
|
88
|
+
* });
|
|
89
|
+
*/
|
|
90
|
+
Ext.define('Ext.form.field.Number', {
|
|
91
|
+
extend:'Ext.form.field.Spinner',
|
|
92
|
+
alias: 'widget.numberfield',
|
|
93
|
+
alternateClassName: ['Ext.form.NumberField', 'Ext.form.Number'],
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* @cfg {RegExp} stripCharsRe
|
|
97
|
+
* @private
|
|
98
|
+
*/
|
|
99
|
+
/**
|
|
100
|
+
* @cfg {RegExp} maskRe
|
|
101
|
+
* @private
|
|
102
|
+
*/
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* @cfg {Boolean} allowDecimals
|
|
106
|
+
* False to disallow decimal values
|
|
107
|
+
*/
|
|
108
|
+
allowDecimals : true,
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* @cfg {String} decimalSeparator
|
|
112
|
+
* Character(s) to allow as the decimal separator
|
|
113
|
+
*/
|
|
114
|
+
//<locale>
|
|
115
|
+
decimalSeparator : '.',
|
|
116
|
+
//</locale>
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* @cfg {Boolean} [submitLocaleSeparator=true]
|
|
120
|
+
* False to ensure that the {@link #getSubmitValue} method strips
|
|
121
|
+
* always uses `.` as the separator, regardless of the {@link #decimalSeparator}
|
|
122
|
+
* configuration.
|
|
123
|
+
*/
|
|
124
|
+
//<locale>
|
|
125
|
+
submitLocaleSeparator: true,
|
|
126
|
+
//</locale>
|
|
127
|
+
|
|
128
|
+
/**
|
|
129
|
+
* @cfg {Number} decimalPrecision
|
|
130
|
+
* The maximum precision to display after the decimal separator
|
|
131
|
+
*/
|
|
132
|
+
//<locale>
|
|
133
|
+
decimalPrecision : 2,
|
|
134
|
+
//</locale>
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* @cfg {Number} minValue
|
|
138
|
+
* The minimum allowed value. Will be used by the field's validation logic,
|
|
139
|
+
* and for {@link Ext.form.field.Spinner#setSpinUpEnabled enabling/disabling the down spinner button}.
|
|
140
|
+
*
|
|
141
|
+
* Defaults to Number.NEGATIVE_INFINITY.
|
|
142
|
+
*/
|
|
143
|
+
minValue: Number.NEGATIVE_INFINITY,
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @cfg {Number} maxValue
|
|
147
|
+
* The maximum allowed value. Will be used by the field's validation logic, and for
|
|
148
|
+
* {@link Ext.form.field.Spinner#setSpinUpEnabled enabling/disabling the up spinner button}.
|
|
149
|
+
*
|
|
150
|
+
* Defaults to Number.MAX_VALUE.
|
|
151
|
+
*/
|
|
152
|
+
maxValue: Number.MAX_VALUE,
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @cfg {Number} step
|
|
156
|
+
* Specifies a numeric interval by which the field's value will be incremented or decremented when the user invokes
|
|
157
|
+
* the spinner.
|
|
158
|
+
*/
|
|
159
|
+
step: 1,
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* @cfg {String} minText
|
|
163
|
+
* Error text to display if the minimum value validation fails.
|
|
164
|
+
*/
|
|
165
|
+
//<locale>
|
|
166
|
+
minText : 'The minimum value for this field is {0}',
|
|
167
|
+
//</locale>
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @cfg {String} maxText
|
|
171
|
+
* Error text to display if the maximum value validation fails.
|
|
172
|
+
*/
|
|
173
|
+
//<locale>
|
|
174
|
+
maxText : 'The maximum value for this field is {0}',
|
|
175
|
+
//</locale>
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* @cfg {String} nanText
|
|
179
|
+
* Error text to display if the value is not a valid number. For example, this can happen if a valid character like
|
|
180
|
+
* '.' or '-' is left in the field with no number.
|
|
181
|
+
*/
|
|
182
|
+
//<locale>
|
|
183
|
+
nanText : '{0} is not a valid number',
|
|
184
|
+
//</locale>
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* @cfg {String} negativeText
|
|
188
|
+
* Error text to display if the value is negative and {@link #minValue} is set to 0. This is used instead of the
|
|
189
|
+
* {@link #minText} in that circumstance only.
|
|
190
|
+
*/
|
|
191
|
+
//<locale>
|
|
192
|
+
negativeText : 'The value cannot be negative',
|
|
193
|
+
//</locale>
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* @cfg {String} baseChars
|
|
197
|
+
* The base set of characters to evaluate as valid numbers.
|
|
198
|
+
*/
|
|
199
|
+
baseChars : '0123456789',
|
|
200
|
+
|
|
201
|
+
/**
|
|
202
|
+
* @cfg {Boolean} autoStripChars
|
|
203
|
+
* True to automatically strip not allowed characters from the field.
|
|
204
|
+
*/
|
|
205
|
+
autoStripChars: false,
|
|
206
|
+
|
|
207
|
+
initComponent: function() {
|
|
208
|
+
var me = this,
|
|
209
|
+
allowed;
|
|
210
|
+
|
|
211
|
+
me.callParent();
|
|
212
|
+
|
|
213
|
+
me.setMinValue(me.minValue);
|
|
214
|
+
me.setMaxValue(me.maxValue);
|
|
215
|
+
|
|
216
|
+
// Build regexes for masking and stripping based on the configured options
|
|
217
|
+
if (me.disableKeyFilter !== true) {
|
|
218
|
+
allowed = me.baseChars + '';
|
|
219
|
+
if (me.allowDecimals) {
|
|
220
|
+
allowed += me.decimalSeparator;
|
|
221
|
+
}
|
|
222
|
+
if (me.minValue < 0) {
|
|
223
|
+
allowed += '-';
|
|
224
|
+
}
|
|
225
|
+
allowed = Ext.String.escapeRegex(allowed);
|
|
226
|
+
me.maskRe = new RegExp('[' + allowed + ']');
|
|
227
|
+
if (me.autoStripChars) {
|
|
228
|
+
me.stripCharsRe = new RegExp('[^' + allowed + ']', 'gi');
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
},
|
|
232
|
+
|
|
233
|
+
/**
|
|
234
|
+
* Runs all of Number's validations and returns an array of any errors. Note that this first runs Text's
|
|
235
|
+
* validations, so the returned array is an amalgamation of all field errors. The additional validations run test
|
|
236
|
+
* that the value is a number, and that it is within the configured min and max values.
|
|
237
|
+
* @param {Object} [value] The value to get errors for (defaults to the current field value)
|
|
238
|
+
* @return {String[]} All validation errors for this field
|
|
239
|
+
*/
|
|
240
|
+
getErrors: function(value) {
|
|
241
|
+
var me = this,
|
|
242
|
+
errors = me.callParent(arguments),
|
|
243
|
+
format = Ext.String.format,
|
|
244
|
+
num;
|
|
245
|
+
|
|
246
|
+
value = Ext.isDefined(value) ? value : this.processRawValue(this.getRawValue());
|
|
247
|
+
|
|
248
|
+
if (value.length < 1) { // if it's blank and textfield didn't flag it then it's valid
|
|
249
|
+
return errors;
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
value = String(value).replace(me.decimalSeparator, '.');
|
|
253
|
+
|
|
254
|
+
if(isNaN(value)){
|
|
255
|
+
errors.push(format(me.nanText, value));
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
num = me.parseValue(value);
|
|
259
|
+
|
|
260
|
+
if (me.minValue === 0 && num < 0) {
|
|
261
|
+
errors.push(this.negativeText);
|
|
262
|
+
}
|
|
263
|
+
else if (num < me.minValue) {
|
|
264
|
+
errors.push(format(me.minText, me.minValue));
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
if (num > me.maxValue) {
|
|
268
|
+
errors.push(format(me.maxText, me.maxValue));
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
|
|
272
|
+
return errors;
|
|
273
|
+
},
|
|
274
|
+
|
|
275
|
+
rawToValue: function(rawValue) {
|
|
276
|
+
var value = this.fixPrecision(this.parseValue(rawValue));
|
|
277
|
+
if (value === null) {
|
|
278
|
+
value = rawValue || null;
|
|
279
|
+
}
|
|
280
|
+
return value;
|
|
281
|
+
},
|
|
282
|
+
|
|
283
|
+
valueToRaw: function(value) {
|
|
284
|
+
var me = this,
|
|
285
|
+
decimalSeparator = me.decimalSeparator;
|
|
286
|
+
value = me.parseValue(value);
|
|
287
|
+
value = me.fixPrecision(value);
|
|
288
|
+
value = Ext.isNumber(value) ? value : parseFloat(String(value).replace(decimalSeparator, '.'));
|
|
289
|
+
value = isNaN(value) ? '' : String(value).replace('.', decimalSeparator);
|
|
290
|
+
return value;
|
|
291
|
+
},
|
|
292
|
+
|
|
293
|
+
getSubmitValue: function() {
|
|
294
|
+
var me = this,
|
|
295
|
+
value = me.callParent();
|
|
296
|
+
|
|
297
|
+
if (!me.submitLocaleSeparator) {
|
|
298
|
+
value = value.replace(me.decimalSeparator, '.');
|
|
299
|
+
}
|
|
300
|
+
return value;
|
|
301
|
+
},
|
|
302
|
+
|
|
303
|
+
onChange: function() {
|
|
304
|
+
this.toggleSpinners();
|
|
305
|
+
this.callParent(arguments);
|
|
306
|
+
},
|
|
307
|
+
|
|
308
|
+
toggleSpinners: function(){
|
|
309
|
+
var me = this,
|
|
310
|
+
value = me.getValue(),
|
|
311
|
+
valueIsNull = value === null;
|
|
312
|
+
|
|
313
|
+
me.setSpinUpEnabled(valueIsNull || value < me.maxValue);
|
|
314
|
+
me.setSpinDownEnabled(valueIsNull || value > me.minValue);
|
|
315
|
+
},
|
|
316
|
+
|
|
317
|
+
/**
|
|
318
|
+
* Replaces any existing {@link #minValue} with the new value.
|
|
319
|
+
* @param {Number} value The minimum value
|
|
320
|
+
*/
|
|
321
|
+
setMinValue : function(value) {
|
|
322
|
+
this.minValue = Ext.Number.from(value, Number.NEGATIVE_INFINITY);
|
|
323
|
+
this.toggleSpinners();
|
|
324
|
+
},
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Replaces any existing {@link #maxValue} with the new value.
|
|
328
|
+
* @param {Number} value The maximum value
|
|
329
|
+
*/
|
|
330
|
+
setMaxValue: function(value) {
|
|
331
|
+
this.maxValue = Ext.Number.from(value, Number.MAX_VALUE);
|
|
332
|
+
this.toggleSpinners();
|
|
333
|
+
},
|
|
334
|
+
|
|
335
|
+
// private
|
|
336
|
+
parseValue : function(value) {
|
|
337
|
+
value = parseFloat(String(value).replace(this.decimalSeparator, '.'));
|
|
338
|
+
return isNaN(value) ? null : value;
|
|
339
|
+
},
|
|
340
|
+
|
|
341
|
+
/**
|
|
342
|
+
* @private
|
|
343
|
+
*/
|
|
344
|
+
fixPrecision : function(value) {
|
|
345
|
+
var me = this,
|
|
346
|
+
nan = isNaN(value),
|
|
347
|
+
precision = me.decimalPrecision;
|
|
348
|
+
|
|
349
|
+
if (nan || !value) {
|
|
350
|
+
return nan ? '' : value;
|
|
351
|
+
} else if (!me.allowDecimals || precision <= 0) {
|
|
352
|
+
precision = 0;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
return parseFloat(Ext.Number.toFixed(parseFloat(value), precision));
|
|
356
|
+
},
|
|
357
|
+
|
|
358
|
+
beforeBlur : function() {
|
|
359
|
+
var me = this,
|
|
360
|
+
v = me.parseValue(me.getRawValue());
|
|
361
|
+
|
|
362
|
+
if (!Ext.isEmpty(v)) {
|
|
363
|
+
me.setValue(v);
|
|
364
|
+
}
|
|
365
|
+
},
|
|
366
|
+
|
|
367
|
+
onSpinUp: function() {
|
|
368
|
+
var me = this;
|
|
369
|
+
if (!me.readOnly) {
|
|
370
|
+
me.setValue(Ext.Number.constrain(me.getValue() + me.step, me.minValue, me.maxValue));
|
|
371
|
+
}
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
onSpinDown: function() {
|
|
375
|
+
var me = this;
|
|
376
|
+
if (!me.readOnly) {
|
|
377
|
+
me.setValue(Ext.Number.constrain(me.getValue() - me.step, me.minValue, me.maxValue));
|
|
378
|
+
}
|
|
379
|
+
}
|
|
380
|
+
});
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An abstract class for fields that have a single trigger which opens a "picker" popup below the field, e.g. a combobox
|
|
3
|
+
* menu list or a date picker. It provides a base implementation for toggling the picker's visibility when the trigger
|
|
4
|
+
* is clicked, as well as keyboard navigation and some basic events. Sizing and alignment of the picker can be
|
|
5
|
+
* controlled via the {@link #matchFieldWidth} and {@link #pickerAlign}/{@link #pickerOffset} config properties
|
|
6
|
+
* respectively.
|
|
7
|
+
*
|
|
8
|
+
* You would not normally use this class directly, but instead use it as the parent class for a specific picker field
|
|
9
|
+
* implementation. Subclasses must implement the {@link #createPicker} method to create a picker component appropriate
|
|
10
|
+
* for the field.
|
|
11
|
+
*/
|
|
12
|
+
Ext.define('Ext.form.field.Picker', {
|
|
13
|
+
extend: 'Ext.form.field.Trigger',
|
|
14
|
+
alias: 'widget.pickerfield',
|
|
15
|
+
alternateClassName: 'Ext.form.Picker',
|
|
16
|
+
requires: ['Ext.util.KeyNav'],
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @cfg {Boolean} matchFieldWidth
|
|
20
|
+
* Whether the picker dropdown's width should be explicitly set to match the width of the field. Defaults to true.
|
|
21
|
+
*/
|
|
22
|
+
matchFieldWidth: true,
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* @cfg {String} pickerAlign
|
|
26
|
+
* The {@link Ext.Element#alignTo alignment position} with which to align the picker. Defaults to "tl-bl?"
|
|
27
|
+
*/
|
|
28
|
+
pickerAlign: 'tl-bl?',
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* @cfg {Number[]} pickerOffset
|
|
32
|
+
* An offset [x,y] to use in addition to the {@link #pickerAlign} when positioning the picker.
|
|
33
|
+
* Defaults to undefined.
|
|
34
|
+
*/
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @cfg {String} [openCls='x-pickerfield-open']
|
|
38
|
+
* A class to be added to the field's {@link #bodyEl} element when the picker is opened.
|
|
39
|
+
*/
|
|
40
|
+
openCls: Ext.baseCSSPrefix + 'pickerfield-open',
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* @property {Boolean} isExpanded
|
|
44
|
+
* True if the picker is currently expanded, false if not.
|
|
45
|
+
*/
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* @cfg {Boolean} editable
|
|
49
|
+
* False to prevent the user from typing text directly into the field; the field can only have its value set via
|
|
50
|
+
* selecting a value from the picker. In this state, the picker can also be opened by clicking directly on the input
|
|
51
|
+
* field itself.
|
|
52
|
+
*/
|
|
53
|
+
editable: true,
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
initComponent: function() {
|
|
57
|
+
this.callParent();
|
|
58
|
+
|
|
59
|
+
// Custom events
|
|
60
|
+
this.addEvents(
|
|
61
|
+
/**
|
|
62
|
+
* @event expand
|
|
63
|
+
* Fires when the field's picker is expanded.
|
|
64
|
+
* @param {Ext.form.field.Picker} field This field instance
|
|
65
|
+
*/
|
|
66
|
+
'expand',
|
|
67
|
+
/**
|
|
68
|
+
* @event collapse
|
|
69
|
+
* Fires when the field's picker is collapsed.
|
|
70
|
+
* @param {Ext.form.field.Picker} field This field instance
|
|
71
|
+
*/
|
|
72
|
+
'collapse',
|
|
73
|
+
/**
|
|
74
|
+
* @event select
|
|
75
|
+
* Fires when a value is selected via the picker.
|
|
76
|
+
* @param {Ext.form.field.Picker} field This field instance
|
|
77
|
+
* @param {Object} value The value that was selected. The exact type of this value is dependent on
|
|
78
|
+
* the individual field and picker implementations.
|
|
79
|
+
*/
|
|
80
|
+
'select'
|
|
81
|
+
);
|
|
82
|
+
},
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
initEvents: function() {
|
|
86
|
+
var me = this;
|
|
87
|
+
me.callParent();
|
|
88
|
+
|
|
89
|
+
// Add handlers for keys to expand/collapse the picker
|
|
90
|
+
me.keyNav = new Ext.util.KeyNav(me.inputEl, {
|
|
91
|
+
down: me.onDownArrow,
|
|
92
|
+
esc: {
|
|
93
|
+
handler: me.onEsc,
|
|
94
|
+
scope: me,
|
|
95
|
+
defaultEventAction: false
|
|
96
|
+
},
|
|
97
|
+
scope: me,
|
|
98
|
+
forceKeyDown: true
|
|
99
|
+
});
|
|
100
|
+
|
|
101
|
+
// Non-editable allows opening the picker by clicking the field
|
|
102
|
+
if (!me.editable) {
|
|
103
|
+
me.mon(me.inputEl, 'click', me.onTriggerClick, me);
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
// Disable native browser autocomplete
|
|
107
|
+
if (Ext.isGecko) {
|
|
108
|
+
me.inputEl.dom.setAttribute('autocomplete', 'off');
|
|
109
|
+
}
|
|
110
|
+
},
|
|
111
|
+
|
|
112
|
+
// private
|
|
113
|
+
onEsc: function(e) {
|
|
114
|
+
var me = this;
|
|
115
|
+
if (me.isExpanded) {
|
|
116
|
+
me.collapse();
|
|
117
|
+
e.stopEvent();
|
|
118
|
+
} else {
|
|
119
|
+
// If there's an ancestor Window which will see the ESC event and hide, ensure this Field blurs
|
|
120
|
+
// so that a down arrow will not pop up a disembodied dropdown list.
|
|
121
|
+
if (me.up('window')) {
|
|
122
|
+
me.blur();
|
|
123
|
+
}
|
|
124
|
+
// Otherwise, only stop the ESC key event if it's not going to bubble up to the FocusManager
|
|
125
|
+
else if ((!Ext.FocusManager || !Ext.FocusManager.enabled)) {
|
|
126
|
+
e.stopEvent();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
onDownArrow: function(e) {
|
|
132
|
+
if (!this.isExpanded) {
|
|
133
|
+
// Don't call expand() directly as there may be additional processing involved before
|
|
134
|
+
// expanding, e.g. in the case of a ComboBox query.
|
|
135
|
+
this.onTriggerClick();
|
|
136
|
+
}
|
|
137
|
+
},
|
|
138
|
+
|
|
139
|
+
/**
|
|
140
|
+
* Expands this field's picker dropdown.
|
|
141
|
+
*/
|
|
142
|
+
expand: function() {
|
|
143
|
+
var me = this,
|
|
144
|
+
bodyEl, picker, collapseIf;
|
|
145
|
+
|
|
146
|
+
if (me.rendered && !me.isExpanded && !me.isDestroyed) {
|
|
147
|
+
bodyEl = me.bodyEl;
|
|
148
|
+
picker = me.getPicker();
|
|
149
|
+
collapseIf = me.collapseIf;
|
|
150
|
+
|
|
151
|
+
// show the picker and set isExpanded flag
|
|
152
|
+
picker.show();
|
|
153
|
+
me.isExpanded = true;
|
|
154
|
+
me.alignPicker();
|
|
155
|
+
bodyEl.addCls(me.openCls);
|
|
156
|
+
|
|
157
|
+
// monitor clicking and mousewheel
|
|
158
|
+
me.mon(Ext.getDoc(), {
|
|
159
|
+
mousewheel: collapseIf,
|
|
160
|
+
mousedown: collapseIf,
|
|
161
|
+
scope: me
|
|
162
|
+
});
|
|
163
|
+
Ext.EventManager.onWindowResize(me.alignPicker, me);
|
|
164
|
+
me.fireEvent('expand', me);
|
|
165
|
+
me.onExpand();
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
|
|
169
|
+
onExpand: Ext.emptyFn,
|
|
170
|
+
|
|
171
|
+
/**
|
|
172
|
+
* Aligns the picker to the input element
|
|
173
|
+
* @protected
|
|
174
|
+
*/
|
|
175
|
+
alignPicker: function() {
|
|
176
|
+
var me = this,
|
|
177
|
+
picker = me.getPicker();
|
|
178
|
+
|
|
179
|
+
if (me.isExpanded) {
|
|
180
|
+
if (me.matchFieldWidth) {
|
|
181
|
+
// Auto the height (it will be constrained by min and max width) unless there are no records to display.
|
|
182
|
+
picker.setWidth(me.bodyEl.getWidth());
|
|
183
|
+
}
|
|
184
|
+
if (picker.isFloating()) {
|
|
185
|
+
me.doAlign();
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
},
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Performs the alignment on the picker using the class defaults
|
|
192
|
+
* @private
|
|
193
|
+
*/
|
|
194
|
+
doAlign: function(){
|
|
195
|
+
var me = this,
|
|
196
|
+
picker = me.picker,
|
|
197
|
+
aboveSfx = '-above',
|
|
198
|
+
isAbove;
|
|
199
|
+
|
|
200
|
+
me.picker.alignTo(me.inputEl, me.pickerAlign, me.pickerOffset);
|
|
201
|
+
// add the {openCls}-above class if the picker was aligned above
|
|
202
|
+
// the field due to hitting the bottom of the viewport
|
|
203
|
+
isAbove = picker.el.getY() < me.inputEl.getY();
|
|
204
|
+
me.bodyEl[isAbove ? 'addCls' : 'removeCls'](me.openCls + aboveSfx);
|
|
205
|
+
picker[isAbove ? 'addCls' : 'removeCls'](picker.baseCls + aboveSfx);
|
|
206
|
+
},
|
|
207
|
+
|
|
208
|
+
/**
|
|
209
|
+
* Collapses this field's picker dropdown.
|
|
210
|
+
*/
|
|
211
|
+
collapse: function() {
|
|
212
|
+
if (this.isExpanded && !this.isDestroyed) {
|
|
213
|
+
var me = this,
|
|
214
|
+
openCls = me.openCls,
|
|
215
|
+
picker = me.picker,
|
|
216
|
+
doc = Ext.getDoc(),
|
|
217
|
+
collapseIf = me.collapseIf,
|
|
218
|
+
aboveSfx = '-above';
|
|
219
|
+
|
|
220
|
+
// hide the picker and set isExpanded flag
|
|
221
|
+
picker.hide();
|
|
222
|
+
me.isExpanded = false;
|
|
223
|
+
|
|
224
|
+
// remove the openCls
|
|
225
|
+
me.bodyEl.removeCls([openCls, openCls + aboveSfx]);
|
|
226
|
+
picker.el.removeCls(picker.baseCls + aboveSfx);
|
|
227
|
+
|
|
228
|
+
// remove event listeners
|
|
229
|
+
doc.un('mousewheel', collapseIf, me);
|
|
230
|
+
doc.un('mousedown', collapseIf, me);
|
|
231
|
+
Ext.EventManager.removeResizeListener(me.alignPicker, me);
|
|
232
|
+
me.fireEvent('collapse', me);
|
|
233
|
+
me.onCollapse();
|
|
234
|
+
}
|
|
235
|
+
},
|
|
236
|
+
|
|
237
|
+
onCollapse: Ext.emptyFn,
|
|
238
|
+
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* @private
|
|
242
|
+
* Runs on mousewheel and mousedown of doc to check to see if we should collapse the picker
|
|
243
|
+
*/
|
|
244
|
+
collapseIf: function(e) {
|
|
245
|
+
var me = this;
|
|
246
|
+
|
|
247
|
+
if (!me.isDestroyed && !e.within(me.bodyEl, false, true) && !e.within(me.picker.el, false, true) && !me.isEventWithinPickerLoadMask(e)) {
|
|
248
|
+
me.collapse();
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
|
|
252
|
+
/**
|
|
253
|
+
* Returns a reference to the picker component for this field, creating it if necessary by
|
|
254
|
+
* calling {@link #createPicker}.
|
|
255
|
+
* @return {Ext.Component} The picker component
|
|
256
|
+
*/
|
|
257
|
+
getPicker: function() {
|
|
258
|
+
var me = this;
|
|
259
|
+
return me.picker || (me.picker = me.createPicker());
|
|
260
|
+
},
|
|
261
|
+
|
|
262
|
+
/**
|
|
263
|
+
* @method
|
|
264
|
+
* Creates and returns the component to be used as this field's picker. Must be implemented by subclasses of Picker.
|
|
265
|
+
* The current field should also be passed as a configuration option to the picker component as the pickerField
|
|
266
|
+
* property.
|
|
267
|
+
*/
|
|
268
|
+
createPicker: Ext.emptyFn,
|
|
269
|
+
|
|
270
|
+
/**
|
|
271
|
+
* Handles the trigger click; by default toggles between expanding and collapsing the picker component.
|
|
272
|
+
* @protected
|
|
273
|
+
*/
|
|
274
|
+
onTriggerClick: function() {
|
|
275
|
+
var me = this;
|
|
276
|
+
if (!me.readOnly && !me.disabled) {
|
|
277
|
+
if (me.isExpanded) {
|
|
278
|
+
me.collapse();
|
|
279
|
+
} else {
|
|
280
|
+
me.expand();
|
|
281
|
+
}
|
|
282
|
+
me.inputEl.focus();
|
|
283
|
+
}
|
|
284
|
+
},
|
|
285
|
+
|
|
286
|
+
mimicBlur: function(e) {
|
|
287
|
+
var me = this,
|
|
288
|
+
picker = me.picker;
|
|
289
|
+
// ignore mousedown events within the picker element
|
|
290
|
+
if (!picker || !e.within(picker.el, false, true) && !me.isEventWithinPickerLoadMask(e)) {
|
|
291
|
+
me.callParent(arguments);
|
|
292
|
+
}
|
|
293
|
+
},
|
|
294
|
+
|
|
295
|
+
onDestroy : function(){
|
|
296
|
+
var me = this,
|
|
297
|
+
picker = me.picker;
|
|
298
|
+
|
|
299
|
+
Ext.EventManager.removeResizeListener(me.alignPicker, me);
|
|
300
|
+
Ext.destroy(me.keyNav);
|
|
301
|
+
if (picker) {
|
|
302
|
+
delete picker.pickerField;
|
|
303
|
+
picker.destroy();
|
|
304
|
+
}
|
|
305
|
+
me.callParent();
|
|
306
|
+
},
|
|
307
|
+
|
|
308
|
+
/**
|
|
309
|
+
* returns true if the picker has a load mask and the passed event is within the load mask
|
|
310
|
+
* @private
|
|
311
|
+
* @param {Ext.EventObject} e
|
|
312
|
+
* @return {Boolean}
|
|
313
|
+
*/
|
|
314
|
+
isEventWithinPickerLoadMask: function(e) {
|
|
315
|
+
var loadMask = this.picker.loadMask;
|
|
316
|
+
|
|
317
|
+
return loadMask ? e.within(loadMask.maskEl, false, true) || e.within(loadMask.el, false, true) : false;
|
|
318
|
+
}
|
|
319
|
+
|
|
320
|
+
});
|
|
321
|
+
|