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,239 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Provides attractive and customizable tooltips for any element. The QuickTips
|
|
3
|
+
* singleton is used to configure and manage tooltips globally for multiple elements
|
|
4
|
+
* in a generic manner. To create individual tooltips with maximum customizability,
|
|
5
|
+
* you should consider either {@link Ext.tip.Tip} or {@link Ext.tip.ToolTip}.
|
|
6
|
+
*
|
|
7
|
+
* Quicktips can be configured via tag attributes directly in markup, or by
|
|
8
|
+
* registering quick tips programmatically via the {@link #register} method.
|
|
9
|
+
*
|
|
10
|
+
* The singleton's instance of {@link Ext.tip.QuickTip} is available via
|
|
11
|
+
* {@link #getQuickTip}, and supports all the methods, and all the all the
|
|
12
|
+
* configuration properties of Ext.tip.QuickTip. These settings will apply to all
|
|
13
|
+
* tooltips shown by the singleton.
|
|
14
|
+
*
|
|
15
|
+
* Below is the summary of the configuration properties which can be used.
|
|
16
|
+
* For detailed descriptions see the config options for the
|
|
17
|
+
* {@link Ext.tip.QuickTip QuickTip} class
|
|
18
|
+
*
|
|
19
|
+
* ## QuickTips singleton configs (all are optional)
|
|
20
|
+
*
|
|
21
|
+
* - `dismissDelay`
|
|
22
|
+
* - `hideDelay`
|
|
23
|
+
* - `maxWidth`
|
|
24
|
+
* - `minWidth`
|
|
25
|
+
* - `showDelay`
|
|
26
|
+
* - `trackMouse`
|
|
27
|
+
*
|
|
28
|
+
* ## Target element configs (optional unless otherwise noted)
|
|
29
|
+
*
|
|
30
|
+
* - `autoHide`
|
|
31
|
+
* - `cls`
|
|
32
|
+
* - `dismissDelay` (overrides singleton value)
|
|
33
|
+
* - `target` (required)
|
|
34
|
+
* - `text` (required)
|
|
35
|
+
* - `title`
|
|
36
|
+
* - `width`
|
|
37
|
+
*
|
|
38
|
+
* Here is an example showing how some of these config options could be used:
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* // Init the singleton. Any tag-based quick tips will start working.
|
|
42
|
+
* Ext.tip.QuickTipManager.init();
|
|
43
|
+
*
|
|
44
|
+
* // Apply a set of config properties to the singleton
|
|
45
|
+
* Ext.apply(Ext.tip.QuickTipManager.getQuickTip(), {
|
|
46
|
+
* maxWidth: 200,
|
|
47
|
+
* minWidth: 100,
|
|
48
|
+
* showDelay: 50 // Show 50ms after entering target
|
|
49
|
+
* });
|
|
50
|
+
*
|
|
51
|
+
* // Create a small panel to add a quick tip to
|
|
52
|
+
* Ext.create('Ext.container.Container', {
|
|
53
|
+
* id: 'quickTipContainer',
|
|
54
|
+
* width: 200,
|
|
55
|
+
* height: 150,
|
|
56
|
+
* style: {
|
|
57
|
+
* backgroundColor:'#000000'
|
|
58
|
+
* },
|
|
59
|
+
* renderTo: Ext.getBody()
|
|
60
|
+
* });
|
|
61
|
+
*
|
|
62
|
+
*
|
|
63
|
+
* // Manually register a quick tip for a specific element
|
|
64
|
+
* Ext.tip.QuickTipManager.register({
|
|
65
|
+
* target: 'quickTipContainer',
|
|
66
|
+
* title: 'My Tooltip',
|
|
67
|
+
* text: 'This tooltip was added in code',
|
|
68
|
+
* width: 100,
|
|
69
|
+
* dismissDelay: 10000 // Hide after 10 seconds hover
|
|
70
|
+
* });
|
|
71
|
+
*
|
|
72
|
+
* To register a quick tip in markup, you simply add one or more of the valid QuickTip
|
|
73
|
+
* attributes prefixed with the **data-** namespace. The HTML element itself is
|
|
74
|
+
* automatically set as the quick tip target. Here is the summary of supported attributes
|
|
75
|
+
* (optional unless otherwise noted):
|
|
76
|
+
*
|
|
77
|
+
* - `hide`: Specifying "user" is equivalent to setting autoHide = false.
|
|
78
|
+
* Any other value will be the same as autoHide = true.
|
|
79
|
+
* - `qclass`: A CSS class to be applied to the quick tip
|
|
80
|
+
* (equivalent to the 'cls' target element config).
|
|
81
|
+
* - `qtip (required)`: The quick tip text (equivalent to the 'text' target element config).
|
|
82
|
+
* - `qtitle`: The quick tip title (equivalent to the 'title' target element config).
|
|
83
|
+
* - `qwidth`: The quick tip width (equivalent to the 'width' target element config).
|
|
84
|
+
*
|
|
85
|
+
* Here is an example of configuring an HTML element to display a tooltip from markup:
|
|
86
|
+
*
|
|
87
|
+
* // Add a quick tip to an HTML button
|
|
88
|
+
* <input type="button" value="OK" data-qtitle="OK Button" data-qwidth="100"
|
|
89
|
+
* data-qtip="This is a quick tip from markup!"></input>
|
|
90
|
+
*
|
|
91
|
+
* @singleton
|
|
92
|
+
*/
|
|
93
|
+
Ext.define('Ext.tip.QuickTipManager', (function() {
|
|
94
|
+
var tip,
|
|
95
|
+
disabled = false;
|
|
96
|
+
|
|
97
|
+
return {
|
|
98
|
+
requires: ['Ext.tip.QuickTip'],
|
|
99
|
+
singleton: true,
|
|
100
|
+
alternateClassName: 'Ext.QuickTips',
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Initializes the global QuickTips instance and prepare any quick tips.
|
|
104
|
+
* @param {Boolean} [autoRender=true] True to render the QuickTips container
|
|
105
|
+
* immediately to preload images.
|
|
106
|
+
* @param {Object} [config] config object for the created QuickTip. By
|
|
107
|
+
* default, the {@link Ext.tip.QuickTip QuickTip} class is instantiated, but this can
|
|
108
|
+
* be changed by supplying an xtype property or a className property in this object.
|
|
109
|
+
* All other properties on this object are configuration for the created component.
|
|
110
|
+
*/
|
|
111
|
+
init : function (autoRender, config) {
|
|
112
|
+
if (!tip) {
|
|
113
|
+
if (!Ext.isReady) {
|
|
114
|
+
Ext.onReady(function(){
|
|
115
|
+
Ext.tip.QuickTipManager.init(autoRender, config);
|
|
116
|
+
});
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
var tipConfig = Ext.apply({ disabled: disabled, id: 'ext-quicktips-tip' }, config),
|
|
121
|
+
className = tipConfig.className,
|
|
122
|
+
xtype = tipConfig.xtype;
|
|
123
|
+
|
|
124
|
+
if (className) {
|
|
125
|
+
delete tipConfig.className;
|
|
126
|
+
} else if (xtype) {
|
|
127
|
+
className = 'widget.' + xtype;
|
|
128
|
+
delete tipConfig.xtype;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
if (autoRender !== false) {
|
|
132
|
+
tipConfig.renderTo = document.body;
|
|
133
|
+
|
|
134
|
+
//<debug>
|
|
135
|
+
if (tipConfig.renderTo.tagName.toUpperCase() != 'BODY') { // e.g., == 'FRAMESET'
|
|
136
|
+
Ext.Error.raise({
|
|
137
|
+
sourceClass: 'Ext.tip.QuickTipManager',
|
|
138
|
+
sourceMethod: 'init',
|
|
139
|
+
msg: 'Cannot init QuickTipManager: no document body'
|
|
140
|
+
});
|
|
141
|
+
}
|
|
142
|
+
//</debug>
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
tip = Ext.create(className || 'Ext.tip.QuickTip', tipConfig);
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
|
|
149
|
+
/**
|
|
150
|
+
* Destroys the QuickTips instance.
|
|
151
|
+
*/
|
|
152
|
+
destroy: function() {
|
|
153
|
+
if (tip) {
|
|
154
|
+
var undef;
|
|
155
|
+
tip.destroy();
|
|
156
|
+
tip = undef;
|
|
157
|
+
}
|
|
158
|
+
},
|
|
159
|
+
|
|
160
|
+
// Protected method called by the dd classes
|
|
161
|
+
ddDisable : function(){
|
|
162
|
+
// don't disable it if we don't need to
|
|
163
|
+
if(tip && !disabled){
|
|
164
|
+
tip.disable();
|
|
165
|
+
}
|
|
166
|
+
},
|
|
167
|
+
|
|
168
|
+
// Protected method called by the dd classes
|
|
169
|
+
ddEnable : function(){
|
|
170
|
+
// only enable it if it hasn't been disabled
|
|
171
|
+
if(tip && !disabled){
|
|
172
|
+
tip.enable();
|
|
173
|
+
}
|
|
174
|
+
},
|
|
175
|
+
|
|
176
|
+
/**
|
|
177
|
+
* Enables quick tips globally.
|
|
178
|
+
*/
|
|
179
|
+
enable : function(){
|
|
180
|
+
if(tip){
|
|
181
|
+
tip.enable();
|
|
182
|
+
}
|
|
183
|
+
disabled = false;
|
|
184
|
+
},
|
|
185
|
+
|
|
186
|
+
/**
|
|
187
|
+
* Disables quick tips globally.
|
|
188
|
+
*/
|
|
189
|
+
disable : function(){
|
|
190
|
+
if(tip){
|
|
191
|
+
tip.disable();
|
|
192
|
+
}
|
|
193
|
+
disabled = true;
|
|
194
|
+
},
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Returns true if quick tips are enabled, else false.
|
|
198
|
+
* @return {Boolean}
|
|
199
|
+
*/
|
|
200
|
+
isEnabled : function(){
|
|
201
|
+
return tip !== undefined && !tip.disabled;
|
|
202
|
+
},
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Gets the single {@link Ext.tip.QuickTip QuickTip} instance used to show tips
|
|
206
|
+
* from all registered elements.
|
|
207
|
+
* @return {Ext.tip.QuickTip}
|
|
208
|
+
*/
|
|
209
|
+
getQuickTip : function(){
|
|
210
|
+
return tip;
|
|
211
|
+
},
|
|
212
|
+
|
|
213
|
+
/**
|
|
214
|
+
* Configures a new quick tip instance and assigns it to a target element. See
|
|
215
|
+
* {@link Ext.tip.QuickTip#register} for details.
|
|
216
|
+
* @param {Object} config The config object
|
|
217
|
+
*/
|
|
218
|
+
register : function(){
|
|
219
|
+
tip.register.apply(tip, arguments);
|
|
220
|
+
},
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Removes any registered quick tip from the target element and destroys it.
|
|
224
|
+
* @param {String/HTMLElement/Ext.Element} el The element from which the quick tip
|
|
225
|
+
* is to be removed or ID of the element.
|
|
226
|
+
*/
|
|
227
|
+
unregister : function(){
|
|
228
|
+
tip.unregister.apply(tip, arguments);
|
|
229
|
+
},
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Alias of {@link #register}.
|
|
233
|
+
* @inheritdoc Ext.tip.QuickTipManager#register
|
|
234
|
+
*/
|
|
235
|
+
tips : function(){
|
|
236
|
+
tip.register.apply(tip, arguments);
|
|
237
|
+
}
|
|
238
|
+
};
|
|
239
|
+
}()));
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This is the base class for {@link Ext.tip.QuickTip} and {@link Ext.tip.ToolTip} that provides the basic layout and
|
|
3
|
+
* positioning that all tip-based classes require. This class can be used directly for simple, statically-positioned
|
|
4
|
+
* tips that are displayed programmatically, or it can be extended to provide custom tip implementations.
|
|
5
|
+
* @xtype tip
|
|
6
|
+
*/
|
|
7
|
+
Ext.define('Ext.tip.Tip', {
|
|
8
|
+
extend: 'Ext.panel.Panel',
|
|
9
|
+
|
|
10
|
+
alternateClassName: 'Ext.Tip',
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* @cfg {Boolean} [closable=false]
|
|
14
|
+
* True to render a close tool button into the tooltip header.
|
|
15
|
+
*/
|
|
16
|
+
/**
|
|
17
|
+
* @cfg {Number} width
|
|
18
|
+
* Width in pixels of the tip. Width will be ignored if it
|
|
19
|
+
* exceeds the bounds of {@link #minWidth} or {@link #maxWidth}. The maximum
|
|
20
|
+
* supported value is 500.
|
|
21
|
+
*
|
|
22
|
+
* Defaults to auto.
|
|
23
|
+
*/
|
|
24
|
+
/**
|
|
25
|
+
* @cfg {Number} minWidth
|
|
26
|
+
* The minimum width of the tip in pixels.
|
|
27
|
+
*/
|
|
28
|
+
minWidth : 40,
|
|
29
|
+
/**
|
|
30
|
+
* @cfg {Number} maxWidth
|
|
31
|
+
* The maximum width of the tip in pixels. The maximum supported value is 500.
|
|
32
|
+
*/
|
|
33
|
+
maxWidth : 300,
|
|
34
|
+
/**
|
|
35
|
+
* @cfg {Boolean/String} shadow
|
|
36
|
+
* True or "sides" for the default effect, "frame" for 4-way shadow, and "drop"
|
|
37
|
+
* for bottom-right shadow.
|
|
38
|
+
*/
|
|
39
|
+
shadow : "sides",
|
|
40
|
+
|
|
41
|
+
/**
|
|
42
|
+
* @cfg {String} defaultAlign
|
|
43
|
+
* **Experimental**. The default {@link Ext.Element#alignTo} anchor position value
|
|
44
|
+
* for this tip relative to its element of origin.
|
|
45
|
+
*/
|
|
46
|
+
defaultAlign : "tl-bl?",
|
|
47
|
+
/**
|
|
48
|
+
* @cfg {Boolean} constrainPosition
|
|
49
|
+
* If true, then the tooltip will be automatically constrained to stay within
|
|
50
|
+
* the browser viewport.
|
|
51
|
+
*/
|
|
52
|
+
constrainPosition : true,
|
|
53
|
+
|
|
54
|
+
// private panel overrides
|
|
55
|
+
autoRender: true,
|
|
56
|
+
hidden: true,
|
|
57
|
+
baseCls: Ext.baseCSSPrefix + 'tip',
|
|
58
|
+
floating: {
|
|
59
|
+
shadow: true,
|
|
60
|
+
shim: true,
|
|
61
|
+
constrain: true
|
|
62
|
+
},
|
|
63
|
+
focusOnToFront: false,
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* @cfg {String} closeAction
|
|
67
|
+
* The action to take when the close header tool is clicked:
|
|
68
|
+
*
|
|
69
|
+
* - **{@link #method-destroy}** : {@link #method-remove remove} the window from the DOM and
|
|
70
|
+
* {@link Ext.Component#method-destroy destroy} it and all descendant Components. The
|
|
71
|
+
* window will **not** be available to be redisplayed via the {@link #method-show} method.
|
|
72
|
+
*
|
|
73
|
+
* - **{@link #method-hide}** : **Default.** {@link #method-hide} the window by setting visibility
|
|
74
|
+
* to hidden and applying negative offsets. The window will be available to be
|
|
75
|
+
* redisplayed via the {@link #method-show} method.
|
|
76
|
+
*
|
|
77
|
+
* **Note:** This behavior has changed! setting *does* affect the {@link #method-close} method
|
|
78
|
+
* which will invoke the approriate closeAction.
|
|
79
|
+
*/
|
|
80
|
+
closeAction: 'hide',
|
|
81
|
+
|
|
82
|
+
ariaRole: 'tooltip',
|
|
83
|
+
|
|
84
|
+
// Flag to Renderable to always look up the framing styles for this Component
|
|
85
|
+
alwaysFramed: true,
|
|
86
|
+
|
|
87
|
+
frameHeader: false,
|
|
88
|
+
|
|
89
|
+
initComponent: function() {
|
|
90
|
+
var me = this;
|
|
91
|
+
|
|
92
|
+
me.floating = Ext.apply({}, {shadow: me.shadow}, me.self.prototype.floating);
|
|
93
|
+
me.callParent(arguments);
|
|
94
|
+
|
|
95
|
+
// Or in the deprecated config. Floating.doConstrain only constrains if the constrain property is truthy.
|
|
96
|
+
me.constrain = me.constrain || me.constrainPosition;
|
|
97
|
+
},
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Shows this tip at the specified XY position. Example usage:
|
|
101
|
+
*
|
|
102
|
+
* // Show the tip at x:50 and y:100
|
|
103
|
+
* tip.showAt([50,100]);
|
|
104
|
+
*
|
|
105
|
+
* @param {Number[]} xy An array containing the x and y coordinates
|
|
106
|
+
*/
|
|
107
|
+
showAt : function(xy){
|
|
108
|
+
var me = this;
|
|
109
|
+
this.callParent(arguments);
|
|
110
|
+
// Show may have been vetoed.
|
|
111
|
+
if (me.isVisible()) {
|
|
112
|
+
me.setPagePosition(xy[0], xy[1]);
|
|
113
|
+
if (me.constrainPosition || me.constrain) {
|
|
114
|
+
me.doConstrain();
|
|
115
|
+
}
|
|
116
|
+
me.toFront(true);
|
|
117
|
+
}
|
|
118
|
+
},
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* **Experimental**. Shows this tip at a position relative to another element using
|
|
122
|
+
* a standard {@link Ext.Element#alignTo} anchor position value. Example usage:
|
|
123
|
+
*
|
|
124
|
+
* // Show the tip at the default position ('tl-br?')
|
|
125
|
+
* tip.showBy('my-el');
|
|
126
|
+
*
|
|
127
|
+
* // Show the tip's top-left corner anchored to the element's top-right corner
|
|
128
|
+
* tip.showBy('my-el', 'tl-tr');
|
|
129
|
+
*
|
|
130
|
+
* @param {String/HTMLElement/Ext.Element} el An HTMLElement, Ext.Element or string
|
|
131
|
+
* id of the target element to align to.
|
|
132
|
+
*
|
|
133
|
+
* @param {String} [position] A valid {@link Ext.Element#alignTo} anchor position.
|
|
134
|
+
*
|
|
135
|
+
* Defaults to 'tl-br?' or {@link #defaultAlign} if specified.
|
|
136
|
+
*/
|
|
137
|
+
showBy : function(el, pos) {
|
|
138
|
+
this.showAt(this.el.getAlignToXY(el, pos || this.defaultAlign));
|
|
139
|
+
},
|
|
140
|
+
|
|
141
|
+
/**
|
|
142
|
+
* @private
|
|
143
|
+
* Set Tip draggable using base Component's draggability
|
|
144
|
+
*/
|
|
145
|
+
initDraggable : function(){
|
|
146
|
+
var me = this;
|
|
147
|
+
me.draggable = {
|
|
148
|
+
el: me.getDragEl(),
|
|
149
|
+
delegate: me.header.el,
|
|
150
|
+
constrain: me,
|
|
151
|
+
constrainTo: me.el.getScopeParent()
|
|
152
|
+
};
|
|
153
|
+
// Important: Bypass Panel's initDraggable. Call direct to Component's implementation.
|
|
154
|
+
Ext.Component.prototype.initDraggable.call(me);
|
|
155
|
+
},
|
|
156
|
+
|
|
157
|
+
// Tip does not ghost. Drag is "live"
|
|
158
|
+
ghost: undefined,
|
|
159
|
+
unghost: undefined
|
|
160
|
+
});
|
|
@@ -0,0 +1,691 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ToolTip is a {@link Ext.tip.Tip} implementation that handles the common case of displaying a
|
|
3
|
+
* tooltip when hovering over a certain element or elements on the page. It allows fine-grained
|
|
4
|
+
* control over the tooltip's alignment relative to the target element or mouse, and the timing
|
|
5
|
+
* of when it is automatically shown and hidden.
|
|
6
|
+
*
|
|
7
|
+
* This implementation does **not** have a built-in method of automatically populating the tooltip's
|
|
8
|
+
* text based on the target element; you must either configure a fixed {@link #html} value for each
|
|
9
|
+
* ToolTip instance, or implement custom logic (e.g. in a {@link #beforeshow} event listener) to
|
|
10
|
+
* generate the appropriate tooltip content on the fly. See {@link Ext.tip.QuickTip} for a more
|
|
11
|
+
* convenient way of automatically populating and configuring a tooltip based on specific DOM
|
|
12
|
+
* attributes of each target element.
|
|
13
|
+
*
|
|
14
|
+
* # Basic Example
|
|
15
|
+
*
|
|
16
|
+
* var tip = Ext.create('Ext.tip.ToolTip', {
|
|
17
|
+
* target: 'clearButton',
|
|
18
|
+
* html: 'Press this button to clear the form'
|
|
19
|
+
* });
|
|
20
|
+
*
|
|
21
|
+
* {@img Ext.tip.ToolTip/Ext.tip.ToolTip1.png Basic Ext.tip.ToolTip}
|
|
22
|
+
*
|
|
23
|
+
* # Delegation
|
|
24
|
+
*
|
|
25
|
+
* In addition to attaching a ToolTip to a single element, you can also use delegation to attach
|
|
26
|
+
* one ToolTip to many elements under a common parent. This is more efficient than creating many
|
|
27
|
+
* ToolTip instances. To do this, point the {@link #target} config to a common ancestor of all the
|
|
28
|
+
* elements, and then set the {@link #delegate} config to a CSS selector that will select all the
|
|
29
|
+
* appropriate sub-elements.
|
|
30
|
+
*
|
|
31
|
+
* When using delegation, it is likely that you will want to programmatically change the content
|
|
32
|
+
* of the ToolTip based on each delegate element; you can do this by implementing a custom
|
|
33
|
+
* listener for the {@link #beforeshow} event. Example:
|
|
34
|
+
*
|
|
35
|
+
* var store = Ext.create('Ext.data.ArrayStore', {
|
|
36
|
+
* fields: ['company', 'price', 'change'],
|
|
37
|
+
* data: [
|
|
38
|
+
* ['3m Co', 71.72, 0.02],
|
|
39
|
+
* ['Alcoa Inc', 29.01, 0.42],
|
|
40
|
+
* ['Altria Group Inc', 83.81, 0.28],
|
|
41
|
+
* ['American Express Company', 52.55, 0.01],
|
|
42
|
+
* ['American International Group, Inc.', 64.13, 0.31],
|
|
43
|
+
* ['AT&T Inc.', 31.61, -0.48]
|
|
44
|
+
* ]
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* var grid = Ext.create('Ext.grid.Panel', {
|
|
48
|
+
* title: 'Array Grid',
|
|
49
|
+
* store: store,
|
|
50
|
+
* columns: [
|
|
51
|
+
* {text: 'Company', flex: 1, dataIndex: 'company'},
|
|
52
|
+
* {text: 'Price', width: 75, dataIndex: 'price'},
|
|
53
|
+
* {text: 'Change', width: 75, dataIndex: 'change'}
|
|
54
|
+
* ],
|
|
55
|
+
* height: 200,
|
|
56
|
+
* width: 400,
|
|
57
|
+
* renderTo: Ext.getBody()
|
|
58
|
+
* });
|
|
59
|
+
*
|
|
60
|
+
* grid.getView().on('render', function(view) {
|
|
61
|
+
* view.tip = Ext.create('Ext.tip.ToolTip', {
|
|
62
|
+
* // The overall target element.
|
|
63
|
+
* target: view.el,
|
|
64
|
+
* // Each grid row causes its own seperate show and hide.
|
|
65
|
+
* delegate: view.itemSelector,
|
|
66
|
+
* // Moving within the row should not hide the tip.
|
|
67
|
+
* trackMouse: true,
|
|
68
|
+
* // Render immediately so that tip.body can be referenced prior to the first show.
|
|
69
|
+
* renderTo: Ext.getBody(),
|
|
70
|
+
* listeners: {
|
|
71
|
+
* // Change content dynamically depending on which element triggered the show.
|
|
72
|
+
* beforeshow: function updateTipBody(tip) {
|
|
73
|
+
* tip.update('Over company "' + view.getRecord(tip.triggerElement).get('company') + '"');
|
|
74
|
+
* }
|
|
75
|
+
* }
|
|
76
|
+
* });
|
|
77
|
+
* });
|
|
78
|
+
*
|
|
79
|
+
* {@img Ext.tip.ToolTip/Ext.tip.ToolTip2.png Ext.tip.ToolTip with delegation}
|
|
80
|
+
*
|
|
81
|
+
* # Alignment
|
|
82
|
+
*
|
|
83
|
+
* The following configuration properties allow control over how the ToolTip is aligned relative to
|
|
84
|
+
* the target element and/or mouse pointer:
|
|
85
|
+
*
|
|
86
|
+
* - {@link #anchor}
|
|
87
|
+
* - {@link #anchorToTarget}
|
|
88
|
+
* - {@link #anchorOffset}
|
|
89
|
+
* - {@link #trackMouse}
|
|
90
|
+
* - {@link #mouseOffset}
|
|
91
|
+
*
|
|
92
|
+
* # Showing/Hiding
|
|
93
|
+
*
|
|
94
|
+
* The following configuration properties allow control over how and when the ToolTip is automatically
|
|
95
|
+
* shown and hidden:
|
|
96
|
+
*
|
|
97
|
+
* - {@link #autoHide}
|
|
98
|
+
* - {@link #showDelay}
|
|
99
|
+
* - {@link #hideDelay}
|
|
100
|
+
* - {@link #dismissDelay}
|
|
101
|
+
*
|
|
102
|
+
* @docauthor Jason Johnston <jason@sencha.com>
|
|
103
|
+
*/
|
|
104
|
+
Ext.define('Ext.tip.ToolTip', {
|
|
105
|
+
extend: 'Ext.tip.Tip',
|
|
106
|
+
alias: 'widget.tooltip',
|
|
107
|
+
alternateClassName: 'Ext.ToolTip',
|
|
108
|
+
/**
|
|
109
|
+
* @property {HTMLElement} triggerElement
|
|
110
|
+
* When a ToolTip is configured with the `{@link #delegate}`
|
|
111
|
+
* option to cause selected child elements of the `{@link #target}`
|
|
112
|
+
* Element to each trigger a seperate show event, this property is set to
|
|
113
|
+
* the DOM element which triggered the show.
|
|
114
|
+
*/
|
|
115
|
+
/**
|
|
116
|
+
* @cfg {HTMLElement/Ext.Element/String} target
|
|
117
|
+
* The target element or string id to monitor for mouseover events to trigger
|
|
118
|
+
* showing this ToolTip.
|
|
119
|
+
*/
|
|
120
|
+
/**
|
|
121
|
+
* @cfg {Boolean} [autoHide=true]
|
|
122
|
+
* True to automatically hide the tooltip after the
|
|
123
|
+
* mouse exits the target element or after the `{@link #dismissDelay}`
|
|
124
|
+
* has expired if set. If `{@link #closable} = true`
|
|
125
|
+
* a close tool button will be rendered into the tooltip header.
|
|
126
|
+
*/
|
|
127
|
+
autoHide: true,
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* @cfg {Number} showDelay
|
|
131
|
+
* Delay in milliseconds before the tooltip displays after the mouse enters the target element.
|
|
132
|
+
*/
|
|
133
|
+
showDelay: 500,
|
|
134
|
+
/**
|
|
135
|
+
* @cfg {Number} hideDelay
|
|
136
|
+
* Delay in milliseconds after the mouse exits the target element but before the tooltip actually hides.
|
|
137
|
+
* Set to 0 for the tooltip to hide immediately.
|
|
138
|
+
*/
|
|
139
|
+
hideDelay: 200,
|
|
140
|
+
/**
|
|
141
|
+
* @cfg {Number} dismissDelay
|
|
142
|
+
* Delay in milliseconds before the tooltip automatically hides. To disable automatic hiding, set
|
|
143
|
+
* dismissDelay = 0.
|
|
144
|
+
*/
|
|
145
|
+
dismissDelay: 5000,
|
|
146
|
+
/**
|
|
147
|
+
* @cfg {Number[]} [mouseOffset=[15,18]]
|
|
148
|
+
* An XY offset from the mouse position where the tooltip should be shown.
|
|
149
|
+
*/
|
|
150
|
+
/**
|
|
151
|
+
* @cfg {Boolean} trackMouse
|
|
152
|
+
* True to have the tooltip follow the mouse as it moves over the target element.
|
|
153
|
+
*/
|
|
154
|
+
trackMouse: false,
|
|
155
|
+
/**
|
|
156
|
+
* @cfg {String} anchor
|
|
157
|
+
* If specified, indicates that the tip should be anchored to a
|
|
158
|
+
* particular side of the target element or mouse pointer ("top", "right", "bottom",
|
|
159
|
+
* or "left"), with an arrow pointing back at the target or mouse pointer. If
|
|
160
|
+
* {@link #constrainPosition} is enabled, this will be used as a preferred value
|
|
161
|
+
* only and may be flipped as needed.
|
|
162
|
+
*/
|
|
163
|
+
/**
|
|
164
|
+
* @cfg {Boolean} anchorToTarget
|
|
165
|
+
* True to anchor the tooltip to the target element, false to anchor it relative to the mouse coordinates.
|
|
166
|
+
* When `anchorToTarget` is true, use `{@link #defaultAlign}` to control tooltip alignment to the
|
|
167
|
+
* target element. When `anchorToTarget` is false, use `{@link #anchor}` instead to control alignment.
|
|
168
|
+
*/
|
|
169
|
+
anchorToTarget: true,
|
|
170
|
+
/**
|
|
171
|
+
* @cfg {Number} anchorOffset
|
|
172
|
+
* A numeric pixel value used to offset the default position of the anchor arrow. When the anchor
|
|
173
|
+
* position is on the top or bottom of the tooltip, `anchorOffset` will be used as a horizontal offset.
|
|
174
|
+
* Likewise, when the anchor position is on the left or right side, `anchorOffset` will be used as
|
|
175
|
+
* a vertical offset.
|
|
176
|
+
*/
|
|
177
|
+
anchorOffset: 0,
|
|
178
|
+
/**
|
|
179
|
+
* @cfg {String} delegate
|
|
180
|
+
*
|
|
181
|
+
* A {@link Ext.DomQuery DomQuery} selector which allows selection of individual elements within the
|
|
182
|
+
* `{@link #target}` element to trigger showing and hiding the ToolTip as the mouse moves within the
|
|
183
|
+
* target.
|
|
184
|
+
*
|
|
185
|
+
* When specified, the child element of the target which caused a show event is placed into the
|
|
186
|
+
* `{@link #triggerElement}` property before the ToolTip is shown.
|
|
187
|
+
*
|
|
188
|
+
* This may be useful when a Component has regular, repeating elements in it, each of which need a
|
|
189
|
+
* ToolTip which contains information specific to that element.
|
|
190
|
+
*
|
|
191
|
+
* See the delegate example in class documentation of {@link Ext.tip.ToolTip}.
|
|
192
|
+
*/
|
|
193
|
+
|
|
194
|
+
// private
|
|
195
|
+
targetCounter: 0,
|
|
196
|
+
quickShowInterval: 250,
|
|
197
|
+
|
|
198
|
+
// private
|
|
199
|
+
initComponent: function() {
|
|
200
|
+
var me = this;
|
|
201
|
+
me.callParent(arguments);
|
|
202
|
+
me.lastActive = new Date();
|
|
203
|
+
me.setTarget(me.target);
|
|
204
|
+
me.origAnchor = me.anchor;
|
|
205
|
+
},
|
|
206
|
+
|
|
207
|
+
// private
|
|
208
|
+
onRender: function(ct, position) {
|
|
209
|
+
var me = this;
|
|
210
|
+
me.callParent(arguments);
|
|
211
|
+
me.anchorCls = Ext.baseCSSPrefix + 'tip-anchor-' + me.getAnchorPosition();
|
|
212
|
+
me.anchorEl = me.el.createChild({
|
|
213
|
+
cls: Ext.baseCSSPrefix + 'tip-anchor ' + me.anchorCls
|
|
214
|
+
});
|
|
215
|
+
},
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* Binds this ToolTip to the specified element. The tooltip will be displayed when the mouse moves over the element.
|
|
219
|
+
* @param {String/HTMLElement/Ext.Element} t The Element, HtmlElement, or ID of an element to bind to
|
|
220
|
+
*/
|
|
221
|
+
setTarget: function(target) {
|
|
222
|
+
var me = this,
|
|
223
|
+
t = Ext.get(target),
|
|
224
|
+
tg;
|
|
225
|
+
|
|
226
|
+
if (me.target) {
|
|
227
|
+
tg = Ext.get(me.target);
|
|
228
|
+
me.mun(tg, 'mouseover', me.onTargetOver, me);
|
|
229
|
+
me.mun(tg, 'mouseout', me.onTargetOut, me);
|
|
230
|
+
me.mun(tg, 'mousemove', me.onMouseMove, me);
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
me.target = t;
|
|
234
|
+
if (t) {
|
|
235
|
+
|
|
236
|
+
me.mon(t, {
|
|
237
|
+
// TODO - investigate why IE6/7 seem to fire recursive resize in e.getXY
|
|
238
|
+
// breaking QuickTip#onTargetOver (EXTJSIV-1608)
|
|
239
|
+
freezeEvent: true,
|
|
240
|
+
|
|
241
|
+
mouseover: me.onTargetOver,
|
|
242
|
+
mouseout: me.onTargetOut,
|
|
243
|
+
mousemove: me.onMouseMove,
|
|
244
|
+
scope: me
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
if (me.anchor) {
|
|
248
|
+
me.anchorTarget = me.target;
|
|
249
|
+
}
|
|
250
|
+
},
|
|
251
|
+
|
|
252
|
+
// private
|
|
253
|
+
onMouseMove: function(e) {
|
|
254
|
+
var me = this,
|
|
255
|
+
t = me.delegate ? e.getTarget(me.delegate) : me.triggerElement = true,
|
|
256
|
+
xy;
|
|
257
|
+
if (t) {
|
|
258
|
+
me.targetXY = e.getXY();
|
|
259
|
+
if (t === me.triggerElement) {
|
|
260
|
+
if (!me.hidden && me.trackMouse) {
|
|
261
|
+
xy = me.getTargetXY();
|
|
262
|
+
if (me.constrainPosition) {
|
|
263
|
+
xy = me.el.adjustForConstraints(xy, me.el.getScopeParent());
|
|
264
|
+
}
|
|
265
|
+
me.setPagePosition(xy);
|
|
266
|
+
}
|
|
267
|
+
} else {
|
|
268
|
+
me.hide();
|
|
269
|
+
me.lastActive = new Date(0);
|
|
270
|
+
me.onTargetOver(e);
|
|
271
|
+
}
|
|
272
|
+
} else if ((!me.closable && me.isVisible()) && me.autoHide !== false) {
|
|
273
|
+
me.hide();
|
|
274
|
+
}
|
|
275
|
+
},
|
|
276
|
+
|
|
277
|
+
// private
|
|
278
|
+
getTargetXY: function() {
|
|
279
|
+
var me = this,
|
|
280
|
+
mouseOffset,
|
|
281
|
+
offsets, xy, dw, dh, de, bd, scrollX, scrollY, axy, sz, constrainPosition;
|
|
282
|
+
if (me.delegate) {
|
|
283
|
+
me.anchorTarget = me.triggerElement;
|
|
284
|
+
}
|
|
285
|
+
if (me.anchor) {
|
|
286
|
+
me.targetCounter++;
|
|
287
|
+
offsets = me.getOffsets();
|
|
288
|
+
xy = (me.anchorToTarget && !me.trackMouse) ? me.el.getAlignToXY(me.anchorTarget, me.getAnchorAlign()) : me.targetXY;
|
|
289
|
+
dw = Ext.Element.getViewWidth() - 5;
|
|
290
|
+
dh = Ext.Element.getViewHeight() - 5;
|
|
291
|
+
de = document.documentElement;
|
|
292
|
+
bd = document.body;
|
|
293
|
+
scrollX = (de.scrollLeft || bd.scrollLeft || 0) + 5;
|
|
294
|
+
scrollY = (de.scrollTop || bd.scrollTop || 0) + 5;
|
|
295
|
+
axy = [xy[0] + offsets[0], xy[1] + offsets[1]];
|
|
296
|
+
sz = me.getSize();
|
|
297
|
+
constrainPosition = me.constrainPosition;
|
|
298
|
+
|
|
299
|
+
me.anchorEl.removeCls(me.anchorCls);
|
|
300
|
+
|
|
301
|
+
if (me.targetCounter < 2 && constrainPosition) {
|
|
302
|
+
if (axy[0] < scrollX) {
|
|
303
|
+
if (me.anchorToTarget) {
|
|
304
|
+
me.defaultAlign = 'l-r';
|
|
305
|
+
if (me.mouseOffset) {
|
|
306
|
+
me.mouseOffset[0] *= -1;
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
me.anchor = 'left';
|
|
310
|
+
return me.getTargetXY();
|
|
311
|
+
}
|
|
312
|
+
if (axy[0] + sz.width > dw) {
|
|
313
|
+
if (me.anchorToTarget) {
|
|
314
|
+
me.defaultAlign = 'r-l';
|
|
315
|
+
if (me.mouseOffset) {
|
|
316
|
+
me.mouseOffset[0] *= -1;
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
me.anchor = 'right';
|
|
320
|
+
return me.getTargetXY();
|
|
321
|
+
}
|
|
322
|
+
if (axy[1] < scrollY) {
|
|
323
|
+
if (me.anchorToTarget) {
|
|
324
|
+
me.defaultAlign = 't-b';
|
|
325
|
+
if (me.mouseOffset) {
|
|
326
|
+
me.mouseOffset[1] *= -1;
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
me.anchor = 'top';
|
|
330
|
+
return me.getTargetXY();
|
|
331
|
+
}
|
|
332
|
+
if (axy[1] + sz.height > dh) {
|
|
333
|
+
if (me.anchorToTarget) {
|
|
334
|
+
me.defaultAlign = 'b-t';
|
|
335
|
+
if (me.mouseOffset) {
|
|
336
|
+
me.mouseOffset[1] *= -1;
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
me.anchor = 'bottom';
|
|
340
|
+
return me.getTargetXY();
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
me.anchorCls = Ext.baseCSSPrefix + 'tip-anchor-' + me.getAnchorPosition();
|
|
345
|
+
me.anchorEl.addCls(me.anchorCls);
|
|
346
|
+
me.targetCounter = 0;
|
|
347
|
+
return axy;
|
|
348
|
+
} else {
|
|
349
|
+
mouseOffset = me.getMouseOffset();
|
|
350
|
+
return (me.targetXY) ? [me.targetXY[0] + mouseOffset[0], me.targetXY[1] + mouseOffset[1]] : mouseOffset;
|
|
351
|
+
}
|
|
352
|
+
},
|
|
353
|
+
|
|
354
|
+
getMouseOffset: function() {
|
|
355
|
+
var me = this,
|
|
356
|
+
offset = me.anchor ? [0, 0] : [15, 18];
|
|
357
|
+
if (me.mouseOffset) {
|
|
358
|
+
offset[0] += me.mouseOffset[0];
|
|
359
|
+
offset[1] += me.mouseOffset[1];
|
|
360
|
+
}
|
|
361
|
+
return offset;
|
|
362
|
+
},
|
|
363
|
+
|
|
364
|
+
// private
|
|
365
|
+
getAnchorPosition: function() {
|
|
366
|
+
var me = this,
|
|
367
|
+
m;
|
|
368
|
+
if (me.anchor) {
|
|
369
|
+
me.tipAnchor = me.anchor.charAt(0);
|
|
370
|
+
} else {
|
|
371
|
+
m = me.defaultAlign.match(/^([a-z]+)-([a-z]+)(\?)?$/);
|
|
372
|
+
//<debug>
|
|
373
|
+
if (!m) {
|
|
374
|
+
Ext.Error.raise('The AnchorTip.defaultAlign value "' + me.defaultAlign + '" is invalid.');
|
|
375
|
+
}
|
|
376
|
+
//</debug>
|
|
377
|
+
me.tipAnchor = m[1].charAt(0);
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
switch (me.tipAnchor) {
|
|
381
|
+
case 't':
|
|
382
|
+
return 'top';
|
|
383
|
+
case 'b':
|
|
384
|
+
return 'bottom';
|
|
385
|
+
case 'r':
|
|
386
|
+
return 'right';
|
|
387
|
+
}
|
|
388
|
+
return 'left';
|
|
389
|
+
},
|
|
390
|
+
|
|
391
|
+
// private
|
|
392
|
+
getAnchorAlign: function() {
|
|
393
|
+
switch (this.anchor) {
|
|
394
|
+
case 'top':
|
|
395
|
+
return 'tl-bl';
|
|
396
|
+
case 'left':
|
|
397
|
+
return 'tl-tr';
|
|
398
|
+
case 'right':
|
|
399
|
+
return 'tr-tl';
|
|
400
|
+
default:
|
|
401
|
+
return 'bl-tl';
|
|
402
|
+
}
|
|
403
|
+
},
|
|
404
|
+
|
|
405
|
+
// private
|
|
406
|
+
getOffsets: function() {
|
|
407
|
+
var me = this,
|
|
408
|
+
mouseOffset,
|
|
409
|
+
offsets,
|
|
410
|
+
ap = me.getAnchorPosition().charAt(0);
|
|
411
|
+
if (me.anchorToTarget && !me.trackMouse) {
|
|
412
|
+
switch (ap) {
|
|
413
|
+
case 't':
|
|
414
|
+
offsets = [0, 9];
|
|
415
|
+
break;
|
|
416
|
+
case 'b':
|
|
417
|
+
offsets = [0, -13];
|
|
418
|
+
break;
|
|
419
|
+
case 'r':
|
|
420
|
+
offsets = [ - 13, 0];
|
|
421
|
+
break;
|
|
422
|
+
default:
|
|
423
|
+
offsets = [9, 0];
|
|
424
|
+
break;
|
|
425
|
+
}
|
|
426
|
+
} else {
|
|
427
|
+
switch (ap) {
|
|
428
|
+
case 't':
|
|
429
|
+
offsets = [ - 15 - me.anchorOffset, 30];
|
|
430
|
+
break;
|
|
431
|
+
case 'b':
|
|
432
|
+
offsets = [ - 19 - me.anchorOffset, -13 - me.el.dom.offsetHeight];
|
|
433
|
+
break;
|
|
434
|
+
case 'r':
|
|
435
|
+
offsets = [ - 15 - me.el.dom.offsetWidth, -13 - me.anchorOffset];
|
|
436
|
+
break;
|
|
437
|
+
default:
|
|
438
|
+
offsets = [25, -13 - me.anchorOffset];
|
|
439
|
+
break;
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
mouseOffset = me.getMouseOffset();
|
|
443
|
+
offsets[0] += mouseOffset[0];
|
|
444
|
+
offsets[1] += mouseOffset[1];
|
|
445
|
+
|
|
446
|
+
return offsets;
|
|
447
|
+
},
|
|
448
|
+
|
|
449
|
+
// private
|
|
450
|
+
onTargetOver: function(e) {
|
|
451
|
+
var me = this,
|
|
452
|
+
t;
|
|
453
|
+
|
|
454
|
+
if (me.disabled || e.within(me.target.dom, true)) {
|
|
455
|
+
return;
|
|
456
|
+
}
|
|
457
|
+
t = e.getTarget(me.delegate);
|
|
458
|
+
if (t) {
|
|
459
|
+
me.triggerElement = t;
|
|
460
|
+
me.clearTimer('hide');
|
|
461
|
+
me.targetXY = e.getXY();
|
|
462
|
+
me.delayShow();
|
|
463
|
+
}
|
|
464
|
+
},
|
|
465
|
+
|
|
466
|
+
// private
|
|
467
|
+
delayShow: function() {
|
|
468
|
+
var me = this;
|
|
469
|
+
if (me.hidden && !me.showTimer) {
|
|
470
|
+
if (Ext.Date.getElapsed(me.lastActive) < me.quickShowInterval) {
|
|
471
|
+
me.show();
|
|
472
|
+
} else {
|
|
473
|
+
me.showTimer = Ext.defer(me.show, me.showDelay, me);
|
|
474
|
+
}
|
|
475
|
+
}
|
|
476
|
+
else if (!me.hidden && me.autoHide !== false) {
|
|
477
|
+
me.show();
|
|
478
|
+
}
|
|
479
|
+
},
|
|
480
|
+
|
|
481
|
+
// private
|
|
482
|
+
onTargetOut: function(e) {
|
|
483
|
+
var me = this;
|
|
484
|
+
|
|
485
|
+
// If disabled, moving within the current target, ignore the mouseout
|
|
486
|
+
// EventObject.within is the only correct way to determine this.
|
|
487
|
+
if (me.disabled || e.within(me.target.dom, true)) {
|
|
488
|
+
return;
|
|
489
|
+
}
|
|
490
|
+
me.clearTimer('show');
|
|
491
|
+
if (me.autoHide !== false) {
|
|
492
|
+
me.delayHide();
|
|
493
|
+
}
|
|
494
|
+
},
|
|
495
|
+
|
|
496
|
+
// private
|
|
497
|
+
delayHide: function() {
|
|
498
|
+
var me = this;
|
|
499
|
+
if (!me.hidden && !me.hideTimer) {
|
|
500
|
+
me.hideTimer = Ext.defer(me.hide, me.hideDelay, me);
|
|
501
|
+
}
|
|
502
|
+
},
|
|
503
|
+
|
|
504
|
+
/**
|
|
505
|
+
* Hides this tooltip if visible.
|
|
506
|
+
*/
|
|
507
|
+
hide: function() {
|
|
508
|
+
var me = this;
|
|
509
|
+
me.clearTimer('dismiss');
|
|
510
|
+
me.lastActive = new Date();
|
|
511
|
+
if (me.anchorEl) {
|
|
512
|
+
me.anchorEl.hide();
|
|
513
|
+
}
|
|
514
|
+
me.callParent(arguments);
|
|
515
|
+
delete me.triggerElement;
|
|
516
|
+
},
|
|
517
|
+
|
|
518
|
+
/**
|
|
519
|
+
* Shows this tooltip at the current event target XY position.
|
|
520
|
+
*/
|
|
521
|
+
show: function() {
|
|
522
|
+
var me = this;
|
|
523
|
+
|
|
524
|
+
// Show this Component first, so that sizing can be calculated
|
|
525
|
+
// pre-show it off screen so that the el will have dimensions
|
|
526
|
+
this.callParent();
|
|
527
|
+
if (this.hidden === false) {
|
|
528
|
+
me.setPagePosition(-10000, -10000);
|
|
529
|
+
|
|
530
|
+
if (me.anchor) {
|
|
531
|
+
me.anchor = me.origAnchor;
|
|
532
|
+
}
|
|
533
|
+
|
|
534
|
+
if (!me.calledFromShowAt) {
|
|
535
|
+
me.showAt(me.getTargetXY());
|
|
536
|
+
}
|
|
537
|
+
|
|
538
|
+
if (me.anchor) {
|
|
539
|
+
me.syncAnchor();
|
|
540
|
+
me.anchorEl.show();
|
|
541
|
+
} else {
|
|
542
|
+
me.anchorEl.hide();
|
|
543
|
+
}
|
|
544
|
+
}
|
|
545
|
+
},
|
|
546
|
+
|
|
547
|
+
// inherit docs
|
|
548
|
+
showAt: function(xy) {
|
|
549
|
+
var me = this;
|
|
550
|
+
me.lastActive = new Date();
|
|
551
|
+
me.clearTimers();
|
|
552
|
+
me.calledFromShowAt = true;
|
|
553
|
+
|
|
554
|
+
// Only call if this is hidden. May have been called from show above.
|
|
555
|
+
if (!me.isVisible()) {
|
|
556
|
+
this.callParent(arguments);
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
// Show may have been vetoed.
|
|
560
|
+
if (me.isVisible()) {
|
|
561
|
+
me.setPagePosition(xy[0], xy[1]);
|
|
562
|
+
if (me.constrainPosition || me.constrain) {
|
|
563
|
+
me.doConstrain();
|
|
564
|
+
}
|
|
565
|
+
me.toFront(true);
|
|
566
|
+
me.el.sync(true);
|
|
567
|
+
if (me.dismissDelay && me.autoHide !== false) {
|
|
568
|
+
me.dismissTimer = Ext.defer(me.hide, me.dismissDelay, me);
|
|
569
|
+
}
|
|
570
|
+
if (me.anchor) {
|
|
571
|
+
me.syncAnchor();
|
|
572
|
+
if (!me.anchorEl.isVisible()) {
|
|
573
|
+
me.anchorEl.show();
|
|
574
|
+
}
|
|
575
|
+
} else {
|
|
576
|
+
me.anchorEl.hide();
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
delete me.calledFromShowAt;
|
|
580
|
+
},
|
|
581
|
+
|
|
582
|
+
// private
|
|
583
|
+
syncAnchor: function() {
|
|
584
|
+
var me = this,
|
|
585
|
+
anchorPos,
|
|
586
|
+
targetPos,
|
|
587
|
+
offset;
|
|
588
|
+
switch (me.tipAnchor.charAt(0)) {
|
|
589
|
+
case 't':
|
|
590
|
+
anchorPos = 'b';
|
|
591
|
+
targetPos = 'tl';
|
|
592
|
+
offset = [20 + me.anchorOffset, 1];
|
|
593
|
+
break;
|
|
594
|
+
case 'r':
|
|
595
|
+
anchorPos = 'l';
|
|
596
|
+
targetPos = 'tr';
|
|
597
|
+
offset = [ - 1, 12 + me.anchorOffset];
|
|
598
|
+
break;
|
|
599
|
+
case 'b':
|
|
600
|
+
anchorPos = 't';
|
|
601
|
+
targetPos = 'bl';
|
|
602
|
+
offset = [20 + me.anchorOffset, -1];
|
|
603
|
+
break;
|
|
604
|
+
default:
|
|
605
|
+
anchorPos = 'r';
|
|
606
|
+
targetPos = 'tl';
|
|
607
|
+
offset = [1, 12 + me.anchorOffset];
|
|
608
|
+
break;
|
|
609
|
+
}
|
|
610
|
+
me.anchorEl.alignTo(me.el, anchorPos + '-' + targetPos, offset);
|
|
611
|
+
me.anchorEl.setStyle('z-index', parseInt(me.el.getZIndex(), 10) || 0 + 1).setVisibilityMode(Ext.Element.DISPLAY);
|
|
612
|
+
},
|
|
613
|
+
|
|
614
|
+
// private
|
|
615
|
+
setPagePosition: function(x, y) {
|
|
616
|
+
var me = this;
|
|
617
|
+
me.callParent(arguments);
|
|
618
|
+
if (me.anchor) {
|
|
619
|
+
me.syncAnchor();
|
|
620
|
+
}
|
|
621
|
+
},
|
|
622
|
+
|
|
623
|
+
// private
|
|
624
|
+
clearTimer: function(name) {
|
|
625
|
+
name = name + 'Timer';
|
|
626
|
+
clearTimeout(this[name]);
|
|
627
|
+
delete this[name];
|
|
628
|
+
},
|
|
629
|
+
|
|
630
|
+
// private
|
|
631
|
+
clearTimers: function() {
|
|
632
|
+
var me = this;
|
|
633
|
+
me.clearTimer('show');
|
|
634
|
+
me.clearTimer('dismiss');
|
|
635
|
+
me.clearTimer('hide');
|
|
636
|
+
},
|
|
637
|
+
|
|
638
|
+
// private
|
|
639
|
+
onShow: function() {
|
|
640
|
+
var me = this;
|
|
641
|
+
me.callParent();
|
|
642
|
+
me.mon(Ext.getDoc(), 'mousedown', me.onDocMouseDown, me);
|
|
643
|
+
},
|
|
644
|
+
|
|
645
|
+
// private
|
|
646
|
+
onHide: function() {
|
|
647
|
+
var me = this;
|
|
648
|
+
me.callParent();
|
|
649
|
+
me.mun(Ext.getDoc(), 'mousedown', me.onDocMouseDown, me);
|
|
650
|
+
},
|
|
651
|
+
|
|
652
|
+
// private
|
|
653
|
+
onDocMouseDown: function(e) {
|
|
654
|
+
var me = this;
|
|
655
|
+
if (!me.closable && !e.within(me.el.dom)) {
|
|
656
|
+
me.disable();
|
|
657
|
+
Ext.defer(me.doEnable, 100, me);
|
|
658
|
+
}
|
|
659
|
+
},
|
|
660
|
+
|
|
661
|
+
// private
|
|
662
|
+
doEnable: function() {
|
|
663
|
+
if (!this.isDestroyed) {
|
|
664
|
+
this.enable();
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
|
|
668
|
+
// private
|
|
669
|
+
onDisable: function() {
|
|
670
|
+
this.callParent();
|
|
671
|
+
this.clearTimers();
|
|
672
|
+
this.hide();
|
|
673
|
+
},
|
|
674
|
+
|
|
675
|
+
beforeDestroy: function() {
|
|
676
|
+
var me = this;
|
|
677
|
+
me.clearTimers();
|
|
678
|
+
Ext.destroy(me.anchorEl);
|
|
679
|
+
delete me.anchorEl;
|
|
680
|
+
delete me.target;
|
|
681
|
+
delete me.anchorTarget;
|
|
682
|
+
delete me.triggerElement;
|
|
683
|
+
me.callParent();
|
|
684
|
+
},
|
|
685
|
+
|
|
686
|
+
// private
|
|
687
|
+
onDestroy: function() {
|
|
688
|
+
Ext.getDoc().un('mousedown', this.onDocMouseDown, this);
|
|
689
|
+
this.callParent();
|
|
690
|
+
}
|
|
691
|
+
});
|