| /** |
| * Outputs the selectors and properties for the FormLayout component. |
| * |
| * @param {string} $primary-stylename (v-formlayout) - the primary style name for the selectors |
| * @param {bool} $include-additional-styles - should the mixin output all the different style variations of the component |
| * |
| * @group formlayout |
| */ |
| @mixin valo-formlayout ($primary-stylename: v-formlayout, $include-additional-styles: contains($v-included-additional-styles, formlayout)) { |
| |
| @include valo-formlayout-spacing; |
| @include valo-formlayout-margin; |
| |
| .#{$primary-stylename} > table { |
| border-spacing: 0; |
| position: relative; |
| } |
| |
| .#{$primary-stylename}.v-has-width > table, |
| .#{$primary-stylename}.v-has-width .#{$primary-stylename}-contentcell { |
| width: 100%; |
| } |
| |
| .#{$primary-stylename}-error-indicator { |
| width: round($v-unit-size/2); |
| } |
| |
| .#{$primary-stylename}-captioncell { |
| vertical-align: top; |
| line-height: $v-unit-size - 1px; |
| |
| .v-caption { |
| padding-bottom: 0; |
| } |
| |
| .v-caption-h2, |
| .v-caption-h3, |
| .v-caption-h4 { |
| height: 3em; |
| } |
| } |
| |
| .#{$primary-stylename}-contentcell { |
| .v-checkbox, |
| .v-radiobutton { |
| font-weight: $v-font-weight + 100; |
| } |
| |
| > .v-label-h2, |
| > .v-label-h3, |
| > .v-label-h4 { |
| position: absolute; |
| left: 0; |
| right: 0; |
| width: auto !important; |
| margin-top: -0.5em; |
| padding-bottom: 0.5em; |
| border-bottom: valo-border($color: $v-app-background-color, $strength: 0.5); |
| } |
| } |
| |
| |
| @if $include-additional-styles { |
| .#{$primary-stylename}.light { |
| @include valo-formlayout-light-style; |
| } |
| } |
| |
| } |
| |
| |
| /** |
| * Outputs the styles for form layout margin. |
| * |
| * @param {list} $margin ($v-layout-margin-top $v-layout-margin-right $v-layout-margin-bottom $v-layout-margin-left) - The margin for the form layout (any valid CSS margin value) |
| * |
| * @group formlayout |
| */ |
| @mixin valo-formlayout-margin ($margin: $v-layout-margin-top $v-layout-margin-right $v-layout-margin-bottom $v-layout-margin-left) { |
| $top: 0; |
| $right: 0; |
| $bottom: 0; |
| $left: 0; |
| |
| @if length($margin) == 1 { |
| $top: $margin; |
| $right: $margin; |
| $bottom: $margin; |
| $left: $margin; |
| } @else if length($margin) == 2 { |
| $top: nth($margin, 1); |
| $right: nth($margin, 2); |
| $bottom: nth($margin, 1); |
| $left: nth($margin, 2); |
| } @else if length($margin) == 3 { |
| $top: nth($margin, 1); |
| $right: nth($margin, 2); |
| $bottom: nth($margin, 3); |
| $left: nth($margin, 2); |
| } @else if length($margin) == 4 { |
| $top: nth($margin, 1); |
| $right: nth($margin, 2); |
| $bottom: nth($margin, 3); |
| $left: nth($margin, 4); |
| } |
| |
| [class*="margin-top"] > tbody > [class*="firstrow"] > td { |
| padding-top: $top; |
| } |
| |
| [class*="margin-bottom"] > tbody > [class*="lastrow"] > td { |
| padding-bottom: $bottom; |
| } |
| |
| [class*="margin-left"] > tbody > [class*="row"] > [class*="captioncell"] { |
| padding-left: $left; |
| } |
| |
| [class*="margin-left"] > tbody > [class*="row"] > [class*="contentcell"] { |
| > .v-label-h2, |
| > .v-label-h3, |
| > .v-label-h4 { |
| left: $left; |
| } |
| } |
| |
| [class*="margin-right"] > tbody > [class*="row"] > [class*="contentcell"] { |
| padding-right: $right; |
| |
| > .v-label-h2, |
| > .v-label-h3, |
| > .v-label-h4 { |
| right: $right; |
| } |
| } |
| } |
| |
| |
| /** |
| * Outputs the styles for form layout spacing. |
| * |
| * @param {size} $vertical ($v-layout-spacing-vertical) - The vertical spacing between the rows in the form layout |
| * |
| * @group formlayout |
| */ |
| @mixin valo-formlayout-spacing ($vertical: $v-layout-spacing-vertical) { |
| [class*="spacing"] > tbody > [class*="row"] > td { |
| padding-top: $vertical; |
| } |
| |
| [class*="spacing"] > tbody > [class*="firstrow"] > td { |
| padding-top: 0; |
| } |
| } |
| |
| |
| /** |
| * Outputs the styles for a light style form layout. This mixin expects the target to have the normal styles of a form layout applied. |
| * |
| * @param {size} $row-height ($v-unit-size) - The height of an individual form layout row |
| * |
| * @group formlayout |
| */ |
| @mixin valo-formlayout-light-style ($row-height: $v-unit-size) { |
| > table { |
| padding: 0; |
| } |
| |
| > table > tbody > tr > td { |
| padding-top: 0; |
| height: $row-height; // Effectively min-height |
| border-bottom: valo-border($color: $v-app-background-color, $strength: 0.3); |
| } |
| |
| > table > tbody > [class*="lastrow"] > td { |
| border-bottom: none; |
| } |
| |
| > table > tbody > tr > [class*="captioncell"] { |
| color: valo-font-color($v-background-color, .5); |
| text-align: right; |
| padding-left: ceil($v-unit-size/3); |
| line-height: $row-height; |
| } |
| |
| > table > tbody > [class*="row"] > [class*="contentcell"] { |
| padding-right: 0; |
| |
| > .v-textfield, |
| > .v-textarea, |
| > .v-filterselect, |
| > .v-datefield, |
| > .v-filterselect-input, |
| > .v-datefield-textfield { |
| width: 100%; |
| } |
| |
| > .v-textfield, |
| > .v-textarea, |
| > .v-filterselect 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; |
| color: inherit; |
| |
| &:focus { |
| box-shadow: none; |
| } |
| } |
| |
| > .v-textfield-prompt, |
| > .v-textarea-prompt, |
| > .v-filterselect-prompt input, |
| > .v-datefield-prompt input { |
| @include valo-textfield-prompt-style; |
| } |
| |
| > .v-textarea, |
| > .v-richtextarea { |
| height: auto; |
| } |
| |
| > .v-label-h2, |
| > .v-label-h3, |
| > .v-label-h4 { |
| border-bottom: none; |
| left: 0; |
| right: 0; |
| } |
| |
| > .v-label-h3, |
| > .v-label-h4 { |
| margin-top: 0; |
| } |
| } |
| |
| .v-richtextarea { |
| margin: round($v-unit-size/8) 0; |
| } |
| |
| .v-filterselect-button, |
| .v-datefield-button { |
| border: none; |
| |
| &:active:after { |
| display: none; |
| } |
| } |
| |
| .v-datefield-button { |
| right: 0; |
| left: auto; |
| } |
| |
| .v-checkbox { |
| margin-left: ceil($v-unit-size/6); |
| } |
| } |