123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167 |
- /**
- * Outputs the selectors and properties for the CheckBox component.
- *
- * @param {string} $primary-stylename (v-checkbox) - 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 checkbox
- */
- @mixin valo-checkbox ($primary-stylename: v-checkbox, $include-additional-styles: contains($v-included-additional-styles, checkbox)) {
-
- .#{$primary-stylename} {
- @include valo-checkbox-style;
- }
-
-
- @if $include-additional-styles {
- .#{$primary-stylename}-small {
- @include valo-checkbox-style($unit-size: $v-unit-size--small);
- font-size: $v-font-size--small;
- }
-
- .#{$primary-stylename}-large {
- @include valo-checkbox-style($unit-size: $v-unit-size--large);
- font-size: $v-font-size--large;
- }
- }
-
- }
-
-
- /**
- * Outputs the font icon to indicate the checked state.
- *
- * @group checkbox
- */
- @mixin valo-checkbox-icon-style {
- content: "\f00c";
- font-family: ThemeIcons;
- }
-
-
- /**
- * Outputs the styles for a checkbox variant.
- *
- * @param {color} $background-color ($v-background-color) - The background color of the checkbox
- * @param {size} $unit-size ($v-unit-size) - The sizing of the checkbox. The width and height of the checkbox will be the unit-size divided by 2.
- * @param {color} $selection-color ($v-selection-color) - The color of the checked state icon
- *
- * @group checkbox
- */
- @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: $unit-size/2;
-
- position: relative;
- line-height: round($size);
- white-space: nowrap;
-
- &.v-has-width label {
- white-space: normal;
- }
-
- :root & {
- padding-left: round($size*1.33);
-
- label {
- @include valo-tappable;
- display: inline-block;
- }
- }
-
- :root & > input {
- position: absolute;
- clip: rect(0,0,0,0);
- left: .2em;
- top: .2em;
- z-index: 0;
- margin: 0;
-
- &:focus ~ label:before {
- @include valo-button-focus-style($background-color: $background-color, $border-fallback: null);
- @include box-shadow(valo-bevel-and-shadow($background-color: $background-color, $bevel: $v-bevel, $shadow: $v-shadow, $gradient: $v-gradient, $include-focus: true));
- }
-
- & ~ label:before,
- & ~ label:after {
- content: "";
- display: inline-block;
- @include box-sizing(border-box);
- width: round($size);
- height: round($size);
- position: absolute;
- top: 0;
- left: 0;
- border-radius: min(round($size/3), $v-border-radius);
- font-size: round($v-font-size * 0.8 * ($size*2/$v-unit-size));
- text-align: center;
- }
-
- & ~ label:before {
- @include valo-button-style($background-color: $background-color, $unit-size: $size, $border-radius: min(round($size/3), $v-border-radius), $states: normal);
- padding: 0;
- height: round($size);
- }
-
- & ~ label:after {
- @include valo-checkbox-icon-style;
- color: transparent;
- @if $v-animations-enabled {
- @include transition(color 100ms);
- }
- }
-
- &:active ~ label:after {
- @include valo-button-active-style($background-color: $background-color);
- }
-
- &:checked ~ label:after {
- color: $selection-color;
- }
- }
-
- & > .v-icon,
- & > label .v-icon {
- margin: 0 round($size/3) 0 round($size/6);
- min-width: 1em;
- cursor: pointer;
- }
-
- &.v-disabled {
- > label,
- > .v-icon {
- cursor: default;
- @include opacity($v-disabled-opacity);
- }
-
- > label > .v-icon {
- cursor: default;
- }
-
- :root & > input:active ~ label:after {
- background: transparent;
- }
- }
-
- &.v-readonly {
- > label,
- > .v-icon {
- cursor: default;
- }
-
- > label > .v-icon {
- cursor: default;
- }
-
- :root & > input:active ~ label:after {
- background: transparent;
- }
-
- :root & > input ~ label:after {
- @include opacity($v-disabled-opacity);
- }
- }
-
-
- }
|