0
0
mirror of https://github.com/twbs/bootstrap.git synced 2024-12-01 13:24:25 +01:00

Merge branch 'master' into pr/11414

Conflicts:
	dist/css/bootstrap.min.css
This commit is contained in:
Mark Otto 2013-11-28 15:55:17 -08:00
commit b5f9cc2057
36 changed files with 176 additions and 323 deletions

1
.gitignore vendored
View File

@ -39,3 +39,4 @@ validation-report.json
# Folders to ignore # Folders to ignore
node_modules node_modules
bower_components

View File

@ -59,3 +59,21 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso
With v3.1, we're moving from the Apache 2 to the MIT license for the Bootstrap code (not the docs). We're in the process of collecting permissions from all Bootstrap contributors with code still part of the project to make this happen. For details, please see [#2054](https://github.com/twbs/bootstrap/issues/2054). With v3.1, we're moving from the Apache 2 to the MIT license for the Bootstrap code (not the docs). We're in the process of collecting permissions from all Bootstrap contributors with code still part of the project to make this happen. For details, please see [#2054](https://github.com/twbs/bootstrap/issues/2054).
By contributing your code, you agree to dual-license your contribution under the [Apache 2](https://github.com/twbs/bootstrap/blob/master/LICENSE) and [MIT](https://github.com/twbs/bootstrap/blob/master/MIT) licenses. By contributing your code, you agree to dual-license your contribution under the [Apache 2](https://github.com/twbs/bootstrap/blob/master/LICENSE) and [MIT](https://github.com/twbs/bootstrap/blob/master/MIT) licenses.
## Release checklist
1. Close ship list issue for the release.
2. Close the milestone for the release.
3. Open new release issue that includes this checklist.
4. Ping folks to coordinate release (mainly @jdorfman for BootstrapCDN).
5. Update version numbers using `grunt change-version-number --oldver=A.B.C --newver=X.Y.Z`. Review the changes and stage them manually.
6. Run `grunt` one last time.
7. Push to `master` branch.
8. Merge `master` into `gh-pages`.
9. Generate `bootstrap-X.Y.Z-dist.zip` file for release.
10. Create release on GitHub with `/dist/` folder and release notes.
11. Push `gh-pages`.
12. Publish blog post.
13. Tweet tweet.

View File

@ -135,8 +135,8 @@ module.exports = function(grunt) {
options: { options: {
reset: true, reset: true,
relaxerror: [ relaxerror: [
"Bad value X-UA-Compatible for attribute http-equiv on element meta.", "Bad value X-UA-Compatible for attribute http-equiv on element meta.",
"Element img is missing required attribute src." "Element img is missing required attribute src."
] ]
}, },
files: { files: {

View File

@ -1,9 +1,28 @@
{ {
"name": "bootstrap", "name": "bootstrap",
"version": "3.0.2", "version": "3.0.2",
"main": ["./dist/js/bootstrap.js", "./dist/css/bootstrap.css", "./dist/fonts/*"], "main": [
"./dist/js/bootstrap.js",
"./dist/css/bootstrap.css",
"./dist/fonts/glyphicons-halflings-regular.eot",
"./dist/fonts/glyphicons-halflings-regular.svg",
"./dist/fonts/glyphicons-halflings-regular.ttf",
"./dist/fonts/glyphicons-halflings-regular.woff"
],
"ignore": [ "ignore": [
"**/.*" "**/.*",
"_*",
"docs-assets",
"examples",
"/fonts",
"js/tests",
"CNAME",
"CONTRIBUTING.md",
"Gruntfile.js",
"browserstack.json",
"composer.json",
"package.json",
"*.html"
], ],
"dependencies": { "dependencies": {
"jquery": ">= 1.9.0" "jquery": ">= 1.9.0"

View File

@ -2,7 +2,7 @@
"username": "--secure--", "username": "--secure--",
"key": "--secure--", "key": "--secure--",
"test_path": "js/tests/index.html", "test_path": "js/tests/index.html",
"browsers": [ "browsers": [
{ {
"browser": "firefox", "browser": "firefox",
"browser_version": "latest", "browser_version": "latest",

View File

@ -822,6 +822,10 @@ base_url: "../"
<h2 id="glyphicons-how-to-use">How to use</h2> <h2 id="glyphicons-how-to-use">How to use</h2>
<p>For performance reasons, all icons require a base class and individual icon class. To use, place the following code just about anywhere. Be sure to leave a space between the icon and text for proper padding.</p> <p>For performance reasons, all icons require a base class and individual icon class. To use, place the following code just about anywhere. Be sure to leave a space between the icon and text for proper padding.</p>
<div class="bs-callout bs-callout-danger">
<h4>Don't mix with other components</h4>
<p>Icon classes cannot be combined with other elements. They are designed to be standalone elements.</p>
</div>
{% highlight html %} {% highlight html %}
<span class="glyphicon glyphicon-search"></span> <span class="glyphicon glyphicon-search"></span>
{% endhighlight %} {% endhighlight %}
@ -1882,8 +1886,8 @@ base_url: "../"
<h2 id="nav-justified">Justified</h2> <h2 id="nav-justified">Justified</h2>
<p>Easily make tabs or pills equal widths of their parent at screens wider than 768px with <code>.nav-justified</code>. On smaller screens, the nav links are stacked.</p> <p>Easily make tabs or pills equal widths of their parent at screens wider than 768px with <code>.nav-justified</code>. On smaller screens, the nav links are stacked.</p>
<div class="bs-callout bs-callout-warning"> <div class="bs-callout bs-callout-warning">
<h4>WebKit and responsive justified navs</h4> <h4>Safari and responsive justified navs</h4>
<p>Chrome and Safari both exhibit a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the <a href="../examples/justified-nav/">justified nav example</a>.</p> <p>Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing. This bug is also shown in the <a href="../examples/justified-nav/">justified nav example</a>.</p>
</div> </div>
<div class="bs-example"> <div class="bs-example">
<ul class="nav nav-tabs nav-justified"> <ul class="nav nav-tabs nav-justified">
@ -3160,7 +3164,7 @@ body { padding-bottom: 70px; }
<img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image"> <img class="media-object" data-src="holder.js/64x64" alt="Generic placeholder image">
</a> </a>
<div class="media-body"> <div class="media-body">
<h4 class="media-heading">Media heading</h4> <h4 class="media-heading">Nested media heading</h4>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus. Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin commodo. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
</div> </div>
</div> </div>

View File

@ -19,7 +19,7 @@
, "license": "Apache-2.0" , "license": "Apache-2.0"
, "extra": { , "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "3.0.x-dev" "dev-master": "3.0.x-dev"
} }
} }
} }

View File

@ -1617,7 +1617,7 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline.
<h2 id="forms-horizontal">Horizontal form</h2> <h2 id="forms-horizontal">Horizontal form</h2>
<p>Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout by adding <code>.form-horizontal</code> to the form. Doing so changes <code>.form-group</code>s to behave as grid rows, so no need for <code>.row</code>.</p> <p>Use Bootstrap's predefined grid classes to align labels and groups of form controls in a horizontal layout by adding <code>.form-horizontal</code> to the form. Doing so changes <code>.form-group</code>s to behave as grid rows, so no need for <code>.row</code>.</p>
<div class="bs-example"> <div class="bs-example">
<form class="form-horizontal"> <form class="form-horizontal" role="form">
<div class="form-group"> <div class="form-group">
<label for="inputEmail3" class="col-sm-2 control-label">Email</label> <label for="inputEmail3" class="col-sm-2 control-label">Email</label>
<div class="col-sm-10"> <div class="col-sm-10">

View File

@ -399,7 +399,7 @@ base_url: "../"
<input type="text" class="form-control" placeholder="Georgia, 'Times New Roman', Times, serif" data-var="@font-family-serif"> <input type="text" class="form-control" placeholder="Georgia, 'Times New Roman', Times, serif" data-var="@font-family-serif">
<p class="help-block">Default serif fonts.</p> <p class="help-block">Default serif fonts.</p>
<label>@font-family-monospace</label> <label>@font-family-monospace</label>
<input type="text" class="form-control" placeholder="Monaco, Menlo, Consolas, 'Courier New', monospace" data-var="@font-family-monospace"> <input type="text" class="form-control" placeholder="Menlo, Monaco, Consolas, 'Courier New', monospace" data-var="@font-family-monospace">
<p class="help-block">Default monospace fonts for <code>&lt;code&gt;</code> and <code>&lt;pre&gt;</code>.</p> <p class="help-block">Default monospace fonts for <code>&lt;code&gt;</code> and <code>&lt;pre&gt;</code>.</p>
<h4>Base type styes</h4> <h4>Base type styes</h4>

181
dist/css/bootstrap.css vendored
View File

@ -333,7 +333,7 @@ a:focus {
} }
a:focus { a:focus {
outline: thin dotted #333; outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -742,7 +742,7 @@ code,
kbd, kbd,
pre, pre,
samp { samp {
font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
} }
code { code {
@ -809,6 +809,24 @@ pre code {
clear: both; clear: both;
} }
@media (min-width: 768px) {
.container {
width: 750px;
}
}
@media (min-width: 992px) {
.container {
width: 970px;
}
}
@media (min-width: 1200px) {
.container {
width: 1170px;
}
}
.row { .row {
margin-right: -15px; margin-right: -15px;
margin-left: -15px; margin-left: -15px;
@ -1107,9 +1125,6 @@ pre code {
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.container {
width: 750px;
}
.col-sm-1, .col-sm-1,
.col-sm-2, .col-sm-2,
.col-sm-3, .col-sm-3,
@ -1279,9 +1294,6 @@ pre code {
} }
@media (min-width: 992px) { @media (min-width: 992px) {
.container {
width: 970px;
}
.col-md-1, .col-md-1,
.col-md-2, .col-md-2,
.col-md-3, .col-md-3,
@ -1451,9 +1463,6 @@ pre code {
} }
@media (min-width: 1200px) { @media (min-width: 1200px) {
.container {
width: 1170px;
}
.col-lg-1, .col-lg-1,
.col-lg-2, .col-lg-2,
.col-lg-3, .col-lg-3,
@ -1904,7 +1913,7 @@ select optgroup {
input[type="file"]:focus, input[type="file"]:focus,
input[type="radio"]:focus, input[type="radio"]:focus,
input[type="checkbox"]:focus { input[type="checkbox"]:focus {
outline: thin dotted #333; outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -1955,6 +1964,7 @@ output {
.form-control::-moz-placeholder { .form-control::-moz-placeholder {
color: #999999; color: #999999;
opacity: 1;
} }
.form-control:-ms-input-placeholder { .form-control:-ms-input-placeholder {
@ -2258,7 +2268,7 @@ textarea.input-lg {
} }
.btn:focus { .btn:focus {
outline: thin dotted #333; outline: thin dotted;
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -3462,9 +3472,8 @@ input[type="button"].btn-block {
height: 0; height: 0;
margin-left: 2px; margin-left: 2px;
vertical-align: middle; vertical-align: middle;
border-top: 4px solid #000000; border-top: 4px solid;
border-right: 4px solid transparent; border-right: 4px solid transparent;
border-bottom: 0 dotted;
border-left: 4px solid transparent; border-left: 4px solid transparent;
} }
@ -3582,8 +3591,8 @@ input[type="button"].btn-block {
.dropup .caret, .dropup .caret,
.navbar-fixed-bottom .dropdown .caret { .navbar-fixed-bottom .dropdown .caret {
border-top: 0 dotted; border-top: 0;
border-bottom: 4px solid #000000; border-bottom: 4px solid;
content: ""; content: "";
} }
@ -3601,30 +3610,6 @@ input[type="button"].btn-block {
} }
} }
.btn-default .caret {
border-top-color: #333333;
}
.btn-primary .caret,
.btn-success .caret,
.btn-warning .caret,
.btn-danger .caret,
.btn-info .caret {
border-top-color: #fff;
}
.dropup .btn-default .caret {
border-bottom-color: #333333;
}
.dropup .btn-primary .caret,
.dropup .btn-success .caret,
.dropup .btn-warning .caret,
.dropup .btn-danger .caret,
.dropup .btn-info .caret {
border-bottom-color: #fff;
}
.btn-group, .btn-group,
.btn-group-vertical { .btn-group-vertical {
position: relative; position: relative;
@ -4104,13 +4089,6 @@ textarea.input-group-sm > .input-group-btn > .btn {
border-color: #428bca; border-color: #428bca;
} }
.nav .open > a .caret,
.nav .open > a:hover .caret,
.nav .open > a:focus .caret {
border-top-color: #2a6496;
border-bottom-color: #2a6496;
}
.nav .nav-divider { .nav .nav-divider {
height: 1px; height: 1px;
margin: 9px 0; margin: 9px 0;
@ -4223,13 +4201,6 @@ textarea.input-group-sm > .input-group-btn > .btn {
background-color: #428bca; background-color: #428bca;
} }
.nav-pills > li.active > a .caret,
.nav-pills > li.active > a:hover .caret,
.nav-pills > li.active > a:focus .caret {
border-top-color: #ffffff;
border-bottom-color: #ffffff;
}
.nav-stacked > li { .nav-stacked > li {
float: none; float: none;
} }
@ -4302,16 +4273,6 @@ textarea.input-group-sm > .input-group-btn > .btn {
display: block; display: block;
} }
.nav .caret {
border-top-color: #428bca;
border-bottom-color: #428bca;
}
.nav a:hover .caret {
border-top-color: #2a6496;
border-bottom-color: #2a6496;
}
.nav-tabs .dropdown-menu { .nav-tabs .dropdown-menu {
margin-top: -1px; margin-top: -1px;
border-top-right-radius: 0; border-top-right-radius: 0;
@ -4668,13 +4629,13 @@ textarea.input-group-sm > .input-group-btn > .btn {
} }
.navbar-text { .navbar-text {
float: left;
margin-top: 15px; margin-top: 15px;
margin-bottom: 15px; margin-bottom: 15px;
} }
@media (min-width: 768px) { @media (min-width: 768px) {
.navbar-text { .navbar-text {
float: left;
margin-right: 15px; margin-right: 15px;
margin-left: 15px; margin-left: 15px;
} }
@ -4741,12 +4702,6 @@ textarea.input-group-sm > .input-group-btn > .btn {
border-color: #e7e7e7; border-color: #e7e7e7;
} }
.navbar-default .navbar-nav > .dropdown > a:hover .caret,
.navbar-default .navbar-nav > .dropdown > a:focus .caret {
border-top-color: #333333;
border-bottom-color: #333333;
}
.navbar-default .navbar-nav > .open > a, .navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .open > a:hover, .navbar-default .navbar-nav > .open > a:hover,
.navbar-default .navbar-nav > .open > a:focus { .navbar-default .navbar-nav > .open > a:focus {
@ -4754,18 +4709,6 @@ textarea.input-group-sm > .input-group-btn > .btn {
background-color: #e7e7e7; background-color: #e7e7e7;
} }
.navbar-default .navbar-nav > .open > a .caret,
.navbar-default .navbar-nav > .open > a:hover .caret,
.navbar-default .navbar-nav > .open > a:focus .caret {
border-top-color: #555555;
border-bottom-color: #555555;
}
.navbar-default .navbar-nav > .dropdown > a .caret {
border-top-color: #777777;
border-bottom-color: #777777;
}
@media (max-width: 767px) { @media (max-width: 767px) {
.navbar-default .navbar-nav .open .dropdown-menu > li > a { .navbar-default .navbar-nav .open .dropdown-menu > li > a {
color: #777777; color: #777777;
@ -4865,27 +4808,13 @@ textarea.input-group-sm > .input-group-btn > .btn {
background-color: #080808; background-color: #080808;
} }
.navbar-inverse .navbar-nav > .dropdown > a:hover .caret {
border-top-color: #ffffff;
border-bottom-color: #ffffff;
}
.navbar-inverse .navbar-nav > .dropdown > a .caret {
border-top-color: #999999;
border-bottom-color: #999999;
}
.navbar-inverse .navbar-nav > .open > a .caret,
.navbar-inverse .navbar-nav > .open > a:hover .caret,
.navbar-inverse .navbar-nav > .open > a:focus .caret {
border-top-color: #ffffff;
border-bottom-color: #ffffff;
}
@media (max-width: 767px) { @media (max-width: 767px) {
.navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header { .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {
border-color: #080808; border-color: #080808;
} }
.navbar-inverse .navbar-nav .open .dropdown-menu .divider {
background-color: #080808;
}
.navbar-inverse .navbar-nav .open .dropdown-menu > li > a { .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {
color: #999999; color: #999999;
} }
@ -5398,24 +5327,6 @@ a.thumbnail.active {
} }
} }
@-moz-keyframes progress-bar-stripes {
from {
background-position: 40px 0;
}
to {
background-position: 0 0;
}
}
@-o-keyframes progress-bar-stripes {
from {
background-position: 0 0;
}
to {
background-position: 40px 0;
}
}
@keyframes progress-bar-stripes { @keyframes progress-bar-stripes {
from { from {
background-position: 40px 0; background-position: 40px 0;
@ -5676,7 +5587,7 @@ a.list-group-item.active:focus .list-group-item-text {
} }
.panel > .table, .panel > .table,
.panel > .table-responsive { .panel > .table-responsive > .table {
margin-bottom: 0; margin-bottom: 0;
} }
@ -5685,6 +5596,11 @@ a.list-group-item.active:focus .list-group-item-text {
border-top: 1px solid #dddddd; border-top: 1px solid #dddddd;
} }
.panel > .table > tbody:first-child th,
.panel > .table > tbody:first-child td {
border-top: 0;
}
.panel > .table-bordered, .panel > .table-bordered,
.panel > .table-responsive > .table-bordered { .panel > .table-responsive > .table-bordered {
border: 0; border: 0;
@ -5804,10 +5720,6 @@ a.list-group-item.active:focus .list-group-item-text {
border-top-color: #dddddd; border-top-color: #dddddd;
} }
.panel-default > .panel-heading > .dropdown .caret {
border-color: #333333 transparent;
}
.panel-default > .panel-footer + .panel-collapse .panel-body { .panel-default > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #dddddd; border-bottom-color: #dddddd;
} }
@ -5826,10 +5738,6 @@ a.list-group-item.active:focus .list-group-item-text {
border-top-color: #428bca; border-top-color: #428bca;
} }
.panel-primary > .panel-heading > .dropdown .caret {
border-color: #ffffff transparent;
}
.panel-primary > .panel-footer + .panel-collapse .panel-body { .panel-primary > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #428bca; border-bottom-color: #428bca;
} }
@ -5848,10 +5756,6 @@ a.list-group-item.active:focus .list-group-item-text {
border-top-color: #d6e9c6; border-top-color: #d6e9c6;
} }
.panel-success > .panel-heading > .dropdown .caret {
border-color: #468847 transparent;
}
.panel-success > .panel-footer + .panel-collapse .panel-body { .panel-success > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #d6e9c6; border-bottom-color: #d6e9c6;
} }
@ -5870,10 +5774,6 @@ a.list-group-item.active:focus .list-group-item-text {
border-top-color: #faebcc; border-top-color: #faebcc;
} }
.panel-warning > .panel-heading > .dropdown .caret {
border-color: #c09853 transparent;
}
.panel-warning > .panel-footer + .panel-collapse .panel-body { .panel-warning > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #faebcc; border-bottom-color: #faebcc;
} }
@ -5892,10 +5792,6 @@ a.list-group-item.active:focus .list-group-item-text {
border-top-color: #ebccd1; border-top-color: #ebccd1;
} }
.panel-danger > .panel-heading > .dropdown .caret {
border-color: #b94a48 transparent;
}
.panel-danger > .panel-footer + .panel-collapse .panel-body { .panel-danger > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #ebccd1; border-bottom-color: #ebccd1;
} }
@ -5914,10 +5810,6 @@ a.list-group-item.active:focus .list-group-item-text {
border-top-color: #bce8f1; border-top-color: #bce8f1;
} }
.panel-info > .panel-heading > .dropdown .caret {
border-color: #3a87ad transparent;
}
.panel-info > .panel-footer + .panel-collapse .panel-body { .panel-info > .panel-footer + .panel-collapse .panel-body {
border-bottom-color: #bce8f1; border-bottom-color: #bce8f1;
} }
@ -6473,6 +6365,7 @@ button.close {
.carousel-control:focus { .carousel-control:focus {
color: #ffffff; color: #ffffff;
text-decoration: none; text-decoration: none;
outline: none;
opacity: 0.9; opacity: 0.9;
filter: alpha(opacity=90); filter: alpha(opacity=90);
} }

File diff suppressed because one or more lines are too long

26
dist/js/bootstrap.js vendored
View File

@ -220,15 +220,21 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
Button.prototype.toggle = function () { Button.prototype.toggle = function () {
var $parent = this.$element.closest('[data-toggle="buttons"]') var $parent = this.$element.closest('[data-toggle="buttons"]')
var changed = true
if ($parent.length) { if ($parent.length) {
var $input = this.$element.find('input') var $input = this.$element.find('input')
.prop('checked', !this.$element.hasClass('active')) if ($input.prop('type') === 'radio') {
.trigger('change') // see if clicking on current one
if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') if ($input.prop('checked') && this.$element.hasClass('active'))
changed = false
else
$parent.find('.active').removeClass('active')
}
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
} }
this.$element.toggleClass('active') if (changed) this.$element.toggleClass('active')
} }
@ -345,7 +351,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
if (pos > (this.$items.length - 1) || pos < 0) return if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
if (activeIndex == pos) return this.pause().cycle() if (activeIndex == pos) return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
@ -397,7 +403,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
if (this.$indicators.length) { if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active') this.$indicators.find('.active').removeClass('active')
this.$element.one('slid', function () { this.$element.one('slid.bs.carousel', function () {
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
$nextIndicator && $nextIndicator.addClass('active') $nextIndicator && $nextIndicator.addClass('active')
}) })
@ -415,7 +421,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
$next.removeClass([type, direction].join(' ')).addClass('active') $next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' ')) $active.removeClass(['active', direction].join(' '))
that.sliding = false that.sliding = false
setTimeout(function () { that.$element.trigger('slid') }, 0) setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
}) })
.emulateTransitionEnd(600) .emulateTransitionEnd(600)
} else { } else {
@ -424,7 +430,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
$active.removeClass('active') $active.removeClass('active')
$next.addClass('active') $next.addClass('active')
this.sliding = false this.sliding = false
this.$element.trigger('slid') this.$element.trigger('slid.bs.carousel')
} }
isCycling && this.cycle() isCycling && this.cycle()
@ -715,7 +721,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we we use a backdrop because click events don't delegate // if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
} }
@ -1694,7 +1700,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
.addClass('active') .addClass('active')
} }
active.trigger('activate') active.trigger('activate.bs.scrollspy')
} }

File diff suppressed because one or more lines are too long

View File

@ -100,4 +100,4 @@
}) })
}) })
}(window.jQuery) }(jQuery)

View File

@ -231,7 +231,7 @@ window.onload = function () { // wait for load in a dumb way because B-0
} }
result = { result = {
'bootstrap.css' : cw + tree.toCSS(), 'bootstrap.css' : cw + tree.toCSS(),
'bootstrap.min.css' : cw + tree.toCSS({ compress: true }) 'bootstrap.min.css' : cw + tree.toCSS({ compress: true }).replace(/\n/g, '')
} }
}) })
} catch (err) { } catch (err) {

File diff suppressed because one or more lines are too long

View File

@ -40,7 +40,7 @@
<a class="navbar-brand" href="#">Project name</a> <a class="navbar-brand" href="#">Project name</a>
</div> </div>
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
<form class="navbar-form navbar-right"> <form class="navbar-form navbar-right" role="form">
<div class="form-group"> <div class="form-group">
<input type="text" placeholder="Email" class="form-control"> <input type="text" placeholder="Email" class="form-control">
</div> </div>

View File

@ -52,7 +52,8 @@
<!-- Example row of columns --> <!-- Example row of columns -->
<div class="row"> <div class="row">
<div class="col-lg-4"> <div class="col-lg-4">
<h2>Heading</h2> <h2>Safari bug warning!</h2>
<p class="text-danger">Safari exhibits a bug in which resizing your browser horizontally causes rendering errors in the justified nav that are cleared upon refreshing.</p>
<p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p> <p>Donec id elit non mi porta gravida at eget metus. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus. Etiam porta sem malesuada magna mollis euismod. Donec sed odio dui. </p>
<p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p> <p><a class="btn btn-primary" href="#" role="button">View details &raquo;</a></p>
</div> </div>

View File

@ -30,7 +30,7 @@
<div class="container"> <div class="container">
<form class="form-signin"> <form class="form-signin" role="form">
<h2 class="form-signin-heading">Please sign in</h2> <h2 class="form-signin-heading">Please sign in</h2>
<input type="text" class="form-control" placeholder="Email address" required autofocus> <input type="text" class="form-control" placeholder="Email address" required autofocus>
<input type="password" class="form-control" placeholder="Password" required> <input type="password" class="form-control" placeholder="Password" required>

View File

@ -304,15 +304,15 @@ $('#myModal').modal({
{% endhighlight %} {% endhighlight %}
<h4>.modal('toggle')</h4> <h4>.modal('toggle')</h4>
<p>Manually toggles a modal.</p> <p>Manually toggles a modal. <strong>Returns to the caller before the modal has actually been shown or hidden</strong> (i.e. before the <code>shown.bs.modal</code> or <code>hidden.bs.modal</code> event occurs).</p>
{% highlight js %}$('#myModal').modal('toggle'){% endhighlight %} {% highlight js %}$('#myModal').modal('toggle'){% endhighlight %}
<h4>.modal('show')</h4> <h4>.modal('show')</h4>
<p>Manually opens a modal.</p> <p>Manually opens a modal. <strong>Returns to the caller before the modal has actually been shown</strong> (i.e. before the <code>shown.bs.modal</code> event occurs).</p>
{% highlight js %}$('#myModal').modal('show'){% endhighlight %} {% highlight js %}$('#myModal').modal('show'){% endhighlight %}
<h4>.modal('hide')</h4> <h4>.modal('hide')</h4>
<p>Manually hides a modal.</p> <p>Manually hides a modal. <strong>Returns to the caller before the modal has actually been hidden</strong> (i.e. before the <code>hidden.bs.modal</code> event occurs).</p>
{% highlight js %}$('#myModal').modal('hide'){% endhighlight %} {% highlight js %}$('#myModal').modal('hide'){% endhighlight %}
<h3>Events</h3> <h3>Events</h3>
@ -328,11 +328,11 @@ $('#myModal').modal({
<tbody> <tbody>
<tr> <tr>
<td>show.bs.modal</td> <td>show.bs.modal</td>
<td>This event fires immediately when the <code>show</code> instance method is called.</td> <td>This event fires immediately when the <code>show</code> instance method is called. If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td>
</tr> </tr>
<tr> <tr>
<td>shown.bs.modal</td> <td>shown.bs.modal</td>
<td>This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete).</td> <td>This event is fired when the modal has been made visible to the user (will wait for CSS transitions to complete). If caused by a click, the clicked element is available as the <code>relatedTarget</code> property of the event.</td>
</tr> </tr>
<tr> <tr>
<td>hide.bs.modal</td> <td>hide.bs.modal</td>
@ -346,8 +346,8 @@ $('#myModal').modal({
</table> </table>
</div><!-- /.table-responsive --> </div><!-- /.table-responsive -->
{% highlight js %} {% highlight js %}
$('#myModal').on('hidden.bs.modal', function () { $('#myModal').on('hidden.bs.modal', function (e) {
// do something // do something...
}) })
{% endhighlight %} {% endhighlight %}
</div> </div>

View File

@ -54,15 +54,21 @@
Button.prototype.toggle = function () { Button.prototype.toggle = function () {
var $parent = this.$element.closest('[data-toggle="buttons"]') var $parent = this.$element.closest('[data-toggle="buttons"]')
var changed = true
if ($parent.length) { if ($parent.length) {
var $input = this.$element.find('input') var $input = this.$element.find('input')
.prop('checked', !this.$element.hasClass('active')) if ($input.prop('type') === 'radio') {
.trigger('change') // see if clicking on current one
if ($input.prop('type') === 'radio') $parent.find('.active').removeClass('active') if ($input.prop('checked') && this.$element.hasClass('active'))
changed = false
else
$parent.find('.active').removeClass('active')
}
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change')
} }
this.$element.toggleClass('active') if (changed) this.$element.toggleClass('active')
} }

View File

@ -69,7 +69,7 @@
if (pos > (this.$items.length - 1) || pos < 0) return if (pos > (this.$items.length - 1) || pos < 0) return
if (this.sliding) return this.$element.one('slid', function () { that.to(pos) }) if (this.sliding) return this.$element.one('slid.bs.carousel', function () { that.to(pos) })
if (activeIndex == pos) return this.pause().cycle() if (activeIndex == pos) return this.pause().cycle()
return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos])) return this.slide(pos > activeIndex ? 'next' : 'prev', $(this.$items[pos]))
@ -121,7 +121,7 @@
if (this.$indicators.length) { if (this.$indicators.length) {
this.$indicators.find('.active').removeClass('active') this.$indicators.find('.active').removeClass('active')
this.$element.one('slid', function () { this.$element.one('slid.bs.carousel', function () {
var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()]) var $nextIndicator = $(that.$indicators.children()[that.getActiveIndex()])
$nextIndicator && $nextIndicator.addClass('active') $nextIndicator && $nextIndicator.addClass('active')
}) })
@ -139,7 +139,7 @@
$next.removeClass([type, direction].join(' ')).addClass('active') $next.removeClass([type, direction].join(' ')).addClass('active')
$active.removeClass(['active', direction].join(' ')) $active.removeClass(['active', direction].join(' '))
that.sliding = false that.sliding = false
setTimeout(function () { that.$element.trigger('slid') }, 0) setTimeout(function () { that.$element.trigger('slid.bs.carousel') }, 0)
}) })
.emulateTransitionEnd(600) .emulateTransitionEnd(600)
} else { } else {
@ -148,7 +148,7 @@
$active.removeClass('active') $active.removeClass('active')
$next.addClass('active') $next.addClass('active')
this.sliding = false this.sliding = false
this.$element.trigger('slid') this.$element.trigger('slid.bs.carousel')
} }
isCycling && this.cycle() isCycling && this.cycle()

View File

@ -41,7 +41,7 @@
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we we use a backdrop because click events don't delegate // if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) $('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus)
} }

View File

@ -113,7 +113,7 @@
.addClass('active') .addClass('active')
} }
active.trigger('activate') active.trigger('activate.bs.scrollspy')
} }

View File

@ -111,6 +111,12 @@ $(function () {
ok(!btn1.find('input').prop('checked'), 'btn1 is checked') ok(!btn1.find('input').prop('checked'), 'btn1 is checked')
ok(btn2.hasClass('active'), 'btn2 has active class') ok(btn2.hasClass('active'), 'btn2 has active class')
ok(btn2.find('input').prop('checked'), 'btn2 is checked') ok(btn2.find('input').prop('checked'), 'btn2 is checked')
btn2.find('input').click() /* clicking an already checked radio should not un-check it */
ok(!btn1.hasClass('active'), 'btn1 does not have active class')
ok(!btn1.find('input').prop('checked'), 'btn1 is checked')
ok(btn2.hasClass('active'), 'btn2 has active class')
ok(btn2.find('input').prop('checked'), 'btn2 is checked')
}) })
}) })

View File

@ -2,37 +2,6 @@
// Button groups // Button groups
// -------------------------------------------------- // --------------------------------------------------
// Button carets
//
// Match the button text color to the arrow/caret for indicating dropdown-ness.
.caret {
.btn-default & {
border-top-color: @btn-default-color;
}
.btn-primary &,
.btn-success &,
.btn-warning &,
.btn-danger &,
.btn-info & {
border-top-color: #fff;
}
}
.dropup {
.btn-default .caret {
border-bottom-color: @btn-default-color;
}
.btn-primary,
.btn-success,
.btn-warning,
.btn-danger,
.btn-info {
.caret {
border-bottom-color: #fff;
}
}
}
// Make the div behave like a button // Make the div behave like a button
.btn-group, .btn-group,
.btn-group-vertical { .btn-group-vertical {

View File

@ -91,6 +91,7 @@
// Hover/focus state // Hover/focus state
&:hover, &:hover,
&:focus { &:focus {
outline: none;
color: @carousel-control-color; color: @carousel-control-color;
text-decoration: none; text-decoration: none;
.opacity(.9); .opacity(.9);

View File

@ -10,12 +10,9 @@
height: 0; height: 0;
margin-left: 2px; margin-left: 2px;
vertical-align: middle; vertical-align: middle;
border-top: @caret-width-base solid @dropdown-caret-color; border-top: @caret-width-base solid;
border-right: @caret-width-base solid transparent; border-right: @caret-width-base solid transparent;
border-left: @caret-width-base solid transparent; border-left: @caret-width-base solid transparent;
// Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once fixed,
// we can just straight up remove this.
border-bottom: 0 dotted;
} }
// The dropdown wrapper (div) // The dropdown wrapper (div)
@ -163,10 +160,8 @@
.navbar-fixed-bottom .dropdown { .navbar-fixed-bottom .dropdown {
// Reverse the caret // Reverse the caret
.caret { .caret {
// Firefox fix for https://github.com/twbs/bootstrap/issues/9538. Once this border-top: 0;
// gets fixed, restore `border-top: 0;`. border-bottom: @caret-width-base solid;
border-top: 0 dotted;
border-bottom: @caret-width-base solid @dropdown-caret-color;
content: ""; content: "";
} }
// Different positioning for bottom up menu // Different positioning for bottom up menu

View File

@ -5,6 +5,16 @@
// Set the container width, and override it for fixed navbars in media queries // Set the container width, and override it for fixed navbars in media queries
.container { .container {
.container-fixed(); .container-fixed();
@media (min-width: @screen-sm) {
width: @container-sm;
}
@media (min-width: @screen-md) {
width: @container-md;
}
@media (min-width: @screen-lg-min) {
width: @container-lg;
}
} }
// mobile first defaults // mobile first defaults
@ -40,10 +50,6 @@
// it's full-width. // it's full-width.
@media (min-width: @screen-sm-min) { @media (min-width: @screen-sm-min) {
.container {
width: @container-sm;
}
.make-grid-columns-float(sm); .make-grid-columns-float(sm);
.make-grid(@grid-columns, sm, width); .make-grid(@grid-columns, sm, width);
.make-grid(@grid-columns, sm, pull); .make-grid(@grid-columns, sm, pull);
@ -60,10 +66,6 @@
// it's full-width. // it's full-width.
@media (min-width: @screen-md-min) { @media (min-width: @screen-md-min) {
.container {
width: @container-md;
}
.make-grid-columns-float(md); .make-grid-columns-float(md);
.make-grid(@grid-columns, md, width); .make-grid(@grid-columns, md, width);
.make-grid(@grid-columns, md, pull); .make-grid(@grid-columns, md, pull);
@ -80,10 +82,6 @@
// it's full-width. // it's full-width.
@media (min-width: @screen-lg-min) { @media (min-width: @screen-lg-min) {
.container {
width: @container-lg;
}
.make-grid-columns-float(lg); .make-grid-columns-float(lg);
.make-grid(@grid-columns, lg, width); .make-grid(@grid-columns, lg, width);
.make-grid(@grid-columns, lg, pull); .make-grid(@grid-columns, lg, pull);

View File

@ -30,8 +30,8 @@
// WebKit-style focus // WebKit-style focus
.tab-focus() { .tab-focus() {
// Default // Default
outline: thin dotted #333; outline: thin dotted;
// WebKit //Webkit
outline: 5px auto -webkit-focus-ring-color; outline: 5px auto -webkit-focus-ring-color;
outline-offset: -2px; outline-offset: -2px;
} }
@ -55,7 +55,8 @@
// Placeholder text // Placeholder text
.placeholder(@color: @input-color-placeholder) { .placeholder(@color: @input-color-placeholder) {
&:-moz-placeholder { color: @color; } // Firefox 4-18 &:-moz-placeholder { color: @color; } // Firefox 4-18
&::-moz-placeholder { color: @color; } // Firefox 19+ &::-moz-placeholder { color: @color; // Firefox 19+
opacity: 1; } // See https://github.com/twbs/bootstrap/pull/11526
&:-ms-input-placeholder { color: @color; } // Internet Explorer 10+ &:-ms-input-placeholder { color: @color; } // Internet Explorer 10+
&::-webkit-input-placeholder { color: @color; } // Safari and Chrome &::-webkit-input-placeholder { color: @color; } // Safari and Chrome
} }
@ -391,7 +392,7 @@
// Panels // Panels
// ------------------------- // -------------------------
.panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border;) { .panel-variant(@border; @heading-text-color; @heading-bg-color; @heading-border) {
border-color: @border; border-color: @border;
& > .panel-heading { & > .panel-heading {
@ -402,9 +403,6 @@
+ .panel-collapse .panel-body { + .panel-collapse .panel-body {
border-top-color: @border; border-top-color: @border;
} }
& > .dropdown .caret {
border-color: @heading-text-color transparent;
}
} }
& > .panel-footer { & > .panel-footer {
+ .panel-collapse .panel-body { + .panel-collapse .panel-body {

View File

@ -340,10 +340,10 @@
// Add a class to make any element properly align itself vertically within the navbars. // Add a class to make any element properly align itself vertically within the navbars.
.navbar-text { .navbar-text {
float: left;
.navbar-vertical-align(@line-height-computed); .navbar-vertical-align(@line-height-computed);
@media (min-width: @grid-float-breakpoint) { @media (min-width: @grid-float-breakpoint) {
float: left;
margin-left: @navbar-padding-horizontal; margin-left: @navbar-padding-horizontal;
margin-right: @navbar-padding-horizontal; margin-right: @navbar-padding-horizontal;
} }
@ -414,15 +414,8 @@
border-color: @navbar-default-border; border-color: @navbar-default-border;
} }
// Dropdown menu items and carets // Dropdown menu items
.navbar-nav { .navbar-nav {
// Caret should match text color on hover
> .dropdown > a:hover .caret,
> .dropdown > a:focus .caret {
border-top-color: @navbar-default-link-hover-color;
border-bottom-color: @navbar-default-link-hover-color;
}
// Remove background color from open dropdown // Remove background color from open dropdown
> .open > a { > .open > a {
&, &,
@ -430,17 +423,8 @@
&:focus { &:focus {
background-color: @navbar-default-link-active-bg; background-color: @navbar-default-link-active-bg;
color: @navbar-default-link-active-color; color: @navbar-default-link-active-color;
.caret {
border-top-color: @navbar-default-link-active-color;
border-bottom-color: @navbar-default-link-active-color;
}
} }
} }
> .dropdown > a .caret {
border-top-color: @navbar-default-link-color;
border-bottom-color: @navbar-default-link-color;
}
@media (max-width: @screen-xs-max) { @media (max-width: @screen-xs-max) {
// Dropdowns get custom display when collapsed // Dropdowns get custom display when collapsed
@ -561,24 +545,6 @@
color: @navbar-inverse-link-active-color; color: @navbar-inverse-link-active-color;
} }
} }
> .dropdown > a:hover .caret {
border-top-color: @navbar-inverse-link-hover-color;
border-bottom-color: @navbar-inverse-link-hover-color;
}
> .dropdown > a .caret {
border-top-color: @navbar-inverse-link-color;
border-bottom-color: @navbar-inverse-link-color;
}
> .open > a {
&,
&:hover,
&:focus {
.caret {
border-top-color: @navbar-inverse-link-active-color;
border-bottom-color: @navbar-inverse-link-active-color;
}
}
}
@media (max-width: @screen-xs-max) { @media (max-width: @screen-xs-max) {
// Dropdowns get custom display // Dropdowns get custom display
@ -586,6 +552,9 @@
> .dropdown-header { > .dropdown-header {
border-color: @navbar-inverse-border; border-color: @navbar-inverse-border;
} }
.divider {
background-color: @navbar-inverse-border;
}
> li > a { > li > a {
color: @navbar-inverse-link-color; color: @navbar-inverse-link-color;
&:hover, &:hover,

View File

@ -48,11 +48,6 @@
&:focus { &:focus {
background-color: @nav-link-hover-bg; background-color: @nav-link-hover-bg;
border-color: @link-color; border-color: @link-color;
.caret {
border-top-color: @link-hover-color;
border-bottom-color: @link-hover-color;
}
} }
} }
@ -138,11 +133,6 @@
&:focus { &:focus {
color: @nav-pills-active-link-hover-color; color: @nav-pills-active-link-hover-color;
background-color: @nav-pills-active-link-hover-bg; background-color: @nav-pills-active-link-hover-bg;
.caret {
border-top-color: @nav-pills-active-link-hover-color;
border-bottom-color: @nav-pills-active-link-hover-color;
}
} }
} }
} }
@ -243,16 +233,6 @@
// Dropdowns // Dropdowns
// ------------------------- // -------------------------
// Make dropdown carets use link color in navs
.nav .caret {
border-top-color: @link-color;
border-bottom-color: @link-color;
}
.nav a:hover .caret {
border-top-color: @link-hover-color;
border-bottom-color: @link-hover-color;
}
// Specific dropdowns // Specific dropdowns
.nav-tabs .dropdown-menu { .nav-tabs .dropdown-menu {
// make dropdown border overlap tab border // make dropdown border overlap tab border

View File

@ -57,13 +57,17 @@
.panel { .panel {
> .table, > .table,
> .table-responsive { > .table-responsive > .table {
margin-bottom: 0; margin-bottom: 0;
} }
> .panel-body + .table, > .panel-body + .table,
> .panel-body + .table-responsive { > .panel-body + .table-responsive {
border-top: 1px solid @table-border-color; border-top: 1px solid @table-border-color;
} }
> .table > tbody:first-child th,
> .table > tbody:first-child td {
border-top: 0;
}
> .table-bordered, > .table-bordered,
> .table-responsive > .table-bordered { > .table-responsive > .table-bordered {
border: 0; border: 0;

View File

@ -12,18 +12,6 @@
to { background-position: 0 0; } to { background-position: 0 0; }
} }
// Firefox
@-moz-keyframes progress-bar-stripes {
from { background-position: 40px 0; }
to { background-position: 0 0; }
}
// Opera
@-o-keyframes progress-bar-stripes {
from { background-position: 0 0; }
to { background-position: 40px 0; }
}
// Spec and IE10+ // Spec and IE10+
@keyframes progress-bar-stripes { @keyframes progress-bar-stripes {
from { background-position: 40px 0; } from { background-position: 40px 0; }

View File

@ -41,7 +41,7 @@
@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; @font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif; @font-family-serif: Georgia, "Times New Roman", Times, serif;
@font-family-monospace: Monaco, Menlo, Consolas, "Courier New", monospace; @font-family-monospace: Menlo, Monaco, Consolas, "Courier New", monospace;
@font-family-base: @font-family-sans-serif; @font-family-base: @font-family-sans-serif;
@font-size-base: 14px; @font-size-base: 14px;
@ -186,8 +186,6 @@
@dropdown-header-color: @gray-light; @dropdown-header-color: @gray-light;
@dropdown-caret-color: #000;
// COMPONENT VARIABLES // COMPONENT VARIABLES
// -------------------------------------------------- // --------------------------------------------------
@ -321,7 +319,6 @@
@nav-disabled-link-hover-color: @gray-light; @nav-disabled-link-hover-color: @gray-light;
@nav-open-link-hover-color: #fff; @nav-open-link-hover-color: #fff;
@nav-open-caret-border-color: #fff;
// Tabs // Tabs
@nav-tabs-border-color: #ddd; @nav-tabs-border-color: #ddd;

View File

@ -33,7 +33,7 @@
, "grunt-contrib-watch": "~0.5.3" , "grunt-contrib-watch": "~0.5.3"
, "grunt-html-validation": "~0.1.6" , "grunt-html-validation": "~0.1.6"
, "grunt-jekyll": "~0.4.0" , "grunt-jekyll": "~0.4.0"
, "grunt-recess": "~0.4.0" , "grunt-recess": "~0.5.0"
, "grunt-sed": "~0.1.1" , "grunt-sed": "~0.1.1"
, "regexp-quote": "~0.0.0" , "regexp-quote": "~0.0.0"
} }