blob: 6877b8327e733e8abb01475a982ae14f379bf456 [file] [log] [blame]
/**
*
*
* @param {string} $primary-stylename (v-splitpanel) -
* @param {bool} $include-additional-styles -
*
* @group splitpanel
*/
@mixin valo-splitpanel($primary-stylename : v-splitpanel, $include-additional-styles: contains($v-included-additional-styles, splitpanel)) {
.#{$primary-stylename}-horizontal {
@include valo-splitpanel-style($primary-stylename: $primary-stylename, $orientation: horizontal);
}
.#{$primary-stylename}-vertical {
@include valo-splitpanel-style($primary-stylename: $primary-stylename, $orientation: vertical);
}
@if $include-additional-styles {
.#{$primary-stylename}-horizontal.large {
@include valo-splitpanel-style($splitter-size: round($v-unit-size/3), $splitter-handle-visible: true, $orientation: horizontal);
}
.#{$primary-stylename}-vertical.large {
@include valo-splitpanel-style($splitter-size: round($v-unit-size/3), $splitter-handle-visible: true, $orientation: vertical);
}
}
}
/**
*
*
* @param {string} $primary-stylename (v-splitpanel) -
*
* @group splitpanel
*/
@mixin valo-splitpanel-global ($primary-stylename : v-splitpanel) {
.#{$primary-stylename}-vertical,
.#{$primary-stylename}-horizontal {
overflow: hidden;
white-space: nowrap;
}
.#{$primary-stylename}-hsplitter {
z-index: 100;
cursor: e-resize;
cursor: col-resize;
}
.#{$primary-stylename}-vsplitter {
z-index: 100;
cursor: s-resize;
cursor: row-resize;
}
// Element which acts as the active dragging area
.#{$primary-stylename}-hsplitter,
.#{$primary-stylename}-vsplitter {
&:after {
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
div {
width: inherit;
height: inherit;
overflow: hidden;
position: relative;
}
}
.#{$primary-stylename}-hsplitter div,
.#{$primary-stylename}-vsplitter div {
&:before {
@include box-sizing(border-box);
content: "";
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
}
.v-disabled [class$="splitter"] div {
cursor: default;
&:before {
display: none;
}
}
// Allow undefined/auto height for horizontal split
.#{$primary-stylename}-horizontal > div {
> .#{$primary-stylename}-second-container {
position: static !important;
display: inline-block;
vertical-align: top;
}
> .#{$primary-stylename}-first-container {
display: inline-block;
vertical-align: top;
}
}
}
/**
*
*
* @param {string} $primary-stylename (v-splitpanel) -
* @param {size} $splitter-size (max(1px, first-number($v-border)) -
* @param {list} $splitter-active-size (round($v-unit-size/3)) -
* @param {bool} $splitter-handle-visible (false) -
* @param {list} $splitter-shadow (none) -
* @param {list} $orientation (vertical horizontal) -
*
* @group splitpanel
*/
@mixin valo-splitpanel-style(
$primary-stylename : v-splitpanel,
$splitter-size: max(1px, first-number($v-border)),
$splitter-active-size: round($v-unit-size/3),
$splitter-handle-visible: false,
$splitter-shadow: none,
$orientation: vertical horizontal
) {
$offset: round(($splitter-active-size - $splitter-size)/-2);
@if contains($orientation, horizontal) {
> div > .#{$primary-stylename}-hsplitter {
width: $splitter-size;
&:after {
left: $offset;
right: $offset;
}
div {
&:before {
@include valo-button-style($shadow: $splitter-shadow);
height: auto;
padding: 0;
border-radius: 0;
@include valo-gradient($color: $v-background-color, $direction: to right);
}
@if $splitter-handle-visible {
&:after {
@include valo-splitpanel-splitter-handle-style($horizontal: true);
}
}
}
}
> div > .#{$primary-stylename}-second-container {
margin-left: $splitter-size;
}
}
@if contains($orientation, vertical) {
> div > .#{$primary-stylename}-vsplitter {
height: $splitter-size;
&:after {
top: $offset;
bottom: $offset;
}
div {
&:before {
@include valo-button-style($shadow: $splitter-shadow);
height: auto;
padding: 0;
border-radius: 0;
}
@if $splitter-handle-visible {
&:after {
@include valo-splitpanel-splitter-handle-style;
}
}
}
}
}
}
/**
*
*
* @param {bool} $horizontal (false) -
* @param {bool} $include-common (true) -
*
* @group splitpanel
*/
@mixin valo-splitpanel-splitter-handle-style ($horizontal: false, $include-common: true) {
@if $include-common {
content: "";
border: valo-border($strength: 0.6);
$border-color: first-color(valo-border($strength: 1.2));
border-top-color: $border-color;
border-left-color: $border-color;
position: absolute;
top: 50%;
left: 50%;
}
@if $horizontal {
width: 0;
height: $v-unit-size;
margin-left: first-number($v-border)*-1;
margin-top: round(-$v-unit-size/2);
} @else {
width: $v-unit-size;
height: 0;
margin-left: round(-$v-unit-size/2);
margin-top: first-number($v-border)*-1;
}
}