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>
