neo4j-meta_model 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (188) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +3 -0
  4. data/Rakefile +37 -0
  5. data/app/assets/javascripts/admin/models.js.coffee +25 -0
  6. data/app/assets/javascripts/meta_model.js.coffee +217 -0
  7. data/app/assets/javascripts/router.js.coffee +5 -0
  8. data/app/assets/javascripts/store.js.coffee +12 -0
  9. data/app/assets/javascripts/templates/application.emblem +3 -0
  10. data/app/assets/javascripts/templates/components/model-list-item.emblem +6 -0
  11. data/app/assets/javascripts/templates/components/model-list.emblem +4 -0
  12. data/app/assets/javascripts/templates/has_associations/index.emblem +25 -0
  13. data/app/assets/javascripts/templates/has_associations/new.emblem +50 -0
  14. data/app/assets/javascripts/templates/index.emblem +6 -0
  15. data/app/assets/javascripts/templates/models/edit.emblem +40 -0
  16. data/app/assets/javascripts/templates/models/hierarchy.emblem +8 -0
  17. data/app/assets/stylesheets/meta_model.css.scss +113 -0
  18. data/app/controllers/meta_model/application_controller.rb +12 -0
  19. data/app/controllers/meta_model/meta/has_associations_controller.rb +44 -0
  20. data/app/controllers/meta_model/meta/models_controller.rb +80 -0
  21. data/app/controllers/meta_model/meta/properties_controller.rb +36 -0
  22. data/app/controllers/meta_model/meta_controller.rb +7 -0
  23. data/app/controllers/meta_model/models_controller.rb +69 -0
  24. data/app/helpers/meta_model/application_helper.rb +10 -0
  25. data/app/helpers/meta_model/model_helper.rb +10 -0
  26. data/app/models/concerns/meta_model/model_base.rb +43 -0
  27. data/app/models/meta_model/has_association.rb +46 -0
  28. data/app/models/meta_model/meta_model_base.rb +7 -0
  29. data/app/models/meta_model/model.rb +51 -0
  30. data/app/models/meta_model/property.rb +11 -0
  31. data/app/serializers/meta_model/has_association_serializer.rb +13 -0
  32. data/app/serializers/meta_model/model_serializer.rb +11 -0
  33. data/app/serializers/meta_model/property_serializer.rb +6 -0
  34. data/app/views/layouts/meta_model.html.slim +28 -0
  35. data/app/views/meta_model/meta/associations/index.html.slim +12 -0
  36. data/app/views/meta_model/meta/index.html.slim +2 -0
  37. data/app/views/meta_model/meta/models/edit.html.slim +39 -0
  38. data/app/views/meta_model/models/_form.html.slim +72 -0
  39. data/app/views/meta_model/models/_has_many_association.html.slim +4 -0
  40. data/app/views/meta_model/models/_record_details.html.slim +13 -0
  41. data/app/views/meta_model/models/edit.html.slim +6 -0
  42. data/app/views/meta_model/models/index.html.slim +14 -0
  43. data/app/views/meta_model/models/meta_index.html.slim +6 -0
  44. data/app/views/meta_model/models/new.html.slim +7 -0
  45. data/app/views/meta_model/models/show.html.slim +18 -0
  46. data/config/initializers/active_model_serializer.rb +6 -0
  47. data/config/routes.rb +19 -0
  48. data/lib/ext/hash.rb +7 -0
  49. data/lib/meta_model/engine.rb +23 -0
  50. data/lib/meta_model/version.rb +3 -0
  51. data/lib/meta_model.rb +4 -0
  52. data/lib/meta_models.rb +70 -0
  53. data/lib/tasks/meta_model_tasks.rake +4 -0
  54. data/test/dummy/README.rdoc +28 -0
  55. data/test/dummy/Rakefile +6 -0
  56. data/test/dummy/app/assets/javascripts/application.js +14 -0
  57. data/test/dummy/app/assets/stylesheets/meta_model.css.scss +55 -0
  58. data/test/dummy/app/controllers/meta_model/application_controller.rb +8 -0
  59. data/test/dummy/app/helpers/application_helper.rb +2 -0
  60. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  61. data/test/dummy/bin/bundle +3 -0
  62. data/test/dummy/bin/rails +4 -0
  63. data/test/dummy/bin/rake +4 -0
  64. data/test/dummy/bin/setup +29 -0
  65. data/test/dummy/config/application.rb +29 -0
  66. data/test/dummy/config/boot.rb +5 -0
  67. data/test/dummy/config/database.yml +25 -0
  68. data/test/dummy/config/environment.rb +5 -0
  69. data/test/dummy/config/environments/development.rb +41 -0
  70. data/test/dummy/config/environments/production.rb +79 -0
  71. data/test/dummy/config/environments/test.rb +42 -0
  72. data/test/dummy/config/initializers/assets.rb +11 -0
  73. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  74. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  75. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  76. data/test/dummy/config/initializers/inflections.rb +16 -0
  77. data/test/dummy/config/initializers/mime_types.rb +4 -0
  78. data/test/dummy/config/initializers/session_store.rb +3 -0
  79. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  80. data/test/dummy/config/locales/en.yml +23 -0
  81. data/test/dummy/config/routes.rb +21 -0
  82. data/test/dummy/config/secrets.yml +22 -0
  83. data/test/dummy/config.ru +4 -0
  84. data/test/dummy/public/404.html +67 -0
  85. data/test/dummy/public/422.html +67 -0
  86. data/test/dummy/public/500.html +66 -0
  87. data/test/dummy/public/favicon.ico +0 -0
  88. data/test/integration/navigation_test.rb +10 -0
  89. data/test/meta_model_test.rb +7 -0
  90. data/test/test_helper.rb +19 -0
  91. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.eot +0 -0
  92. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.svg +288 -0
  93. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf +0 -0
  94. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff +0 -0
  95. data/vendor/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2 +0 -0
  96. data/vendor/assets/javascripts/backbone.js +1608 -0
  97. data/vendor/assets/javascripts/bootstrap/affix.js +162 -0
  98. data/vendor/assets/javascripts/bootstrap/alert.js +94 -0
  99. data/vendor/assets/javascripts/bootstrap/button.js +116 -0
  100. data/vendor/assets/javascripts/bootstrap/carousel.js +240 -0
  101. data/vendor/assets/javascripts/bootstrap/collapse.js +211 -0
  102. data/vendor/assets/javascripts/bootstrap/dropdown.js +161 -0
  103. data/vendor/assets/javascripts/bootstrap/modal.js +324 -0
  104. data/vendor/assets/javascripts/bootstrap/popover.js +119 -0
  105. data/vendor/assets/javascripts/bootstrap/scrollspy.js +175 -0
  106. data/vendor/assets/javascripts/bootstrap/tab.js +153 -0
  107. data/vendor/assets/javascripts/bootstrap/tooltip.js +478 -0
  108. data/vendor/assets/javascripts/bootstrap/transition.js +59 -0
  109. data/vendor/assets/javascripts/bootstrap-sprockets.js +12 -0
  110. data/vendor/assets/javascripts/bootstrap.js +2304 -0
  111. data/vendor/assets/javascripts/lodash.js +6785 -0
  112. data/vendor/assets/javascripts/rivets-backbone.js +97 -0
  113. data/vendor/assets/javascripts/rivets.js +1273 -0
  114. data/vendor/assets/javascripts/sightglass.js +203 -0
  115. data/vendor/assets/stylesheets/_bootstrap-compass.scss +7 -0
  116. data/vendor/assets/stylesheets/_bootstrap-mincer.scss +17 -0
  117. data/vendor/assets/stylesheets/_bootstrap-sprockets.scss +7 -0
  118. data/vendor/assets/stylesheets/_bootstrap.scss +50 -0
  119. data/vendor/assets/stylesheets/bootstrap/_alerts.scss +68 -0
  120. data/vendor/assets/stylesheets/bootstrap/_badges.scss +63 -0
  121. data/vendor/assets/stylesheets/bootstrap/_breadcrumbs.scss +26 -0
  122. data/vendor/assets/stylesheets/bootstrap/_button-groups.scss +243 -0
  123. data/vendor/assets/stylesheets/bootstrap/_buttons.scss +160 -0
  124. data/vendor/assets/stylesheets/bootstrap/_carousel.scss +267 -0
  125. data/vendor/assets/stylesheets/bootstrap/_close.scss +35 -0
  126. data/vendor/assets/stylesheets/bootstrap/_code.scss +69 -0
  127. data/vendor/assets/stylesheets/bootstrap/_component-animations.scss +38 -0
  128. data/vendor/assets/stylesheets/bootstrap/_dropdowns.scss +213 -0
  129. data/vendor/assets/stylesheets/bootstrap/_forms.scss +548 -0
  130. data/vendor/assets/stylesheets/bootstrap/_glyphicons.scss +236 -0
  131. data/vendor/assets/stylesheets/bootstrap/_grid.scss +84 -0
  132. data/vendor/assets/stylesheets/bootstrap/_input-groups.scss +166 -0
  133. data/vendor/assets/stylesheets/bootstrap/_jumbotron.scss +49 -0
  134. data/vendor/assets/stylesheets/bootstrap/_labels.scss +66 -0
  135. data/vendor/assets/stylesheets/bootstrap/_list-group.scss +124 -0
  136. data/vendor/assets/stylesheets/bootstrap/_media.scss +47 -0
  137. data/vendor/assets/stylesheets/bootstrap/_mixins.scss +39 -0
  138. data/vendor/assets/stylesheets/bootstrap/_modals.scss +148 -0
  139. data/vendor/assets/stylesheets/bootstrap/_navbar.scss +662 -0
  140. data/vendor/assets/stylesheets/bootstrap/_navs.scss +244 -0
  141. data/vendor/assets/stylesheets/bootstrap/_normalize.scss +427 -0
  142. data/vendor/assets/stylesheets/bootstrap/_pager.scss +54 -0
  143. data/vendor/assets/stylesheets/bootstrap/_pagination.scss +88 -0
  144. data/vendor/assets/stylesheets/bootstrap/_panels.scss +261 -0
  145. data/vendor/assets/stylesheets/bootstrap/_popovers.scss +135 -0
  146. data/vendor/assets/stylesheets/bootstrap/_print.scss +107 -0
  147. data/vendor/assets/stylesheets/bootstrap/_progress-bars.scss +87 -0
  148. data/vendor/assets/stylesheets/bootstrap/_responsive-embed.scss +35 -0
  149. data/vendor/assets/stylesheets/bootstrap/_responsive-utilities.scss +174 -0
  150. data/vendor/assets/stylesheets/bootstrap/_scaffolding.scss +150 -0
  151. data/vendor/assets/stylesheets/bootstrap/_tables.scss +234 -0
  152. data/vendor/assets/stylesheets/bootstrap/_theme.scss +272 -0
  153. data/vendor/assets/stylesheets/bootstrap/_thumbnails.scss +38 -0
  154. data/vendor/assets/stylesheets/bootstrap/_tooltip.scss +103 -0
  155. data/vendor/assets/stylesheets/bootstrap/_type.scss +298 -0
  156. data/vendor/assets/stylesheets/bootstrap/_utilities.scss +56 -0
  157. data/vendor/assets/stylesheets/bootstrap/_variables.scss +864 -0
  158. data/vendor/assets/stylesheets/bootstrap/_wells.scss +29 -0
  159. data/vendor/assets/stylesheets/bootstrap/mixins/_alerts.scss +14 -0
  160. data/vendor/assets/stylesheets/bootstrap/mixins/_background-variant.scss +11 -0
  161. data/vendor/assets/stylesheets/bootstrap/mixins/_border-radius.scss +18 -0
  162. data/vendor/assets/stylesheets/bootstrap/mixins/_buttons.scss +52 -0
  163. data/vendor/assets/stylesheets/bootstrap/mixins/_center-block.scss +7 -0
  164. data/vendor/assets/stylesheets/bootstrap/mixins/_clearfix.scss +22 -0
  165. data/vendor/assets/stylesheets/bootstrap/mixins/_forms.scss +88 -0
  166. data/vendor/assets/stylesheets/bootstrap/mixins/_gradients.scss +58 -0
  167. data/vendor/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +81 -0
  168. data/vendor/assets/stylesheets/bootstrap/mixins/_grid.scss +122 -0
  169. data/vendor/assets/stylesheets/bootstrap/mixins/_hide-text.scss +21 -0
  170. data/vendor/assets/stylesheets/bootstrap/mixins/_image.scss +33 -0
  171. data/vendor/assets/stylesheets/bootstrap/mixins/_labels.scss +12 -0
  172. data/vendor/assets/stylesheets/bootstrap/mixins/_list-group.scss +31 -0
  173. data/vendor/assets/stylesheets/bootstrap/mixins/_nav-divider.scss +10 -0
  174. data/vendor/assets/stylesheets/bootstrap/mixins/_nav-vertical-align.scss +9 -0
  175. data/vendor/assets/stylesheets/bootstrap/mixins/_opacity.scss +8 -0
  176. data/vendor/assets/stylesheets/bootstrap/mixins/_pagination.scss +23 -0
  177. data/vendor/assets/stylesheets/bootstrap/mixins/_panels.scss +24 -0
  178. data/vendor/assets/stylesheets/bootstrap/mixins/_progress-bar.scss +10 -0
  179. data/vendor/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +8 -0
  180. data/vendor/assets/stylesheets/bootstrap/mixins/_resize.scss +6 -0
  181. data/vendor/assets/stylesheets/bootstrap/mixins/_responsive-visibility.scss +21 -0
  182. data/vendor/assets/stylesheets/bootstrap/mixins/_size.scss +10 -0
  183. data/vendor/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +9 -0
  184. data/vendor/assets/stylesheets/bootstrap/mixins/_table-row.scss +28 -0
  185. data/vendor/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +11 -0
  186. data/vendor/assets/stylesheets/bootstrap/mixins/_text-overflow.scss +8 -0
  187. data/vendor/assets/stylesheets/bootstrap/mixins/_vendor-prefixes.scss +222 -0
  188. metadata +365 -0
@@ -0,0 +1,662 @@
1
+ //
2
+ // Navbars
3
+ // --------------------------------------------------
4
+
5
+
6
+ // Wrapper and base class
7
+ //
8
+ // Provide a static navbar from which we expand to create full-width, fixed, and
9
+ // other navbar variations.
10
+
11
+ .navbar {
12
+ position: relative;
13
+ min-height: $navbar-height; // Ensure a navbar always shows (e.g., without a .navbar-brand in collapsed mode)
14
+ margin-bottom: $navbar-margin-bottom;
15
+ border: 1px solid transparent;
16
+
17
+ // Prevent floats from breaking the navbar
18
+ @include clearfix;
19
+
20
+ @media (min-width: $grid-float-breakpoint) {
21
+ border-radius: $navbar-border-radius;
22
+ }
23
+ }
24
+
25
+
26
+ // Navbar heading
27
+ //
28
+ // Groups `.navbar-brand` and `.navbar-toggle` into a single component for easy
29
+ // styling of responsive aspects.
30
+
31
+ .navbar-header {
32
+ @include clearfix;
33
+
34
+ @media (min-width: $grid-float-breakpoint) {
35
+ float: left;
36
+ }
37
+ }
38
+
39
+
40
+ // Navbar collapse (body)
41
+ //
42
+ // Group your navbar content into this for easy collapsing and expanding across
43
+ // various device sizes. By default, this content is collapsed when <768px, but
44
+ // will expand past that for a horizontal display.
45
+ //
46
+ // To start (on mobile devices) the navbar links, forms, and buttons are stacked
47
+ // vertically and include a `max-height` to overflow in case you have too much
48
+ // content for the user's viewport.
49
+
50
+ .navbar-collapse {
51
+ overflow-x: visible;
52
+ padding-right: $navbar-padding-horizontal;
53
+ padding-left: $navbar-padding-horizontal;
54
+ border-top: 1px solid transparent;
55
+ box-shadow: inset 0 1px 0 rgba(255,255,255,.1);
56
+ @include clearfix;
57
+ -webkit-overflow-scrolling: touch;
58
+
59
+ &.in {
60
+ overflow-y: auto;
61
+ }
62
+
63
+ @media (min-width: $grid-float-breakpoint) {
64
+ width: auto;
65
+ border-top: 0;
66
+ box-shadow: none;
67
+
68
+ &.collapse {
69
+ display: block !important;
70
+ visibility: visible !important;
71
+ height: auto !important;
72
+ padding-bottom: 0; // Override default setting
73
+ overflow: visible !important;
74
+ }
75
+
76
+ &.in {
77
+ overflow-y: visible;
78
+ }
79
+
80
+ // Undo the collapse side padding for navbars with containers to ensure
81
+ // alignment of right-aligned contents.
82
+ .navbar-fixed-top &,
83
+ .navbar-static-top &,
84
+ .navbar-fixed-bottom & {
85
+ padding-left: 0;
86
+ padding-right: 0;
87
+ }
88
+ }
89
+ }
90
+
91
+ .navbar-fixed-top,
92
+ .navbar-fixed-bottom {
93
+ .navbar-collapse {
94
+ max-height: $navbar-collapse-max-height;
95
+
96
+ @media (max-device-width: $screen-xs-min) and (orientation: landscape) {
97
+ max-height: 200px;
98
+ }
99
+ }
100
+ }
101
+
102
+
103
+ // Both navbar header and collapse
104
+ //
105
+ // When a container is present, change the behavior of the header and collapse.
106
+
107
+ .container,
108
+ .container-fluid {
109
+ > .navbar-header,
110
+ > .navbar-collapse {
111
+ margin-right: -$navbar-padding-horizontal;
112
+ margin-left: -$navbar-padding-horizontal;
113
+
114
+ @media (min-width: $grid-float-breakpoint) {
115
+ margin-right: 0;
116
+ margin-left: 0;
117
+ }
118
+ }
119
+ }
120
+
121
+
122
+ //
123
+ // Navbar alignment options
124
+ //
125
+ // Display the navbar across the entirety of the page or fixed it to the top or
126
+ // bottom of the page.
127
+
128
+ // Static top (unfixed, but 100% wide) navbar
129
+ .navbar-static-top {
130
+ z-index: $zindex-navbar;
131
+ border-width: 0 0 1px;
132
+
133
+ @media (min-width: $grid-float-breakpoint) {
134
+ border-radius: 0;
135
+ }
136
+ }
137
+
138
+ // Fix the top/bottom navbars when screen real estate supports it
139
+ .navbar-fixed-top,
140
+ .navbar-fixed-bottom {
141
+ position: fixed;
142
+ right: 0;
143
+ left: 0;
144
+ z-index: $zindex-navbar-fixed;
145
+
146
+ // Undo the rounded corners
147
+ @media (min-width: $grid-float-breakpoint) {
148
+ border-radius: 0;
149
+ }
150
+ }
151
+ .navbar-fixed-top {
152
+ top: 0;
153
+ border-width: 0 0 1px;
154
+ }
155
+ .navbar-fixed-bottom {
156
+ bottom: 0;
157
+ margin-bottom: 0; // override .navbar defaults
158
+ border-width: 1px 0 0;
159
+ }
160
+
161
+
162
+ // Brand/project name
163
+
164
+ .navbar-brand {
165
+ float: left;
166
+ padding: $navbar-padding-vertical $navbar-padding-horizontal;
167
+ font-size: $font-size-large;
168
+ line-height: $line-height-computed;
169
+ height: $navbar-height;
170
+
171
+ &:hover,
172
+ &:focus {
173
+ text-decoration: none;
174
+ }
175
+
176
+ > img {
177
+ display: block;
178
+ }
179
+
180
+ @media (min-width: $grid-float-breakpoint) {
181
+ .navbar > .container &,
182
+ .navbar > .container-fluid & {
183
+ margin-left: -$navbar-padding-horizontal;
184
+ }
185
+ }
186
+ }
187
+
188
+
189
+ // Navbar toggle
190
+ //
191
+ // Custom button for toggling the `.navbar-collapse`, powered by the collapse
192
+ // JavaScript plugin.
193
+
194
+ .navbar-toggle {
195
+ position: relative;
196
+ float: right;
197
+ margin-right: $navbar-padding-horizontal;
198
+ padding: 9px 10px;
199
+ @include navbar-vertical-align(34px);
200
+ background-color: transparent;
201
+ background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
202
+ border: 1px solid transparent;
203
+ border-radius: $border-radius-base;
204
+
205
+ // We remove the `outline` here, but later compensate by attaching `:hover`
206
+ // styles to `:focus`.
207
+ &:focus {
208
+ outline: 0;
209
+ }
210
+
211
+ // Bars
212
+ .icon-bar {
213
+ display: block;
214
+ width: 22px;
215
+ height: 2px;
216
+ border-radius: 1px;
217
+ }
218
+ .icon-bar + .icon-bar {
219
+ margin-top: 4px;
220
+ }
221
+
222
+ @media (min-width: $grid-float-breakpoint) {
223
+ display: none;
224
+ }
225
+ }
226
+
227
+
228
+ // Navbar nav links
229
+ //
230
+ // Builds on top of the `.nav` components with its own modifier class to make
231
+ // the nav the full height of the horizontal nav (above 768px).
232
+
233
+ .navbar-nav {
234
+ margin: ($navbar-padding-vertical / 2) (-$navbar-padding-horizontal);
235
+
236
+ > li > a {
237
+ padding-top: 10px;
238
+ padding-bottom: 10px;
239
+ line-height: $line-height-computed;
240
+ }
241
+
242
+ @media (max-width: $grid-float-breakpoint-max) {
243
+ // Dropdowns get custom display when collapsed
244
+ .open .dropdown-menu {
245
+ position: static;
246
+ float: none;
247
+ width: auto;
248
+ margin-top: 0;
249
+ background-color: transparent;
250
+ border: 0;
251
+ box-shadow: none;
252
+ > li > a,
253
+ .dropdown-header {
254
+ padding: 5px 15px 5px 25px;
255
+ }
256
+ > li > a {
257
+ line-height: $line-height-computed;
258
+ &:hover,
259
+ &:focus {
260
+ background-image: none;
261
+ }
262
+ }
263
+ }
264
+ }
265
+
266
+ // Uncollapse the nav
267
+ @media (min-width: $grid-float-breakpoint) {
268
+ float: left;
269
+ margin: 0;
270
+
271
+ > li {
272
+ float: left;
273
+ > a {
274
+ padding-top: $navbar-padding-vertical;
275
+ padding-bottom: $navbar-padding-vertical;
276
+ }
277
+ }
278
+ }
279
+ }
280
+
281
+
282
+ // Navbar form
283
+ //
284
+ // Extension of the `.form-inline` with some extra flavor for optimum display in
285
+ // our navbars.
286
+
287
+ .navbar-form {
288
+ margin-left: -$navbar-padding-horizontal;
289
+ margin-right: -$navbar-padding-horizontal;
290
+ padding: 10px $navbar-padding-horizontal;
291
+ border-top: 1px solid transparent;
292
+ border-bottom: 1px solid transparent;
293
+ $shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.1);
294
+ @include box-shadow($shadow);
295
+
296
+ // Mixin behavior for optimum display
297
+ @include form-inline;
298
+
299
+ .form-group {
300
+ @media (max-width: $grid-float-breakpoint-max) {
301
+ margin-bottom: 5px;
302
+
303
+ &:last-child {
304
+ margin-bottom: 0;
305
+ }
306
+ }
307
+ }
308
+
309
+ // Vertically center in expanded, horizontal navbar
310
+ @include navbar-vertical-align($input-height-base);
311
+
312
+ // Undo 100% width for pull classes
313
+ @media (min-width: $grid-float-breakpoint) {
314
+ width: auto;
315
+ border: 0;
316
+ margin-left: 0;
317
+ margin-right: 0;
318
+ padding-top: 0;
319
+ padding-bottom: 0;
320
+ @include box-shadow(none);
321
+ }
322
+ }
323
+
324
+
325
+ // Dropdown menus
326
+
327
+ // Menu position and menu carets
328
+ .navbar-nav > li > .dropdown-menu {
329
+ margin-top: 0;
330
+ @include border-top-radius(0);
331
+ }
332
+ // Menu position and menu caret support for dropups via extra dropup class
333
+ .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {
334
+ @include border-top-radius($navbar-border-radius);
335
+ @include border-bottom-radius(0);
336
+ }
337
+
338
+
339
+ // Buttons in navbars
340
+ //
341
+ // Vertically center a button within a navbar (when *not* in a form).
342
+
343
+ .navbar-btn {
344
+ @include navbar-vertical-align($input-height-base);
345
+
346
+ &.btn-sm {
347
+ @include navbar-vertical-align($input-height-small);
348
+ }
349
+ &.btn-xs {
350
+ @include navbar-vertical-align(22);
351
+ }
352
+ }
353
+
354
+
355
+ // Text in navbars
356
+ //
357
+ // Add a class to make any element properly align itself vertically within the navbars.
358
+
359
+ .navbar-text {
360
+ @include navbar-vertical-align($line-height-computed);
361
+
362
+ @media (min-width: $grid-float-breakpoint) {
363
+ float: left;
364
+ margin-left: $navbar-padding-horizontal;
365
+ margin-right: $navbar-padding-horizontal;
366
+ }
367
+ }
368
+
369
+
370
+ // Component alignment
371
+ //
372
+ // Repurpose the pull utilities as their own navbar utilities to avoid specificity
373
+ // issues with parents and chaining. Only do this when the navbar is uncollapsed
374
+ // though so that navbar contents properly stack and align in mobile.
375
+ //
376
+ // Declared after the navbar components to ensure more specificity on the margins.
377
+
378
+ @media (min-width: $grid-float-breakpoint) {
379
+ .navbar-left {
380
+ float: left !important;
381
+ }
382
+ .navbar-right {
383
+ float: right !important;
384
+ margin-right: -$navbar-padding-horizontal;
385
+
386
+ ~ .navbar-right {
387
+ margin-right: 0;
388
+ }
389
+ }
390
+ }
391
+
392
+
393
+ // Alternate navbars
394
+ // --------------------------------------------------
395
+
396
+ // Default navbar
397
+ .navbar-default {
398
+ background-color: $navbar-default-bg;
399
+ border-color: $navbar-default-border;
400
+
401
+ .navbar-brand {
402
+ color: $navbar-default-brand-color;
403
+ &:hover,
404
+ &:focus {
405
+ color: $navbar-default-brand-hover-color;
406
+ background-color: $navbar-default-brand-hover-bg;
407
+ }
408
+ }
409
+
410
+ .navbar-text {
411
+ color: $navbar-default-color;
412
+ }
413
+
414
+ .navbar-nav {
415
+ > li > a {
416
+ color: $navbar-default-link-color;
417
+
418
+ &:hover,
419
+ &:focus {
420
+ color: $navbar-default-link-hover-color;
421
+ background-color: $navbar-default-link-hover-bg;
422
+ }
423
+ }
424
+ > .active > a {
425
+ &,
426
+ &:hover,
427
+ &:focus {
428
+ color: $navbar-default-link-active-color;
429
+ background-color: $navbar-default-link-active-bg;
430
+ }
431
+ }
432
+ > .disabled > a {
433
+ &,
434
+ &:hover,
435
+ &:focus {
436
+ color: $navbar-default-link-disabled-color;
437
+ background-color: $navbar-default-link-disabled-bg;
438
+ }
439
+ }
440
+ }
441
+
442
+ .navbar-toggle {
443
+ border-color: $navbar-default-toggle-border-color;
444
+ &:hover,
445
+ &:focus {
446
+ background-color: $navbar-default-toggle-hover-bg;
447
+ }
448
+ .icon-bar {
449
+ background-color: $navbar-default-toggle-icon-bar-bg;
450
+ }
451
+ }
452
+
453
+ .navbar-collapse,
454
+ .navbar-form {
455
+ border-color: $navbar-default-border;
456
+ }
457
+
458
+ // Dropdown menu items
459
+ .navbar-nav {
460
+ // Remove background color from open dropdown
461
+ > .open > a {
462
+ &,
463
+ &:hover,
464
+ &:focus {
465
+ background-color: $navbar-default-link-active-bg;
466
+ color: $navbar-default-link-active-color;
467
+ }
468
+ }
469
+
470
+ @media (max-width: $grid-float-breakpoint-max) {
471
+ // Dropdowns get custom display when collapsed
472
+ .open .dropdown-menu {
473
+ > li > a {
474
+ color: $navbar-default-link-color;
475
+ &:hover,
476
+ &:focus {
477
+ color: $navbar-default-link-hover-color;
478
+ background-color: $navbar-default-link-hover-bg;
479
+ }
480
+ }
481
+ > .active > a {
482
+ &,
483
+ &:hover,
484
+ &:focus {
485
+ color: $navbar-default-link-active-color;
486
+ background-color: $navbar-default-link-active-bg;
487
+ }
488
+ }
489
+ > .disabled > a {
490
+ &,
491
+ &:hover,
492
+ &:focus {
493
+ color: $navbar-default-link-disabled-color;
494
+ background-color: $navbar-default-link-disabled-bg;
495
+ }
496
+ }
497
+ }
498
+ }
499
+ }
500
+
501
+
502
+ // Links in navbars
503
+ //
504
+ // Add a class to ensure links outside the navbar nav are colored correctly.
505
+
506
+ .navbar-link {
507
+ color: $navbar-default-link-color;
508
+ &:hover {
509
+ color: $navbar-default-link-hover-color;
510
+ }
511
+ }
512
+
513
+ .btn-link {
514
+ color: $navbar-default-link-color;
515
+ &:hover,
516
+ &:focus {
517
+ color: $navbar-default-link-hover-color;
518
+ }
519
+ &[disabled],
520
+ fieldset[disabled] & {
521
+ &:hover,
522
+ &:focus {
523
+ color: $navbar-default-link-disabled-color;
524
+ }
525
+ }
526
+ }
527
+ }
528
+
529
+ // Inverse navbar
530
+
531
+ .navbar-inverse {
532
+ background-color: $navbar-inverse-bg;
533
+ border-color: $navbar-inverse-border;
534
+
535
+ .navbar-brand {
536
+ color: $navbar-inverse-brand-color;
537
+ &:hover,
538
+ &:focus {
539
+ color: $navbar-inverse-brand-hover-color;
540
+ background-color: $navbar-inverse-brand-hover-bg;
541
+ }
542
+ }
543
+
544
+ .navbar-text {
545
+ color: $navbar-inverse-color;
546
+ }
547
+
548
+ .navbar-nav {
549
+ > li > a {
550
+ color: $navbar-inverse-link-color;
551
+
552
+ &:hover,
553
+ &:focus {
554
+ color: $navbar-inverse-link-hover-color;
555
+ background-color: $navbar-inverse-link-hover-bg;
556
+ }
557
+ }
558
+ > .active > a {
559
+ &,
560
+ &:hover,
561
+ &:focus {
562
+ color: $navbar-inverse-link-active-color;
563
+ background-color: $navbar-inverse-link-active-bg;
564
+ }
565
+ }
566
+ > .disabled > a {
567
+ &,
568
+ &:hover,
569
+ &:focus {
570
+ color: $navbar-inverse-link-disabled-color;
571
+ background-color: $navbar-inverse-link-disabled-bg;
572
+ }
573
+ }
574
+ }
575
+
576
+ // Darken the responsive nav toggle
577
+ .navbar-toggle {
578
+ border-color: $navbar-inverse-toggle-border-color;
579
+ &:hover,
580
+ &:focus {
581
+ background-color: $navbar-inverse-toggle-hover-bg;
582
+ }
583
+ .icon-bar {
584
+ background-color: $navbar-inverse-toggle-icon-bar-bg;
585
+ }
586
+ }
587
+
588
+ .navbar-collapse,
589
+ .navbar-form {
590
+ border-color: darken($navbar-inverse-bg, 7%);
591
+ }
592
+
593
+ // Dropdowns
594
+ .navbar-nav {
595
+ > .open > a {
596
+ &,
597
+ &:hover,
598
+ &:focus {
599
+ background-color: $navbar-inverse-link-active-bg;
600
+ color: $navbar-inverse-link-active-color;
601
+ }
602
+ }
603
+
604
+ @media (max-width: $grid-float-breakpoint-max) {
605
+ // Dropdowns get custom display
606
+ .open .dropdown-menu {
607
+ > .dropdown-header {
608
+ border-color: $navbar-inverse-border;
609
+ }
610
+ .divider {
611
+ background-color: $navbar-inverse-border;
612
+ }
613
+ > li > a {
614
+ color: $navbar-inverse-link-color;
615
+ &:hover,
616
+ &:focus {
617
+ color: $navbar-inverse-link-hover-color;
618
+ background-color: $navbar-inverse-link-hover-bg;
619
+ }
620
+ }
621
+ > .active > a {
622
+ &,
623
+ &:hover,
624
+ &:focus {
625
+ color: $navbar-inverse-link-active-color;
626
+ background-color: $navbar-inverse-link-active-bg;
627
+ }
628
+ }
629
+ > .disabled > a {
630
+ &,
631
+ &:hover,
632
+ &:focus {
633
+ color: $navbar-inverse-link-disabled-color;
634
+ background-color: $navbar-inverse-link-disabled-bg;
635
+ }
636
+ }
637
+ }
638
+ }
639
+ }
640
+
641
+ .navbar-link {
642
+ color: $navbar-inverse-link-color;
643
+ &:hover {
644
+ color: $navbar-inverse-link-hover-color;
645
+ }
646
+ }
647
+
648
+ .btn-link {
649
+ color: $navbar-inverse-link-color;
650
+ &:hover,
651
+ &:focus {
652
+ color: $navbar-inverse-link-hover-color;
653
+ }
654
+ &[disabled],
655
+ fieldset[disabled] & {
656
+ &:hover,
657
+ &:focus {
658
+ color: $navbar-inverse-link-disabled-color;
659
+ }
660
+ }
661
+ }
662
+ }