| /** |
| * |
| * |
| * @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; |
| } |
| } |