flipper-ui 0.17.2 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (147) hide show
  1. checksums.yaml +4 -4
  2. data/docs/ui/README.md +15 -5
  3. data/examples/ui/basic.ru +19 -0
  4. data/flipper-ui.gemspec +1 -2
  5. data/lib/flipper/ui.rb +0 -3
  6. data/lib/flipper/ui/action.rb +2 -1
  7. data/lib/flipper/ui/actions/feature.rb +5 -2
  8. data/lib/flipper/ui/actions/features.rb +1 -0
  9. data/lib/flipper/ui/actions/file.rb +1 -1
  10. data/lib/flipper/ui/assets/javascripts/application.coffee +5 -3
  11. data/lib/flipper/ui/configuration.rb +14 -10
  12. data/lib/flipper/ui/decorators/feature.rb +39 -13
  13. data/lib/flipper/ui/public/css/application.css +20 -6493
  14. data/lib/flipper/ui/public/js/application.js +5 -5
  15. data/lib/flipper/ui/util.rb +40 -0
  16. data/lib/flipper/ui/views/add_actor.erb +1 -1
  17. data/lib/flipper/ui/views/add_feature.erb +1 -1
  18. data/lib/flipper/ui/views/add_group.erb +1 -1
  19. data/lib/flipper/ui/views/feature.erb +198 -179
  20. data/lib/flipper/ui/views/features.erb +42 -36
  21. data/lib/flipper/ui/views/layout.erb +4 -14
  22. data/lib/flipper/version.rb +1 -1
  23. data/spec/flipper/ui/actions/actors_gate_spec.rb +0 -4
  24. data/spec/flipper/ui/actions/feature_spec.rb +14 -16
  25. data/spec/flipper/ui/actions/features_spec.rb +1 -5
  26. data/spec/flipper/ui/actions/file_spec.rb +0 -10
  27. data/spec/flipper/ui/actions/groups_gate_spec.rb +0 -6
  28. data/spec/flipper/ui/actions/percentage_of_actors_gate_spec.rb +0 -2
  29. data/spec/flipper/ui/actions/percentage_of_time_gate_spec.rb +0 -2
  30. data/spec/flipper/ui/configuration_spec.rb +21 -34
  31. data/spec/flipper/ui/decorators/feature_spec.rb +0 -30
  32. metadata +5 -121
  33. data/lib/flipper/ui/assets/stylesheets/.DS_Store +0 -0
  34. data/lib/flipper/ui/assets/stylesheets/application.scss +0 -19
  35. data/lib/flipper/ui/assets/stylesheets/bootstrap/_alert.scss +0 -51
  36. data/lib/flipper/ui/assets/stylesheets/bootstrap/_badge.scss +0 -47
  37. data/lib/flipper/ui/assets/stylesheets/bootstrap/_breadcrumb.scss +0 -38
  38. data/lib/flipper/ui/assets/stylesheets/bootstrap/_button-group.scss +0 -166
  39. data/lib/flipper/ui/assets/stylesheets/bootstrap/_buttons.scss +0 -143
  40. data/lib/flipper/ui/assets/stylesheets/bootstrap/_card.scss +0 -270
  41. data/lib/flipper/ui/assets/stylesheets/bootstrap/_carousel.scss +0 -191
  42. data/lib/flipper/ui/assets/stylesheets/bootstrap/_close.scss +0 -34
  43. data/lib/flipper/ui/assets/stylesheets/bootstrap/_code.scss +0 -56
  44. data/lib/flipper/ui/assets/stylesheets/bootstrap/_custom-forms.scss +0 -297
  45. data/lib/flipper/ui/assets/stylesheets/bootstrap/_dropdown.scss +0 -131
  46. data/lib/flipper/ui/assets/stylesheets/bootstrap/_forms.scss +0 -333
  47. data/lib/flipper/ui/assets/stylesheets/bootstrap/_functions.scss +0 -86
  48. data/lib/flipper/ui/assets/stylesheets/bootstrap/_grid.scss +0 -52
  49. data/lib/flipper/ui/assets/stylesheets/bootstrap/_images.scss +0 -42
  50. data/lib/flipper/ui/assets/stylesheets/bootstrap/_input-group.scss +0 -159
  51. data/lib/flipper/ui/assets/stylesheets/bootstrap/_jumbotron.scss +0 -16
  52. data/lib/flipper/ui/assets/stylesheets/bootstrap/_list-group.scss +0 -115
  53. data/lib/flipper/ui/assets/stylesheets/bootstrap/_media.scss +0 -8
  54. data/lib/flipper/ui/assets/stylesheets/bootstrap/_mixins.scss +0 -42
  55. data/lib/flipper/ui/assets/stylesheets/bootstrap/_modal.scss +0 -168
  56. data/lib/flipper/ui/assets/stylesheets/bootstrap/_nav.scss +0 -118
  57. data/lib/flipper/ui/assets/stylesheets/bootstrap/_navbar.scss +0 -311
  58. data/lib/flipper/ui/assets/stylesheets/bootstrap/_pagination.scss +0 -77
  59. data/lib/flipper/ui/assets/stylesheets/bootstrap/_popover.scss +0 -183
  60. data/lib/flipper/ui/assets/stylesheets/bootstrap/_print.scss +0 -124
  61. data/lib/flipper/ui/assets/stylesheets/bootstrap/_progress.scss +0 -33
  62. data/lib/flipper/ui/assets/stylesheets/bootstrap/_reboot.scss +0 -482
  63. data/lib/flipper/ui/assets/stylesheets/bootstrap/_root.scss +0 -19
  64. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tables.scss +0 -180
  65. data/lib/flipper/ui/assets/stylesheets/bootstrap/_tooltip.scss +0 -115
  66. data/lib/flipper/ui/assets/stylesheets/bootstrap/_transitions.scss +0 -36
  67. data/lib/flipper/ui/assets/stylesheets/bootstrap/_type.scss +0 -125
  68. data/lib/flipper/ui/assets/stylesheets/bootstrap/_utilities.scss +0 -14
  69. data/lib/flipper/ui/assets/stylesheets/bootstrap/_variables.scss +0 -894
  70. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-grid.scss +0 -32
  71. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap-reboot.scss +0 -12
  72. data/lib/flipper/ui/assets/stylesheets/bootstrap/bootstrap.scss +0 -42
  73. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_alert.scss +0 -13
  74. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -21
  75. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_badge.scss +0 -12
  76. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_border-radius.scss +0 -35
  77. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_box-shadow.scss +0 -5
  78. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +0 -123
  79. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_buttons.scss +0 -109
  80. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_caret.scss +0 -65
  81. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_clearfix.scss +0 -7
  82. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_float.scss +0 -11
  83. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_forms.scss +0 -137
  84. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_gradients.scss +0 -45
  85. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +0 -67
  86. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_grid.scss +0 -52
  87. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_hover.scss +0 -39
  88. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_image.scss +0 -36
  89. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_list-group.scss +0 -21
  90. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_lists.scss +0 -7
  91. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +0 -10
  92. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_navbar-align.scss +0 -10
  93. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_pagination.scss +0 -22
  94. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_reset-text.scss +0 -17
  95. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_resize.scss +0 -6
  96. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +0 -35
  97. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_size.scss +0 -6
  98. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_table-row.scss +0 -30
  99. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +0 -14
  100. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-hide.scss +0 -9
  101. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_text-truncate.scss +0 -8
  102. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_transition.scss +0 -9
  103. data/lib/flipper/ui/assets/stylesheets/bootstrap/mixins/_visibility.scss +0 -7
  104. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_align.scss +0 -8
  105. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_background.scss +0 -19
  106. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_borders.scss +0 -59
  107. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_clearfix.scss +0 -3
  108. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_display.scss +0 -38
  109. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_embed.scss +0 -52
  110. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_flex.scss +0 -46
  111. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_float.scss +0 -9
  112. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_position.scss +0 -36
  113. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_screenreaders.scss +0 -11
  114. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_sizing.scss +0 -12
  115. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_spacing.scss +0 -51
  116. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_text.scss +0 -52
  117. data/lib/flipper/ui/assets/stylesheets/bootstrap/utilities/_visibility.scss +0 -11
  118. data/lib/flipper/ui/assets/stylesheets/primer/.scss-lint.yml +0 -446
  119. data/lib/flipper/ui/assets/stylesheets/primer/_alerts.scss +0 -106
  120. data/lib/flipper/ui/assets/stylesheets/primer/_avatars.scss +0 -36
  121. data/lib/flipper/ui/assets/stylesheets/primer/_base.scss +0 -40
  122. data/lib/flipper/ui/assets/stylesheets/primer/_blankslate.scss +0 -96
  123. data/lib/flipper/ui/assets/stylesheets/primer/_buttons.scss +0 -404
  124. data/lib/flipper/ui/assets/stylesheets/primer/_counter.scss +0 -10
  125. data/lib/flipper/ui/assets/stylesheets/primer/_filter-list.scss +0 -68
  126. data/lib/flipper/ui/assets/stylesheets/primer/_flex-table.scss +0 -20
  127. data/lib/flipper/ui/assets/stylesheets/primer/_forms.scss +0 -756
  128. data/lib/flipper/ui/assets/stylesheets/primer/_layout.scss +0 -69
  129. data/lib/flipper/ui/assets/stylesheets/primer/_menu.scss +0 -113
  130. data/lib/flipper/ui/assets/stylesheets/primer/_mixins.scss +0 -53
  131. data/lib/flipper/ui/assets/stylesheets/primer/_normalize.scss +0 -425
  132. data/lib/flipper/ui/assets/stylesheets/primer/_states.scss +0 -32
  133. data/lib/flipper/ui/assets/stylesheets/primer/_tabnav.scss +0 -65
  134. data/lib/flipper/ui/assets/stylesheets/primer/_tooltips.scss +0 -255
  135. data/lib/flipper/ui/assets/stylesheets/primer/_truncate.scss +0 -27
  136. data/lib/flipper/ui/assets/stylesheets/primer/_type.scss +0 -92
  137. data/lib/flipper/ui/assets/stylesheets/primer/_utility.scss +0 -73
  138. data/lib/flipper/ui/assets/stylesheets/primer/_variables.scss +0 -34
  139. data/lib/flipper/ui/assets/stylesheets/primer/primer.scss +0 -39
  140. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  141. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.svg +0 -288
  142. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  143. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  144. data/lib/flipper/ui/public/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  145. data/lib/flipper/ui/public/images/remove.png +0 -0
  146. data/lib/flipper/ui/public/octicons/octicons.less +0 -235
  147. data/lib/flipper/ui/public/octicons/sprockets-octicons.scss +0 -232
@@ -1,10 +0,0 @@
1
- .counter {
2
- display: inline-block;
3
- padding: 2px 5px;
4
- font-size: 11px;
5
- font-weight: bold;
6
- line-height: 1;
7
- color: #777;
8
- background-color: #eee;
9
- border-radius: 20px;
10
- }
@@ -1,68 +0,0 @@
1
- // Filters list
2
- //
3
- // A vertical list of filters.
4
- .filter-list {
5
- list-style-type: none;
6
-
7
- &.small .filter-item {
8
- padding: 4px 10px;
9
- margin: 0 0 2px;
10
- font-size: 12px;
11
- }
12
-
13
- &.pjax-active .filter-item {
14
- color: #777;
15
- background-color: transparent;
16
-
17
- &.pjax-active {
18
- color: #fff;
19
- background-color: $brand-blue;
20
- }
21
- }
22
- }
23
-
24
- .filter-item {
25
- position: relative;
26
- display: block;
27
- padding: 8px 10px;
28
- margin-bottom: 5px;
29
- overflow: hidden;
30
- font-size: 14px;
31
- color: #777;
32
- text-decoration: none;
33
- text-overflow: ellipsis;
34
- white-space: nowrap;
35
- cursor: pointer;
36
- border-radius: 3px;
37
-
38
- &:hover {
39
- text-decoration: none;
40
- background-color: #eee;
41
- }
42
-
43
- &.selected {
44
- color: #fff;
45
- background-color: $brand-blue;
46
-
47
- .octicon-remove-close {
48
- float: right;
49
- opacity: 0.8;
50
- }
51
- }
52
-
53
- .count {
54
- float: right;
55
- font-weight: bold;
56
- }
57
-
58
- .bar {
59
- position: absolute;
60
- top: 2px;
61
- right: 0;
62
- bottom: 2px;
63
- z-index: -1;
64
- display: inline-block;
65
- background-color: #f1f1f1;
66
- }
67
- }
68
-
@@ -1,20 +0,0 @@
1
- // Flex table is a module for creating dynamically resizable elements that
2
- // always sit on the same horizontal line (e.g., they never wrap). Using
3
- // tables means it's cross browser friendly.
4
-
5
- .flex-table {
6
- display: table;
7
- }
8
-
9
- // Place this on every "cell"
10
- .flex-table-item {
11
- display: table-cell;
12
- width: 1%;
13
- white-space: nowrap;
14
- vertical-align: middle;
15
- }
16
-
17
- // Place this on the largest or most important "cell"
18
- .flex-table-item-primary {
19
- width: 99%;
20
- }
@@ -1,756 +0,0 @@
1
- // Base form controls
2
- //
3
- // Overrides for common inputs for easier styling.
4
-
5
- fieldset {
6
- padding: 0;
7
- margin: 0;
8
- border: 0;
9
- }
10
-
11
- label {
12
- font-size: 13px;
13
- font-weight: bold;
14
- }
15
-
16
- .form-control,
17
- input[type="text"],
18
- input[type="password"],
19
- input[type="email"],
20
- input[type="number"],
21
- input[type="tel"],
22
- input[type="url"],
23
- textarea {
24
- min-height: 34px;
25
- padding: 7px 8px;
26
- font-size: 13px;
27
- color: #333;
28
- vertical-align: middle;
29
- background-color: #fff;
30
- background-repeat: no-repeat; // Repeat and position set for form states (success, error, etc)
31
- background-position: right center;
32
- border: 1px solid #ccc;
33
- border-radius: 3px;
34
- outline: none;
35
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075);
36
-
37
- &.focus,
38
- &:focus {
39
- border-color: #51a7e8;
40
- box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(81, 167, 232, 0.5);
41
- }
42
- }
43
-
44
- // Inputs with contrast for easy light gray backgrounds against white.
45
- // input.class is needed here to increase specificity over input[…]
46
- input.input-contrast,
47
- .input-contrast {
48
- background-color: #fafafa;
49
-
50
- &:focus { background-color: #fff; }
51
- }
52
-
53
- // Custom styling for HTML5 validation bubbles (WebKit only)
54
- ::-webkit-input-placeholder,
55
- :-moz-placeholder {
56
- color: #aaa;
57
- }
58
-
59
- ::-webkit-validation-bubble-message {
60
- font-size: 12px;
61
- color: #fff;
62
- background: #9c2400;
63
- border: 0;
64
- border-radius: 3px;
65
- -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
66
- }
67
-
68
- input::-webkit-validation-bubble-icon {
69
- display: none;
70
- }
71
-
72
- ::-webkit-validation-bubble-arrow {
73
- background-color: #9c2400;
74
- border: solid 1px #9c2400;
75
- -webkit-box-shadow: 1px 1px 1px rgba(0, 0, 0, 0.1);
76
- }
77
-
78
- // Mini inputs, to match .minibutton
79
- input.input-mini {
80
- min-height: 26px;
81
- padding-top: 4px;
82
- padding-bottom: 4px;
83
- font-size: 12px;
84
- }
85
-
86
- // Large inputs
87
- input.input-large {
88
- padding: 6px 10px;
89
- font-size: 16px;
90
- }
91
-
92
- // Full-width inputs
93
- .input-block {
94
- display: block;
95
- width: 100%;
96
- }
97
-
98
- // Inputs with monospace text
99
- .input-monospace {
100
- font-family: $mono-font;
101
- }
102
-
103
- // Form groups
104
- //
105
- // Typical form groups - `<dl.form>` with a `<dt>` containing the label and
106
- // `<dd> containing the form elements.
107
- dl.form {
108
- margin: 15px 0;
109
-
110
- input[type="text"],
111
- input[type="password"],
112
- input[type="email"],
113
- input[type="url"],
114
- textarea {
115
- background-color: #fafafa;
116
-
117
- &:focus {
118
- background-color: #fff;
119
- }
120
- }
121
-
122
- // The Label
123
- > dt {
124
- margin: 0 0 6px;
125
-
126
- label {
127
- position: relative;
128
- }
129
- }
130
-
131
- &.flattened > dt {
132
- float: left;
133
- margin: 0;
134
- line-height: 32px;
135
- }
136
-
137
- &.flattened > dd {
138
- line-height: 32px;
139
- }
140
-
141
- //
142
- // Form Elements
143
- //
144
-
145
- > dd {
146
- // Text fields
147
- input[type="text"],
148
- input[type="password"],
149
- input[type="email"],
150
- input[type="url"] {
151
- width: 440px;
152
- max-width: 100%;
153
- margin-right: 5px;
154
- background-position-x: 98%;
155
- }
156
-
157
- input {
158
- &.shorter { width: 130px; }
159
-
160
- &.short { width: 250px; }
161
-
162
- &.long { width: 100%; }
163
- }
164
-
165
- // Textarea
166
- textarea {
167
- width: 100%;
168
- height: 200px;
169
- min-height: 200px;
170
-
171
- &.short {
172
- height: 50px;
173
- min-height: 50px;
174
- }
175
- }
176
-
177
- h4 {
178
- margin: 4px 0 0;
179
-
180
- &.is-error { color: $brand-red; }
181
-
182
- &.is-success { color: $brand-green; }
183
- }
184
-
185
- h4 + p.note {
186
- margin-top: 0;
187
- }
188
-
189
- }
190
-
191
- //
192
- // Variants
193
- //
194
-
195
- &.required {
196
- > dt > label:after {
197
- padding-left: 5px;
198
- color: #9f1006;
199
- content: "*";
200
- }
201
- }
202
- }
203
-
204
- .note {
205
- min-height: 17px;
206
- margin: 4px 0 2px;
207
- font-size: 12px;
208
- color: #777;
209
-
210
- .spinner {
211
- margin-right: 3px;
212
- vertical-align: middle;
213
- }
214
- }
215
-
216
-
217
- // Checkboxes and Radiobuttons
218
- //
219
- // For checkboxes and radio button selections.
220
- .form-checkbox {
221
- padding-left: 20px;
222
- margin: 15px 0;
223
- vertical-align: middle;
224
-
225
- label {
226
-
227
- em.highlight {
228
- position: relative;
229
- left: -4px;
230
- padding: 2px 4px;
231
- font-style: normal;
232
- background: #fffbdc;
233
- border-radius: 3px;
234
- }
235
- }
236
-
237
- input[type=checkbox],
238
- input[type=radio] {
239
- float: left;
240
- margin: 2px 0 0 -20px;
241
- vertical-align: middle;
242
- }
243
-
244
- .note {
245
- display: block;
246
- margin: 0;
247
- font-size: 12px;
248
- font-weight: normal;
249
- color: #666;
250
- }
251
- }
252
-
253
-
254
- // Form AJAX states
255
- //
256
- // Form fields that need feedback for AJAX loading, success
257
- // states and errored states.
258
- dl.form {
259
- .success,
260
- .error,
261
- .indicator {
262
- display: none;
263
- font-size: 12px;
264
- font-weight: bold;
265
- }
266
-
267
- &.loading {
268
- opacity: 0.5;
269
-
270
- .indicator {
271
- display: inline;
272
- }
273
-
274
- .spinner {
275
- display: inline-block;
276
- vertical-align: middle;
277
- }
278
- }
279
-
280
- &.successful {
281
- .success {
282
- display: inline;
283
- color: #390;
284
- }
285
- }
286
-
287
- &.errored {
288
- > dt label {
289
- color: #900;
290
- }
291
-
292
- // General text next to the field
293
- .error {
294
- display: inline;
295
- color: #900;
296
- }
297
-
298
- // Specific error explanations from the server
299
- dd.error,
300
- dd.warning {
301
- display: inline-block;
302
- padding: 5px;
303
- font-size: 11px;
304
- color: #494620;
305
- background: #f7ea57;
306
- border: 1px solid #c0b536;
307
- border-top-color: #fff;
308
- border-bottom-right-radius: 3px;
309
- border-bottom-left-radius: 3px;
310
- }
311
- }
312
-
313
- &.warn {
314
- // General text next to the field
315
- .warning {
316
- display: inline;
317
- color: #900;
318
- }
319
-
320
- // Specific warning explanations from the server
321
- dd.warning {
322
- display: inline-block;
323
- padding: 5px;
324
- font-size: 11px;
325
- color: #494620;
326
- background: #f7ea57;
327
- border: 1px solid #c0b536;
328
- border-top-color: #fff;
329
- border-bottom-right-radius: 3px;
330
- border-bottom-left-radius: 3px;
331
- }
332
- }
333
-
334
- .form-note {
335
- display: inline-block;
336
- padding: 5px;
337
- margin-top: -1px;
338
- font-size: 11px;
339
- color: #494620;
340
- background: #f7ea57;
341
- border: 1px solid #c0b536;
342
- border-top-color: #fff;
343
- border-bottom-right-radius: 3px;
344
- border-bottom-left-radius: 3px;
345
- }
346
- }
347
-
348
-
349
- // Field groups
350
- //
351
- // Wrap field groups in `<div.hfields>` to lay them out horizontally - great for
352
- // the top of pages with autosave.
353
- .hfields {
354
- margin: 15px 0;
355
- @include clearfix;
356
-
357
- dl.form {
358
- float: left;
359
- margin: 0 30px 0 0;
360
-
361
- & > dt label {
362
- display: inline-block;
363
- margin: 5px 0 0;
364
- color: #666;
365
-
366
- img {
367
- position: relative;
368
- top: -2px;
369
- }
370
- }
371
- }
372
-
373
- .btn {
374
- float: left;
375
- margin: 28px 25px 0 -20px;
376
- }
377
-
378
- select { margin-top: 5px; }
379
- }
380
-
381
- // IE 9
382
- html.no-dnd-uploads {
383
- .drag-and-drop {
384
- min-height: 32px;
385
-
386
- .default {
387
- display: none;
388
- }
389
- }
390
-
391
- .upload-enabled textarea {
392
- border-bottom: 1px solid #ddd;
393
- }
394
- }
395
-
396
- .drag-and-drop {
397
- padding: 7px 10px;
398
- margin: 0;
399
- font-size: 13px;
400
- line-height: 16px;
401
- color: #aaa;
402
- background-color: #fafafa;
403
- border: 1px solid #ccc;
404
- border-top: 0;
405
- border-bottom-right-radius: 3px;
406
- border-bottom-left-radius: 3px;
407
-
408
- .default,
409
- .loading,
410
- .error {
411
- display: none;
412
- }
413
-
414
- .error {
415
- color: $brand-red;
416
- }
417
-
418
- // Spinner
419
- img {
420
- vertical-align: top;
421
- }
422
- }
423
-
424
- .is-default .drag-and-drop .default {
425
- display: inline-block;
426
- }
427
-
428
- .is-uploading .drag-and-drop .loading {
429
- display: inline-block;
430
- }
431
-
432
- .is-bad-file .drag-and-drop .bad-file {
433
- display: inline-block;
434
- }
435
-
436
- .is-too-big .drag-and-drop .too-big {
437
- display: inline-block;
438
- }
439
-
440
- .is-empty .drag-and-drop .empty {
441
- display: inline-block;
442
- }
443
-
444
- .is-bad-browser .drag-and-drop .bad-browser {
445
- display: inline-block;
446
- }
447
-
448
- .drag-and-drop-error-info {
449
- font-weight: normal;
450
- color: #aaa;
451
-
452
- a {
453
- color: $brand-blue;
454
- }
455
- }
456
-
457
- .is-failed .drag-and-drop .failed-request {
458
- display: inline-block;
459
- }
460
-
461
- .manual-file-chooser {
462
- position: absolute;
463
- width: 240px;
464
- padding: 5px;
465
- margin-left: -80px;
466
- cursor: pointer;
467
- opacity: 0.0001;
468
- }
469
-
470
- .manual-file-chooser:hover + .manual-file-chooser-text {
471
- text-decoration: underline;
472
- }
473
-
474
- .btn {
475
- // align manual-file-chooser inside a button
476
- .manual-file-chooser {
477
- top: 0;
478
- padding: 0;
479
- line-height: 34px;
480
- }
481
- }
482
-
483
- // Focused Textarea styles
484
- .upload-enabled textarea {
485
- display: block;
486
- border-bottom: 1px dashed #ddd;
487
- border-bottom-right-radius: 0;
488
- border-bottom-left-radius: 0;
489
- }
490
-
491
- .focused .drag-and-drop {
492
- @extend input[type="text"]:focus;
493
- box-shadow: rgba(#51a7e8, 0.5) 0 0 3px;
494
- }
495
-
496
- // Dropping a file on top
497
- .dragover textarea,
498
- .dragover .drag-and-drop {
499
- box-shadow: rgba(#c9ff00, 1) 0 0 3px;
500
- }
501
-
502
-
503
- // Form style with a write and a preview tab
504
- .previewable-comment-form {
505
- position: relative;
506
-
507
- .tabnav {
508
- position: relative;
509
- padding: 10px 10px 0;
510
- }
511
-
512
- .comment {
513
- border: 1px solid #cacaca;
514
- }
515
-
516
- .comment-header .comment-header-actions { display: none; }
517
-
518
- .comment-form-error { margin-bottom: 10px; }
519
-
520
- .write-content,
521
- .preview-content {
522
- display: none;
523
- padding: 0 10px 10px;
524
- }
525
-
526
- &.write-selected .write-content,
527
- &.preview-selected .preview-content {
528
- display: block;
529
- }
530
-
531
- textarea {
532
- display: block;
533
- width: 100%;
534
- min-height: 100px;
535
- max-height: 500px;
536
- padding: 10px;
537
- resize: vertical;
538
-
539
- &.fullscreen-contents:focus {
540
- border: 0;
541
- box-shadow: none;
542
- }
543
- }
544
- }
545
-
546
-
547
- // A two column form, with a .main and a .sidebar column
548
- //
549
- // Override some `.timeline-comment-wrapper` defaults.
550
- // The `div` is needed to be more specific than the other class.
551
- div.composer {
552
- margin-top: 0;
553
- border: 0;
554
- }
555
-
556
- // Override the previewable comment form defaults
557
- .composer .comment-form-textarea {
558
- height: 200px;
559
- min-height: 200px;
560
- }
561
-
562
- .composer-infobar {
563
- height: 35px;
564
- padding: 0 10px;
565
- margin-bottom: 10px;
566
- border-bottom: 1px solid #eee;
567
- }
568
-
569
- .composer .tabnav { margin: 0 0 10px; }
570
-
571
- .infobar-widget {
572
-
573
- &.milestone {
574
- position: relative; // requires so that the `right: 0;` below works
575
- float: right;
576
-
577
- .select-menu-modal-holder { right: 0; }
578
- }
579
-
580
- &.assignee {
581
- float: left;
582
-
583
- .css-truncate-target {
584
- max-width: 110px;
585
- }
586
- }
587
-
588
- .text,
589
- .avatar,
590
- .select-menu {
591
- display: inline-block;
592
- vertical-align: top;
593
- }
594
-
595
- .text {
596
- margin-top: 3px;
597
-
598
- a {
599
- font-weight: bold;
600
- color: #333;
601
- }
602
- }
603
-
604
- .progress-bar {
605
- width: 200px;
606
- overflow: hidden; // round the corners if 100%
607
- line-height: 18px;
608
- }
609
- }
610
-
611
-
612
- // Hide the up/down buttons in <input type="number"> in the login form, the
613
- // input is used for two-factor auth codes, type="number" makes it more usable
614
- // on phones
615
- input::-webkit-outer-spin-button,
616
- input::-webkit-inner-spin-button {
617
- margin: 0;
618
- -webkit-appearance: none;
619
- }
620
-
621
-
622
- // Input groups
623
- .input-group {
624
- display: table;
625
-
626
- input {
627
- position: relative;
628
- width: 100%;
629
-
630
- &:focus {
631
- z-index: 2;
632
- }
633
- }
634
-
635
- input[type="text"] + .btn {
636
- margin-left: 0;
637
- }
638
-
639
- // For when you want the input group to behave like inline-block.
640
- &.inline {
641
- display: inline-table;
642
- }
643
- }
644
-
645
- .input-group input,
646
- .input-group-button {
647
- display: table-cell;
648
- }
649
-
650
- .input-group-button {
651
- width: 1%;
652
- vertical-align: middle; // Match the inputs
653
- }
654
-
655
- .input-group input:first-child,
656
- .input-group-button:first-child .btn {
657
- border-top-right-radius: 0;
658
- border-bottom-right-radius: 0;
659
- }
660
-
661
- .input-group-button:first-child .btn {
662
- margin-right: -1px;
663
- }
664
-
665
- .input-group input:last-child,
666
- .input-group-button:last-child .btn {
667
- border-top-left-radius: 0;
668
- border-bottom-left-radius: 0;
669
- }
670
-
671
- .input-group-button:last-child .btn {
672
- margin-left: -1px;
673
- }
674
-
675
- h2.account {
676
- margin: 15px 0 0;
677
- font-size: 18px;
678
- font-weight: normal;
679
- color: #666;
680
- }
681
-
682
- p.explain {
683
- position: relative;
684
- font-size: 12px;
685
- color: #666;
686
-
687
- strong {
688
- color: #333;
689
- }
690
-
691
- .octicon {
692
- margin-right: 5px;
693
- color: #bbb;
694
- }
695
-
696
- .minibutton {
697
- top: -4px;
698
- float: right;
699
- }
700
- }
701
-
702
- .options-content p.explain {
703
- padding: 10px 10px 0;
704
- margin-top: 0;
705
- border-top: 1px solid #ddd;
706
- }
707
-
708
- .form-actions {
709
- @include clearfix;
710
-
711
- .btn {
712
- float: right;
713
-
714
- + .btn {
715
- margin-right: 5px;
716
- }
717
- }
718
- }
719
-
720
- .form-warning {
721
- padding: 8px 10px;
722
- margin: 10px 0;
723
- font-size: 14px;
724
- color: #333;
725
- background: #ffffe2;
726
- border: 1px solid #e7e4c2;
727
- border-radius: 4px;
728
-
729
- p {
730
- margin: 0;
731
- line-height: 1.5;
732
- }
733
-
734
- strong { color: #000; }
735
-
736
- a { font-weight: bold; }
737
- }
738
-
739
-
740
- // Inline verification
741
- //
742
- // Used for example when autosaving checkboxes in settings.
743
- .status-indicator {
744
- @include icon-bootstrap(16px);
745
- margin-left: 5px;
746
- }
747
-
748
- .status-indicator-success:before {
749
- color: $brand-green;
750
- content: "\f03a"; // octicon-check
751
- }
752
-
753
- .status-indicator-failed:before {
754
- color: $brand-red;
755
- content: "\f02d"; // octicon-x
756
- }