adhoq 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +22 -0
  3. data/README.md +80 -0
  4. data/Rakefile +28 -0
  5. data/app/assets/javascripts/adhoq/application.js +19 -0
  6. data/app/assets/javascripts/adhoq/bootstrap-sprockets.js +12 -0
  7. data/app/assets/javascripts/adhoq/bootstrap.js +2107 -0
  8. data/app/assets/javascripts/adhoq/bootstrap/affix.js +142 -0
  9. data/app/assets/javascripts/adhoq/bootstrap/alert.js +92 -0
  10. data/app/assets/javascripts/adhoq/bootstrap/button.js +110 -0
  11. data/app/assets/javascripts/adhoq/bootstrap/carousel.js +223 -0
  12. data/app/assets/javascripts/adhoq/bootstrap/collapse.js +170 -0
  13. data/app/assets/javascripts/adhoq/bootstrap/dropdown.js +151 -0
  14. data/app/assets/javascripts/adhoq/bootstrap/modal.js +280 -0
  15. data/app/assets/javascripts/adhoq/bootstrap/popover.js +113 -0
  16. data/app/assets/javascripts/adhoq/bootstrap/scrollspy.js +170 -0
  17. data/app/assets/javascripts/adhoq/bootstrap/tab.js +128 -0
  18. data/app/assets/javascripts/adhoq/bootstrap/tooltip.js +457 -0
  19. data/app/assets/javascripts/adhoq/bootstrap/transition.js +59 -0
  20. data/app/assets/javascripts/adhoq/previewer.js.coffee +25 -0
  21. data/app/assets/stylesheets/adhoq/_bootstrap-compass.scss +7 -0
  22. data/app/assets/stylesheets/adhoq/_bootstrap-mincer.scss +17 -0
  23. data/app/assets/stylesheets/adhoq/_bootstrap-sprockets.scss +7 -0
  24. data/app/assets/stylesheets/adhoq/adhoq.css.sass +57 -0
  25. data/app/assets/stylesheets/adhoq/application.css +16 -0
  26. data/app/assets/stylesheets/adhoq/bootstrap.scss +50 -0
  27. data/app/assets/stylesheets/adhoq/bootstrap/_alerts.scss +68 -0
  28. data/app/assets/stylesheets/adhoq/bootstrap/_badges.scss +57 -0
  29. data/app/assets/stylesheets/adhoq/bootstrap/_breadcrumbs.scss +26 -0
  30. data/app/assets/stylesheets/adhoq/bootstrap/_button-groups.scss +240 -0
  31. data/app/assets/stylesheets/adhoq/bootstrap/_buttons.scss +157 -0
  32. data/app/assets/stylesheets/adhoq/bootstrap/_carousel.scss +243 -0
  33. data/app/assets/stylesheets/adhoq/bootstrap/_close.scss +35 -0
  34. data/app/assets/stylesheets/adhoq/bootstrap/_code.scss +68 -0
  35. data/app/assets/stylesheets/adhoq/bootstrap/_component-animations.scss +35 -0
  36. data/app/assets/stylesheets/adhoq/bootstrap/_dropdowns.scss +215 -0
  37. data/app/assets/stylesheets/adhoq/bootstrap/_forms.scss +538 -0
  38. data/app/assets/stylesheets/adhoq/bootstrap/_glyphicons.scss +237 -0
  39. data/app/assets/stylesheets/adhoq/bootstrap/_grid.scss +84 -0
  40. data/app/assets/stylesheets/adhoq/bootstrap/_input-groups.scss +166 -0
  41. data/app/assets/stylesheets/adhoq/bootstrap/_jumbotron.scss +48 -0
  42. data/app/assets/stylesheets/adhoq/bootstrap/_labels.scss +66 -0
  43. data/app/assets/stylesheets/adhoq/bootstrap/_list-group.scss +131 -0
  44. data/app/assets/stylesheets/adhoq/bootstrap/_media.scss +56 -0
  45. data/app/assets/stylesheets/adhoq/bootstrap/_mixins.scss +39 -0
  46. data/app/assets/stylesheets/adhoq/bootstrap/_modals.scss +150 -0
  47. data/app/assets/stylesheets/adhoq/bootstrap/_navbar.scss +659 -0
  48. data/app/assets/stylesheets/adhoq/bootstrap/_navs.scss +242 -0
  49. data/app/assets/stylesheets/adhoq/bootstrap/_normalize.scss +425 -0
  50. data/app/assets/stylesheets/adhoq/bootstrap/_pager.scss +55 -0
  51. data/app/assets/stylesheets/adhoq/bootstrap/_pagination.scss +88 -0
  52. data/app/assets/stylesheets/adhoq/bootstrap/_panels.scss +243 -0
  53. data/app/assets/stylesheets/adhoq/bootstrap/_popovers.scss +133 -0
  54. data/app/assets/stylesheets/adhoq/bootstrap/_print.scss +101 -0
  55. data/app/assets/stylesheets/adhoq/bootstrap/_progress-bars.scss +105 -0
  56. data/app/assets/stylesheets/adhoq/bootstrap/_responsive-embed.scss +34 -0
  57. data/app/assets/stylesheets/adhoq/bootstrap/_responsive-utilities.scss +174 -0
  58. data/app/assets/stylesheets/adhoq/bootstrap/_scaffolding.scss +150 -0
  59. data/app/assets/stylesheets/adhoq/bootstrap/_tables.scss +233 -0
  60. data/app/assets/stylesheets/adhoq/bootstrap/_theme.scss +258 -0
  61. data/app/assets/stylesheets/adhoq/bootstrap/_thumbnails.scss +38 -0
  62. data/app/assets/stylesheets/adhoq/bootstrap/_tooltip.scss +95 -0
  63. data/app/assets/stylesheets/adhoq/bootstrap/_type.scss +304 -0
  64. data/app/assets/stylesheets/adhoq/bootstrap/_utilities.scss +57 -0
  65. data/app/assets/stylesheets/adhoq/bootstrap/_variables.scss +850 -0
  66. data/app/assets/stylesheets/adhoq/bootstrap/_wells.scss +29 -0
  67. data/app/assets/stylesheets/adhoq/bootstrap/bootstrap.scss +50 -0
  68. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_alerts.scss +14 -0
  69. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_background-variant.scss +11 -0
  70. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_border-radius.scss +18 -0
  71. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_buttons.scss +50 -0
  72. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_center-block.scss +7 -0
  73. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_clearfix.scss +22 -0
  74. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_forms.scss +84 -0
  75. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_gradients.scss +58 -0
  76. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_grid-framework.scss +81 -0
  77. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_grid.scss +122 -0
  78. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_hide-text.scss +21 -0
  79. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_image.scss +34 -0
  80. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_labels.scss +12 -0
  81. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_list-group.scss +31 -0
  82. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_nav-divider.scss +10 -0
  83. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  84. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_opacity.scss +8 -0
  85. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_pagination.scss +23 -0
  86. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_panels.scss +24 -0
  87. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_progress-bar.scss +10 -0
  88. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_reset-filter.scss +8 -0
  89. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_resize.scss +6 -0
  90. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_responsive-visibility.scss +21 -0
  91. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_size.scss +10 -0
  92. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_tab-focus.scss +9 -0
  93. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_table-row.scss +28 -0
  94. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_text-emphasis.scss +11 -0
  95. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_text-overflow.scss +8 -0
  96. data/app/assets/stylesheets/adhoq/bootstrap/mixins/_vendor-prefixes.scss +219 -0
  97. data/app/controllers/adhoq/application_controller.rb +5 -0
  98. data/app/controllers/adhoq/authorization_methods.rb +36 -0
  99. data/app/controllers/adhoq/executions_controller.rb +25 -0
  100. data/app/controllers/adhoq/previews_controller.rb +13 -0
  101. data/app/controllers/adhoq/queries_controller.rb +38 -0
  102. data/app/helpers/adhoq/application_helper.rb +11 -0
  103. data/app/models/adhoq/execution.rb +29 -0
  104. data/app/models/adhoq/query.rb +14 -0
  105. data/app/models/adhoq/report.rb +42 -0
  106. data/app/models/adhoq/time_based_orders.rb +9 -0
  107. data/app/views/adhoq/application/_global_nav.html.slim +11 -0
  108. data/app/views/adhoq/application/_sidebar_queries_index.html.slim +10 -0
  109. data/app/views/adhoq/previews/create.html.slim +12 -0
  110. data/app/views/adhoq/previews/statement_invalid.html.slim +5 -0
  111. data/app/views/adhoq/queries/_form.html.slim +38 -0
  112. data/app/views/adhoq/queries/_query.html.slim +43 -0
  113. data/app/views/adhoq/queries/edit.html.slim +2 -0
  114. data/app/views/adhoq/queries/index.html.slim +1 -0
  115. data/app/views/adhoq/queries/new.html.slim +2 -0
  116. data/app/views/adhoq/queries/show.html.slim +1 -0
  117. data/app/views/layouts/adhoq/application.html.slim +18 -0
  118. data/config/routes.rb +9 -0
  119. data/db/migrate/20141003095645_create_adhoq_queries.rb +11 -0
  120. data/db/migrate/20141006014750_create_adhoq_executions.rb +13 -0
  121. data/db/migrate/20141007052308_create_adhoq_reports.rb +12 -0
  122. data/lib/adhoq.rb +13 -0
  123. data/lib/adhoq/configuration.rb +21 -0
  124. data/lib/adhoq/engine.rb +15 -0
  125. data/lib/adhoq/error.rb +4 -0
  126. data/lib/adhoq/executor.rb +27 -0
  127. data/lib/adhoq/global_variable.rb +34 -0
  128. data/lib/adhoq/reporter.rb +5 -0
  129. data/lib/adhoq/reporter/xlsx.rb +32 -0
  130. data/lib/adhoq/result.rb +18 -0
  131. data/lib/adhoq/storage.rb +5 -0
  132. data/lib/adhoq/storage/local_file.rb +45 -0
  133. data/lib/adhoq/version.rb +3 -0
  134. data/lib/tasks/adhoq_tasks.rake +4 -0
  135. data/spec/adhoq/executor_spec.rb +11 -0
  136. data/spec/adhoq/storage_spec.rb +19 -0
  137. data/spec/factories/adhoq_queries.rb +29 -0
  138. data/spec/models/adhoq/execution_spec.rb +4 -0
  139. data/spec/models/adhoq/query_spec.rb +4 -0
  140. data/spec/models/adhoq/report_spec.rb +25 -0
  141. data/spec/spec_helper.rb +36 -0
  142. data/spec/support/have_values_in_xlsx_sheet_matcher.rb +20 -0
  143. metadata +375 -0
@@ -0,0 +1,38 @@
1
+ //
2
+ // Thumbnails
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Mixin and adjust the regular image class
7
+ .thumbnail {
8
+ display: block;
9
+ padding: $thumbnail-padding;
10
+ margin-bottom: $line-height-computed;
11
+ line-height: $line-height-base;
12
+ background-color: $thumbnail-bg;
13
+ border: 1px solid $thumbnail-border;
14
+ border-radius: $thumbnail-border-radius;
15
+ @include transition(all .2s ease-in-out);
16
+
17
+ > img,
18
+ a > img {
19
+ @include img-responsive();
20
+ margin-left: auto;
21
+ margin-right: auto;
22
+ }
23
+
24
+ // [converter] extracted a&:hover, a&:focus, a&.active to a.thumbnail:hover, a.thumbnail:focus, a.thumbnail.active
25
+
26
+ // Image captions
27
+ .caption {
28
+ padding: $thumbnail-caption-padding;
29
+ color: $thumbnail-caption-color;
30
+ }
31
+ }
32
+
33
+ // Add a hover state for linked versions only
34
+ a.thumbnail:hover,
35
+ a.thumbnail:focus,
36
+ a.thumbnail.active {
37
+ border-color: $link-color;
38
+ }
@@ -0,0 +1,95 @@
1
+ //
2
+ // Tooltips
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Base class
7
+ .tooltip {
8
+ position: absolute;
9
+ z-index: $zindex-tooltip;
10
+ display: block;
11
+ visibility: visible;
12
+ font-size: $font-size-small;
13
+ line-height: 1.4;
14
+ @include opacity(0);
15
+
16
+ &.in { @include opacity($tooltip-opacity); }
17
+ &.top { margin-top: -3px; padding: $tooltip-arrow-width 0; }
18
+ &.right { margin-left: 3px; padding: 0 $tooltip-arrow-width; }
19
+ &.bottom { margin-top: 3px; padding: $tooltip-arrow-width 0; }
20
+ &.left { margin-left: -3px; padding: 0 $tooltip-arrow-width; }
21
+ }
22
+
23
+ // Wrapper for the tooltip content
24
+ .tooltip-inner {
25
+ max-width: $tooltip-max-width;
26
+ padding: 3px 8px;
27
+ color: $tooltip-color;
28
+ text-align: center;
29
+ text-decoration: none;
30
+ background-color: $tooltip-bg;
31
+ border-radius: $border-radius-base;
32
+ }
33
+
34
+ // Arrows
35
+ .tooltip-arrow {
36
+ position: absolute;
37
+ width: 0;
38
+ height: 0;
39
+ border-color: transparent;
40
+ border-style: solid;
41
+ }
42
+ .tooltip {
43
+ &.top .tooltip-arrow {
44
+ bottom: 0;
45
+ left: 50%;
46
+ margin-left: -$tooltip-arrow-width;
47
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
48
+ border-top-color: $tooltip-arrow-color;
49
+ }
50
+ &.top-left .tooltip-arrow {
51
+ bottom: 0;
52
+ left: $tooltip-arrow-width;
53
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
54
+ border-top-color: $tooltip-arrow-color;
55
+ }
56
+ &.top-right .tooltip-arrow {
57
+ bottom: 0;
58
+ right: $tooltip-arrow-width;
59
+ border-width: $tooltip-arrow-width $tooltip-arrow-width 0;
60
+ border-top-color: $tooltip-arrow-color;
61
+ }
62
+ &.right .tooltip-arrow {
63
+ top: 50%;
64
+ left: 0;
65
+ margin-top: -$tooltip-arrow-width;
66
+ border-width: $tooltip-arrow-width $tooltip-arrow-width $tooltip-arrow-width 0;
67
+ border-right-color: $tooltip-arrow-color;
68
+ }
69
+ &.left .tooltip-arrow {
70
+ top: 50%;
71
+ right: 0;
72
+ margin-top: -$tooltip-arrow-width;
73
+ border-width: $tooltip-arrow-width 0 $tooltip-arrow-width $tooltip-arrow-width;
74
+ border-left-color: $tooltip-arrow-color;
75
+ }
76
+ &.bottom .tooltip-arrow {
77
+ top: 0;
78
+ left: 50%;
79
+ margin-left: -$tooltip-arrow-width;
80
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
81
+ border-bottom-color: $tooltip-arrow-color;
82
+ }
83
+ &.bottom-left .tooltip-arrow {
84
+ top: 0;
85
+ left: $tooltip-arrow-width;
86
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
87
+ border-bottom-color: $tooltip-arrow-color;
88
+ }
89
+ &.bottom-right .tooltip-arrow {
90
+ top: 0;
91
+ right: $tooltip-arrow-width;
92
+ border-width: 0 $tooltip-arrow-width $tooltip-arrow-width;
93
+ border-bottom-color: $tooltip-arrow-color;
94
+ }
95
+ }
@@ -0,0 +1,304 @@
1
+ //
2
+ // Typography
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Headings
7
+ // -------------------------
8
+
9
+ h1, h2, h3, h4, h5, h6,
10
+ .h1, .h2, .h3, .h4, .h5, .h6 {
11
+ font-family: $headings-font-family;
12
+ font-weight: $headings-font-weight;
13
+ line-height: $headings-line-height;
14
+ color: $headings-color;
15
+
16
+ small,
17
+ .small {
18
+ font-weight: normal;
19
+ line-height: 1;
20
+ color: $headings-small-color;
21
+ }
22
+ }
23
+
24
+ h1, .h1,
25
+ h2, .h2,
26
+ h3, .h3 {
27
+ margin-top: $line-height-computed;
28
+ margin-bottom: ($line-height-computed / 2);
29
+
30
+ small,
31
+ .small {
32
+ font-size: 65%;
33
+ }
34
+ }
35
+ h4, .h4,
36
+ h5, .h5,
37
+ h6, .h6 {
38
+ margin-top: ($line-height-computed / 2);
39
+ margin-bottom: ($line-height-computed / 2);
40
+
41
+ small,
42
+ .small {
43
+ font-size: 75%;
44
+ }
45
+ }
46
+
47
+ h1, .h1 { font-size: $font-size-h1; }
48
+ h2, .h2 { font-size: $font-size-h2; }
49
+ h3, .h3 { font-size: $font-size-h3; }
50
+ h4, .h4 { font-size: $font-size-h4; }
51
+ h5, .h5 { font-size: $font-size-h5; }
52
+ h6, .h6 { font-size: $font-size-h6; }
53
+
54
+
55
+ // Body text
56
+ // -------------------------
57
+
58
+ p {
59
+ margin: 0 0 ($line-height-computed / 2);
60
+ }
61
+
62
+ .lead {
63
+ margin-bottom: $line-height-computed;
64
+ font-size: floor(($font-size-base * 1.15));
65
+ font-weight: 300;
66
+ line-height: 1.4;
67
+
68
+ @media (min-width: $screen-sm-min) {
69
+ font-size: ($font-size-base * 1.5);
70
+ }
71
+ }
72
+
73
+
74
+ // Emphasis & misc
75
+ // -------------------------
76
+
77
+ // Ex: (12px small font / 14px base font) * 100% = about 85%
78
+ small,
79
+ .small {
80
+ font-size: floor((100% * $font-size-small / $font-size-base));
81
+ }
82
+
83
+ // Undo browser default styling
84
+ cite {
85
+ font-style: normal;
86
+ }
87
+
88
+ mark,
89
+ .mark {
90
+ background-color: $state-warning-bg;
91
+ padding: .2em;
92
+ }
93
+
94
+ // Alignment
95
+ .text-left { text-align: left; }
96
+ .text-right { text-align: right; }
97
+ .text-center { text-align: center; }
98
+ .text-justify { text-align: justify; }
99
+ .text-nowrap { white-space: nowrap; }
100
+
101
+ // Transformation
102
+ .text-lowercase { text-transform: lowercase; }
103
+ .text-uppercase { text-transform: uppercase; }
104
+ .text-capitalize { text-transform: capitalize; }
105
+
106
+ // Contextual colors
107
+ .text-muted {
108
+ color: $text-muted;
109
+ }
110
+
111
+ @include text-emphasis-variant('.text-primary', $brand-primary);
112
+
113
+ @include text-emphasis-variant('.text-success', $state-success-text);
114
+
115
+ @include text-emphasis-variant('.text-info', $state-info-text);
116
+
117
+ @include text-emphasis-variant('.text-warning', $state-warning-text);
118
+
119
+ @include text-emphasis-variant('.text-danger', $state-danger-text);
120
+
121
+ // Contextual backgrounds
122
+ // For now we'll leave these alongside the text classes until v4 when we can
123
+ // safely shift things around (per SemVer rules).
124
+ .bg-primary {
125
+ // Given the contrast here, this is the only class to have its color inverted
126
+ // automatically.
127
+ color: #fff;
128
+ }
129
+ @include bg-variant('.bg-primary', $brand-primary);
130
+
131
+ @include bg-variant('.bg-success', $state-success-bg);
132
+
133
+ @include bg-variant('.bg-info', $state-info-bg);
134
+
135
+ @include bg-variant('.bg-warning', $state-warning-bg);
136
+
137
+ @include bg-variant('.bg-danger', $state-danger-bg);
138
+
139
+
140
+ // Page header
141
+ // -------------------------
142
+
143
+ .page-header {
144
+ padding-bottom: (($line-height-computed / 2) - 1);
145
+ margin: ($line-height-computed * 2) 0 $line-height-computed;
146
+ border-bottom: 1px solid $page-header-border-color;
147
+ }
148
+
149
+
150
+ // Lists
151
+ // -------------------------
152
+
153
+ // Unordered and Ordered lists
154
+ ul,
155
+ ol {
156
+ margin-top: 0;
157
+ margin-bottom: ($line-height-computed / 2);
158
+ ul,
159
+ ol {
160
+ margin-bottom: 0;
161
+ }
162
+ }
163
+
164
+ // List options
165
+
166
+ // Unstyled keeps list items block level, just removes default browser padding and list-style
167
+ .list-unstyled {
168
+ padding-left: 0;
169
+ list-style: none;
170
+ }
171
+
172
+ // Inline turns list items into inline-block
173
+ .list-inline {
174
+ @extend .list-unstyled;
175
+ margin-left: -5px;
176
+
177
+ > li {
178
+ display: inline-block;
179
+ padding-left: 5px;
180
+ padding-right: 5px;
181
+ }
182
+ }
183
+
184
+ // Description Lists
185
+ dl {
186
+ margin-top: 0; // Remove browser default
187
+ margin-bottom: $line-height-computed;
188
+ }
189
+ dt,
190
+ dd {
191
+ line-height: $line-height-base;
192
+ }
193
+ dt {
194
+ font-weight: bold;
195
+ }
196
+ dd {
197
+ margin-left: 0; // Undo browser default
198
+ }
199
+
200
+ // Horizontal description lists
201
+ //
202
+ // Defaults to being stacked without any of the below styles applied, until the
203
+ // grid breakpoint is reached (default of ~768px).
204
+
205
+ .dl-horizontal {
206
+ dd {
207
+ @include clearfix(); // Clear the floated `dt` if an empty `dd` is present
208
+ }
209
+
210
+ @media (min-width: $grid-float-breakpoint) {
211
+ dt {
212
+ float: left;
213
+ width: ($dl-horizontal-offset - 20);
214
+ clear: left;
215
+ text-align: right;
216
+ @include text-overflow();
217
+ }
218
+ dd {
219
+ margin-left: $dl-horizontal-offset;
220
+ }
221
+ }
222
+ }
223
+
224
+
225
+ // Misc
226
+ // -------------------------
227
+
228
+ // Abbreviations and acronyms
229
+ abbr[title],
230
+ // Add data-* attribute to help out our tooltip plugin, per https://github.com/twbs/bootstrap/issues/5257
231
+ abbr[data-original-title] {
232
+ cursor: help;
233
+ border-bottom: 1px dotted $abbr-border-color;
234
+ }
235
+ .initialism {
236
+ font-size: 90%;
237
+ text-transform: uppercase;
238
+ }
239
+
240
+ // Blockquotes
241
+ blockquote {
242
+ padding: ($line-height-computed / 2) $line-height-computed;
243
+ margin: 0 0 $line-height-computed;
244
+ font-size: $blockquote-font-size;
245
+ border-left: 5px solid $blockquote-border-color;
246
+
247
+ p,
248
+ ul,
249
+ ol {
250
+ &:last-child {
251
+ margin-bottom: 0;
252
+ }
253
+ }
254
+
255
+ // Note: Deprecated small and .small as of v3.1.0
256
+ // Context: https://github.com/twbs/bootstrap/issues/11660
257
+ footer,
258
+ small,
259
+ .small {
260
+ display: block;
261
+ font-size: 80%; // back to default font-size
262
+ line-height: $line-height-base;
263
+ color: $blockquote-small-color;
264
+
265
+ &:before {
266
+ content: '\2014 \00A0'; // em dash, nbsp
267
+ }
268
+ }
269
+ }
270
+
271
+ // Opposite alignment of blockquote
272
+ //
273
+ // Heads up: `blockquote.pull-right` has been deprecated as of v3.1.0.
274
+ .blockquote-reverse,
275
+ blockquote.pull-right {
276
+ padding-right: 15px;
277
+ padding-left: 0;
278
+ border-right: 5px solid $blockquote-border-color;
279
+ border-left: 0;
280
+ text-align: right;
281
+
282
+ // Account for citation
283
+ footer,
284
+ small,
285
+ .small {
286
+ &:before { content: ''; }
287
+ &:after {
288
+ content: '\00A0 \2014'; // nbsp, em dash
289
+ }
290
+ }
291
+ }
292
+
293
+ // Quotes
294
+ blockquote:before,
295
+ blockquote:after {
296
+ content: "";
297
+ }
298
+
299
+ // Addresses
300
+ address {
301
+ margin-bottom: $line-height-computed;
302
+ font-style: normal;
303
+ line-height: $line-height-base;
304
+ }
@@ -0,0 +1,57 @@
1
+ //
2
+ // Utility classes
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Floats
7
+ // -------------------------
8
+
9
+ .clearfix {
10
+ @include clearfix();
11
+ }
12
+ .center-block {
13
+ @include center-block();
14
+ }
15
+ .pull-right {
16
+ float: right !important;
17
+ }
18
+ .pull-left {
19
+ float: left !important;
20
+ }
21
+
22
+
23
+ // Toggling content
24
+ // -------------------------
25
+
26
+ // Note: Deprecated .hide in favor of .hidden or .sr-only (as appropriate) in v3.0.1
27
+ .hide {
28
+ display: none !important;
29
+ }
30
+ .show {
31
+ display: block !important;
32
+ }
33
+ .invisible {
34
+ visibility: hidden;
35
+ }
36
+ .text-hide {
37
+ @include text-hide();
38
+ }
39
+
40
+
41
+ // Hide from screenreaders and browsers
42
+ //
43
+ // Credit: HTML5 Boilerplate
44
+
45
+ .hidden {
46
+ display: none !important;
47
+ visibility: hidden !important;
48
+ }
49
+
50
+
51
+ // For Affix plugin
52
+ // -------------------------
53
+
54
+ .affix {
55
+ position: fixed;
56
+ @include translate3d(0, 0, 0);
57
+ }