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,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.dom.AbstractElement
|
|
3
|
+
*/
|
|
4
|
+
Ext.dom.AbstractElement.override({
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Gets the x,y coordinates specified by the anchor position on the element.
|
|
8
|
+
* @param {String} [anchor] The specified anchor position (defaults to "c"). See {@link Ext.dom.Element#alignTo}
|
|
9
|
+
* for details on supported anchor positions.
|
|
10
|
+
* @param {Boolean} [local] True to get the local (element top/left-relative) anchor position instead
|
|
11
|
+
* of page coordinates
|
|
12
|
+
* @param {Object} [size] An object containing the size to use for calculating anchor position
|
|
13
|
+
* {width: (target width), height: (target height)} (defaults to the element's current size)
|
|
14
|
+
* @return {Array} [x, y] An array containing the element's x and y coordinates
|
|
15
|
+
*/
|
|
16
|
+
getAnchorXY: function(anchor, local, size) {
|
|
17
|
+
//Passing a different size is useful for pre-calculating anchors,
|
|
18
|
+
//especially for anchored animations that change the el size.
|
|
19
|
+
anchor = (anchor || "tl").toLowerCase();
|
|
20
|
+
size = size || {};
|
|
21
|
+
|
|
22
|
+
var me = this,
|
|
23
|
+
vp = me.dom == document.body || me.dom == document,
|
|
24
|
+
width = size.width || vp ? window.innerWidth: me.getWidth(),
|
|
25
|
+
height = size.height || vp ? window.innerHeight: me.getHeight(),
|
|
26
|
+
xy,
|
|
27
|
+
rnd = Math.round,
|
|
28
|
+
myXY = me.getXY(),
|
|
29
|
+
extraX = vp ? 0: !local ? myXY[0] : 0,
|
|
30
|
+
extraY = vp ? 0: !local ? myXY[1] : 0,
|
|
31
|
+
hash = {
|
|
32
|
+
c: [rnd(width * 0.5), rnd(height * 0.5)],
|
|
33
|
+
t: [rnd(width * 0.5), 0],
|
|
34
|
+
l: [0, rnd(height * 0.5)],
|
|
35
|
+
r: [width, rnd(height * 0.5)],
|
|
36
|
+
b: [rnd(width * 0.5), height],
|
|
37
|
+
tl: [0, 0],
|
|
38
|
+
bl: [0, height],
|
|
39
|
+
br: [width, height],
|
|
40
|
+
tr: [width, 0]
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
xy = hash[anchor];
|
|
44
|
+
return [xy[0] + extraX, xy[1] + extraY];
|
|
45
|
+
},
|
|
46
|
+
|
|
47
|
+
alignToRe: /^([a-z]+)-([a-z]+)(\?)?$/,
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Gets the x,y coordinates to align this element with another element. See {@link Ext.dom.Element#alignTo} for more info on the
|
|
51
|
+
* supported position values.
|
|
52
|
+
* @param {Ext.Element/HTMLElement/String} element The element to align to.
|
|
53
|
+
* @param {String} [position="tl-bl?"] The position to align to.
|
|
54
|
+
* @param {Array} [offsets=[0,0]] Offset the positioning by [x, y]
|
|
55
|
+
* @return {Array} [x, y]
|
|
56
|
+
*/
|
|
57
|
+
getAlignToXY: function(el, position, offsets, local) {
|
|
58
|
+
local = !!local;
|
|
59
|
+
el = Ext.get(el);
|
|
60
|
+
|
|
61
|
+
//<debug>
|
|
62
|
+
if (!el || !el.dom) {
|
|
63
|
+
throw new Error("Element.alignToXY with an element that doesn't exist");
|
|
64
|
+
}
|
|
65
|
+
//</debug>
|
|
66
|
+
offsets = offsets || [0, 0];
|
|
67
|
+
|
|
68
|
+
if (!position || position == '?') {
|
|
69
|
+
position = 'tl-bl?';
|
|
70
|
+
}
|
|
71
|
+
else if (! (/-/).test(position) && position !== "") {
|
|
72
|
+
position = 'tl-' + position;
|
|
73
|
+
}
|
|
74
|
+
position = position.toLowerCase();
|
|
75
|
+
|
|
76
|
+
var me = this,
|
|
77
|
+
matches = position.match(this.alignToRe),
|
|
78
|
+
dw = window.innerWidth,
|
|
79
|
+
dh = window.innerHeight,
|
|
80
|
+
p1 = "",
|
|
81
|
+
p2 = "",
|
|
82
|
+
a1,
|
|
83
|
+
a2,
|
|
84
|
+
x,
|
|
85
|
+
y,
|
|
86
|
+
swapX,
|
|
87
|
+
swapY,
|
|
88
|
+
p1x,
|
|
89
|
+
p1y,
|
|
90
|
+
p2x,
|
|
91
|
+
p2y,
|
|
92
|
+
width,
|
|
93
|
+
height,
|
|
94
|
+
region,
|
|
95
|
+
constrain;
|
|
96
|
+
|
|
97
|
+
if (!matches) {
|
|
98
|
+
throw "Element.alignTo with an invalid alignment " + position;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
p1 = matches[1];
|
|
102
|
+
p2 = matches[2];
|
|
103
|
+
constrain = !!matches[3];
|
|
104
|
+
|
|
105
|
+
//Subtract the aligned el's internal xy from the target's offset xy
|
|
106
|
+
//plus custom offset to get the aligned el's new offset xy
|
|
107
|
+
a1 = me.getAnchorXY(p1, true);
|
|
108
|
+
a2 = el.getAnchorXY(p2, local);
|
|
109
|
+
|
|
110
|
+
x = a2[0] - a1[0] + offsets[0];
|
|
111
|
+
y = a2[1] - a1[1] + offsets[1];
|
|
112
|
+
|
|
113
|
+
if (constrain) {
|
|
114
|
+
width = me.getWidth();
|
|
115
|
+
height = me.getHeight();
|
|
116
|
+
|
|
117
|
+
region = el.getPageBox();
|
|
118
|
+
|
|
119
|
+
//If we are at a viewport boundary and the aligned el is anchored on a target border that is
|
|
120
|
+
//perpendicular to the vp border, allow the aligned el to slide on that border,
|
|
121
|
+
//otherwise swap the aligned el to the opposite border of the target.
|
|
122
|
+
p1y = p1.charAt(0);
|
|
123
|
+
p1x = p1.charAt(p1.length - 1);
|
|
124
|
+
p2y = p2.charAt(0);
|
|
125
|
+
p2x = p2.charAt(p2.length - 1);
|
|
126
|
+
|
|
127
|
+
swapY = ((p1y == "t" && p2y == "b") || (p1y == "b" && p2y == "t"));
|
|
128
|
+
swapX = ((p1x == "r" && p2x == "l") || (p1x == "l" && p2x == "r"));
|
|
129
|
+
|
|
130
|
+
if (x + width > dw) {
|
|
131
|
+
x = swapX ? region.left - width: dw - width;
|
|
132
|
+
}
|
|
133
|
+
if (x < 0) {
|
|
134
|
+
x = swapX ? region.right: 0;
|
|
135
|
+
}
|
|
136
|
+
if (y + height > dh) {
|
|
137
|
+
y = swapY ? region.top - height: dh - height;
|
|
138
|
+
}
|
|
139
|
+
if (y < 0) {
|
|
140
|
+
y = swapY ? region.bottom: 0;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return [x, y];
|
|
145
|
+
},
|
|
146
|
+
|
|
147
|
+
// private
|
|
148
|
+
getAnchor: function(){
|
|
149
|
+
var data = (this.$cache || this.getCache()).data,
|
|
150
|
+
anchor;
|
|
151
|
+
|
|
152
|
+
if (!this.dom) {
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
anchor = data._anchor;
|
|
156
|
+
|
|
157
|
+
if(!anchor){
|
|
158
|
+
anchor = data._anchor = {};
|
|
159
|
+
}
|
|
160
|
+
return anchor;
|
|
161
|
+
},
|
|
162
|
+
|
|
163
|
+
// private ==> used outside of core
|
|
164
|
+
adjustForConstraints: function(xy, parent) {
|
|
165
|
+
var vector = this.getConstrainVector(parent, xy);
|
|
166
|
+
if (vector) {
|
|
167
|
+
xy[0] += vector[0];
|
|
168
|
+
xy[1] += vector[1];
|
|
169
|
+
}
|
|
170
|
+
return xy;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
});
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.dom.AbstractElement
|
|
3
|
+
*/
|
|
4
|
+
Ext.dom.AbstractElement.addMethods({
|
|
5
|
+
/**
|
|
6
|
+
* Appends the passed element(s) to this element
|
|
7
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement} el
|
|
8
|
+
* The id of the node, a DOM Node or an existing Element.
|
|
9
|
+
* @return {Ext.dom.AbstractElement} This element
|
|
10
|
+
*/
|
|
11
|
+
appendChild: function(el) {
|
|
12
|
+
return Ext.get(el).appendTo(this);
|
|
13
|
+
},
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Appends this element to the passed element
|
|
17
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement} el The new parent element.
|
|
18
|
+
* The id of the node, a DOM Node or an existing Element.
|
|
19
|
+
* @return {Ext.dom.AbstractElement} This element
|
|
20
|
+
*/
|
|
21
|
+
appendTo: function(el) {
|
|
22
|
+
Ext.getDom(el).appendChild(this.dom);
|
|
23
|
+
return this;
|
|
24
|
+
},
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Inserts this element before the passed element in the DOM
|
|
28
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement} el The element before which this element will be inserted.
|
|
29
|
+
* The id of the node, a DOM Node or an existing Element.
|
|
30
|
+
* @return {Ext.dom.AbstractElement} This element
|
|
31
|
+
*/
|
|
32
|
+
insertBefore: function(el) {
|
|
33
|
+
el = Ext.getDom(el);
|
|
34
|
+
el.parentNode.insertBefore(this.dom, el);
|
|
35
|
+
return this;
|
|
36
|
+
},
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* Inserts this element after the passed element in the DOM
|
|
40
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement} el The element to insert after.
|
|
41
|
+
* The id of the node, a DOM Node or an existing Element.
|
|
42
|
+
* @return {Ext.dom.AbstractElement} This element
|
|
43
|
+
*/
|
|
44
|
+
insertAfter: function(el) {
|
|
45
|
+
el = Ext.getDom(el);
|
|
46
|
+
el.parentNode.insertBefore(this.dom, el.nextSibling);
|
|
47
|
+
return this;
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Inserts (or creates) an element (or DomHelper config) as the first child of this element
|
|
52
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement/Object} el The id or element to insert or a DomHelper config
|
|
53
|
+
* to create and insert
|
|
54
|
+
* @return {Ext.dom.AbstractElement} The new child
|
|
55
|
+
*/
|
|
56
|
+
insertFirst: function(el, returnDom) {
|
|
57
|
+
el = el || {};
|
|
58
|
+
if (el.nodeType || el.dom || typeof el == 'string') { // element
|
|
59
|
+
el = Ext.getDom(el);
|
|
60
|
+
this.dom.insertBefore(el, this.dom.firstChild);
|
|
61
|
+
return !returnDom ? Ext.get(el) : el;
|
|
62
|
+
}
|
|
63
|
+
else { // dh config
|
|
64
|
+
return this.createChild(el, this.dom.firstChild, returnDom);
|
|
65
|
+
}
|
|
66
|
+
},
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* Inserts (or creates) the passed element (or DomHelper config) as a sibling of this element
|
|
70
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement/Object/Array} el The id, element to insert or a DomHelper config
|
|
71
|
+
* to create and insert *or* an array of any of those.
|
|
72
|
+
* @param {String} [where='before'] 'before' or 'after'
|
|
73
|
+
* @param {Boolean} [returnDom=false] True to return the .;ll;l,raw DOM element instead of Ext.dom.AbstractElement
|
|
74
|
+
* @return {Ext.dom.AbstractElement} The inserted Element. If an array is passed, the last inserted element is returned.
|
|
75
|
+
*/
|
|
76
|
+
insertSibling: function(el, where, returnDom){
|
|
77
|
+
var me = this,
|
|
78
|
+
isAfter = (where || 'before').toLowerCase() == 'after',
|
|
79
|
+
rt, insertEl, eLen, e;
|
|
80
|
+
|
|
81
|
+
if (Ext.isArray(el)) {
|
|
82
|
+
insertEl = me;
|
|
83
|
+
eLen = el.length;
|
|
84
|
+
|
|
85
|
+
for (e = 0; e < eLen; e++) {
|
|
86
|
+
rt = Ext.fly(insertEl, '_internal').insertSibling(el[e], where, returnDom);
|
|
87
|
+
|
|
88
|
+
if (isAfter) {
|
|
89
|
+
insertEl = rt;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return rt;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
el = el || {};
|
|
97
|
+
|
|
98
|
+
if(el.nodeType || el.dom){
|
|
99
|
+
rt = me.dom.parentNode.insertBefore(Ext.getDom(el), isAfter ? me.dom.nextSibling : me.dom);
|
|
100
|
+
if (!returnDom) {
|
|
101
|
+
rt = Ext.get(rt);
|
|
102
|
+
}
|
|
103
|
+
}else{
|
|
104
|
+
if (isAfter && !me.dom.nextSibling) {
|
|
105
|
+
rt = Ext.core.DomHelper.append(me.dom.parentNode, el, !returnDom);
|
|
106
|
+
} else {
|
|
107
|
+
rt = Ext.core.DomHelper[isAfter ? 'insertAfter' : 'insertBefore'](me.dom, el, !returnDom);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return rt;
|
|
111
|
+
},
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Replaces the passed element with this element
|
|
115
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement} el The element to replace.
|
|
116
|
+
* The id of the node, a DOM Node or an existing Element.
|
|
117
|
+
* @return {Ext.dom.AbstractElement} This element
|
|
118
|
+
*/
|
|
119
|
+
replace: function(el) {
|
|
120
|
+
el = Ext.get(el);
|
|
121
|
+
this.insertBefore(el);
|
|
122
|
+
el.remove();
|
|
123
|
+
return this;
|
|
124
|
+
},
|
|
125
|
+
|
|
126
|
+
/**
|
|
127
|
+
* Replaces this element with the passed element
|
|
128
|
+
* @param {String/HTMLElement/Ext.dom.AbstractElement/Object} el The new element (id of the node, a DOM Node
|
|
129
|
+
* or an existing Element) or a DomHelper config of an element to create
|
|
130
|
+
* @return {Ext.dom.AbstractElement} This element
|
|
131
|
+
*/
|
|
132
|
+
replaceWith: function(el){
|
|
133
|
+
var me = this;
|
|
134
|
+
|
|
135
|
+
if(el.nodeType || el.dom || typeof el == 'string'){
|
|
136
|
+
el = Ext.get(el);
|
|
137
|
+
me.dom.parentNode.insertBefore(el, me.dom);
|
|
138
|
+
}else{
|
|
139
|
+
el = Ext.core.DomHelper.insertBefore(me.dom, el);
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
delete Ext.cache[me.id];
|
|
143
|
+
Ext.removeNode(me.dom);
|
|
144
|
+
me.id = Ext.id(me.dom = el);
|
|
145
|
+
Ext.dom.AbstractElement.addToCache(me.isFlyweight ? new Ext.dom.AbstractElement(me.dom) : me);
|
|
146
|
+
return me;
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Creates the passed DomHelper config and appends it to this element or optionally inserts it before the passed child element.
|
|
151
|
+
* @param {Object} config DomHelper element config object. If no tag is specified (e.g., {tag:'input'}) then a div will be
|
|
152
|
+
* automatically generated with the specified attributes.
|
|
153
|
+
* @param {HTMLElement} [insertBefore] a child element of this element
|
|
154
|
+
* @param {Boolean} [returnDom=false] true to return the dom node instead of creating an Element
|
|
155
|
+
* @return {Ext.dom.AbstractElement} The new child element
|
|
156
|
+
*/
|
|
157
|
+
createChild: function(config, insertBefore, returnDom) {
|
|
158
|
+
config = config || {tag:'div'};
|
|
159
|
+
if (insertBefore) {
|
|
160
|
+
return Ext.core.DomHelper.insertBefore(insertBefore, config, returnDom !== true);
|
|
161
|
+
}
|
|
162
|
+
else {
|
|
163
|
+
return Ext.core.DomHelper[!this.dom.firstChild ? 'insertFirst' : 'append'](this.dom, config, returnDom !== true);
|
|
164
|
+
}
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
/**
|
|
168
|
+
* Creates and wraps this element with another element
|
|
169
|
+
* @param {Object} [config] DomHelper element config object for the wrapper element or null for an empty div
|
|
170
|
+
* @param {Boolean} [returnDom=false] True to return the raw DOM element instead of Ext.dom.AbstractElement
|
|
171
|
+
* @return {HTMLElement/Ext.dom.AbstractElement} The newly created wrapper element
|
|
172
|
+
*/
|
|
173
|
+
wrap: function(config, returnDom) {
|
|
174
|
+
var newEl = Ext.core.DomHelper.insertBefore(this.dom, config || {tag: "div"}, !returnDom),
|
|
175
|
+
d = newEl.dom || newEl;
|
|
176
|
+
|
|
177
|
+
d.appendChild(this.dom);
|
|
178
|
+
return newEl;
|
|
179
|
+
},
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* Inserts an html fragment into this element
|
|
183
|
+
* @param {String} where Where to insert the html in relation to this element - beforeBegin, afterBegin, beforeEnd, afterEnd.
|
|
184
|
+
* See {@link Ext.dom.Helper#insertHtml} for details.
|
|
185
|
+
* @param {String} html The HTML fragment
|
|
186
|
+
* @param {Boolean} [returnEl=false] True to return an Ext.dom.AbstractElement
|
|
187
|
+
* @return {HTMLElement/Ext.dom.AbstractElement} The inserted node (or nearest related if more than 1 inserted)
|
|
188
|
+
*/
|
|
189
|
+
insertHtml: function(where, html, returnEl) {
|
|
190
|
+
var el = Ext.core.DomHelper.insertHtml(where, this.dom, html);
|
|
191
|
+
return returnEl ? Ext.get(el) : el;
|
|
192
|
+
}
|
|
193
|
+
});
|
|
@@ -0,0 +1,681 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.dom.AbstractElement
|
|
3
|
+
* @extend Ext.Base
|
|
4
|
+
* @private
|
|
5
|
+
*/
|
|
6
|
+
(function() {
|
|
7
|
+
|
|
8
|
+
var document = window.document,
|
|
9
|
+
trimRe = /^\s+|\s+$/g,
|
|
10
|
+
whitespaceRe = /\s/;
|
|
11
|
+
|
|
12
|
+
if (!Ext.cache){
|
|
13
|
+
Ext.cache = {};
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
Ext.define('Ext.dom.AbstractElement', {
|
|
17
|
+
|
|
18
|
+
inheritableStatics: {
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Retrieves Ext.dom.Element objects. {@link Ext#get} is alias for {@link Ext.dom.Element#get}.
|
|
22
|
+
*
|
|
23
|
+
* **This method does not retrieve {@link Ext.Component Component}s.** This method retrieves Ext.dom.Element
|
|
24
|
+
* objects which encapsulate DOM elements. To retrieve a Component by its ID, use {@link Ext.ComponentManager#get}.
|
|
25
|
+
*
|
|
26
|
+
* Uses simple caching to consistently return the same object. Automatically fixes if an object was recreated with
|
|
27
|
+
* the same id via AJAX or DOM.
|
|
28
|
+
*
|
|
29
|
+
* @param {String/HTMLElement/Ext.Element} el The id of the node, a DOM Node or an existing Element.
|
|
30
|
+
* @return {Ext.dom.Element} The Element object (or null if no matching element was found)
|
|
31
|
+
* @static
|
|
32
|
+
* @inheritable
|
|
33
|
+
*/
|
|
34
|
+
get: function(el) {
|
|
35
|
+
var me = this,
|
|
36
|
+
El = Ext.dom.Element,
|
|
37
|
+
cache,
|
|
38
|
+
extEl,
|
|
39
|
+
dom,
|
|
40
|
+
id;
|
|
41
|
+
|
|
42
|
+
if (!el) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
if (typeof el == "string") { // element id
|
|
47
|
+
if (el == Ext.windowId) {
|
|
48
|
+
return El.get(window);
|
|
49
|
+
} else if (el == Ext.documentId) {
|
|
50
|
+
return El.get(document);
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
cache = Ext.cache[el];
|
|
54
|
+
// This code is here to catch the case where we've got a reference to a document of an iframe
|
|
55
|
+
// It getElementById will fail because it's not part of the document, so if we're skipping
|
|
56
|
+
// GC it means it's a window/document object that isn't the default window/document, which we have
|
|
57
|
+
// already handled above
|
|
58
|
+
if (cache && cache.skipGarbageCollection) {
|
|
59
|
+
extEl = cache.el;
|
|
60
|
+
return extEl;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
if (!(dom = document.getElementById(el))) {
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
if (cache && cache.el) {
|
|
68
|
+
extEl = cache.el;
|
|
69
|
+
extEl.dom = dom;
|
|
70
|
+
} else {
|
|
71
|
+
// Force new element if there's a cache but no el attached
|
|
72
|
+
extEl = new El(dom, !!cache);
|
|
73
|
+
}
|
|
74
|
+
return extEl;
|
|
75
|
+
} else if (el.tagName) { // dom element
|
|
76
|
+
if (!(id = el.id)) {
|
|
77
|
+
id = Ext.id(el);
|
|
78
|
+
}
|
|
79
|
+
cache = Ext.cache[id];
|
|
80
|
+
if (cache && cache.el) {
|
|
81
|
+
extEl = Ext.cache[id].el;
|
|
82
|
+
extEl.dom = el;
|
|
83
|
+
} else {
|
|
84
|
+
// Force new element if there's a cache but no el attached
|
|
85
|
+
extEl = new El(el, !!cache);
|
|
86
|
+
}
|
|
87
|
+
return extEl;
|
|
88
|
+
} else if (el instanceof me) {
|
|
89
|
+
if (el != me.docEl && el != me.winEl) {
|
|
90
|
+
// refresh dom element in case no longer valid,
|
|
91
|
+
// catch case where it hasn't been appended
|
|
92
|
+
el.dom = document.getElementById(el.id) || el.dom;
|
|
93
|
+
}
|
|
94
|
+
return el;
|
|
95
|
+
} else if (el.isComposite) {
|
|
96
|
+
return el;
|
|
97
|
+
} else if (Ext.isArray(el)) {
|
|
98
|
+
return me.select(el);
|
|
99
|
+
} else if (el === document) {
|
|
100
|
+
// create a bogus element object representing the document object
|
|
101
|
+
if (!me.docEl) {
|
|
102
|
+
me.docEl = Ext.Object.chain(El.prototype);
|
|
103
|
+
me.docEl.dom = document;
|
|
104
|
+
me.docEl.id = Ext.id(document);
|
|
105
|
+
me.addToCache(me.docEl);
|
|
106
|
+
}
|
|
107
|
+
return me.docEl;
|
|
108
|
+
} else if (el === window) {
|
|
109
|
+
if (!me.winEl) {
|
|
110
|
+
me.winEl = Ext.Object.chain(El.prototype);
|
|
111
|
+
me.winEl.dom = window;
|
|
112
|
+
me.winEl.id = Ext.id(window);
|
|
113
|
+
me.addToCache(me.winEl);
|
|
114
|
+
}
|
|
115
|
+
return me.winEl;
|
|
116
|
+
}
|
|
117
|
+
return null;
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
addToCache: function(el, id) {
|
|
121
|
+
if (el) {
|
|
122
|
+
Ext.addCacheEntry(id, el);
|
|
123
|
+
}
|
|
124
|
+
return el;
|
|
125
|
+
},
|
|
126
|
+
|
|
127
|
+
addMethods: function() {
|
|
128
|
+
this.override.apply(this, arguments);
|
|
129
|
+
},
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* <p>Returns an array of unique class names based upon the input strings, or string arrays.</p>
|
|
133
|
+
* <p>The number of parameters is unlimited.</p>
|
|
134
|
+
* <p>Example</p><code><pre>
|
|
135
|
+
// Add x-invalid and x-mandatory classes, do not duplicate
|
|
136
|
+
myElement.dom.className = Ext.core.Element.mergeClsList(this.initialClasses, 'x-invalid x-mandatory');
|
|
137
|
+
</pre></code>
|
|
138
|
+
* @param {Mixed} clsList1 A string of class names, or an array of class names.
|
|
139
|
+
* @param {Mixed} clsList2 A string of class names, or an array of class names.
|
|
140
|
+
* @return {Array} An array of strings representing remaining unique, merged class names. If class names were added to the first list, the <code>changed</code> property will be <code>true</code>.
|
|
141
|
+
* @static
|
|
142
|
+
* @inheritable
|
|
143
|
+
*/
|
|
144
|
+
mergeClsList: function() {
|
|
145
|
+
var clsList, clsHash = {},
|
|
146
|
+
i, length, j, listLength, clsName, result = [],
|
|
147
|
+
changed = false;
|
|
148
|
+
|
|
149
|
+
for (i = 0, length = arguments.length; i < length; i++) {
|
|
150
|
+
clsList = arguments[i];
|
|
151
|
+
if (Ext.isString(clsList)) {
|
|
152
|
+
clsList = clsList.replace(trimRe, '').split(whitespaceRe);
|
|
153
|
+
}
|
|
154
|
+
if (clsList) {
|
|
155
|
+
for (j = 0, listLength = clsList.length; j < listLength; j++) {
|
|
156
|
+
clsName = clsList[j];
|
|
157
|
+
if (!clsHash[clsName]) {
|
|
158
|
+
if (i) {
|
|
159
|
+
changed = true;
|
|
160
|
+
}
|
|
161
|
+
clsHash[clsName] = true;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
for (clsName in clsHash) {
|
|
168
|
+
result.push(clsName);
|
|
169
|
+
}
|
|
170
|
+
result.changed = changed;
|
|
171
|
+
return result;
|
|
172
|
+
},
|
|
173
|
+
|
|
174
|
+
/**
|
|
175
|
+
* <p>Returns an array of unique class names deom the first parameter with all class names
|
|
176
|
+
* from the second parameter removed.</p>
|
|
177
|
+
* <p>Example</p><code><pre>
|
|
178
|
+
// Remove x-invalid and x-mandatory classes if present.
|
|
179
|
+
myElement.dom.className = Ext.core.Element.removeCls(this.initialClasses, 'x-invalid x-mandatory');
|
|
180
|
+
</pre></code>
|
|
181
|
+
* @param {Mixed} existingClsList A string of class names, or an array of class names.
|
|
182
|
+
* @param {Mixed} removeClsList A string of class names, or an array of class names to remove from <code>existingClsList</code>.
|
|
183
|
+
* @return {Array} An array of strings representing remaining class names. If class names were removed, the <code>changed</code> property will be <code>true</code>.
|
|
184
|
+
* @static
|
|
185
|
+
* @inheritable
|
|
186
|
+
*/
|
|
187
|
+
removeCls: function(existingClsList, removeClsList) {
|
|
188
|
+
var clsHash = {},
|
|
189
|
+
i, length, clsName, result = [],
|
|
190
|
+
changed = false;
|
|
191
|
+
|
|
192
|
+
if (existingClsList) {
|
|
193
|
+
if (Ext.isString(existingClsList)) {
|
|
194
|
+
existingClsList = existingClsList.replace(trimRe, '').split(whitespaceRe);
|
|
195
|
+
}
|
|
196
|
+
for (i = 0, length = existingClsList.length; i < length; i++) {
|
|
197
|
+
clsHash[existingClsList[i]] = true;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
if (removeClsList) {
|
|
201
|
+
if (Ext.isString(removeClsList)) {
|
|
202
|
+
removeClsList = removeClsList.split(whitespaceRe);
|
|
203
|
+
}
|
|
204
|
+
for (i = 0, length = removeClsList.length; i < length; i++) {
|
|
205
|
+
clsName = removeClsList[i];
|
|
206
|
+
if (clsHash[clsName]) {
|
|
207
|
+
changed = true;
|
|
208
|
+
delete clsHash[clsName];
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
for (clsName in clsHash) {
|
|
213
|
+
result.push(clsName);
|
|
214
|
+
}
|
|
215
|
+
result.changed = changed;
|
|
216
|
+
return result;
|
|
217
|
+
},
|
|
218
|
+
|
|
219
|
+
/**
|
|
220
|
+
* @property
|
|
221
|
+
* Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
|
|
222
|
+
* Use the CSS 'visibility' property to hide the element.
|
|
223
|
+
*
|
|
224
|
+
* Note that in this mode, {@link #isVisible} may return true for an element even though
|
|
225
|
+
* it actually has a parent element that is hidden. For this reason, and in most cases,
|
|
226
|
+
* using the {@link #OFFSETS} mode is a better choice.
|
|
227
|
+
* @static
|
|
228
|
+
* @inheritable
|
|
229
|
+
*/
|
|
230
|
+
VISIBILITY: 1,
|
|
231
|
+
|
|
232
|
+
/**
|
|
233
|
+
* @property
|
|
234
|
+
* Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
|
|
235
|
+
* Use the CSS 'display' property to hide the element.
|
|
236
|
+
* @static
|
|
237
|
+
* @inheritable
|
|
238
|
+
*/
|
|
239
|
+
DISPLAY: 2,
|
|
240
|
+
|
|
241
|
+
/**
|
|
242
|
+
* @property
|
|
243
|
+
* Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
|
|
244
|
+
* Use CSS absolute positioning and top/left offsets to hide the element.
|
|
245
|
+
* @static
|
|
246
|
+
* @inheritable
|
|
247
|
+
*/
|
|
248
|
+
OFFSETS: 3,
|
|
249
|
+
|
|
250
|
+
/**
|
|
251
|
+
* @property
|
|
252
|
+
* Visibility mode constant for use with {@link Ext.dom.Element#setVisibilityMode}.
|
|
253
|
+
* Add or remove the {@link Ext.Layer#visibilityCls} class to hide the element.
|
|
254
|
+
* @static
|
|
255
|
+
* @inheritable
|
|
256
|
+
*/
|
|
257
|
+
ASCLASS: 4
|
|
258
|
+
},
|
|
259
|
+
|
|
260
|
+
constructor: function(element, forceNew) {
|
|
261
|
+
var me = this,
|
|
262
|
+
dom = typeof element == 'string'
|
|
263
|
+
? document.getElementById(element)
|
|
264
|
+
: element,
|
|
265
|
+
id;
|
|
266
|
+
|
|
267
|
+
if (!dom) {
|
|
268
|
+
return null;
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
id = dom.id;
|
|
272
|
+
if (!forceNew && id && Ext.cache[id]) {
|
|
273
|
+
// element object already exists
|
|
274
|
+
return Ext.cache[id].el;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* @property {HTMLElement} dom
|
|
279
|
+
* The DOM element
|
|
280
|
+
*/
|
|
281
|
+
me.dom = dom;
|
|
282
|
+
|
|
283
|
+
/**
|
|
284
|
+
* @property {String} id
|
|
285
|
+
* The DOM element ID
|
|
286
|
+
*/
|
|
287
|
+
me.id = id || Ext.id(dom);
|
|
288
|
+
|
|
289
|
+
me.self.addToCache(me);
|
|
290
|
+
},
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Sets the passed attributes as attributes of this element (a style attribute can be a string, object or function)
|
|
294
|
+
* @param {Object} o The object with the attributes
|
|
295
|
+
* @param {Boolean} [useSet=true] false to override the default setAttribute to use expandos.
|
|
296
|
+
* @return {Ext.dom.Element} this
|
|
297
|
+
*/
|
|
298
|
+
set: function(o, useSet) {
|
|
299
|
+
var el = this.dom,
|
|
300
|
+
attr,
|
|
301
|
+
value;
|
|
302
|
+
|
|
303
|
+
for (attr in o) {
|
|
304
|
+
if (o.hasOwnProperty(attr)) {
|
|
305
|
+
value = o[attr];
|
|
306
|
+
if (attr == 'style') {
|
|
307
|
+
this.applyStyles(value);
|
|
308
|
+
}
|
|
309
|
+
else if (attr == 'cls') {
|
|
310
|
+
el.className = value;
|
|
311
|
+
}
|
|
312
|
+
else if (useSet !== false) {
|
|
313
|
+
if (value === undefined) {
|
|
314
|
+
el.removeAttribute(attr);
|
|
315
|
+
} else {
|
|
316
|
+
el.setAttribute(attr, value);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
else {
|
|
320
|
+
el[attr] = value;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
return this;
|
|
325
|
+
},
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* @property {String} defaultUnit
|
|
329
|
+
* The default unit to append to CSS values where a unit isn't provided.
|
|
330
|
+
*/
|
|
331
|
+
defaultUnit: "px",
|
|
332
|
+
|
|
333
|
+
/**
|
|
334
|
+
* Returns true if this element matches the passed simple selector (e.g. div.some-class or span:first-child)
|
|
335
|
+
* @param {String} selector The simple selector to test
|
|
336
|
+
* @return {Boolean} True if this element matches the selector, else false
|
|
337
|
+
*/
|
|
338
|
+
is: function(simpleSelector) {
|
|
339
|
+
return Ext.DomQuery.is(this.dom, simpleSelector);
|
|
340
|
+
},
|
|
341
|
+
|
|
342
|
+
/**
|
|
343
|
+
* Returns the value of the "value" attribute
|
|
344
|
+
* @param {Boolean} asNumber true to parse the value as a number
|
|
345
|
+
* @return {String/Number}
|
|
346
|
+
*/
|
|
347
|
+
getValue: function(asNumber) {
|
|
348
|
+
var val = this.dom.value;
|
|
349
|
+
return asNumber ? parseInt(val, 10) : val;
|
|
350
|
+
},
|
|
351
|
+
|
|
352
|
+
/**
|
|
353
|
+
* Removes this element's dom reference. Note that event and cache removal is handled at {@link Ext#removeNode
|
|
354
|
+
* Ext.removeNode}
|
|
355
|
+
*/
|
|
356
|
+
remove: function() {
|
|
357
|
+
var me = this,
|
|
358
|
+
dom = me.dom;
|
|
359
|
+
|
|
360
|
+
if (dom) {
|
|
361
|
+
Ext.removeNode(dom);
|
|
362
|
+
delete me.dom;
|
|
363
|
+
}
|
|
364
|
+
},
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Returns true if this element is an ancestor of the passed element
|
|
368
|
+
* @param {HTMLElement/String} el The element to check
|
|
369
|
+
* @return {Boolean} True if this element is an ancestor of el, else false
|
|
370
|
+
*/
|
|
371
|
+
contains: function(el) {
|
|
372
|
+
if (!el) {
|
|
373
|
+
return false;
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
var me = this,
|
|
377
|
+
dom = el.dom || el;
|
|
378
|
+
|
|
379
|
+
// we need el-contains-itself logic here because isAncestor does not do that:
|
|
380
|
+
return (dom === me.dom) || Ext.dom.AbstractElement.isAncestor(me.dom, dom);
|
|
381
|
+
},
|
|
382
|
+
|
|
383
|
+
/**
|
|
384
|
+
* Returns the value of an attribute from the element's underlying DOM node.
|
|
385
|
+
* @param {String} name The attribute name
|
|
386
|
+
* @param {String} [namespace] The namespace in which to look for the attribute
|
|
387
|
+
* @return {String} The attribute value
|
|
388
|
+
*/
|
|
389
|
+
getAttribute: function(name, ns) {
|
|
390
|
+
var dom = this.dom;
|
|
391
|
+
return dom.getAttributeNS(ns, name) || dom.getAttribute(ns + ":" + name) || dom.getAttribute(name) || dom[name];
|
|
392
|
+
},
|
|
393
|
+
|
|
394
|
+
/**
|
|
395
|
+
* Update the innerHTML of this element
|
|
396
|
+
* @param {String} html The new HTML
|
|
397
|
+
* @return {Ext.dom.Element} this
|
|
398
|
+
*/
|
|
399
|
+
update: function(html) {
|
|
400
|
+
if (this.dom) {
|
|
401
|
+
this.dom.innerHTML = html;
|
|
402
|
+
}
|
|
403
|
+
return this;
|
|
404
|
+
},
|
|
405
|
+
|
|
406
|
+
|
|
407
|
+
/**
|
|
408
|
+
* Set the innerHTML of this element
|
|
409
|
+
* @param {String} html The new HTML
|
|
410
|
+
* @return {Ext.Element} this
|
|
411
|
+
*/
|
|
412
|
+
setHTML: function(html) {
|
|
413
|
+
if(this.dom) {
|
|
414
|
+
this.dom.innerHTML = html;
|
|
415
|
+
}
|
|
416
|
+
return this;
|
|
417
|
+
},
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Returns the innerHTML of an Element or an empty string if the element's
|
|
421
|
+
* dom no longer exists.
|
|
422
|
+
*/
|
|
423
|
+
getHTML: function() {
|
|
424
|
+
return this.dom ? this.dom.innerHTML : '';
|
|
425
|
+
},
|
|
426
|
+
|
|
427
|
+
/**
|
|
428
|
+
* Hide this element - Uses display mode to determine whether to use "display" or "visibility". See {@link #setVisible}.
|
|
429
|
+
* @param {Boolean/Object} animate (optional) true for the default animation or a standard Element animation config object
|
|
430
|
+
* @return {Ext.Element} this
|
|
431
|
+
*/
|
|
432
|
+
hide: function() {
|
|
433
|
+
this.setVisible(false);
|
|
434
|
+
return this;
|
|
435
|
+
},
|
|
436
|
+
|
|
437
|
+
/**
|
|
438
|
+
* Show this element - Uses display mode to determine whether to use "display" or "visibility". See {@link #setVisible}.
|
|
439
|
+
* @param {Boolean/Object} animate (optional) true for the default animation or a standard Element animation config object
|
|
440
|
+
* @return {Ext.Element} this
|
|
441
|
+
*/
|
|
442
|
+
show: function() {
|
|
443
|
+
this.setVisible(true);
|
|
444
|
+
return this;
|
|
445
|
+
},
|
|
446
|
+
|
|
447
|
+
/**
|
|
448
|
+
* Sets the visibility of the element (see details). If the visibilityMode is set to Element.DISPLAY, it will use
|
|
449
|
+
* the display property to hide the element, otherwise it uses visibility. The default is to hide and show using the visibility property.
|
|
450
|
+
* @param {Boolean} visible Whether the element is visible
|
|
451
|
+
* @param {Boolean/Object} animate (optional) True for the default animation, or a standard Element animation config object
|
|
452
|
+
* @return {Ext.Element} this
|
|
453
|
+
*/
|
|
454
|
+
setVisible: function(visible, animate) {
|
|
455
|
+
var me = this,
|
|
456
|
+
statics = me.self,
|
|
457
|
+
mode = me.getVisibilityMode(),
|
|
458
|
+
prefix = Ext.baseCSSPrefix;
|
|
459
|
+
|
|
460
|
+
switch (mode) {
|
|
461
|
+
case statics.VISIBILITY:
|
|
462
|
+
me.removeCls([prefix + 'hidden-display', prefix + 'hidden-offsets']);
|
|
463
|
+
me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-visibility');
|
|
464
|
+
break;
|
|
465
|
+
|
|
466
|
+
case statics.DISPLAY:
|
|
467
|
+
me.removeCls([prefix + 'hidden-visibility', prefix + 'hidden-offsets']);
|
|
468
|
+
me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-display');
|
|
469
|
+
break;
|
|
470
|
+
|
|
471
|
+
case statics.OFFSETS:
|
|
472
|
+
me.removeCls([prefix + 'hidden-visibility', prefix + 'hidden-display']);
|
|
473
|
+
me[visible ? 'removeCls' : 'addCls'](prefix + 'hidden-offsets');
|
|
474
|
+
break;
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
return me;
|
|
478
|
+
},
|
|
479
|
+
|
|
480
|
+
getVisibilityMode: function() {
|
|
481
|
+
// Only flyweights won't have a $cache object, by calling getCache the cache
|
|
482
|
+
// will be created for future accesses. As such, we're eliminating the method
|
|
483
|
+
// call since it's mostly redundant
|
|
484
|
+
var data = (this.$cache || this.getCache()).data,
|
|
485
|
+
visMode = data.visibilityMode;
|
|
486
|
+
|
|
487
|
+
if (visMode === undefined) {
|
|
488
|
+
data.visibilityMode = visMode = this.self.DISPLAY;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
return visMode;
|
|
492
|
+
},
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* Use this to change the visibility mode between {@link #VISIBILITY}, {@link #DISPLAY}, {@link #OFFSETS} or {@link #ASCLASS}.
|
|
496
|
+
*/
|
|
497
|
+
setVisibilityMode: function(mode) {
|
|
498
|
+
(this.$cache || this.getCache()).data.visibilityMode = mode;
|
|
499
|
+
return this;
|
|
500
|
+
},
|
|
501
|
+
|
|
502
|
+
getCache: function() {
|
|
503
|
+
var me = this,
|
|
504
|
+
id = me.dom.id || Ext.id(me.dom);
|
|
505
|
+
|
|
506
|
+
// Note that we do not assign an ID to the calling object here.
|
|
507
|
+
// An Ext.dom.Element will have one assigned at construction, and an Ext.dom.AbstractElement.Fly must not have one.
|
|
508
|
+
// We assign an ID to the DOM element if it does not have one.
|
|
509
|
+
me.$cache = Ext.cache[id] || Ext.addCacheEntry(id, null, me.dom);
|
|
510
|
+
|
|
511
|
+
return me.$cache;
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
}, function() {
|
|
515
|
+
var AbstractElement = this;
|
|
516
|
+
|
|
517
|
+
Ext.getDetachedBody = function () {
|
|
518
|
+
var detachedEl = AbstractElement.detachedBodyEl;
|
|
519
|
+
|
|
520
|
+
if (!detachedEl) {
|
|
521
|
+
detachedEl = document.createElement('div');
|
|
522
|
+
AbstractElement.detachedBodyEl = detachedEl = new AbstractElement.Fly(detachedEl);
|
|
523
|
+
detachedEl.isDetachedBody = true;
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
return detachedEl;
|
|
527
|
+
};
|
|
528
|
+
|
|
529
|
+
Ext.getElementById = function (id) {
|
|
530
|
+
var el = document.getElementById(id),
|
|
531
|
+
detachedBodyEl;
|
|
532
|
+
|
|
533
|
+
if (!el && (detachedBodyEl = AbstractElement.detachedBodyEl)) {
|
|
534
|
+
el = detachedBodyEl.dom.querySelector('#' + Ext.escapeId(id));
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
return el;
|
|
538
|
+
};
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* @member Ext
|
|
542
|
+
* @method get
|
|
543
|
+
* @inheritdoc Ext.dom.Element#get
|
|
544
|
+
*/
|
|
545
|
+
Ext.get = function(el) {
|
|
546
|
+
return Ext.dom.Element.get(el);
|
|
547
|
+
};
|
|
548
|
+
|
|
549
|
+
this.addStatics({
|
|
550
|
+
/**
|
|
551
|
+
* @class Ext.dom.AbstractElement.Fly
|
|
552
|
+
* @extends Ext.dom.AbstractElement
|
|
553
|
+
*
|
|
554
|
+
* A non-persistent wrapper for a DOM element which may be used to execute methods of {@link Ext.dom.Element}
|
|
555
|
+
* upon a DOM element without creating an instance of {@link Ext.dom.Element}.
|
|
556
|
+
*
|
|
557
|
+
* A **singleton** instance of this class is returned when you use {@link Ext#fly}
|
|
558
|
+
*
|
|
559
|
+
* Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.
|
|
560
|
+
* You should not keep and use the reference to this singleton over multiple lines because methods that you call
|
|
561
|
+
* may themselves make use of {@link Ext#fly} and may change the DOM element to which the instance refers.
|
|
562
|
+
*/
|
|
563
|
+
Fly: new Ext.Class({
|
|
564
|
+
extend: AbstractElement,
|
|
565
|
+
|
|
566
|
+
/**
|
|
567
|
+
* @property {Boolean} isFly
|
|
568
|
+
* This is `true` to identify Element flyweights
|
|
569
|
+
*/
|
|
570
|
+
isFly: true,
|
|
571
|
+
|
|
572
|
+
constructor: function(dom) {
|
|
573
|
+
this.dom = dom;
|
|
574
|
+
},
|
|
575
|
+
|
|
576
|
+
/**
|
|
577
|
+
* @private
|
|
578
|
+
* Attach this fliyweight instance to the passed DOM element.
|
|
579
|
+
*
|
|
580
|
+
* Note that a flightweight does **not** have an ID, and does not acquire the ID of the DOM element.
|
|
581
|
+
*/
|
|
582
|
+
attach: function (dom) {
|
|
583
|
+
|
|
584
|
+
// Attach to the passed DOM element. The same code as in Ext.Fly
|
|
585
|
+
this.dom = dom;
|
|
586
|
+
// Use cached data if there is existing cached data for the referenced DOM element,
|
|
587
|
+
// otherwise it will be created when needed by getCache.
|
|
588
|
+
this.$cache = dom.id ? Ext.cache[dom.id] : null;
|
|
589
|
+
return this;
|
|
590
|
+
}
|
|
591
|
+
}),
|
|
592
|
+
|
|
593
|
+
_flyweights: {},
|
|
594
|
+
|
|
595
|
+
/**
|
|
596
|
+
* Gets the singleton {@link Ext.dom.AbstractElement.Fly flyweight} element, with the passed node as the active element.
|
|
597
|
+
*
|
|
598
|
+
* Because it is a singleton, this Flyweight does not have an ID, and must be used and discarded in a single line.
|
|
599
|
+
* You may not keep and use the reference to this singleton over multiple lines because methods that you call
|
|
600
|
+
* may themselves make use of {@link Ext#fly} and may change the DOM element to which the instance refers.
|
|
601
|
+
*
|
|
602
|
+
* {@link Ext#fly} is alias for {@link Ext.dom.AbstractElement#fly}.
|
|
603
|
+
*
|
|
604
|
+
* Use this to make one-time references to DOM elements which are not going to be accessed again either by
|
|
605
|
+
* application code, or by Ext's classes. If accessing an element which will be processed regularly, then {@link
|
|
606
|
+
* Ext#get Ext.get} will be more appropriate to take advantage of the caching provided by the Ext.dom.Element
|
|
607
|
+
* class.
|
|
608
|
+
*
|
|
609
|
+
* @param {String/HTMLElement} dom The dom node or id
|
|
610
|
+
* @param {String} [named] Allows for creation of named reusable flyweights to prevent conflicts (e.g.
|
|
611
|
+
* internally Ext uses "_global")
|
|
612
|
+
* @return {Ext.dom.AbstractElement.Fly} The singleton flyweight object (or null if no matching element was found)
|
|
613
|
+
* @static
|
|
614
|
+
* @member Ext.dom.AbstractElement
|
|
615
|
+
*/
|
|
616
|
+
fly: function(dom, named) {
|
|
617
|
+
var fly = null,
|
|
618
|
+
_flyweights = AbstractElement._flyweights;
|
|
619
|
+
|
|
620
|
+
named = named || '_global';
|
|
621
|
+
|
|
622
|
+
dom = Ext.getDom(dom);
|
|
623
|
+
|
|
624
|
+
if (dom) {
|
|
625
|
+
fly = _flyweights[named] || (_flyweights[named] = new AbstractElement.Fly());
|
|
626
|
+
|
|
627
|
+
// Attach to the passed DOM element.
|
|
628
|
+
// This code performs the same function as Fly.attach, but inline it for efficiency
|
|
629
|
+
fly.dom = dom;
|
|
630
|
+
// Use cached data if there is existing cached data for the referenced DOM element,
|
|
631
|
+
// otherwise it will be created when needed by getCache.
|
|
632
|
+
fly.$cache = dom.id ? Ext.cache[dom.id] : null;
|
|
633
|
+
}
|
|
634
|
+
return fly;
|
|
635
|
+
}
|
|
636
|
+
});
|
|
637
|
+
|
|
638
|
+
/**
|
|
639
|
+
* @member Ext
|
|
640
|
+
* @method fly
|
|
641
|
+
* @inheritdoc Ext.dom.AbstractElement#fly
|
|
642
|
+
*/
|
|
643
|
+
Ext.fly = function() {
|
|
644
|
+
return AbstractElement.fly.apply(AbstractElement, arguments);
|
|
645
|
+
};
|
|
646
|
+
|
|
647
|
+
(function (proto) {
|
|
648
|
+
/**
|
|
649
|
+
* @method destroy
|
|
650
|
+
* @member Ext.dom.AbstractElement
|
|
651
|
+
* @inheritdoc Ext.dom.AbstractElement#remove
|
|
652
|
+
* Alias to {@link #remove}.
|
|
653
|
+
*/
|
|
654
|
+
proto.destroy = proto.remove;
|
|
655
|
+
|
|
656
|
+
/**
|
|
657
|
+
* Returns a child element of this element given its `id`.
|
|
658
|
+
* @method getById
|
|
659
|
+
* @member Ext.dom.AbstractElement
|
|
660
|
+
* @param {String} id The id of the desired child element.
|
|
661
|
+
* @param {Boolean} [asDom=false] True to return the DOM element, false to return a
|
|
662
|
+
* wrapped Element object.
|
|
663
|
+
*/
|
|
664
|
+
if (document.querySelector) {
|
|
665
|
+
proto.getById = function (id, asDom) {
|
|
666
|
+
// for normal elements getElementById is the best solution, but if the el is
|
|
667
|
+
// not part of the document.body, we have to resort to querySelector
|
|
668
|
+
var dom = document.getElementById(id) ||
|
|
669
|
+
this.dom.querySelector('#'+Ext.escapeId(id));
|
|
670
|
+
return asDom ? dom : (dom ? Ext.get(dom) : null);
|
|
671
|
+
};
|
|
672
|
+
} else {
|
|
673
|
+
proto.getById = function (id, asDom) {
|
|
674
|
+
var dom = document.getElementById(id);
|
|
675
|
+
return asDom ? dom : (dom ? Ext.get(dom) : null);
|
|
676
|
+
};
|
|
677
|
+
}
|
|
678
|
+
}(this.prototype));
|
|
679
|
+
});
|
|
680
|
+
|
|
681
|
+
}());
|