Commit bb4a39d5 authored by Mark Otto's avatar Mark Otto
Browse files

Merge branch 'master' into pr/11388

Conflicts:
	dist/css/bootstrap.min.css
parents 96109d31 e6eb7981
Showing with 115 additions and 168 deletions
+115 -168
...@@ -405,6 +405,10 @@ bootstrap/ ...@@ -405,6 +405,10 @@ bootstrap/
<td><code>.control-group</code></td> <td><code>.control-group</code></td>
<td><code>.form-group</code></td> <td><code>.form-group</code></td>
</tr> </tr>
<tr>
<td><code>.control-group.warning .control-group.error .control-group.success</code></td>
<td><code>.form-group.has-*</code></td>
</tr>
<tr> <tr>
<td><code>.checkbox.inline</code> <code>.radio.inline</code></td> <td><code>.checkbox.inline</code> <code>.radio.inline</code></td>
<td><code>.checkbox-inline</code> <code>.radio-inline</code></td> <td><code>.checkbox-inline</code> <code>.radio-inline</code></td>
...@@ -611,6 +615,11 @@ bootstrap/ ...@@ -611,6 +615,11 @@ bootstrap/
<td><code>.form-search</code></td> <td><code>.form-search</code></td>
<td class="text-muted">N/A</td> <td class="text-muted">N/A</td>
</tr> </tr>
<tr>
<td>Form group with info</td>
<td><code>.control-group.info</code></td>
<td class="text-muted">N/A</td>
</tr>
<tr> <tr>
<td>Fluid container</td> <td>Fluid container</td>
<td><code>.container-fluid</code></td> <td><code>.container-fluid</code></td>
...@@ -674,7 +683,7 @@ bootstrap/ ...@@ -674,7 +683,7 @@ bootstrap/
<li>Typeahead has been dropped, in favor of using <a href="http://twitter.github.io/typeahead.js/">Twitter Typeahead</a>.</li> <li>Typeahead has been dropped, in favor of using <a href="http://twitter.github.io/typeahead.js/">Twitter Typeahead</a>.</li>
<li>Modal markup has changed significantly. The <code>.modal-header</code>, <code>.modal-body</code>, and <code>.modal-footer</code> sections are now wrapped in <code>.modal-content</code> and <code>.modal-dialog</code> for better mobile styling and behavior.</li> <li>Modal markup has changed significantly. The <code>.modal-header</code>, <code>.modal-body</code>, and <code>.modal-footer</code> sections are now wrapped in <code>.modal-content</code> and <code>.modal-dialog</code> for better mobile styling and behavior.</li>
<li>The HTML loaded by the <code>remote</code> modal option is now injected into the <code>.modal</code> instead of into the <code>.modal-body</code>. This allows you to also easily vary the header and footer of the modal, not just the modal body.</li> <li>The HTML loaded by the <code>remote</code> modal option is now injected into the <code>.modal</code> instead of into the <code>.modal-body</code>. This allows you to also easily vary the header and footer of the modal, not just the modal body.</li>
<li>JavaScript events are namespaced. For example, to handle the modal "show" event, use <code>'show.bs.modal'</code>. For tabs "shown" use <code>'shown.bs.tab'</code>, etc..</li> <li>JavaScript events are namespaced. For example, to handle the modal "show" event, use <code>'show.bs.modal'</code>. For tabs "shown" use <code>'shown.bs.tab'</code>, etc.</li>
</ul> </ul>
<p>For more information on upgrading to v3.0, and code snippets from the community, see <a href="http://bootply.com/">Bootply</a>.</p> <p>For more information on upgrading to v3.0, and code snippets from the community, see <a href="http://bootply.com/">Bootply</a>.</p>
</div> </div>
......
...@@ -304,15 +304,15 @@ $('#myModal').modal({ ...@@ -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({ ...@@ -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({ ...@@ -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>
...@@ -529,6 +529,7 @@ $('#myDropdown').on('show.bs.dropdown', function () { ...@@ -529,6 +529,7 @@ $('#myDropdown').on('show.bs.dropdown', function () {
{% endhighlight %} {% endhighlight %}
</div> </div>
<!-- ScrollSpy <!-- ScrollSpy
================================================== --> ================================================== -->
<div class="bs-docs-section"> <div class="bs-docs-section">
...@@ -588,7 +589,13 @@ $('#myDropdown').on('show.bs.dropdown', function () { ...@@ -588,7 +589,13 @@ $('#myDropdown').on('show.bs.dropdown', function () {
<h3>Via data attributes</h3> <h3>Via data attributes</h3>
<p>To easily add scrollspy behavior to your topbar navigation, add <code>data-spy="scroll"</code> to the element you want to spy on (most typically this would be the <code>&lt;body&gt;</code>). Then add the <code>data-target</code> attribute with the ID or class of the parent element of any Bootstrap <code>.nav</code> component.</p> <p>To easily add scrollspy behavior to your topbar navigation, add <code>data-spy="scroll"</code> to the element you want to spy on (most typically this would be the <code>&lt;body&gt;</code>). Then add the <code>data-target</code> attribute with the ID or class of the parent element of any Bootstrap <code>.nav</code> component.</p>
{% highlight html %} {% highlight html %}
<body data-spy="scroll" data-target="#navbar-example"> <body data-spy="scroll" data-target=".navbar-example">
...
<div class="navbar-example">
<ul class="nav nav-tabs">
...
</ul>
</div>
... ...
</body> </body>
{% endhighlight %} {% endhighlight %}
...@@ -596,7 +603,7 @@ $('#myDropdown').on('show.bs.dropdown', function () { ...@@ -596,7 +603,7 @@ $('#myDropdown').on('show.bs.dropdown', function () {
<h3>Via JavaScript</h3> <h3>Via JavaScript</h3>
<p>Call the scrollspy via JavaScript:</p> <p>Call the scrollspy via JavaScript:</p>
{% highlight js %} {% highlight js %}
$('body').scrollspy({ target: '#navbar-example' }) $('body').scrollspy({ target: '.navbar-example' })
{% endhighlight %} {% endhighlight %}
<div class="bs-callout bs-callout-danger"> <div class="bs-callout bs-callout-danger">
...@@ -1926,22 +1933,27 @@ $('#myCarousel').on('slide.bs.carousel', function () { ...@@ -1926,22 +1933,27 @@ $('#myCarousel').on('slide.bs.carousel', function () {
<hr class="bs-docs-separator"> <hr class="bs-docs-separator">
<h2 id="affix-usage">Usage</h2> <h2 id="affix-usage">Usage</h2>
<p>Use the affix plugin via data attributes or manually with your own JavaScript. <strong>In both situations, you must provide CSS for the positioning of your content.</strong></p>
<h3>Positioning via CSS</h3>
<p>The affix plugin toggles between three classes, each representing a particular state: <code>.affix</code>, <code>.affix-top</code>, and <code>.affix-bottom</code>. You must provide the styles for these classes yourself (independent of this plugin) to handle the actual positions.</p>
<p>Here's how the affix plugin works:</p>
<ol>
<li>To start, the plugin adds <code>.affix-top</code> to indicate the element is in it's top-most position. At this point no CSS positioning is required.</li>
<li>Scrolling past the element you want affixed should trigger the actual affixing. This is where <code>.affix</code> replaces <code>.affix-top</code> and sets <code>position: fixed;</code> (provided by Bootstrap's code CSS).</li>
<li>If a bottom offset is defined, scrolling past that should replace <code>.affix</code> with <code>.affix-bottom</code>. Since offsets are optional, setting one requires you to set the appropriate CSS. In this case, add <code>position: absolute;</code> when necessary. The plugin uses the data attribute or JavaScript option to determine where to position the elemtn from there.</li>
</ol>
<p>Follow the above steps to set your CSS for either of the usage options below.</p>
<h3>Via data attributes</h3> <h3>Via data attributes</h3>
<p>To easily add affix behavior to any element, just add <code>data-spy="affix"</code> to the element you want to spy on. Then use offsets to define when to toggle the pinning of an element on and off.</p> <p>To easily add affix behavior to any element, just add <code>data-spy="affix"</code> to the element you want to spy on. Use offsets to define when to toggle the pinning of an element.</p>
{% highlight html %} {% highlight html %}
<div data-spy="affix" data-offset-top="200">...</div> <div data-spy="affix" data-offset-top="60" data-offset-bottom="200">
...
</div>
{% endhighlight %} {% endhighlight %}
<div class="bs-callout bs-callout-warning">
<h4>Requires independent styling ;)</h4>
<p>
Affix toggles between three states/classes: <code>.affix</code>, <code>.affix-top</code>, and <code>.affix-bottom</code>. You must provide the styles for these classes yourself (independent of this plugin).
The <code>.affix-top</code> class should be in the regular flow of the document. The <code>.affix</code> class should be <code>position: fixed</code>. And <code>.affix-bottom</code> should be <code>position: absolute</code>. Note: <code>.affix-bottom</code> is special in that the plugin will place the element with JS relative to the <code>offset: { bottom: number }</code> option you've provided.
</p>
</div>
<h3>Via JavaScript</h3> <h3>Via JavaScript</h3>
<p>Call the affix plugin via JavaScript:</p> <p>Call the affix plugin via JavaScript:</p>
{% highlight js %} {% highlight js %}
......
...@@ -54,15 +54,21 @@ ...@@ -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')
} }
......
...@@ -69,7 +69,7 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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()
......
...@@ -41,7 +41,7 @@ ...@@ -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)
} }
...@@ -123,9 +123,9 @@ ...@@ -123,9 +123,9 @@
$.fn.dropdown = function (option) { $.fn.dropdown = function (option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
var data = $this.data('dropdown') var data = $this.data('bs.dropdown')
if (!data) $this.data('dropdown', (data = new Dropdown(this))) if (!data) $this.data('bs.dropdown', (data = new Dropdown(this)))
if (typeof option == 'string') data[option].call($this) if (typeof option == 'string') data[option].call($this)
}) })
} }
......
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
.addClass('active') .addClass('active')
} }
active.trigger('activate') active.trigger('activate.bs.scrollspy')
} }
......
...@@ -111,6 +111,12 @@ $(function () { ...@@ -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')
}) })
}) })
...@@ -2,37 +2,6 @@ ...@@ -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 {
...@@ -178,7 +147,8 @@ ...@@ -178,7 +147,8 @@
.btn-group-vertical { .btn-group-vertical {
> .btn, > .btn,
> .btn-group { > .btn-group,
> .btn-group > .btn {
display: block; display: block;
float: none; float: none;
width: 100%; width: 100%;
......
...@@ -91,6 +91,7 @@ ...@@ -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);
......
...@@ -10,12 +10,9 @@ ...@@ -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 @@ ...@@ -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
......
...@@ -5,6 +5,16 @@ ...@@ -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
...@@ -18,8 +28,8 @@ ...@@ -18,8 +28,8 @@
// Extra small grid // Extra small grid
// //
// Grid classes for extra small devices like smartphones. No offset, push, or // Columns, offsets, pushes, and pulls for extra small devices like
// pull classes are present here due to the size of the target. // smartphones.
// //
// Note that `.col-xs-12` doesn't get floated on purpose--there's no need since // Note that `.col-xs-12` doesn't get floated on purpose--there's no need since
// it's full-width. // it's full-width.
...@@ -40,10 +50,6 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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);
......
...@@ -24,6 +24,10 @@ ...@@ -24,6 +24,10 @@
border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
} }
.container {
max-width: 100%;
}
@media screen and (min-width: @screen-sm-min) { @media screen and (min-width: @screen-sm-min) {
padding-top: (@jumbotron-padding * 1.6); padding-top: (@jumbotron-padding * 1.6);
padding-bottom: (@jumbotron-padding * 1.6); padding-bottom: (@jumbotron-padding * 1.6);
......
...@@ -30,8 +30,8 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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 {
......
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
margin-left: auto; margin-left: auto;
margin-right: auto; margin-right: auto;
width: auto; width: auto;
padding: 10px; margin: 10px;
z-index: (@zindex-modal-background + 10); z-index: (@zindex-modal-background + 10);
} }
...@@ -122,8 +122,8 @@ ...@@ -122,8 +122,8 @@
.modal-dialog { .modal-dialog {
width: 600px; width: 600px;
padding-top: 30px; margin-top: 30px;
padding-bottom: 30px; margin-bottom: 30px;
} }
.modal-content { .modal-content {
.box-shadow(0 5px 15px rgba(0,0,0,.5)); .box-shadow(0 5px 15px rgba(0,0,0,.5));
......
...@@ -180,6 +180,7 @@ ...@@ -180,6 +180,7 @@
padding: 9px 10px; padding: 9px 10px;
.navbar-vertical-align(34px); .navbar-vertical-align(34px);
background-color: transparent; background-color: transparent;
background-image: none; // Fix for at least Firefox on Android, per #11468
border: 1px solid transparent; border: 1px solid transparent;
border-radius: @border-radius-base; border-radius: @border-radius-base;
...@@ -340,10 +341,10 @@ ...@@ -340,10 +341,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 +415,8 @@ ...@@ -414,15 +415,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 +424,8 @@ ...@@ -430,17 +424,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 +546,6 @@ ...@@ -561,24 +546,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 +553,9 @@ ...@@ -586,6 +553,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,
......
...@@ -48,11 +48,6 @@ ...@@ -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 @@ ...@@ -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 @@ ...@@ -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
......
...@@ -57,13 +57,17 @@ ...@@ -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;
......
...@@ -12,18 +12,6 @@ ...@@ -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; }
......
...@@ -5,9 +5,14 @@ ...@@ -5,9 +5,14 @@
// Mixin and adjust the regular image class // Mixin and adjust the regular image class
.thumbnail { .thumbnail {
.img-thumbnail(); display: block;
display: block; // Override the inline-block from `.img-thumbnail` padding: @thumbnail-padding;
margin-bottom: @line-height-computed; margin-bottom: @line-height-computed;
line-height: @line-height-base;
background-color: @thumbnail-bg;
border: 1px solid @thumbnail-border;
border-radius: @thumbnail-border-radius;
.transition(all .2s ease-in-out);
> img { > img {
.img-responsive(); .img-responsive();
......
...@@ -233,7 +233,8 @@ blockquote { ...@@ -233,7 +233,8 @@ blockquote {
p:last-child { p:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
small { small,
.small {
display: block; display: block;
line-height: @line-height-base; line-height: @line-height-base;
color: @blockquote-small-color; color: @blockquote-small-color;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment