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. */
