Repository: flex-asjs
Updated Branches:
  refs/heads/tlf 550062ab0 -> 031fdad83


FLEX-35269 - Introduce UpgradeChildren bead which upgrading list of children in 
component
- Remove isDynamic property - switch of for dynamic creatio for components 
Button, RadioButton and TextField


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/8489282a
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/8489282a
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/8489282a

Branch: refs/heads/tlf
Commit: 8489282ad316b9bed9785842632d2a51b96d5ac5
Parents: a77bfe4
Author: piotrz <[email protected]>
Authored: Sat Mar 18 12:02:41 2017 +0100
Committer: piotrz <[email protected]>
Committed: Sat Mar 18 12:02:41 2017 +0100

----------------------------------------------------------------------
 .../src/main/flex/MDLClasses.as                 |   1 +
 .../src/main/flex/org/apache/flex/mdl/Button.as |   9 +-
 .../flex/org/apache/flex/mdl/RadioButton.as     |  47 +------
 .../main/flex/org/apache/flex/mdl/TextField.as  |  18 +--
 .../apache/flex/mdl/beads/UpgradeChildren.as    | 127 +++++++++++++++++++
 .../src/main/resources/mdl-manifest.xml         |   3 +-
 6 files changed, 141 insertions(+), 64 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/8489282a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
----------------------------------------------------------------------
diff --git a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as 
b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
index 02ff26b..0fc9bff 100644
--- a/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
+++ b/frameworks/projects/MaterialDesignLite/src/main/flex/MDLClasses.as
@@ -35,6 +35,7 @@ package
                import org.apache.flex.mdl.beads.models.SnackbarModel; 
SnackbarModel;
                import org.apache.flex.mdl.materialIcons.MaterialIconType; 
MaterialIconType;
                import org.apache.flex.mdl.beads.UpgradeElement; UpgradeElement;
+               import org.apache.flex.mdl.beads.UpgradeChildren; 
UpgradeChildren;
                
                COMPILE::SWF
                {

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/8489282a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Button.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Button.as
 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Button.as
index aeb2a6f..f68d4b2 100644
--- 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Button.as
+++ 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/Button.as
@@ -46,19 +46,14 @@ package org.apache.flex.mdl
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
-         *
-         *  @param isDynamic indicates whether component can be created 
dynamically
          */
-               public function Button(isDynamic:Boolean = false)
+               public function Button()
                {
                        super();
 
             className = ""; //set to empty string avoid 'undefined' output 
when no class selector is assigned by user;
 
-            if (isDynamic)
-            {
-                addBead(new UpgradeElement());
-            }
+            addBead(new UpgradeElement());
                }
         
         /**

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/8489282a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/RadioButton.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/RadioButton.as
 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/RadioButton.as
index 5ca56f1..8de4e17 100644
--- 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/RadioButton.as
+++ 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/RadioButton.as
@@ -20,6 +20,7 @@ package org.apache.flex.mdl
 {
     import org.apache.flex.events.Event;
     import org.apache.flex.events.MouseEvent;
+    import org.apache.flex.mdl.beads.UpgradeChildren;
     import org.apache.flex.mdl.beads.UpgradeElement;
 
     COMPILE::SWF
@@ -33,7 +34,6 @@ package org.apache.flex.mdl
     {
         import org.apache.flex.core.UIBase;
         import org.apache.flex.core.WrappedHTMLElement;
-        import org.apache.flex.html.Span;
     }
 
     //--------------------------------------
@@ -86,18 +86,14 @@ package org.apache.flex.mdl
                 *  @playerversion AIR 2.6
                 *  @productversion FlexJS 0.8
                 */
-               public function RadioButton(isDynamic:Boolean)
+               public function RadioButton()
                {
-            _isDynamic = isDynamic;
-
             super();
                        
addEventListener(org.apache.flex.events.MouseEvent.CLICK, internalMouseHandler);
                }
 
                protected static var dict:Dictionary = new Dictionary(true);
 
-               private var _isDynamic:Boolean;
-
                /**
                 *  The name of the group. Only one RadioButton in a group is 
selected.
                 *
@@ -269,20 +265,15 @@ package org.apache.flex.mdl
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
-         *
-         *  @param isDynamic indicates whether component can be created 
dynamically
          */
-               public function RadioButton(isDynamic:Boolean = false)
+               public function RadioButton()
                {
-            _isDynamic = isDynamic;
             super();
 
             className = ""; //set to empty string avoid 'undefined' output 
when no class selector is assigned by user;
 
-            if (isDynamic)
-            {
-                addBead(new UpgradeElement());
-            }
+            addBead(new UpgradeElement());
+            addBead(new UpgradeChildren(["mdl-radio__ripple-container"]));
         }
 
         /**
@@ -290,8 +281,6 @@ package org.apache.flex.mdl
          */
         protected static var radioCounter:int = 0;
 
-        private var _isDynamic:Boolean;
-
         private var radio:HTMLSpanElement;
         private var icon:HTMLInputElement;
         private var label:HTMLLabelElement;
@@ -328,7 +317,6 @@ package org.apache.flex.mdl
             label.appendChild(radio);
 
             element = label as WrappedHTMLElement;
-            element.addEventListener("mdl-componentupgraded", 
onElementMdlComponentUpgraded, false);
 
             positioner = element;
             (element as WrappedHTMLElement).flexjs_wrapper = this;
@@ -457,31 +445,6 @@ package org.apache.flex.mdl
             }
         }
 
-        private function onElementMdlComponentUpgraded(event:Event):void
-        {
-            if (!event.currentTarget) return;
-            upgradeChildren();
-        }
-
-        private function upgradeChildren():void
-        {
-            if (_isDynamic && ripple)
-            {
-                var elementChildren:Object = (element as HTMLElement).children;
-                for (var i:int = 0; i < elementChildren.length; i++)
-                {
-                    var child:Object = elementChildren[i];
-                    var isUpgraded:Object = 
child.getAttribute("data-upgraded");
-
-                    if 
(child.classList.contains("mdl-radio__ripple-container") && isUpgraded == null)
-                    {
-                        var componentHandler:Object = 
window["componentHandler"];
-                        componentHandler["upgradeElement"](child);
-                        break;
-                    }
-                }
-            }
-        }
         /**
          * @param e The event object.
          */

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/8489282a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/TextField.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/TextField.as
 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/TextField.as
index dc07a3e..ec7f7db 100644
--- 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/TextField.as
+++ 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/TextField.as
@@ -18,7 +18,6 @@
 package org.apache.flex.mdl
 {
     import org.apache.flex.mdl.beads.UpgradeElement;
-
     import org.apache.flex.mdl.supportClasses.TextFieldBase;
 
     COMPILE::JS
@@ -55,19 +54,13 @@ package org.apache.flex.mdl
          *  @playerversion Flash 10.2
          *  @playerversion AIR 2.6
          *  @productversion FlexJS 0.8
-         *
-         *  @param isDynamic indicates whether component can be created 
dynamically
          */
-               public function TextField(isDynamic:Boolean = false)
+               public function TextField()
                {
-            _isDynamic = isDynamic;
-
                        super();
             className = ""; //set to empty string avoid 'undefined' output 
when no class selector is assigned by user;
-               }
-
-        private var _isDynamic:Boolean;
-
+        }
+        
         /**
          * @flexjsignorecoercion org.apache.flex.core.WrappedHTMLElement
          * @flexjsignorecoercion HTMLDivElement
@@ -83,10 +76,7 @@ package org.apache.flex.mdl
             var div:HTMLDivElement = document.createElement('div') as 
HTMLDivElement;
             div.className = typeNames;
 
-            if (_isDynamic)
-            {
-                addBead(new UpgradeElement(div));
-            }
+            addBead(new UpgradeElement(div));
 
             input = document.createElement('input') as HTMLInputElement;
             input.setAttribute('type', 'text');

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/8489282a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/UpgradeChildren.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/UpgradeChildren.as
 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/UpgradeChildren.as
new file mode 100644
index 0000000..c15c802
--- /dev/null
+++ 
b/frameworks/projects/MaterialDesignLite/src/main/flex/org/apache/flex/mdl/beads/UpgradeChildren.as
@@ -0,0 +1,127 @@
+////////////////////////////////////////////////////////////////////////////////
+//
+//  Licensed to the Apache Software Foundation (ASF) under one or more
+//  contributor license agreements.  See the NOTICE file distributed with
+//  this work for additional information regarding copyright ownership.
+//  The ASF licenses this file to You under the Apache License, Version 2.0
+//  (the "License"); you may not use this file except in compliance with
+//  the License.  You may obtain a copy of the License at
+//
+//      http://www.apache.org/licenses/LICENSE-2.0
+//
+//  Unless required by applicable law or agreed to in writing, software
+//  distributed under the License is distributed on an "AS IS" BASIS,
+//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+//  See the License for the specific language governing permissions and
+//  limitations under the License.
+//
+////////////////////////////////////////////////////////////////////////////////
+package org.apache.flex.mdl.beads
+{
+    import org.apache.flex.core.IBead;
+    import org.apache.flex.core.IStrand;
+    import org.apache.flex.core.UIBase;
+    import org.apache.flex.events.Event;
+
+
+    /**
+     * UpgradeChildren bead will automatically register all the children for 
component
+     * in the case where you are creating DOM
+     * elements dynamically.
+     * Bead register new elements using the upgradeElement function from MDL 
library
+     *
+     * @langversion 3.0
+     * @playerversion Flash 10.2
+     * @playerversion AIR 2.6
+     * @productversion FlexJS 0.8
+     */
+    public class UpgradeChildren implements IBead
+    {
+        /**
+         * @param classNames
+         */
+        public function UpgradeChildren(classNames:Array = null)
+        {
+            _classNames = classNames;
+        }
+
+        private var _host:UIBase;
+        private var _strand:IStrand;
+        private var _classNames:Array;
+
+        /**
+         * Class lists of children which need to be updated
+         * 
+         * @param value class names
+         *
+         * @langversion 3.0
+         * @playerversion Flash 10.2
+         * @playerversion AIR 2.6
+         * @productversion FlexJS 0.8
+         */
+        public function set classNames(value:Array):void
+        {
+            _classNames = value;
+        }
+
+        /**
+         *  @copy org.apache.flex.core.IBead#strand
+         *
+         *  @langversion 3.0
+         *  @playerversion Flash 10.2
+         *  @playerversion AIR 2.6
+         *  @productversion FlexJS 0.8
+         *  @flexjsignorecoercion org.apache.flex.core.UIBase;
+         */
+        public function set strand(value:IStrand):void
+        {
+            _strand = value;
+            _host = value as UIBase;
+
+            COMPILE::JS
+            {
+                if (_host)
+                {
+                    _host.element.addEventListener("mdl-componentupgraded", 
onElementMdlComponentUpgraded, false);
+                }
+            }
+        }
+
+        COMPILE::JS
+        private function onElementMdlComponentUpgraded(event:Event):void
+        {
+            if (!event.currentTarget) return;
+            if (_host)
+            {
+                _host.element.removeEventListener("mdl-componentupgraded", 
onElementMdlComponentUpgraded, false);
+            }
+            
+            upgradeChildren();
+        }
+
+        COMPILE::JS
+        private function upgradeChildren():void
+        {
+            if (!_host && !_classNames) return;
+            
+            var elementChildren:Object = (_host.element as 
HTMLElement).children;
+            if (!elementChildren) return;
+
+            for each (var className:String in _classNames)
+            {
+                for (var i:int = 0; i < elementChildren.length; i++)
+                {
+                    var child:Object = elementChildren[i];
+                    var isUpgraded:Object = 
child.getAttribute("data-upgraded");
+
+                    if (child.classList.contains(className) && isUpgraded == 
null)
+                    {
+                        var componentHandler:Object = 
window["componentHandler"];
+                        componentHandler["upgradeElement"](child);
+                        break;
+                    }
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/8489282a/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml 
b/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
index 634d3e7..f15a0f6 100644
--- a/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
+++ b/frameworks/projects/MaterialDesignLite/src/main/resources/mdl-manifest.xml
@@ -115,5 +115,6 @@
     <component id="FooterLinkItemRenderer" 
class="org.apache.flex.mdl.itemRenderers.FooterLinkItemRenderer"/>
     <component id="FooterSocialButton" 
class="org.apache.flex.mdl.FooterSocialButton"/>
     <component id="FooterHeading" class="org.apache.flex.mdl.FooterHeading"/>
-    
+    <component id="UpgradeElement" 
class="org.apache.flex.mdl.beads.UpgradeElement"/>
+    <component id="UpgradeChildren" 
class="org.apache.flex.mdl.beads.UpgradeChildren"/>
 </componentPackage>

Reply via email to