input-groups.less 3.31 KB
Newer Older
Mark Otto's avatar
Mark Otto committed
1
2
3
4
5
6
7
//
// Input groups
// --------------------------------------------------

// Base styles
// -------------------------
.input-group {
8
  position: relative; // For dropdowns
Mark Otto's avatar
Mark Otto committed
9
10
11
12
  display: table;
  border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table

  // Undo padding and float of grid classes
13
  &[class*="col-"] {
Mark Otto's avatar
Mark Otto committed
14
15
16
17
18
19
20
21
22
23
24
    float: none;
    padding-left: 0;
    padding-right: 0;
  }

  .form-control {
    width: 100%;
    margin-bottom: 0;
  }
}

25
26
27
28
29
30
// Sizing options
//
// Remix the default form control sizing classes into new ones for easier
// manipulation.

.input-group-lg > .form-control,
31
32
.input-group-lg > .input-group-addon,
.input-group-lg > .input-group-btn > .btn { .input-lg(); }
33
.input-group-sm > .form-control,
34
.input-group-sm > .input-group-addon,
35
.input-group-sm > .input-group-btn > .btn { .input-sm(); }
36
37


Mark Otto's avatar
Mark Otto committed
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
// Display as table-cell
// -------------------------
.input-group-addon,
.input-group-btn,
.input-group .form-control {
  display: table-cell;

  &:not(:first-child):not(:last-child) {
    border-radius: 0;
  }
}
// Addon and addon wrapper for buttons
.input-group-addon,
.input-group-btn {
  width: 1%;
  white-space: nowrap;
  vertical-align: middle; // Match the inputs
}

// Text input groups
// -------------------------
.input-group-addon {
  padding: @padding-base-vertical @padding-base-horizontal;
  font-size: @font-size-base;
  font-weight: normal;
geedmo's avatar
geedmo committed
63
  line-height: 1;
64
  color: @input-color;
Mark Otto's avatar
Mark Otto committed
65
  text-align: center;
66
  background-color: @input-group-addon-bg;
Mark Otto's avatar
Mark Otto committed
67
68
69
70
  border: 1px solid @input-group-addon-border-color;
  border-radius: @border-radius-base;

  // Sizing
71
  &.input-sm {
Mark Otto's avatar
Mark Otto committed
72
73
74
75
    padding: @padding-small-vertical @padding-small-horizontal;
    font-size: @font-size-small;
    border-radius: @border-radius-small;
  }
76
  &.input-lg {
Mark Otto's avatar
Mark Otto committed
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
    padding: @padding-large-vertical @padding-large-horizontal;
    font-size: @font-size-large;
    border-radius: @border-radius-large;
  }

  // Nuke default margins from checkboxes and radios to vertically center within.
  input[type="radio"],
  input[type="checkbox"] {
    margin-top: 0;
  }
}

// Reset rounded corners
.input-group .form-control:first-child,
.input-group-addon:first-child,
.input-group-btn:first-child > .btn,
.input-group-btn:first-child > .dropdown-toggle,
.input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle) {
  .border-right-radius(0);
}
.input-group-addon:first-child {
  border-right: 0;
}
.input-group .form-control:last-child,
.input-group-addon:last-child,
.input-group-btn:last-child > .btn,
.input-group-btn:last-child > .dropdown-toggle,
.input-group-btn:first-child > .btn:not(:first-child) {
  .border-left-radius(0);
}
.input-group-addon:last-child {
  border-left: 0;
}

// Button input groups
// -------------------------
.input-group-btn {
  position: relative;
115
  // Jankily prevent input button groups from wrapping
Mark Otto's avatar
Mark Otto committed
116
  white-space: nowrap;
117
118
  // in combination with inline-blocks and nowrap, space characters would take visible space
  font-size: 0;
119
120
121
122
123
124
125
126

  // Negative margin to only have a 1px border between the two
  &:first-child > .btn {
    margin-right: -1px;
  }
  &:last-child > .btn {
    margin-left: -1px;
  }
Mark Otto's avatar
Mark Otto committed
127
128
129
130
}
.input-group-btn > .btn {
  position: relative;
  + .btn {
131
    margin-left: -1px;
Mark Otto's avatar
Mark Otto committed
132
133
134
135
136
137
138
  }
  // Bring the "active" button to the front
  &:hover,
  &:active {
    z-index: 2;
  }
}