FLEX-35269 - Fix Tooltip - to be able to add it dynamically to component check whether his parent exits - if not add it to the parent after "beadsAdded" and make upgrade
Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/77f7ae2c Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/77f7ae2c Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/77f7ae2c Branch: refs/heads/tlf Commit: 77f7ae2c99f3f5150f36d19413e95fd33b2aac23 Parents: 4826856 Author: piotrz <[email protected]> Authored: Sat Mar 18 17:13:21 2017 +0100 Committer: piotrz <[email protected]> Committed: Sat Mar 18 17:13:21 2017 +0100 ---------------------------------------------------------------------- .../flex/org/apache/flex/mdl/beads/Tooltip.as | 72 ++++++++++++++++---- 1 file changed, 58 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/77f7ae2c/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/Tooltip.as ---------------------------------------------------------------------- diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/Tooltip.as b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/Tooltip.as index 9cf89db..1c30aa2 100644 --- a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/Tooltip.as +++ b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/Tooltip.as @@ -18,6 +18,8 @@ //////////////////////////////////////////////////////////////////////////////// package org.apache.flex.mdl.beads { + import org.apache.flex.events.Event; + import org.apache.flex.core.IBead; import org.apache.flex.core.IStrand; import org.apache.flex.core.UIBase; @@ -56,6 +58,11 @@ package org.apache.flex.mdl.beads } + private var _host:UIBase; + + COMPILE::JS + private var _tooltipDiv:HTMLDivElement; + private var _text:String = ""; /** * The text of the tooltip @@ -205,27 +212,64 @@ package org.apache.flex.mdl.beads { _strand = value; - var host:UIBase = value as UIBase; - + _host = value as UIBase; COMPILE::JS - { - var element:HTMLElement = host.element as HTMLElement; - var divElemet:HTMLDivElement = document.createElement("div") as HTMLDivElement; + { + _tooltipDiv = document.createElement("div") as HTMLDivElement; - divElemet.classList.add("mdl-tooltip"); - divElemet.classList.toggle("mdl-tooltip--top", _topPosition); - divElemet.classList.toggle("mdl-tooltip--left", _leftPosition); - divElemet.classList.toggle("mdl-tooltip--right", _rightPosition); - divElemet.classList.toggle("mdl-tooltip--bottom", _bottomPosition); + _tooltipDiv.classList.add("mdl-tooltip"); + _tooltipDiv.classList.toggle("mdl-tooltip--top", _topPosition); + _tooltipDiv.classList.toggle("mdl-tooltip--left", _leftPosition); + _tooltipDiv.classList.toggle("mdl-tooltip--right", _rightPosition); + _tooltipDiv.classList.toggle("mdl-tooltip--bottom", _bottomPosition); - divElemet.classList.toggle("mdl-tooltip--large", _large); - divElemet.setAttribute('for', host.id); + _tooltipDiv.classList.toggle("mdl-tooltip--large", _large); + _tooltipDiv.setAttribute('for', _host.id); var textNode:Text = document.createTextNode(''); textNode.nodeValue = _text; - divElemet.appendChild(textNode); + _tooltipDiv.appendChild(textNode); + + var isElementAdded:Boolean = addTooltipToParent(); + if (!isElementAdded) + { + _host.addEventListener("beadsAdded", beadsAddedHandler); + } + } + } + + COMPILE::JS + private function beadsAddedHandler(event:Event):void + { + var host:UIBase = _strand as UIBase; + host.removeEventListener("beadsAdded", beadsAddedHandler); + + addTooltipToParent(); + upgradeTooltip(); + } + + COMPILE::JS + private function addTooltipToParent():Boolean + { + var element:HTMLElement = _host.element as HTMLElement; + + if (!element.parentElement) + { + return false; + } + + element.parentElement.appendChild(_tooltipDiv); + return true; + } + + COMPILE::JS + private function upgradeTooltip():void + { + var componentHandler:Object = window["componentHandler"]; - element.parentElement.appendChild(divElemet); + if (componentHandler && _tooltipDiv) + { + componentHandler["upgradeElement"](_tooltipDiv); } } }
