Commit 0e5d17d5 authored by Mark Otto's avatar Mark Otto

Merge branch 'master' into v4

Conflicts:
	Gruntfile.js
	dist/css/bootstrap-theme.css
	dist/css/bootstrap-theme.css.map
	dist/css/bootstrap-theme.min.css
	dist/css/bootstrap.css
	dist/css/bootstrap.css.map
	dist/css/bootstrap.min.css
	dist/js/bootstrap.min.js
	docs/_data/glyphicons.yml
	docs/_includes/components/alerts.html
	docs/_includes/components/badges.html
	docs/_includes/components/breadcrumbs.html
	docs/_includes/components/button-dropdowns.html
	docs/_includes/components/button-groups.html
	docs/_includes/components/dropdowns.html
	docs/_includes/components/glyphicons.html
	docs/_includes/components/input-groups.html
	docs/_includes/components/jumbotron.html
	docs/_includes/components/labels.html
	docs/_includes/components/list-group.html
	docs/_includes/components/media.html
	docs/_includes/components/navbar.html
	docs/_includes/components/navs.html
	docs/_includes/components/page-header.html
	docs/_includes/components/pagination.html
	docs/_includes/components/panels.html
	docs/_includes/components/progress-bars.html
	docs/_includes/components/responsive-embed.html
	docs/_includes/components/thumbnails.html
	docs/_includes/components/wells.html
	docs/_includes/css/buttons.html
	docs/_includes/css/code.html
	docs/_includes/css/forms.html
	docs/_includes/css/grid.html
	docs/_includes/css/helpers.html
	docs/_includes/css/images.html
	docs/_includes/css/less.html
	docs/_includes/css/tables.html
	docs/_includes/css/type.html
	docs/_includes/customizer-variables.html
	docs/_includes/getting-started/accessibility.html
	docs/_includes/getting-started/disabling-responsiveness.html
	docs/_includes/getting-started/download.html
	docs/_includes/getting-started/whats-included.html
	docs/_includes/js/alerts.html
	docs/_includes/js/buttons.html
	docs/_includes/js/carousel.html
	docs/_includes/js/collapse.html
	docs/_includes/js/modal.html
	docs/_includes/js/overview.html
	docs/_includes/js/popovers.html
	docs/_includes/js/tabs.html
	docs/_includes/js/tooltips.html
	docs/_includes/nav/components.html
	docs/_includes/nav/javascript.html
	docs/_jade/customizer-variables.jade
	docs/_layouts/default.html
	docs/about.html
	docs/assets/css/docs.min.css
	docs/assets/css/src/docs.css
	docs/assets/js/customize.min.js
	docs/assets/js/raw-files.min.js
	docs/assets/js/src/customizer.js
	docs/customize.html
	docs/dist/css/bootstrap-theme.css.map
	docs/dist/css/bootstrap.css
	docs/dist/css/bootstrap.css.map
	docs/dist/css/bootstrap.min.css
	less/glyphicons.less
	less/mixins/vendor-prefixes.less
	less/navbar.less
	less/popovers.less
	less/tables.less
	less/theme.less
	less/tooltip.less
	less/variables.less
	package.json
	scss/_carousel.scss
	scss/_close.scss
	scss/_forms.scss
	test-infra/npm-shrinkwrap.json
parents 31610258 57260f16
The MIT License (MIT) The MIT License (MIT)
Copyright (c) 2011-2014 Twitter, Inc Copyright (c) 2011-2015 Twitter, Inc
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
......
# [Bootstrap](http://getbootstrap.com) # [Bootstrap](http://getbootstrap.com)
[![Bower version](https://badge.fury.io/bo/bootstrap.svg)](http://badge.fury.io/bo/bootstrap) ![Bower version](https://img.shields.io/bower/v/bootstrap.svg?style=flat)
[![npm version](https://badge.fury.io/js/bootstrap.svg)](http://badge.fury.io/js/bootstrap) [![npm version](https://img.shields.io/npm/v/bootstrap.svg?style=flat)](https://www.npmjs.com/package/bootstrap)
[![Build Status](https://secure.travis-ci.org/twbs/bootstrap.svg?branch=master)](https://travis-ci.org/twbs/bootstrap) [![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg?style=flat)](https://travis-ci.org/twbs/bootstrap)
[![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies) [![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg?style=flat)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap) [![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
...@@ -39,8 +39,10 @@ Within the download you'll find the following directories and files, logically g ...@@ -39,8 +39,10 @@ Within the download you'll find the following directories and files, logically g
bootstrap/ bootstrap/
├── css/ ├── css/
│ ├── bootstrap.css │ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css │ ├── bootstrap.min.css
│ ├── bootstrap-theme.css │ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ └── bootstrap-theme.min.css │ └── bootstrap-theme.min.css
├── js/ ├── js/
│ ├── bootstrap.js │ ├── bootstrap.js
...@@ -49,10 +51,11 @@ bootstrap/ ...@@ -49,10 +51,11 @@ bootstrap/
├── glyphicons-halflings-regular.eot ├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg ├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf ├── glyphicons-halflings-regular.ttf
└── glyphicons-halflings-regular.woff ├── glyphicons-halflings-regular.woff
└── glyphicons-halflings-regular.woff2
``` ```
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). Fonts from Glyphicons are included, as is the optional Bootstrap theme. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/chrome-developer-tools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
...@@ -126,4 +129,4 @@ For transparency into our release cycle and in striving to maintain backward com ...@@ -126,4 +129,4 @@ For transparency into our release cycle and in striving to maintain backward com
## Copyright and license ## Copyright and license
Code and documentation copyright 2011-2014 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE). Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
...@@ -19,7 +19,7 @@ if (typeof jQuery === 'undefined') { ...@@ -19,7 +19,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: transition.js v3.3.1 * Bootstrap: transition.js v3.3.1
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -79,7 +79,7 @@ if (typeof jQuery === 'undefined') { ...@@ -79,7 +79,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: alert.js v3.3.1 * Bootstrap: alert.js v3.3.1
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -174,7 +174,7 @@ if (typeof jQuery === 'undefined') { ...@@ -174,7 +174,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: button.js v3.3.1 * Bootstrap: button.js v3.3.1
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -291,7 +291,7 @@ if (typeof jQuery === 'undefined') { ...@@ -291,7 +291,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: carousel.js v3.3.1 * Bootstrap: carousel.js v3.3.1
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -529,7 +529,7 @@ if (typeof jQuery === 'undefined') { ...@@ -529,7 +529,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: collapse.js v3.3.1 * Bootstrap: collapse.js v3.3.1
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -741,7 +741,7 @@ if (typeof jQuery === 'undefined') { ...@@ -741,7 +741,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: dropdown.js v3.3.1 * Bootstrap: dropdown.js v3.3.1
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -903,7 +903,7 @@ if (typeof jQuery === 'undefined') { ...@@ -903,7 +903,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: modal.js v3.3.1 * Bootstrap: modal.js v3.3.1
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -1229,7 +1229,7 @@ if (typeof jQuery === 'undefined') { ...@@ -1229,7 +1229,7 @@ if (typeof jQuery === 'undefined') {
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -1671,18 +1671,12 @@ if (typeof jQuery === 'undefined') { ...@@ -1671,18 +1671,12 @@ if (typeof jQuery === 'undefined') {
function Plugin(option) { function Plugin(option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
var data = $this.data('bs.tooltip') var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option var options = typeof option == 'object' && option
var selector = options && options.selector
if (!data && option == 'destroy') return if (!data && option == 'destroy') return
if (selector) { if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (!data) $this.data('bs.tooltip', (data = {}))
if (!data[selector]) data[selector] = new Tooltip(this, options)
} else {
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
}
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
} }
...@@ -1707,7 +1701,7 @@ if (typeof jQuery === 'undefined') { ...@@ -1707,7 +1701,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: popover.js v3.3.1 * Bootstrap: popover.js v3.3.1
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -1791,18 +1785,12 @@ if (typeof jQuery === 'undefined') { ...@@ -1791,18 +1785,12 @@ if (typeof jQuery === 'undefined') {
function Plugin(option) { function Plugin(option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
var data = $this.data('bs.popover') var data = $this.data('bs.popover')
var options = typeof option == 'object' && option var options = typeof option == 'object' && option
var selector = options && options.selector
if (!data && option == 'destroy') return if (!data && option == 'destroy') return
if (selector) { if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (!data) $this.data('bs.popover', (data = {}))
if (!data[selector]) data[selector] = new Popover(this, options)
} else {
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
}
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
} }
...@@ -1827,7 +1815,7 @@ if (typeof jQuery === 'undefined') { ...@@ -1827,7 +1815,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: scrollspy.js v3.3.1 * Bootstrap: scrollspy.js v3.3.1
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -2003,7 +1991,7 @@ if (typeof jQuery === 'undefined') { ...@@ -2003,7 +1991,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: tab.js v3.3.1 * Bootstrap: tab.js v3.3.1
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -2157,7 +2145,7 @@ if (typeof jQuery === 'undefined') { ...@@ -2157,7 +2145,7 @@ if (typeof jQuery === 'undefined') {
* Bootstrap: affix.js v3.3.1 * Bootstrap: affix.js v3.3.1
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -98,16 +98,6 @@ ...@@ -98,16 +98,6 @@
origin: > origin: >
Bootstrap#12078 Bootstrap#12078
-
browser: >
Safari (OS X)
summary: >
Scrollbar clipped in `select[multiple]` with padding.
upstream_bug: >
WebKit#128489
origin: >
Bootstrap#12536
- -
browser: > browser: >
Chrome Chrome
...@@ -128,6 +118,16 @@ ...@@ -128,6 +118,16 @@
origin: > origin: >
Bootstrap#14409 Bootstrap#14409
-
browser: >
Safari (OS X)
summary: >
Scrollbar clipped in `select[multiple]` with padding.
upstream_bug: >
WebKit#128489, Safari#19208483
origin: >
Bootstrap#12536
- -
browser: > browser: >
Safari (OS X) Safari (OS X)
...@@ -152,23 +152,33 @@ ...@@ -152,23 +152,33 @@
- -
browser: > browser: >
Safari (iOS) Safari (OS X)
summary: > summary: >
`transform: translate3d(0,0,0);` rendering bug. Small font size when printing webpage with fixed-width `.container`.
upstream_bug: > upstream_bug: >
WebKit#138162, Safari#18804973 WebKit#138192
origin: > origin: >
Bootstrap#14603 Bootstrap#14868
- -
browser: > browser: >
Safari (OS X) Safari (OS X)
summary: > summary: >
Small font size when printing webpage with fixed-width `.container`. Alpha linear-gradient has dark line at its edge.
upstream_bug: > upstream_bug: >
WebKit#138192 WebKit#139803
origin: > origin: >
Bootstrap#14868 Bootstrap#15205
-
browser: >
Safari (iOS)
summary: >
`transform: translate3d(0,0,0);` rendering bug.
upstream_bug: >
WebKit#138162, Safari#18804973
origin: >
Bootstrap#14603
- -
browser: > browser: >
...@@ -182,10 +192,10 @@ ...@@ -182,10 +192,10 @@
- -
browser: > browser: >
Chrome (Windows & Linux) Safari (iOS)
summary: > summary: >
Body content can be scrolled even though `overflow: hidden;` is applied to it. `display: block` causes text of temporal `<input>`s to become vertically misaligned
upstream_bug: > upstream_bug: >
Chromium#175502 WebKit#139848
origin: > origin: >
Bootstrap#14972 Bootstrap#11266, Bootstrap#13098
...@@ -21,3 +21,7 @@ ...@@ -21,3 +21,7 @@
- name: Heinrich Fenkart - name: Heinrich Fenkart
user: hnrch02 user: hnrch02
gravatar: 0d53f5d3d3d28bd470f394d98f7ef48f gravatar: 0d53f5d3d3d28bd470f394d98f7ef48f
- name: Patrick H. Lauke
user: patrickhlauke
gravatar: 357f279672db832fc41a5a2f36559fcb
This diff is collapsed.
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<h2 id="scrollspy-examples">Example in navbar</h2> <h2 id="scrollspy-examples">Example in navbar</h2>
<p>The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.</p> <p>The ScrollSpy plugin is for automatically updating nav targets based on scroll position. Scroll the area below the navbar and watch the active class change. The dropdown sub items will be highlighted as well.</p>
<div class="bs-example"> <div class="bs-example" data-example-id="embedded-scrollspy">
<nav id="navbar-example2" class="navbar navbar-default navbar-static"> <nav id="navbar-example2" class="navbar navbar-default navbar-static">
<div class="container-fluid"> <div class="container-fluid">
<div class="navbar-header"> <div class="navbar-header">
......
This diff is collapsed.
...@@ -5,7 +5,11 @@ ...@@ -5,7 +5,11 @@
{% include header.html %} {% include header.html %}
</head> </head>
<body class="bs-docs" data-spy="scroll" data-target=".bs-docs-sidenav"> <body class="bs-docs" data-spy="scroll" data-target=".bs-docs-sidenav">
<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a> <a id="skippy" class="sr-only sr-only-focusable" href="#content">
<div class="container">
<span class="skiplink-text">Skip to main content</span>
</div>
</a>
{% include docs-nav.html %} {% include docs-nav.html %}
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
{% include header.html %} {% include header.html %}
</head> </head>
<body class="bs-docs-home"> <body class="bs-docs-home">
<a class="sr-only sr-only-focusable" href="#content">Skip to main content</a> <a id="skippy" class="sr-only sr-only-focusable" href="#content"><div class="container"><span class="skiplink-text">Skip to main content</span></div></a>
<!-- Docs master nav --> <!-- Docs master nav -->
{% include home-nav.html %} {% include home-nav.html %}
......
...@@ -32,13 +32,13 @@ Download the Bootstrap mark in one of three styles, each available as an SVG fil ...@@ -32,13 +32,13 @@ Download the Bootstrap mark in one of three styles, each available as an SVG fil
<div class="bs-brand-logos"> <div class="bs-brand-logos">
<div class="bs-brand-item"> <div class="bs-brand-item">
<img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-solid.svg" alt="Bootstrap"> <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-solid.svg" alt="Bootstrap" width="144" height="144">
</div> </div>
<div class="bs-brand-item inverse"> <div class="bs-brand-item inverse">
<img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-outline.svg" alt="Bootstrap"> <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-outline.svg" alt="Bootstrap" width="144" height="144">
</div> </div>
<div class="bs-brand-item inverse"> <div class="bs-brand-item inverse">
<img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-punchout.svg" alt="Bootstrap"> <img class="svg" src="{{ site.baseurl }}assets/brand/bootstrap-punchout.svg" alt="Bootstrap" width="144" height="144">
</div> </div>
</div> </div>
......
...@@ -12,7 +12,7 @@ Bootstrap is maintained by the founding team and a small group of invaluable cor ...@@ -12,7 +12,7 @@ Bootstrap is maintained by the founding team and a small group of invaluable cor
<div class="list-group-item"> <div class="list-group-item">
<iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user={{ member.user }}&amp;type=follow"></iframe> <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user={{ member.user }}&amp;type=follow"></iframe>
<a class="team-member" href="https://github.com/{{ member.user }}"> <a class="team-member" href="https://github.com/{{ member.user }}">
<img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}"> <img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}" width="32" height="32">
<strong>{{ member.name }}</strong> <small>@{{ member.user }}</small> <strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
</a> </a>
</div> </div>
...@@ -28,7 +28,7 @@ Get involved with Bootstrap development by [opening an issue](https://github.com ...@@ -28,7 +28,7 @@ Get involved with Bootstrap development by [opening an issue](https://github.com
<div class="list-group-item"> <div class="list-group-item">
<iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user={{ member.user }}&amp;type=follow"></iframe> <iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user={{ member.user }}&amp;type=follow"></iframe>
<a class="team-member" href="https://github.com/{{ member.user }}"> <a class="team-member" href="https://github.com/{{ member.user }}">
<img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}"> <img src="http://www.gravatar.com/avatar/{{ member.gravatar }}" alt="@{{ member.user }}" width="32" height="32">
<strong>{{ member.name }}</strong> <small>@{{ member.user }}</small> <strong>{{ member.name }}</strong> <small>@{{ member.user }}</small>
</a> </a>
</div> </div>
......
...@@ -23,4 +23,4 @@ License: http://opensource.org/licenses/MIT ...@@ -23,4 +23,4 @@ License: http://opensource.org/licenses/MIT
* Licensed under the Creative Commons Attribution 3.0 Unported License. For * Licensed under the Creative Commons Attribution 3.0 Unported License. For
* details, see http://creativecommons.org/licenses/by/3.0/. * details, see http://creativecommons.org/licenses/by/3.0/.
*/ */
!function(a){"use strict";a(function(){a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).prev(".progress-striped").toggleClass("progress-animated")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>';a(this).before(b)});var b=new ZeroClipboard(a(".btn-clipboard")),c=a("#global-zeroclipboard-html-bridge");b.on("load",function(){c.data("placement","top").attr("title","Copy to clipboard").tooltip()}),b.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),b.on("complete",function(){c.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),b.on("noflash wrongflash",function(){c.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery); !function(a){"use strict";a(function(){a(".tooltip-demo").tooltip({selector:'[data-toggle="tooltip"]',container:"body"}),a(".popover-demo").popover({selector:'[data-toggle="popover"]',container:"body"}),a(".tooltip-test").tooltip(),a(".popover-test").popover(),a(".bs-docs-popover").popover(),a("#loading-example-btn").on("click",function(){var b=a(this);b.button("loading"),setTimeout(function(){b.button("reset")},3e3)}),a("#exampleModal").on("show.bs.modal",function(b){var c=a(b.relatedTarget),d=c.data("whatever"),e=a(this);e.find(".modal-title").text("New message to "+d),e.find(".modal-body input").val(d)}),a(".bs-docs-activate-animated-progressbar").on("click",function(){a(this).prev(".progress-striped").toggleClass("progress-animated")}),ZeroClipboard.config({moviePath:"/assets/flash/ZeroClipboard.swf",hoverClass:"btn-clipboard-hover"}),a(".highlight").each(function(){var b='<div class="zero-clipboard"><span class="btn-clipboard">Copy</span></div>';a(this).before(b)});var b=new ZeroClipboard(a(".btn-clipboard")),c=a("#global-zeroclipboard-html-bridge");b.on("load",function(){c.data("placement","top").attr("title","Copy to clipboard").tooltip()}),b.on("dataRequested",function(b){var c=a(this).parent().nextAll(".highlight").first();b.setText(c.text())}),b.on("complete",function(){c.attr("title","Copied!").tooltip("fixTitle").tooltip("show").attr("title","Copy to clipboard").tooltip("fixTitle")}),b.on("noflash wrongflash",function(){c.attr("title","Flash required").tooltip("fixTitle").tooltip("show")})})}(jQuery);
\ No newline at end of file
...@@ -1299,10 +1299,6 @@ body { ...@@ -1299,10 +1299,6 @@ body {
color: #fff; color: #fff;
background-color: #563d7c; background-color: #563d7c;
} }
.bs-brand-item .svg {
width: 9rem;
height: 9rem;
}
// Heading content within // Heading content within
.bs-brand-item h1, .bs-brand-item h1,
......
...@@ -33,7 +33,7 @@ Build on any alert by adding an optional `.alert-dismissible` and [close button] ...@@ -33,7 +33,7 @@ Build on any alert by adding an optional `.alert-dismissible` and [close button]
{% example html %} {% example html %}
<div class="alert alert-warning alert-dismissible" role="alert"> <div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span> <span class="sr-only">Close</span>
</button> </button>
......
...@@ -54,7 +54,7 @@ Combine sets of button groups into button toolbars for more complex components. ...@@ -54,7 +54,7 @@ Combine sets of button groups into button toolbars for more complex components.
### Sizing ### Sizing
Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to the `.btn-group`. Instead of applying button sizing classes to every button in a group, just add `.btn-group-*` to each `.btn-group`, including each one when nesting multiple groups.
<div class="bs-example"> <div class="bs-example">
<div class="btn-group btn-group-lg" role="group" aria-label="Large button group"> <div class="btn-group btn-group-lg" role="group" aria-label="Large button group">
......
...@@ -52,7 +52,7 @@ Similar to the contextual text color classes, easily set the background of an el ...@@ -52,7 +52,7 @@ Similar to the contextual text color classes, easily set the background of an el
Use a generic close icon for dismissing content like modals and alerts. **Be sure to include screen reader text when you can** as we've done with `.sr-only`. Use a generic close icon for dismissing content like modals and alerts. **Be sure to include screen reader text when you can** as we've done with `.sr-only`.
{% example html %} {% example html %}
<button type="button" class="close"> <button type="button" class="close" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span> <span class="sr-only">Close</span>
</button> </button>
......
...@@ -17,6 +17,11 @@ Extend form controls by adding text or buttons before, after, or on both sides o ...@@ -17,6 +17,11 @@ Extend form controls by adding text or buttons before, after, or on both sides o
<h4>Don't mix with other components</h4> <h4>Don't mix with other components</h4>
<p>Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.</p> <p>Do not mix form groups or grid column classes directly with input groups. Instead, nest the input group inside of the form group or grid-related element.</p>
</div> </div>
<div class="bs-callout bs-callout-warning" id="callout-inputgroup-form-labels">
<h4>Always add labels</h4>
<p>Screen readers will have trouble with your forms if you don't include a label for every input. For these input groups, ensure that any additional label or functionality is conveyed to assistive technologies.</p>
<p>The exact technique to be used (<code>&lt;label&gt;</code> elements hidden using the <code>.sr-only</code> class, or use of the <code>aria-label</code>, <code>aria-labelledby</code>, <code>aria-describedby</code>, <code>title</code> or <code>placeholder</code> attribute) and what additional information will need to be conveyed will vary depending on the exact type of interface widget you're implementing. The examples in this section provide a few suggested, case-specific approaches.</p>
</div>
## Basic example ## Basic example
...@@ -28,18 +33,18 @@ Place one add-on or button on either side of an input. You may also place one on ...@@ -28,18 +33,18 @@ Place one add-on or button on either side of an input. You may also place one on
{% example html %} {% example html %}
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">@</span> <span class="input-group-addon" id="basic-addon1">@</span>
<input type="text" class="form-control" placeholder="Username"> <input type="text" class="form-control" placeholder="Username" aria-describedby="basic-addon1">
</div> </div>
<br> <br>
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control"> <input type="text" class="form-control" placeholder="Recipient's username" aria-describedby="basic-addon2">
<span class="input-group-addon">.00</span> <span class="input-group-addon" id="basic-addon2">.00</span>
</div> </div>
<br> <br>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">$</span> <span class="input-group-addon">$</span>
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Amount (to the nearest dollar)">
<span class="input-group-addon">.00</span> <span class="input-group-addon">.00</span>
</div> </div>
{% endexample %} {% endexample %}
...@@ -50,18 +55,18 @@ Add the relative form sizing classes to the `.input-group` itself and contents w ...@@ -50,18 +55,18 @@ Add the relative form sizing classes to the `.input-group` itself and contents w
{% example html %} {% example html %}
<div class="input-group input-group-lg"> <div class="input-group input-group-lg">
<span class="input-group-addon">@</span> <span class="input-group-addon" id="sizing-addon1">@</span>
<input type="text" class="form-control" placeholder="Username"> <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon1">
</div> </div>
<br> <br>
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">@</span> <span class="input-group-addon" id="sizing-addon2">@</span>
<input type="text" class="form-control" placeholder="Username"> <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon2">
</div> </div>
<br> <br>
<div class="input-group input-group-sm"> <div class="input-group input-group-sm">
<span class="input-group-addon">@</span> <span class="input-group-addon" id="sizing-addon3">@</span>
<input type="text" class="form-control" placeholder="Username"> <input type="text" class="form-control" placeholder="Username" aria-describedby="sizing-addon3">
</div> </div>
{% endexample %} {% endexample %}
...@@ -74,17 +79,17 @@ Place any checkbox or radio option within an input group's addon instead of text ...@@ -74,17 +79,17 @@ Place any checkbox or radio option within an input group's addon instead of text
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon"> <span class="input-group-addon">
<input type="checkbox"> <input type="checkbox" aria-label="Checkbox for following text input">
</span> </span>
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Text input with checkbox">
</div> </div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon"> <span class="input-group-addon">
<input type="radio"> <input type="radio" aria-label="Radio button for following text input">
</span> </span>
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Text input with radio button">
</div> </div>
</div> </div>
</div> </div>
...@@ -101,12 +106,12 @@ Buttons in input groups are a bit different and require one extra level of nesti ...@@ -101,12 +106,12 @@ Buttons in input groups are a bit different and require one extra level of nesti
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button> <button class="btn btn-secondary" type="button">Go!</button>
</span> </span>
<input type="text" class="form-control"> <input type="text" class="form-control" placeholder="Search for...">
</div> </div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control"> <input type="text" class="form-control" placeholder="Search for...">
<span class="input-group-btn"> <span class="input-group-btn">
<button class="btn btn-secondary" type="button">Go!</button> <button class="btn btn-secondary" type="button">Go!</button>
</span> </span>
...@@ -131,12 +136,12 @@ Buttons in input groups are a bit different and require one extra level of nesti ...@@ -131,12 +136,12 @@ Buttons in input groups are a bit different and require one extra level of nesti
<li><a href="#">Separated link</a></li> <li><a href="#">Separated link</a></li>
</ul> </ul>
</div> </div>
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Text input with dropdown button">
</div> </div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Text input with dropdown button">
<div class="input-group-btn"> <div class="input-group-btn">
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action</button> <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action</button>
<ul class="dropdown-menu dropdown-menu-right" role="menu"> <ul class="dropdown-menu dropdown-menu-right" role="menu">
...@@ -159,8 +164,8 @@ Buttons in input groups are a bit different and require one extra level of nesti ...@@ -159,8 +164,8 @@ Buttons in input groups are a bit different and require one extra level of nesti
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<div class="input-group-btn"> <div class="input-group-btn">
<button type="button" class="btn btn-secondary" tabindex="-1">Action</button> <button type="button" class="btn btn-secondary">Action</button>
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" tabindex="-1" aria-expanded="false"> <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span> <span class="sr-only">Toggle Dropdown</span>
</button> </button>
<ul class="dropdown-menu" role="menu"> <ul class="dropdown-menu" role="menu">
...@@ -171,15 +176,15 @@ Buttons in input groups are a bit different and require one extra level of nesti ...@@ -171,15 +176,15 @@ Buttons in input groups are a bit different and require one extra level of nesti
<li><a href="#">Separated link</a></li> <li><a href="#">Separated link</a></li>
</ul> </ul>
</div> </div>
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
</div> </div>
</div> </div>
<div class="col-lg-6"> <div class="col-lg-6">
<div class="input-group"> <div class="input-group">
<input type="text" class="form-control"> <input type="text" class="form-control" aria-label="Text input with segmented button dropdown">
<div class="input-group-btn"> <div class="input-group-btn">
<button type="button" class="btn btn-secondary" tabindex="-1">Action</button> <button type="button" class="btn btn-secondary">Action</button>
<button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" tabindex="-1" aria-expanded="false"> <button type="button" class="btn btn-secondary dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<span class="sr-only">Toggle Dropdown</span> <span class="sr-only">Toggle Dropdown</span>
</button> </button>
<ul class="dropdown-menu dropdown-menu-right" role="menu"> <ul class="dropdown-menu dropdown-menu-right" role="menu">
......
...@@ -13,7 +13,7 @@ Simple pagination inspired by Rdio, great for apps and search results. The large ...@@ -13,7 +13,7 @@ Simple pagination inspired by Rdio, great for apps and search results. The large
<nav> <nav>
<ul class="pagination"> <ul class="pagination">
<li> <li>
<a href="#"> <a href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span> <span class="sr-only">Previous</span>
</a> </a>
...@@ -24,7 +24,7 @@ Simple pagination inspired by Rdio, great for apps and search results. The large ...@@ -24,7 +24,7 @@ Simple pagination inspired by Rdio, great for apps and search results. The large
<li><a href="#">4</a></li> <li><a href="#">4</a></li>
<li><a href="#">5</a></li> <li><a href="#">5</a></li>
<li> <li>
<a href="#"> <a href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span> <span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span> <span class="sr-only">Next</span>
</a> </a>
...@@ -41,7 +41,7 @@ Links are customizable for different circumstances. Use `.disabled` for unclicka ...@@ -41,7 +41,7 @@ Links are customizable for different circumstances. Use `.disabled` for unclicka
<nav> <nav>
<ul class="pagination"> <ul class="pagination">
<li class="disabled"> <li class="disabled">
<a href="#"> <a href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span> <span class="sr-only">Previous</span>
</a> </a>
...@@ -54,7 +54,7 @@ Links are customizable for different circumstances. Use `.disabled` for unclicka ...@@ -54,7 +54,7 @@ Links are customizable for different circumstances. Use `.disabled` for unclicka
<li><a href="#">4</a></li> <li><a href="#">4</a></li>
<li><a href="#">5</a></li> <li><a href="#">5</a></li>
<li> <li>
<a href="#"> <a href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span> <span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span> <span class="sr-only">Next</span>
</a> </a>
...@@ -69,7 +69,7 @@ You can optionally swap out active or disabled anchors for `<span>`, or omit the ...@@ -69,7 +69,7 @@ You can optionally swap out active or disabled anchors for `<span>`, or omit the
<nav> <nav>
<ul class="pagination"> <ul class="pagination">
<li class="disabled"> <li class="disabled">
<span> <span aria-label="Previous">
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span> <span class="sr-only">Previous</span>
</span> </span>
...@@ -88,7 +88,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for ...@@ -88,7 +88,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
<nav> <nav>
<ul class="pagination pagination-lg"> <ul class="pagination pagination-lg">
<li> <li>
<a href="#"> <a href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span> <span class="sr-only">Previous</span>
</a> </a>
...@@ -97,7 +97,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for ...@@ -97,7 +97,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
<li><a href="#">2</a></li> <li><a href="#">2</a></li>
<li><a href="#">3</a></li> <li><a href="#">3</a></li>
<li> <li>
<a href="#"> <a href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span> <span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span> <span class="sr-only">Next</span>
</a> </a>
...@@ -110,7 +110,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for ...@@ -110,7 +110,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
<nav> <nav>
<ul class="pagination pagination-sm"> <ul class="pagination pagination-sm">
<li> <li>
<a href="#"> <a href="#" aria-label="Previous">
<span aria-hidden="true">&laquo;</span> <span aria-hidden="true">&laquo;</span>
<span class="sr-only">Previous</span> <span class="sr-only">Previous</span>
</a> </a>
...@@ -119,7 +119,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for ...@@ -119,7 +119,7 @@ Fancy larger or smaller pagination? Add `.pagination-lg` or `.pagination-sm` for
<li><a href="#">2</a></li> <li><a href="#">2</a></li>
<li><a href="#">3</a></li> <li><a href="#">3</a></li>
<li> <li>
<a href="#"> <a href="#" aria-label="Next">
<span aria-hidden="true">&raquo;</span> <span aria-hidden="true">&raquo;</span>
<span class="sr-only">Next</span> <span class="sr-only">Next</span>
</a> </a>
......
...@@ -236,6 +236,8 @@ Should you have no text within the `<label>`, the input is positioned as you'd e ...@@ -236,6 +236,8 @@ Should you have no text within the `<label>`, the input is positioned as you'd e
### Selects ### Selects
Note that many native select menus—namely in Safari and Chrome—have rounded corners that cannot be modified via `border-radius` properties.
Use the default option, or add `multiple` to show multiple options at once. Use the default option, or add `multiple` to show multiple options at once.
{% example html %} {% example html %}
...@@ -246,7 +248,11 @@ Use the default option, or add `multiple` to show multiple options at once. ...@@ -246,7 +248,11 @@ Use the default option, or add `multiple` to show multiple options at once.
<option>4</option> <option>4</option>
<option>5</option> <option>5</option>
</select> </select>
{% endexample %}
For `<select>` controls with the `multiple` attribute, multiple options are shown by default.
{% example html %}
<select multiple class="form-control"> <select multiple class="form-control">
<option>1</option> <option>1</option>
<option>2</option> <option>2</option>
......
...@@ -433,6 +433,11 @@ Use contextual classes to color table rows or individual cells. ...@@ -433,6 +433,11 @@ Use contextual classes to color table rows or individual cells.
Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables. Create responsive tables by wrapping any `.table` in `.table-responsive` to make them scroll horizontally on small devices (under 768px). When viewing on anything larger than 768px wide, you will not see any difference in these tables.
<div class="bs-callout bs-callout-warning" id="callout-tables-responsive-overflow">
<h4>Vertical clipping/truncation</h4>
<p>Responsive tables make use of <code>overflow-y: hidden</code>, which clips off any content that goes beyond the bottom or top edges of the table. In particular, this can clip off dropdown menus and other third-party widgets.</p>
</div>
<div class="bs-callout bs-callout-warning"> <div class="bs-callout bs-callout-warning">
<h4>Firefox and fieldsets</h4> <h4>Firefox and fieldsets</h4>
<p>Firefox has some awkward fieldset styling involving <code>width</code> that interferes with the responsive table. This cannot be overriden without a Firefox-specific hack that we <strong>don't</strong> provide in Bootstrap:</p> <p>Firefox has some awkward fieldset styling involving <code>width</code> that interferes with the responsive table. This cannot be overriden without a Firefox-specific hack that we <strong>don't</strong> provide in Bootstrap:</p>
......
...@@ -160,12 +160,10 @@ Transform text in components with text capitalization classes. ...@@ -160,12 +160,10 @@ Transform text in components with text capitalization classes.
## Abbreviations ## Abbreviations
Stylized implementation of HTML's `<abbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover. Stylized implementation of HTML's `<abbr>` element for abbreviations and acronyms to show the expanded version on hover. Abbreviations with a `title` attribute have a light dotted bottom border and a help cursor on hover, providing additional context on hover and to users of assistive technologies.
### Basic abbreviation ### Basic abbreviation
For expanded text on long hover of an abbreviation, include the `title` attribute with the `<abbr>` element.
{% example html %} {% example html %}
<abbr title="attribute">attr</abbr> <abbr title="attribute">attr</abbr>
{% endexample %} {% endexample %}
...@@ -344,10 +342,10 @@ Align terms and descriptions horizontally by using our grid system's predefined ...@@ -344,10 +342,10 @@ Align terms and descriptions horizontally by using our grid system's predefined
<dt class="col-sm-3">Euismod</dt> <dt class="col-sm-3">Euismod</dt>
<dd class="col-sm-9">Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd> <dd class="col-sm-9">Vestibulum id ligula porta felis euismod semper eget lacinia odio sem nec elit.</dd>
<dd class="col-sm-9 col-sm-offset-3">Donec id elit non mi porta gravida at eget metus.</dd> <dd class="col-sm-9 col-sm-offset-3">Donec id elit non mi porta gravida at eget metus.</dd>
<dt class="col-sm-3">Malesuada porta</dt> <dt class="col-sm-3">Malesuada porta</dt>
<dd class="col-sm-9">Etiam porta sem malesuada magna mollis euismod.</dd> <dd class="col-sm-9">Etiam porta sem malesuada magna mollis euismod.</dd>
<dt class="col-sm-3 text-truncate">Truncated term is truncated</dt> <dt class="col-sm-3 text-truncate">Truncated term is truncated</dt>
<dd class="col-sm-9">Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd> <dd class="col-sm-9">Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</dd>
</dl> </dl>
......
...@@ -7,7 +7,7 @@ Bootstrap follows common web standards and—with minimal extra effort—can be ...@@ -7,7 +7,7 @@ Bootstrap follows common web standards and—with minimal extra effort—can be
### Skip navigation ### Skip navigation
If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link immediately after your opening `<body>` tag. [(read why)](http://a11yproject.com/posts/skip-nav-links/) If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link [before the navigation](http://a11yproject.com/posts/skip-nav-links/). Using the `.sr-only` class will visually hide the skip link, and the `.sr-only-focusable` class will ensure that the link becomes visible once focused (for sighted keyboard users).
{% highlight html %} {% highlight html %}
<body> <body>
......
...@@ -44,3 +44,7 @@ You can also install and manage Bootstrap's Sass, CSS, and JavaScript using [Bow ...@@ -44,3 +44,7 @@ You can also install and manage Bootstrap's Sass, CSS, and JavaScript using [Bow
Bootstrap is available as [an npm package](https://www.npmjs.org/package/bootstrap). Install it into your Node powered apps with: Bootstrap is available as [an npm package](https://www.npmjs.org/package/bootstrap). Install it into your Node powered apps with:
{% highlight bash %}$ npm install bootstrap{% endhighlight %} {% highlight bash %}$ npm install bootstrap{% endhighlight %}
### Autoprefixer required for Less/Sass
Bootstrap uses [Autoprefixer](https://github.com/postcss/autoprefixer) to deal with [CSS vendor prefixes](http://webdesign.about.com/od/css/a/css-vendor-prefixes.htm). If you're compiling Bootstrap from its Less/Sass source and not using our Gruntfile, you'll need to integrate Autoprefixer into your build process yourself. If you're using precompiled Bootstrap or using our Gruntfile, you don't need to worry about this because Autoprefixer is already integrated into our Gruntfile.
...@@ -9,7 +9,7 @@ Add dismiss functionality to all alert messages with this plugin. ...@@ -9,7 +9,7 @@ Add dismiss functionality to all alert messages with this plugin.
{% example html %} {% example html %}
<div class="alert alert-warning alert-dismissible fade in" role="alert"> <div class="alert alert-warning alert-dismissible fade in" role="alert">
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span> <span class="sr-only">Close</span>
</button> </button>
...@@ -44,7 +44,7 @@ $(".alert").alert() ...@@ -44,7 +44,7 @@ $(".alert").alert()
Just add `data-dismiss="alert"` to your close button to automatically give an alert close functionality. Closing an alert removes it from the DOM. Just add `data-dismiss="alert"` to your close button to automatically give an alert close functionality. Closing an alert removes it from the DOM.
{% highlight html %} {% highlight html %}
<button type="button" class="close" data-dismiss="alert"> <button type="button" class="close" data-dismiss="alert" aria-label="Close">
<span aria-hidden="true">&times;</span> <span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span> <span class="sr-only">Close</span>
</button> </button>
......
...@@ -35,7 +35,10 @@ A rendered modal with header, body, and set of actions in the footer.</p> ...@@ -35,7 +35,10 @@ A rendered modal with header, body, and set of actions in the footer.</p>
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title">Modal title</h4> <h4 class="modal-title">Modal title</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -55,7 +58,10 @@ A rendered modal with header, body, and set of actions in the footer.</p> ...@@ -55,7 +58,10 @@ A rendered modal with header, body, and set of actions in the footer.</p>
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title">Modal title</h4> <h4 class="modal-title">Modal title</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -79,7 +85,10 @@ Toggle a modal via JavaScript by clicking the button below. It will slide down a ...@@ -79,7 +85,10 @@ Toggle a modal via JavaScript by clicking the button below. It will slide down a
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4> <h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -131,7 +140,10 @@ Toggle a modal via JavaScript by clicking the button below. It will slide down a ...@@ -131,7 +140,10 @@ Toggle a modal via JavaScript by clicking the button below. It will slide down a
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4> <h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -195,7 +207,10 @@ Modals have two optional sizes, available via modifier classes to be placed on a ...@@ -195,7 +207,10 @@ Modals have two optional sizes, available via modifier classes to be placed on a
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="myLargeModalLabel">Large modal</h4> <h4 class="modal-title" id="myLargeModalLabel">Large modal</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -210,7 +225,10 @@ Modals have two optional sizes, available via modifier classes to be placed on a ...@@ -210,7 +225,10 @@ Modals have two optional sizes, available via modifier classes to be placed on a
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="mySmallModalLabel">Small modal</h4> <h4 class="modal-title" id="mySmallModalLabel">Small modal</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -243,7 +261,10 @@ Have a bunch of buttons that all trigger the same modal, just with slightly diff ...@@ -243,7 +261,10 @@ Have a bunch of buttons that all trigger the same modal, just with slightly diff
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="exampleModalLabel">New message</h4> <h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
...@@ -276,7 +297,10 @@ Have a bunch of buttons that all trigger the same modal, just with slightly diff ...@@ -276,7 +297,10 @@ Have a bunch of buttons that all trigger the same modal, just with slightly diff
<div class="modal-dialog"> <div class="modal-dialog">
<div class="modal-content"> <div class="modal-content">
<div class="modal-header"> <div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">&times;</span><span class="sr-only">Close</span></button> <button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="exampleModalLabel">New message</h4> <h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div> </div>
<div class="modal-body"> <div class="modal-body">
......
...@@ -89,6 +89,14 @@ $('#myModal').on('show.bs.modal', function (e) { ...@@ -89,6 +89,14 @@ $('#myModal').on('show.bs.modal', function (e) {
}) })
{% endhighlight %} {% endhighlight %}
### Version numbers
The version of each of Bootstrap's jQuery plugins can be accessed via the `VERSION` property of the plugin's constructor. For example, for the tooltip plugin:
{% highlight js %}
$.fn.tooltip.Constructor.VERSION // => "{{ site.current_version }}"
{% endhighlight %}
### No special fallbacks when JavaScript is disabled ### No special fallbacks when JavaScript is disabled
Bootstrap's plugins don't fall back particularly gracefully when JavaScript is disabled. If you care about the user experience in this case, use [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks. Bootstrap's plugins don't fall back particularly gracefully when JavaScript is disabled. If you care about the user experience in this case, use [`<noscript>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/noscript) to explain the situation (and how to re-enable JavaScript) to your users, and/or add your own custom fallbacks.
......
/*!
* Bootstrap Grunt task for Glyphicons data generation
* http://getbootstrap.com
* Copyright 2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
'use strict';
var fs = require('fs');
module.exports = function generateGlyphiconsData(grunt) {
// Pass encoding, utf8, so `readFileSync` will return a string instead of a
// buffer
var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
var glyphiconsLines = glyphiconsFile.split('\n');
// Use any line that starts with ".glyphicon-" and capture the class name
var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/;
var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' +
'# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
var glyphiconsYml = 'docs/_data/glyphicons.yml';
for (var i = 0, len = glyphiconsLines.length; i < len; i++) {
var match = glyphiconsLines[i].match(iconClassName);
if (match !== null) {
glyphiconsData += '- ' + match[1] + '\n';
}
}
// Create the `_data` directory if it doesn't already exist
if (!fs.existsSync('docs/_data')) {
fs.mkdirSync('docs/_data');
}
try {
fs.writeFileSync(glyphiconsYml, glyphiconsData);
}
catch (err) {
grunt.fail.warn(err);
}
grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');
};
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: affix.js v3.3.1 * Bootstrap: affix.js v3.3.1
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: alert.js v3.3.1 * Bootstrap: alert.js v3.3.1
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: button.js v3.3.1 * Bootstrap: button.js v3.3.1
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: carousel.js v3.3.1 * Bootstrap: carousel.js v3.3.1
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: collapse.js v3.3.1 * Bootstrap: collapse.js v3.3.1
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: dropdown.js v3.3.1 * Bootstrap: dropdown.js v3.3.1
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: modal.js v3.3.1 * Bootstrap: modal.js v3.3.1
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: popover.js v3.3.1 * Bootstrap: popover.js v3.3.1
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -86,18 +86,12 @@ ...@@ -86,18 +86,12 @@
function Plugin(option) { function Plugin(option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
var data = $this.data('bs.popover') var data = $this.data('bs.popover')
var options = typeof option == 'object' && option var options = typeof option == 'object' && option
var selector = options && options.selector
if (!data && option == 'destroy') return if (!data && option == 'destroy') return
if (selector) { if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
if (!data) $this.data('bs.popover', (data = {}))
if (!data[selector]) data[selector] = new Popover(this, options)
} else {
if (!data) $this.data('bs.popover', (data = new Popover(this, options)))
}
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: scrollspy.js v3.3.1 * Bootstrap: scrollspy.js v3.3.1
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: tab.js v3.3.1 * Bootstrap: tab.js v3.3.1
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -188,33 +188,41 @@ $(function () { ...@@ -188,33 +188,41 @@ $(function () {
equal($('.popover').length, 0, 'popover was removed') equal($('.popover').length, 0, 'popover was removed')
}) })
test('should render popover elements using different delegated selectors on the same node', function () { test('should detach popover content rather than removing it so that event handlers are left intact', function () {
var popoverHTML = '<div>' var $content = $('<div class="content-with-handler"><a class="btn btn-warning">Button with event handler</a></div>').appendTo('#qunit-fixture')
+ '<a href="#" class="first" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>'
+ '<a href="#" class="second" title="mdo" data-content="http://twitter.com/mdo">@mdo</a>'
+ '</div>'
var $div = $(popoverHTML) var handlerCalled = false
$('.content-with-handler .btn').click(function () {
handlerCalled = true
})
var $div = $('<div><a href="#">Show popover</a></div>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.bootstrapPopover({ .bootstrapPopover({
selector: 'a.first', html: true,
trigger: 'click' trigger: 'manual',
}) container: 'body',
.bootstrapPopover({ content: function () {
selector: 'a.second', return $content
trigger: 'click' }
}) })
$div.find('a.first').click() stop()
notEqual($('.popover').length, 0, 'first popover was inserted') $div
.one('shown.bs.popover', function () {
$div.find('a.first').click() $div
equal($('.popover').length, 0, 'first popover removed') .one('hidden.bs.popover', function () {
$div
$div.find('a.second').click() .one('shown.bs.popover', function () {
notEqual($('.popover').length, 0, 'second popover was inserted') $('.content-with-handler .btn').click()
$div.bootstrapPopover('destroy')
$div.find('a.second').click() ok(handlerCalled, 'content\'s event handler still present')
equal($('.popover').length, 0, 'second popover removed') start()
})
.bootstrapPopover('show')
})
.bootstrapPopover('hide')
})
.bootstrapPopover('show')
}) })
}) })
...@@ -235,37 +235,6 @@ $(function () { ...@@ -235,37 +235,6 @@ $(function () {
equal($('.tooltip').length, 0, 'tooltip was removed from dom') equal($('.tooltip').length, 0, 'tooltip was removed from dom')
}) })
test('should show tooltips with different delegate selectors on the same node on click', function () {
var tooltipHTML = '<div>'
+ '<a href="#" class="first" rel="tooltip" title="First delegated tooltip"/>'
+ '<a href="#" class="second" rel="tooltip" title="Second delegated tooltip"/>'
+ '</div>'
var $div = $(tooltipHTML)
.append()
.appendTo('#qunit-fixture')
.bootstrapTooltip({
selector: 'a.first[rel="tooltip"]',
trigger: 'click'
})
.bootstrapTooltip({
selector: 'a.second[rel="tooltip"]',
trigger: 'click'
})
$div.find('a.first').click()
ok($('.tooltip').is('.fade.in'), 'first tooltip is faded in')
$div.find('a.first').click()
equal($('.tooltip').length, 0, 'first tooltip was removed from dom')
$div.find('a.second').click()
ok($('.tooltip').is('.fade.in'), 'second tooltip is faded in')
$div.find('a.second').click()
equal($('.tooltip').length, 0, 'second tooltip was removed from dom')
})
test('should show tooltip when toggle is called', function () { test('should show tooltip when toggle is called', function () {
$('<a href="#" rel="tooltip" title="tooltip on toggle"/>') $('<a href="#" rel="tooltip" title="tooltip on toggle"/>')
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
...@@ -445,18 +445,12 @@ ...@@ -445,18 +445,12 @@
function Plugin(option) { function Plugin(option) {
return this.each(function () { return this.each(function () {
var $this = $(this) var $this = $(this)
var data = $this.data('bs.tooltip') var data = $this.data('bs.tooltip')
var options = typeof option == 'object' && option var options = typeof option == 'object' && option
var selector = options && options.selector
if (!data && option == 'destroy') return if (!data && option == 'destroy') return
if (selector) { if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
if (!data) $this.data('bs.tooltip', (data = {}))
if (!data[selector]) data[selector] = new Tooltip(this, options)
} else {
if (!data) $this.data('bs.tooltip', (data = new Tooltip(this, options)))
}
if (typeof option == 'string') data[option]() if (typeof option == 'string') data[option]()
}) })
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* Bootstrap: transition.js v3.3.1 * Bootstrap: transition.js v3.3.1
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2014 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* ======================================================================== */ * ======================================================================== */
......
...@@ -23,6 +23,7 @@ ...@@ -23,6 +23,7 @@
// Additional properties for button version // Additional properties for button version
// iOS requires the button element instead of an anchor tag. // iOS requires the button element instead of an anchor tag.
// If you want the anchor version, it requires `href="#"`. // If you want the anchor version, it requires `href="#"`.
// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
&button { &button {
padding: 0; padding: 0;
cursor: pointer; cursor: pointer;
......
...@@ -145,7 +145,7 @@ output { ...@@ -145,7 +145,7 @@ output {
fieldset[disabled] & { fieldset[disabled] & {
cursor: $cursor-disabled; cursor: $cursor-disabled;
background-color: $input-bg-disabled; background-color: $input-bg-disabled;
opacity: 1; // iOS fix for unreadable disabled content opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
} }
} }
...@@ -174,26 +174,24 @@ input[type="search"] { ...@@ -174,26 +174,24 @@ input[type="search"] {
// In Mobile Safari, setting `display: block` on temporal inputs causes the // In Mobile Safari, setting `display: block` on temporal inputs causes the
// text within the input to become vertically misaligned. As a workaround, we // text within the input to become vertically misaligned. As a workaround, we
// set a pixel line-height that matches the given height of the input, but only // set a pixel line-height that matches the given height of the input, but only
// for Safari. // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
@media screen and (-webkit-min-device-pixel-ratio: 0) { @media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"], input[type="date"],
input[type="time"], input[type="time"],
input[type="datetime-local"], input[type="datetime-local"],
input[type="month"] { input[type="month"] {
line-height: $input-height-base; line-height: @input-height-base;
}
input[type="date"].input-sm, &.input-sm,
input[type="time"].input-sm, .input-group-sm & {
input[type="datetime-local"].input-sm, line-height: @input-height-small;
input[type="month"].input-sm { }
line-height: $input-height-sm;
} &.input-lg,
input[type="date"].input-lg, .input-group-lg & {
input[type="time"].input-lg, line-height: @input-height-large;
input[type="datetime-local"].input-lg, }
input[type="month"].input-lg {
line-height: $input-height-lg;
} }
} }
...@@ -460,8 +458,7 @@ input[type="checkbox"] { ...@@ -460,8 +458,7 @@ input[type="checkbox"] {
} }
// Remove default margin on radios/checkboxes that were used for stacking, and // Remove default margin on radios/checkboxes that were used for stacking, and
// then undo the floating of radios and checkboxes to match (which also avoids // then undo the floating of radios and checkboxes to match.
// a bug in WebKit: https://github.com/twbs/bootstrap/issues/1969).
.radio, .radio,
.checkbox { .checkbox {
display: inline-block; display: inline-block;
......
...@@ -13,6 +13,10 @@ ...@@ -13,6 +13,10 @@
zoom: 1; zoom: 1;
} }
.media-body {
width: 10000px;
}
.media-object { .media-object {
display: block; display: block;
} }
......
...@@ -11,7 +11,7 @@ ...@@ -11,7 +11,7 @@
display: none; display: none;
max-width: $popover-max-width; max-width: $popover-max-width;
padding: 1px; padding: 1px;
// Reset font and text propertes given new insertion method // Reset font and text properties given new insertion method
font-family: $font-family-base; font-family: $font-family-base;
font-size: $font-size-base; font-size: $font-size-base;
font-weight: normal; font-weight: normal;
......
...@@ -110,7 +110,7 @@ th { ...@@ -110,7 +110,7 @@ th {
// Reset default table behavior // Reset default table behavior
table col[class*="col-"] { table col[class*="col-"] {
position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623) position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
display: table-column; display: table-column;
float: none; float: none;
} }
...@@ -119,7 +119,7 @@ table { ...@@ -119,7 +119,7 @@ table {
td, td,
th { th {
&[class*="col-"] { &[class*="col-"] {
position: static; // Prevent border hiding in Firefox and IE9/10 (see https://github.com/twbs/bootstrap/issues/11623) position: static; // Prevent border hiding in Firefox and IE9-11 (see https://github.com/twbs/bootstrap/issues/11623)
display: table-cell; display: table-cell;
float: none; float: none;
} }
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
position: absolute; position: absolute;
z-index: $zindex-tooltip; z-index: $zindex-tooltip;
display: block; display: block;
// Reset font and text propertes given new insertion method // Reset font and text properties given new insertion method
font-family: $font-family-base; font-family: $font-family-base;
font-size: $font-size-sm; font-size: $font-size-sm;
font-weight: normal; font-weight: normal;
......
This diff is collapsed.
Markdown is supported
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