]> source.dussan.org Git - vaadin-framework.git/commitdiff
Various fixes to Valo
authorJouni Koivuviita <jouni@vaadin.com>
Tue, 24 Jun 2014 13:37:51 +0000 (16:37 +0300)
committerJouni Koivuviita <jouni@vaadin.com>
Wed, 25 Jun 2014 11:45:07 +0000 (11:45 +0000)
Add a small API for checkbox, radio button and option group.

Fix border radius for ComboBox (no-text-input + small/large style).

Add better support for form layout section captions (now supports h2,
h3 and h4 labels instead of just h4).

Add “align-right” and “align-center” utility style names for label.

Fix black line artifacts in iOS for panel, window and tabsheet (visible
at certain zoom levels).

Refactor tab sheet styles to be more modular (so you can combine framed
with icons-on-top for instance).

Fix tab sheet loading indicator reserving unnecessary space in parent
layout.

Readonly style for richtextarea.

Fix slider handle focus border color.

Fix #14058: Valo causes Table headers to be overly long
- Table now reserves as little space as necessary
- TreeTable works slightly differently, causing it to reserve more
space in some situations

Rename table mixins to follow naming convention (mixins that do not
output top-level selectors should be suffixed with “-style”, others
not).

Fix TreeTable treespacer style so that it works correctly with row
captions/icons.

Prevent text size adjust on iOS.

Refine default overlay shadow.

Change-Id: I31fa8905c5aa34ab810c3d1c7ac35c3f572c8c04

17 files changed:
WebContent/VAADIN/themes/valo/components/_checkbox.scss
WebContent/VAADIN/themes/valo/components/_combobox.scss
WebContent/VAADIN/themes/valo/components/_formlayout.scss
WebContent/VAADIN/themes/valo/components/_label.scss
WebContent/VAADIN/themes/valo/components/_optiongroup.scss
WebContent/VAADIN/themes/valo/components/_panel.scss
WebContent/VAADIN/themes/valo/components/_richtextarea.scss
WebContent/VAADIN/themes/valo/components/_slider.scss
WebContent/VAADIN/themes/valo/components/_table.scss
WebContent/VAADIN/themes/valo/components/_tabsheet.scss
WebContent/VAADIN/themes/valo/components/_textfield.scss
WebContent/VAADIN/themes/valo/components/_treetable.scss
WebContent/VAADIN/themes/valo/components/_window.scss
WebContent/VAADIN/themes/valo/optional/_common-stylenames.scss
WebContent/VAADIN/themes/valo/shared/_global.scss
WebContent/VAADIN/themes/valo/shared/_overlay.scss
WebContent/VAADIN/themes/valo/util/_bevel-and-shadow.scss

index 619e799bc72544f9d0ebfcd0c5ecbc7f50c776ad..9dfe2984a04ab459ac5b802b95e4851a2d94003b 100644 (file)
@@ -1,7 +1,6 @@
 @mixin valo-checkbox ($primary-stylename: v-checkbox) {
 
-  .#{$primary-stylename},
-  .v-radiobutton {
+  .#{$primary-stylename} {
     @include valo-checkbox-style;
   }
 
 }
 
 
-@mixin valo-checkbox-style ($background-color: $v-background-color, $size: $v-unit-size, $selection-color: $v-selection-color) {
+@mixin valo-checkbox-style ($background-color: $v-background-color, $unit-size: $v-unit-size, $selection-color: $v-selection-color) {
 
   // So that we can use the same 'unit-size' for all component sizes
-  $size: $size/2;
+  $size: $unit-size/2;
 
   position: relative;
   line-height: round($size);
index 9fc1f7fe9df925d653d45f35d5a39a773532ab5e..63ddbe98df820c137ed88bfc862baaea0456b56d 100644 (file)
     cursor: pointer;
     text-shadow: valo-text-shadow();
 
+    @if $v-border-radius != $v-textfield-border-radius {
+      border-radius: $v-border-radius;
+    }
+
     .#{$primary-stylename}-input {
       @include user-select(none);
       @include valo-gradient;
@@ -28,9 +32,7 @@
       @include valo-border-with-gradient($border: $v-border, $color: $v-background-color, $gradient: $v-gradient);
       text-shadow: inherit;
       text-overflow: ellipsis;
-      @if $v-border-radius != $v-textfield-border-radius {
-        border-radius: $v-border-radius;
-      }
+      border-radius: inherit;
 
       &:focus {
         @include valo-textfield-focus-style($bevel: $v-bevel, $shadow: $v-shadow, $gradient: $v-gradient, $background-color: $v-background-color);
   span.v-icon {
     color: valo-font-color($background-color);
     width: $unit-size;
+    line-height: 1;
+    padding-top: .12em;
   }
 
   &.#{$primary-stylename}-prompt > .#{$primary-stylename}-input {
index ceaa732f3f11a1dcd38d8a61ce6ef5be224bea21..c73fff9b9a7a423781ff2b2173d0e147e04bbc38 100644 (file)
     .v-caption {
       padding-bottom: 0;
     }
+
+    .v-caption-h2,
+    .v-caption-h3,
+    .v-caption-h4 {
+      height: 3em;
+    }
   }
 
   .#{$primary-stylename}-contentcell {
       font-weight: $v-font-weight + 100;
     }
 
+    > .h2,
+    > .h3,
     > .h4 {
       position: absolute;
       left: 0;
       margin-top: -0.5em;
       padding-bottom: 0.5em;
       border-bottom: valo-border($color: $v-app-background-color, $strength: 0.5);
-      color: valo-font-color($v-app-background-color, .5);
     }
   }
 
     > .v-textfield,
     > .v-textarea,
     > .v-filterselect input,
-    > .v-datefield input {
+    > .v-datefield input,
+    > .v-richtextarea {
       @include valo-textfield-style($unit-size: $row-height, $border-radius: 0, $border: null, $bevel: none, $shadow: none, $background-color: null);
       background: transparent;
       border: none;
       @include valo-textfield-prompt-style;
     }
 
-    > .v-textarea {
+    > .v-textarea,
+    > .v-richtextarea {
       height: auto;
     }
   }
     margin-left: ceil($v-unit-size/6);
   }
 
-  > table > tbody > .#{$primary-stylename}-row > .#{$primary-stylename}-contentcell > .h4 {
-    border-bottom: none;
-    color: $v-selection-color;
-    margin-top: -0.2em;
+  > table > tbody > .#{$primary-stylename}-row > .#{$primary-stylename}-contentcell {
+    > .h2,
+    > .h3,
+    > .h4 {
+      border-bottom: none;
+      color: $v-selection-color;
+    }
+
+    > .h3,
+    > .h4 {
+      margin-top: 0;
+    }
   }
 }
index b254f097c5c65aa8590bcc63aa767fc24baf5596..b1365e00113a9a7c6d32d33a2054d3a5c363f4a0 100644 (file)
@@ -120,4 +120,12 @@ $v-letter-spacing--h4:    0               !default;
     }
   }
 
+  .#{$primary-stylename}-align-right {
+    text-align: right;
+  }
+
+  .#{$primary-stylename}-align-center {
+    text-align: center;
+  }
+
 }
index bd6029700e26e218867ecfacff44c01ad5b0ad1a..71c67cd9d809363effaab0edb8f8d83ae560de00 100644 (file)
@@ -1,47 +1,68 @@
 @mixin valo-optiongroup ($primary-stylename: v-optiongroup) {
 
   .v-radiobutton {
-    :root & > input {
-      &:checked ~ label:after {
-        $size: ceil($v-unit-size/6);
-        $offset: round($v-unit-size/6);
-        width: $size;
-        height: $size;
-        top: $offset;
-        left: $offset;
-        background: $v-selection-color;
-      }
-
-      & ~ label:before,
-      & ~ label:after {
-        border-radius: 50%;
-        content: "";
-      }
-    }
+    @include valo-radiobutton-style;
   }
 
   .v-select-optiongroup {
+    @include valo-optiongroup-style;
+  }
 
-    .v-radiobutton,
-    .v-checkbox {
-      display: block;
-      margin: round($v-unit-size/4) $v-font-size 0 0;
+}
+
+
+@mixin valo-radiobutton-style ($background-color: $v-background-color, $unit-size: $v-unit-size, $selection-color: $v-selection-color) {
+  @include valo-checkbox-style($background-color: $background-color, $unit-size: $unit-size, $selection-color: $selection-color);
+
+  :root & > input {
+    &:checked ~ label:after {
+      $size: ceil($unit-size/6);
+      $offset: round($unit-size/6);
+      width: $size;
+      height: $size;
+      top: $offset;
+      left: $offset;
+      background: $selection-color;
+    }
+
+    & ~ label:before,
+    & ~ label:after {
+      border-radius: 50%;
+      content: "";
+    }
+  }
+}
 
-      &:first-child {
-        margin-top: round($v-unit-size/6);
-      }
 
-      &:last-child {
-        margin-bottom: round($v-unit-size/6);
-      }
+
+@mixin valo-optiongroup-style ($unit-size: $v-unit-size, $font-size: $v-font-size) {
+
+  @if $unit-size != $v-unit-size {
+    .v-checkbox {
+      @include valo-checkbox-style($unit-size: $unit-size);
     }
+    .v-radiobutton {
+      @include valo-radiobutton-style($unit-size: $unit-size);
+    }
+  }
+
+  .v-radiobutton,
+  .v-checkbox {
+    display: block;
+    margin: round($unit-size/4) $font-size 0 0;
 
-    &.v-has-width label {
-      white-space: normal;
+    &:first-child {
+      margin-top: round($unit-size/6);
     }
 
+    &:last-child {
+      margin-bottom: round($unit-size/6);
+    }
   }
 
+  &.v-has-width label {
+    white-space: normal;
+  }
 }
 
 
@@ -55,7 +76,7 @@
 
   &.v-has-width {
     white-space: normal;
-    
+
     label {
       white-space: nowrap;
     }
index 437706ee86920d8c9029662979f4458e00c1d848..cb344b640470486dcaad6dea4e19a53271e2a6ef 100644 (file)
@@ -106,8 +106,8 @@ $v-panel-border: $v-border !default;
       bottom: -$border-width;
       right: 0;
       left: 0;
-      height: $border-width;
-      background: first-color(valo-border($color: $v-app-background-color, $strength: 0.5));
+      height: 0;
+      border-top: $border-width solid first-color(valo-border($color: $v-app-background-color, $strength: 0.5));
     }
   }
 
@@ -117,8 +117,8 @@ $v-panel-border: $v-border !default;
       position: absolute;
       z-index: 2;
       top: 0;
-      height: $border-width;
-      background: $v-app-background-color;
+      height: 0;
+      border-top: $border-width solid $v-app-background-color;
       left: 0;
       right: 0;
     }
index 9e7a90fb0a149cd2695cf55cf7170047008c9b5a..5807e16aa7b8a0b4a6f6e1e0cdf83bebca901739 100644 (file)
@@ -88,4 +88,9 @@ $valo-richtextarea-use-font-awesome: true !default;
     display: block;
   }
 
+  .#{$primary-stylename}-readonly {
+    padding: ceil($v-unit-size/9) ceil($v-unit-size/6);
+    background: transparent;
+  }
+
 }
index 856e6eb08c141cdfc3736d035dab315d0f789d73..b4785a84716651bddc7836430c6d1f705fb72633 100644 (file)
@@ -86,7 +86,7 @@ $_valo-slider-base-margin-horizontal: round($v-slider-handle-width/2);
 
     &:after {
       border: valo-border();
-      @include valo-button-focus-style();
+      @include valo-button-focus-style($border-fallback: null);
       opacity: 0;
       @if $v-animations-enabled {
         @include transition(opacity 200ms);
@@ -229,7 +229,7 @@ $_valo-slider-base-margin-horizontal: round($v-slider-handle-width/2);
 
     &:after {
       border: valo-border($color: $background-color);
-      @include valo-button-focus-style($background-color: $background-color);
+      @include valo-button-focus-style($background-color: $background-color, $border-fallback: null);
     }
   }
 }
index 7aa2d127daafb69503c652cd52b741e97f3a760a..c952a4bdda2fd6bd0e2ab8d5e4511a4c4d523414 100644 (file)
@@ -33,6 +33,10 @@ $v-table-background-color: null !default;
     overflow: hidden;
   }
 
+  .#{$primary-stylename}-caption-container-align-center {
+    text-align: center;
+  }
+
   .#{$primary-stylename}-caption-container-align-right {
     text-align: right;
   }
@@ -89,7 +93,7 @@ $v-table-background-color: null !default;
     @include valo-gradient($v-background-color);
     white-space: nowrap;
     font-size: $v-table-header-font-size;
-    text-shadow: valo-text-shadow;
+    text-shadow: valo-text-shadow();
   }
 
   .#{$primary-stylename}-header-wrap {
@@ -115,49 +119,48 @@ $v-table-background-color: null !default;
   .#{$primary-stylename}-caption-container {
     overflow: hidden;
     line-height: 1;
+    @include box-sizing(border-box);
   }
 
   .#{$primary-stylename}-footer-container {
     $vertical-padding: round(($v-table-row-height - $v-table-header-font-size)/2);
-    padding-top: $vertical-padding - $v-table-border-width;
-    padding-bottom: $vertical-padding;
+    padding: $vertical-padding - $v-table-border-width $v-table-cell-padding-horizontal $vertical-padding;
     float: right;
-    padding-right: $v-table-cell-padding-horizontal + $v-table-border-width;
   }
 
   [class^="#{$primary-stylename}-header-cell"] {
     position: relative;
-    display: inline-block;
   }
 
   .#{$primary-stylename}-caption-container,
   .#{$primary-stylename}-header-drag {
     $vertical-padding: round(($v-table-row-height - $v-table-header-font-size)/2);
-    padding-top: $vertical-padding;
-    padding-bottom: $vertical-padding - $v-table-border-width;
-    padding-left: $v-table-cell-padding-horizontal;
-    padding-right: $v-table-cell-padding-horizontal;
+    padding: $vertical-padding $v-table-cell-padding-horizontal $vertical-padding - $v-table-border-width;
     border-left: $v-table-border-width solid $border-color;
   }
 
+  .#{$primary-stylename}-caption-container-align-right {
+    padding-right: $v-table-cell-padding-horizontal - $v-table-resizer-width;
+  }
+
   .#{$primary-stylename}-resizer {
     height: $v-table-row-height;
-    background: transparent;
     width: $v-table-resizer-width;
     cursor: e-resize;
     cursor: col-resize;
     position: absolute;
+    top: 0;
     right: 0;
     z-index: 1;
   }
 
   .#{$primary-stylename}-cell-content {
     border-left: $v-table-border-width solid $border-color;
-    padding: 0 $v-table-cell-padding-horizontal;
+    overflow: hidden;
 
     &:first-child {
       border-left: none;
-      padding-left: $v-table-cell-padding-horizontal + $v-table-border-width;
+      padding-left: $v-table-border-width;
     }
   }
 
@@ -168,10 +171,11 @@ $v-table-background-color: null !default;
 
 
   .#{$primary-stylename}-cell-wrapper {
-    white-space: nowrap;
     line-height: 1;
     $vertical-padding: round(($v-table-row-height - $v-font-size)/2);
-    padding: $vertical-padding 0;
+    padding: $vertical-padding $v-table-cell-padding-horizontal;
+    @include box-sizing(border-box);
+    margin-right: 0 !important;
   }
 
   .#{$primary-stylename}-body {
@@ -180,6 +184,7 @@ $v-table-background-color: null !default;
 
   .#{$primary-stylename}-table {
     background-color: $background-color;
+    white-space: nowrap;
   }
 
   .#{$primary-stylename}-table td {
@@ -234,10 +239,6 @@ $v-table-background-color: null !default;
     line-height: $v-table-row-height;
     position: absolute;
     right: 0;
-
-    + .#{$primary-stylename}-caption-container {
-      padding-right: $v-table-sort-indicator-width;
-    }
   }
 
   .#{$primary-stylename}-header-cell-asc .#{$primary-stylename}-sort-indicator:before,
@@ -256,9 +257,14 @@ $v-table-background-color: null !default;
   }
 
 
+  [class*="rowheader"] span.v-icon {
+    min-width: 1em;
+  }
+
+
   .#{$primary-stylename}-focus {
     $outline-width: max($v-table-border-width, 1px);
-    outline: $outline-width solid valo-focus-color();
+    outline: $outline-width solid $v-focus-color;
     outline-offset: -$outline-width;
   }
 
@@ -276,11 +282,11 @@ $v-table-background-color: null !default;
   }
 
   .#{$primary-stylename}-focus-slot-right {
-    border-right: 2px solid rgba(valo-focus-color(), .5);
+    border-right: 2px solid rgba($v-focus-color, .5);
   }
 
   .#{$primary-stylename}-focus-slot-left {
-    border-left: 2px solid rgba(valo-focus-color(), .5);
+    border-left: 2px solid rgba($v-focus-color, .5);
     left: 0;
     right: auto;
     margin-left: 0 !important;
@@ -399,14 +405,14 @@ $v-table-background-color: null !default;
   // Drag'n'drop styles
 
   .#{$primary-stylename}-drag .#{$primary-stylename}-body {
-    box-shadow: 0 0 0 2px rgba(valo-focus-color(), .5);
+    box-shadow: 0 0 0 2px rgba($v-focus-color, .5);
 
-    @if color-luminance(valo-focus-color()) + 50 < color-luminance($background-color) {
-      border-color: valo-focus-color();
+    @if color-luminance($v-focus-color) + 50 < color-luminance($background-color) {
+      border-color: $v-focus-color;
     }
 
     .v-ie8 & {
-      border-color: valo-focus-color();
+      border-color: $v-focus-color;
     }
 
     .#{$primary-stylename}-focus {
@@ -421,7 +427,7 @@ $v-table-background-color: null !default;
     height: $v-table-row-height + $v-table-border-width;
     left: 0;
     right: 0;
-    background: valo-focus-color();
+    background: $v-focus-color;
     @include opacity(.2);
   }
 
@@ -433,10 +439,10 @@ $v-table-background-color: null !default;
     height: 2px;
     left: 0;
     right: 0;
-    background: valo-focus-color();
+    background: $v-focus-color;
     font-size: $v-font-size * 2;
     line-height: 2px;
-    color: valo-focus-color();
+    color: $v-focus-color;
     text-indent: round($v-font-size/-4);
     text-shadow: 0 0 1px $background-color, 0 0 1px $background-color;
   }
@@ -483,7 +489,7 @@ $v-table-background-color: null !default;
 
 
 
-@mixin valo-table-no-stripes ($primary-stylename: v-table) {
+@mixin valo-table-no-stripes-style ($primary-stylename: v-table) {
   .#{$primary-stylename}-row,
   .#{$primary-stylename}-row-odd {
     background: transparent;
@@ -491,19 +497,23 @@ $v-table-background-color: null !default;
 }
 
 
-
-
-@mixin valo-table-no-vertical-lines ($primary-stylename: v-table) {
+@mixin valo-table-no-vertical-lines-style ($primary-stylename: v-table) {
   .#{$primary-stylename}-cell-content,
   [class*="row"].v-selected .#{$primary-stylename}-cell-content {
     border-left: none;
-    border-right: none;
-    padding-left: $v-table-cell-padding-horizontal + $v-table-border-width;
-    padding-right: $v-table-cell-padding-horizontal + $v-table-border-width;
+    padding-left: $v-table-border-width;
+  }
+
+  &.v-treetable {
+    .#{$primary-stylename}-cell-content,
+    [class*="row"].v-selected .#{$primary-stylename}-cell-content {
+      padding-left: $v-table-cell-padding-horizontal + $v-table-border-width;
+    }
   }
 }
 
-@mixin valo-table-no-horizontal-lines ($primary-stylename: v-table) {
+
+@mixin valo-table-no-horizontal-lines-style ($primary-stylename: v-table) {
   .#{$primary-stylename}-cell-content,
   [class*="row"].v-selected .#{$primary-stylename}-cell-content {
     border-top: none;
@@ -511,13 +521,15 @@ $v-table-background-color: null !default;
   }
 }
 
-@mixin valo-table-no-header ($primary-stylename: v-table) {
+
+@mixin valo-table-no-header-style ($primary-stylename: v-table) {
   .#{$primary-stylename}-header-wrap {
     display: none;
   }
 }
 
-@mixin valo-table-borderless ($primary-stylename: v-table) {
+
+@mixin valo-table-borderless-style ($primary-stylename: v-table) {
   .#{$primary-stylename}-header-wrap,
   .#{$primary-stylename}-footer-wrap,
   .#{$primary-stylename}-header-drag,
@@ -538,13 +550,16 @@ $v-table-background-color: null !default;
   }
 }
 
-@mixin valo-table-compact-style (
+
+@mixin valo-table-spacing-style (
     $primary-stylename: v-table,
     $row-height: $v-table-row-height,
     $header-font-size: $v-table-header-font-size,
     $cell-padding-horizontal: $v-table-cell-padding-horizontal
   ) {
 
+  $vertical-padding: round(($row-height - $header-font-size)/2);
+
   .#{$primary-stylename}-header-wrap,
   .#{$primary-stylename}-footer-wrap,
   .#{$primary-stylename}-header-drag {
@@ -552,36 +567,27 @@ $v-table-background-color: null !default;
   }
 
   .#{$primary-stylename}-footer-container {
-    $vertical-padding: round(($row-height - $header-font-size)/2);
-    padding-top: $vertical-padding - $v-table-border-width;
-    padding-bottom: $vertical-padding;
-    padding-right: $cell-padding-horizontal + $v-table-border-width;
+    padding: $vertical-padding - $v-table-border-width $cell-padding-horizontal + $v-table-border-width $vertical-padding;
   }
 
   .#{$primary-stylename}-caption-container,
   .#{$primary-stylename}-header-drag {
-    $vertical-padding: round(($row-height - $header-font-size)/2);
     padding-top: $vertical-padding;
     padding-bottom: $vertical-padding - $v-table-border-width;
     padding-left: $cell-padding-horizontal;
     padding-right: $cell-padding-horizontal;
   }
 
+  .#{$primary-stylename}-caption-container-align-right {
+    padding-right: max(0, $cell-padding-horizontal - $v-table-resizer-width);
+  }
+
   .#{$primary-stylename}-resizer {
     height: $row-height;
   }
 
   .#{$primary-stylename}-cell-wrapper {
-    $vertical-padding: round(($row-height - $v-font-size)/2);
-    padding: $vertical-padding 0;
-  }
-
-  .#{$primary-stylename}-cell-content {
-    padding: 0 $cell-padding-horizontal;
-
-    &:first-child {
-      padding-left: $cell-padding-horizontal + $v-table-border-width;
-    }
+    padding: $vertical-padding $cell-padding-horizontal;
   }
 
   .#{$primary-stylename}-header-cell-asc .#{$primary-stylename}-sort-indicator,
@@ -597,4 +603,25 @@ $v-table-background-color: null !default;
   .#{$primary-stylename}-row-drag-middle td:first-child:before {
     height: $row-height + $v-table-border-width;
   }
+
+  &.v-treetable {
+    .#{$primary-stylename}-cell-wrapper {
+      padding-left: 0;
+      padding-right: 0;
+    }
+
+    .#{$primary-stylename}-cell-content {
+      padding-left: $cell-padding-horizontal;
+      padding-right: $cell-padding-horizontal;
+
+      &:first-child {
+        padding-left: $cell-padding-horizontal + $v-table-border-width;
+      }
+    }
+
+    .#{$primary-stylename}-footer-container {
+      padding-left: $cell-padding-horizontal;
+      padding-right: $cell-padding-horizontal;
+    }
+  }
 }
index bb79f0b6a7a94d197c61f88e7914e40d6a64f6a5..32b06a06ccc02a5bd65fd316bd64930336f3fdcf 100644 (file)
@@ -80,22 +80,42 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
       @include valo-anim-fade-in(300ms);
     }
 
+    $spinner-size: round($v-unit-size/2);
+    $spinner-size: $spinner-size + $spinner-size % 2;
+
     .#{$primary-stylename}-deco {
-      @include valo-spinner($size: $v-unit-size/2);
+      @include valo-spinner($size: $spinner-size);
+      height: 0 !important;
+      border-style: none;
       display: block;
       position: absolute;
       z-index: -1;
       bottom: 50%;
-      margin-bottom: round($v-unit-size/2 + $v-unit-size/4) * -1;
+      margin-bottom: round($v-unit-size/-2) - $spinner-size/2;
       left: 50%;
-      margin-left: round($v-unit-size/-4);
+      margin-left: $spinner-size/-2;
       opacity: 0;
+
+      .v-ie8 & {
+        min-height: 0;
+      }
     }
 
     .#{$primary-stylename}-loading .#{$primary-stylename}-deco {
       @include transition(opacity 200ms 200ms);
       opacity: 1;
       z-index: 1;
+      height: $spinner-size !important;
+      border-style: solid;
+
+      .v-ie8 &,
+      .v-ie9 & {
+        border-style: none;
+      }
+
+      .v-ie8 & {
+        min-height: 30px;
+      }
     }
   }
 
@@ -110,21 +130,22 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
   &:before {
     content: "";
     position: absolute;
-    height: max(1px, first-number($v-border));
-    background: first-color(valo-border($strength: 0.5));
+    height: 0;
+    // iOS panics with background color, creating black line artifacts
+    border-top: max(1px, first-number($v-border)) solid first-color(valo-border($strength: 0.5));
     bottom: 0;
     left: 0;
     right: 0;
   }
 
   .#{$primary-stylename}-tabs {
-    height: $v-unit-size;
     position: relative;
   }
 }
 
 
 @mixin valo-tabsheet-tabitemcell-style ($primary-stylename: v-tabsheet) {
+  vertical-align: bottom;
 
   .#{$primary-stylename}-tabitem {
     line-height: 0;
@@ -132,7 +153,6 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
   }
 
   .v-caption {
-    height: $v-unit-size;
     margin-left: round($v-unit-size/2);
     padding: 0 round($v-unit-size/10);
     @include box-sizing(border-box);
@@ -144,11 +164,17 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
     color: valo-font-color($v-app-background-color, 0.58);
     width: auto !important;
     overflow: hidden;
+    text-overflow: ellipsis;
+    border-bottom: max(1px, first-number($v-border))*2 solid transparent;
 
     @if $v-animations-enabled {
       @include transition(border-bottom 200ms, color 200ms);
     }
 
+    .v-captiontext {
+      display: inline;
+    }
+
     .v-icon + .v-captiontext {
       margin-left: round($v-unit-size/4);
     }
@@ -175,12 +201,11 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
 
     .v-caption {
       color: $v-selection-color;
-      border-bottom: max(1px, first-number($v-border)) solid $v-selection-color;
     }
   }
 
   .#{$primary-stylename}-tabitem-selected .v-caption.v-caption {
-    border-bottom: max(1px, first-number($v-border))*2 solid $v-selection-color;
+    border-bottom-color: $v-selection-color;
     color: $v-selection-color;
   }
 
@@ -212,12 +237,12 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
   $border-color: first-color(valo-border($strength: 0.5));
 
   position: absolute;
+  top: 0;
   right: 0;
   bottom: 0;
   padding-left: round($v-unit-size/2);
   @include linear-gradient(to left, $v-background-color 70%, rgba($v-background-color, 0) 100%, $fallback: transparent);
   pointer-events: none;
-  line-height: $v-unit-size;
 
   &:after {
     content: "";
@@ -245,8 +270,7 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
     background: transparent;
     font: inherit;
     color: inherit;
-    height: $v-unit-size;
-    line-height: $v-unit-size;
+    height: 100%;
     margin: 0;
     padding: 0 round($v-unit-size/4);
     outline: none;
@@ -310,11 +334,11 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
 
 
 
-@mixin valo-tabsheet-framed-style ($primary-stylename: v-tabsheet) {
+@mixin valo-tabsheet-framed-style ($primary-stylename: v-tabsheet, $frame-inactive-tabs: true, $outer-frame: true, $tab-spacing: round($v-unit-size/10)) {
   > .#{$primary-stylename}-tabcontainer {
     .v-caption {
       position: relative;
-      margin-left: first-number($v-border) * 2;
+      margin-left: $tab-spacing or first-number($v-border) * -1;
       padding: 0 $v-layout-spacing-horizontal;
       border: first-number($v-border) solid transparent;
       line-height: $v-unit-size - first-number($v-border);
@@ -336,10 +360,16 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
       margin-left: 0;
     }
 
+    @if $frame-inactive-tabs {
+      .#{$primary-stylename}-tabitem .v-caption {
+        border-color: first-color(valo-border($strength: 0.5));
+      }
+    }
+
     .#{$primary-stylename}-tabitem-selected .v-caption {
       background: $v-panel-background-color;
       border-color: first-color(valo-border($strength: 0.5));
-      border-bottom: none;
+      border-bottom: first-number($v-border) solid transparent;
     }
 
     .v-caption-closable {
@@ -355,15 +385,25 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
   }
 
   > .#{$primary-stylename}-content {
-    background: $v-panel-background-color;
-    border: valo-border($strength: 0.5);
-    border-top: none;
+    // iOS panics with black line artifacts,
+    // moving the background color to an inner element fixes it
+    > div {
+      background: $v-panel-background-color;
+    }
+
+    @if $outer-frame {
+      border: valo-border($strength: 0.5);
+      border-top: none;
+    }
   }
 
   &.padded-tabbar {
     > .#{$primary-stylename}-tabcontainer {
-      border: valo-border($strength: 0.5);
-      border-bottom: none;
+      @if $outer-frame {
+        border: valo-border($strength: 0.5);
+        border-bottom: none;
+      }
+
       background: $v-background-color;
       padding-top: round($v-unit-size/6);
     }
@@ -416,38 +456,20 @@ $v-tabsheet-content-animation-enabled: $v-animations-enabled !default;
 
 @mixin valo-tabsheet-icons-on-top-style ($primary-stylename: v-tabsheet) {
   > div > .#{$primary-stylename}-tabs {
-    height: $v-unit-size * 2;
-
     .v-caption {
-      height: $v-unit-size * 2;
-      padding-top: $v-unit-size;
+      padding-top: round($v-unit-size/6);
+      padding-bottom: round($v-unit-size/6);
+      line-height: 1.2;
     }
 
     .v-icon {
       display: block;
-      font-size: $v-font-size * 2;
-      $_offset: round($v-unit-size/4);
-      margin: -($v-unit-size - $_offset) auto #{-$_offset};
-      min-height: $v-unit-size;
 
       + .v-captiontext.v-captiontext {
         margin-left: 0;
       }
     }
   }
-
-  .#{$primary-stylename}-scroller {
-    line-height: $v-unit-size*2;
-
-    button[class] {
-      padding: 0 round($v-unit-size/4);
-      display: block;
-    }
-  }
-
-  > .#{$primary-stylename}-deco {
-    margin-bottom: -$v-unit-size - round($v-unit-size/4);
-  }
 }
 
 
index 3ed553b1fa5362db3e9df5838987d76b7664dd3e..e6514f9ec6aa39f9e2d3b37107805de9335e978a 100644 (file)
@@ -118,7 +118,7 @@ $v-textfield-disabled-opacity: $v-disabled-opacity !default;
     @include transition(none);
   }
 
-  $focus-color: valo-focus-color();
+  $focus-color: $v-focus-color;
 
   @if color-luminance($focus-color) + 50 < color-luminance($v-background-color) {
     border-color: $focus-color;
@@ -181,15 +181,30 @@ $v-textfield-disabled-opacity: $v-disabled-opacity !default;
 
 
 
-@mixin valo-textfield-inline-icon($primary-stylename: v-textfield, $stylename: inline-icon, $unit-size: $v-unit-size, $font-size: $v-font-size, $image-icon-size: 16px) {
-  .v-slot-#{$stylename} {
+
+
+
+
+@mixin valo-textfield-inline-icon($primary-stylename: v-textfield, $stylenames: inline-icon, $input-selector: null, $unit-size: $v-unit-size, $font-size: $v-font-size, $image-icon-size: 16px) {
+  $slot-selector: "";
+  $caption-selector: "";
+  $text-input-selector: "";
+
+  @each $style in $stylenames {
+    $slot-selector: $slot-selector + ".v-slot-" + $style;
+    $caption-selector: $caption-selector + ".v-caption-" + $style;
+    $text-input-selector: $text-input-selector + "." + $primary-stylename + "-" + $style;
+  }
+
+  #{$slot-selector} {
     position: relative;
   }
 
-  .v-caption-#{$stylename} {
+  #{$caption-selector} {
     padding: 0;
 
     .v-captiontext {
+      // Need to include to get the default padding back
       @include valo-caption-style;
       margin: 0;
     }
@@ -217,8 +232,7 @@ $v-textfield-disabled-opacity: $v-disabled-opacity !default;
     }
   }
 
-  .#{$primary-stylename}-#{$stylename},
-  .v-textarea-#{$stylename} {
+  #{$text-input-selector} #{$input-selector} {
     padding-left: $unit-size;
   }
 }
index e8cd22fa9ace2197b6a92c9ad172f1c8152db8d6..0423b37ab16f1dd3f131172eeb7c6240242dec82 100644 (file)
@@ -1,20 +1,41 @@
 @mixin valo-treetable ($primary-stylename: v-treetable) {
-  .v-table-cell-wrapper {
-    //position: relative;
+  .#{$primary-stylename} {
+    [class*="caption-container"],
+    [class*="footer-container"],
+    [class*="cell-wrapper"] {
+      @include box-sizing(content-box);
+      padding-left: 0;
+      padding-right: 0;
+    }
+
+    [class*="caption-container"] {
+      padding-left: $v-table-cell-padding-horizontal;
+    }
+
+    [class*="caption-container-align-right"] {
+      padding-left: $v-table-cell-padding-horizontal + $v-table-resizer-width;
+    }
+
+    [class*="footer-container"] {
+      padding-right: $v-table-cell-padding-horizontal;
+    }
+
+    [class*="cell-content"] {
+      padding-left: $v-table-cell-padding-horizontal;
+      padding-right: $v-table-cell-padding-horizontal;
+
+      &:first-child {
+        padding-left: $v-table-cell-padding-horizontal + $v-table-border-width;
+      }
+    }
   }
 
   .#{$primary-stylename}-treespacer {
     display: inline-block;
-    background: transparent;
-    width: round($v-unit-size/2);
-    //left: round($v-unit-size/-8);
-    left: 0;
     position: absolute;
-    text-align: right;
-
-    &:before {
-      
-    }
+    width: round($v-unit-size/2);
+    margin-left: round($v-unit-size/-2) - round($v-table-cell-padding-horizontal/2);
+    text-align: center;
   }
 
   .#{$primary-stylename}-node-closed:before {
@@ -24,4 +45,4 @@
   .#{$primary-stylename}-node-open:before {
     @include valo-tree-expanded-icon-style($force: true);
   }
-}
\ No newline at end of file
+}
index 64ded990c2c29ba418e5291eed03039c3a1614ea..79fb500804c1bbecd330654657bde7baee512d30 100644 (file)
@@ -93,9 +93,9 @@ $v-window-modality-curtain-background-color: #222 !default;
       bottom: -$scroll-divider-width;
       right: 0;
       left: 0;
-      height: $scroll-divider-width;
+      height: 0;
       $_bg: $v-window-background-color;
-      background: first-color(valo-border($strength: 0.5));
+      border-top: $scroll-divider-width solid first-color(valo-border($strength: 0.5));
     }
   }
 
@@ -133,10 +133,6 @@ $v-window-modality-curtain-background-color: #222 !default;
       @include transition(color 140ms);
     }
 
-    @if $v-window-border-radius > 0 {
-      border-radius: 0 0 0 $v-window-border-radius;
-    }
-
     &:focus {
       outline: none;
     }
@@ -154,6 +150,10 @@ $v-window-modality-curtain-background-color: #222 !default;
   .#{$primary-stylename}-closebox {
     padding-right: round($v-unit-size/9);
     @include valo-window-close-icon-style;
+
+    @if $v-window-border-radius > 0 {
+      border-radius: 0 $v-window-border-radius 0 $v-window-border-radius;
+    }
   }
 
   .#{$primary-stylename}-maximizebox,
@@ -161,8 +161,12 @@ $v-window-modality-curtain-background-color: #222 !default;
     right: $v-unit-size - round($v-unit-size/9);
     padding-left: round($v-unit-size/9);
 
-    + .#{$primary-stylename}-closebox {
-      border-bottom-left-radius: 0;
+    @if $v-window-border-radius > 0 {
+      border-radius: 0 0 0 $v-window-border-radius;
+
+      + .#{$primary-stylename}-closebox {
+        border-bottom-left-radius: 0;
+      }
     }
   }
 
@@ -215,18 +219,18 @@ $v-window-modality-curtain-background-color: #222 !default;
         position: absolute;
         z-index: 2;
         top: 0;
-        height: $scroll-divider-width;
-        background: $v-window-background-color;
+        height: 0;
+        border-top: $scroll-divider-width solid $v-window-background-color;
         left: 0;
         right: 0;
       }
 
       .v-panel-captionwrap:after {
-        background: first-color(valo-border($strength: 0.5));
+        border-color: first-color(valo-border($strength: 0.5));
       }
 
       .v-panel-content:before {
-        background: $v-window-background-color;
+        border-color: $v-window-background-color;
       }
     }
   }
index f4157d954fc2a10073029d12597ce38e96511f38..704b6c8469d1d700cc1aae0daa8eac1b44f4027e 100644 (file)
@@ -1,5 +1,5 @@
 // Common styles for components
-// About 50KB of CSS output
+// About 90KB of CSS output
 
 @import "valo-menu";
 
     &.v-button-small {
       width: $v-unit-size--small;
     }
+
+    &.v-button-large {
+      width: $v-unit-size--large;
+    }
+
+    .v-button-caption {
+      display: none;
+    }
   }
 
   .v-link-small {
     font-size: $v-font-size--large;
   }
 
+  .v-tabsheet-equal-width-tabs {
+    @include valo-tabsheet-equal-width-tabs-style($flex: false);
+  }
+
   .v-tabsheet-framed {
     @include valo-tabsheet-framed-style;
   }
     @include valo-tabsheet-centered-tabs-style;
   }
 
-  .v-tabsheet-equal-width-tabs {
-    @include valo-tabsheet-equal-width-tabs-style($flex: false);
-  }
-
   .v-tabsheet-padded-tabbar {
     @include valo-tabsheet-padded-tabbar-style;
   }
     @include valo-tabsheet-icons-on-top-style;
   }
 
+  .v-tabsheet-compact-tabbar {
+    > .v-tabsheet-tabcontainer-compact-tabbar .v-caption {
+      line-height: 1.8;
+    }
+  }
+
   .v-tabsheet-only-selected-closable {
     @include valo-tabsheet-only-selected-closable-style;
   }
   }
 
   .v-textfield-borderless,
-  .v-textarea-borderless {
+  .v-textarea-borderless,
+  .v-datefield-borderless .v-datefield-textfield,
+  .v-filterselect-borderless .v-filterselect-input {
     @include valo-textfield-borderless-style;
   }
 
+  .v-datefield-borderless .v-datefield-button,
+  .v-filterselect-borderless .v-filterselect-button {
+    border: none;
+  }
+
   .v-textfield-small {
     @include valo-textfield-style($unit-size: $v-unit-size--small);
     font-size: $v-font-size--small;
     font-size: $v-font-size--large;
   }
 
-  @include valo-textfield-inline-icon($stylename: inline-icon);
+  @include valo-textfield-inline-icon($stylenames: inline-icon);
+  @include valo-textfield-inline-icon($stylenames: inline-icon small, $unit-size: $v-unit-size--small, $font-size: $v-font-size--small);
+  @include valo-textfield-inline-icon($stylenames: inline-icon large, $unit-size: $v-unit-size--large, $font-size: $v-font-size--large);
 
   .v-textarea-small {
     @include valo-textarea-style($unit-size: $v-unit-size--small);
   }
 
   .v-textfield-align-right,
-  .v-textarea-align-right {
+  .v-textarea-align-right,
+  .v-datefield-align-right input,
+  .v-filterselect-align-right input {
     text-align: right;
   }
 
   .v-textfield-align-center,
-  .v-textarea-align-center {
+  .v-textarea-align-center,
+  .v-datefield-align-center input,
+  .v-filterselect-align-center input {
     text-align: center;
   }
 
   }
 
   .v-checkbox-small {
-    @include valo-checkbox-style($size: $v-unit-size--small);
+    @include valo-checkbox-style($unit-size: $v-unit-size--small);
     font-size: $v-font-size--small;
   }
 
   .v-checkbox-large {
-    @include valo-checkbox-style($size: $v-unit-size--large);
+    @include valo-checkbox-style($unit-size: $v-unit-size--large);
+    font-size: $v-font-size--large;
+  }
+
+  .v-select-optiongroup-small {
+    @include valo-optiongroup-style($unit-size: $v-unit-size--small);
+    font-size: $v-font-size--small;
+  }
+
+  .v-select-optiongroup-large {
+    @include valo-optiongroup-style($unit-size: $v-unit-size--large);
     font-size: $v-font-size--large;
   }
 
     @include valo-panel-scroll-divider-style;
   }
 
-  .v-csslayout-well {
+  .v-csslayout-well,
+  .v-verticallayout-well,
+  .v-horizontallayout-well {
     @include valo-panel-well-style;
     @include valo-panel-adjust-content-margins;
   }
 
-  .v-csslayout-card {
+  .v-csslayout-card,
+  .v-verticallayout-card,
+  .v-horizontallayout-card {
     @include valo-panel-style;
     @include valo-panel-adjust-content-margins;
   }
 
 
   .v-table-no-stripes {
-    @include valo-table-no-stripes;
+    @include valo-table-no-stripes-style;
   }
 
   .v-table-no-vertical-lines {
-    @include valo-table-no-vertical-lines;
+    @include valo-table-no-vertical-lines-style;
   }
 
   .v-table-no-horizontal-lines {
-    @include valo-table-no-horizontal-lines;
+    @include valo-table-no-horizontal-lines-style;
   }
 
   .v-table-no-header {
-    @include valo-table-no-header;
+    @include valo-table-no-header-style;
   }
 
   .v-table-borderless {
-    @include valo-table-borderless;
+    @include valo-table-borderless-style;
   }
 
   .v-table-compact,
   .v-table-small {
-    @include valo-table-compact-style($row-height: round($v-table-row-height * $v-scaling-factor--small), $cell-padding-horizontal: round($v-table-cell-padding-horizontal / 2));
+    @include valo-table-spacing-style($row-height: round($v-table-row-height * $v-scaling-factor--small), $cell-padding-horizontal: round($v-table-cell-padding-horizontal / 2));
   }
 
   .v-table-small {
     }
   }
 
+  .v-slider-no-indicator {
+    @include valo-slider-no-indicator;
+  }
+
 
        @include valo-menu;
 
index 1aca0dd117c0f400f3049afed69a34ac4ec6f63c..0e554024497cc8360bef2d590132e2f41bbbb590 100644 (file)
@@ -28,6 +28,11 @@ $valo-global-included: false !default;
       height: 100%;
       // Cancel tap highlight from all elements inside the app
       -webkit-tap-highlight-color: rgba(0,0,0,0);
+
+      // Prevent iOS text size adjust after orientation change, without disabling user zoom
+      -webkit-text-size-adjust: 100%;
+      -ms-text-size-adjust: 100%;
+      -webkit-text-size-adjust: 100%;
     }
 
     .v-ui {
index 5d92f4c9742102ff27ae91cf9a0bbf2bd0d1b4f3..53b7586ce400ea56dd65a6614bd65fae16dfcfdb 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.5 - color-luminance($v-background-color)/255 + $v-bevel-depth/100%)) !default;
+$v-overlay-shadow: 0 4px 10px 0 (v-shade 2), 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;
index 270be09b4f6260e0375d063b3b558152109d8aa3..bf5b9b78bd83c6712f2b7ed94a28dde4bdedc5e3 100644 (file)
 
   $color: $background-color;
   @each $b in $bevel {
+    $strength: 1;
     @if type-of($b) == list {
       $strength: first-number($b);
-      $color: if($needle==v-tint, rgba(#fff, $v-shadow-opacity/100%*$strength), rgba(#000, $v-shadow-opacity/100%*$strength));
     }
+    $color: if($needle==v-tint, rgba(#fff, $v-shadow-opacity/100%*$strength), rgba(#000, $v-shadow-opacity/100%*$strength));
   }
 
   @return 0 if($needle==v-tint, $offset, $offset*-1) 0 $color;