spiderfw 0.6.30 → 0.6.31

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