This is an automated email from the ASF dual-hosted git repository. carlosrovira pushed a commit to branch develop in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
commit 41ccf01b170a4171bd6e9c3640972ddd39bea584 Author: Carlos Rovira <carlosrov...@apache.org> AuthorDate: Wed May 13 16:48:19 2020 +0200 finish collapsible renderer finished --- .../itemRenderers/NavigationGroupExampleItemRenderer.mxml | 14 +++++++++----- frameworks/projects/Jewel/src/main/resources/defaults.css | 1 - .../itemRenderers/CollapsibleNavigationSectionRenderer.as | 15 ++++++++++++++- .../apache/royale/jewel/itemRenderers/ListItemRenderer.as | 4 ++++ .../Jewel/src/main/sass/components/_navigation.sass | 3 +-- 5 files changed, 28 insertions(+), 9 deletions(-) diff --git a/examples/jewel/TourDeJewel/src/main/royale/itemRenderers/NavigationGroupExampleItemRenderer.mxml b/examples/jewel/TourDeJewel/src/main/royale/itemRenderers/NavigationGroupExampleItemRenderer.mxml index c7412af..3ea5289 100644 --- a/examples/jewel/TourDeJewel/src/main/royale/itemRenderers/NavigationGroupExampleItemRenderer.mxml +++ b/examples/jewel/TourDeJewel/src/main/royale/itemRenderers/NavigationGroupExampleItemRenderer.mxml @@ -21,9 +21,10 @@ limitations under the License. xmlns:j="library://ns.apache.org/royale/jewel" xmlns:js="library://ns.apache.org/royale/basic" xmlns:html="library://ns.apache.org/royale/html" - className="layout vertical" + sectionClick="handleNavToggle(event)" - height="48"> + minHeight="48"> + <!-- using 'minHeight' instead of 'height' here since collapsible changes heigth of the renderer --> <fx:Script> <![CDATA[ @@ -80,15 +81,18 @@ limitations under the License. <j:beads> <js:ItemRendererDataBinding /> + <!-- We can't add layout here since this renderer has its own needed to work --> </j:beads> - <!-- <j:HGroup gap="8" itemsVerticalAlign="itemsCenter"> --> + <!-- if we need to layout items in the render introduce a container like the following --> + <j:HGroup gap="8" itemsVerticalAlign="itemsCenter" height="48"> <js:MaterialIcon text="{navlink.icon}" visible="{navlink.icon != null}"/> <html:Span className="navigation-section-title" text="{text}"/> <js:MaterialIcon text="{open? MaterialIconType.EXPAND_LESS: MaterialIconType.EXPAND_MORE}" className="hint" - visible="{navlink.subMenu != null}" /> - <!-- </j:HGroup> --> + visible="{navlink.subMenu != null}"/> + </j:HGroup> + </j:CollapsibleNavigationSectionRenderer> diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css b/frameworks/projects/Jewel/src/main/resources/defaults.css index aba279f..9fa93e1 100644 --- a/frameworks/projects/Jewel/src/main/resources/defaults.css +++ b/frameworks/projects/Jewel/src/main/resources/defaults.css @@ -3286,7 +3286,6 @@ j|NavigationLinkItemRenderer { } j|CollapsibleNavigationSectionRenderer { - IBeadLayout: ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout"); IBeadController: ClassReference("org.apache.royale.html.beads.controllers.ItemRendererMouseController"); } diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as index 2bb5133..d513935 100644 --- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as +++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/CollapsibleNavigationSectionRenderer.as @@ -28,6 +28,7 @@ package org.apache.royale.jewel.itemRenderers import org.apache.royale.events.Event; import org.apache.royale.html.elements.A; import org.apache.royale.jewel.Navigation; + import org.apache.royale.jewel.beads.layouts.VerticalLayout; import org.apache.royale.jewel.supportClasses.INavigationRenderer; import org.apache.royale.utils.ClassSelectorList; import org.apache.royale.utils.MXMLDataInterpreter; @@ -37,6 +38,9 @@ package org.apache.royale.jewel.itemRenderers * The NavigationLinkItemRenderer defines the basic Item Renderer for a Jewel * Navigation List Component. It handles Objects with "label" and "href" data. * Extend this (you can do it in MXML) to support more data like for example: icon data. + * + * Note: This render creates a sub list, so we add in this class a concrete layout (VerticalLayout). So don't try + * to change layout (adding via CSS, mxml beads, etc...). For layout the renderer parts, use a container (i.e: HGroup, VGroup,...) * * @langversion 3.0 * @playerversion Flash 10.2 @@ -68,7 +72,9 @@ package org.apache.royale.jewel.itemRenderers private function onSectionNav(event:Event):void{ var navTarget:Object = event.target; - if (event.target == sectionNavItem || event.target.parent == sectionNavItem) { + + // this check should be smarter, check sectionNavItem and its childs + if (event.target == sectionNavItem || event.target.parent == sectionNavItem || event.target.parent.parent == sectionNavItem) { event.stopImmediatePropagation(); navTarget = this; //make 'this' the event.target @@ -262,6 +268,13 @@ package org.apache.royale.jewel.itemRenderers MXMLDataInterpreter.generateMXMLInstances(this, sectionNavItem, MXMLDescriptor); MXMLDescriptor.length = 0; super.addedToParent(); + addLayoutBead(); + } + + public function addLayoutBead():void { + var parentLayout:VerticalLayout = new VerticalLayout(); + parentLayout.itemsVerticalAlign = "itemsCentered"; + addBead(parentLayout); } /** diff --git a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as index 9ed7cec..1e44284 100644 --- a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as +++ b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/ListItemRenderer.as @@ -153,6 +153,10 @@ package org.apache.royale.jewel.itemRenderers override public function addedToParent():void { super.addedToParent(); + addLayoutBead(); + } + + public function addLayoutBead():void { loadBeadFromValuesManager(IBeadLayout, "iBeadLayout", this); } } diff --git a/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass b/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass index 906569e..3641081 100644 --- a/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass +++ b/frameworks/projects/Jewel/src/main/sass/components/_navigation.sass @@ -51,6 +51,5 @@ j|NavigationLinkItemRenderer .jewel.navigationgroup j|CollapsibleNavigationSectionRenderer - IBeadLayout: ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout") IBeadController: ClassReference("org.apache.royale.html.beads.controllers.ItemRendererMouseController") - // itemsVerticalAlign: itemsCenter \ No newline at end of file + // don't add IBeadLayout. We add one in code since this render creates additional elements \ No newline at end of file