@ -0,0 +1,71 @@ | |||||
/** | |||||
* input, textarea | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$crispy__field__checkbox: !default; | |||||
@mixin crispy__field__checkbox() { | |||||
.field__checkbox { | |||||
label { | |||||
&:hover { | |||||
cursor: pointer; | |||||
} | |||||
.field__checkbox__icon { | |||||
fill: $checkbox__icon-color-unchecked; | |||||
transition: $checkbox__transition-color; | |||||
} | |||||
.field__checkbox__checked { | |||||
fill: $checkbox__icon-color-checked; | |||||
display: none; | |||||
} | |||||
.field__checkbox__unchecked { | |||||
fill: $checkbox__icon-color-unchecked; | |||||
} | |||||
} | |||||
input[type="checkbox"] { | |||||
position: relative; | |||||
display: none; | |||||
&:checked + label .field__checkbox__checked { | |||||
display: inline-block; | |||||
} | |||||
&:checked + label .field__checkbox__unchecked { | |||||
display: none; | |||||
} | |||||
&:disabled + label .field__checkbox__icon { | |||||
fill: $checkbox__icon-color--disabled; | |||||
} | |||||
&:disabled + label:hover { | |||||
cursor: not-allowed; | |||||
} | |||||
appearance: none; | |||||
} | |||||
&--valid { | |||||
border-color: $crispy__field__border-color--valid; | |||||
} | |||||
&--error { | |||||
border-color: $crispy__field__border-color--error; | |||||
} | |||||
&:focus { | |||||
border-color: $crispy__field__border-color--focus; | |||||
} | |||||
@include crispy__font-size($crispy__field__font-size); | |||||
} | |||||
} |
@ -0,0 +1,19 @@ | |||||
@import | |||||
'text', | |||||
'checkbox'; | |||||
/** | |||||
* field | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$crispy__field__margin: toEm(0 0 $crispy__margin 0) !default; | |||||
@mixin crispy__field() { | |||||
.field { | |||||
margin: $crispy__field__margin; | |||||
} | |||||
} |
@ -0,0 +1,18 @@ | |||||
/** | |||||
* <div class="field"> | |||||
* <div class="field__panel"> | |||||
* <ul> | |||||
* <li>item 1<li> | |||||
* </ul> | |||||
* </div> | |||||
* </div> | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
@mixin crispy__field__panel() { | |||||
.field__panel { | |||||
@extend .panel; | |||||
} | |||||
} |
@ -0,0 +1,71 @@ | |||||
/** | |||||
* input, textarea | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$crispy__field__checkbox: !default; | |||||
@mixin crispy__field__checkbox() { | |||||
.field__checkbox { | |||||
label { | |||||
&:hover { | |||||
cursor: pointer; | |||||
} | |||||
.field__checkbox__icon { | |||||
fill: $checkbox__icon-color-unchecked; | |||||
transition: $checkbox__transition-color; | |||||
} | |||||
.field__checkbox__checked { | |||||
fill: $checkbox__icon-color-checked; | |||||
display: none; | |||||
} | |||||
.field__checkbox__unchecked { | |||||
fill: $checkbox__icon-color-unchecked; | |||||
} | |||||
} | |||||
input[type="checkbox"] { | |||||
position: relative; | |||||
display: none; | |||||
&:checked + label .field__checkbox__checked { | |||||
display: inline-block; | |||||
} | |||||
&:checked + label .field__checkbox__unchecked { | |||||
display: none; | |||||
} | |||||
&:disabled + label .field__checkbox__icon { | |||||
fill: $checkbox__icon-color--disabled; | |||||
} | |||||
&:disabled + label:hover { | |||||
cursor: not-allowed; | |||||
} | |||||
appearance: none; | |||||
} | |||||
&--valid { | |||||
border-color: $crispy__field__border-color--valid; | |||||
} | |||||
&--error { | |||||
border-color: $crispy__field__border-color--error; | |||||
} | |||||
&:focus { | |||||
border-color: $crispy__field__border-color--focus; | |||||
} | |||||
@include crispy__font-size($crispy__field__font-size); | |||||
} | |||||
} |
@ -0,0 +1,55 @@ | |||||
/** | |||||
* <div class="field"> | |||||
* <label class="field__label"> | |||||
* input | |||||
* <input type="text" class="field__text" /> | |||||
* </label> | |||||
* <div class="field__panel"> | |||||
* <ul> | |||||
* <li>item 1<li> | |||||
* </ul> | |||||
* </div> | |||||
* </div> | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$crispy__field__text__font-size: $crispy__body__font-size !default; | |||||
$crispy__field__text__padding: toEm(6px 8px) !default; | |||||
$crispy__field__text__color: $crispy__color-text !default; | |||||
$crispy__field__text__border: 1px solid $crispy__color-secondary !default; | |||||
$crispy__field__text__border-color--focus: $crispy__color-primary !default; | |||||
$crispy__field__text__border-color--valid: $crispy__color-success !default; | |||||
$crispy__field__text__border-color--error: $crispy__color-danger !default; | |||||
@mixin crispy__field__text() { | |||||
.field__text { | |||||
display: block; | |||||
width: 100%; | |||||
line-height: $crispy__golden-ratio; | |||||
padding: $crispy__field__padding; | |||||
color: $crispy__field__text__color; | |||||
border: $crispy__field__border; | |||||
appearance: none; | |||||
@include crispy__font-size($crispy__field__font-size); | |||||
&--valid { | |||||
border-color: $crispy__field__border-color--valid; | |||||
} | |||||
&--error { | |||||
border-color: $crispy__field__border-color--error; | |||||
} | |||||
&:focus { | |||||
border-color: $crispy__field__border-color--focus; | |||||
} | |||||
} | |||||
} |
@ -1,2 +0,0 @@ | |||||
@import | |||||
'text'; |
@ -1,56 +0,0 @@ | |||||
/** | |||||
* input text | |||||
* | |||||
* | |||||
* @author Björn Hase | |||||
* | |||||
*/ | |||||
$crispy__form__font-size: $crispy__body__font-size !default; | |||||
$crispy__form__padding: toEm(6px 8px) !default; | |||||
$crispy__form__text__color: $crispy__color-text !default; | |||||
$crispy__form__border: 1px solid $crispy__color-secondary !default; | |||||
$crispy__form__border-color--focus: $crispy__color-primary !default; | |||||
$crispy__form__border-color--valid: $crispy__color-success !default; | |||||
$crispy__form__border-color--error: $crispy__color-danger !default; | |||||
@mixin crispy__form__text() { | |||||
input:not([type="submit"]), | |||||
textarea { | |||||
display: block; | |||||
width: 100%; | |||||
line-height: $crispy__golden-ratio; | |||||
padding: $crispy__form__padding; | |||||
color: $crispy__form__text__color; | |||||
border: $crispy__form__border; | |||||
appearance: none; | |||||
@include crispy__font-size($crispy__form__font-size); | |||||
} | |||||
.field { | |||||
&--valid { | |||||
input:not([type="submit"]), | |||||
textarea { | |||||
border-color: $crispy__form__border-color--valid; | |||||
} | |||||
} | |||||
&--error { | |||||
input:not([type="submit"]), | |||||
textarea { | |||||
border-color: $crispy__form__border-color--error; | |||||
} | |||||
} | |||||
} | |||||
input:not([type="submit"]), | |||||
textarea { | |||||
&:focus { | |||||
border-color: $crispy__form__border-color--focus; | |||||
} | |||||
} | |||||
} |