]> source.dussan.org Git - vaadin-framework.git/commitdiff
Various fixes and tweaks to Valo
authorJouni Koivuviita <jouni@vaadin.com>
Thu, 12 Jun 2014 12:53:06 +0000 (15:53 +0300)
committerJouni Koivuviita <jouni@vaadin.com>
Wed, 18 Jun 2014 07:17:14 +0000 (10:17 +0300)
- Added a new “quiet” style button, and an “icon-align-top” style, and
added an additional parameter for the borderless button style

- PopupView now has a proper animation-in and animation-out, with a
spinner showing the loading state

- Small fix to slider minimum size

- Fixed TextField text centering for IE8 and IE9

- Fixed Tree expand/collapse arrow clicking in IE10

- Tweaked Window shadow and modality curtain style

Change-Id: I48dab61c648363b8eb0c03dc3b3cbbc1289b94ed

13 files changed:
WebContent/VAADIN/themes/valo/components/_button.scss
WebContent/VAADIN/themes/valo/components/_combobox.scss
WebContent/VAADIN/themes/valo/components/_popupview.scss
WebContent/VAADIN/themes/valo/components/_slider.scss
WebContent/VAADIN/themes/valo/components/_textarea.scss
WebContent/VAADIN/themes/valo/components/_textfield.scss
WebContent/VAADIN/themes/valo/components/_tree.scss
WebContent/VAADIN/themes/valo/components/_window.scss
WebContent/VAADIN/themes/valo/optional/_common-stylenames.scss
WebContent/VAADIN/themes/valo/shared/_notification.scss
WebContent/VAADIN/themes/valo/shared/_overlay.scss
WebContent/VAADIN/themes/valo/util/_anim.scss
WebContent/VAADIN/themes/valo/util/_bevel-and-shadow.scss

index cf65bac2ecc2d753d78574bb285d656fee0f2ac6..4e19650e6ad9cbcd1dcdccdf8d711c30cea55f8c 100644 (file)
 
 
 
-@mixin valo-button-borderless-style {
+@mixin valo-button-borderless-style ($font-color: inherit) {
   border: none;
   box-shadow: none;
   background: transparent;
-  color: inherit;
+  color: $font-color;
+
+  &:hover {
+    &:after {
+      background: transparent;
+    }
+
+    @if type-of($font-color) == color {
+      color: lighten($font-color, 10%);
+    }
+  }
+
+  &:active {
+    &:after {
+      background: transparent;
+    }
+
+    @if type-of($font-color) == color {
+      color: inherit;
+    }
+  }
+}
+
+
+@mixin valo-button-quiet-style ($primary-stylename: v-button) {
+  visibility: hidden;
+
+  &:focus,
+  &:hover {
+    visibility: visible;
+  }
+
+  .#{$primary-stylename}-wrap {
+    visibility: visible;
+  }
 }
 
 
     }
   }
 }
+
+
+@mixin valo-button-icon-align-top-style ($primary-stylename: v-button) {
+  height: auto;
+  padding-top: ceil($v-unit-size/9);
+  padding-bottom: ceil($v-unit-size/9);
+
+  .#{$primary-stylename}-wrap {
+    display: inline-block;
+  }
+
+  .v-icon {
+    display: block;
+
+    + span:not(:empty) {
+      margin-top: ceil($v-unit-size/6);
+      margin-left: 0;
+    }
+  }
+}
index a8756a50e4de05a37312e81be790de14a8bfb112..9fc1f7fe9df925d653d45f35d5a39a773532ab5e 100644 (file)
         @include animation($v-overlay-animate-in);
       }
     }
-    @if $v-overlay-animate-out {
-      &[class*="animate-out"] {
-        @include animation($v-overlay-animate-out);
-      }
-    }
+    // No animate-out since that will currently prevent the dropdown from
+    // closing when the user selects an item
   }
 
   .#{$primary-stylename}-suggestmenu {
-    @include valo-selection-overlay-style;
+    @include valo-selection-overlay-style($animate-in: false, $animate-out: false);
     box-sizing: border-box;
     position: relative;
     z-index: 1;
index 1a44eb47d6f61953377ffe5f35a99b4779a5d0bc..794a6997de32b2d5fc58517e595d97465fc101a8 100644 (file)
@@ -1,9 +1,24 @@
+@include keyframes(v-popupview-animate-in) {
+  0% {
+    @include transform(scale(0));
+  }
+}
+
 @mixin valo-popupview ($primary-stylename: v-popupview) {
+  .#{$primary-stylename} {
+    @include valo-link-style;
+  }
+  
   .#{$primary-stylename}-popup {
-    @include valo-overlay-style;
+    @include valo-overlay-style($animate-in: v-popupview-animate-in 120ms, $animate-out: (valo-placeholder-animate-out 120ms, valo-anim-fade-out 120ms));
 
     .popupContent {
       @include valo-panel-adjust-content-margins;
     }
   }
+
+  .#{$primary-stylename}-loading {
+    margin: $v-layout-spacing-vertical $v-layout-spacing-horizontal;
+    @include valo-spinner;
+  }
 }
index 096f80e909d07dcf2135e8b43bd5e4b997a8da9e..856e6eb08c141cdfc3736d035dab315d0f789d73 100644 (file)
@@ -50,7 +50,7 @@ $_valo-slider-base-margin-horizontal: round($v-slider-handle-width/2);
       top: $_valo-slider-base-margin-vertical;
       bottom: $_valo-slider-base-margin-vertical;
       left: $_valo-slider-base-margin-horizontal;
-      width: $v-border-radius;
+      width: $v-border-radius * 2;
       border-radius: $v-border-radius;
       border-left: valo-border($color: $v-selection-color, $context: $v-app-background-color);
     }
@@ -70,6 +70,10 @@ $_valo-slider-base-margin-horizontal: round($v-slider-handle-width/2);
     }
   }
 
+  .v-has-width > .#{$primary-stylename}-base {
+    min-width: 0;
+  }
+
   .#{$primary-stylename}-handle {
     margin-top: round(($v-unit-size - $v-slider-track-size)/-2);
     width: .1px; // Firefox needs a non-zero value
@@ -136,7 +140,7 @@ $_valo-slider-base-margin-horizontal: round($v-slider-handle-width/2);
         left: $_valo-slider-base-margin-vertical;
         right: $_valo-slider-base-margin-vertical;
         width: auto;
-        height: $v-border-radius;
+        height: $v-border-radius * 2;
         border-left: none;
         border-bottom: valo-border($color: $v-selection-color, $context: $v-app-background-color);
       }
index 5db4c709fc6262c2fd619ef4168a8c6f971afb9b..3b610251d3c58e7bf54456051376035d59f65da0 100644 (file)
   //display: block; // Fixes extra white-space under the textarea element
   height: auto;
   resize: none;
+
+  .v-ie8 &,
+  .v-ie9 & {
+    line-height: inherit;
+    padding-top: round($unit-size/9);
+    padding-bottom: round($unit-size/9);
+  }
 }
index 4a63004b3c1d093fa6327a166e9bd03934c9d3bb..3ed553b1fa5362db3e9df5838987d76b7664dd3e 100644 (file)
@@ -42,6 +42,13 @@ $v-textfield-disabled-opacity: $v-disabled-opacity !default;
     height: $unit-size;
     border-radius: $border-radius;
 
+    .v-ie8 &,
+    .v-ie9 & {
+      line-height: $unit-size;
+      padding-top: 0;
+      padding-bottom: 0;
+    }
+
     @if type-of($padding) == number or type-of($padding) == list {
       padding: $padding;
     } @else {
index 4b9fe33c4a0eab17e0c164748ea56418a5c77205..01840139b3ca52456c2c4bba6f1cc22cdfc23af0 100644 (file)
@@ -45,6 +45,10 @@ $v-tree-expand-animation-enabled: false !default;
       width: 1.9em;
       height: $v-tree-row-height;
       cursor: pointer;
+      // IE 9/10 need some color so that this element can receive mouse events.
+      // 'red' just happens to be the shortest color name.
+      background: red;
+      opacity: 0;
 
       .v-ie8 & {
         content: "+";
@@ -53,6 +57,7 @@ $v-tree-expand-animation-enabled: false !default;
         vertical-align: top;
         @include valo-tree-collapsed-icon-style;
         text-align: center;
+        background: transparent;
       }
     }
 
index d8c10b73473182456abba44f83516d49bfd7cc4d..64ded990c2c29ba418e5291eed03039c3a1614ea 100644 (file)
@@ -1,8 +1,9 @@
 $v-window-background-color: $v-panel-background-color !default;
 $v-window-border-radius: $v-border-radius !default;
-$v-window-shadow: 0 4px 20px 6px (v-shade 2), $v-overlay-shadow !default;
+$v-window-shadow: 0 2px 10px (v-shade 2), 0 16px 80px -6px (v-shade 3), last($v-overlay-shadow) !default;
 $v-window-animate-in: valo-placeholder-animate-in 140ms, valo-anim-fade-in 140ms !default;
-$v-window-animate-out: valo-placeholder-animate-out 80ms, valo-anim-scale-down-fade-out 80ms !default;
+$v-window-animate-out: valo-placeholder-animate-out 100ms, valo-anim-scale-down-fade-out 100ms !default;
+$v-window-modality-curtain-background-color: #222 !default;
 
 
 @if $v-animations-enabled {
@@ -56,8 +57,14 @@ $v-window-animate-out: valo-placeholder-animate-out 80ms, valo-anim-scale-down-f
     right: 0;
     bottom: 0;
     left: 0;
-    background: $v-app-background-color;
-    @include opacity(.5);
+    @include radial-gradient(circle at 50% 50%, $v-window-modality-curtain-background-color, darken($v-window-modality-curtain-background-color, valo-gradient-opacity()), $fallback: $v-window-modality-curtain-background-color);
+    @include opacity(max(0.2, 0.8 - valo-gradient-opacity()/100%));
+    @include valo-anim-fade-in($duration: 400ms, $delay: 100ms);
+
+    .v-op12 & {
+      // Opera 12 has a shitbreak with the fade-in (flickers)
+      @include animation(none);
+    }
   }
 
   .#{$primary-stylename}-draggingCurtain {
index 6e05cf33f51f4205fcfeb8ff4f54bf62afc4620c..feb1958effbcd89463a9cbfe2c54d77e3e51876b 100644 (file)
     @include valo-button-borderless-style;
   }
 
+  .v-button-borderless-colored {
+    @include valo-button-borderless-style($font-color: $v-selection-color);
+  }
+
+  .v-button-quiet {
+    @include valo-button-quiet-style;
+  }
+
   .v-button-link {
     @include valo-button-borderless-style;
     @include valo-link-style;
     @include valo-button-icon-align-right-style;
   }
 
+  .v-button-icon-align-top {
+    @include valo-button-icon-align-top-style;
+  }
+
   .v-button-icon-only {
     width: $v-unit-size;
     padding: 0;
index 6174e9495d7ab51d008b12285e15351f11e6ea4f..aa850c9dcfa9ba50dfaf6b9ece57e663bf8f1a32 100644 (file)
@@ -82,6 +82,8 @@ $v-notification-title-color: $v-focus-color !default;
       vertical-align: middle;
       max-width: 30em;
       text-align: left;
+      max-height: 20em;
+      overflow: auto;
     }
 
     h1 ~ p {
index d0ff42fcce2a719892c17dbde0ec5b990db89802..5d92f4c9742102ff27ae91cf9a0bbf2bd0d1b4f3 100644 (file)
@@ -17,7 +17,7 @@ $v-overlay-padding: round($v-unit-size/9) !default;
 $v-overlay-padding-vertical: $v-overlay-padding !default;
 $v-overlay-padding-horizontal: $v-overlay-padding !default;
 
-$v-overlay-shadow: 0 2px 4px 0 v-shade, 0 3px 5px 0 v-shade, 0 0 0 $v-overlay-border-width (v-shade 2-color-luminance($v-background-color)/255) !default;
+$v-overlay-shadow: 0 2px 4px 0 v-shade, 0 3px 5px 0 v-shade, 0 0 0 $v-overlay-border-width (v-shade (2.5 - color-luminance($v-background-color)/255 + $v-bevel-depth/100%)) !default;
 
 $v-selection-overlay-background-color: $v-overlay-background-color !default;
 $v-selection-overlay-padding: $v-overlay-padding !default;
@@ -136,8 +136,8 @@ $v-selection-item-selection-color: $v-selection-color !default;
 
 
 
-@mixin valo-selection-overlay-style ($background-color: $v-selection-overlay-background-color, $animate-in: $v-overlay-animate-in) {
-  @include valo-overlay-style($background-color: $background-color, $animate-in: $animate-in);
+@mixin valo-selection-overlay-style ($background-color: $v-selection-overlay-background-color, $animate-in: $v-overlay-animate-in, $animate-out: $v-overlay-animate-out) {
+  @include valo-overlay-style($background-color: $background-color, $animate-in: $animate-in, $animate-out: $animate-out);
   padding: $v-selection-overlay-padding-vertical $v-selection-overlay-padding-horizontal;
 }
 
index 9569e8415795c5b4707763b99c9ed5b63d744ddc..430a6e472221b57c2bc9c50f88db7b2679160469 100644 (file)
@@ -3,13 +3,13 @@
   // 'Placeholder' animation names to trigger VOverlay animation-in and animation-out
   @include keyframes(valo-placeholder-animate-in) {
     0% {
-      outline-color: transparent;
+      visibility: visible;
     }
   }
 
   @include keyframes(valo-placeholder-animate-out) {
     100% {
-      outline-color: transparent;
+      visibility: visible;
     }
   }
 
index b93307a1b10322bffb2f5bccef12535482a21ed5..270be09b4f6260e0375d063b3b558152109d8aa3 100644 (file)
       $ret: join($ret, $part);
     }
   }
-  
+
   @return $ret;
 }
 
       $adjust-type: first-string($part);
       $adjust-amount: first-number($part);
 
-      $tint: rgba(#fff, $v-shadow-opacity/100% * $adjust-amount);
-      $shade: rgba(#000, $v-shadow-opacity/100% * $adjust-amount);
+      $tint: rgba(#fff, min(1, $v-shadow-opacity/100% * $adjust-amount));
+      $shade: rgba(#000, min(1, $v-shadow-opacity/100% * $adjust-amount));
 
       $color: null;
       @if $adjust-type == v-tint {