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 f403e82  slider styles initial changes and progressive track
f403e82 is described below

commit f403e8271ace17574ce1cae5b751111ba3cf77dc
Author: Carlos Rovira <carlosrov...@apache.org>
AuthorDate: Thu Apr 12 12:19:19 2018 +0200

    slider styles initial changes and progressive track
---
 .../src/main/royale/SliderPlayGround.mxml          |  18 ++-
 .../projects/Jewel/src/main/resources/defaults.css |  15 ---
 .../main/royale/org/apache/royale/jewel/Slider.as  |   6 +-
 .../beads/controllers/SliderMouseController.as     |  23 +++-
 .../apache/royale/jewel/beads/views/SliderView.as  |  31 ++++-
 .../Jewel/src/main/sass/components/_slider.sass    |  16 +--
 .../JewelTheme/src/main/resources/defaults.css     | 117 ++++++++++++++----
 .../src/main/sass/components-primary/_slider.sass  | 136 +++++++++++++++++----
 8 files changed, 268 insertions(+), 94 deletions(-)

diff --git a/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml 
b/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml
index d580c38..0886393 100644
--- a/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml
+++ b/examples/royale/JewelExample/src/main/royale/SliderPlayGround.mxml
@@ -27,8 +27,9 @@ limitations under the License.
                <![CDATA[
         private function onChange(event:Event):void
         {
-               button.width = slider.value;
-                       button.height = slider_v.value;
+               button.width = slider_w.value;
+                       button.height = slider_h.value;
+                       button.text = slider_w.value + "x" + slider_h.value;
         }
        ]]>
        </fx:Script>
@@ -39,10 +40,17 @@ limitations under the License.
        
        <html:H3 text="Jewel Slider"/>
        
-       <j:Slider id="slider" width="250" value="120" minimum="100" 
maximum="500"
+       <j:Slider id="slider_w" width="250" value="250" minimum="100" 
maximum="500"
                                change="onChange(event)" 
input="onChange(event)"/>
-       <j:Slider id="slider_v" width="250" value="40" minimum="40" 
maximum="300"
+       <j:Slider id="slider_h" width="250" value="80" minimum="40" 
maximum="300"
                                change="onChange(event)" 
input="onChange(event)"/>
-       <j:TextButton id="button" text="Button" width="120" height="40" 
primary="true"/>
+
+       <j:Slider id="slider_dis" width="250" value="70" minimum="0" 
maximum="100">
+               <j:beads>
+                       <j:Disabled/>
+               </j:beads>
+       </j:Slider>
+
+       <j:TextButton id="button" text="Button" width="250" height="140" 
primary="true"/>
 
 </js:Group>
diff --git a/frameworks/projects/Jewel/src/main/resources/defaults.css 
b/frameworks/projects/Jewel/src/main/resources/defaults.css
index 24ca12d..95addd9 100644
--- a/frameworks/projects/Jewel/src/main/resources/defaults.css
+++ b/frameworks/projects/Jewel/src/main/resources/defaults.css
@@ -136,27 +136,12 @@ j|Label {
     IBeadView: 
ClassReference("org.apache.royale.jewel.beads.views.RadioButtonView");
   }
 }
-.jewel.slider {
-  width: 100px;
-  height: 30px;
-  position: relative;
-}
-
 j|Slider {
   IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.SliderRangeModel");
   IBeadView: ClassReference("org.apache.royale.jewel.beads.views.SliderView");
   IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.SliderMouseController");
 }
 
-.SliderTrack {
-  position: absolute;
-}
-
-.SliderThumb {
-  position: absolute;
-  border-radius: 15px;
-}
-
 @media -royale-swf {
   j|Slider {
     iThumbView: 
ClassReference("org.apache.royale.jewel.beads.views.SliderThumbView");
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as
index 6f32167..99b02a6 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/Slider.as
@@ -209,7 +209,7 @@ package org.apache.royale.jewel
         /**
          * @royaleignorecoercion org.apache.royale.core.WrappedHTMLElement
                 * @royaleignorecoercion HTMLInputElement
-                * @royaleignorecoercion HTMLElement
+                * @royaleignorecoercion HTMLDivElement
          */
         COMPILE::JS
         override protected function createElement():WrappedHTMLElement
@@ -219,10 +219,6 @@ package org.apache.royale.jewel
             var input:HTMLInputElement = addElementToWrapper(this,'input') as 
HTMLInputElement;
             input.setAttribute('type', 'range');
                        
-                       //attach input handler to dispatch royale change event 
when user write in textinput
-            //goog.events.listen(element, 'change', killChangeHandler);
-            //goog.events.listen(input, 'input', textChangeHandler);
-            
                        div.appendChild(input);
 
             positioner = div as WrappedHTMLElement;
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
index d917514..337b26f 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/controllers/SliderMouseController.as
@@ -36,6 +36,7 @@ package org.apache.royale.jewel.beads.controllers
         import goog.events.EventType;
         import org.apache.royale.events.BrowserEvent;
         import org.apache.royale.jewel.Slider;
+        import org.apache.royale.jewel.beads.views.SliderView;
     }
        
        /**
@@ -94,7 +95,7 @@ package org.apache.royale.jewel.beads.controllers
                        
             COMPILE::SWF
             {
-                var sliderView:ISliderView = value.getBeadByType(ISliderView) 
as ISliderView;
+               sliderView = value.getBeadByType(ISliderView) as ISliderView;
                 sliderView.thumb.addEventListener(MouseEvent.MOUSE_DOWN, 
thumbDownHandler);
                 
                 // add handler to detect click on track
@@ -103,13 +104,17 @@ package org.apache.royale.jewel.beads.controllers
             }
             COMPILE::JS
             {
-                               var sliderView:ISliderView = 
value.getBeadByType(ISliderView) as ISliderView;
+                               sliderView = value.getBeadByType(ISliderView) 
as ISliderView;
                                
                 goog.events.listen(UIBase(_strand).element, 
goog.events.EventType.CHANGE, handleChange, false, this);
                 goog.events.listen(UIBase(_strand).element, 
goog.events.EventType.INPUT, handleInput, false, this);
+
+                               changeStyles();
             }
                }
-               
+
+               public var sliderView:ISliderView;
+
                /**
          *  Manages the change event to update the range model value
          *   
@@ -125,6 +130,8 @@ package org.apache.royale.jewel.beads.controllers
 
             rangeModel.value = Number((UIBase(_strand).element as 
HTMLInputElement).value);
 
+                       changeStyles();
+
             //host.dispatchEvent(new 
org.apache.royale.events.Event('change')); --- This is not needed, the event is 
thrown in the main comp
         }
 
@@ -144,8 +151,18 @@ package org.apache.royale.jewel.beads.controllers
             rangeModel.value = Number((UIBase(_strand).element as 
HTMLInputElement).value);
 
             host.dispatchEvent(new org.apache.royale.events.Event('input'));
+
+                       changeStyles();
         }
 
+               COMPILE::JS
+        private function changeStyles():void
+        {
+                       var barsize:Number = (rangeModel.value - 
rangeModel.minimum) / (rangeModel.maximum - rangeModel.minimum);
+
+                       SliderView(sliderView).sliderTrackFill.style.flex = "" 
+ barsize;
+                       SliderView(sliderView).sliderTrack.style.flex = "" + ( 
1 - barsize );
+               }
 
 
                COMPILE::SWF
diff --git 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
index d222b01..d41eccc 100644
--- 
a/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
+++ 
b/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/beads/views/SliderView.as
@@ -100,6 +100,7 @@ package org.apache.royale.jewel.beads.views
                 *  @playerversion Flash 10.2
                 *  @playerversion AIR 2.6
                 *  @productversion Royale 0.9.3
+                *  @royaleignorecoercion HTMLDivElement
                 */
                override public function set strand(value:IStrand):void
                {
@@ -125,17 +126,37 @@ package org.apache.royale.jewel.beads.views
                        {
                 var htmlSliderElement:HTMLInputElement = host.element as 
HTMLInputElement;
                 htmlSliderElement.value = String(rangeModel.value);
+
+                               var sliderTrackContainer:HTMLDivElement = 
document.createElement('div') as HTMLDivElement;
+                               
sliderTrackContainer.className="slider-track-container";
+
+                               sliderTrackFill = document.createElement('div') 
as HTMLDivElement;
+                               sliderTrackFill.className="slider-track-fill";
+
+                               sliderTrack = document.createElement('div') as 
HTMLDivElement;
+                               sliderTrack.className="slider-track";
+
+                               
sliderTrackContainer.appendChild(sliderTrackFill);
+                               sliderTrackContainer.appendChild(sliderTrack);
+
+                               
host.positioner.appendChild(sliderTrackContainer);
             }
 
                        // listen for changes to the model and adjust the UI 
accordingly.
-                       
IEventDispatcher(rangeModel).addEventListener("valueChange", 
modelChangeHandler);
+                       
IEventDispatcher(rangeModel).addEventListener("stepSizeChange", 
modelChangeHandler);
                        
IEventDispatcher(rangeModel).addEventListener("minimumChange", 
modelChangeHandler);
                        
IEventDispatcher(rangeModel).addEventListener("maximumChange", 
modelChangeHandler);
-                       
IEventDispatcher(rangeModel).addEventListener("stepSizeChange", 
modelChangeHandler);
-                       
IEventDispatcher(rangeModel).addEventListener("snapIntervalChange", 
modelChangeHandler);
+                       
IEventDispatcher(rangeModel).addEventListener("valueChange", 
modelChangeHandler);
+                       
//IEventDispatcher(rangeModel).addEventListener("snapIntervalChange", 
modelChangeHandler);
 
                        modelChangeHandler(null);
                }
+
+               COMPILE::JS
+               public var sliderTrackFill:HTMLDivElement;
+
+               COMPILE::JS
+               public var sliderTrack:HTMLDivElement;
                
                /**
                 * @private
@@ -150,10 +171,10 @@ package org.apache.royale.jewel.beads.views
                        COMPILE::JS
                        {
                                var inputElement:HTMLInputElement = 
(UIBase(_strand).element as HTMLInputElement);
-                               inputElement.value = 
rangeModel.value.toString();
+                               inputElement.step = String(rangeModel.stepSize);
                                inputElement.min = String(rangeModel.minimum);
                                inputElement.max = String(rangeModel.maximum);
-                               inputElement.step = String(rangeModel.stepSize);
+                               inputElement.value = 
rangeModel.value.toString();
                        }
 
                        //(_strand as IEventDispatcher).dispatchEvent(new 
Event("layoutNeeded"));
diff --git a/frameworks/projects/Jewel/src/main/sass/components/_slider.sass 
b/frameworks/projects/Jewel/src/main/sass/components/_slider.sass
index cd89aa4..122bbbb 100644
--- a/frameworks/projects/Jewel/src/main/sass/components/_slider.sass
+++ b/frameworks/projects/Jewel/src/main/sass/components/_slider.sass
@@ -18,9 +18,9 @@
 
////////////////////////////////////////////////////////////////////////////////
 
 .jewel.slider
-       width: 100px
-       height: 30px
-       position: relative
+       //width: 100px
+       //height: 30px
+       //position: relative
 
 j|Slider
        IBeadModel: 
ClassReference("org.apache.royale.jewel.beads.models.SliderRangeModel")
@@ -28,12 +28,12 @@ j|Slider
        //IBeadLayout: 
ClassReference("org.apache.royale.html.beads.layouts.HorizontalSliderLayout")
        IBeadController: 
ClassReference("org.apache.royale.jewel.beads.controllers.SliderMouseController")
 
-.SliderTrack
-       position: absolute
+//.SliderTrack
+//     position: absolute
 
-.SliderThumb
-       position: absolute
-       border-radius: 15px
+//.SliderThumb
+//     position: absolute
+//     border-radius: 15px
 
 @media -royale-swf
        j|Slider
diff --git a/frameworks/themes/JewelTheme/src/main/resources/defaults.css 
b/frameworks/themes/JewelTheme/src/main/resources/defaults.css
index a9849b5..ff93b93 100644
--- a/frameworks/themes/JewelTheme/src/main/resources/defaults.css
+++ b/frameworks/themes/JewelTheme/src/main/resources/defaults.css
@@ -56,7 +56,7 @@ div {
   padding: 20px;
 }
 
-::-moz-focus-inner {
+::-moz-focus-inner, ::-moz-focus-outer {
   border: 0;
 }
 
@@ -230,7 +230,7 @@ j|Alert {
   border-radius: 3px;
 }
 .jewel.checkbox input:checked, .jewel.checkbox input:checked:active {
-  background: url("data:image/svg+xml;utf8,<svg viewBox='0 0 16 13' 
version='1.1' xmlns='http://www.w3.org/2000/svg'><g transform='translate(-763, 
-290)'><g transform='translate(760, 285)'><polygon fill='%233CADF1' points='3 
13 9 18 19 7 16 5 9 13 6 10'></polygon></g></g></svg>"), #d9d9d9;
+  background: url("data:image/svg+xml;utf8,<svg viewBox='0 0 16 13' 
version='1.1' xmlns='http://www.w3.org/2000/svg'><g transform='translate(-763, 
-290)'><g transform='translate(760, 285)'><polygon fill='%233CADF1' points='3 
13 9 18 19 7 16 5 9 13 6 10'></polygon></g></g></svg>"), #f8f8f8;
   background-repeat: no-repeat;
   background-size: 90%;
   background-position: center;
@@ -304,7 +304,7 @@ j|Alert {
   border-radius: 50%;
 }
 .jewel.radiobutton input:checked, .jewel.radiobutton input:checked:active {
-  background: url("data:image/svg+xml;utf8,<svg viewBox='0 0 12 12' 
version='1.1' xmlns='http://www.w3.org/2000/svg'><g transform='translate(-616, 
-350)'><g transform='translate(611, 345)'><circle fill='%233CADF1' cx='11' 
cy='11' r='6'></circle></g></g></svg>"), #d9d9d9;
+  background: url("data:image/svg+xml;utf8,<svg viewBox='0 0 12 12' 
version='1.1' xmlns='http://www.w3.org/2000/svg'><g transform='translate(-616, 
-350)'><g transform='translate(611, 345)'><circle fill='%233CADF1' cx='11' 
cy='11' r='6'></circle></g></g></svg>"), #f8f8f8;
   background-repeat: no-repeat;
   background-size: 60%;
   background-position: center;
@@ -348,38 +348,103 @@ j|Alert {
   line-height: 22px;
 }
 
+.jewel.slider {
+  position: relative;
+  height: 18px;
+  display: flex !important;
+  flex-direction: row;
+  background: none;
+}
 .jewel.slider input {
+  outline: 0;
+  cursor: pointer;
   -webkit-appearance: none;
-  width: 100%;
-  height: 15px;
-  border-radius: 5px;
-  background: #d3d3d3;
-  outline: none;
-  opacity: 0.7;
-  -webkit-transition: 0.2s;
-  transition: opacity 0.2s;
+  -moz-appearance: none;
+  -o-appearance: none;
+  appearance: none;
+  margin: 0 20px;
+  padding: 0;
+  width: calc(100% - 40px);
+  height: 2px;
+  background: transparent;
+  user-select: none;
+  color: #3CADF1;
+  align-self: center;
+  z-index: 1;
+}
+.jewel.slider input::-webkit-slider-runnable-track {
+  background: transparent;
+}
+.jewel.slider input::-moz-range-track {
+  background: transparent;
+  border: none;
+}
+.jewel.slider input::-webkit-slider-thumb, .jewel.slider 
input::-moz-range-thumb {
+  -webkit-appearance: none;
+  -moz-appearance: none;
+  -o-appearance: none;
+  appearance: none;
+  width: 12px;
+  height: 12px;
+  border-radius: 50%;
+  background: #3CADF1;
+  border: none;
+}
+.jewel.slider input:focus:not(:active)::-webkit-slider-thumb, .jewel.slider 
input:focus:not(:active)::-moz-range-thumb {
+  box-shadow: 0 0 0 10px rgba(60, 173, 241, 0.26);
 }
-.jewel.slider input:hover {
-  opacity: 1;
+.jewel.slider input:active::-webkit-slider-thumb, .jewel.slider 
input:active::-moz-range-thumb {
+  background-image: none;
+  transform: scale(1.5);
 }
 .jewel.slider input:focus {
   outline: none;
 }
-.jewel.slider input::-webkit-slider-thumb {
-  -webkit-appearance: none;
-  appearance: none;
-  width: 15px;
-  height: 15px;
-  border-radius: 50%;
-  background: #3CADF1;
-  cursor: pointer;
+.jewel.slider input[disabled] {
+  cursor: unset;
 }
-.jewel.slider input::-moz-range-thumb {
-  width: 15px;
-  height: 15px;
-  border-radius: 50%;
+.jewel.slider input[disabled]::-webkit-slider-thumb, .jewel.slider 
input[disabled]::-moz-range-thumb {
+  background: #d9d9d9;
+}
+.jewel.slider input[disabled]:active::-webkit-slider-thumb, .jewel.slider 
input[disabled]:active::-moz-range-thumb {
+  transform: scale(1);
+}
+.jewel.slider input[disabled] + .slider-track-container > .slider-track-fill {
+  background: #d9d9d9;
+}
+.jewel.slider input[disabled] + .slider-track-container > .slider-track {
+  background: #d9d9d9;
+}
+
+.slider-track-container {
+  position: absolute;
+  display: flex;
+  overflow: hidden;
+  transform: translate(0, -1px);
+  margin: 0 26px;
+  padding: 0;
+  top: 50%;
+  left: 0;
+  width: calc(100% - 52px);
+  height: 2px;
+  background: transparent;
+  border: 0;
+}
+
+.slider-track-fill {
+  position: relative;
+  flex: 0;
+  padding: 0;
   background: #3CADF1;
-  cursor: pointer;
+  border: 0;
+}
+
+.slider-track {
+  position: relative;
+  flex: 0;
+  padding: 0;
+  background: #d9d9d9;
+  border: 0;
 }
 
 .jewel.textbutton {
diff --git 
a/frameworks/themes/JewelTheme/src/main/sass/components-primary/_slider.sass 
b/frameworks/themes/JewelTheme/src/main/sass/components-primary/_slider.sass
index 115df2c..de0c99b 100644
--- a/frameworks/themes/JewelTheme/src/main/sass/components-primary/_slider.sass
+++ b/frameworks/themes/JewelTheme/src/main/sass/components-primary/_slider.sass
@@ -17,37 +17,119 @@
 //
 
////////////////////////////////////////////////////////////////////////////////
 
+// Jewel Slider
+
+// Slider variables
+$slider-margin: 0 20px
+$slider-padding: 0
+$slider-min-width: calc(100% - 40px)
+$slider-min-height: 2px
+$slider-container-height: 18px
+$slider-thumb-size: 12px
+$slider-border-radius: 50%
+
 .jewel.slider
+    position: relative
+    height: $slider-container-height
+    
+    display: flex !important
+    flex-direction: row
+    
+    background: none
 
     input
-        -webkit-appearance: none
-        width: 100%
-        height: 15px
-        border-radius: 5px
-        background: #d3d3d3
-        outline: none
-        opacity: 0.7
-        -webkit-transition: .2s
-        transition: opacity .2s
-
-        &:hover
-            opacity: 1
+        outline: 0
+        cursor: pointer
+        +appear(none)
+        margin: $slider-margin
+        padding: $slider-padding
+        width: $slider-min-width
+        height: $slider-min-height
+        background: transparent
+        user-select: none
+        color: $primary-color
+        align-self: center
+        z-index: 1
 
-        &:focus
-            outline: none
+        // TRACK
+        &::-webkit-slider-runnable-track
+            background: transparent
+            
+        &::-moz-range-track
+            background: transparent
+            border: none
 
-        &::-webkit-slider-thumb
-            -webkit-appearance: none
-            appearance: none
-            width: 15px
-            height: 15px
-            border-radius: 50%
+        // THUMB
+        &::-webkit-slider-thumb, &::-moz-range-thumb
+            +appear(none)
+            width: $slider-thumb-size
+            height: $slider-thumb-size
+            border-radius: $slider-border-radius
             background: $primary-color
-            cursor: pointer
+            border: none
+            
+        &:focus:not(:active)::-webkit-slider-thumb, 
&:focus:not(:active)::-moz-range-thumb
+            box-shadow: 0 0 0 10px rgba($primary-color, 0.26)
         
-        &::-moz-range-thumb
-            width: 15px
-            height: 15px
-            border-radius: 50%
-            background: $primary-color
-            cursor: pointer
+        &:active::-webkit-slider-thumb, &:active::-moz-range-thumb
+            background-image: none
+            transform: scale(1.5)
+            
+        //&:hover
+          //  transform: scale(1.25)
+
+        &:focus
+            outline: none
+
+        &[disabled]
+            cursor: unset
+            
+            &::-webkit-slider-thumb, &::-moz-range-thumb
+                background: $disabled-border-color
+
+            &:active::-webkit-slider-thumb, &:active::-moz-range-thumb
+                transform: scale(1.0)
+
+            + .slider-track-container > .slider-track-fill
+                background: $disabled-border-color
+
+            + .slider-track-container > .slider-track
+                background: $disabled-border-color
+
+
+.slider-track-container
+    position: absolute
+    display: flex
+    
+    overflow: hidden
+    transform: translate(0, -1px)
+    
+    margin: 0 26px
+    padding: 0
+    
+    top: $slider-border-radius
+    left: 0
+    
+    width: calc(100% - 52px)
+    height: $slider-min-height
+    
+    background: transparent
+    border: 0
+
+.slider-track-fill
+    position: relative
+    flex: 0
+    
+    padding: 0
+    
+    background: $primary-color
+    border: 0
+
+.slider-track
+    position: relative
+    flex: 0
+    
+    padding: 0
+    
+    background: $default-color
+    border: 0
\ No newline at end of file

-- 
To stop receiving notification emails like this one, please contact
carlosrov...@apache.org.

Reply via email to