Repository: flex-asjs
Updated Branches:
  refs/heads/develop 2ce0a9f6b -> 82e7acba9


- Fix issue with double called "click" event in MDL RadioButton - unfortunately 
fix partially break "selected" property


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

Branch: refs/heads/develop
Commit: 82e7acba94ee741e294ea502e3dd09517849768d
Parents: 2ce0a9f
Author: piotrz <[email protected]>
Authored: Tue Jan 31 00:30:12 2017 +0100
Committer: piotrz <[email protected]>
Committed: Tue Jan 31 00:30:12 2017 +0100

----------------------------------------------------------------------
 .../flex/org/apache/flex/mdl/RadioButton.as     | 74 +++++++++++---------
 1 file changed, 41 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/82e7acba/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 98d82d1..0366013 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
@@ -321,19 +321,20 @@ package org.apache.flex.mdl
             (icon.element as WrappedHTMLElement).flexjs_wrapper = this;
             (radio as WrappedHTMLElement).flexjs_wrapper = this;
 
-            //element.addEventListener("click", clickHandler, false);
+            element.addEventListener("click", clickHandler, false);
             
             return element;
         };
 
-        /*COMPILE::JS
+        COMPILE::JS
         public function clickHandler(event:Event):void
         {
             event.preventDefault();
+            unselectAll();
             selected = !selected;
             (icon.element as HTMLInputElement).checked = selected;
             label.classList.toggle("is-checked", selected);
-        }*/
+        }
 
         protected var _ripple:Boolean = false;
         /**
@@ -360,16 +361,6 @@ package org.apache.flex.mdl
             }
         }
         
-        /**
-         * @param e The event object.
-         */
-        private function selectionChangeHandler(e:Event):void 
-        {
-            // this should reset the icons in the non-selected radio
-            selectedValue = value;
-        }
-        
-        
         override public function set id(value:String):void
         {
             super.id = value;
@@ -418,17 +409,14 @@ package org.apache.flex.mdl
         
         public function get selectedValue():Object
         {
-            var buttons:NodeList;
-            var groupName:String;
-            var i:int;
-            var n:int;
-
-            groupName = (icon.element as HTMLInputElement).name as String;
-            buttons = document.getElementsByName(groupName);
-            n = buttons.length;
+            var groupName:String = (icon.element as HTMLInputElement).name as 
String;
+            var buttons:NodeList = document.getElementsByName(groupName);
+            var n:int = buttons.length;
 
-            for (i = 0; i < n; i++) {
-                if (buttons[i].checked) {
+            for (var i:int = 0; i < n; i++)
+            {
+                if (buttons[i].checked)
+                {
                     return buttons[i].value;
                 }
             }
@@ -440,22 +428,42 @@ package org.apache.flex.mdl
          */
         public function set selectedValue(value:Object):void
         {
-            var buttons:NodeList;
-            var groupName:String;
-            var i:int;
-            var n:int;
-
-            groupName = (icon.element as HTMLInputElement).name as String;
-            buttons = document.getElementsByName(groupName);
-            n = buttons.length;
-            for (i = 0; i < n; i++) {
-                if (buttons[i].value === value) {
+            var groupName:String = (icon.element as HTMLInputElement).name as 
String;
+            var buttons:NodeList = document.getElementsByName(groupName);
+            var n:int = buttons.length;
+
+            for (var i:int = 0; i < n; i++)
+            {
+                if (buttons[i].value === value)
+                {
                     buttons[i].checked = true;
                     break;
                 }
             }
         }
 
+        COMPILE::JS
+        private function unselectAll():void
+        {
+            var groupName:String = (icon.element as HTMLInputElement).name as 
String;
+            var buttons:NodeList = document.getElementsByName(groupName);
+            var n:int = buttons.length;
+
+            for (var i:int = 0; i < n; i++)
+            {
+                var radio:HTMLInputElement = buttons[i];
+                radio.checked = false;
+
+                var labels:NodeList = radio["labels"];
+                var labelsLength:int = labels.length;
+                
+                for (var l:int = 0; l < labelsLength; l++)
+                {
+                    var lbl:Object = labels[l];
+                    lbl.classList.remove("is-checked");
+                }
+            }
+        }
         /**
          * @param e The event object.
          */

Reply via email to