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 c23a5f3 jewel-tabbar: more changes to improve visuals in tabbar, as
well mouse events since now we have content and indicator that is not filling
all available tabbarbutton space
c23a5f3 is described below
commit c23a5f3c28abfa27d5b9ae875ec24e8a1ad40f7b
Author: Carlos Rovira <[email protected]>
AuthorDate: Wed Apr 17 23:58:30 2019 +0200
jewel-tabbar: more changes to improve visuals in tabbar, as well mouse
events since now we have content and indicator that is not filling all
available tabbarbutton space
---
.../projects/Jewel/src/main/resources/defaults.css | 29 +++++++++++++++--
.../itemRenderers/TabBarButtonItemRenderer.as | 26 +++++++++++++--
.../Jewel/src/main/sass/components/_tabbar.sass | 38 +++++++++++++++++++---
.../JewelTheme/src/main/resources/defaults.css | 16 +++------
.../src/main/sass/components-primary/_tabbar.sass | 29 ++++++++++-------
5 files changed, 106 insertions(+), 32 deletions(-)
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 2f638e8..876bc16 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -3480,6 +3480,9 @@ j|Snackbar {
.jewel.tabbar {
display: flex;
+ position: relative;
+ transform: none;
+ will-change: transform;
}
j|TabBar {
@@ -3496,23 +3499,43 @@ j|TabBar {
.jewel.tabbarbutton {
height: 48px;
- margin: 0;
- padding: 0 1.12em;
+ padding: 0 24px;
position: relative;
display: flex;
flex: 1 0 auto;
white-space: nowrap;
+ justify-content: center;
text-transform: uppercase;
text-decoration: none;
z-index: 1;
}
.jewel.tabbarbutton .content {
display: flex;
+ position: relative;
align-items: center;
justify-content: center;
- width: 100%;
height: inherit;
}
+.jewel.tabbarbutton .indicator {
+ display: flex;
+ position: absolute;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100%;
+ pointer-events: none;
+ z-index: 1;
+}
+.jewel.tabbarbutton .indicator .indicatorContent {
+ align-self: flex-end;
+ width: 100%;
+ transform-origin: left;
+ opacity: 0;
+ transition: transform 0.25s ease;
+}
+.jewel.tabbarbutton.selected .indicator .indicatorContent {
+ opacity: 1;
+}
j|TabBarButtonItemRenderer {
IBeadController:
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController");
diff --git
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
index 12fdb95..cc778d9 100644
---
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
+++
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/itemRenderers/TabBarButtonItemRenderer.as
@@ -53,6 +53,8 @@ package org.apache.royale.jewel.itemRenderers
{
super();
+ hoverable = false;
+
typeNames = "jewel tabbarbutton";
addClass("selectable");
}
@@ -146,7 +148,16 @@ package org.apache.royale.jewel.itemRenderers
var span:HTMLSpanElement = addElementToWrapper(this, 'span') as
HTMLSpanElement;
span.className = "content";
positioner = document.createElement('button') as
WrappedHTMLElement;
- //a.setAttribute('href', href);
+
+ indicator = document.createElement('span') as
HTMLSpanElement;
+ indicator.className = "indicator";
+ positioner.appendChild(indicator);
+
+ var indicator_content:HTMLSpanElement =
document.createElement('span') as HTMLSpanElement;
+ indicator_content.className = "indicatorContent";
+ indicator.appendChild(indicator_content);
+
+ //a.setAttribute('href', href);
// if(MXMLDescriptor == null)
// {
@@ -158,6 +169,9 @@ package org.apache.royale.jewel.itemRenderers
}
COMPILE::JS
+ private var indicator:HTMLSpanElement;
+
+ COMPILE::JS
private var _positioner:WrappedHTMLElement;
COMPILE::JS
@@ -208,8 +222,16 @@ package org.apache.royale.jewel.itemRenderers
// there's no selection only hover state
if(hoverable)
toggleClass("hovered", hovered);
- if(selectable)
+ if(selectable) {
toggleClass("selected", selected);
+
+ // COMPILE::JS
+ // {
+ // indicator.classList.toggle("selected",
selected);
+ // }
+ }
+
+
}
}
}
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
b/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
index e216527..c8fcb02 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_tabbar.sass
@@ -24,7 +24,11 @@ $tabbarbutton-margin-height: 48px
.jewel.tabbar
display: flex
- // flex: 1 0 auto
+
+ position: relative
+ // flex: 1 0 auto --> make TabBarContent positioned at bottom
+ transform: none
+ will-change: transform
j|TabBar
@@ -39,21 +43,22 @@ j|TabBar
IDataProviderItemRendererMapper:
ClassReference("org.apache.royale.jewel.beads.itemRenderers.DataItemRendererFactoryForCollectionView")
// Jewel TabBarButtonItemRenderer
-$tabbarbutton-margin: 0 !default
-$tabbarbutton-padding: 0 1.12em !default
+// $tabbarbutton-margin: 0 !default
+$tabbarbutton-padding: 0 24px !default
// TabBarButtonItemRenderer variables
.jewel
&.tabbarbutton
height: $tabbarbutton-margin-height
// min-height: $tabbarbutton-margin-height
- margin: $tabbarbutton-margin
+ // margin: $tabbarbutton-margin
padding: $tabbarbutton-padding
position: relative
display: flex
flex: 1 0 auto
white-space: nowrap
+ justify-content: center
text-transform: uppercase
text-decoration: none
@@ -62,12 +67,35 @@ $tabbarbutton-padding: 0 1.12em !default
.content
display: flex
+ position: relative
align-items: center
justify-content: center
- width: 100%
+ // width: 100%
height: inherit
+ .indicator
+ display: flex
+ position: absolute
+ top: 0
+ left: 0
+ width: 100%
+ height: 100%
+ pointer-events: none
+ z-index: 1
+
+ .indicatorContent
+ align-self: flex-end
+ width: 100%
+ transform-origin: left
+ opacity: 0
+ transition: transform .25s ease //cubic-bezier(.4,0,.2,1)
+
+ &.selected
+ .indicator
+ .indicatorContent
+ opacity: 1
+
j|TabBarButtonItemRenderer
IBeadController:
ClassReference("org.apache.royale.jewel.beads.controllers.ItemRendererMouseController")
diff --git a/frameworks/themes/JewelTheme/src/main/resources/defaults.css
b/frameworks/themes/JewelTheme/src/main/resources/defaults.css
index 298a5d4..5d1da55 100644
--- a/frameworks/themes/JewelTheme/src/main/resources/defaults.css
+++ b/frameworks/themes/JewelTheme/src/main/resources/defaults.css
@@ -842,8 +842,6 @@ j|FormItem {
}
}
.jewel.tabbarbutton {
- margin: 0;
- padding: 0;
font-size: 1em;
font-weight: 500;
border: none;
@@ -851,16 +849,12 @@ j|FormItem {
outline: none;
color: rgba(0, 0, 0, 0.6);
}
-.jewel.tabbarbutton .content {
- padding: 0px 16px;
-}
-.jewel.tabbarbutton.hovered:hover {
- color: #FFFFFF;
- background: #6cc1f4;
-}
.jewel.tabbarbutton.selected, .jewel.tabbarbutton.selectable:active {
- color: #FFFFFF;
- background: #54b7f3;
+ color: #3CADF1;
+}
+.jewel.tabbarbutton .indicator .indicatorContent {
+ height: 2px;
+ background-color: #3CADF1;
}
.jewel.simpletable {
diff --git
a/frameworks/themes/JewelTheme/src/main/sass/components-primary/_tabbar.sass
b/frameworks/themes/JewelTheme/src/main/sass/components-primary/_tabbar.sass
index d43b057..f14f519 100644
--- a/frameworks/themes/JewelTheme/src/main/sass/components-primary/_tabbar.sass
+++ b/frameworks/themes/JewelTheme/src/main/sass/components-primary/_tabbar.sass
@@ -32,8 +32,8 @@
// NavigationLinkItemRenderer variables
.jewel
&.tabbarbutton
- margin: 0
- padding: 0
+ // margin: 0
+ // padding: 0
font:
// family: $font-stack
size: $font-size
@@ -44,13 +44,20 @@
outline: none
color: rgba(black, 0.6)
- .content
- padding: 0px $itemrenderer-padding
-
- &.hovered:hover
- color: $font-theme-color
- background: lighten($primary-color, 10%)
-
+ // .content
+ // padding: 0px $itemrenderer-padding
+
&.selected, &.selectable:active
- color: $font-theme-color
- background: lighten($primary-color, 5%)
\ No newline at end of file
+ color: $primary-color
+
+ .indicator
+ .indicatorContent
+ height: 2px
+ background-color: $primary-color
+ // &.hovered:hover
+ // color: $font-theme-color
+ // background: lighten($primary-color, 10%)
+
+ // &.selected, &.selectable:active
+ // color: $font-theme-color
+ // background: lighten($primary-color, 5%)
\ No newline at end of file