1 | // |
---|
2 | // Input groups |
---|
3 | // -------------------------------------------------- |
---|
4 | |
---|
5 | // Base styles |
---|
6 | // ------------------------- |
---|
7 | .input-group { |
---|
8 | position: relative; // For dropdowns |
---|
9 | display: table; |
---|
10 | border-collapse: separate; // prevent input groups from inheriting border styles from table cells when placed within a table |
---|
11 | |
---|
12 | // Undo padding and float of grid classes |
---|
13 | &[class*="col-"] { |
---|
14 | float: none; |
---|
15 | padding-left: 0; |
---|
16 | padding-right: 0; |
---|
17 | } |
---|
18 | |
---|
19 | .form-control { |
---|
20 | // Ensure that the input is always above the *appended* addon button for |
---|
21 | // proper border colors. |
---|
22 | position: relative; |
---|
23 | z-index: 2; |
---|
24 | |
---|
25 | // IE9 fubars the placeholder attribute in text inputs and the arrows on |
---|
26 | // select elements in input groups. To fix it, we float the input. Details: |
---|
27 | // https://github.com/twbs/bootstrap/issues/11561#issuecomment-28936855 |
---|
28 | float: left; |
---|
29 | |
---|
30 | width: 100%; |
---|
31 | margin-bottom: 0; |
---|
32 | |
---|
33 | &:focus { |
---|
34 | z-index: 3; |
---|
35 | } |
---|
36 | } |
---|
37 | } |
---|
38 | |
---|
39 | // Sizing options |
---|
40 | // |
---|
41 | // Remix the default form control sizing classes into new ones for easier |
---|
42 | // manipulation. |
---|
43 | |
---|
44 | .input-group-lg > .form-control, |
---|
45 | .input-group-lg > .input-group-addon, |
---|
46 | .input-group-lg > .input-group-btn > .btn { |
---|
47 | .input-lg(); |
---|
48 | } |
---|
49 | .input-group-sm > .form-control, |
---|
50 | .input-group-sm > .input-group-addon, |
---|
51 | .input-group-sm > .input-group-btn > .btn { |
---|
52 | .input-sm(); |
---|
53 | } |
---|
54 | |
---|
55 | |
---|
56 | // Display as table-cell |
---|
57 | // ------------------------- |
---|
58 | .input-group-addon, |
---|
59 | .input-group-btn, |
---|
60 | .input-group .form-control { |
---|
61 | display: table-cell; |
---|
62 | |
---|
63 | &:not(:first-child):not(:last-child) { |
---|
64 | border-radius: 0; |
---|
65 | } |
---|
66 | } |
---|
67 | // Addon and addon wrapper for buttons |
---|
68 | .input-group-addon, |
---|
69 | .input-group-btn { |
---|
70 | width: 1%; |
---|
71 | white-space: nowrap; |
---|
72 | vertical-align: middle; // Match the inputs |
---|
73 | } |
---|
74 | |
---|
75 | // Text input groups |
---|
76 | // ------------------------- |
---|
77 | .input-group-addon { |
---|
78 | padding: @padding-base-vertical @padding-base-horizontal; |
---|
79 | font-size: @font-size-base; |
---|
80 | font-weight: normal; |
---|
81 | line-height: 1; |
---|
82 | color: @input-color; |
---|
83 | text-align: center; |
---|
84 | background-color: @input-group-addon-bg; |
---|
85 | border: 1px solid @input-group-addon-border-color; |
---|
86 | border-radius: @input-border-radius; |
---|
87 | |
---|
88 | // Sizing |
---|
89 | &.input-sm { |
---|
90 | padding: @padding-small-vertical @padding-small-horizontal; |
---|
91 | font-size: @font-size-small; |
---|
92 | border-radius: @input-border-radius-small; |
---|
93 | } |
---|
94 | &.input-lg { |
---|
95 | padding: @padding-large-vertical @padding-large-horizontal; |
---|
96 | font-size: @font-size-large; |
---|
97 | border-radius: @input-border-radius-large; |
---|
98 | } |
---|
99 | |
---|
100 | // Nuke default margins from checkboxes and radios to vertically center within. |
---|
101 | input[type="radio"], |
---|
102 | input[type="checkbox"] { |
---|
103 | margin-top: 0; |
---|
104 | } |
---|
105 | } |
---|
106 | |
---|
107 | // Reset rounded corners |
---|
108 | .input-group .form-control:first-child, |
---|
109 | .input-group-addon:first-child, |
---|
110 | .input-group-btn:first-child > .btn, |
---|
111 | .input-group-btn:first-child > .btn-group > .btn, |
---|
112 | .input-group-btn:first-child > .dropdown-toggle, |
---|
113 | .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle), |
---|
114 | .input-group-btn:last-child > .btn-group:not(:last-child) > .btn { |
---|
115 | .border-right-radius(0); |
---|
116 | } |
---|
117 | .input-group-addon:first-child { |
---|
118 | border-right: 0; |
---|
119 | } |
---|
120 | .input-group .form-control:last-child, |
---|
121 | .input-group-addon:last-child, |
---|
122 | .input-group-btn:last-child > .btn, |
---|
123 | .input-group-btn:last-child > .btn-group > .btn, |
---|
124 | .input-group-btn:last-child > .dropdown-toggle, |
---|
125 | .input-group-btn:first-child > .btn:not(:first-child), |
---|
126 | .input-group-btn:first-child > .btn-group:not(:first-child) > .btn { |
---|
127 | .border-left-radius(0); |
---|
128 | } |
---|
129 | .input-group-addon:last-child { |
---|
130 | border-left: 0; |
---|
131 | } |
---|
132 | |
---|
133 | // Button input groups |
---|
134 | // ------------------------- |
---|
135 | .input-group-btn { |
---|
136 | position: relative; |
---|
137 | // Jankily prevent input button groups from wrapping with `white-space` and |
---|
138 | // `font-size` in combination with `inline-block` on buttons. |
---|
139 | font-size: 0; |
---|
140 | white-space: nowrap; |
---|
141 | |
---|
142 | // Negative margin for spacing, position for bringing hovered/focused/actived |
---|
143 | // element above the siblings. |
---|
144 | > .btn { |
---|
145 | position: relative; |
---|
146 | + .btn { |
---|
147 | margin-left: -1px; |
---|
148 | } |
---|
149 | // Bring the "active" button to the front |
---|
150 | &:hover, |
---|
151 | &:focus, |
---|
152 | &:active { |
---|
153 | z-index: 2; |
---|
154 | } |
---|
155 | } |
---|
156 | |
---|
157 | // Negative margin to only have a 1px border between the two |
---|
158 | &:first-child { |
---|
159 | > .btn, |
---|
160 | > .btn-group { |
---|
161 | margin-right: -1px; |
---|
162 | } |
---|
163 | } |
---|
164 | &:last-child { |
---|
165 | > .btn, |
---|
166 | > .btn-group { |
---|
167 | z-index: 2; |
---|
168 | margin-left: -1px; |
---|
169 | } |
---|
170 | } |
---|
171 | } |
---|