.hover(@color: @input-hover-border-color) { border-color: tint(@color, 20%); } .hover-error() { border-color: @error-color; } .active(@color: @input-hover-border-color) { border-color: tint(@color, 20%); outline: 0; box-shadow: 0 0 0 2px fade(@color, 20%); } .active-error() { border-color: @error-color; outline: 0; box-shadow: 0 0 0 2px fade(@error-color, 20%); } .disabled() { background-color: @input-disabled-bg; opacity: 1; cursor: @cursor-disabled; color: #ccc; &:hover { .hover(@input-border-color); } } .input-large() { font-size: @font-size-base; padding: @input-padding-vertical-large @input-padding-horizontal; height: @input-height-large; } .input-small() { padding: @input-padding-vertical-small @input-padding-horizontal; height: @input-height-small; border-radius: @btn-border-radius-small; } .input() { display: inline-block; width: 100%; height: @input-height-base; line-height: @line-height-base; padding: @input-padding-vertical-base @input-padding-horizontal; font-size: @font-size-small; border: 1px solid @input-border-color; border-radius: @btn-border-radius; color: @input-color; background-color: @input-bg; background-image: none; position: relative; cursor: text; .placeholder(); transition: border @transition-time @ease-in-out, background @transition-time @ease-in-out, box-shadow @transition-time @ease-in-out; &:hover { .hover(); } &:focus { .active(); } &[disabled], fieldset[disabled] & { .disabled(); } // Reset height for textarea textarea& { max-width: 100%; height: auto; vertical-align: bottom; font-size: @font-size-base; } // Size &-large { .input-large(); } &-small { .input-small(); } } .input-error() { border: 1px solid @error-color; &:hover { .hover-error; } &:focus { .active-error; } } .input-group(@inputClass) { display: table; width: 100%; border-collapse: separate; position: relative; font-size: @font-size-small; top: 1px; // fixed when using in form inline, &-large{ font-size: @font-size-base; } // Undo padding and float of grid classes &[class*="col-"] { float: none; padding-left: 0; padding-right: 0; } > [class*="col-"] { padding-right: 8px; } &-prepend, &-append, > .@{inputClass} { display: table-cell; &:not(:first-child):not(:last-child) { border-radius: 0; } } &-prepend .@{css-prefix}btn, &-append .@{css-prefix}btn { border-color: transparent; background-color: transparent; color: inherit; margin: -(@input-padding-vertical-base + 1) (-@input-padding-horizontal); } &-prepend, &-append { width: 1px; // To make addon/wrap as small as possible white-space: nowrap; vertical-align: middle; } .@{inputClass} { width: 100%; float: left; margin-bottom: 0; position: relative; z-index: 2; } &-prepend, &-append { padding: @input-padding-vertical-base @input-padding-horizontal; font-size: inherit; font-weight: normal; line-height: 1; color: @input-color; text-align: center; background-color: #eee; border: 1px solid @input-border-color; border-radius: @border-radius-base; // Reset Select's style in addon .@{css-prefix}select { margin: -(@input-padding-vertical-base + 1) (-@input-padding-horizontal); // lesshint spaceAroundOperator: false &-selection { background-color: inherit; margin: -1px; border: 1px solid transparent; } &-visible .@{css-prefix}select-selection{ box-shadow: none; } } } // Reset rounded corners > span > .@{inputClass}:first-child, > .@{inputClass}:first-child, &-prepend { border-bottom-right-radius: 0 !important; border-top-right-radius: 0 !important; // Reset Select's style in addon .@{css-prefix}-select .@{css-prefix}-select-selection { border-bottom-right-radius: 0; border-top-right-radius: 0; } } &-prepend { border-right: 0; } &-append { border-left: 0; } > .@{inputClass}:last-child, &-append { border-bottom-left-radius: 0 !important; border-top-left-radius: 0 !important; // Reset Select's style in addon .@{css-prefix}-select .@{css-prefix}-select-selection { border-bottom-left-radius: 0; border-top-left-radius: 0; } } // Sizing options &-large .@{inputClass}, &-large > &-prepend, &-large > &-append { .input-large(); } &-small .@{inputClass}, &-small > &-prepend, &-small > &-append { .input-small(); } } .input-group-error{ &-prepend, &-append { background-color: #fff; border: 1px solid @error-color; .@{css-prefix}select { &-selection { background-color: inherit; border: 1px solid transparent; } } } &-prepend { border-right: 0; } &-append { border-left: 0; } }