blob: 926b00f5298a8066869deca8400bbf41d4a6f7be [file] [log] [blame]
/**
* The background color for overlay elements.
*
* @type color
* @group overlay
*/
$v-overlay-background-color: if(is-dark-color($v-background-color), darken($v-background-color, 3%), lighten($v-background-color, 2%)) !default;
/**
* The corner radius for overlay elements.
*
* @type size (px)
* @group overlay
*/
$v-overlay-border-radius: $v-border-radius !default;
/**
* The border width for overlay elements.
*
* @type size (px)
* @group overlay
*/
$v-overlay-border-width: first-number($v-border) !default;
/**
* The animation which is used when overlay elements are made visible.
*
* @type list
* @group overlay
*/
$v-overlay-animate-in: valo-overlay-animate-in 120ms !default;
/**
* The animation which is used when overlay elements are removed.
*
* @type list
* @group overlay
*/
$v-overlay-animate-out: valo-animate-out-fade 120ms !default;
/**
* The padding on each size of overlay elements.
*
* @type size
* @group overlay
*/
$v-overlay-padding: round($v-unit-size/9) !default;
/**
* The padding on the top and bottom edges of overlay elements.
*
* @type size
* @group overlay
*/
$v-overlay-padding-vertical: $v-overlay-padding !default;
/**
* The padding on the left and right edges of overlay elements.
*
* @type size
* @group overlay
*/
$v-overlay-padding-horizontal: $v-overlay-padding !default;
/**
* The shadow used for overlay elements.
*
* @type list
* @group overlay
*/
$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;
/**
* The background color for selection overlays, i.e. overlays which present a
* list of options for the user to choose from, such as context menus and drop down
* menus.
*
* @type color
* @group overlay
*/
$v-selection-overlay-background-color: $v-overlay-background-color !default;
/**
* The padding on each size of selection overlay elements.
*
* @type size
* @group overlay
*/
$v-selection-overlay-padding: $v-overlay-padding !default;
/**
* The padding on the top and bottom edges of selection overlay elements.
*
* @type size
* @group overlay
*/
$v-selection-overlay-padding-vertical: $v-selection-overlay-padding !default;
/**
* The padding on the left and right edges of selection overlay elements.
*
* @type size
* @group overlay
*/
$v-selection-overlay-padding-horizontal: $v-selection-overlay-padding !default;
/**
* The corner radius for selection overlay elements.
*
* @type size (px)
* @group overlay
*/
$v-selection-item-border-radius: $v-border-radius - 1px !default;
/**
* The height of individual selection overlay list items.
*
* @type size (px)
* @group overlay
*/
$v-selection-item-height: ceil($v-unit-size/1.4) !default;
/**
* The horizontal padding for individual selection overlay list items.
*
* @type size
* @group overlay
*/
$v-selection-item-padding-horizontal: ceil($v-unit-size/4) !default;
/**
* The font weight for individual selection overlay list items.
*
* @type number | identifier
* @group overlay
*/
$v-selection-item-font-weight: max(400, $v-font-weight);
/**
* The font color for individual selection overlay list items.
*
* @type color
* @group overlay
*/
$v-selection-item-selection-color: $v-selection-color !default;
/*
* Simulates CSS box-shadow using the extraneous shadow elements in the DOM.
*
* @access private
* @deprecated The .v-shadow element is deprecated since 7.3.0
* @group overlay
*/
@mixin valo-ie8-shadow($shadow, $element: top) {
.#{$element} {
$shadow-offset-x: nth($shadow, 1);
$shadow-offset-y: nth($shadow, 2);
$shadow-blur: nth($shadow, 3);
$shadow-spread: 0;
@if length($shadow) > 4 {
$shadow-spread: nth($shadow, 4);
}
$shadow-color: last($shadow);
$shadow-color-opacity: round(opacity($shadow-color) * 100);
$shadow-color: opacify($shadow-color, 1);
position: absolute;
top: $shadow-offset-y - $shadow-blur - $shadow-spread;
right: -$shadow-offset-x + $shadow-blur - $shadow-spread;
bottom: -$shadow-offset-y + $shadow-blur - $shadow-spread;
left: $shadow-offset-x - $shadow-blur - $shadow-spread;
background: $shadow-color;
filter: alpha(opacity=#{$shadow-color-opacity}) progid:DXImageTransform.Microsoft.blur(pixelradius=#{strip-units($shadow-blur)}, makeShadow=false);
}
}
// Not needed in modern browsers
.v-shadow,
.v-shadow-window {
display: none;
// In IE8 windows get the same shadow as other overlays
.v-ie8 & {
display: block;
// Up to 8 shadows are supported
$elements: top, top-left, top-right, left, right, bottom, bottom-left, bottom-right;
$shadows: valo-bevel-and-shadow($shadow: $v-overlay-shadow);
@if type-of(last($shadows)) == color {
@include valo-ie8-shadow($shadows);
} @else {
@for $i from 1 through min(length($elements), length($shadows)) {
$shadow: nth($shadows, $i);
@if length($shadow) == 2 {
$shadow: flatten-list($shadow); // Workaround for a weird issue when sometimes a shadow is appended to a null list
}
@if length($shadow) > 3 {
@include valo-ie8-shadow($shadow: $shadow, $element: nth($elements, $i));
}
}
}
}
}
/**
* Outputs styles for overlay elements
*
* @group overlay
*
* @param {color} $background-color ($v-overlay-background-color) - the background color for the overlay
* @param {list} $shadow ($v-overlay-shadow) - the shadow for the overlay
* @param {list} $animate-in ($v-overlay-animate-in) - the animation used when the overlay is made visible
* @param {list} $animate-out ($v-overlay-animate-out) - the animation used when the overlay is removed
*/
@mixin valo-overlay-style (
$background-color: $v-overlay-background-color,
$shadow: $v-overlay-shadow,
$animate-in: $v-overlay-animate-in,
$animate-out: $v-overlay-animate-out
) {
padding: $v-overlay-padding-vertical $v-overlay-padding-horizontal;
border-radius: $v-overlay-border-radius;
background-color: $background-color;
color: valo-font-color($background-color);
@include box-shadow( valo-bevel-and-shadow($bevel: null, $shadow: $shadow));
@if $v-animations-enabled {
@if $animate-in {
&[class*="animate-in"] {
@include animation($animate-in);
}
}
@if $animate-out {
&[class*="animate-out"] {
@include animation($animate-out);
}
}
}
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
backface-visibility: hidden;
}
/**
* Outputs styles for selection overlay elements.
*
* @group overlay
*
* @param {color} $background-color ($v-selection-overlay-background-color) - the background color for the overlay
* @param {list} $animate-in ($v-overlay-animate-in) - the animation used when the selection overlay is made visible
* @param {list} $animate-out ($v-overlay-animate-out) - the animation used when the selection overlay is removed
*/
@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;
}
/**
* Outputs the styles for selection item elements (i.e. individual items in context menus and drop down menus).
*
* @group overlay
*/
@mixin valo-selection-item-style {
cursor: pointer;
line-height: $v-selection-item-height;
padding: 0 $v-selection-item-padding-horizontal*2 0 $v-selection-item-padding-horizontal;
@if $v-selection-item-border-radius > 0 {
border-radius: $v-selection-item-border-radius;
}
font-weight: $v-selection-item-font-weight;
white-space: nowrap;
position: relative;
&:active:before {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
$sat: if(saturation($v-selection-item-selection-color) > 0, 50%, 0%);
background: scale-color($v-selection-item-selection-color, $lightness: -30%, $saturation: $sat);
@include opacity(.15);
pointer-events: none;
border-radius: inherit;
}
.v-icon {
max-height: $v-selection-item-height;
margin-right: round($v-selection-item-padding-horizontal/2);
min-width: 1em;
}
}
/**
* Outputs the styles for selected selection item elements.
*
* @group overlay
*/
@mixin valo-selection-item-selected-style {
@include valo-gradient($v-selection-item-selection-color);
$font-color: valo-font-color($v-selection-item-selection-color, 0.9);
color: $font-color;
text-shadow: valo-text-shadow($font-color: $font-color, $background-color: $v-selection-item-selection-color);
}
/**
* Outputs the selectors and styles for generic dragging ghost elements.
*
* @group drag-n-drop
*/
@mixin valo-drag-element {
.v-drag-element {
@include valo-drag-element-style;
}
}
/**
* Outputs the styles for generic dragging ghost elements.
*
* @group drag-n-drop
*
* @param {color} $background-color ($v-app-background-color) - the background color for the ghost element
*/
@mixin valo-drag-element-style ($background-color: $v-app-background-color) {
background: $background-color;
color: valo-font-color($background-color);
@include box-shadow(0 2px 10px rgba(#000, .2));
border-radius: $v-border-radius;
overflow: hidden;
@include opacity(.5);
// This has the unfortunate side-effect of selecting an the table row where the drag is dropped
//pointer-events: none;
}