upgraded to bootstrap v2.3.0.

pull/3113/head
Keivan Beigi 12 years ago
parent 85be921646
commit e9789116d2

@ -1,5 +1,5 @@
/*! /*!
* Bootstrap v2.2.2 * Bootstrap v2.3.0
* *
* Copyright 2012 Twitter, Inc * Copyright 2012 Twitter, Inc
* Licensed under the Apache License v2.0 * Licensed under the Apache License v2.0
@ -8,13 +8,13 @@
* Designed and built with all the love in the world @twitter by @mdo and @fat. * Designed and built with all the love in the world @twitter by @mdo and @fat.
*/ */
// CSS Reset
@import "reset.less";
// Core variables and mixins // Core variables and mixins
@import "variables.less"; // Modify this for custom colors, font-sizes, etc @import "variables.less"; // Modify this for custom colors, font-sizes, etc
@import "mixins.less"; @import "mixins.less";
// CSS Reset
@import "reset.less";
// Grid system and page structure // Grid system and page structure
@import "scaffolding.less"; @import "scaffolding.less";
@import "grid.less"; @import "grid.less";

@ -164,8 +164,6 @@
margin-left: 0; margin-left: 0;
} }
// Carets in other button sizes // Carets in other button sizes
.btn-mini .caret,
.btn-small .caret,
.btn-large .caret { .btn-large .caret {
margin-top: 6px; margin-top: 6px;
} }
@ -174,6 +172,10 @@
border-right-width: 5px; border-right-width: 5px;
border-top-width: 5px; border-top-width: 5px;
} }
.btn-mini .caret,
.btn-small .caret {
margin-top: 8px;
}
// Upside down carets for .dropup // Upside down carets for .dropup
.dropup .btn-large .caret { .dropup .btn-large .caret {
border-bottom-width: 5px; border-bottom-width: 5px;

@ -25,13 +25,14 @@
.ie7-restore-left-whitespace(); // Give IE7 some love .ie7-restore-left-whitespace(); // Give IE7 some love
.box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)"); .box-shadow(~"inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05)");
// Hover state // Hover/focus state
&:hover { &:hover,
&:focus {
color: @grayDark; color: @grayDark;
text-decoration: none; text-decoration: none;
background-position: 0 -15px; background-position: 0 -15px;
// transition is only when going to hover, otherwise the background // transition is only when going to hover/focus, otherwise the background
// behind the gradient (there for IE<=9 fallback) gets mismatched // behind the gradient (there for IE<=9 fallback) gets mismatched
.transition(background-position .1s linear); .transition(background-position .1s linear);
} }
@ -141,11 +142,6 @@ input[type="button"] {
// Set the backgrounds // Set the backgrounds
// ------------------------- // -------------------------
.btn {
// reset here as of 2.0.3 due to Recess property order
border-color: #c5c5c5;
border-color: rgba(0,0,0,.15) rgba(0,0,0,.15) rgba(0,0,0,.25);
}
.btn-primary { .btn-primary {
.buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight); .buttonBackground(@btnPrimaryBackground, @btnPrimaryBackgroundHighlight);
} }
@ -219,12 +215,14 @@ input[type="submit"].btn {
color: @linkColor; color: @linkColor;
.border-radius(0); .border-radius(0);
} }
.btn-link:hover { .btn-link:hover,
.btn-link:focus {
color: @linkColorHover; color: @linkColorHover;
text-decoration: underline; text-decoration: underline;
background-color: transparent; background-color: transparent;
} }
.btn-link[disabled]:hover { .btn-link[disabled]:hover,
.btn-link[disabled]:focus {
color: @grayDark; color: @grayDark;
text-decoration: none; text-decoration: none;
} }

@ -21,13 +21,14 @@
display: none; display: none;
position: relative; position: relative;
.transition(.6s ease-in-out left); .transition(.6s ease-in-out left);
}
// Account for jankitude on images // Account for jankitude on images
> .item > img { > img,
> a > img {
display: block; display: block;
line-height: 1; line-height: 1;
} }
}
> .active, > .active,
> .next, > .next,
@ -97,14 +98,40 @@
right: 15px; right: 15px;
} }
// Hover state // Hover/focus state
&:hover { &:hover,
&:focus {
color: @white; color: @white;
text-decoration: none; text-decoration: none;
.opacity(90); .opacity(90);
} }
} }
// Carousel indicator pips
// -----------------------------
.carousel-indicators {
position: absolute;
top: 15px;
right: 15px;
z-index: 5;
margin: 0;
list-style: none;
li {
display: block;
float: left;
width: 10px;
height: 10px;
margin-left: 5px;
text-indent: -999px;
background-color: #ccc;
background-color: rgba(255,255,255,.25);
border-radius: 5px;
}
.active {
background-color: #fff;
}
}
// Caption for text below images // Caption for text below images
// ----------------------------- // -----------------------------

@ -11,7 +11,8 @@
color: @black; color: @black;
text-shadow: 0 1px 0 rgba(255,255,255,1); text-shadow: 0 1px 0 rgba(255,255,255,1);
.opacity(20); .opacity(20);
&:hover { &:hover,
&:focus {
color: @black; color: @black;
text-decoration: none; text-decoration: none;
cursor: pointer; cursor: pointer;

@ -72,7 +72,7 @@
} }
// Links within the dropdown menu // Links within the dropdown menu
li > a { > li > a {
display: block; display: block;
padding: 3px 20px; padding: 3px 20px;
clear: both; clear: both;
@ -83,11 +83,12 @@
} }
} }
// Hover state // Hover/Focus state
// ----------- // -----------
.dropdown-menu li > a:hover, .dropdown-menu > li > a:hover,
.dropdown-menu li > a:focus, .dropdown-menu > li > a:focus,
.dropdown-submenu:hover > a { .dropdown-submenu:hover > a,
.dropdown-submenu:focus > a {
text-decoration: none; text-decoration: none;
color: @dropdownLinkColorHover; color: @dropdownLinkColorHover;
#gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%)); #gradient > .vertical(@dropdownLinkBackgroundHover, darken(@dropdownLinkBackgroundHover, 5%));
@ -95,8 +96,9 @@
// Active state // Active state
// ------------ // ------------
.dropdown-menu .active > a, .dropdown-menu > .active > a,
.dropdown-menu .active > a:hover { .dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
color: @dropdownLinkColorActive; color: @dropdownLinkColorActive;
text-decoration: none; text-decoration: none;
outline: 0; outline: 0;
@ -105,13 +107,15 @@
// Disabled state // Disabled state
// -------------- // --------------
// Gray out text and ensure the hover state remains gray // Gray out text and ensure the hover/focus state remains gray
.dropdown-menu .disabled > a, .dropdown-menu > .disabled > a,
.dropdown-menu .disabled > a:hover { .dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
color: @grayLight; color: @grayLight;
} }
// Nuke hover effects // Nuke hover/focus effects
.dropdown-menu .disabled > a:hover { .dropdown-menu > .disabled > a:hover,
.dropdown-menu > .disabled > a:focus {
text-decoration: none; text-decoration: none;
background-color: transparent; background-color: transparent;
background-image: none; // Remove CSS gradient background-image: none; // Remove CSS gradient

@ -422,7 +422,9 @@ select:focus:invalid {
// Allow us to put symbols and text within the input field for a cleaner look // Allow us to put symbols and text within the input field for a cleaner look
.input-append, .input-append,
.input-prepend { .input-prepend {
margin-bottom: 5px; display: inline-block;
margin-bottom: @baseLineHeight / 2;
vertical-align: middle;
font-size: 0; // white space collapse hack font-size: 0; // white space collapse hack
white-space: nowrap; // Prevent span and input from separating white-space: nowrap; // Prevent span and input from separating
@ -430,7 +432,8 @@ select:focus:invalid {
input, input,
select, select,
.uneditable-input, .uneditable-input,
.dropdown-menu { .dropdown-menu,
.popover {
font-size: @baseFontSize; font-size: @baseFontSize;
} }

@ -35,10 +35,12 @@
} }
} }
// Hover state, but only for links // Hover/focus state, but only for links
a { a {
&.label:hover, &.label:hover,
&.badge:hover { &.label:focus,
&.badge:hover,
&.badge:focus {
color: @white; color: @white;
text-decoration: none; text-decoration: none;
cursor: pointer; cursor: pointer;

@ -37,10 +37,10 @@
// Media image alignment // Media image alignment
// ------------------------- // -------------------------
.media .pull-left { .media > .pull-left {
margin-right: 10px; margin-right: 10px;
} }
.media .pull-right { .media > .pull-right {
margin-left: 10px; margin-left: 10px;
} }

@ -268,6 +268,12 @@
-o-transition-delay: @transition-delay; -o-transition-delay: @transition-delay;
transition-delay: @transition-delay; transition-delay: @transition-delay;
} }
.transition-duration(@transition-duration) {
-webkit-transition-duration: @transition-duration;
-moz-transition-duration: @transition-duration;
-o-transition-duration: @transition-duration;
transition-duration: @transition-duration;
}
// Transformations // Transformations
.rotate(@degrees) { .rotate(@degrees) {
@ -409,59 +415,70 @@
// Gradients // Gradients
#gradient { #gradient {
.horizontal(@startColor: #555, @endColor: #555) { .horizontal(@startColor: #555, @endColor: #333) {
background-color: @endColor; background-color: @endColor;
//background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+ background-image: -moz-linear-gradient(left, @startColor, @endColor); // FF 3.6+
//background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ background-image: -webkit-gradient(linear, 0 0, 100% 0, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
//background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+ background-image: -webkit-linear-gradient(left, @startColor, @endColor); // Safari 5.1+, Chrome 10+
//background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10 background-image: -o-linear-gradient(left, @startColor, @endColor); // Opera 11.10
//background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10 background-image: linear-gradient(to right, @startColor, @endColor); // Standard, IE10
//background-repeat: repeat-x; background-repeat: repeat-x;
//filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=1)",argb(@startColor),argb(@endColor))); // IE9 and down
} }
.vertical(@startColor: #555, @endColor: #333) { .vertical(@startColor: #555, @endColor: #333) {
background-color: mix(@startColor, @endColor, 60%); background-color: mix(@startColor, @endColor, 60%);
//background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+ background-image: -moz-linear-gradient(top, @startColor, @endColor); // FF 3.6+
//background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+ background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), to(@endColor)); // Safari 4+, Chrome 2+
//background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+ background-image: -webkit-linear-gradient(top, @startColor, @endColor); // Safari 5.1+, Chrome 10+
//background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10 background-image: -o-linear-gradient(top, @startColor, @endColor); // Opera 11.10
//background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10 background-image: linear-gradient(to bottom, @startColor, @endColor); // Standard, IE10
//background-repeat: repeat-x; background-repeat: repeat-x;
//filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down
} }
.directional(@startColor: #555, @endColor: #333, @deg: 45deg) { .directional(@startColor: #555, @endColor: #333, @deg: 45deg) {
background-color: @endColor; background-color: @endColor;
//background-repeat: repeat-x; background-repeat: repeat-x;
//background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+ background-image: -moz-linear-gradient(@deg, @startColor, @endColor); // FF 3.6+
//background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+ background-image: -webkit-linear-gradient(@deg, @startColor, @endColor); // Safari 5.1+, Chrome 10+
//background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10 background-image: -o-linear-gradient(@deg, @startColor, @endColor); // Opera 11.10
//background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10 background-image: linear-gradient(@deg, @startColor, @endColor); // Standard, IE10
}
.horizontal-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
background-color: mix(@midColor, @endColor, 80%);
background-image: -webkit-gradient(left, linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
background-image: -webkit-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
background-image: -moz-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
background-image: -o-linear-gradient(left, @startColor, @midColor @colorStop, @endColor);
background-image: linear-gradient(to right, @startColor, @midColor @colorStop, @endColor);
background-repeat: no-repeat;
filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
} }
.vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) { .vertical-three-colors(@startColor: #00b3ee, @midColor: #7a43b6, @colorStop: 50%, @endColor: #c3325f) {
background-color: mix(@midColor, @endColor, 80%); background-color: mix(@midColor, @endColor, 80%);
//background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor)); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(@startColor), color-stop(@colorStop, @midColor), to(@endColor));
//background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor); background-image: -webkit-linear-gradient(@startColor, @midColor @colorStop, @endColor);
//background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor); background-image: -moz-linear-gradient(top, @startColor, @midColor @colorStop, @endColor);
//background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor); background-image: -o-linear-gradient(@startColor, @midColor @colorStop, @endColor);
//background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor); background-image: linear-gradient(@startColor, @midColor @colorStop, @endColor);
//background-repeat: no-repeat; background-repeat: no-repeat;
//filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback filter: e(%("progid:DXImageTransform.Microsoft.gradient(startColorstr='%d', endColorstr='%d', GradientType=0)",argb(@startColor),argb(@endColor))); // IE9 and down, gets no color-stop at all for proper fallback
} }
.radial(@innerColor: #555, @outerColor: #333) { .radial(@innerColor: #555, @outerColor: #333) {
background-color: @outerColor; background-color: @outerColor;
//background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor)); background-image: -webkit-gradient(radial, center center, 0, center center, 460, from(@innerColor), to(@outerColor));
//background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor); background-image: -webkit-radial-gradient(circle, @innerColor, @outerColor);
//background-image: -moz-radial-gradient(circle, @innerColor, @outerColor); background-image: -moz-radial-gradient(circle, @innerColor, @outerColor);
//background-image: -o-radial-gradient(circle, @innerColor, @outerColor); background-image: -o-radial-gradient(circle, @innerColor, @outerColor);
//background-repeat: no-repeat; background-repeat: no-repeat;
} }
.striped(@color: #555, @angle: 45deg) { .striped(@color: #555, @angle: 45deg) {
background-color: @color; background-color: @color;
//background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent)); background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(.25, rgba(255,255,255,.15)), color-stop(.25, transparent), color-stop(.5, transparent), color-stop(.5, rgba(255,255,255,.15)), color-stop(.75, rgba(255,255,255,.15)), color-stop(.75, transparent), to(transparent));
//background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); background-image: -webkit-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
//background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
//background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
//background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent); background-image: linear-gradient(@angle, rgba(255,255,255,.15) 25%, transparent 25%, transparent 50%, rgba(255,255,255,.15) 50%, rgba(255,255,255,.15) 75%, transparent 75%, transparent);
} }
} }
// Reset filters for IE // Reset filters for IE
@ -500,7 +517,7 @@
.reset-filter(); .reset-filter();
// in these cases the gradient won't cover the background, so we override // in these cases the gradient won't cover the background, so we override
&:hover, &:active, &.active, &.disabled, &[disabled] { &:hover, &:focus, &:active, &.active, &.disabled, &[disabled] {
color: @textColor; color: @textColor;
background-color: @endColor; background-color: @endColor;
*background-color: darken(@endColor, 5%); *background-color: darken(@endColor, 5%);
@ -558,13 +575,13 @@
.core (@gridColumnWidth, @gridGutterWidth) { .core (@gridColumnWidth, @gridGutterWidth) {
.spanX (@index) when (@index > 0) { .spanX (@index) when (@index > 0) {
(~".span@{index}") { .span(@index); } .span@{index} { .span(@index); }
.spanX(@index - 1); .spanX(@index - 1);
} }
.spanX (0) {} .spanX (0) {}
.offsetX (@index) when (@index > 0) { .offsetX (@index) when (@index > 0) {
(~".offset@{index}") { .offset(@index); } .offset@{index} { .offset(@index); }
.offsetX(@index - 1); .offsetX(@index - 1);
} }
.offsetX (0) {} .offsetX (0) {}
@ -579,7 +596,6 @@
.row { .row {
margin-left: @gridGutterWidth * -1; margin-left: @gridGutterWidth * -1;
margin-right: @gridGutterWidth * -1;
.clearfix(); .clearfix();
} }
@ -604,14 +620,14 @@
.fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) { .fluid (@fluidGridColumnWidth, @fluidGridGutterWidth) {
.spanX (@index) when (@index > 0) { .spanX (@index) when (@index > 0) {
(~".span@{index}") { .span(@index); } .span@{index} { .span(@index); }
.spanX(@index - 1); .spanX(@index - 1);
} }
.spanX (0) {} .spanX (0) {}
.offsetX (@index) when (@index > 0) { .offsetX (@index) when (@index > 0) {
(~'.offset@{index}') { .offset(@index); } .offset@{index} { .offset(@index); }
(~'.offset@{index}:first-child') { .offsetFirstChild(@index); } .offset@{index}:first-child { .offsetFirstChild(@index); }
.offsetX(@index - 1); .offsetX(@index - 1);
} }
.offsetX (0) {} .offsetX (0) {}
@ -659,7 +675,7 @@
.input(@gridColumnWidth, @gridGutterWidth) { .input(@gridColumnWidth, @gridGutterWidth) {
.spanX (@index) when (@index > 0) { .spanX (@index) when (@index > 0) {
(~"input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index}") { .span(@index); } input.span@{index}, textarea.span@{index}, .uneditable-input.span@{index} { .span(@index); }
.spanX(@index - 1); .spanX(@index - 1);
} }
.spanX (0) {} .spanX (0) {}
@ -683,5 +699,4 @@
.spanX (@gridColumns); .spanX (@gridColumns);
} }
} }

@ -26,8 +26,8 @@
top: 10%; top: 10%;
left: 50%; left: 50%;
z-index: @zindexModal; z-index: @zindexModal;
width: 660px; width: 560px;
margin-left: -330px; margin-left: -280px;
background-color: @white; background-color: @white;
border: 1px solid #999; border: 1px solid #999;
border: 1px solid rgba(0,0,0,.3); border: 1px solid rgba(0,0,0,.3);
@ -60,7 +60,7 @@
.modal-body { .modal-body {
position: relative; position: relative;
overflow-y: auto; overflow-y: auto;
max-height: 450px; max-height: 400px;
padding: 15px; padding: 15px;
} }
// Remove bottom margin if need be // Remove bottom margin if need be

@ -56,7 +56,8 @@
font-weight: 200; font-weight: 200;
color: @navbarBrandColor; color: @navbarBrandColor;
text-shadow: 0 1px 0 @navbarBackgroundHighlight; text-shadow: 0 1px 0 @navbarBackgroundHighlight;
&:hover { &:hover,
&:focus {
text-decoration: none; text-decoration: none;
} }
} }
@ -73,7 +74,8 @@
// ------------------------- // -------------------------
.navbar-link { .navbar-link {
color: @navbarLinkColor; color: @navbarLinkColor;
&:hover { &:hover,
&:focus {
color: @navbarLinkColorHover; color: @navbarLinkColorHover;
} }
} }
@ -95,7 +97,9 @@
} }
.navbar .btn-group .btn, .navbar .btn-group .btn,
.navbar .input-prepend .btn, .navbar .input-prepend .btn,
.navbar .input-append .btn { .navbar .input-append .btn,
.navbar .input-prepend .btn-group,
.navbar .input-append .btn-group {
margin-top: 0; // then undo the margin here so we don't accidentally double it margin-top: 0; // then undo the margin here so we don't accidentally double it
} }
@ -245,13 +249,12 @@
} }
.navbar .nav .dropdown-toggle .caret { .navbar .nav .dropdown-toggle .caret {
margin-top: 8px; margin-top: 8px;
} }
// Hover // Hover/focus
.navbar .nav > li > a:focus, .navbar .nav > li > a:focus,
.navbar .nav > li > a:hover { .navbar .nav > li > a:hover {
background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover from .active background-color: @navbarLinkBackgroundHover; // "transparent" is default to differentiate :hover/:focus from .active
color: @navbarLinkColorHover; color: @navbarLinkColorHover;
text-decoration: none; text-decoration: none;
} }
@ -335,10 +338,11 @@
} }
} }
// Caret should match text color on hover // Caret should match text color on hover/focus
.navbar .nav li.dropdown > a:hover .caret { .navbar .nav li.dropdown > a:hover .caret,
border-top-color: @navbarLinkColorActive; .navbar .nav li.dropdown > a:focus .caret {
border-bottom-color: @navbarLinkColorActive; border-top-color: @navbarLinkColorHover;
border-bottom-color: @navbarLinkColorHover;
} }
// Remove background color from open dropdown // Remove background color from open dropdown
@ -396,7 +400,8 @@
.nav > li > a { .nav > li > a {
color: @navbarInverseLinkColor; color: @navbarInverseLinkColor;
text-shadow: 0 -1px 0 rgba(0,0,0,.25); text-shadow: 0 -1px 0 rgba(0,0,0,.25);
&:hover { &:hover,
&:focus {
color: @navbarInverseLinkColorHover; color: @navbarInverseLinkColorHover;
} }
} }
@ -425,7 +430,8 @@
// Inline text links // Inline text links
.navbar-link { .navbar-link {
color: @navbarInverseLinkColor; color: @navbarInverseLinkColor;
&:hover { &:hover,
&:focus {
color: @navbarInverseLinkColorHover; color: @navbarInverseLinkColorHover;
} }
} }
@ -443,7 +449,8 @@
background-color: @navbarInverseLinkBackgroundActive; background-color: @navbarInverseLinkBackgroundActive;
color: @navbarInverseLinkColorActive; color: @navbarInverseLinkColorActive;
} }
.nav li.dropdown > a:hover .caret { .nav li.dropdown > a:hover .caret,
.nav li.dropdown > a:focus .caret {
border-top-color: @navbarInverseLinkColorActive; border-top-color: @navbarInverseLinkColorActive;
border-bottom-color: @navbarInverseLinkColorActive; border-bottom-color: @navbarInverseLinkColorActive;
} }

@ -16,7 +16,8 @@
.nav > li > a { .nav > li > a {
display: block; display: block;
} }
.nav > li > a:hover { .nav > li > a:hover,
.nav > li > a:focus {
text-decoration: none; text-decoration: none;
background-color: @grayLighter; background-color: @grayLighter;
} }
@ -68,7 +69,8 @@
padding: 3px 15px; padding: 3px 15px;
} }
.nav-list > .active > a, .nav-list > .active > a,
.nav-list > .active > a:hover { .nav-list > .active > a:hover,
.nav-list > .active > a:focus {
color: @white; color: @white;
text-shadow: 0 -1px 0 rgba(0,0,0,.2); text-shadow: 0 -1px 0 rgba(0,0,0,.2);
background-color: @linkColor; background-color: @linkColor;
@ -122,13 +124,15 @@
line-height: @baseLineHeight; line-height: @baseLineHeight;
border: 1px solid transparent; border: 1px solid transparent;
.border-radius(4px 4px 0 0); .border-radius(4px 4px 0 0);
&:hover { &:hover,
&:focus {
border-color: @grayLighter @grayLighter #ddd; border-color: @grayLighter @grayLighter #ddd;
} }
} }
// Active state, and it's :hover to override normal :hover // Active state, and it's :hover/:focus to override normal :hover/:focus
.nav-tabs > .active > a, .nav-tabs > .active > a,
.nav-tabs > .active > a:hover { .nav-tabs > .active > a:hover,
.nav-tabs > .active > a:focus {
color: @gray; color: @gray;
background-color: @bodyBackground; background-color: @bodyBackground;
border: 1px solid #ddd; border: 1px solid #ddd;
@ -151,7 +155,8 @@
// Active state // Active state
.nav-pills > .active > a, .nav-pills > .active > a,
.nav-pills > .active > a:hover { .nav-pills > .active > a:hover,
.nav-pills > .active > a:focus {
color: @white; color: @white;
background-color: @linkColor; background-color: @linkColor;
} }
@ -183,7 +188,8 @@
.nav-tabs.nav-stacked > li:last-child > a { .nav-tabs.nav-stacked > li:last-child > a {
.border-bottom-radius(4px); .border-bottom-radius(4px);
} }
.nav-tabs.nav-stacked > li > a:hover { .nav-tabs.nav-stacked > li > a:hover,
.nav-tabs.nav-stacked > li > a:focus {
border-color: #ddd; border-color: #ddd;
z-index: 2; z-index: 2;
} }
@ -216,7 +222,8 @@
border-bottom-color: @linkColor; border-bottom-color: @linkColor;
margin-top: 6px; margin-top: 6px;
} }
.nav .dropdown-toggle:hover .caret { .nav .dropdown-toggle:hover .caret,
.nav .dropdown-toggle:focus .caret {
border-top-color: @linkColorHover; border-top-color: @linkColorHover;
border-bottom-color: @linkColorHover; border-bottom-color: @linkColorHover;
} }
@ -236,9 +243,10 @@
border-bottom-color: @gray; border-bottom-color: @gray;
} }
// Active:hover dropdown links // Active:hover/:focus dropdown links
// ------------------------- // -------------------------
.nav > .dropdown.active > a:hover { .nav > .dropdown.active > a:hover,
.nav > .dropdown.active > a:focus {
cursor: pointer; cursor: pointer;
} }
@ -246,21 +254,24 @@
// ------------------------- // -------------------------
.nav-tabs .open .dropdown-toggle, .nav-tabs .open .dropdown-toggle,
.nav-pills .open .dropdown-toggle, .nav-pills .open .dropdown-toggle,
.nav > li.dropdown.open.active > a:hover { .nav > li.dropdown.open.active > a:hover,
.nav > li.dropdown.open.active > a:focus {
color: @white; color: @white;
background-color: @grayLight; background-color: @grayLight;
border-color: @grayLight; border-color: @grayLight;
} }
.nav li.dropdown.open .caret, .nav li.dropdown.open .caret,
.nav li.dropdown.open.active .caret, .nav li.dropdown.open.active .caret,
.nav li.dropdown.open a:hover .caret { .nav li.dropdown.open a:hover .caret,
.nav li.dropdown.open a:focus .caret {
border-top-color: @white; border-top-color: @white;
border-bottom-color: @white; border-bottom-color: @white;
.opacity(100); .opacity(100);
} }
// Dropdowns in stacked tabs // Dropdowns in stacked tabs
.tabs-stacked .open > a:hover { .tabs-stacked .open > a:hover,
.tabs-stacked .open > a:focus {
border-color: @grayLight; border-color: @grayLight;
} }
@ -311,13 +322,15 @@
} }
.tabs-below > .nav-tabs > li > a { .tabs-below > .nav-tabs > li > a {
.border-radius(0 0 4px 4px); .border-radius(0 0 4px 4px);
&:hover { &:hover,
&:focus {
border-bottom-color: transparent; border-bottom-color: transparent;
border-top-color: #ddd; border-top-color: #ddd;
} }
} }
.tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a,
.tabs-below > .nav-tabs > .active > a:hover { .tabs-below > .nav-tabs > .active > a:hover,
.tabs-below > .nav-tabs > .active > a:focus {
border-color: transparent #ddd #ddd #ddd; border-color: transparent #ddd #ddd #ddd;
} }
@ -346,11 +359,13 @@
margin-right: -1px; margin-right: -1px;
.border-radius(4px 0 0 4px); .border-radius(4px 0 0 4px);
} }
.tabs-left > .nav-tabs > li > a:hover { .tabs-left > .nav-tabs > li > a:hover,
.tabs-left > .nav-tabs > li > a:focus {
border-color: @grayLighter #ddd @grayLighter @grayLighter; border-color: @grayLighter #ddd @grayLighter @grayLighter;
} }
.tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a,
.tabs-left > .nav-tabs .active > a:hover { .tabs-left > .nav-tabs .active > a:hover,
.tabs-left > .nav-tabs .active > a:focus {
border-color: #ddd transparent #ddd #ddd; border-color: #ddd transparent #ddd #ddd;
*border-right-color: @white; *border-right-color: @white;
} }
@ -365,11 +380,13 @@
margin-left: -1px; margin-left: -1px;
.border-radius(0 4px 4px 0); .border-radius(0 4px 4px 0);
} }
.tabs-right > .nav-tabs > li > a:hover { .tabs-right > .nav-tabs > li > a:hover,
.tabs-right > .nav-tabs > li > a:focus {
border-color: @grayLighter @grayLighter @grayLighter #ddd; border-color: @grayLighter @grayLighter @grayLighter #ddd;
} }
.tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a,
.tabs-right > .nav-tabs .active > a:hover { .tabs-right > .nav-tabs .active > a:hover,
.tabs-right > .nav-tabs .active > a:focus {
border-color: #ddd #ddd #ddd transparent; border-color: #ddd #ddd #ddd transparent;
*border-left-color: @white; *border-left-color: @white;
} }
@ -383,8 +400,9 @@
.nav > .disabled > a { .nav > .disabled > a {
color: @grayLight; color: @grayLight;
} }
// Nuke hover effects // Nuke hover/focus effects
.nav > .disabled > a:hover { .nav > .disabled > a:hover,
.nav > .disabled > a:focus {
text-decoration: none; text-decoration: none;
background-color: transparent; background-color: transparent;
cursor: default; cursor: default;

@ -20,7 +20,8 @@
border: 1px solid #ddd; border: 1px solid #ddd;
.border-radius(15px); .border-radius(15px);
} }
.pager li > a:hover { .pager li > a:hover,
.pager li > a:focus {
text-decoration: none; text-decoration: none;
background-color: #f5f5f5; background-color: #f5f5f5;
} }
@ -34,6 +35,7 @@
} }
.pager .disabled > a, .pager .disabled > a,
.pager .disabled > a:hover, .pager .disabled > a:hover,
.pager .disabled > a:focus,
.pager .disabled > span { .pager .disabled > span {
color: @grayLight; color: @grayLight;
background-color: #fff; background-color: #fff;

@ -32,6 +32,7 @@
border-left-width: 0; border-left-width: 0;
} }
.pagination ul > li > a:hover, .pagination ul > li > a:hover,
.pagination ul > li > a:focus,
.pagination ul > .active > a, .pagination ul > .active > a,
.pagination ul > .active > span { .pagination ul > .active > span {
background-color: @paginationActiveBackground; background-color: @paginationActiveBackground;
@ -43,7 +44,8 @@
} }
.pagination ul > .disabled > span, .pagination ul > .disabled > span,
.pagination ul > .disabled > a, .pagination ul > .disabled > a,
.pagination ul > .disabled > a:hover { .pagination ul > .disabled > a:hover,
.pagination ul > .disabled > a:focus {
color: @grayLight; color: @grayLight;
background-color: transparent; background-color: transparent;
cursor: default; cursor: default;

@ -9,7 +9,7 @@
left: 0; left: 0;
z-index: @zindexPopover; z-index: @zindexPopover;
display: none; display: none;
width: 236px; max-width: 276px;
padding: 1px; padding: 1px;
text-align: left; // Reset given new insertion method text-align: left; // Reset given new insertion method
background-color: @popoverBackground; background-color: @popoverBackground;
@ -40,6 +40,10 @@
background-color: @popoverTitleBackground; background-color: @popoverTitleBackground;
border-bottom: 1px solid darken(@popoverTitleBackground, 5%); border-bottom: 1px solid darken(@popoverTitleBackground, 5%);
.border-radius(5px 5px 0 0); .border-radius(5px 5px 0 0);
&:empty {
display: none;
}
} }
.popover-content { .popover-content {

@ -23,7 +23,8 @@ a {
color: @linkColor; color: @linkColor;
text-decoration: none; text-decoration: none;
} }
a:hover { a:hover,
a:focus {
color: @linkColorHover; color: @linkColorHover;
text-decoration: underline; text-decoration: underline;
} }

@ -28,7 +28,7 @@
margin-top: 1px; margin-top: 1px;
} }
/* White icons with optional class, or on hover/active states of certain elements */ /* White icons with optional class, or on hover/focus/active states of certain elements */
.icon-white, .icon-white,
.nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class^="icon-"],
.nav-pills > .active > a > [class*=" icon-"], .nav-pills > .active > a > [class*=" icon-"],
@ -37,11 +37,15 @@
.navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"],
.navbar-inverse .nav > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"],
.dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:hover > [class^="icon-"],
.dropdown-menu > li > a:focus > [class^="icon-"],
.dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"],
.dropdown-menu > li > a:focus > [class*=" icon-"],
.dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class^="icon-"],
.dropdown-menu > .active > a > [class*=" icon-"], .dropdown-menu > .active > a > [class*=" icon-"],
.dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:hover > a > [class^="icon-"],
.dropdown-submenu:hover > a > [class*=" icon-"] { .dropdown-submenu:focus > a > [class^="icon-"],
.dropdown-submenu:hover > a > [class*=" icon-"],
.dropdown-submenu:focus > a > [class*=" icon-"] {
background-image: url("@{iconWhiteSpritePath}"); background-image: url("@{iconWhiteSpritePath}");
} }
@ -166,7 +170,7 @@
.icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off .icon-chevron-down { background-position: -313px -119px; } // 1px, 1px off
.icon-retweet { background-position: -336px -120px; } .icon-retweet { background-position: -336px -120px; }
.icon-shopping-cart { background-position: -360px -120px; } .icon-shopping-cart { background-position: -360px -120px; }
.icon-folder-close { background-position: -384px -120px; } .icon-folder-close { background-position: -384px -120px; width: 16px; }
.icon-folder-open { background-position: -408px -120px; width: 16px; } .icon-folder-open { background-position: -408px -120px; width: 16px; }
.icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off .icon-resize-vertical { background-position: -432px -119px; } // 1px, 1px off
.icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off .icon-resize-horizontal { background-position: -456px -118px; } // 1px, 2px off

@ -93,24 +93,32 @@ table {
tbody:first-child tr:first-child td { tbody:first-child tr:first-child td {
border-top: 0; border-top: 0;
} }
// For first th or td in the first row in the first thead or tbody // For first th/td in the first row in the first thead or tbody
thead:first-child tr:first-child > th:first-child, thead:first-child tr:first-child > th:first-child,
tbody:first-child tr:first-child > td:first-child { tbody:first-child tr:first-child > td:first-child,
tbody:first-child tr:first-child > th:first-child {
.border-top-left-radius(@baseBorderRadius); .border-top-left-radius(@baseBorderRadius);
} }
// For last th/td in the first row in the first thead or tbody
thead:first-child tr:first-child > th:last-child, thead:first-child tr:first-child > th:last-child,
tbody:first-child tr:first-child > td:last-child { tbody:first-child tr:first-child > td:last-child,
tbody:first-child tr:first-child > th:last-child {
.border-top-right-radius(@baseBorderRadius); .border-top-right-radius(@baseBorderRadius);
} }
// For first th or td in the last row in the last thead or tbody // For first th/td (can be either) in the last row in the last thead, tbody, and tfoot
thead:last-child tr:last-child > th:first-child, thead:last-child tr:last-child > th:first-child,
tbody:last-child tr:last-child > td:first-child, tbody:last-child tr:last-child > td:first-child,
tfoot:last-child tr:last-child > td:first-child { tbody:last-child tr:last-child > th:first-child,
tfoot:last-child tr:last-child > td:first-child,
tfoot:last-child tr:last-child > th:first-child {
.border-bottom-left-radius(@baseBorderRadius); .border-bottom-left-radius(@baseBorderRadius);
} }
// For last th/td (can be either) in the last row in the last thead, tbody, and tfoot
thead:last-child tr:last-child > th:last-child, thead:last-child tr:last-child > th:last-child,
tbody:last-child tr:last-child > td:last-child, tbody:last-child tr:last-child > td:last-child,
tfoot:last-child tr:last-child > td:last-child { tbody:last-child tr:last-child > th:last-child,
tfoot:last-child tr:last-child > td:last-child,
tfoot:last-child tr:last-child > th:last-child {
.border-bottom-right-radius(@baseBorderRadius); .border-bottom-right-radius(@baseBorderRadius);
} }
@ -122,7 +130,6 @@ table {
.border-bottom-right-radius(0); .border-bottom-right-radius(0);
} }
// Special fixes to round the left border on the first td/th // Special fixes to round the left border on the first td/th
caption + thead tr:first-child th:first-child, caption + thead tr:first-child th:first-child,
caption + tbody tr:first-child td:first-child, caption + tbody tr:first-child td:first-child,
@ -161,8 +168,8 @@ table {
// Placed here since it has to come after the potential zebra striping // Placed here since it has to come after the potential zebra striping
.table-hover { .table-hover {
tbody { tbody {
tr:hover td, tr:hover > td,
tr:hover th { tr:hover > th {
background-color: @tableBackgroundHover; background-color: @tableBackgroundHover;
} }
} }
@ -206,32 +213,32 @@ table th[class*="span"],
// Exact selectors below required to override .table-striped // Exact selectors below required to override .table-striped
.table tbody tr { .table tbody tr {
&.success td { &.success > td {
background-color: @successBackground; background-color: @successBackground;
} }
&.error td { &.error > td {
background-color: @errorBackground; background-color: @errorBackground;
} }
&.warning td { &.warning > td {
background-color: @warningBackground; background-color: @warningBackground;
} }
&.info td { &.info > td {
background-color: @infoBackground; background-color: @infoBackground;
} }
} }
// Hover states for .table-hover // Hover states for .table-hover
.table-hover tbody tr { .table-hover tbody tr {
&.success:hover td { &.success:hover > td {
background-color: darken(@successBackground, 5%); background-color: darken(@successBackground, 5%);
} }
&.error:hover td { &.error:hover > td {
background-color: darken(@errorBackground, 5%); background-color: darken(@errorBackground, 5%);
} }
&.warning:hover td { &.warning:hover > td {
background-color: darken(@warningBackground, 5%); background-color: darken(@warningBackground, 5%);
} }
&.info:hover td { &.info:hover > td {
background-color: darken(@infoBackground, 5%); background-color: darken(@infoBackground, 5%);
} }
} }

@ -33,8 +33,9 @@
.box-shadow(0 1px 3px rgba(0,0,0,.055)); .box-shadow(0 1px 3px rgba(0,0,0,.055));
.transition(all .2s ease-in-out); .transition(all .2s ease-in-out);
} }
// Add a hover state for linked versions only // Add a hover/focus state for linked versions only
a.thumbnail:hover { a.thumbnail:hover,
a.thumbnail:focus {
border-color: @linkColor; border-color: @linkColor;
.box-shadow(0 1px 4px rgba(0,105,214,.25)); .box-shadow(0 1px 4px rgba(0,105,214,.25));
} }

@ -9,20 +9,20 @@
z-index: @zindexTooltip; z-index: @zindexTooltip;
display: block; display: block;
visibility: visible; visibility: visible;
padding: 5px;
font-size: 11px; font-size: 11px;
line-height: 1.4;
.opacity(0); .opacity(0);
&.in { .opacity(80); } &.in { .opacity(80); }
&.top { margin-top: -3px; } &.top { margin-top: -3px; padding: 5px 0; }
&.right { margin-left: 3px; } &.right { margin-left: 3px; padding: 0 5px; }
&.bottom { margin-top: 3px; } &.bottom { margin-top: 3px; padding: 5px 0; }
&.left { margin-left: -3px; } &.left { margin-left: -3px; padding: 0 5px; }
} }
// Wrapper for the tooltip content // Wrapper for the tooltip content
.tooltip-inner { .tooltip-inner {
max-width: 200px; max-width: 200px;
padding: 3px 8px; padding: 8px;
color: @tooltipColor; color: @tooltipColor;
text-align: center; text-align: center;
text-decoration: none; text-decoration: none;

@ -29,19 +29,28 @@ cite { font-style: normal; }
// Utility classes // Utility classes
.muted { color: @grayLight; } .muted { color: @grayLight; }
a.muted:hover { color: darken(@grayLight, 10%); } a.muted:hover,
a.muted:focus { color: darken(@grayLight, 10%); }
.text-warning { color: @warningText; } .text-warning { color: @warningText; }
a.text-warning:hover { color: darken(@warningText, 10%); } a.text-warning:hover,
a.text-warning:focus { color: darken(@warningText, 10%); }
.text-error { color: @errorText; } .text-error { color: @errorText; }
a.text-error:hover { color: darken(@errorText, 10%); } a.text-error:hover,
a.text-error:focus { color: darken(@errorText, 10%); }
.text-info { color: @infoText; } .text-info { color: @infoText; }
a.text-info:hover { color: darken(@infoText, 10%); } a.text-info:hover,
a.text-info:focus { color: darken(@infoText, 10%); }
.text-success { color: @successText; } .text-success { color: @successText; }
a.text-success:hover { color: darken(@successText, 10%); } a.text-success:hover,
a.text-success:focus { color: darken(@successText, 10%); }
.text-left { text-align: left; }
.text-right { text-align: right; }
.text-center { text-align: center; }
// Headings // Headings
@ -119,8 +128,9 @@ ul.inline,
ol.inline { ol.inline {
margin-left: 0; margin-left: 0;
list-style: none; list-style: none;
& > li { > li {
display: inline-block; display: inline-block;
.ie7-inline-block();
padding-left: 5px; padding-left: 5px;
padding-right: 5px; padding-right: 5px;
} }
@ -185,7 +195,9 @@ blockquote {
border-left: 5px solid @grayLighter; border-left: 5px solid @grayLighter;
p { p {
margin-bottom: 0; margin-bottom: 0;
#font > .shorthand(16px,300,@baseLineHeight * 1.25); font-size: @baseFontSize * 1.25;
font-weight: 300;
line-height: 1.25;
} }
small { small {
display: block; display: block;

@ -20,7 +20,7 @@
// Accent colors // Accent colors
// ------------------------- // -------------------------
@blue: #065EFE; @blue: #049cdb;
@blueDark: #0064cd; @blueDark: #0064cd;
@green: #46a546; @green: #46a546;
@red: #9d261d; @red: #9d261d;
@ -86,7 +86,7 @@
// ------------------------- // -------------------------
@btnBackground: @white; @btnBackground: @white;
@btnBackgroundHighlight: darken(@white, 10%); @btnBackgroundHighlight: darken(@white, 10%);
@btnBorder: #bbb; @btnBorder: #ccc;
@btnPrimaryBackground: @linkColor; @btnPrimaryBackground: @linkColor;
@btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%); @btnPrimaryBackgroundHighlight: spin(@btnPrimaryBackground, 20%);
@ -195,13 +195,13 @@
@navbarBrandColor: @navbarLinkColor; @navbarBrandColor: @navbarLinkColor;
// Inverted navbar // Inverted navbar
@navbarInverseBackground: @grayDarker; @navbarInverseBackground: #111111;
@navbarInverseBackgroundHighlight: @grayDarker; @navbarInverseBackgroundHighlight: #222222;
@navbarInverseBorder: @grayDarker; @navbarInverseBorder: #252525;
@navbarInverseText: @blue; @navbarInverseText: @grayLight;
@navbarInverseLinkColor: @blue; @navbarInverseLinkColor: @grayLight;
@navbarInverseLinkColorHover: @blue; @navbarInverseLinkColorHover: @white;
@navbarInverseLinkColorActive: @navbarInverseLinkColorHover; @navbarInverseLinkColorActive: @navbarInverseLinkColorHover;
@navbarInverseLinkBackgroundHover: transparent; @navbarInverseLinkBackgroundHover: transparent;
@navbarInverseLinkBackgroundActive: @navbarInverseBackground; @navbarInverseLinkBackgroundActive: @navbarInverseBackground;

@ -1,5 +1,5 @@
/* =================================================== /* ===================================================
* bootstrap-transition.js v2.2.2 * bootstrap-transition.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#transitions * http://twitter.github.com/bootstrap/javascript.html#transitions
* =================================================== * ===================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -58,7 +58,7 @@
}) })
}(window.jQuery);/* ========================================================== }(window.jQuery);/* ==========================================================
* bootstrap-alert.js v2.2.2 * bootstrap-alert.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#alerts * http://twitter.github.com/bootstrap/javascript.html#alerts
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -156,7 +156,7 @@
$(document).on('click.alert.data-api', dismiss, Alert.prototype.close) $(document).on('click.alert.data-api', dismiss, Alert.prototype.close)
}(window.jQuery);/* ============================================================ }(window.jQuery);/* ============================================================
* bootstrap-button.js v2.2.2 * bootstrap-button.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#buttons * http://twitter.github.com/bootstrap/javascript.html#buttons
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -260,7 +260,7 @@
}) })
}(window.jQuery);/* ========================================================== }(window.jQuery);/* ==========================================================
* bootstrap-carousel.js v2.2.2 * bootstrap-carousel.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#carousel * http://twitter.github.com/bootstrap/javascript.html#carousel
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -289,6 +289,7 @@
var Carousel = function (element, options) { var Carousel = function (element, options) {
this.$element = $(element) this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options this.options = options
this.options.pause == 'hover' && this.$element this.options.pause == 'hover' && this.$element
.on('mouseenter', $.proxy(this.pause, this)) .on('mouseenter', $.proxy(this.pause, this))
@ -299,19 +300,24 @@
cycle: function (e) { cycle: function (e) {
if (!e) this.paused = false if (!e) this.paused = false
if (this.interval) clearInterval(this.interval);
this.options.interval this.options.interval
&& !this.paused && !this.paused
&& (this.interval = setInterval($.proxy(this.next, this), this.options.interval)) && (this.interval = setInterval($.proxy(this.next, this), this.options.interval))
return this return this
} }
, getActiveIndex: function () {
this.$active = this.$element.find('.item.active')
this.$items = this.$active.parent().children()
return this.$items.index(this.$active)
}
, to: function (pos) { , to: function (pos) {
var $active = this.$element.find('.item.active') var activeIndex = this.getActiveIndex()
, children = $active.parent().children()
, activePos = children.index($active)
, that = this , that = this
if (pos > (children.length - 1) || pos < 0) return if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) { if (this.sliding) {
return this.$element.one('slid', function () { return this.$element.one('slid', function () {
@ -319,11 +325,11 @@
}) })
} }
if (activePos == pos) { if (activeIndex == pos) {
return this.pause().cycle() return this.pause().cycle()
} }
return this.slide(pos > activePos ? 'next' : 'prev', $(children[pos])) return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
} }
, pause: function (e) { , pause: function (e) {
@ -364,10 +370,19 @@
e = $.Event('slide', { e = $.Event('slide', {
relatedTarget: $next[0] relatedTarget: $next[0]
, direction: direction
}) })
if ($next.hasClass('active')) return if ($next.hasClass('active')) return
if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active')
this.$element.one('slid', function () {
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
$nextIndicator && $nextIndicator.addClass('active')
})
}
if ($.support.transition && this.$element.hasClass('slide')) { if ($.support.transition && this.$element.hasClass('slide')) {
this.$element.trigger(e) this.$element.trigger(e)
if (e.isDefaultPrevented()) return if (e.isDefaultPrevented()) return
@ -412,7 +427,7 @@
if (!data) $this.data('carousel', (data = new Carousel(this, options))) if (!data) $this.data('carousel', (data = new Carousel(this, options)))
if (typeof option == 'number') data.to(option) if (typeof option == 'number') data.to(option)
else if (action) data[action]() else if (action) data[action]()
else if (options.interval) data.cycle() else if (options.interval) data.pause().cycle()
}) })
} }
@ -435,16 +450,23 @@
/* CAROUSEL DATA-API /* CAROUSEL DATA-API
* ================= */ * ================= */
$(document).on('click.carousel.data-api', '[data-slide]', function (e) { $(document).on('click.carousel.data-api', '[data-slide], [data-slide-to]', function (e) {
var $this = $(this), href var $this = $(this), href
, $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7 , $target = $($this.attr('data-target') || (href = $this.attr('href')) && href.replace(/.*(?=#[^\s]+$)/, '')) //strip for ie7
, options = $.extend({}, $target.data(), $this.data()) , options = $.extend({}, $target.data(), $this.data())
, slideIndex
$target.carousel(options) $target.carousel(options)
if (slideIndex = $this.attr('data-slide-to')) {
$target.data('carousel').pause().to(slideIndex).cycle()
}
e.preventDefault() e.preventDefault()
}) })
}(window.jQuery);/* ============================================================= }(window.jQuery);/* =============================================================
* bootstrap-collapse.js v2.2.2 * bootstrap-collapse.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#collapse * http://twitter.github.com/bootstrap/javascript.html#collapse
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -497,7 +519,7 @@
, actives , actives
, hasData , hasData
if (this.transitioning) return if (this.transitioning || this.$element.hasClass('in')) return
dimension = this.dimension() dimension = this.dimension()
scroll = $.camelCase(['scroll', dimension].join('-')) scroll = $.camelCase(['scroll', dimension].join('-'))
@ -517,7 +539,7 @@
, hide: function () { , hide: function () {
var dimension var dimension
if (this.transitioning) return if (this.transitioning || !this.$element.hasClass('in')) return
dimension = this.dimension() dimension = this.dimension()
this.reset(this.$element[dimension]()) this.reset(this.$element[dimension]())
this.transition('removeClass', $.Event('hide'), 'hidden') this.transition('removeClass', $.Event('hide'), 'hidden')
@ -574,7 +596,7 @@
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
, data = $this.data('collapse') , data = $this.data('collapse')
, options = typeof option == 'object' && option , options = $.extend({}, $.fn.collapse.defaults, $this.data(), typeof option == 'object' && option)
if (!data) $this.data('collapse', (data = new Collapse(this, options))) if (!data) $this.data('collapse', (data = new Collapse(this, options)))
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
@ -610,7 +632,7 @@
}) })
}(window.jQuery);/* ============================================================ }(window.jQuery);/* ============================================================
* bootstrap-dropdown.js v2.2.2 * bootstrap-dropdown.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#dropdowns * http://twitter.github.com/bootstrap/javascript.html#dropdowns
* ============================================================ * ============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -692,7 +714,10 @@
isActive = $parent.hasClass('open') isActive = $parent.hasClass('open')
if (!isActive || (isActive && e.keyCode == 27)) return $this.click() if (!isActive || (isActive && e.keyCode == 27)) {
if (e.which == 27) $parent.find(toggle).focus()
return $this.click()
}
$items = $('[role=menu] li:not(.divider):visible a', $parent) $items = $('[role=menu] li:not(.divider):visible a', $parent)
@ -726,8 +751,9 @@
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
} }
$parent = $(selector) $parent = selector && $(selector)
$parent.length || ($parent = $this.parent())
if (!$parent || !$parent.length) $parent = $this.parent()
return $parent return $parent
} }
@ -763,14 +789,15 @@
* =================================== */ * =================================== */
$(document) $(document)
.on('click.dropdown.data-api touchstart.dropdown.data-api', clearMenus) .on('click.dropdown.data-api', clearMenus)
.on('click.dropdown touchstart.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('touchstart.dropdown.data-api', '.dropdown-menu', function (e) { e.stopPropagation() }) .on('.dropdown-menu', function (e) { e.stopPropagation() })
.on('click.dropdown.data-api touchstart.dropdown.data-api' , toggle, Dropdown.prototype.toggle) .on('click.dropdown.data-api' , toggle, Dropdown.prototype.toggle)
.on('keydown.dropdown.data-api touchstart.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown) .on('keydown.dropdown.data-api', toggle + ', [role=menu]' , Dropdown.prototype.keydown)
}(window.jQuery);/* ========================================================= }(window.jQuery);
* bootstrap-modal.js v2.2.2 /* =========================================================
* bootstrap-modal.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#modals * http://twitter.github.com/bootstrap/javascript.html#modals
* ========================================================= * =========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -831,8 +858,7 @@
that.$element.appendTo(document.body) //don't move modals dom position that.$element.appendTo(document.body) //don't move modals dom position
} }
that.$element that.$element.show()
.show()
if (transition) { if (transition) {
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
@ -910,12 +936,13 @@
}) })
} }
, hideModal: function (that) { , hideModal: function () {
this.$element var that = this
.hide() this.$element.hide()
.trigger('hidden') this.backdrop(function () {
that.removeBackdrop()
this.backdrop() that.$element.trigger('hidden')
})
} }
, removeBackdrop: function () { , removeBackdrop: function () {
@ -943,6 +970,8 @@
this.$backdrop.addClass('in') this.$backdrop.addClass('in')
if (!callback) return
doAnimate ? doAnimate ?
this.$backdrop.one($.support.transition.end, callback) : this.$backdrop.one($.support.transition.end, callback) :
callback() callback()
@ -951,8 +980,8 @@
this.$backdrop.removeClass('in') this.$backdrop.removeClass('in')
$.support.transition && this.$element.hasClass('fade')? $.support.transition && this.$element.hasClass('fade')?
this.$backdrop.one($.support.transition.end, $.proxy(this.removeBackdrop, this)) : this.$backdrop.one($.support.transition.end, callback) :
this.removeBackdrop() callback()
} else if (callback) { } else if (callback) {
callback() callback()
@ -1015,7 +1044,7 @@
}(window.jQuery); }(window.jQuery);
/* =========================================================== /* ===========================================================
* bootstrap-tooltip.js v2.2.2 * bootstrap-tooltip.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tooltips * http://twitter.github.com/bootstrap/javascript.html#tooltips
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* =========================================================== * ===========================================================
@ -1054,20 +1083,28 @@
, init: function (type, element, options) { , init: function (type, element, options) {
var eventIn var eventIn
, eventOut , eventOut
, triggers
, trigger
, i
this.type = type this.type = type
this.$element = $(element) this.$element = $(element)
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.enabled = true this.enabled = true
if (this.options.trigger == 'click') { triggers = this.options.trigger.split(' ')
for (i = triggers.length; i--;) {
trigger = triggers[i]
if (trigger == 'click') {
this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this)) this.$element.on('click.' + this.type, this.options.selector, $.proxy(this.toggle, this))
} else if (this.options.trigger != 'manual') { } else if (trigger != 'manual') {
eventIn = this.options.trigger == 'hover' ? 'mouseenter' : 'focus' eventIn = trigger == 'hover' ? 'mouseenter' : 'focus'
eventOut = this.options.trigger == 'hover' ? 'mouseleave' : 'blur' eventOut = trigger == 'hover' ? 'mouseleave' : 'blur'
this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this)) this.$element.on(eventIn + '.' + this.type, this.options.selector, $.proxy(this.enter, this))
this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this)) this.$element.on(eventOut + '.' + this.type, this.options.selector, $.proxy(this.leave, this))
} }
}
this.options.selector ? this.options.selector ?
(this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) : (this._options = $.extend({}, this.options, { trigger: 'manual', selector: '' })) :
@ -1075,7 +1112,7 @@
} }
, getOptions: function (options) { , getOptions: function (options) {
options = $.extend({}, $.fn[this.type].defaults, options, this.$element.data()) options = $.extend({}, $.fn[this.type].defaults, this.$element.data(), options)
if (options.delay && typeof options.delay == 'number') { if (options.delay && typeof options.delay == 'number') {
options.delay = { options.delay = {
@ -1113,14 +1150,16 @@
, show: function () { , show: function () {
var $tip var $tip
, inside
, pos , pos
, actualWidth , actualWidth
, actualHeight , actualHeight
, placement , placement
, tp , tp
, e = $.Event('show')
if (this.hasContent() && this.enabled) { if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$tip = this.tip() $tip = this.tip()
this.setContent() this.setContent()
@ -1132,19 +1171,18 @@
this.options.placement.call(this, $tip[0], this.$element[0]) : this.options.placement.call(this, $tip[0], this.$element[0]) :
this.options.placement this.options.placement
inside = /in/.test(placement)
$tip $tip
.detach() .detach()
.css({ top: 0, left: 0, display: 'block' }) .css({ top: 0, left: 0, display: 'block' })
.insertAfter(this.$element)
pos = this.getPosition(inside) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
pos = this.getPosition()
actualWidth = $tip[0].offsetWidth actualWidth = $tip[0].offsetWidth
actualHeight = $tip[0].offsetHeight actualHeight = $tip[0].offsetHeight
switch (inside ? placement.split(' ')[1] : placement) { switch (placement) {
case 'bottom': case 'bottom':
tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2} tp = {top: pos.top + pos.height, left: pos.left + pos.width / 2 - actualWidth / 2}
break break
@ -1159,11 +1197,56 @@
break break
} }
this.applyPlacement(tp, placement)
this.$element.trigger('shown')
}
}
, applyPlacement: function(offset, placement){
var $tip = this.tip()
, width = $tip[0].offsetWidth
, height = $tip[0].offsetHeight
, actualWidth
, actualHeight
, delta
, replace
$tip $tip
.offset(tp) .offset(offset)
.addClass(placement) .addClass(placement)
.addClass('in') .addClass('in')
actualWidth = $tip[0].offsetWidth
actualHeight = $tip[0].offsetHeight
if (placement == 'top' && actualHeight != height) {
offset.top = offset.top + height - actualHeight
replace = true
} }
if (placement == 'bottom' || placement == 'top') {
delta = 0
if (offset.left < 0){
delta = offset.left * -2
offset.left = 0
$tip.offset(offset)
actualWidth = $tip[0].offsetWidth
actualHeight = $tip[0].offsetHeight
}
this.replaceArrow(delta - width + actualWidth, actualWidth, 'left')
} else {
this.replaceArrow(actualHeight - height, actualHeight, 'top')
}
if (replace) $tip.offset(offset)
}
, replaceArrow: function(delta, dimension, position){
this
.arrow()
.css(position, delta ? (50 * (1 - delta / dimension) + "%") : '')
} }
, setContent: function () { , setContent: function () {
@ -1177,6 +1260,10 @@
, hide: function () { , hide: function () {
var that = this var that = this
, $tip = this.tip() , $tip = this.tip()
, e = $.Event('hide')
this.$element.trigger(e)
if (e.isDefaultPrevented()) return
$tip.removeClass('in') $tip.removeClass('in')
@ -1195,13 +1282,15 @@
removeWithAnimation() : removeWithAnimation() :
$tip.detach() $tip.detach()
this.$element.trigger('hidden')
return this return this
} }
, fixTitle: function () { , fixTitle: function () {
var $e = this.$element var $e = this.$element
if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') { if ($e.attr('title') || typeof($e.attr('data-original-title')) != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').removeAttr('title') $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
} }
} }
@ -1209,11 +1298,12 @@
return this.getTitle() return this.getTitle()
} }
, getPosition: function (inside) { , getPosition: function () {
return $.extend({}, (inside ? {top: 0, left: 0} : this.$element.offset()), { var el = this.$element[0]
width: this.$element[0].offsetWidth return $.extend({}, (typeof el.getBoundingClientRect == 'function') ? el.getBoundingClientRect() : {
, height: this.$element[0].offsetHeight width: el.offsetWidth
}) , height: el.offsetHeight
}, this.$element.offset())
} }
, getTitle: function () { , getTitle: function () {
@ -1231,6 +1321,10 @@
return this.$tip = this.$tip || $(this.options.template) return this.$tip = this.$tip || $(this.options.template)
} }
, arrow: function(){
return this.$arrow = this.$arrow || this.tip().find(".tooltip-arrow")
}
, validate: function () { , validate: function () {
if (!this.$element[0].parentNode) { if (!this.$element[0].parentNode) {
this.hide() this.hide()
@ -1252,8 +1346,8 @@
} }
, toggle: function (e) { , toggle: function (e) {
var self = $(e.currentTarget)[this.type](this._options).data(this.type) var self = e ? $(e.currentTarget)[this.type](this._options).data(this.type) : this
self[self.tip().hasClass('in') ? 'hide' : 'show']() self.tip().hasClass('in') ? self.hide() : self.show()
} }
, destroy: function () { , destroy: function () {
@ -1285,10 +1379,11 @@
, placement: 'top' , placement: 'top'
, selector: false , selector: false
, template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>' , template: '<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>'
, trigger: 'hover' , trigger: 'hover focus'
, title: '' , title: ''
, delay: 0 , delay: 0
, html: false , html: false
, container: false
} }
@ -1300,8 +1395,9 @@
return this return this
} }
}(window.jQuery);/* =========================================================== }(window.jQuery);
* bootstrap-popover.js v2.2.2 /* ===========================================================
* bootstrap-popover.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#popovers * http://twitter.github.com/bootstrap/javascript.html#popovers
* =========================================================== * ===========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -1360,8 +1456,8 @@
, $e = this.$element , $e = this.$element
, o = this.options , o = this.options
content = $e.attr('data-content') content = (typeof o.content == 'function' ? o.content.call($e[0]) : o.content)
|| (typeof o.content == 'function' ? o.content.call($e[0]) : o.content) || $e.attr('data-content')
return content return content
} }
@ -1401,7 +1497,7 @@
placement: 'right' placement: 'right'
, trigger: 'click' , trigger: 'click'
, content: '' , content: ''
, template: '<div class="popover"><div class="arrow"></div><div class="popover-inner"><h3 class="popover-title"></h3><div class="popover-content"></div></div></div>' , template: '<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'
}) })
@ -1413,8 +1509,9 @@
return this return this
} }
}(window.jQuery);/* ============================================================= }(window.jQuery);
* bootstrap-scrollspy.js v2.2.2 /* =============================================================
* bootstrap-scrollspy.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#scrollspy * http://twitter.github.com/bootstrap/javascript.html#scrollspy
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -1474,7 +1571,7 @@
, $href = /^#\w/.test(href) && $(href) , $href = /^#\w/.test(href) && $(href)
return ( $href return ( $href
&& $href.length && $href.length
&& [[ $href.position().top + self.$scrollElement.scrollTop(), href ]] ) || null && [[ $href.position().top + (!$.isWindow(self.$scrollElement.get(0)) && self.$scrollElement.scrollTop()), href ]] ) || null
}) })
.sort(function (a, b) { return a[0] - b[0] }) .sort(function (a, b) { return a[0] - b[0] })
.each(function () { .each(function () {
@ -1575,7 +1672,7 @@
}) })
}(window.jQuery);/* ======================================================== }(window.jQuery);/* ========================================================
* bootstrap-tab.js v2.2.2 * bootstrap-tab.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#tabs * http://twitter.github.com/bootstrap/javascript.html#tabs
* ======================================================== * ========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -1718,7 +1815,7 @@
}) })
}(window.jQuery);/* ============================================================= }(window.jQuery);/* =============================================================
* bootstrap-typeahead.js v2.2.2 * bootstrap-typeahead.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#typeahead * http://twitter.github.com/bootstrap/javascript.html#typeahead
* ============================================================= * =============================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.
@ -1891,6 +1988,7 @@
, listen: function () { , listen: function () {
this.$element this.$element
.on('focus', $.proxy(this.focus, this))
.on('blur', $.proxy(this.blur, this)) .on('blur', $.proxy(this.blur, this))
.on('keypress', $.proxy(this.keypress, this)) .on('keypress', $.proxy(this.keypress, this))
.on('keyup', $.proxy(this.keyup, this)) .on('keyup', $.proxy(this.keyup, this))
@ -1902,6 +2000,7 @@
this.$menu this.$menu
.on('click', $.proxy(this.click, this)) .on('click', $.proxy(this.click, this))
.on('mouseenter', 'li', $.proxy(this.mouseenter, this)) .on('mouseenter', 'li', $.proxy(this.mouseenter, this))
.on('mouseleave', 'li', $.proxy(this.mouseleave, this))
} }
, eventSupported: function(eventName) { , eventSupported: function(eventName) {
@ -1975,22 +2074,33 @@
e.preventDefault() e.preventDefault()
} }
, focus: function (e) {
this.focused = true
}
, blur: function (e) { , blur: function (e) {
var that = this this.focused = false
setTimeout(function () { that.hide() }, 150) if (!this.mousedover && this.shown) this.hide()
} }
, click: function (e) { , click: function (e) {
e.stopPropagation() e.stopPropagation()
e.preventDefault() e.preventDefault()
this.select() this.select()
this.$element.focus()
} }
, mouseenter: function (e) { , mouseenter: function (e) {
this.mousedover = true
this.$menu.find('.active').removeClass('active') this.$menu.find('.active').removeClass('active')
$(e.currentTarget).addClass('active') $(e.currentTarget).addClass('active')
} }
, mouseleave: function (e) {
this.mousedover = false
if (!this.focused && this.shown) this.hide()
}
} }
@ -2035,13 +2145,12 @@
$(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) { $(document).on('focus.typeahead.data-api', '[data-provide="typeahead"]', function (e) {
var $this = $(this) var $this = $(this)
if ($this.data('typeahead')) return if ($this.data('typeahead')) return
e.preventDefault()
$this.typeahead($this.data()) $this.typeahead($this.data())
}) })
}(window.jQuery); }(window.jQuery);
/* ========================================================== /* ==========================================================
* bootstrap-affix.js v2.2.2 * bootstrap-affix.js v2.3.0
* http://twitter.github.com/bootstrap/javascript.html#affix * http://twitter.github.com/bootstrap/javascript.html#affix
* ========================================================== * ==========================================================
* Copyright 2012 Twitter, Inc. * Copyright 2012 Twitter, Inc.

Loading…
Cancel
Save