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


The following commit(s) were added to refs/heads/develop by this push:
     new cd88829  jewel-wizard: add transitions. use "activateEffect" new 
wizard property to turn on/off.
cd88829 is described below

commit cd88829b2122706224eac3221a0992482e5cf7ad
Author: Carlos Rovira <[email protected]>
AuthorDate: Mon Apr 8 00:37:33 2019 +0200

    jewel-wizard: add transitions. use "activateEffect" new wizard property to 
turn on/off.
---
 .../src/main/royale/WizardPlayGround.mxml          | 25 ++++++++-
 .../projects/Jewel/src/main/resources/defaults.css | 50 ++++++++++++++----
 .../main/royale/org/apache/royale/jewel/Wizard.as  | 21 ++++++++
 .../org/apache/royale/jewel/WizardContent.as       |  3 +-
 .../royale/org/apache/royale/jewel/WizardPage.as   | 49 ++++++++++++++++--
 .../royale/jewel/beads/models/WizardModel.as       | 24 ++++++++-
 .../apache/royale/jewel/beads/views/WizardView.as  | 16 +++++-
 .../src/main/sass/components/_sectioncontent.sass  |  1 -
 .../Jewel/src/main/sass/components/_wizard.sass    | 60 +++++++++++++++++-----
 9 files changed, 216 insertions(+), 33 deletions(-)

diff --git a/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml 
b/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml
index c1be59e..46dc0b7 100644
--- a/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml
+++ b/examples/royale/TourDeJewel/src/main/royale/WizardPlayGround.mxml
@@ -40,7 +40,7 @@ limitations under the License.
        </j:beads>
 
        <j:Card width="600">
-               <j:Wizard id="wizard" width="100%" height="500" 
title="{getStepLabel(wizard.currentStep)}">
+               <j:Wizard id="wizard" width="100%" height="500" 
title="{getStepLabel(wizard.currentStep)}" activateEffect="false">
                        <j:previousButton>
                                <j:Group>
                                        <j:IconButton 
emphasis="{Button.SECONDARY}">
@@ -122,9 +122,13 @@ limitations under the License.
 
                        <j:WizardPage name="page5">
                                <views:step>
-                                       <j:WizardStep name="page5" 
previousStep="page4" stepLabel="Page 5"/>
+                                       <j:WizardStep name="page5" 
previousStep="page4" nextStep="page6" stepLabel="Page 5"/>
                                </views:step>
 
+                               <j:beads>
+                                       <j:ScrollingViewport/>
+                               </j:beads>
+
                                <j:Grid>
                                        <j:GridCell desktopNumerator="1" 
desktopDenominator="1"
                                                                
tabletNumerator="1" tabletDenominator="1"
@@ -142,6 +146,23 @@ limitations under the License.
                                </j:Grid>
 
                        </j:WizardPage>
+
+                       <j:WizardPage name="page6">
+                               <views:step>
+                                       <j:WizardStep name="page6" 
previousStep="page5" stepLabel="Page 6"/>
+                               </views:step>
+
+                               <j:beads>
+                                       <j:ScrollingViewport/>
+                               </j:beads>
+
+                               <j:VGroup itemsVerticalAlign="itemsCentered" 
width="250">
+                                       <html:H3 innerHTML="&lt;strong>This 
Content is centered and has scroll. The scroll bar apears near the right 
border.&lt;/strong>&lt;br>&lt;br>"/>
+                                       <j:Label multiline="true" html="Lorem 
ipsum dolor sit amet, consectetur adipiscing elit. Mauris finibus blandit risus 
sed elementum. Nulla consectetur vestibulum fringilla. Pellentesque id 
facilisis tortor. Fusce neque velit, placerat sit amet nibh at, interdum 
fringilla lectus. Pellentesque eget porta nulla. Aenean eu nisi eros. Sed 
consequat convallis neque vel iaculis. Aliquam ut varius nunc. Fusce sit amet 
mattis nisl. Nunc nibh diam, dictum sit amet lacus nec, mollis aliquam ve [...]
+                                       <j:Button text="Hi!" emphasis="primary" 
width="180"/>
+                               </j:VGroup>
+
+                       </j:WizardPage>
                </j:Wizard>
        </j:Card>
 </c:ExampleAndSourceCodeTabbedSectionContent>
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index eb30506..7f2fcd3 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -3897,24 +3897,58 @@ j|BarTitle {
   order: -1;
 }
 
-.jewel .wizard .main {
+.jewel.wizard.main {
   align-items: center;
   width: 100%;
   height: 100%;
 }
-.jewel .precontent {
+.jewel.precontent {
+  position: relative;
   width: 100%;
   flex: 1 0;
 }
 .jewel.next, .jewel.previous {
+  z-index: 1;
   height: 100%;
   align-items: center;
   justify-content: center;
   cursor: pointer;
 }
-.jewel .wizardcontent {
+.jewel.wizardcontent {
   height: 100%;
   flex-grow: 100;
+  position: inherit;
+}
+.jewel.wizardpage {
+  position: absolute;
+  top: 0px;
+  bottom: 0px;
+  width: 100%;
+  display: none;
+}
+.jewel.wizardpage > * {
+  margin: auto;
+}
+.jewel.wizardpage.is-selected {
+  z-index: 1;
+  display: block;
+}
+.jewel.wizardpage.is-selected.transitions {
+  opacity: 1;
+  transform: translateX(0%);
+}
+.jewel.wizardpage.transitions {
+  opacity: 0;
+  transition: transform 0.6s ease-out, opacity 0.6s ease-out;
+  will-change: transform, opacity;
+  transform: translateX(100%);
+  display: initial;
+}
+.jewel.wizardpage.transitions.slideLeft {
+  transform: translateX(-100%);
+}
+.jewel.wizardpage.transitions.slideRight {
+  transform: translateX(100%);
 }
 
 j|Wizard {
@@ -3925,15 +3959,13 @@ j|Wizard {
   IWizardContentArea: ClassReference("org.apache.royale.jewel.WizardContent");
 }
 
-j|WizardPage {
-  IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.NoViewport");
-}
-
 j|WizardContent {
   IBeadView: ClassReference("org.apache.royale.html.beads.ContainerView");
   IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout");
-  IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport");
-  IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel");
+}
+
+j|WizardPage {
+  IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.NoViewport");
 }
 
 .jewel.main {
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Wizard.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Wizard.as
index eacf86d..e3f0d4c 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Wizard.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Wizard.as
@@ -131,6 +131,27 @@ package org.apache.royale.jewel
                }
                
                /**
+                *  turn on/off the transition effects
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.6
+                *  @royaleignorecoercion 
org.apache.royale.jewel.beads.models.WizardModel
+                */
+               public function get activateEffect():Boolean
+               {
+                       return WizardModel(model).activateEffect;
+               }
+               /**
+                * @royaleignorecoercion 
org.apache.royale.jewel.beads.models.WizardModel
+                */
+               public function set activateEffect(value:Boolean):void
+               {
+                       WizardModel(model).activateEffect = value;
+               }
+               
+               /**
                 *  The HTML string to display in the 
org.apache.royale.jewel.TitleBar.
                 *
                 *  @langversion 3.0
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardContent.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardContent.as
index 987fe69..6bc27be 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardContent.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardContent.as
@@ -23,7 +23,6 @@ package org.apache.royale.jewel
        import org.apache.royale.core.WrappedHTMLElement;
        import org.apache.royale.html.util.addElementToWrapper;
     }
-       import org.apache.royale.jewel.Container;
        import org.apache.royale.jewel.supportClasses.ISelectableContent;
 
        /**
@@ -36,7 +35,7 @@ package org.apache.royale.jewel
         *  @playerversion AIR 2.6
         *  @productversion Royale 0.9.4
         */
-       public class WizardContent extends Container
+       public class WizardContent extends Group
        {
                /**
                 *  constructor.
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
index 801898e..6e98b20 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/WizardPage.as
@@ -18,6 +18,10 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.royale.jewel
 {
+       // COMPILE::JS
+       // {
+       // import org.apache.royale.utils.css.transitionEventAvailable;
+       // }
     import org.apache.royale.events.Event;
     import org.apache.royale.jewel.beads.models.WizardModel;
     import org.apache.royale.jewel.beads.models.WizardStep;
@@ -95,9 +99,17 @@ package org.apache.royale.jewel
                {
                        super();
 
-            typeNames = "jewel section wizardpage";
+            typeNames = "jewel wizardpage";
+
+                       // COMPILE::JS
+                       // {
+                       // transitionEvent = transitionEventAvailable(this);
+                       // }
                }
 
+               // COMPILE::JS
+               // private var transitionEvent:String;
+
                /**
                 * @royalesuppresspublicvarwarning
                 */
@@ -146,6 +158,11 @@ package org.apache.royale.jewel
                public function addWizardListeners(wizard:Wizard):void
                {
                        this.wizard = wizard;
+                       model = wizard.getBeadByType(WizardModel) as 
WizardModel;
+                       if(model.activateEffect)
+                       {
+                               addClass("transitions");
+                       }
                        wizard.addEventListener("goToPreviousStep", 
goToPreviousStepHandler);
                        wizard.addEventListener("goToNextStep", 
goToNextStepHandler);
                        addEventListener("showPreviousButtonChange", 
WizardView(wizard.view).showPreviousButtonChangeHandler);
@@ -169,11 +186,11 @@ package org.apache.royale.jewel
                 */
                protected function goToPreviousStepHandler(event:Event):void
                {
-                       var model:WizardModel = (event.target as 
Wizard).getBeadByType(WizardModel) as WizardModel;
                        if(model.currentStep.name == step.name)
                        {
                                dispatchEvent(new Event("exitPage"));
                                exitPage();
+                               moveEffect(model.activateEffect, "slideRight", 
true);
                        }
                        if(model.currentStep.previousStep == step.name)
                        {
@@ -181,9 +198,34 @@ package org.apache.royale.jewel
                                model.showNextButton = showNextButton;
                                dispatchEvent(new Event("enterPage"));
                                enterPage();
+                               moveEffect(model.activateEffect, "slideLeft", 
false);
+                       }
+               }
+
+               public function moveEffect(activate:Boolean, direction:String, 
addclass:Boolean = true):void
+               {
+                       if(activate)
+                       {
+                               // COMPILE::JS
+                               // {
+                               // element.addEventListener(transitionEvent, 
transitionendHandler);
+                               // }
+                               addclass ? addClass(direction) : 
removeClass(direction);
                        }
                }
 
+               // public function transitionendHandler(event:Event):void
+               // {
+               //      if(event["propertyName"] == "opacity")
+               //      {
+               //      trace(event);
+               //              COMPILE::JS
+               //              {
+               //              element.removeEventListener(transitionEvent, 
transitionendHandler);     
+               //              }
+               //      }
+               // }
+
                /**
                 * exit page
                 */
@@ -197,11 +239,11 @@ package org.apache.royale.jewel
                 */
                protected function goToNextStepHandler(event:Event):void
                {
-                       var model:WizardModel = (event.target as 
Wizard).getBeadByType(WizardModel) as WizardModel;
                        if(model.currentStep.name == step.name)
                        {
                                dispatchEvent(new Event("exitPage"));
                                exitPage();
+                               moveEffect(model.activateEffect, "slideLeft", 
true);
                        }
                        if(model.currentStep.nextStep == step.name)
                        {
@@ -209,6 +251,7 @@ package org.apache.royale.jewel
                                model.showNextButton = showNextButton;
                                dispatchEvent(new Event("enterPage"));
                                enterPage();
+                               moveEffect(model.activateEffect, "slideRight", 
false);
                        }
                }
 
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/WizardModel.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/WizardModel.as
index e5e4c97..72ddcfe 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/WizardModel.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/models/WizardModel.as
@@ -63,7 +63,29 @@ package org.apache.royale.jewel.beads.models
                        _strand = value;
                }
                
-        private var _text:String;
+        private var _activateEffect:Boolean = true;
+               /**
+                *  turn on/off the transition effects
+                *
+                *  @langversion 3.0
+                *  @playerversion Flash 10.2
+                *  @playerversion AIR 2.6
+                *  @productversion Royale 0.9.6
+                */
+               [Bindable(event="activateEffectChange")]
+               public function get activateEffect():Boolean
+               {
+                       return _activateEffect;
+               }
+               public function set activateEffect(value:Boolean):void
+               {
+                       if(value != _activateEffect) {
+                               _activateEffect = value;
+                               dispatchEvent(new 
Event('activateEffectChange'));
+                       }
+               }
+        
+               private var _text:String;
                /**
                 *  The title string for the org.apache.royale.jewel.Wizard.
                 *
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
index f81fe9b..9174ae4 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/WizardView.as
@@ -304,8 +304,20 @@ package org.apache.royale.jewel.beads.views
                 */
                protected function stepChangeAction():void
                {
-                       previousButton.visible = model.showPreviousButton && 
model.currentStep && model.currentStep.previousStep != null;
-                       nextButton.visible = model.showNextButton && 
model.currentStep && model.currentStep.nextStep != null;
+                       model.currentStep.page.removeClass("slideLeft");
+                       model.currentStep.page.removeClass("slideRight");
+
+                       if(model.activateEffect) {
+                               COMPILE::JS
+                               {
+                               previousButton.element.style.visibility = 
model.showPreviousButton && model.currentStep && model.currentStep.previousStep 
!= null ? "visible" : "hidden";
+                               nextButton.element.style.visibility = 
model.showNextButton && model.currentStep && model.currentStep.nextStep != null 
? "visible" : "hidden";
+                               }
+                       } else {
+                               previousButton.visible = 
model.showPreviousButton && model.currentStep && model.currentStep.previousStep 
!= null;
+                               nextButton.visible = model.showNextButton && 
model.currentStep && model.currentStep.nextStep != null;
+                       }
+
                }
                
         protected function setupContentAreaLayout():void
diff --git 
a/frameworks/projects/Jewel/src/main/sass/components/_sectioncontent.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_sectioncontent.sass
index 9c97c06..8fe2f99 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_sectioncontent.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_sectioncontent.sass
@@ -22,7 +22,6 @@
 // SectionContent variables
 
 .jewel.section
-    //padding: 40px
     display: none
     flex-flow: column nowrap
     height: 100%
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_wizard.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_wizard.sass
index b6260a2..b94aa23 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_wizard.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_wizard.sass
@@ -22,20 +22,21 @@
 // Wizard variables
 
 .jewel
-    .wizard
-        .main
+    &.wizard
+        &.main
             align-items: center
             width: 100%
             height: 100%
     &.label
         &.wizardTitle
-            
-
-    .precontent
+    
+    &.precontent
+        position: relative
         width: 100%
         flex: 1 0
 
     &.next, &.previous
+        z-index: 1
         height: 100%
         align-items: center
         justify-content: center
@@ -44,9 +45,43 @@
             
         .jewel.button
 
-    .wizardcontent
+    &.wizardcontent
         height: 100%
         flex-grow: 100
+        position: inherit
+        
+    &.wizardpage
+        position: absolute
+        top: 0px
+        bottom: 0px
+        width: 100%
+        display: none
+        // debug: border: 1px solid red
+
+        > *
+            margin: auto
+
+        &.is-selected
+            z-index: 1
+            display: block
+
+            &.transitions
+                opacity: 1
+                transform: translateX(0%)
+
+        &.transitions
+            opacity: 0
+            transition: transform .6s ease-out, opacity .6s ease-out
+            will-change: transform, opacity
+            transform: translateX(100%)
+            display: initial
+        
+            &.slideLeft
+                transform: translateX(-100%)
+            &.slideRight
+                transform: translateX(100%)
+                
+
 
 j|Wizard
     IBeadView: ClassReference("org.apache.royale.jewel.beads.views.WizardView")
@@ -55,6 +90,12 @@ j|Wizard
     IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.WizardModel")
     IWizardContentArea: ClassReference("org.apache.royale.jewel.WizardContent")
 
+j|WizardContent
+    IBeadView: ClassReference("org.apache.royale.html.beads.ContainerView")
+    IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout")
+    // IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport")
+    // IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")
+
 j|WizardPage
     IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.NoViewport")
 
@@ -81,10 +122,3 @@ j|WizardPage
 
 // j|WizardButtonItemRenderer
 //     IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController")
-
-
-j|WizardContent
-    IBeadView: ClassReference("org.apache.royale.html.beads.ContainerView")
-    IBeadLayout: 
ClassReference("org.apache.royale.jewel.beads.layouts.NullLayout")
-    IViewport: 
ClassReference("org.apache.royale.jewel.supportClasses.scrollbar.ScrollingViewport")
-    IViewportModel: 
ClassReference("org.apache.royale.html.beads.models.ViewportModel")

Reply via email to