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,214 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.dom.Element
|
|
3
|
+
*/
|
|
4
|
+
Ext.dom.Element.override({
|
|
5
|
+
/**
|
|
6
|
+
* Returns true if this element is scrollable.
|
|
7
|
+
* @return {Boolean}
|
|
8
|
+
*/
|
|
9
|
+
isScrollable: function() {
|
|
10
|
+
var dom = this.dom;
|
|
11
|
+
return dom.scrollHeight > dom.clientHeight || dom.scrollWidth > dom.clientWidth;
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Returns the current scroll position of the element.
|
|
16
|
+
* @return {Object} An object containing the scroll position in the format
|
|
17
|
+
* `{left: (scrollLeft), top: (scrollTop)}`
|
|
18
|
+
*/
|
|
19
|
+
getScroll: function() {
|
|
20
|
+
var d = this.dom,
|
|
21
|
+
doc = document,
|
|
22
|
+
body = doc.body,
|
|
23
|
+
docElement = doc.documentElement,
|
|
24
|
+
l,
|
|
25
|
+
t,
|
|
26
|
+
ret;
|
|
27
|
+
|
|
28
|
+
if (d == doc || d == body) {
|
|
29
|
+
if (Ext.isIE && Ext.isStrict) {
|
|
30
|
+
l = docElement.scrollLeft;
|
|
31
|
+
t = docElement.scrollTop;
|
|
32
|
+
} else {
|
|
33
|
+
l = window.pageXOffset;
|
|
34
|
+
t = window.pageYOffset;
|
|
35
|
+
}
|
|
36
|
+
ret = {
|
|
37
|
+
left: l || (body ? body.scrollLeft : 0),
|
|
38
|
+
top : t || (body ? body.scrollTop : 0)
|
|
39
|
+
};
|
|
40
|
+
} else {
|
|
41
|
+
ret = {
|
|
42
|
+
left: d.scrollLeft,
|
|
43
|
+
top : d.scrollTop
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return ret;
|
|
48
|
+
},
|
|
49
|
+
|
|
50
|
+
/**
|
|
51
|
+
* Scrolls this element by the passed delta values, optionally animating.
|
|
52
|
+
*
|
|
53
|
+
* All of the following are equivalent:
|
|
54
|
+
*
|
|
55
|
+
* el.scrollBy(10, 10, true);
|
|
56
|
+
* el.scrollBy([10, 10], true);
|
|
57
|
+
* el.scrollBy({ x: 10, y: 10 }, true);
|
|
58
|
+
*
|
|
59
|
+
* @param {Number/Number[]/Object} deltaX Either the x delta, an Array specifying x and y deltas or
|
|
60
|
+
* an object with "x" and "y" properties.
|
|
61
|
+
* @param {Number/Boolean/Object} deltaY Either the y delta, or an animate flag or config object.
|
|
62
|
+
* @param {Boolean/Object} animate Animate flag/config object if the delta values were passed separately.
|
|
63
|
+
* @return {Ext.Element} this
|
|
64
|
+
*/
|
|
65
|
+
scrollBy: function(deltaX, deltaY, animate) {
|
|
66
|
+
var me = this,
|
|
67
|
+
dom = me.dom;
|
|
68
|
+
|
|
69
|
+
// Extract args if deltas were passed as an Array.
|
|
70
|
+
if (deltaX.length) {
|
|
71
|
+
animate = deltaY;
|
|
72
|
+
deltaY = deltaX[1];
|
|
73
|
+
deltaX = deltaX[0];
|
|
74
|
+
} else if (typeof deltaX != 'number') { // or an object
|
|
75
|
+
animate = deltaY;
|
|
76
|
+
deltaY = deltaX.y;
|
|
77
|
+
deltaX = deltaX.x;
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
if (deltaX) {
|
|
81
|
+
me.scrollTo('left', Math.max(Math.min(dom.scrollLeft + deltaX, dom.scrollWidth - dom.clientWidth), 0), animate);
|
|
82
|
+
}
|
|
83
|
+
if (deltaY) {
|
|
84
|
+
me.scrollTo('top', Math.max(Math.min(dom.scrollTop + deltaY, dom.scrollHeight - dom.clientHeight), 0), animate);
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return me;
|
|
88
|
+
},
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Scrolls this element the specified scroll point. It does NOT do bounds checking so
|
|
92
|
+
* if you scroll to a weird value it will try to do it. For auto bounds checking, use #scroll.
|
|
93
|
+
* @param {String} side Either "left" for scrollLeft values or "top" for scrollTop values.
|
|
94
|
+
* @param {Number} value The new scroll value
|
|
95
|
+
* @param {Boolean/Object} [animate] true for the default animation or a standard Element
|
|
96
|
+
* animation config object
|
|
97
|
+
* @return {Ext.Element} this
|
|
98
|
+
*/
|
|
99
|
+
scrollTo: function(side, value, animate) {
|
|
100
|
+
//check if we're scrolling top or left
|
|
101
|
+
var top = /top/i.test(side),
|
|
102
|
+
me = this,
|
|
103
|
+
dom = me.dom,
|
|
104
|
+
obj = {},
|
|
105
|
+
prop;
|
|
106
|
+
|
|
107
|
+
if (!animate || !me.anim) {
|
|
108
|
+
// just setting the value, so grab the direction
|
|
109
|
+
prop = 'scroll' + (top ? 'Top' : 'Left');
|
|
110
|
+
dom[prop] = value;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
if (!Ext.isObject(animate)) {
|
|
114
|
+
animate = {};
|
|
115
|
+
}
|
|
116
|
+
obj['scroll' + (top ? 'Top' : 'Left')] = value;
|
|
117
|
+
me.animate(Ext.applyIf({
|
|
118
|
+
to: obj
|
|
119
|
+
}, animate));
|
|
120
|
+
}
|
|
121
|
+
return me;
|
|
122
|
+
},
|
|
123
|
+
|
|
124
|
+
/**
|
|
125
|
+
* Scrolls this element into view within the passed container.
|
|
126
|
+
* @param {String/HTMLElement/Ext.Element} [container=document.body] The container element
|
|
127
|
+
* to scroll. Should be a string (id), dom node, or Ext.Element.
|
|
128
|
+
* @param {Boolean} [hscroll=true] False to disable horizontal scroll.
|
|
129
|
+
* @return {Ext.dom.Element} this
|
|
130
|
+
*/
|
|
131
|
+
scrollIntoView: function(container, hscroll) {
|
|
132
|
+
container = Ext.getDom(container) || Ext.getBody().dom;
|
|
133
|
+
var el = this.dom,
|
|
134
|
+
offsets = this.getOffsetsTo(container),
|
|
135
|
+
// el's box
|
|
136
|
+
left = offsets[0] + container.scrollLeft,
|
|
137
|
+
top = offsets[1] + container.scrollTop,
|
|
138
|
+
bottom = top + el.offsetHeight,
|
|
139
|
+
right = left + el.offsetWidth,
|
|
140
|
+
// ct's box
|
|
141
|
+
ctClientHeight = container.clientHeight,
|
|
142
|
+
ctScrollTop = parseInt(container.scrollTop, 10),
|
|
143
|
+
ctScrollLeft = parseInt(container.scrollLeft, 10),
|
|
144
|
+
ctBottom = ctScrollTop + ctClientHeight,
|
|
145
|
+
ctRight = ctScrollLeft + container.clientWidth;
|
|
146
|
+
|
|
147
|
+
if (el.offsetHeight > ctClientHeight || top < ctScrollTop) {
|
|
148
|
+
container.scrollTop = top;
|
|
149
|
+
} else if (bottom > ctBottom) {
|
|
150
|
+
container.scrollTop = bottom - ctClientHeight;
|
|
151
|
+
}
|
|
152
|
+
// corrects IE, other browsers will ignore
|
|
153
|
+
container.scrollTop = container.scrollTop;
|
|
154
|
+
|
|
155
|
+
if (hscroll !== false) {
|
|
156
|
+
if (el.offsetWidth > container.clientWidth || left < ctScrollLeft) {
|
|
157
|
+
container.scrollLeft = left;
|
|
158
|
+
}
|
|
159
|
+
else if (right > ctRight) {
|
|
160
|
+
container.scrollLeft = right - container.clientWidth;
|
|
161
|
+
}
|
|
162
|
+
container.scrollLeft = container.scrollLeft;
|
|
163
|
+
}
|
|
164
|
+
return this;
|
|
165
|
+
},
|
|
166
|
+
|
|
167
|
+
// @private
|
|
168
|
+
scrollChildIntoView: function(child, hscroll) {
|
|
169
|
+
Ext.fly(child, '_scrollChildIntoView').scrollIntoView(this, hscroll);
|
|
170
|
+
},
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* Scrolls this element the specified direction. Does bounds checking to make sure the scroll is
|
|
174
|
+
* within this element's scrollable range.
|
|
175
|
+
* @param {String} direction Possible values are:
|
|
176
|
+
*
|
|
177
|
+
* - `"l"` (or `"left"`)
|
|
178
|
+
* - `"r"` (or `"right"`)
|
|
179
|
+
* - `"t"` (or `"top"`, or `"up"`)
|
|
180
|
+
* - `"b"` (or `"bottom"`, or `"down"`)
|
|
181
|
+
*
|
|
182
|
+
* @param {Number} distance How far to scroll the element in pixels
|
|
183
|
+
* @param {Boolean/Object} [animate] true for the default animation or a standard Element
|
|
184
|
+
* animation config object
|
|
185
|
+
* @return {Boolean} Returns true if a scroll was triggered or false if the element
|
|
186
|
+
* was scrolled as far as it could go.
|
|
187
|
+
*/
|
|
188
|
+
scroll: function(direction, distance, animate) {
|
|
189
|
+
if (!this.isScrollable()) {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
var el = this.dom,
|
|
193
|
+
l = el.scrollLeft, t = el.scrollTop,
|
|
194
|
+
w = el.scrollWidth, h = el.scrollHeight,
|
|
195
|
+
cw = el.clientWidth, ch = el.clientHeight,
|
|
196
|
+
scrolled = false, v,
|
|
197
|
+
hash = {
|
|
198
|
+
l: Math.min(l + distance, w - cw),
|
|
199
|
+
r: v = Math.max(l - distance, 0),
|
|
200
|
+
t: Math.max(t - distance, 0),
|
|
201
|
+
b: Math.min(t + distance, h - ch)
|
|
202
|
+
};
|
|
203
|
+
|
|
204
|
+
hash.d = hash.b;
|
|
205
|
+
hash.u = hash.t;
|
|
206
|
+
|
|
207
|
+
direction = direction.substr(0, 1);
|
|
208
|
+
if ((v = hash[direction]) > -1) {
|
|
209
|
+
scrolled = true;
|
|
210
|
+
this.scrollTo(direction == 'l' || direction == 'r' ? 'left' : 'top', v, this.anim(animate));
|
|
211
|
+
}
|
|
212
|
+
return scrolled;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
@@ -0,0 +1,792 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @class Ext.dom.Element
|
|
3
|
+
*/
|
|
4
|
+
(function() {
|
|
5
|
+
|
|
6
|
+
var Element = Ext.dom.Element,
|
|
7
|
+
view = document.defaultView,
|
|
8
|
+
adjustDirect2DTableRe = /table-row|table-.*-group/,
|
|
9
|
+
INTERNAL = '_internal',
|
|
10
|
+
HIDDEN = 'hidden',
|
|
11
|
+
HEIGHT = 'height',
|
|
12
|
+
WIDTH = 'width',
|
|
13
|
+
ISCLIPPED = 'isClipped',
|
|
14
|
+
OVERFLOW = 'overflow',
|
|
15
|
+
OVERFLOWX = 'overflow-x',
|
|
16
|
+
OVERFLOWY = 'overflow-y',
|
|
17
|
+
ORIGINALCLIP = 'originalClip',
|
|
18
|
+
DOCORBODYRE = /#document|body/i,
|
|
19
|
+
// This reduces the lookup of 'me.styleHooks' by one hop in the prototype chain. It is
|
|
20
|
+
// the same object.
|
|
21
|
+
styleHooks,
|
|
22
|
+
edges, k, edge, borderWidth;
|
|
23
|
+
|
|
24
|
+
if (!view || !view.getComputedStyle) {
|
|
25
|
+
Element.prototype.getStyle = function (property, inline) {
|
|
26
|
+
var me = this,
|
|
27
|
+
dom = me.dom,
|
|
28
|
+
multiple = typeof property != 'string',
|
|
29
|
+
hooks = me.styleHooks,
|
|
30
|
+
prop = property,
|
|
31
|
+
props = prop,
|
|
32
|
+
len = 1,
|
|
33
|
+
isInline = inline,
|
|
34
|
+
camel, domStyle, values, hook, out, style, i;
|
|
35
|
+
|
|
36
|
+
if (multiple) {
|
|
37
|
+
values = {};
|
|
38
|
+
prop = props[0];
|
|
39
|
+
i = 0;
|
|
40
|
+
if (!(len = props.length)) {
|
|
41
|
+
return values;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (!dom || dom.documentElement) {
|
|
46
|
+
return values || '';
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
domStyle = dom.style;
|
|
50
|
+
|
|
51
|
+
if (inline) {
|
|
52
|
+
style = domStyle;
|
|
53
|
+
} else {
|
|
54
|
+
style = dom.currentStyle;
|
|
55
|
+
|
|
56
|
+
// fallback to inline style if rendering context not available
|
|
57
|
+
if (!style) {
|
|
58
|
+
isInline = true;
|
|
59
|
+
style = domStyle;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
do {
|
|
64
|
+
hook = hooks[prop];
|
|
65
|
+
|
|
66
|
+
if (!hook) {
|
|
67
|
+
hooks[prop] = hook = { name: Element.normalize(prop) };
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (hook.get) {
|
|
71
|
+
out = hook.get(dom, me, isInline, style);
|
|
72
|
+
} else {
|
|
73
|
+
camel = hook.name;
|
|
74
|
+
|
|
75
|
+
// In some cases, IE6 will throw Invalid Argument exceptions for properties
|
|
76
|
+
// like fontSize (/examples/tabs/tabs.html in 4.0 used to exhibit this but
|
|
77
|
+
// no longer does due to font style changes). There is a real cost to a try
|
|
78
|
+
// block, so we avoid it where possible...
|
|
79
|
+
if (hook.canThrow) {
|
|
80
|
+
try {
|
|
81
|
+
out = style[camel];
|
|
82
|
+
} catch (e) {
|
|
83
|
+
out = '';
|
|
84
|
+
}
|
|
85
|
+
} else {
|
|
86
|
+
// EXTJSIV-5657 - In IE9 quirks mode there is a chance that VML root element
|
|
87
|
+
// has neither `currentStyle` nor `style`. Return '' this case.
|
|
88
|
+
out = style ? style[camel] : '';
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if (!multiple) {
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
values[prop] = out;
|
|
97
|
+
prop = props[++i];
|
|
98
|
+
} while (i < len);
|
|
99
|
+
|
|
100
|
+
return values;
|
|
101
|
+
};
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
Element.override({
|
|
105
|
+
getHeight: function(contentHeight, preciseHeight) {
|
|
106
|
+
var me = this,
|
|
107
|
+
dom = me.dom,
|
|
108
|
+
hidden = me.isStyle('display', 'none'),
|
|
109
|
+
height,
|
|
110
|
+
floating;
|
|
111
|
+
|
|
112
|
+
if (hidden) {
|
|
113
|
+
return 0;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
height = Math.max(dom.offsetHeight, dom.clientHeight) || 0;
|
|
117
|
+
|
|
118
|
+
// IE9 Direct2D dimension rounding bug
|
|
119
|
+
if (Ext.supports.Direct2DBug) {
|
|
120
|
+
floating = me.adjustDirect2DDimension(HEIGHT);
|
|
121
|
+
if (preciseHeight) {
|
|
122
|
+
height += floating;
|
|
123
|
+
}
|
|
124
|
+
else if (floating > 0 && floating < 0.5) {
|
|
125
|
+
height++;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (contentHeight) {
|
|
130
|
+
height -= me.getBorderWidth("tb") + me.getPadding("tb");
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return (height < 0) ? 0 : height;
|
|
134
|
+
},
|
|
135
|
+
|
|
136
|
+
getWidth: function(contentWidth, preciseWidth) {
|
|
137
|
+
var me = this,
|
|
138
|
+
dom = me.dom,
|
|
139
|
+
hidden = me.isStyle('display', 'none'),
|
|
140
|
+
rect, width, floating;
|
|
141
|
+
|
|
142
|
+
if (hidden) {
|
|
143
|
+
return 0;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Gecko will in some cases report an offsetWidth that is actually less than the width of the
|
|
147
|
+
// text contents, because it measures fonts with sub-pixel precision but rounds the calculated
|
|
148
|
+
// value down. Using getBoundingClientRect instead of offsetWidth allows us to get the precise
|
|
149
|
+
// subpixel measurements so we can force them to always be rounded up. See
|
|
150
|
+
// https://bugzilla.mozilla.org/show_bug.cgi?id=458617
|
|
151
|
+
// Rounding up ensures that the width includes the full width of the text contents.
|
|
152
|
+
if (Ext.supports.BoundingClientRect) {
|
|
153
|
+
rect = dom.getBoundingClientRect();
|
|
154
|
+
width = rect.right - rect.left;
|
|
155
|
+
width = preciseWidth ? width : Math.ceil(width);
|
|
156
|
+
} else {
|
|
157
|
+
width = dom.offsetWidth;
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
width = Math.max(width, dom.clientWidth) || 0;
|
|
161
|
+
|
|
162
|
+
// IE9 Direct2D dimension rounding bug
|
|
163
|
+
if (Ext.supports.Direct2DBug) {
|
|
164
|
+
// get the fractional portion of the sub-pixel precision width of the element's text contents
|
|
165
|
+
floating = me.adjustDirect2DDimension(WIDTH);
|
|
166
|
+
if (preciseWidth) {
|
|
167
|
+
width += floating;
|
|
168
|
+
}
|
|
169
|
+
// IE9 also measures fonts with sub-pixel precision, but unlike Gecko, instead of rounding the offsetWidth down,
|
|
170
|
+
// it rounds to the nearest integer. This means that in order to ensure that the width includes the full
|
|
171
|
+
// width of the text contents we need to increment the width by 1 only if the fractional portion is less than 0.5
|
|
172
|
+
else if (floating > 0 && floating < 0.5) {
|
|
173
|
+
width++;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
if (contentWidth) {
|
|
178
|
+
width -= me.getBorderWidth("lr") + me.getPadding("lr");
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return (width < 0) ? 0 : width;
|
|
182
|
+
},
|
|
183
|
+
|
|
184
|
+
setWidth: function(width, animate) {
|
|
185
|
+
var me = this;
|
|
186
|
+
width = me.adjustWidth(width);
|
|
187
|
+
if (!animate || !me.anim) {
|
|
188
|
+
me.dom.style.width = me.addUnits(width);
|
|
189
|
+
}
|
|
190
|
+
else {
|
|
191
|
+
if (!Ext.isObject(animate)) {
|
|
192
|
+
animate = {};
|
|
193
|
+
}
|
|
194
|
+
me.animate(Ext.applyIf({
|
|
195
|
+
to: {
|
|
196
|
+
width: width
|
|
197
|
+
}
|
|
198
|
+
}, animate));
|
|
199
|
+
}
|
|
200
|
+
return me;
|
|
201
|
+
},
|
|
202
|
+
|
|
203
|
+
setHeight : function(height, animate) {
|
|
204
|
+
var me = this;
|
|
205
|
+
|
|
206
|
+
height = me.adjustHeight(height);
|
|
207
|
+
if (!animate || !me.anim) {
|
|
208
|
+
me.dom.style.height = me.addUnits(height);
|
|
209
|
+
}
|
|
210
|
+
else {
|
|
211
|
+
if (!Ext.isObject(animate)) {
|
|
212
|
+
animate = {};
|
|
213
|
+
}
|
|
214
|
+
me.animate(Ext.applyIf({
|
|
215
|
+
to: {
|
|
216
|
+
height: height
|
|
217
|
+
}
|
|
218
|
+
}, animate));
|
|
219
|
+
}
|
|
220
|
+
|
|
221
|
+
return me;
|
|
222
|
+
},
|
|
223
|
+
|
|
224
|
+
applyStyles: function(style) {
|
|
225
|
+
Ext.DomHelper.applyStyles(this.dom, style);
|
|
226
|
+
return this;
|
|
227
|
+
},
|
|
228
|
+
|
|
229
|
+
setSize: function(width, height, animate) {
|
|
230
|
+
var me = this;
|
|
231
|
+
|
|
232
|
+
if (Ext.isObject(width)) { // in case of object from getSize()
|
|
233
|
+
animate = height;
|
|
234
|
+
height = width.height;
|
|
235
|
+
width = width.width;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
width = me.adjustWidth(width);
|
|
239
|
+
height = me.adjustHeight(height);
|
|
240
|
+
|
|
241
|
+
if (!animate || !me.anim) {
|
|
242
|
+
me.dom.style.width = me.addUnits(width);
|
|
243
|
+
me.dom.style.height = me.addUnits(height);
|
|
244
|
+
}
|
|
245
|
+
else {
|
|
246
|
+
if (animate === true) {
|
|
247
|
+
animate = {};
|
|
248
|
+
}
|
|
249
|
+
me.animate(Ext.applyIf({
|
|
250
|
+
to: {
|
|
251
|
+
width: width,
|
|
252
|
+
height: height
|
|
253
|
+
}
|
|
254
|
+
}, animate));
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
return me;
|
|
258
|
+
},
|
|
259
|
+
|
|
260
|
+
getViewSize : function() {
|
|
261
|
+
var me = this,
|
|
262
|
+
dom = me.dom,
|
|
263
|
+
isDoc = DOCORBODYRE.test(dom.nodeName),
|
|
264
|
+
ret;
|
|
265
|
+
|
|
266
|
+
// If the body, use static methods
|
|
267
|
+
if (isDoc) {
|
|
268
|
+
ret = {
|
|
269
|
+
width : Element.getViewWidth(),
|
|
270
|
+
height : Element.getViewHeight()
|
|
271
|
+
};
|
|
272
|
+
} else {
|
|
273
|
+
ret = {
|
|
274
|
+
width : dom.clientWidth,
|
|
275
|
+
height : dom.clientHeight
|
|
276
|
+
};
|
|
277
|
+
}
|
|
278
|
+
|
|
279
|
+
return ret;
|
|
280
|
+
},
|
|
281
|
+
|
|
282
|
+
getSize: function(contentSize) {
|
|
283
|
+
return {width: this.getWidth(contentSize), height: this.getHeight(contentSize)};
|
|
284
|
+
},
|
|
285
|
+
|
|
286
|
+
// TODO: Look at this
|
|
287
|
+
|
|
288
|
+
// private ==> used by Fx
|
|
289
|
+
adjustWidth : function(width) {
|
|
290
|
+
var me = this,
|
|
291
|
+
isNum = (typeof width == 'number');
|
|
292
|
+
|
|
293
|
+
if (isNum && me.autoBoxAdjust && !me.isBorderBox()) {
|
|
294
|
+
width -= (me.getBorderWidth("lr") + me.getPadding("lr"));
|
|
295
|
+
}
|
|
296
|
+
return (isNum && width < 0) ? 0 : width;
|
|
297
|
+
},
|
|
298
|
+
|
|
299
|
+
// private ==> used by Fx
|
|
300
|
+
adjustHeight : function(height) {
|
|
301
|
+
var me = this,
|
|
302
|
+
isNum = (typeof height == "number");
|
|
303
|
+
|
|
304
|
+
if (isNum && me.autoBoxAdjust && !me.isBorderBox()) {
|
|
305
|
+
height -= (me.getBorderWidth("tb") + me.getPadding("tb"));
|
|
306
|
+
}
|
|
307
|
+
return (isNum && height < 0) ? 0 : height;
|
|
308
|
+
},
|
|
309
|
+
|
|
310
|
+
/**
|
|
311
|
+
* Return the CSS color for the specified CSS attribute. rgb, 3 digit (like `#fff`) and valid values
|
|
312
|
+
* are convert to standard 6 digit hex color.
|
|
313
|
+
* @param {String} attr The css attribute
|
|
314
|
+
* @param {String} defaultValue The default value to use when a valid color isn't found
|
|
315
|
+
* @param {String} [prefix] defaults to #. Use an empty string when working with
|
|
316
|
+
* color anims.
|
|
317
|
+
*/
|
|
318
|
+
getColor : function(attr, defaultValue, prefix) {
|
|
319
|
+
var v = this.getStyle(attr),
|
|
320
|
+
color = prefix || prefix === '' ? prefix : '#',
|
|
321
|
+
h, len, i=0;
|
|
322
|
+
|
|
323
|
+
if (!v || (/transparent|inherit/.test(v))) {
|
|
324
|
+
return defaultValue;
|
|
325
|
+
}
|
|
326
|
+
if (/^r/.test(v)) {
|
|
327
|
+
v = v.slice(4, v.length - 1).split(',');
|
|
328
|
+
len = v.length;
|
|
329
|
+
for (; i<len; i++) {
|
|
330
|
+
h = parseInt(v[i], 10);
|
|
331
|
+
color += (h < 16 ? '0' : '') + h.toString(16);
|
|
332
|
+
}
|
|
333
|
+
} else {
|
|
334
|
+
v = v.replace('#', '');
|
|
335
|
+
color += v.length == 3 ? v.replace(/^(\w)(\w)(\w)$/, '$1$1$2$2$3$3') : v;
|
|
336
|
+
}
|
|
337
|
+
return(color.length > 5 ? color.toLowerCase() : defaultValue);
|
|
338
|
+
},
|
|
339
|
+
|
|
340
|
+
/**
|
|
341
|
+
* Set the opacity of the element
|
|
342
|
+
* @param {Number} opacity The new opacity. 0 = transparent, .5 = 50% visibile, 1 = fully visible, etc
|
|
343
|
+
* @param {Boolean/Object} [animate] a standard Element animation config object or `true` for
|
|
344
|
+
* the default animation (`{duration: .35, easing: 'easeIn'}`)
|
|
345
|
+
* @return {Ext.dom.Element} this
|
|
346
|
+
*/
|
|
347
|
+
setOpacity: function(opacity, animate) {
|
|
348
|
+
var me = this;
|
|
349
|
+
|
|
350
|
+
if (!me.dom) {
|
|
351
|
+
return me;
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
if (!animate || !me.anim) {
|
|
355
|
+
me.setStyle('opacity', opacity);
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
if (typeof animate != 'object') {
|
|
359
|
+
animate = {
|
|
360
|
+
duration: 350,
|
|
361
|
+
easing: 'ease-in'
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
me.animate(Ext.applyIf({
|
|
366
|
+
to: {
|
|
367
|
+
opacity: opacity
|
|
368
|
+
}
|
|
369
|
+
}, animate));
|
|
370
|
+
}
|
|
371
|
+
return me;
|
|
372
|
+
},
|
|
373
|
+
|
|
374
|
+
/**
|
|
375
|
+
* Clears any opacity settings from this element. Required in some cases for IE.
|
|
376
|
+
* @return {Ext.dom.Element} this
|
|
377
|
+
*/
|
|
378
|
+
clearOpacity : function() {
|
|
379
|
+
return this.setOpacity('');
|
|
380
|
+
},
|
|
381
|
+
|
|
382
|
+
/**
|
|
383
|
+
* @private
|
|
384
|
+
* Returns 1 if the browser returns the subpixel dimension rounded to the lowest pixel.
|
|
385
|
+
* @return {Number} 0 or 1
|
|
386
|
+
*/
|
|
387
|
+
adjustDirect2DDimension: function(dimension) {
|
|
388
|
+
var me = this,
|
|
389
|
+
dom = me.dom,
|
|
390
|
+
display = me.getStyle('display'),
|
|
391
|
+
inlineDisplay = dom.style.display,
|
|
392
|
+
inlinePosition = dom.style.position,
|
|
393
|
+
originIndex = dimension === WIDTH ? 0 : 1,
|
|
394
|
+
currentStyle = dom.currentStyle,
|
|
395
|
+
floating;
|
|
396
|
+
|
|
397
|
+
if (display === 'inline') {
|
|
398
|
+
dom.style.display = 'inline-block';
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
dom.style.position = display.match(adjustDirect2DTableRe) ? 'absolute' : 'static';
|
|
402
|
+
|
|
403
|
+
// floating will contain digits that appears after the decimal point
|
|
404
|
+
// if height or width are set to auto we fallback to msTransformOrigin calculation
|
|
405
|
+
|
|
406
|
+
// Use currentStyle here instead of getStyle. In some difficult to reproduce
|
|
407
|
+
// instances it resets the scrollWidth of the element
|
|
408
|
+
floating = (parseFloat(currentStyle[dimension]) || parseFloat(currentStyle.msTransformOrigin.split(' ')[originIndex]) * 2) % 1;
|
|
409
|
+
|
|
410
|
+
dom.style.position = inlinePosition;
|
|
411
|
+
|
|
412
|
+
if (display === 'inline') {
|
|
413
|
+
dom.style.display = inlineDisplay;
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
return floating;
|
|
417
|
+
},
|
|
418
|
+
|
|
419
|
+
/**
|
|
420
|
+
* Store the current overflow setting and clip overflow on the element - use {@link #unclip} to remove
|
|
421
|
+
* @return {Ext.dom.Element} this
|
|
422
|
+
*/
|
|
423
|
+
clip : function() {
|
|
424
|
+
var me = this,
|
|
425
|
+
data = (me.$cache || me.getCache()).data,
|
|
426
|
+
style;
|
|
427
|
+
|
|
428
|
+
if (!data[ISCLIPPED]) {
|
|
429
|
+
data[ISCLIPPED] = true;
|
|
430
|
+
style = me.getStyle([OVERFLOW, OVERFLOWX, OVERFLOWY]);
|
|
431
|
+
data[ORIGINALCLIP] = {
|
|
432
|
+
o: style[OVERFLOW],
|
|
433
|
+
x: style[OVERFLOWX],
|
|
434
|
+
y: style[OVERFLOWY]
|
|
435
|
+
};
|
|
436
|
+
me.setStyle(OVERFLOW, HIDDEN);
|
|
437
|
+
me.setStyle(OVERFLOWX, HIDDEN);
|
|
438
|
+
me.setStyle(OVERFLOWY, HIDDEN);
|
|
439
|
+
}
|
|
440
|
+
return me;
|
|
441
|
+
},
|
|
442
|
+
|
|
443
|
+
/**
|
|
444
|
+
* Return clipping (overflow) to original clipping before {@link #clip} was called
|
|
445
|
+
* @return {Ext.dom.Element} this
|
|
446
|
+
*/
|
|
447
|
+
unclip : function() {
|
|
448
|
+
var me = this,
|
|
449
|
+
data = (me.$cache || me.getCache()).data,
|
|
450
|
+
clip;
|
|
451
|
+
|
|
452
|
+
if (data[ISCLIPPED]) {
|
|
453
|
+
data[ISCLIPPED] = false;
|
|
454
|
+
clip = data[ORIGINALCLIP];
|
|
455
|
+
if (clip.o) {
|
|
456
|
+
me.setStyle(OVERFLOW, clip.o);
|
|
457
|
+
}
|
|
458
|
+
if (clip.x) {
|
|
459
|
+
me.setStyle(OVERFLOWX, clip.x);
|
|
460
|
+
}
|
|
461
|
+
if (clip.y) {
|
|
462
|
+
me.setStyle(OVERFLOWY, clip.y);
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return me;
|
|
466
|
+
},
|
|
467
|
+
|
|
468
|
+
/**
|
|
469
|
+
* Wraps the specified element with a special 9 element markup/CSS block that renders by default as
|
|
470
|
+
* a gray container with a gradient background, rounded corners and a 4-way shadow.
|
|
471
|
+
*
|
|
472
|
+
* This special markup is used throughout Ext when box wrapping elements ({@link Ext.button.Button},
|
|
473
|
+
* {@link Ext.panel.Panel} when {@link Ext.panel.Panel#frame frame=true}, {@link Ext.window.Window}).
|
|
474
|
+
* The markup is of this form:
|
|
475
|
+
*
|
|
476
|
+
* Ext.dom.Element.boxMarkup =
|
|
477
|
+
* '<div class="{0}-tl"><div class="{0}-tr"><div class="{0}-tc"></div></div></div>
|
|
478
|
+
* <div class="{0}-ml"><div class="{0}-mr"><div class="{0}-mc"></div></div></div>
|
|
479
|
+
* <div class="{0}-bl"><div class="{0}-br"><div class="{0}-bc"></div></div></div>';
|
|
480
|
+
*
|
|
481
|
+
* Example usage:
|
|
482
|
+
*
|
|
483
|
+
* // Basic box wrap
|
|
484
|
+
* Ext.get("foo").boxWrap();
|
|
485
|
+
*
|
|
486
|
+
* // You can also add a custom class and use CSS inheritance rules to customize the box look.
|
|
487
|
+
* // 'x-box-blue' is a built-in alternative -- look at the related CSS definitions as an example
|
|
488
|
+
* // for how to create a custom box wrap style.
|
|
489
|
+
* Ext.get("foo").boxWrap().addCls("x-box-blue");
|
|
490
|
+
*
|
|
491
|
+
* @param {String} [class='x-box'] A base CSS class to apply to the containing wrapper element.
|
|
492
|
+
* Note that there are a number of CSS rules that are dependent on this name to make the overall effect work,
|
|
493
|
+
* so if you supply an alternate base class, make sure you also supply all of the necessary rules.
|
|
494
|
+
* @return {Ext.dom.Element} The outermost wrapping element of the created box structure.
|
|
495
|
+
*/
|
|
496
|
+
boxWrap : function(cls) {
|
|
497
|
+
cls = cls || Ext.baseCSSPrefix + 'box';
|
|
498
|
+
var el = Ext.get(this.insertHtml("beforeBegin", "<div class='" + cls + "'>" + Ext.String.format(Element.boxMarkup, cls) + "</div>"));
|
|
499
|
+
Ext.DomQuery.selectNode('.' + cls + '-mc', el.dom).appendChild(this.dom);
|
|
500
|
+
return el;
|
|
501
|
+
},
|
|
502
|
+
|
|
503
|
+
/**
|
|
504
|
+
* Returns either the offsetHeight or the height of this element based on CSS height adjusted by padding or borders
|
|
505
|
+
* when needed to simulate offsetHeight when offsets aren't available. This may not work on display:none elements
|
|
506
|
+
* if a height has not been set using CSS.
|
|
507
|
+
* @return {Number}
|
|
508
|
+
*/
|
|
509
|
+
getComputedHeight : function() {
|
|
510
|
+
var me = this,
|
|
511
|
+
h = Math.max(me.dom.offsetHeight, me.dom.clientHeight);
|
|
512
|
+
if (!h) {
|
|
513
|
+
h = parseFloat(me.getStyle(HEIGHT)) || 0;
|
|
514
|
+
if (!me.isBorderBox()) {
|
|
515
|
+
h += me.getFrameWidth('tb');
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
return h;
|
|
519
|
+
},
|
|
520
|
+
|
|
521
|
+
/**
|
|
522
|
+
* Returns either the offsetWidth or the width of this element based on CSS width adjusted by padding or borders
|
|
523
|
+
* when needed to simulate offsetWidth when offsets aren't available. This may not work on display:none elements
|
|
524
|
+
* if a width has not been set using CSS.
|
|
525
|
+
* @return {Number}
|
|
526
|
+
*/
|
|
527
|
+
getComputedWidth : function() {
|
|
528
|
+
var me = this,
|
|
529
|
+
w = Math.max(me.dom.offsetWidth, me.dom.clientWidth);
|
|
530
|
+
|
|
531
|
+
if (!w) {
|
|
532
|
+
w = parseFloat(me.getStyle(WIDTH)) || 0;
|
|
533
|
+
if (!me.isBorderBox()) {
|
|
534
|
+
w += me.getFrameWidth('lr');
|
|
535
|
+
}
|
|
536
|
+
}
|
|
537
|
+
return w;
|
|
538
|
+
},
|
|
539
|
+
|
|
540
|
+
/**
|
|
541
|
+
* Returns the sum width of the padding and borders for the passed "sides". See getBorderWidth()
|
|
542
|
+
* for more information about the sides.
|
|
543
|
+
* @param {String} sides
|
|
544
|
+
* @return {Number}
|
|
545
|
+
*/
|
|
546
|
+
getFrameWidth : function(sides, onlyContentBox) {
|
|
547
|
+
return (onlyContentBox && this.isBorderBox()) ? 0 : (this.getPadding(sides) + this.getBorderWidth(sides));
|
|
548
|
+
},
|
|
549
|
+
|
|
550
|
+
/**
|
|
551
|
+
* Sets up event handlers to add and remove a css class when the mouse is over this element
|
|
552
|
+
* @param {String} className The class to add
|
|
553
|
+
* @param {Function} [testFn] A test function to execute before adding the class. The passed parameter
|
|
554
|
+
* will be the Element instance. If this functions returns false, the class will not be added.
|
|
555
|
+
* @param {Object} [scope] The scope to execute the testFn in.
|
|
556
|
+
* @return {Ext.dom.Element} this
|
|
557
|
+
*/
|
|
558
|
+
addClsOnOver : function(className, testFn, scope) {
|
|
559
|
+
var me = this,
|
|
560
|
+
dom = me.dom,
|
|
561
|
+
hasTest = Ext.isFunction(testFn);
|
|
562
|
+
|
|
563
|
+
me.hover(
|
|
564
|
+
function() {
|
|
565
|
+
if (hasTest && testFn.call(scope || me, me) === false) {
|
|
566
|
+
return;
|
|
567
|
+
}
|
|
568
|
+
Ext.fly(dom, INTERNAL).addCls(className);
|
|
569
|
+
},
|
|
570
|
+
function() {
|
|
571
|
+
Ext.fly(dom, INTERNAL).removeCls(className);
|
|
572
|
+
}
|
|
573
|
+
);
|
|
574
|
+
return me;
|
|
575
|
+
},
|
|
576
|
+
|
|
577
|
+
/**
|
|
578
|
+
* Sets up event handlers to add and remove a css class when this element has the focus
|
|
579
|
+
* @param {String} className The class to add
|
|
580
|
+
* @param {Function} [testFn] A test function to execute before adding the class. The passed parameter
|
|
581
|
+
* will be the Element instance. If this functions returns false, the class will not be added.
|
|
582
|
+
* @param {Object} [scope] The scope to execute the testFn in.
|
|
583
|
+
* @return {Ext.dom.Element} this
|
|
584
|
+
*/
|
|
585
|
+
addClsOnFocus : function(className, testFn, scope) {
|
|
586
|
+
var me = this,
|
|
587
|
+
dom = me.dom,
|
|
588
|
+
hasTest = Ext.isFunction(testFn);
|
|
589
|
+
|
|
590
|
+
me.on("focus", function() {
|
|
591
|
+
if (hasTest && testFn.call(scope || me, me) === false) {
|
|
592
|
+
return false;
|
|
593
|
+
}
|
|
594
|
+
Ext.fly(dom, INTERNAL).addCls(className);
|
|
595
|
+
});
|
|
596
|
+
me.on("blur", function() {
|
|
597
|
+
Ext.fly(dom, INTERNAL).removeCls(className);
|
|
598
|
+
});
|
|
599
|
+
return me;
|
|
600
|
+
},
|
|
601
|
+
|
|
602
|
+
/**
|
|
603
|
+
* Sets up event handlers to add and remove a css class when the mouse is down and then up on this element (a click effect)
|
|
604
|
+
* @param {String} className The class to add
|
|
605
|
+
* @param {Function} [testFn] A test function to execute before adding the class. The passed parameter
|
|
606
|
+
* will be the Element instance. If this functions returns false, the class will not be added.
|
|
607
|
+
* @param {Object} [scope] The scope to execute the testFn in.
|
|
608
|
+
* @return {Ext.dom.Element} this
|
|
609
|
+
*/
|
|
610
|
+
addClsOnClick : function(className, testFn, scope) {
|
|
611
|
+
var me = this,
|
|
612
|
+
dom = me.dom,
|
|
613
|
+
hasTest = Ext.isFunction(testFn);
|
|
614
|
+
|
|
615
|
+
me.on("mousedown", function() {
|
|
616
|
+
if (hasTest && testFn.call(scope || me, me) === false) {
|
|
617
|
+
return false;
|
|
618
|
+
}
|
|
619
|
+
Ext.fly(dom, INTERNAL).addCls(className);
|
|
620
|
+
var d = Ext.getDoc(),
|
|
621
|
+
fn = function() {
|
|
622
|
+
Ext.fly(dom, INTERNAL).removeCls(className);
|
|
623
|
+
d.removeListener("mouseup", fn);
|
|
624
|
+
};
|
|
625
|
+
d.on("mouseup", fn);
|
|
626
|
+
});
|
|
627
|
+
return me;
|
|
628
|
+
},
|
|
629
|
+
|
|
630
|
+
/**
|
|
631
|
+
* Returns the dimensions of the element available to lay content out in.
|
|
632
|
+
*
|
|
633
|
+
* getStyleSize utilizes prefers style sizing if present, otherwise it chooses the larger of offsetHeight/clientHeight and
|
|
634
|
+
* offsetWidth/clientWidth. To obtain the size excluding scrollbars, use getViewSize.
|
|
635
|
+
*
|
|
636
|
+
* Sizing of the document body is handled at the adapter level which handles special cases for IE and strict modes, etc.
|
|
637
|
+
*
|
|
638
|
+
* @return {Object} Object describing width and height.
|
|
639
|
+
* @return {Number} return.width
|
|
640
|
+
* @return {Number} return.height
|
|
641
|
+
*/
|
|
642
|
+
getStyleSize : function() {
|
|
643
|
+
var me = this,
|
|
644
|
+
d = this.dom,
|
|
645
|
+
isDoc = DOCORBODYRE.test(d.nodeName),
|
|
646
|
+
s ,
|
|
647
|
+
w, h;
|
|
648
|
+
|
|
649
|
+
// If the body, use static methods
|
|
650
|
+
if (isDoc) {
|
|
651
|
+
return {
|
|
652
|
+
width : Element.getViewWidth(),
|
|
653
|
+
height : Element.getViewHeight()
|
|
654
|
+
};
|
|
655
|
+
}
|
|
656
|
+
|
|
657
|
+
s = me.getStyle([HEIGHT, WIDTH], true); //seek inline
|
|
658
|
+
// Use Styles if they are set
|
|
659
|
+
if (s.width && s.width != 'auto') {
|
|
660
|
+
w = parseFloat(s.width);
|
|
661
|
+
if (me.isBorderBox()) {
|
|
662
|
+
w -= me.getFrameWidth('lr');
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
// Use Styles if they are set
|
|
666
|
+
if (s.height && s.height != 'auto') {
|
|
667
|
+
h = parseFloat(s.height);
|
|
668
|
+
if (me.isBorderBox()) {
|
|
669
|
+
h -= me.getFrameWidth('tb');
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
// Use getWidth/getHeight if style not set.
|
|
673
|
+
return {width: w || me.getWidth(true), height: h || me.getHeight(true)};
|
|
674
|
+
},
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* Enable text selection for this element (normalized across browsers)
|
|
678
|
+
* @return {Ext.Element} this
|
|
679
|
+
*/
|
|
680
|
+
selectable : function() {
|
|
681
|
+
var me = this;
|
|
682
|
+
me.dom.unselectable = "off";
|
|
683
|
+
// Prevent it from bubles up and enables it to be selectable
|
|
684
|
+
me.on('selectstart', function (e) {
|
|
685
|
+
e.stopPropagation();
|
|
686
|
+
return true;
|
|
687
|
+
});
|
|
688
|
+
me.applyStyles("-moz-user-select: text; -khtml-user-select: text;");
|
|
689
|
+
me.removeCls(Ext.baseCSSPrefix + 'unselectable');
|
|
690
|
+
return me;
|
|
691
|
+
},
|
|
692
|
+
|
|
693
|
+
/**
|
|
694
|
+
* Disables text selection for this element (normalized across browsers)
|
|
695
|
+
* @return {Ext.dom.Element} this
|
|
696
|
+
*/
|
|
697
|
+
unselectable : function() {
|
|
698
|
+
var me = this;
|
|
699
|
+
me.dom.unselectable = "on";
|
|
700
|
+
|
|
701
|
+
me.swallowEvent("selectstart", true);
|
|
702
|
+
me.applyStyles("-moz-user-select:-moz-none;-khtml-user-select:none;");
|
|
703
|
+
me.addCls(Ext.baseCSSPrefix + 'unselectable');
|
|
704
|
+
|
|
705
|
+
return me;
|
|
706
|
+
}
|
|
707
|
+
});
|
|
708
|
+
|
|
709
|
+
Element.prototype.styleHooks = styleHooks = Ext.dom.AbstractElement.prototype.styleHooks;
|
|
710
|
+
|
|
711
|
+
if (Ext.isIE6) {
|
|
712
|
+
styleHooks.fontSize = styleHooks['font-size'] = {
|
|
713
|
+
name: 'fontSize',
|
|
714
|
+
canThrow: true
|
|
715
|
+
};
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
// override getStyle for border-*-width
|
|
719
|
+
if (Ext.isIEQuirks || Ext.isIE && Ext.ieVersion <= 8) {
|
|
720
|
+
function getBorderWidth (dom, el, inline, style) {
|
|
721
|
+
if (style[this.styleName] == 'none') {
|
|
722
|
+
return '0px';
|
|
723
|
+
}
|
|
724
|
+
return style[this.name];
|
|
725
|
+
}
|
|
726
|
+
|
|
727
|
+
edges = ['Top','Right','Bottom','Left'];
|
|
728
|
+
k = edges.length;
|
|
729
|
+
|
|
730
|
+
while (k--) {
|
|
731
|
+
edge = edges[k];
|
|
732
|
+
borderWidth = 'border' + edge + 'Width';
|
|
733
|
+
|
|
734
|
+
styleHooks['border-'+edge.toLowerCase()+'-width'] = styleHooks[borderWidth] = {
|
|
735
|
+
name: borderWidth,
|
|
736
|
+
styleName: 'border' + edge + 'Style',
|
|
737
|
+
get: getBorderWidth
|
|
738
|
+
};
|
|
739
|
+
}
|
|
740
|
+
}
|
|
741
|
+
|
|
742
|
+
}());
|
|
743
|
+
|
|
744
|
+
Ext.onReady(function () {
|
|
745
|
+
var opacityRe = /alpha\(opacity=(.*)\)/i,
|
|
746
|
+
trimRe = /^\s+|\s+$/g,
|
|
747
|
+
hooks = Ext.dom.Element.prototype.styleHooks;
|
|
748
|
+
|
|
749
|
+
// Ext.supports flags are not populated until onReady...
|
|
750
|
+
hooks.opacity = {
|
|
751
|
+
name: 'opacity',
|
|
752
|
+
afterSet: function(dom, value, el) {
|
|
753
|
+
if (el.isLayer) {
|
|
754
|
+
el.onOpacitySet(value);
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
};
|
|
758
|
+
if (!Ext.supports.Opacity && Ext.isIE) {
|
|
759
|
+
Ext.apply(hooks.opacity, {
|
|
760
|
+
get: function (dom) {
|
|
761
|
+
var filter = dom.style.filter,
|
|
762
|
+
match, opacity;
|
|
763
|
+
if (filter.match) {
|
|
764
|
+
match = filter.match(opacityRe);
|
|
765
|
+
if (match) {
|
|
766
|
+
opacity = parseFloat(match[1]);
|
|
767
|
+
if (!isNaN(opacity)) {
|
|
768
|
+
return opacity ? opacity / 100 : 0;
|
|
769
|
+
}
|
|
770
|
+
}
|
|
771
|
+
}
|
|
772
|
+
return 1;
|
|
773
|
+
},
|
|
774
|
+
set: function (dom, value) {
|
|
775
|
+
var style = dom.style,
|
|
776
|
+
val = style.filter.replace(opacityRe, '').replace(trimRe, '');
|
|
777
|
+
|
|
778
|
+
style.zoom = 1; // ensure dom.hasLayout
|
|
779
|
+
|
|
780
|
+
// value can be a number or '' or null... so treat falsey as no opacity
|
|
781
|
+
if (typeof(value) == 'number' && value >= 0 && value < 1) {
|
|
782
|
+
value *= 100;
|
|
783
|
+
style.filter = val + (val.length ? ' ' : '') + 'alpha(opacity='+value+')';
|
|
784
|
+
} else {
|
|
785
|
+
style.filter = val;
|
|
786
|
+
}
|
|
787
|
+
}
|
|
788
|
+
});
|
|
789
|
+
}
|
|
790
|
+
// else there is no work around for the lack of opacity support. Should not be a
|
|
791
|
+
// problem given that this has been supported for a long time now...
|
|
792
|
+
});
|