Commit 02c40ab9 authored by Mark Otto's avatar Mark Otto

Merge branch 'master' into docs_derp

Conflicts:
	_layouts/default.html
	components.html
parents 07705673 5f9695ae
{ {
"always-semicolon": true, "always-semicolon": true,
"block-indent": 2, "block-indent": 2,
"colon-space": true, "colon-space": true,
"color-case": "lower", "color-case": "lower",
"color-shorthand": true, "color-shorthand": true,
"combinator-space": true, "combinator-space": true,
"element-case": "lower", "element-case": "lower",
"eof-newline": true, "eof-newline": true,
"leading-zero": false, "leading-zero": false,
"remove-empty-rulesets": true, "remove-empty-rulesets": true,
"rule-indent": 2, "rule-indent": 2,
"stick-brace": true, "stick-brace": true,
"strip-spaces": true, "strip-spaces": true,
"unitless-zero": true, "unitless-zero": true,
"vendor-prefix-align": true, "vendor-prefix-align": true,
"sort-order": [ "sort-order": [
[ [
"position", "position",
"top", "top",
"right", "right",
"bottom", "bottom",
"left", "left",
"z-index", "z-index",
"display", "display",
"float", "float",
"width", "width",
"min-width", "min-width",
"max-width", "max-width",
"height", "height",
"min-height", "min-height",
"max-height", "max-height",
"-webkit-box-sizing", "-webkit-box-sizing",
"-moz-box-sizing", "-moz-box-sizing",
"box-sizing", "box-sizing",
"padding", "padding",
"padding-top", "padding-top",
"padding-right", "padding-right",
"padding-bottom", "padding-bottom",
"padding-left", "padding-left",
"margin", "margin",
"margin-top", "margin-top",
"margin-right", "margin-right",
"margin-bottom", "margin-bottom",
"margin-left", "margin-left",
"overflow", "overflow",
"overflow-x", "overflow-x",
"overflow-y", "overflow-y",
"-ms-overflow-x", "-ms-overflow-x",
"-ms-overflow-y", "-ms-overflow-y",
"clip", "clip",
"clear", "clear",
"font", "font",
"font-family", "font-family",
"font-size", "font-size",
"font-style", "font-style",
"font-weight", "font-weight",
"font-variant", "font-variant",
"font-size-adjust", "font-size-adjust",
"font-stretch", "font-stretch",
"font-effect", "font-effect",
"font-emphasize", "font-emphasize",
"font-emphasize-position", "font-emphasize-position",
"font-emphasize-style", "font-emphasize-style",
"font-smooth", "font-smooth",
"-webkit-hyphens", "-webkit-hyphens",
"-moz-hyphens", "-moz-hyphens",
"hyphens", "hyphens",
"line-height", "line-height",
"color", "color",
"text-align", "text-align",
"-webkit-text-align-last", "-webkit-text-align-last",
"-moz-text-align-last", "-moz-text-align-last",
"-ms-text-align-last", "-ms-text-align-last",
"text-align-last", "text-align-last",
"text-emphasis", "text-emphasis",
"text-emphasis-color", "text-emphasis-color",
"text-emphasis-style", "text-emphasis-style",
"text-emphasis-position", "text-emphasis-position",
"text-decoration", "text-decoration",
"text-indent", "text-indent",
"text-justify", "text-justify",
"text-outline", "text-outline",
"-ms-text-overflow", "-ms-text-overflow",
"text-overflow", "text-overflow",
"text-overflow-ellipsis", "text-overflow-ellipsis",
"text-overflow-mode", "text-overflow-mode",
"text-shadow", "text-shadow",
"text-transform", "text-transform",
"text-wrap", "text-wrap",
"letter-spacing", "letter-spacing",
"-ms-word-break", "-ms-word-break",
"word-break", "word-break",
"word-spacing", "word-spacing",
"-ms-word-wrap", "-ms-word-wrap",
"word-wrap", "word-wrap",
"-moz-tab-size", "-moz-tab-size",
"-o-tab-size", "-o-tab-size",
"tab-size", "tab-size",
"white-space", "white-space",
"vertical-align", "vertical-align",
"list-style", "list-style",
"list-style-position", "list-style-position",
"list-style-type", "list-style-type",
"list-style-image", "list-style-image",
"pointer-events", "pointer-events",
"cursor", "cursor",
"visibility", "visibility",
"zoom", "zoom",
"flex-direction", "flex-direction",
"flex-order", "flex-order",
"flex-pack", "flex-pack",
"flex-align", "flex-align",
"table-layout", "table-layout",
"empty-cells", "empty-cells",
"caption-side", "caption-side",
"border-spacing", "border-spacing",
"border-collapse", "border-collapse",
"content", "content",
"quotes", "quotes",
"counter-reset", "counter-reset",
"counter-increment", "counter-increment",
"resize", "resize",
"-webkit-user-select", "-webkit-user-select",
"-moz-user-select", "-moz-user-select",
"-ms-user-select", "-ms-user-select",
"user-select", "user-select",
"nav-index", "nav-index",
"nav-up", "nav-up",
"nav-right", "nav-right",
"nav-down", "nav-down",
"nav-left", "nav-left",
"filter:progid:DXImageTransform.Microsoft.AlphaImageLoader", "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader",
"background", "background",
"background-color", "background-color",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient", "-ms-filter:\\'progid:DXImageTransform.Microsoft.gradient",
"filter:progid:DXImageTransform.Microsoft.gradient", "filter:progid:DXImageTransform.Microsoft.gradient",
"background-image", "background-image",
"background-repeat", "background-repeat",
"background-attachment", "background-attachment",
"background-position", "background-position",
"background-position-x", "background-position-x",
"background-position-y", "background-position-y",
"-webkit-background-clip", "-webkit-background-clip",
"-moz-background-clip", "-moz-background-clip",
"background-clip", "background-clip",
"background-origin", "background-origin",
"-webkit-background-size", "-webkit-background-size",
"-moz-background-size", "-moz-background-size",
"-o-background-size", "-o-background-size",
"background-size", "background-size",
"border", "border",
"border-color", "border-color",
"border-style", "border-style",
"border-width", "border-width",
"border-top", "border-top",
"border-top-color", "border-top-color",
"border-top-style", "border-top-style",
"border-top-width", "border-top-width",
"border-right", "border-right",
"border-right-color", "border-right-color",
"border-right-style", "border-right-style",
"border-right-width", "border-right-width",
"border-bottom", "border-bottom",
"border-bottom-color", "border-bottom-color",
"border-bottom-style", "border-bottom-style",
"border-bottom-width", "border-bottom-width",
"border-left", "border-left",
"border-left-color", "border-left-color",
"border-left-style", "border-left-style",
"border-left-width", "border-left-width",
"border-radius", "border-radius",
"border-top-left-radius", "border-top-left-radius",
"border-top-right-radius", "border-top-right-radius",
"border-bottom-right-radius", "border-bottom-right-radius",
"border-bottom-left-radius", "border-bottom-left-radius",
"-webkit-border-image", "-webkit-border-image",
"-moz-border-image", "-moz-border-image",
"-o-border-image", "-o-border-image",
"border-image", "border-image",
"-webkit-border-image-source", "-webkit-border-image-source",
"-moz-border-image-source", "-moz-border-image-source",
"-o-border-image-source", "-o-border-image-source",
"border-image-source", "border-image-source",
"-webkit-border-image-slice", "-webkit-border-image-slice",
"-moz-border-image-slice", "-moz-border-image-slice",
"-o-border-image-slice", "-o-border-image-slice",
"border-image-slice", "border-image-slice",
"-webkit-border-image-width", "-webkit-border-image-width",
"-moz-border-image-width", "-moz-border-image-width",
"-o-border-image-width", "-o-border-image-width",
"border-image-width", "border-image-width",
"-webkit-border-image-outset", "-webkit-border-image-outset",
"-moz-border-image-outset", "-moz-border-image-outset",
"-o-border-image-outset", "-o-border-image-outset",
"border-image-outset", "border-image-outset",
"-webkit-border-image-repeat", "-webkit-border-image-repeat",
"-moz-border-image-repeat", "-moz-border-image-repeat",
"-o-border-image-repeat", "-o-border-image-repeat",
"border-image-repeat", "border-image-repeat",
"outline", "outline",
"outline-width", "outline-width",
"outline-style", "outline-style",
"outline-color", "outline-color",
"outline-offset", "outline-offset",
"-webkit-box-shadow", "-webkit-box-shadow",
"-moz-box-shadow", "-moz-box-shadow",
"box-shadow", "box-shadow",
"filter:progid:DXImageTransform.Microsoft.Alpha(Opacity", "filter:progid:DXImageTransform.Microsoft.Alpha(Opacity",
"-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha", "-ms-filter:\\'progid:DXImageTransform.Microsoft.Alpha",
"opacity", "opacity",
"-ms-interpolation-mode", "-ms-interpolation-mode",
"-webkit-transition", "-webkit-transition",
"-moz-transition", "-moz-transition",
"-ms-transition", "-ms-transition",
"-o-transition", "-o-transition",
"transition", "transition",
"-webkit-transition-delay", "-webkit-transition-delay",
"-moz-transition-delay", "-moz-transition-delay",
"-ms-transition-delay", "-ms-transition-delay",
"-o-transition-delay", "-o-transition-delay",
"transition-delay", "transition-delay",
"-webkit-transition-timing-function", "-webkit-transition-timing-function",
"-moz-transition-timing-function", "-moz-transition-timing-function",
"-ms-transition-timing-function", "-ms-transition-timing-function",
"-o-transition-timing-function", "-o-transition-timing-function",
"transition-timing-function", "transition-timing-function",
"-webkit-transition-duration", "-webkit-transition-duration",
"-moz-transition-duration", "-moz-transition-duration",
"-ms-transition-duration", "-ms-transition-duration",
"-o-transition-duration", "-o-transition-duration",
"transition-duration", "transition-duration",
"-webkit-transition-property", "-webkit-transition-property",
"-moz-transition-property", "-moz-transition-property",
"-ms-transition-property", "-ms-transition-property",
"-o-transition-property", "-o-transition-property",
"transition-property", "transition-property",
"-webkit-transform", "-webkit-transform",
"-moz-transform", "-moz-transform",
"-ms-transform", "-ms-transform",
"-o-transform", "-o-transform",
"transform", "transform",
"-webkit-transform-origin", "-webkit-transform-origin",
"-moz-transform-origin", "-moz-transform-origin",
"-ms-transform-origin", "-ms-transform-origin",
"-o-transform-origin", "-o-transform-origin",
"transform-origin", "transform-origin",
"-webkit-animation", "-webkit-animation",
"-moz-animation", "-moz-animation",
"-ms-animation", "-ms-animation",
"-o-animation", "-o-animation",
"animation", "animation",
"-webkit-animation-name", "-webkit-animation-name",
"-moz-animation-name", "-moz-animation-name",
"-ms-animation-name", "-ms-animation-name",
"-o-animation-name", "-o-animation-name",
"animation-name", "animation-name",
"-webkit-animation-duration", "-webkit-animation-duration",
"-moz-animation-duration", "-moz-animation-duration",
"-ms-animation-duration", "-ms-animation-duration",
"-o-animation-duration", "-o-animation-duration",
"animation-duration", "animation-duration",
"-webkit-animation-play-state", "-webkit-animation-play-state",
"-moz-animation-play-state", "-moz-animation-play-state",
"-ms-animation-play-state", "-ms-animation-play-state",
"-o-animation-play-state", "-o-animation-play-state",
"animation-play-state", "animation-play-state",
"-webkit-animation-timing-function", "-webkit-animation-timing-function",
"-moz-animation-timing-function", "-moz-animation-timing-function",
"-ms-animation-timing-function", "-ms-animation-timing-function",
"-o-animation-timing-function", "-o-animation-timing-function",
"animation-timing-function", "animation-timing-function",
"-webkit-animation-delay", "-webkit-animation-delay",
"-moz-animation-delay", "-moz-animation-delay",
"-ms-animation-delay", "-ms-animation-delay",
"-o-animation-delay", "-o-animation-delay",
"animation-delay", "animation-delay",
"-webkit-animation-iteration-count", "-webkit-animation-iteration-count",
"-moz-animation-iteration-count", "-moz-animation-iteration-count",
"-ms-animation-iteration-count", "-ms-animation-iteration-count",
"-o-animation-iteration-count", "-o-animation-iteration-count",
"animation-iteration-count", "animation-iteration-count",
"-webkit-animation-direction", "-webkit-animation-direction",
"-moz-animation-direction", "-moz-animation-direction",
"-ms-animation-direction", "-ms-animation-direction",
"-o-animation-direction", "-o-animation-direction",
"animation-direction" "animation-direction"
]
] ]
]
} }
...@@ -2,30 +2,155 @@ ...@@ -2,30 +2,155 @@
Looking to contribute something to Bootstrap? **Here's how you can help.** Looking to contribute something to Bootstrap? **Here's how you can help.**
Please take a moment to review this document in order to make the contribution
process easy and effective for everyone involved.
Following these guidelines helps to communicate that you respect the time of
the developers managing and developing this open source project. In return,
they should reciprocate that respect in addressing your issue or assessing
patches and features.
## Reporting issues
We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems that we can fix within the Bootstrap core. Please read the following guidelines before opening any issue. ## Using the issue tracker
1. **Search for existing issues.** We get a lot of duplicate issues, and you'd help us out a lot by first checking if someone else has reported the same issue. Moreover, the issue may have already been resolved with a fix available. The [issue tracker](https://github.com/twbs/bootstrap/issues) is
2. **Create an isolated and reproducible test case.** Be sure the problem exists in Bootstrap's code with a [reduced test case](http://css-tricks.com/reduced-test-cases/) that should be included in each bug report. the preferred channel for [bug reports](#bug-reports), [features requests](#feature-requests)
3. **Include a live example.** Make use of jsFiddle or jsBin to share your isolated test cases. and [submitting pull requests](#pull-requests), but please respect the following
4. **Share as much information as possible.** Include operating system and version, browser and version, version of Bootstrap, customized or vanilla build, etc. where appropriate. Also include steps to reproduce the bug. restrictions:
* Please **do not** use the issue tracker for personal support requests. Stack
Overflow ([`twitter-boostrap`](http://stackoverflow.com/questions/tagged/twitter-bootstrap) tag) or [IRC](https://github.com/twbs/bootstrap/blob/master/README.md#community) are better places to get help.
* Please **do not** derail or troll issues. Keep the discussion on topic and
respect the opinions of others.
* Please **do not** open issues or pull requests regarding the code in
[`Normalize`](https://github.com/necolas/normalize.css) (open them in
their respective repositories).
## Bug reports
A bug is a _demonstrable problem_ that is caused by the code in the repository.
Good bug reports are extremely helpful, so thanks!
Guidelines for bug reports:
1. **Use the GitHub issue search** — check if the issue has already been
reported.
2. **Check if the issue has been fixed** — try to reproduce it using the
latest `master` or development branch in the repository.
3. **Isolate the problem** — ideally create a [reduced test
case](http://css-tricks.com/6263-reduced-test-cases/) and a live example.
[This JS Bin](http://jsbin.com/EBAwOkOK/1) is a helpful template.
A good bug report shouldn't leave others needing to chase you up for more
information. Please try to be as detailed as possible in your report. What is
your environment? What steps will reproduce the issue? What browser(s) and OS
experience the problem? Do other browsers show the bug differently? What
would you expect to be the outcome? All these details will help people to fix
any potential bugs.
Example:
> Short and descriptive example bug report title
>
> A summary of the issue and the browser/OS environment in which it occurs. If
> suitable, include the steps required to reproduce the bug.
>
> 1. This is the first step
> 2. This is the second step
> 3. Further steps, etc.
>
> `<url>` - a link to the reduced test case
>
> Any other information you want to share that is relevant to the issue being
> reported. This might include the lines of code that you have identified as
> causing the bug, and potential solutions (and your opinions on their
> merits).
## Feature requests
Feature requests are welcome. But take a moment to find out whether your idea
fits with the scope and aims of the project. It's up to *you* to make a strong
case to convince the project's developers of the merits of this feature. Please
provide as much detail and context as possible.
## Pull requests ## Pull requests
- CSS changes must be done in `.less` files first, never just in the compiled `.css` files Good pull requests—patches, improvements, new features—are a fantastic
- If modifying the `.less` files, always recompile and commit the compiled files `bootstrap.css` and `bootstrap.min.css` help. They should remain focused in scope and avoid containing unrelated
- Try not to pollute your pull request with unintended changes--keep them simple and small commits.
- Try to share which browsers your code has been tested in before submitting a pull request
- Pull requests should always be against the `master` branch, never against `gh-pages`. **Please ask first** before embarking on any significant pull request (e.g.
implementing features, refactoring code, porting to a different language),
otherwise you risk spending a lot of time working on something that the
project's developers might not want to merge into the project.
Please adhere to the [coding conventions](#code-conventions) used throughout a
project (indentation, accurate comments, etc.) and any other requirements
(such as test coverage).
Adhering to the following this process is the best way to get your work
included in the project:
## Coding standards 1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork,
and configure the remotes:
```bash
# Clone your fork of the repo into the current directory
git clone https://github.com/<your-username>/bootstrap.git
# Navigate to the newly cloned directory
cd html5-boilerplate
# Assign the original repo to a remote called "upstream"
git remote add upstream https://github.com/twbs/bootstrap.git
```
2. If you cloned a while ago, get the latest changes from upstream:
```bash
git checkout master
git pull upstream master
```
3. Create a new topic branch (off the main project development branch) to
contain your feature, change, or fix:
```bash
git checkout -b <topic-branch-name>
```
4. Commit your changes in logical chunks. Please adhere to these [git commit
message guidelines](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
or your code is unlikely be merged into the main project. Use Git's
[interactive rebase](https://help.github.com/articles/interactive-rebase)
feature to tidy up your commits before making them public.
5. Locally merge (or rebase) the upstream development branch into your topic branch:
```bash
git pull [--rebase] upstream master
```
6. Push your topic branch up to your fork:
```bash
git push origin <topic-branch-name>
```
7. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/)
with a clear title and description against the `master` branch.
**IMPORTANT**: By submitting a patch, you agree to allow the project owners to
license your work under the the terms of the [MIT License](LICENSE.md).
## Code guidelines
### HTML ### HTML
...@@ -37,6 +162,7 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso ...@@ -37,6 +162,7 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso
### CSS ### CSS
- CSS changes must be done in `.less` files first, never just in the compiled `.css` files
- Adhere to the [CSS property order](http://markdotto.com/2011/11/29/css-property-order/) - Adhere to the [CSS property order](http://markdotto.com/2011/11/29/css-property-order/)
- Multiple-line approach (one property and value per line) - Multiple-line approach (one property and value per line)
- Always a space after a property's colon (e.g., `display: block;` and not `display:block;`) - Always a space after a property's colon (e.g., `display: block;` and not `display:block;`)
...@@ -56,25 +182,9 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso ...@@ -56,25 +182,9 @@ We only accept issues that are bug reports or feature requests. Bugs must be iso
- "Attractive" - "Attractive"
## License ## License
Prior to v3.1.0, Bootstrap was released under the Apache License v2.0. As of v3.1.0, Bootstrap is now licensed under the [MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). By contributing your code, you agree to license your contribution under the [MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). By contributing your code, you agree to license your contribution under the [MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE).
## Release checklist Prior to v3.1.0, Bootstrap was released under the Apache License v2.0.
1. Close ship list issue for the release.
2. Close the milestone for the release.
3. Open new release issue that includes this checklist.
4. Ping folks to coordinate release (mainly @jdorfman for BootstrapCDN).
5. Update version numbers using `grunt change-version-number --oldver=A.B.C --newver=X.Y.Z`. Review the changes and stage them manually.
6. Run `grunt` one last time.
7. Push to `master` branch.
8. Merge `master` into `gh-pages`.
9. Generate `bootstrap-X.Y.Z-dist.zip` file for release.
10. Create release on GitHub with `/dist/` folder and release notes.
11. Push `gh-pages`.
12. Publish blog post.
13. Tweet tweet.
...@@ -299,13 +299,40 @@ module.exports = function (grunt) { ...@@ -299,13 +299,40 @@ module.exports = function (grunt) {
grunt.registerTask('dist', ['clean', 'dist-css', 'dist-fonts', 'dist-js']); grunt.registerTask('dist', ['clean', 'dist-css', 'dist-fonts', 'dist-js']);
// Default task. // Default task.
grunt.registerTask('default', ['test', 'dist', 'build-customizer']); grunt.registerTask('default', ['test', 'dist', 'build-glyphicons-data', 'build-customizer']);
// Version numbering task. // Version numbering task.
// grunt change-version-number --oldver=A.B.C --newver=X.Y.Z // grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
// This can be overzealous, so its changes should always be manually reviewed! // This can be overzealous, so its changes should always be manually reviewed!
grunt.registerTask('change-version-number', ['sed']); grunt.registerTask('change-version-number', ['sed']);
grunt.registerTask('build-glyphicons-data', function () {
var fs = require('fs')
// Pass encoding, utf8, so `readFileSync` will return a string instead of a
// buffer
var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8')
var glpyhiconsLines = glyphiconsFile.split('\n')
// Use any line that starts with ".glyphicon-" and capture the class name
var iconClassName = /^\.(glyphicon-[^\s]+)/
var glyphiconsData = '# Generated on ' + (new Date()) + '\n' +
'# **Don\'t edit this directly!**\n' +
'# Look at the \'build-glyphicons-data\' task in Gruntfile.js\n\n';
for (var i = 0, len = glpyhiconsLines.length; i < len; i++) {
var match = glpyhiconsLines[i].match(iconClassName)
if (match != null) {
glyphiconsData += '- ' + match[1] + '\n'
}
}
// Create the `_data` directory if it doesn't already exist
if (!fs.existsSync('_data')) fs.mkdirSync('_data')
fs.writeFileSync('_data/glyphicons.yml', glyphiconsData)
});
// task for building customizer // task for building customizer
grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', function () { grunt.registerTask('build-customizer', 'Add scripts/less files to customizer.', function () {
var fs = require('fs') var fs = require('fs')
......
# [Bootstrap](http://getbootstrap.com) [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.png)](http://travis-ci.org/twbs/bootstrap) [![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.png)](https://david-dm.org/twbs/bootstrap#info=devDependencies) # [Bootstrap](http://getbootstrap.com) [![Build Status](https://secure.travis-ci.org/twbs/bootstrap.png)](http://travis-ci.org/twbs/bootstrap) [![devDependency Status](https://david-dm.org/twbs/bootstrap/dev-status.png)](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 and maintained by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat). Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](http://twitter.com/mdo) and [Jacob Thornton](http://twitter.com/fat), and maintained by the [core team](https://github.com/twbs?tab=members) with the massive support and involvement of the community.
To get started, check out <http://getbootstrap.com>! To get started, check out <http://getbootstrap.com>!
## Table of contents
- [Quick start](#quick-start)
- [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation)
- [Compiling CSS and JavaScript](#compiling-css-and-javascript)
- [Contributing](#contributing)
- [Community](#community)
- [Versioning](#versioning)
- [Authors](#authors)
- [Copyright and license](#copyright-and-license)
## Quick start ## Quick start
...@@ -44,10 +54,7 @@ We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified ...@@ -44,10 +54,7 @@ We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified
## Bugs and feature requests ## Bugs and feature requests
Have a bug or a feature request? [Please open a new issue](https://github.com/twbs/bootstrap/issues). Before opening any issue, please search for existing issues and read the [Issue Guidelines](https://github.com/necolas/issue-guidelines), written by [Nicolas Gallagher](https://github.com/necolas/). Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
You may use [this JS Bin](http://jsbin.com/aKiCIDO/1/edit) as a template for your bug reports.
## Documentation ## Documentation
...@@ -124,6 +131,7 @@ Keep track of development and community news. ...@@ -124,6 +131,7 @@ Keep track of development and community news.
- Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap). - Follow [@twbootstrap on Twitter](http://twitter.com/twbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com). - Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel. - Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##twitter-bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap`](http://stackoverflow.com/questions/tagged/twitter-bootstrap)).
......
# Generated on Wed Dec 18 2013 20:14:37 GMT-0800 (PST)
# **Don't edit this directly!**
# Look at the 'build-glyphicons-data' task in Gruntfile.js
- glyphicon-asterisk
- glyphicon-plus
- glyphicon-euro
- glyphicon-minus
- glyphicon-cloud
- glyphicon-envelope
- glyphicon-pencil
- glyphicon-glass
- glyphicon-music
- glyphicon-search
- glyphicon-heart
- glyphicon-star
- glyphicon-star-empty
- glyphicon-user
- glyphicon-film
- glyphicon-th-large
- glyphicon-th
- glyphicon-th-list
- glyphicon-ok
- glyphicon-remove
- glyphicon-zoom-in
- glyphicon-zoom-out
- glyphicon-off
- glyphicon-signal
- glyphicon-cog
- glyphicon-trash
- glyphicon-home
- glyphicon-file
- glyphicon-time
- glyphicon-road
- glyphicon-download-alt
- glyphicon-download
- glyphicon-upload
- glyphicon-inbox
- glyphicon-play-circle
- glyphicon-repeat
- glyphicon-refresh
- glyphicon-list-alt
- glyphicon-lock
- glyphicon-flag
- glyphicon-headphones
- glyphicon-volume-off
- glyphicon-volume-down
- glyphicon-volume-up
- glyphicon-qrcode
- glyphicon-barcode
- glyphicon-tag
- glyphicon-tags
- glyphicon-book
- glyphicon-bookmark
- glyphicon-print
- glyphicon-camera
- glyphicon-font
- glyphicon-bold
- glyphicon-italic
- glyphicon-text-height
- glyphicon-text-width
- glyphicon-align-left
- glyphicon-align-center
- glyphicon-align-right
- glyphicon-align-justify
- glyphicon-list
- glyphicon-indent-left
- glyphicon-indent-right
- glyphicon-facetime-video
- glyphicon-picture
- glyphicon-map-marker
- glyphicon-adjust
- glyphicon-tint
- glyphicon-edit
- glyphicon-share
- glyphicon-check
- glyphicon-move
- glyphicon-step-backward
- glyphicon-fast-backward
- glyphicon-backward
- glyphicon-play
- glyphicon-pause
- glyphicon-stop
- glyphicon-forward
- glyphicon-fast-forward
- glyphicon-step-forward
- glyphicon-eject
- glyphicon-chevron-left
- glyphicon-chevron-right
- glyphicon-plus-sign
- glyphicon-minus-sign
- glyphicon-remove-sign
- glyphicon-ok-sign
- glyphicon-question-sign
- glyphicon-info-sign
- glyphicon-screenshot
- glyphicon-remove-circle
- glyphicon-ok-circle
- glyphicon-ban-circle
- glyphicon-arrow-left
- glyphicon-arrow-right
- glyphicon-arrow-up
- glyphicon-arrow-down
- glyphicon-share-alt
- glyphicon-resize-full
- glyphicon-resize-small
- glyphicon-exclamation-sign
- glyphicon-gift
- glyphicon-leaf
- glyphicon-fire
- glyphicon-eye-open
- glyphicon-eye-close
- glyphicon-warning-sign
- glyphicon-plane
- glyphicon-calendar
- glyphicon-random
- glyphicon-comment
- glyphicon-magnet
- glyphicon-chevron-up
- glyphicon-chevron-down
- glyphicon-retweet
- glyphicon-shopping-cart
- glyphicon-folder-close
- glyphicon-folder-open
- glyphicon-resize-vertical
- glyphicon-resize-horizontal
- glyphicon-hdd
- glyphicon-bullhorn
- glyphicon-bell
- glyphicon-certificate
- glyphicon-thumbs-up
- glyphicon-thumbs-down
- glyphicon-hand-right
- glyphicon-hand-left
- glyphicon-hand-up
- glyphicon-hand-down
- glyphicon-circle-arrow-right
- glyphicon-circle-arrow-left
- glyphicon-circle-arrow-up
- glyphicon-circle-arrow-down
- glyphicon-globe
- glyphicon-wrench
- glyphicon-tasks
- glyphicon-filter
- glyphicon-briefcase
- glyphicon-fullscreen
- glyphicon-dashboard
- glyphicon-paperclip
- glyphicon-heart-empty
- glyphicon-link
- glyphicon-phone
- glyphicon-pushpin
- glyphicon-usd
- glyphicon-gbp
- glyphicon-sort
- glyphicon-sort-by-alphabet
- glyphicon-sort-by-alphabet-alt
- glyphicon-sort-by-order
- glyphicon-sort-by-order-alt
- glyphicon-sort-by-attributes
- glyphicon-sort-by-attributes-alt
- glyphicon-unchecked
- glyphicon-expand
- glyphicon-collapse-down
- glyphicon-collapse-up
- glyphicon-log-in
- glyphicon-flash
- glyphicon-log-out
- glyphicon-new-window
- glyphicon-record
- glyphicon-save
- glyphicon-open
- glyphicon-saved
- glyphicon-import
- glyphicon-export
- glyphicon-send
- glyphicon-floppy-disk
- glyphicon-floppy-saved
- glyphicon-floppy-remove
- glyphicon-floppy-save
- glyphicon-floppy-open
- glyphicon-credit-card
- glyphicon-transfer
- glyphicon-cutlery
- glyphicon-header
- glyphicon-compressed
- glyphicon-earphone
- glyphicon-phone-alt
- glyphicon-tower
- glyphicon-stats
- glyphicon-sd-video
- glyphicon-hd-video
- glyphicon-subtitles
- glyphicon-sound-stereo
- glyphicon-sound-dolby
- glyphicon-sound-5-1
- glyphicon-sound-6-1
- glyphicon-sound-7-1
- glyphicon-copyright-mark
- glyphicon-registration-mark
- glyphicon-cloud-download
- glyphicon-cloud-upload
- glyphicon-tree-conifer
- glyphicon-tree-deciduous
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
{% include social-buttons.html %} {% include social-buttons.html %}
<p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p> <p>Designed and built with all the love in the world by <a href="http://twitter.com/mdo" target="_blank">@mdo</a> and <a href="http://twitter.com/fat" target="_blank">@fat</a>.</p>
<p>Maintained by the <a href="https://github.com/twbs?tab=members">core team</a> with the help of <a href="https://github.com/twbs/bootstrap/graphs/contributors">our contributors</a>.</p>
<p>Code licensed under <a href="https://github.com/twbs/bootstrap/blob/master/LICENSE" target="_blank">MIT</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p> <p>Code licensed under <a href="https://github.com/twbs/bootstrap/blob/master/LICENSE" target="_blank">MIT</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
<ul class="footer-links muted"> <ul class="footer-links muted">
<li>Currently v{{ site.current_version }}</li> <li>Currently v{{ site.current_version }}</li>
......
...@@ -17,7 +17,16 @@ base_url: "../" ...@@ -17,7 +17,16 @@ base_url: "../"
<h2 id="glyphicons-glyphs">Available glyphs</h2> <h2 id="glyphicons-glyphs">Available glyphs</h2>
<p>Includes 200 glyphs in font format from the Glyphicon Halflings set. <a href="http://glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but their creator has made them available for Bootstrap free of cost. As a thank you, we only ask that you to include a link back to <a href="http://glyphicons.com/">Glyphicons</a> whenever possible.</p> <p>Includes 200 glyphs in font format from the Glyphicon Halflings set. <a href="http://glyphicons.com/">Glyphicons</a> Halflings are normally not available for free, but their creator has made them available for Bootstrap free of cost. As a thank you, we only ask that you to include a link back to <a href="http://glyphicons.com/">Glyphicons</a> whenever possible.</p>
{% include glyphicons.html %} <div class="bs-glyphicons">
<ul class="bs-glyphicons-list">
{% for iconClassName in site.data.glyphicons %}
<li>
<span class="glyphicon {{ iconClassName }}"></span>
<span class="glyphicon-class">glyphicon {{ iconClassName }}</span>
</li>
{% endfor %}
</ul>
</div>
<h2 id="glyphicons-how-to-use">How to use</h2> <h2 id="glyphicons-how-to-use">How to use</h2>
......
{ {
"name": "twbs/bootstrap" "name": "twbs/bootstrap",
, "description": "Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development." "description": "Sleek, intuitive, and powerful mobile first front-end framework for faster and easier web development.",
, "keywords": ["bootstrap", "css"] "keywords": ["bootstrap", "css"],
, "homepage": "http://getbootstrap.com" "homepage": "http://getbootstrap.com",
, "authors": [ "authors": [
{ {
"name": "Mark Otto", "name": "Mark Otto",
"email": "markdotto@gmail.com" "email": "markdotto@gmail.com"
}, },
{ {
"name": "Jacob Thornton", "name": "Jacob Thornton",
"email": "jacobthornton@gmail.com" "email": "jacobthornton@gmail.com"
} }
] ],
, "support": { "support": {
"issues": "https://github.com/twbs/bootstrap/issues" "issues": "https://github.com/twbs/bootstrap/issues"
},
"license": "MIT",
"extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
} }
, "license": "MIT"
, "extra": {
"branch-alias": {
"dev-master": "3.0.x-dev"
}
} }
} }
...@@ -872,15 +872,15 @@ base_url: "../" ...@@ -872,15 +872,15 @@ base_url: "../"
{% endhighlight %} {% endhighlight %}
<h4>Alternate displays</h4> <h4>Alternate displays</h4>
<p>Use <code>.pull-right</code> for a floated, right-aligned blockquote.</p> <p>Add <code>.blockquote-reverse</code> for blockquote with right-aligned content.</p>
<div class="bs-example" style="overflow: hidden;"> <div class="bs-example" style="overflow: hidden;">
<blockquote class="pull-right"> <blockquote class="blockquote-reverse">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p> <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer posuere erat a ante.</p>
<footer>Someone famous in <cite title="Source Title">Source Title</cite></footer> <footer>Someone famous in <cite title="Source Title">Source Title</cite></footer>
</blockquote> </blockquote>
</div> </div>
{% highlight html %} {% highlight html %}
<blockquote class="pull-right"> <blockquote class="blockquote-reverse">
... ...
</blockquote> </blockquote>
{% endhighlight %} {% endhighlight %}
...@@ -1775,7 +1775,7 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline. ...@@ -1775,7 +1775,7 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline.
{% endhighlight %} {% endhighlight %}
<h4>Inline checkboxes</h4> <h4>Inline checkboxes</h4>
<p>Use <code>.checkbox-inline</code> or <code>.radio-inline</code> class to a series of checkboxes or radios for controls appear on the same line.</p> <p>Use the <code>.checkbox-inline</code> or <code>.radio-inline</code> classes on a series of checkboxes or radios for controls that appear on the same line.</p>
<div class="bs-example"> <div class="bs-example">
<form role="form"> <form role="form">
<label class="checkbox-inline"> <label class="checkbox-inline">
...@@ -2819,7 +2819,7 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline. ...@@ -2819,7 +2819,7 @@ For example, <code>&lt;section&gt;</code> should be wrapped as inline.
<div class="page-header"> <div class="page-header">
<h1>Using LESS</h1> <h1>Using LESS</h1>
</div> </div>
<p class="lead">Bootstrap's CSS is built on LESS, a preprocessor with additional functionality like variables, mixins, and functions for compiling CSS. Thosing looking to use the source LESS files instead of our compiled CSS files can make use of the numerous variables and mixins we use throughout the framework.</p> <p class="lead">Bootstrap's CSS is built on LESS, a preprocessor with additional functionality like variables, mixins, and functions for compiling CSS. Those looking to use the source LESS files instead of our compiled CSS files can make use of the numerous variables and mixins we use throughout the framework.</p>
<p>Grid variables and mixins are covered <a href="{{ page.base_url }}css/#grid-less">within the Grid system section</a>.</p> <p>Grid variables and mixins are covered <a href="{{ page.base_url }}css/#grid-less">within the Grid system section</a>.</p>
...@@ -2910,7 +2910,7 @@ a { ...@@ -2910,7 +2910,7 @@ a {
<p>Note that the <code>@link-color-hover</code> uses a function, another awesome tool from LESS, to automagically create the right hover color. You can use <code>darken</code>, <code>lighten</code>, <code>saturate</code>, and <code>desaturate</code>.</p> <p>Note that the <code>@link-color-hover</code> uses a function, another awesome tool from LESS, to automagically create the right hover color. You can use <code>darken</code>, <code>lighten</code>, <code>saturate</code>, and <code>desaturate</code>.</p>
<h3 id="less-variables-typography">Typography</h3> <h3 id="less-variables-typography">Typography</h3>
<p>Easily set your type face, text size, leading, and more with a few quick variables. Bootstrap makes use of these as well to provide easy typographic mixins as well.</p> <p>Easily set your type face, text size, leading, and more with a few quick variables. Bootstrap makes use of these as well to provide easy typographic mixins.</p>
{% highlight css %} {% highlight css %}
@font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif; @font-family-sans-serif: "Helvetica Neue", Helvetica, Arial, sans-serif;
@font-family-serif: Georgia, "Times New Roman", Times, serif; @font-family-serif: Georgia, "Times New Roman", Times, serif;
...@@ -2942,7 +2942,7 @@ a { ...@@ -2942,7 +2942,7 @@ a {
{% highlight css %} {% highlight css %}
@icon-font-path: "../fonts/"; @icon-font-path: "../fonts/";
@icon-font-name: "glyphicons-halflings-regular"; @icon-font-name: "glyphicons-halflings-regular";
{% endhighlight %}} {% endhighlight %}
<h3 id="less-variables-components">Components</h3> <h3 id="less-variables-components">Components</h3>
<p>Components throughout Bootstrap make use of some default variables for setting common values. Here are the most commonly used.</p> <p>Components throughout Bootstrap make use of some default variables for setting common values. Here are the most commonly used.</p>
...@@ -2971,7 +2971,7 @@ a { ...@@ -2971,7 +2971,7 @@ a {
@caret-width-base: 4px; @caret-width-base: 4px;
@caret-width-large: 5px; @caret-width-large: 5px;
{% endhighlight %}} {% endhighlight %}
<h2 id="less-mixins-vendor">Vendor mixins</h2> <h2 id="less-mixins-vendor">Vendor mixins</h2>
......
...@@ -616,18 +616,19 @@ abbr[data-original-title] { ...@@ -616,18 +616,19 @@ abbr[data-original-title] {
blockquote { blockquote {
padding: 10px 20px; padding: 10px 20px;
margin: 0 0 20px; margin: 0 0 20px;
border-left: 5px solid #eee;
}
blockquote p {
font-size: 17.5px; font-size: 17.5px;
border-left: 5px solid #eee;
} }
blockquote p:last-child { blockquote p:last-child,
blockquote ul:last-child,
blockquote ol:last-child {
margin-bottom: 0; margin-bottom: 0;
} }
blockquote footer, blockquote footer,
blockquote small, blockquote small,
blockquote .small { blockquote .small {
display: block; display: block;
font-size: 80%;
line-height: 1.428571429; line-height: 1.428571429;
color: #999; color: #999;
} }
...@@ -636,22 +637,27 @@ blockquote small:before, ...@@ -636,22 +637,27 @@ blockquote small:before,
blockquote .small:before { blockquote .small:before {
content: '\2014 \00A0'; content: '\2014 \00A0';
} }
.blockquote-reverse,
blockquote.pull-right { blockquote.pull-right {
padding-right: 15px; padding-right: 15px;
padding-left: 0; padding-left: 0;
text-align: right;
border-right: 5px solid #eee; border-right: 5px solid #eee;
border-left: 0; border-left: 0;
} }
blockquote.pull-right p, .blockquote-reverse footer:before,
blockquote.pull-right small, blockquote.pull-right footer:before,
blockquote.pull-right .small { .blockquote-reverse small:before,
text-align: right;
}
blockquote.pull-right small:before, blockquote.pull-right small:before,
.blockquote-reverse .small:before,
blockquote.pull-right .small:before { blockquote.pull-right .small:before {
content: ''; content: '';
} }
.blockquote-reverse footer:after,
blockquote.pull-right footer:after,
.blockquote-reverse small:after,
blockquote.pull-right small:after, blockquote.pull-right small:after,
.blockquote-reverse .small:after,
blockquote.pull-right .small:after { blockquote.pull-right .small:after {
content: '\00A0 \2014'; content: '\00A0 \2014';
} }
...@@ -1456,6 +1462,7 @@ table col[class*="col-"] { ...@@ -1456,6 +1462,7 @@ table col[class*="col-"] {
} }
table td[class*="col-"], table td[class*="col-"],
table th[class*="col-"] { table th[class*="col-"] {
position: static;
display: table-cell; display: table-cell;
float: none; float: none;
} }
...@@ -4120,6 +4127,7 @@ textarea.input-group-sm > .input-group-btn > .btn { ...@@ -4120,6 +4127,7 @@ textarea.input-group-sm > .input-group-btn > .btn {
padding: 6px 12px; padding: 6px 12px;
margin-left: -1px; margin-left: -1px;
line-height: 1.428571429; line-height: 1.428571429;
color: #428bca;
text-decoration: none; text-decoration: none;
background-color: #fff; background-color: #fff;
border: 1px solid #ddd; border: 1px solid #ddd;
...@@ -4139,7 +4147,9 @@ textarea.input-group-sm > .input-group-btn > .btn { ...@@ -4139,7 +4147,9 @@ textarea.input-group-sm > .input-group-btn > .btn {
.pagination > li > span:hover, .pagination > li > span:hover,
.pagination > li > a:focus, .pagination > li > a:focus,
.pagination > li > span:focus { .pagination > li > span:focus {
color: #2a6496;
background-color: #eee; background-color: #eee;
border-color: #ddd;
} }
.pagination > .active > a, .pagination > .active > a,
.pagination > .active > span, .pagination > .active > span,
......
This diff was suppressed by a .gitattributes entry.
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -718,7 +718,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -718,7 +718,7 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
if (!selector) { if (!selector) {
selector = $this.attr('href') selector = $this.attr('href')
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
} }
var $parent = selector && $(selector) var $parent = selector && $(selector)
...@@ -1573,15 +1573,15 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery" ...@@ -1573,15 +1573,15 @@ if (typeof jQuery === "undefined") { throw new Error("Bootstrap requires jQuery"
.parents('.active') .parents('.active')
.removeClass('active') .removeClass('active')
var selector = this.selector var selector = this.selector +
+ '[data-target="' + target + '"],' '[data-target="' + target + '"],' +
+ this.selector + '[href="' + target + '"]' this.selector + '[href="' + target + '"]'
var active = $(selector) var active = $(selector)
.parents('li') .parents('li')
.addClass('active') .addClass('active')
if (active.parent('.dropdown-menu').length) { if (active.parent('.dropdown-menu').length) {
active = active active = active
.closest('li.dropdown') .closest('li.dropdown')
.addClass('active') .addClass('active')
......
...@@ -4,4 +4,4 @@ ...@@ -4,4 +4,4 @@
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery); if("undefined"==typeof jQuery)throw new Error("Bootstrap requires jQuery");+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]}}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one(a.support.transition.end,function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b()})}(jQuery),+function(a){"use strict";var b='[data-dismiss="alert"]',c=function(c){a(c).on("click",b,this.close)};c.prototype.close=function(b){function c(){f.trigger("closed.bs.alert").remove()}var d=a(this),e=d.attr("data-target");e||(e=d.attr("href"),e=e&&e.replace(/.*(?=#[^\s]*$)/,""));var f=a(e);b&&b.preventDefault(),f.length||(f=d.hasClass("alert")?d:d.parent()),f.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one(a.support.transition.end,c).emulateTransitionEnd(150):c())};var d=a.fn.alert;a.fn.alert=function(b){return this.each(function(){var d=a(this),e=d.data("bs.alert");e||d.data("bs.alert",e=new c(this)),"string"==typeof b&&e[b].call(d)})},a.fn.alert.Constructor=c,a.fn.alert.noConflict=function(){return a.fn.alert=d,this},a(document).on("click.bs.alert.data-api",b,c.prototype.close)}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d)};b.DEFAULTS={loadingText:"loading..."},b.prototype.setState=function(a){var b="disabled",c=this.$element,d=c.is("input")?"val":"html",e=c.data();a+="Text",e.resetText||c.data("resetText",c[d]()),c[d](e[a]||this.options[a]),setTimeout(function(){"loadingText"==a?c.addClass(b).attr(b,b):c.removeClass(b).removeAttr(b)},0)},b.prototype.toggle=function(){var a=this.$element.closest('[data-toggle="buttons"]'),b=!0;if(a.length){var c=this.$element.find("input");"radio"===c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?b=!1:a.find(".active").removeClass("active")),b&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}b&&this.$element.toggleClass("active")};var c=a.fn.button;a.fn.button=function(c){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof c&&c;e||d.data("bs.button",e=new b(this,f)),"toggle"==c?e.toggle():c&&e.setState(c)})},a.fn.button.Constructor=b,a.fn.button.noConflict=function(){return a.fn.button=c,this},a(document).on("click.bs.button.data-api","[data-toggle^=button]",function(b){var c=a(b.target);c.hasClass("btn")||(c=c.closest(".btn")),c.button("toggle"),b.preventDefault()})}(jQuery),+function(a){"use strict";var b=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,"hover"==this.options.pause&&this.$element.on("mouseenter",a.proxy(this.pause,this)).on("mouseleave",a.proxy(this.cycle,this))};b.DEFAULTS={interval:5e3,pause:"hover",wrap:!0},b.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},b.prototype.getActiveIndex=function(){return this.$active=this.$element.find(".item.active"),this.$items=this.$active.parent().children(),this.$items.index(this.$active)},b.prototype.to=function(b){var c=this,d=this.getActiveIndex();return b>this.$items.length-1||0>b?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){c.to(b)}):d==b?this.pause().cycle():this.slide(b>d?"next":"prev",a(this.$items[b]))},b.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition.end&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},b.prototype.next=function(){return this.sliding?void 0:this.slide("next")},b.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},b.prototype.slide=function(b,c){var d=this.$element.find(".item.active"),e=c||d[b](),f=this.interval,g="next"==b?"left":"right",h="next"==b?"first":"last",i=this;if(!e.length){if(!this.options.wrap)return;e=this.$element.find(".item")[h]()}this.sliding=!0,f&&this.pause();var j=a.Event("slide.bs.carousel",{relatedTarget:e[0],direction:g});if(!e.hasClass("active")){if(this.$indicators.length&&(this.$indicators.find(".active").removeClass("active"),this.$element.one("slid.bs.carousel",function(){var b=a(i.$indicators.children()[i.getActiveIndex()]);b&&b.addClass("active")})),a.support.transition&&this.$element.hasClass("slide")){if(this.$element.trigger(j),j.isDefaultPrevented())return;e.addClass(b),e[0].offsetWidth,d.addClass(g),e.addClass(g),d.one(a.support.transition.end,function(){e.removeClass([b,g].join(" ")).addClass("active"),d.removeClass(["active",g].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger("slid.bs.carousel")},0)}).emulateTransitionEnd(1e3*d.css("transition-duration").slice(0,-1))}else{if(this.$element.trigger(j),j.isDefaultPrevented())return;d.removeClass("active"),e.addClass("active"),this.sliding=!1,this.$element.trigger("slid.bs.carousel")}return f&&this.cycle(),this}};var c=a.fn.carousel;a.fn.carousel=function(c){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c),g="string"==typeof c?c:f.slide;e||d.data("bs.carousel",e=new b(this,f)),"number"==typeof c?e.to(c):g?e[g]():f.interval&&e.pause().cycle()})},a.fn.carousel.Constructor=b,a.fn.carousel.noConflict=function(){return a.fn.carousel=c,this},a(document).on("click.bs.carousel.data-api","[data-slide], [data-slide-to]",function(b){var c,d=a(this),e=a(d.attr("data-target")||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"")),f=a.extend({},e.data(),d.data()),g=d.attr("data-slide-to");g&&(f.interval=!1),e.carousel(f),(g=d.attr("data-slide-to"))&&e.data("bs.carousel").to(g),b.preventDefault()}),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var b=a(this);b.carousel(b.data())})})}(jQuery),+function(a){"use strict";var b=function(c,d){this.$element=a(c),this.options=a.extend({},b.DEFAULTS,d),this.transitioning=null,this.options.parent&&(this.$parent=a(this.options.parent)),this.options.toggle&&this.toggle()};b.DEFAULTS={toggle:!0},b.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},b.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b=a.Event("show.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.$parent&&this.$parent.find("> .panel > .in");if(c&&c.length){var d=c.data("bs.collapse");if(d&&d.transitioning)return;c.collapse("hide"),d||c.data("bs.collapse",null)}var e=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[e](0),this.transitioning=1;var f=function(){this.$element.removeClass("collapsing").addClass("in")[e]("auto"),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return f.call(this);var g=a.camelCase(["scroll",e].join("-"));this.$element.one(a.support.transition.end,a.proxy(f,this)).emulateTransitionEnd(350)[e](this.$element[0][g])}}},b.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse").removeClass("in"),this.transitioning=1;var d=function(){this.transitioning=0,this.$element.trigger("hidden.bs.collapse").removeClass("collapsing").addClass("collapse")};return a.support.transition?(this.$element[c](0).one(a.support.transition.end,a.proxy(d,this)).emulateTransitionEnd(350),void 0):d.call(this)}}},b.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()};var c=a.fn.collapse;a.fn.collapse=function(c){return this.each(function(){var d=a(this),e=d.data("bs.collapse"),f=a.extend({},b.DEFAULTS,d.data(),"object"==typeof c&&c);e||d.data("bs.collapse",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.collapse.Constructor=b,a.fn.collapse.noConflict=function(){return a.fn.collapse=c,this},a(document).on("click.bs.collapse.data-api","[data-toggle=collapse]",function(b){var c,d=a(this),e=d.attr("data-target")||b.preventDefault()||(c=d.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,""),f=a(e),g=f.data("bs.collapse"),h=g?"toggle":d.data(),i=d.attr("data-parent"),j=i&&a(i);g&&g.transitioning||(j&&j.find('[data-toggle=collapse][data-parent="'+i+'"]').not(d).addClass("collapsed"),d[f.hasClass("in")?"addClass":"removeClass"]("collapsed")),f.collapse(h)})}(jQuery),+function(a){"use strict";function b(){a(d).remove(),a(e).each(function(b){var d=c(a(this));d.hasClass("open")&&(d.trigger(b=a.Event("hide.bs.dropdown")),b.isDefaultPrevented()||d.removeClass("open").trigger("hidden.bs.dropdown"))})}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}var d=".dropdown-backdrop",e="[data-toggle=dropdown]",f=function(b){a(b).on("click.bs.dropdown",this.toggle)};f.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){if("ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b),f.trigger(d=a.Event("show.bs.dropdown")),d.isDefaultPrevented())return;f.toggleClass("open").trigger("shown.bs.dropdown"),e.focus()}return!1}},f.prototype.keydown=function(b){if(/(38|40|27)/.test(b.keyCode)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var f=c(d),g=f.hasClass("open");if(!g||g&&27==b.keyCode)return 27==b.which&&f.find(e).focus(),d.click();var h=a("[role=menu] li:not(.divider):visible a",f);if(h.length){var i=h.index(h.filter(":focus"));38==b.keyCode&&i>0&&i--,40==b.keyCode&&i<h.length-1&&i++,~i||(i=0),h.eq(i).focus()}}}};var g=a.fn.dropdown;a.fn.dropdown=function(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new f(this)),"string"==typeof b&&d[b].call(c)})},a.fn.dropdown.Constructor=f,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=g,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",e,f.prototype.toggle).on("keydown.bs.dropdown.data-api",e+", [role=menu]",f.prototype.keydown)}(jQuery),+function(a){"use strict";var b=function(b,c){this.options=c,this.$element=a(b),this.$backdrop=this.isShown=null,this.options.remote&&this.$element.load(this.options.remote)};b.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},b.prototype.toggle=function(a){return this[this.isShown?"hide":"show"](a)},b.prototype.show=function(b){var c=this,d=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(d),this.isShown||d.isDefaultPrevented()||(this.isShown=!0,this.escape(),this.$element.on("click.dismiss.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var d=a.support.transition&&c.$element.hasClass("fade");c.$element.parent().length||c.$element.appendTo(document.body),c.$element.show(),d&&c.$element[0].offsetWidth,c.$element.addClass("in").attr("aria-hidden",!1),c.enforceFocus();var e=a.Event("shown.bs.modal",{relatedTarget:b});d?c.$element.find(".modal-dialog").one(a.support.transition.end,function(){c.$element.focus().trigger(e)}).emulateTransitionEnd(300):c.$element.focus().trigger(e)}))},b.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one(a.support.transition.end,a.proxy(this.hideModal,this)).emulateTransitionEnd(300):this.hideModal())},b.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.focus()},this))},b.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keyup.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keyup.dismiss.bs.modal")},b.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.removeBackdrop(),a.$element.trigger("hidden.bs.modal")})},b.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},b.prototype.backdrop=function(b){var c=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var d=a.support.transition&&c;if(this.$backdrop=a('<div class="modal-backdrop '+c+'" />').appendTo(document.body),this.$element.on("click.dismiss.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),d&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;d?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()}else!this.isShown&&this.$backdrop?(this.$backdrop.removeClass("in"),a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one(a.support.transition.end,b).emulateTransitionEnd(150):b()):b&&b()};var c=a.fn.modal;a.fn.modal=function(c,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},b.DEFAULTS,e.data(),"object"==typeof c&&c);f||e.data("bs.modal",f=new b(this,g)),"string"==typeof c?f[c](d):g.show&&f.show(d)})},a.fn.modal.Constructor=b,a.fn.modal.noConflict=function(){return a.fn.modal=c,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(b){var c=a(this),d=c.attr("href"),e=a(c.attr("data-target")||d&&d.replace(/.*(?=#[^\s]+$)/,"")),f=e.data("modal")?"toggle":a.extend({remote:!/#/.test(d)&&d},e.data(),c.data());b.preventDefault(),e.modal(f,this).one("hide",function(){c.is(":visible")&&c.focus()})}),a(document).on("show.bs.modal",".modal",function(){a(document.body).addClass("modal-open")}).on("hidden.bs.modal",".modal",function(){a(document.body).removeClass("modal-open")})}(jQuery),+function(a){"use strict";var b=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};b.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1},b.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focus",i="hover"==g?"mouseleave":"blur";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},b.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},b.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show),void 0):c.show()},b.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type);return clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide),void 0):c.hide()},b.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){if(this.$element.trigger(b),b.isDefaultPrevented())return;var c=this.tip();this.setContent(),this.options.animation&&c.addClass("fade");var d="function"==typeof this.options.placement?this.options.placement.call(this,c[0],this.$element[0]):this.options.placement,e=/\s?auto?\s?/i,f=e.test(d);f&&(d=d.replace(e,"")||"top"),c.detach().css({top:0,left:0,display:"block"}).addClass(d),this.options.container?c.appendTo(this.options.container):c.insertAfter(this.$element);var g=this.getPosition(),h=c[0].offsetWidth,i=c[0].offsetHeight;if(f){var j=this.$element.parent(),k=d,l=document.documentElement.scrollTop||document.body.scrollTop,m="body"==this.options.container?window.innerWidth:j.outerWidth(),n="body"==this.options.container?window.innerHeight:j.outerHeight(),o="body"==this.options.container?0:j.offset().left;d="bottom"==d&&g.top+g.height+i-l>n?"top":"top"==d&&g.top-l-i<0?"bottom":"right"==d&&g.right+h>m?"left":"left"==d&&g.left-h<o?"right":d,c.removeClass(k).addClass(d)}var p=this.getCalculatedOffset(d,g,h,i);this.applyPlacement(p,d),this.$element.trigger("shown.bs."+this.type)}},b.prototype.applyPlacement=function(a,b){var c,d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),a.top=a.top+g,a.left=a.left+h,d.offset(a).addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;if("top"==b&&j!=f&&(c=!0,a.top=a.top+f-j),/bottom|top/.test(b)){var k=0;a.left<0&&(k=-2*a.left,a.left=0,d.offset(a),i=d[0].offsetWidth,j=d[0].offsetHeight),this.replaceArrow(k-e+i,i,"left")}else this.replaceArrow(j-f,j,"top");c&&d.offset(a)},b.prototype.replaceArrow=function(a,b,c){this.arrow().css(c,a?50*(1-a/b)+"%":"")},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},b.prototype.hide=function(){function b(){"in"!=c.hoverState&&d.detach()}var c=this,d=this.tip(),e=a.Event("hide.bs."+this.type);return this.$element.trigger(e),e.isDefaultPrevented()?void 0:(d.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?d.one(a.support.transition.end,b).emulateTransitionEnd(150):b(),this.$element.trigger("hidden.bs."+this.type),this)},b.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},b.prototype.hasContent=function(){return this.getTitle()},b.prototype.getPosition=function(){var b=this.$element[0];return a.extend({},"function"==typeof b.getBoundingClientRect?b.getBoundingClientRect():{width:b.offsetWidth,height:b.offsetHeight},this.$element.offset())},b.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},b.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},b.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},b.prototype.validate=function(){this.$element[0].parentNode||(this.hide(),this.$element=null,this.options=null)},b.prototype.enable=function(){this.enabled=!0},b.prototype.disable=function(){this.enabled=!1},b.prototype.toggleEnabled=function(){this.enabled=!this.enabled},b.prototype.toggle=function(b){var c=b?a(b.currentTarget)[this.type](this.getDelegateOptions()).data("bs."+this.type):this;c.tip().hasClass("in")?c.leave(c):c.enter(c)},b.prototype.destroy=function(){this.hide().$element.off("."+this.type).removeData("bs."+this.type)};var c=a.fn.tooltip;a.fn.tooltip=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof c&&c;e||d.data("bs.tooltip",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.tooltip.Constructor=b,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=c,this}}(jQuery),+function(a){"use strict";var b=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");b.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),b.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),b.prototype.constructor=b,b.prototype.getDefaults=function(){return b.DEFAULTS},b.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content")[this.options.html?"html":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},b.prototype.hasContent=function(){return this.getTitle()||this.getContent()},b.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},b.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},b.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var c=a.fn.popover;a.fn.popover=function(c){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof c&&c;e||d.data("bs.popover",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.popover.Constructor=b,a.fn.popover.noConflict=function(){return a.fn.popover=c,this}}(jQuery),+function(a){"use strict";function b(c,d){var e,f=a.proxy(this.process,this);this.$element=a(c).is("body")?a(window):a(c),this.$body=a("body"),this.$scrollElement=this.$element.on("scroll.bs.scroll-spy.data-api",f),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||(e=a(c).attr("href"))&&e.replace(/.*(?=#[^\s]+$)/,"")||"")+" .nav li > a",this.offsets=a([]),this.targets=a([]),this.activeTarget=null,this.refresh(),this.process()}b.DEFAULTS={offset:10},b.prototype.refresh=function(){var b=this.$element[0]==window?"offset":"position";this.offsets=a([]),this.targets=a([]);{var c=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#\w/.test(e)&&a(e);return f&&f.length&&[[f[b]().top+(!a.isWindow(c.$scrollElement.get(0))&&c.$scrollElement.scrollTop()),e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){c.offsets.push(this[0]),c.targets.push(this[1])})}},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.$scrollElement[0].scrollHeight||this.$body[0].scrollHeight,d=c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(b>=d)return g!=(a=f.last()[0])&&this.activate(a);for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,a(this.selector).parents(".active").removeClass("active");var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")};var c=a.fn.scrollspy;a.fn.scrollspy=function(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=c,this},a(window).on("load",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);b.scrollspy(b.data())})})}(jQuery),+function(a){"use strict";var b=function(b){this.element=a(b)};b.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a")[0],f=a.Event("show.bs.tab",{relatedTarget:e});if(b.trigger(f),!f.isDefaultPrevented()){var g=a(d);this.activate(b.parent("li"),c),this.activate(g,g.parent(),function(){b.trigger({type:"shown.bs.tab",relatedTarget:e})})}}},b.prototype.activate=function(b,c,d){function e(){f.removeClass("active").find("> .dropdown-menu > .active").removeClass("active"),b.addClass("active"),g?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active"),d&&d()}var f=c.find("> .active"),g=d&&a.support.transition&&f.hasClass("fade");g?f.one(a.support.transition.end,e).emulateTransitionEnd(150):e(),f.removeClass("in")};var c=a.fn.tab;a.fn.tab=function(c){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new b(this)),"string"==typeof c&&e[c]()})},a.fn.tab.Constructor=b,a.fn.tab.noConflict=function(){return a.fn.tab=c,this},a(document).on("click.bs.tab.data-api",'[data-toggle="tab"], [data-toggle="pill"]',function(b){b.preventDefault(),a(this).tab("show")})}(jQuery),+function(a){"use strict";var b=function(c,d){this.options=a.extend({},b.DEFAULTS,d),this.$window=a(window).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(c),this.affixed=this.unpin=null,this.checkPosition()};b.RESET="affix affix-top affix-bottom",b.DEFAULTS={offset:0},b.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},b.prototype.checkPosition=function(){if(this.$element.is(":visible")){var c=a(document).height(),d=this.$window.scrollTop(),e=this.$element.offset(),f=this.options.offset,g=f.top,h=f.bottom;"object"!=typeof f&&(h=g=f),"function"==typeof g&&(g=f.top()),"function"==typeof h&&(h=f.bottom());var i=null!=this.unpin&&d+this.unpin<=e.top?!1:null!=h&&e.top+this.$element.height()>=c-h?"bottom":null!=g&&g>=d?"top":!1;this.affixed!==i&&(this.unpin&&this.$element.css("top",""),this.affixed=i,this.unpin="bottom"==i?e.top-d:null,this.$element.removeClass(b.RESET).addClass("affix"+(i?"-"+i:"")),"bottom"==i&&this.$element.offset({top:document.body.offsetHeight-h-this.$element.height()}))}};var c=a.fn.affix;a.fn.affix=function(c){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof c&&c;e||d.data("bs.affix",e=new b(this,f)),"string"==typeof c&&e[c]()})},a.fn.affix.Constructor=b,a.fn.affix.noConflict=function(){return a.fn.affix=c,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var b=a(this),c=b.data();c.offset=c.offset||{},c.offsetBottom&&(c.offset.bottom=c.offsetBottom),c.offsetTop&&(c.offset.top=c.offsetTop),b.affix(c)})})}(jQuery);
\ No newline at end of file \ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -8,7 +8,11 @@ ...@@ -8,7 +8,11 @@
/* jshint multistr:true */ /* jshint multistr:true */
window.onload = function () { // wait for load in a dumb way because B-0 window.onload = function () { // wait for load in a dumb way because B-0
var cw = '/*!\n * Bootstrap v3.1.0 (http://getbootstrap.com)\n\n *\n * Copyright 2013 Twitter, Inc\n * Licensed under MIT (<%= _.pluck(pkg.licenses, "url").join(", ") %>)\n */\n\n' var cw = '/*!\n' +
' * Bootstrap v3.1.0 (http://getbootstrap.com)\n' +
' * Copyright 2013 Twitter, Inc.\n' +
' * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n' +
' */\n\n';
function showError(msg, err) { function showError(msg, err) {
$('<div id="bsCustomizerAlert" class="bs-customizer-alert">\ $('<div id="bsCustomizerAlert" class="bs-customizer-alert">\
......
...@@ -297,7 +297,7 @@ $('#myModal').on('show.bs.modal', function (e) { ...@@ -297,7 +297,7 @@ $('#myModal').on('show.bs.modal', function (e) {
<h2 id="modals-usage">Usage</h2> <h2 id="modals-usage">Usage</h2>
<p>The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds <code>.model-open</code> to the <code>&lt;body&gt;</code> to override default scrolling behavior and generates a <code>.modal-backdrop</code> to provide a click area for dismissing shown modals when clicking outside the modal.</p> <p>The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds <code>.modal-open</code> to the <code>&lt;body&gt;</code> to override default scrolling behavior and generates a <code>.modal-backdrop</code> to provide a click area for dismissing shown modals when clicking outside the modal.</p>
<h3>Via data attributes</h3> <h3>Via data attributes</h3>
<p>Activate a modal without writing JavaScript. Set <code>data-toggle="modal"</code> on a controller element, like a button, along with a <code>data-target="#foo"</code> or <code>href="#foo"</code> to target a specific modal to toggle.</p> <p>Activate a modal without writing JavaScript. Set <code>data-toggle="modal"</code> on a controller element, like a button, along with a <code>data-target="#foo"</code> or <code>href="#foo"</code> to target a specific modal to toggle.</p>
...@@ -344,7 +344,7 @@ $('#myModal').on('show.bs.modal', function (e) { ...@@ -344,7 +344,7 @@ $('#myModal').on('show.bs.modal', function (e) {
<td>remote</td> <td>remote</td>
<td>path</td> <td>path</td>
<td>false</td> <td>false</td>
<td><p>If a remote URL is provided, content will be loaded via jQuery's <code>load</code> method and injected into the root of the modal element. If you're using the data-api, you may alternatively use the <code>href</code> attribute to specify the remote source. An example of this is shown below:</p> <td><p>If a remote URL is provided, <strong>content will be loaded one time</strong> via jQuery's <code>load</code> method and injected into the root of the modal element. If you're using the data-api, you may alternatively use the <code>href</code> attribute to specify the remote source. An example of this is shown below:</p>
{% highlight html %} {% highlight html %}
<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a> <a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a>
{% endhighlight %} {% endhighlight %}
......
...@@ -95,7 +95,7 @@ ...@@ -95,7 +95,7 @@
if (!selector) { if (!selector) {
selector = $this.attr('href') selector = $this.attr('href')
selector = selector && /#/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7 selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') //strip for ie7
} }
var $parent = selector && $(selector) var $parent = selector && $(selector)
......
...@@ -88,15 +88,15 @@ ...@@ -88,15 +88,15 @@
.parents('.active') .parents('.active')
.removeClass('active') .removeClass('active')
var selector = this.selector var selector = this.selector +
+ '[data-target="' + target + '"],' '[data-target="' + target + '"],' +
+ this.selector + '[href="' + target + '"]' this.selector + '[href="' + target + '"]'
var active = $(selector) var active = $(selector)
.parents('li') .parents('li')
.addClass('active') .addClass('active')
if (active.parent('.dropdown-menu').length) { if (active.parent('.dropdown-menu').length) {
active = active active = active
.closest('li.dropdown') .closest('li.dropdown')
.addClass('active') .addClass('active')
......
...@@ -17,10 +17,10 @@ $(function () { ...@@ -17,10 +17,10 @@ $(function () {
}) })
test('should fade element out on clicking .close', function () { test('should fade element out on clicking .close', function () {
var alertHTML = '<div class="alert-message warning fade in">' var alertHTML = '<div class="alert-message warning fade in">' +
+ '<a class="close" href="#" data-dismiss="alert">×</a>' '<a class="close" href="#" data-dismiss="alert">×</a>' +
+ '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
+ '</div>', '</div>',
alert = $(alertHTML).alert() alert = $(alertHTML).alert()
alert.find('.close').click() alert.find('.close').click()
...@@ -31,10 +31,10 @@ $(function () { ...@@ -31,10 +31,10 @@ $(function () {
test('should remove element when clicking .close', function () { test('should remove element when clicking .close', function () {
$.support.transition = false $.support.transition = false
var alertHTML = '<div class="alert-message warning fade in">' var alertHTML = '<div class="alert-message warning fade in">' +
+ '<a class="close" href="#" data-dismiss="alert">×</a>' '<a class="close" href="#" data-dismiss="alert">×</a>' +
+ '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>' +
+ '</div>', '</div>',
alert = $(alertHTML).appendTo('#qunit-fixture').alert() alert = $(alertHTML).appendTo('#qunit-fixture').alert()
ok($('#qunit-fixture').find('.alert-message').length, 'element added to dom') ok($('#qunit-fixture').find('.alert-message').length, 'element added to dom')
......
...@@ -18,68 +18,68 @@ $(function () { ...@@ -18,68 +18,68 @@ $(function () {
}) })
test('should not open dropdown if target is disabled', function () { test('should not open dropdown if target is disabled', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>' '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
test('should not open dropdown if target is disabled', function () { test('should not open dropdown if target is disabled', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>' '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(!dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
test('should add class open to menu if clicked', function () { test('should add class open to menu if clicked', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
}) })
test('should test if element has a # before assuming it\'s a selector', function () { test('should test if element has a # before assuming it\'s a selector', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click() dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').dropdown().click()
ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click') ok(dropdown.parent('.dropdown').hasClass('open'), 'open class added on click')
...@@ -87,17 +87,17 @@ $(function () { ...@@ -87,17 +87,17 @@ $(function () {
test('should remove open class if body clicked', function () { test('should remove open class if body clicked', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML) dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]') .find('[data-toggle="dropdown"]')
...@@ -111,23 +111,22 @@ $(function () { ...@@ -111,23 +111,22 @@ $(function () {
}) })
test('should remove open class if body clicked, with multiple drop downs', function () { test('should remove open class if body clicked, with multiple drop downs', function () {
var dropdownHTML = var dropdownHTML = '<ul class="nav">' +
'<ul class="nav">' ' <li><a href="#menu1">Menu 1</a></li>' +
+ ' <li><a href="#menu1">Menu 1</a></li>' ' <li class="dropdown" id="testmenu">' +
+ ' <li class="dropdown" id="testmenu">' ' <a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <b class="caret"></b></a>' +
+ ' <a class="dropdown-toggle" data-toggle="dropdown" href="#testmenu">Test menu <b class="caret"></b></a>' ' <ul class="dropdown-menu" role="menu">' +
+ ' <ul class="dropdown-menu" role="menu">' ' <li><a href="#sub1">Submenu 1</a></li>' +
+ ' <li><a href="#sub1">Submenu 1</a></li>' ' </ul>' +
+ ' </ul>' ' </li>' +
+ ' </li>' '</ul>' +
+ '</ul>' '<div class="btn-group">' +
+ '<div class="btn-group">' ' <button class="btn">Actions</button>' +
+ ' <button class="btn">Actions</button>' ' <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>' +
+ ' <button class="btn dropdown-toggle" data-toggle="dropdown"><span class="caret"></span></button>' ' <ul class="dropdown-menu">' +
+ ' <ul class="dropdown-menu">' ' <li><a href="#">Action 1</a></li>' +
+ ' <li><a href="#">Action 1</a></li>' ' </ul>' +
+ ' </ul>' '</div>',
+ '</div>',
dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]'), dropdowns = $(dropdownHTML).appendTo('#qunit-fixture').find('[data-toggle="dropdown"]'),
first = dropdowns.first(), first = dropdowns.first(),
last = dropdowns.last() last = dropdowns.last()
...@@ -150,17 +149,17 @@ $(function () { ...@@ -150,17 +149,17 @@ $(function () {
}) })
test('should fire show and hide event', function () { test('should fire show and hide event', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML) dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]') .find('[data-toggle="dropdown"]')
...@@ -184,17 +183,17 @@ $(function () { ...@@ -184,17 +183,17 @@ $(function () {
test('should fire shown and hiden event', function () { test('should fire shown and hiden event', function () {
var dropdownHTML = '<ul class="tabs">' var dropdownHTML = '<ul class="tabs">' +
+ '<li class="dropdown">' '<li class="dropdown">' +
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>' +
+ '<ul class="dropdown-menu">' '<ul class="dropdown-menu">' +
+ '<li><a href="#">Secondary link</a></li>' '<li><a href="#">Secondary link</a></li>' +
+ '<li><a href="#">Something else here</a></li>' '<li><a href="#">Something else here</a></li>' +
+ '<li class="divider"></li>' '<li class="divider"></li>' +
+ '<li><a href="#">Another link</a></li>' '<li><a href="#">Another link</a></li>' +
+ '</ul>' '</ul>' +
+ '</li>' '</li>' +
+ '</ul>', '</ul>',
dropdown = $(dropdownHTML) dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture') .appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]') .find('[data-toggle="dropdown"]')
......
...@@ -19,16 +19,15 @@ $(function () { ...@@ -19,16 +19,15 @@ $(function () {
test('should switch active class on scroll', function () { test('should switch active class on scroll', function () {
var sectionHTML = '<div id="masthead"></div>' var sectionHTML = '<div id="masthead"></div>'
$section = $(sectionHTML).append('#qunit-fixture'), $section = $(sectionHTML).append('#qunit-fixture'),
topbarHTML = '<div class="topbar">' topbarHTML = '<div class="topbar">' +
+ '<div class="topbar-inner">' '<div class="topbar-inner">' +
+ '<div class="container">' '<div class="container">' +
+ '<h3><a href="#">Bootstrap</a></h3>' '<h3><a href="#">Bootstrap</a></h3>' +
+ '<ul class="nav">' '<li><a href="#masthead">Overview</a></li>' +
+ '<li><a href="#masthead">Overview</a></li>' '</ul>' +
+ '</ul>' '</div>' +
+ '</div>' '</div>' +
+ '</div>' '</div>',
+ '</div>',
$topbar = $(topbarHTML).scrollspy() $topbar = $(topbarHTML).scrollspy()
ok($topbar.find('.active', true)) ok($topbar.find('.active', true))
......
...@@ -17,11 +17,10 @@ $(function () { ...@@ -17,11 +17,10 @@ $(function () {
}) })
test('should activate element by tab id', function () { test('should activate element by tab id', function () {
var tabsHTML = var tabsHTML = '<ul class="tabs">' +
'<ul class="tabs">' '<li><a href="#home">Home</a></li>' +
+ '<li><a href="#home">Home</a></li>' '<li><a href="#profile">Profile</a></li>' +
+ '<li><a href="#profile">Profile</a></li>' '</ul>'
+ '</ul>'
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo('#qunit-fixture') $('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo('#qunit-fixture')
...@@ -33,11 +32,10 @@ $(function () { ...@@ -33,11 +32,10 @@ $(function () {
}) })
test('should activate element by tab id', function () { test('should activate element by tab id', function () {
var pillsHTML = var pillsHTML = '<ul class="pills">' +
'<ul class="pills">' '<li><a href="#home">Home</a></li>' +
+ '<li><a href="#home">Home</a></li>' '<li><a href="#profile">Profile</a></li>' +
+ '<li><a href="#profile">Profile</a></li>' '</ul>'
+ '</ul>'
$('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo('#qunit-fixture') $('<ul><li id="home"></li><li id="profile"></li></ul>').appendTo('#qunit-fixture')
...@@ -65,15 +63,14 @@ $(function () { ...@@ -65,15 +63,14 @@ $(function () {
}) })
test('show and shown events should reference correct relatedTarget', function () { test('show and shown events should reference correct relatedTarget', function () {
var dropHTML = var dropHTML = '<ul class="drop">' +
'<ul class="drop">' '<li class="dropdown"><a data-toggle="dropdown" href="#">1</a>' +
+ '<li class="dropdown"><a data-toggle="dropdown" href="#">1</a>' '<ul class="dropdown-menu">' +
+ '<ul class="dropdown-menu">' '<li><a href="#1-1" data-toggle="tab">1-1</a></li>' +
+ '<li><a href="#1-1" data-toggle="tab">1-1</a></li>' '<li><a href="#1-2" data-toggle="tab">1-2</a></li>' +
+ '<li><a href="#1-2" data-toggle="tab">1-2</a></li>' '</ul>' +
+ '</ul>' '</li>' +
+ '</li>' '</ul>'
+ '</ul>'
$(dropHTML).find('ul>li:first a').tab('show').end() $(dropHTML).find('ul>li:first a').tab('show').end()
.find('ul>li:last a').on('show', function (event) { .find('ul>li:last a').on('show', function (event) {
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
padding: @padding-base-vertical @padding-base-horizontal; padding: @padding-base-vertical @padding-base-horizontal;
line-height: @line-height-base; line-height: @line-height-base;
text-decoration: none; text-decoration: none;
color: @pagination-color;
background-color: @pagination-bg; background-color: @pagination-bg;
border: 1px solid @pagination-border; border: 1px solid @pagination-border;
margin-left: -1px; margin-left: -1px;
...@@ -39,7 +40,9 @@ ...@@ -39,7 +40,9 @@
> li > span { > li > span {
&:hover, &:hover,
&:focus { &:focus {
color: @pagination-hover-color;
background-color: @pagination-hover-bg; background-color: @pagination-hover-bg;
border-color: @pagination-hover-border;
} }
} }
...@@ -51,7 +54,7 @@ ...@@ -51,7 +54,7 @@
z-index: 2; z-index: 2;
color: @pagination-active-color; color: @pagination-active-color;
background-color: @pagination-active-bg; background-color: @pagination-active-bg;
border-color: @pagination-active-bg; border-color: @pagination-active-border;
cursor: default; cursor: default;
} }
} }
...@@ -64,8 +67,8 @@ ...@@ -64,8 +67,8 @@
> a:hover, > a:hover,
> a:focus { > a:focus {
color: @pagination-disabled-color; color: @pagination-disabled-color;
background-color: @pagination-bg; background-color: @pagination-disabled-bg;
border-color: @pagination-border; border-color: @pagination-disabled-border;
cursor: not-allowed; cursor: not-allowed;
} }
} }
......
...@@ -141,6 +141,7 @@ table { ...@@ -141,6 +141,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)
float: none; float: none;
display: table-cell; display: table-cell;
} }
......
...@@ -263,12 +263,15 @@ abbr[data-original-title] { ...@@ -263,12 +263,15 @@ abbr[data-original-title] {
blockquote { blockquote {
padding: (@line-height-computed / 2) @line-height-computed; padding: (@line-height-computed / 2) @line-height-computed;
margin: 0 0 @line-height-computed; margin: 0 0 @line-height-computed;
font-size: (@font-size-base * 1.25);
border-left: 5px solid @blockquote-border-color; border-left: 5px solid @blockquote-border-color;
p {
font-size: (@font-size-base * 1.25); p,
} ul,
p:last-child { ol {
margin-bottom: 0; &:last-child {
margin-bottom: 0;
}
} }
// Deprecating small and .small for v3.1 // Deprecating small and .small for v3.1
...@@ -277,32 +280,34 @@ blockquote { ...@@ -277,32 +280,34 @@ blockquote {
small, small,
.small { .small {
display: block; display: block;
font-size: 80%; // back to default font-size
line-height: @line-height-base; line-height: @line-height-base;
color: @blockquote-small-color; color: @blockquote-small-color;
&:before { &:before {
content: '\2014 \00A0'; // EM DASH, NBSP content: '\2014 \00A0'; // em dash, nbsp
} }
} }
}
// Float right with text-align: right // Opposite alignment of blockquote
&.pull-right { //
padding-right: 15px; // Heads up: `blockquote.pull-right` has been deprecated as of v3.1.
padding-left: 0; .blockquote-reverse,
border-right: 5px solid @blockquote-border-color; blockquote.pull-right {
border-left: 0; padding-right: 15px;
p, padding-left: 0;
small, border-right: 5px solid @blockquote-border-color;
.small { border-left: 0;
text-align: right; text-align: right;
}
small, // Account for citation
.small { footer,
&:before { small,
content: ''; .small {
} &:before { content: ''; }
&:after { &:after {
content: '\00A0 \2014'; // NBSP, EM DASH content: '\00A0 \2014'; // nbsp, em dash
}
} }
} }
} }
......
...@@ -352,15 +352,21 @@ ...@@ -352,15 +352,21 @@
// Pagination // Pagination
// ------------------------- // -------------------------
@pagination-color: @link-color;
@pagination-bg: #fff; @pagination-bg: #fff;
@pagination-border: #ddd; @pagination-border: #ddd;
@pagination-hover-color: @link-hover-color;
@pagination-hover-bg: @gray-lighter; @pagination-hover-bg: @gray-lighter;
@pagination-hover-border: #ddd;
@pagination-active-bg: @brand-primary;
@pagination-active-color: #fff; @pagination-active-color: #fff;
@pagination-active-bg: @brand-primary;
@pagination-active-border: @brand-primary;
@pagination-disabled-color: @gray-light; @pagination-disabled-color: @gray-light;
@pagination-disabled-bg: #fff;
@pagination-disabled-border: #ddd;
// Pager // Pager
......
...@@ -7,11 +7,11 @@ ...@@ -7,11 +7,11 @@
"author": "Twitter, Inc.", "author": "Twitter, Inc.",
"scripts": { "test": "grunt test" }, "scripts": { "test": "grunt test" },
"repository": { "repository": {
"type": "git" "type": "git",
, "url": "https://github.com/twbs/bootstrap.git" "url": "https://github.com/twbs/bootstrap.git"
}, },
"bugs": { "bugs": {
"url": "https://github.com/twbs/bootstrap/issues" "url": "https://github.com/twbs/bootstrap/issues"
}, },
"licenses": [ "licenses": [
{ {
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
"grunt-contrib-qunit": "~0.3.0", "grunt-contrib-qunit": "~0.3.0",
"grunt-contrib-uglify": "~0.2.4", "grunt-contrib-uglify": "~0.2.4",
"grunt-contrib-watch": "~0.5.3", "grunt-contrib-watch": "~0.5.3",
"grunt-csscomb": "~1.1.0", "grunt-csscomb": "~1.2.1",
"grunt-html-validation": "~0.1.11", "grunt-html-validation": "~0.1.11",
"grunt-jekyll": "~0.4.0", "grunt-jekyll": "~0.4.0",
"grunt-jscs-checker": "~0.2.5", "grunt-jscs-checker": "~0.2.5",
......
...@@ -3,12 +3,14 @@ ...@@ -3,12 +3,14 @@
{ {
browserName: "safari", browserName: "safari",
version: "6",
platform: "OS X 10.8" platform: "OS X 10.8"
}, },
# { # Safari 7 (which requires Mavericks) is not currently supported by Sauce Labs
# browserName: "safari",
# platform: "OS X 10.9"
# },
{ {
browserName: "chrome", browserName: "chrome",
version: "31",
platform: "OS X 10.9" platform: "OS X 10.9"
}, },
...@@ -50,12 +52,10 @@ ...@@ -50,12 +52,10 @@
{ {
browserName: "chrome", browserName: "chrome",
version: "31",
platform: "Windows 8.1" platform: "Windows 8.1"
}, },
{ {
browserName: "firefox", browserName: "firefox",
version: "25",
platform: "Windows 8.1" platform: "Windows 8.1"
}, },
...@@ -63,7 +63,6 @@ ...@@ -63,7 +63,6 @@
{ {
browserName: "iphone", browserName: "iphone",
version: "6.1",
platform: "OS X 10.8" platform: "OS X 10.8"
}, },
...@@ -72,12 +71,10 @@ ...@@ -72,12 +71,10 @@
# Linux (unofficial): # Linux (unofficial):
{ {
browserName: "chrome", browserName: "chrome",
version: "30",
platform: "Linux" platform: "Linux"
}, },
{ {
browserName: "firefox", browserName: "firefox",
version: "25",
platform: "Linux" platform: "Linux"
} }
......
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