Compare commits

...

2 Commits

Author SHA1 Message Date
David Miller
afb82ee156 Bootstrap v3.3.6 Update 2015-11-28 13:17:10 -05:00
David Miller
0b77a7484f Bootstrap 3.3.5 Update (and other dependencies) 2015-06-22 13:25:30 -04:00
137 changed files with 3980 additions and 1611 deletions

View File

@@ -26,7 +26,7 @@
"dist/js/sb-admin-2.js" "dist/js/sb-admin-2.js"
], ],
"dependencies": { "dependencies": {
"bootstrap": "~3.3.1", "bootstrap": "~3.3.6",
"datatables": "~1.10.4", "datatables": "~1.10.4",
"datatables-plugins": "~1.0.1", "datatables-plugins": "~1.0.1",
"flot": "~0.8.3", "flot": "~0.8.3",

View File

@@ -1,7 +1,6 @@
{ {
"name": "bootstrap", "name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.4",
"keywords": [ "keywords": [
"css", "css",
"js", "js",
@@ -13,15 +12,11 @@
"web" "web"
], ],
"homepage": "http://getbootstrap.com", "homepage": "http://getbootstrap.com",
"license": "MIT",
"moduleType": "globals",
"main": [ "main": [
"less/bootstrap.less", "less/bootstrap.less",
"dist/css/bootstrap.css", "dist/js/bootstrap.js"
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff",
"dist/fonts/glyphicons-halflings-regular.woff2"
], ],
"ignore": [ "ignore": [
"/.*", "/.*",
@@ -34,15 +29,16 @@
"test-infra" "test-infra"
], ],
"dependencies": { "dependencies": {
"jquery": ">= 1.9.1" "jquery": "1.9.1 - 2"
}, },
"_release": "3.3.4", "version": "3.3.6",
"_release": "3.3.6",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "v3.3.4", "tag": "v3.3.6",
"commit": "a10eb60bc0b07b747fa0c4ebd8821eb7307bd07f" "commit": "81df608a40bf0629a1dc08e584849bb1e43e0b7a"
}, },
"_source": "git://github.com/twbs/bootstrap.git", "_source": "git://github.com/twbs/bootstrap.git",
"_target": "~3.3.1", "_target": "~3.3.6",
"_originalSource": "bootstrap" "_originalSource": "bootstrap"
} }

View File

@@ -0,0 +1,5 @@
Bootstrap uses [GitHub's Releases feature](https://github.com/blog/1547-release-your-software) for its changelogs.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap.
Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.

View File

@@ -44,7 +44,7 @@ module.exports = function (grunt) {
banner: '/*!\n' + banner: '/*!\n' +
' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' + ' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' + ' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n' + ' * Licensed under the <%= pkg.license %> license\n' +
' */\n', ' */\n',
jqueryCheck: configBridge.config.jqueryCheck.join('\n'), jqueryCheck: configBridge.config.jqueryCheck.join('\n'),
jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'), jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'),
@@ -63,7 +63,7 @@ module.exports = function (grunt) {
options: { options: {
jshintrc: 'grunt/.jshintrc' jshintrc: 'grunt/.jshintrc'
}, },
src: ['Gruntfile.js', 'grunt/*.js'] src: ['Gruntfile.js', 'package.js', 'grunt/*.js']
}, },
core: { core: {
src: 'js/*.js' src: 'js/*.js'
@@ -126,6 +126,10 @@ module.exports = function (grunt) {
uglify: { uglify: {
options: { options: {
compress: {
warnings: false
},
mangle: true,
preserveComments: 'some' preserveComments: 'some'
}, },
core: { core: {
@@ -191,7 +195,7 @@ module.exports = function (grunt) {
src: 'dist/css/<%= pkg.name %>-theme.css' src: 'dist/css/<%= pkg.name %>-theme.css'
}, },
docs: { docs: {
src: ['docs/assets/css/anchor.css', 'docs/assets/css/src/docs.css'] src: ['docs/assets/css/src/docs.css']
}, },
examples: { examples: {
expand: true, expand: true,
@@ -227,6 +231,7 @@ module.exports = function (grunt) {
// and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly // and then simplify the fix for https://github.com/twbs/bootstrap/issues/14837 accordingly
compatibility: 'ie8', compatibility: 'ie8',
keepSpecialComments: '*', keepSpecialComments: '*',
sourceMap: true,
advanced: false advanced: false
}, },
minifyCore: { minifyCore: {
@@ -239,25 +244,14 @@ module.exports = function (grunt) {
}, },
docs: { docs: {
src: [ src: [
'docs/assets/css/ie10-viewport-bug-workaround.css',
'docs/assets/css/src/pygments-manni.css', 'docs/assets/css/src/pygments-manni.css',
'docs/assets/css/src/anchor.css',
'docs/assets/css/src/docs.css' 'docs/assets/css/src/docs.css'
], ],
dest: 'docs/assets/css/docs.min.css' dest: 'docs/assets/css/docs.min.css'
} }
}, },
usebanner: {
options: {
position: 'top',
banner: '<%= banner %>'
},
files: {
src: 'dist/css/*.css'
}
},
csscomb: { csscomb: {
options: { options: {
config: 'less/.csscomb.json' config: 'less/.csscomb.json'
@@ -317,6 +311,26 @@ module.exports = function (grunt) {
} }
}, },
htmlmin: {
dist: {
options: {
collapseWhitespace: true,
conservativeCollapse: true,
minifyCSS: true,
minifyJS: true,
removeAttributeQuotes: true,
removeComments: true
},
expand: true,
cwd: '_gh_pages',
dest: '_gh_pages',
src: [
'**/*.html',
'!examples/**/*.html'
]
}
},
jade: { jade: {
options: { options: {
pretty: true, pretty: true,
@@ -336,7 +350,7 @@ module.exports = function (grunt) {
options: { options: {
ignore: [ ignore: [
'Attribute "autocomplete" not allowed on element "button" at this point.', 'Attribute "autocomplete" not allowed on element "button" at this point.',
'Attribute "autocomplete" not allowed on element "input" at this point.', 'Attribute "autocomplete" is only allowed when the input type is "color", "date", "datetime", "datetime-local", "email", "month", "number", "password", "range", "search", "tel", "text", "time", "url", or "week".',
'Element "img" is missing required attribute "src".' 'Element "img" is missing required attribute "src".'
] ]
}, },
@@ -346,7 +360,7 @@ module.exports = function (grunt) {
watch: { watch: {
src: { src: {
files: '<%= jshint.core.src %>', files: '<%= jshint.core.src %>',
tasks: ['jshint:src', 'qunit', 'concat'] tasks: ['jshint:core', 'qunit', 'concat']
}, },
test: { test: {
files: '<%= jshint.test.src %>', files: '<%= jshint.test.src %>',
@@ -365,6 +379,14 @@ module.exports = function (grunt) {
return old ? RegExp.quote(old) : old; return old ? RegExp.quote(old) : old;
})(), })(),
replacement: grunt.option('newver'), replacement: grunt.option('newver'),
exclude: [
'dist/fonts',
'docs/assets',
'fonts',
'js/tests/vendor',
'node_modules',
'test-infra'
],
recursive: true recursive: true
} }
}, },
@@ -455,7 +477,7 @@ module.exports = function (grunt) {
// CSS distribution task. // CSS distribution task.
grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']); grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']);
grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'usebanner', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']); grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
// Full distribution task. // Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']); grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
@@ -491,7 +513,7 @@ module.exports = function (grunt) {
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']); grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']); grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('prep-release', ['jekyll:github', 'compress']); grunt.registerTask('prep-release', ['dist', 'docs', 'jekyll:github', 'htmlmin', 'compress']);
// Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json). // Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
// This task should be run and the updated file should be committed whenever Bootstrap's dependencies change. // This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.

View File

@@ -1,34 +1,40 @@
# [Bootstrap](http://getbootstrap.com) # [Bootstrap](http://getbootstrap.com)
![Bower version](https://img.shields.io/bower/v/bootstrap.svg?style=flat)
[![npm version](https://img.shields.io/npm/v/bootstrap.svg?style=flat)](https://www.npmjs.com/package/bootstrap) [![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com)
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg?style=flat)](https://travis-ci.org/twbs/bootstrap) ![Bower version](https://img.shields.io/bower/v/bootstrap.svg)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg?style=flat)](https://david-dm.org/twbs/bootstrap#info=devDependencies) [![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg)](https://travis-ci.org/twbs/bootstrap)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![NuGet](https://img.shields.io/nuget/v/bootstrap.svg)](https://www.nuget.org/packages/Bootstrap)
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap) [![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community. Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
To get started, check out <http://getbootstrap.com>! To get started, check out <http://getbootstrap.com>!
## Table of contents ## Table of contents
- [Quick start](#quick-start) * [Quick start](#quick-start)
- [Bugs and feature requests](#bugs-and-feature-requests) * [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation) * [Documentation](#documentation)
- [Contributing](#contributing) * [Contributing](#contributing)
- [Community](#community) * [Community](#community)
- [Versioning](#versioning) * [Versioning](#versioning)
- [Creators](#creators) * [Creators](#creators)
- [Copyright and license](#copyright-and-license) * [Copyright and license](#copyright-and-license)
## Quick start ## Quick start
Five quick start options are available: Several quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.4.zip). * [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.6.zip).
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`. * Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
- Install with [Bower](http://bower.io): `bower install bootstrap`. * Install with [Bower](http://bower.io): `bower install bootstrap`.
- Install with [npm](https://www.npmjs.com): `npm install bootstrap`. * Install with [npm](https://www.npmjs.com): `npm install bootstrap`.
- Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`. * Install with [Meteor](https://www.meteor.com): `meteor add twbs:bootstrap`.
* Install with [Composer](https://getcomposer.org): `composer require twbs/bootstrap`.
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more. Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
@@ -42,9 +48,11 @@ bootstrap/
│ ├── bootstrap.css │ ├── bootstrap.css
│ ├── bootstrap.css.map │ ├── bootstrap.css.map
│ ├── bootstrap.min.css │ ├── bootstrap.min.css
│ ├── bootstrap.min.css.map
│ ├── bootstrap-theme.css │ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map │ ├── bootstrap-theme.css.map
── bootstrap-theme.min.css ── bootstrap-theme.min.css
│ └── bootstrap-theme.min.css.map
├── js/ ├── js/
│ ├── bootstrap.js │ ├── bootstrap.js
│ └── bootstrap.min.js │ └── bootstrap.min.js
@@ -56,8 +64,7 @@ bootstrap/
└── glyphicons-halflings-regular.woff2 └── glyphicons-halflings-regular.woff2
``` ```
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/chrome-developer-tools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developer.chrome.com/devtools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
## Bugs and feature requests ## Bugs and feature requests
@@ -71,11 +78,11 @@ Bootstrap's documentation, included in this repo in the root directory, is built
### Running documentation locally ### Running documentation locally
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x). 1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v3.0.x).
- **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems. **Note for Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`. 2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
3. From the root `/bootstrap` directory, run `jekyll serve` in the command line. 3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
4. Open <http://localhost:9001> in your browser, and voilà. 4. Open `http://localhost:9001` in your browser, and voilà.
Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/). Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
@@ -86,7 +93,6 @@ Documentation for v2.3.2 has been made available for the time being at <http://g
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download. [Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
## Contributing ## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development. Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
@@ -96,37 +102,36 @@ Moreover, if your pull request contains JavaScript patches or features, you must
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>. Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
## Community ## Community
Keep track of development and community news. Get updates on Bootstrap's development and chat with the project maintainers and community members.
- Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
- 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 `##bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
* Follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap).
* Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
* Join [the official Slack room](https://bootstrap-slack.herokuapp.com).
* Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
* Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](https://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
* Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
## Versioning ## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible. For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
See [the Releases section of our GitHub project](https://github.com/twbs/bootstrap/releases) for changelogs for each release version of Bootstrap. Release announcement posts on [the official Bootstrap blog](http://blog.getbootstrap.com) contain summaries of the most noteworthy changes made in each release.
## Creators ## Creators
**Mark Otto** **Mark Otto**
- <https://twitter.com/mdo> * <https://twitter.com/mdo>
- <https://github.com/mdo> * <https://github.com/mdo>
**Jacob Thornton** **Jacob Thornton**
- <https://twitter.com/fat> * <https://twitter.com/fat>
- <https://github.com/fat> * <https://github.com/fat>
## Copyright and license ## Copyright and license

View File

@@ -1,7 +1,6 @@
{ {
"name": "bootstrap", "name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.4",
"keywords": [ "keywords": [
"css", "css",
"js", "js",
@@ -13,15 +12,11 @@
"web" "web"
], ],
"homepage": "http://getbootstrap.com", "homepage": "http://getbootstrap.com",
"license": "MIT",
"moduleType": "globals",
"main": [ "main": [
"less/bootstrap.less", "less/bootstrap.less",
"dist/css/bootstrap.css", "dist/js/bootstrap.js"
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff",
"dist/fonts/glyphicons-halflings-regular.woff2"
], ],
"ignore": [ "ignore": [
"/.*", "/.*",
@@ -34,6 +29,6 @@
"test-infra" "test-infra"
], ],
"dependencies": { "dependencies": {
"jquery": ">= 1.9.1" "jquery": "1.9.1 - 2"
} }
} }

View File

@@ -1,9 +1,8 @@
/*! /*!
* Bootstrap v3.3.4 (http://getbootstrap.com) * Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
.btn-default, .btn-default,
.btn-primary, .btn-primary,
.btn-success, .btn-success,
@@ -29,6 +28,27 @@
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125); box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
} }
.btn-default.disabled,
.btn-primary.disabled,
.btn-success.disabled,
.btn-info.disabled,
.btn-warning.disabled,
.btn-danger.disabled,
.btn-default[disabled],
.btn-primary[disabled],
.btn-success[disabled],
.btn-info[disabled],
.btn-warning[disabled],
.btn-danger[disabled],
fieldset[disabled] .btn-default,
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-success,
fieldset[disabled] .btn-info,
fieldset[disabled] .btn-warning,
fieldset[disabled] .btn-danger {
-webkit-box-shadow: none;
box-shadow: none;
}
.btn-default .badge, .btn-default .badge,
.btn-primary .badge, .btn-primary .badge,
.btn-success .badge, .btn-success .badge,
@@ -64,8 +84,23 @@
border-color: #dbdbdb; border-color: #dbdbdb;
} }
.btn-default.disabled, .btn-default.disabled,
.btn-default:disabled, .btn-default[disabled],
.btn-default[disabled] { fieldset[disabled] .btn-default,
.btn-default.disabled:hover,
.btn-default[disabled]:hover,
fieldset[disabled] .btn-default:hover,
.btn-default.disabled:focus,
.btn-default[disabled]:focus,
fieldset[disabled] .btn-default:focus,
.btn-default.disabled.focus,
.btn-default[disabled].focus,
fieldset[disabled] .btn-default.focus,
.btn-default.disabled:active,
.btn-default[disabled]:active,
fieldset[disabled] .btn-default:active,
.btn-default.disabled.active,
.btn-default[disabled].active,
fieldset[disabled] .btn-default.active {
background-color: #e0e0e0; background-color: #e0e0e0;
background-image: none; background-image: none;
} }
@@ -90,8 +125,23 @@
border-color: #245580; border-color: #245580;
} }
.btn-primary.disabled, .btn-primary.disabled,
.btn-primary:disabled, .btn-primary[disabled],
.btn-primary[disabled] { fieldset[disabled] .btn-primary,
.btn-primary.disabled:hover,
.btn-primary[disabled]:hover,
fieldset[disabled] .btn-primary:hover,
.btn-primary.disabled:focus,
.btn-primary[disabled]:focus,
fieldset[disabled] .btn-primary:focus,
.btn-primary.disabled.focus,
.btn-primary[disabled].focus,
fieldset[disabled] .btn-primary.focus,
.btn-primary.disabled:active,
.btn-primary[disabled]:active,
fieldset[disabled] .btn-primary:active,
.btn-primary.disabled.active,
.btn-primary[disabled].active,
fieldset[disabled] .btn-primary.active {
background-color: #265a88; background-color: #265a88;
background-image: none; background-image: none;
} }
@@ -116,8 +166,23 @@
border-color: #3e8f3e; border-color: #3e8f3e;
} }
.btn-success.disabled, .btn-success.disabled,
.btn-success:disabled, .btn-success[disabled],
.btn-success[disabled] { fieldset[disabled] .btn-success,
.btn-success.disabled:hover,
.btn-success[disabled]:hover,
fieldset[disabled] .btn-success:hover,
.btn-success.disabled:focus,
.btn-success[disabled]:focus,
fieldset[disabled] .btn-success:focus,
.btn-success.disabled.focus,
.btn-success[disabled].focus,
fieldset[disabled] .btn-success.focus,
.btn-success.disabled:active,
.btn-success[disabled]:active,
fieldset[disabled] .btn-success:active,
.btn-success.disabled.active,
.btn-success[disabled].active,
fieldset[disabled] .btn-success.active {
background-color: #419641; background-color: #419641;
background-image: none; background-image: none;
} }
@@ -142,8 +207,23 @@
border-color: #28a4c9; border-color: #28a4c9;
} }
.btn-info.disabled, .btn-info.disabled,
.btn-info:disabled, .btn-info[disabled],
.btn-info[disabled] { fieldset[disabled] .btn-info,
.btn-info.disabled:hover,
.btn-info[disabled]:hover,
fieldset[disabled] .btn-info:hover,
.btn-info.disabled:focus,
.btn-info[disabled]:focus,
fieldset[disabled] .btn-info:focus,
.btn-info.disabled.focus,
.btn-info[disabled].focus,
fieldset[disabled] .btn-info.focus,
.btn-info.disabled:active,
.btn-info[disabled]:active,
fieldset[disabled] .btn-info:active,
.btn-info.disabled.active,
.btn-info[disabled].active,
fieldset[disabled] .btn-info.active {
background-color: #2aabd2; background-color: #2aabd2;
background-image: none; background-image: none;
} }
@@ -168,8 +248,23 @@
border-color: #e38d13; border-color: #e38d13;
} }
.btn-warning.disabled, .btn-warning.disabled,
.btn-warning:disabled, .btn-warning[disabled],
.btn-warning[disabled] { fieldset[disabled] .btn-warning,
.btn-warning.disabled:hover,
.btn-warning[disabled]:hover,
fieldset[disabled] .btn-warning:hover,
.btn-warning.disabled:focus,
.btn-warning[disabled]:focus,
fieldset[disabled] .btn-warning:focus,
.btn-warning.disabled.focus,
.btn-warning[disabled].focus,
fieldset[disabled] .btn-warning.focus,
.btn-warning.disabled:active,
.btn-warning[disabled]:active,
fieldset[disabled] .btn-warning:active,
.btn-warning.disabled.active,
.btn-warning[disabled].active,
fieldset[disabled] .btn-warning.active {
background-color: #eb9316; background-color: #eb9316;
background-image: none; background-image: none;
} }
@@ -194,8 +289,23 @@
border-color: #b92c28; border-color: #b92c28;
} }
.btn-danger.disabled, .btn-danger.disabled,
.btn-danger:disabled, .btn-danger[disabled],
.btn-danger[disabled] { fieldset[disabled] .btn-danger,
.btn-danger.disabled:hover,
.btn-danger[disabled]:hover,
fieldset[disabled] .btn-danger:hover,
.btn-danger.disabled:focus,
.btn-danger[disabled]:focus,
fieldset[disabled] .btn-danger:focus,
.btn-danger.disabled.focus,
.btn-danger[disabled].focus,
fieldset[disabled] .btn-danger.focus,
.btn-danger.disabled:active,
.btn-danger[disabled]:active,
fieldset[disabled] .btn-danger:active,
.btn-danger.disabled.active,
.btn-danger[disabled].active,
fieldset[disabled] .btn-danger.active {
background-color: #c12e2a; background-color: #c12e2a;
background-image: none; background-image: none;
} }
@@ -260,6 +370,7 @@
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0); filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x; background-repeat: repeat-x;
border-radius: 4px;
} }
.navbar-inverse .navbar-nav > .open > a, .navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a { .navbar-inverse .navbar-nav > .active > a {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -1,7 +1,7 @@
/*! /*!
* Bootstrap v3.3.4 (http://getbootstrap.com) * Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under the MIT license
*/ */
if (typeof jQuery === 'undefined') { if (typeof jQuery === 'undefined') {
@@ -11,13 +11,13 @@ if (typeof jQuery === 'undefined') {
+function ($) { +function ($) {
'use strict'; 'use strict';
var version = $.fn.jquery.split(' ')[0].split('.') var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) { if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {
throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher') throw new Error('Bootstrap\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')
} }
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: transition.js v3.3.4 * Bootstrap: transition.js v3.3.6
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -77,7 +77,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: alert.js v3.3.4 * Bootstrap: alert.js v3.3.6
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -96,7 +96,7 @@ if (typeof jQuery === 'undefined') {
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.VERSION = '3.3.4' Alert.VERSION = '3.3.6'
Alert.TRANSITION_DURATION = 150 Alert.TRANSITION_DURATION = 150
@@ -172,7 +172,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: button.js v3.3.4 * Bootstrap: button.js v3.3.6
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -192,7 +192,7 @@ if (typeof jQuery === 'undefined') {
this.isLoading = false this.isLoading = false
} }
Button.VERSION = '3.3.4' Button.VERSION = '3.3.6'
Button.DEFAULTS = { Button.DEFAULTS = {
loadingText: 'loading...' loadingText: 'loading...'
@@ -204,7 +204,7 @@ if (typeof jQuery === 'undefined') {
var val = $el.is('input') ? 'val' : 'html' var val = $el.is('input') ? 'val' : 'html'
var data = $el.data() var data = $el.data()
state = state + 'Text' state += 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]()) if (data.resetText == null) $el.data('resetText', $el[val]())
@@ -229,15 +229,19 @@ if (typeof jQuery === 'undefined') {
if ($parent.length) { if ($parent.length) {
var $input = this.$element.find('input') var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') { if ($input.prop('type') == 'radio') {
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false if ($input.prop('checked')) changed = false
else $parent.find('.active').removeClass('active') $parent.find('.active').removeClass('active')
this.$element.addClass('active')
} else if ($input.prop('type') == 'checkbox') {
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
this.$element.toggleClass('active')
} }
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') $input.prop('checked', this.$element.hasClass('active'))
if (changed) $input.trigger('change')
} else { } else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
this.$element.toggleClass('active')
} }
if (changed) this.$element.toggleClass('active')
} }
@@ -280,7 +284,7 @@ if (typeof jQuery === 'undefined') {
var $btn = $(e.target) var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle') Plugin.call($btn, 'toggle')
e.preventDefault() if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
}) })
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))
@@ -289,7 +293,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: carousel.js v3.3.4 * Bootstrap: carousel.js v3.3.6
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -320,7 +324,7 @@ if (typeof jQuery === 'undefined') {
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
} }
Carousel.VERSION = '3.3.4' Carousel.VERSION = '3.3.6'
Carousel.TRANSITION_DURATION = 600 Carousel.TRANSITION_DURATION = 600
@@ -527,7 +531,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: collapse.js v3.3.4 * Bootstrap: collapse.js v3.3.6
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -557,7 +561,7 @@ if (typeof jQuery === 'undefined') {
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
Collapse.VERSION = '3.3.4' Collapse.VERSION = '3.3.6'
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350
@@ -739,7 +743,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: dropdown.js v3.3.4 * Bootstrap: dropdown.js v3.3.6
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -759,7 +763,41 @@ if (typeof jQuery === 'undefined') {
$(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.VERSION = '3.3.4' Dropdown.VERSION = '3.3.6'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
})
}
Dropdown.prototype.toggle = function (e) { Dropdown.prototype.toggle = function (e) {
var $this = $(this) var $this = $(this)
@@ -774,7 +812,10 @@ if (typeof jQuery === 'undefined') {
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate // if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) $(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
} }
var relatedTarget = { relatedTarget: this } var relatedTarget = { relatedTarget: this }
@@ -788,7 +829,7 @@ if (typeof jQuery === 'undefined') {
$parent $parent
.toggleClass('open') .toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget) .trigger($.Event('shown.bs.dropdown', relatedTarget))
} }
return false return false
@@ -807,57 +848,25 @@ if (typeof jQuery === 'undefined') {
var $parent = getParent($this) var $parent = getParent($this)
var isActive = $parent.hasClass('open') var isActive = $parent.hasClass('open')
if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus') if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click') return $this.trigger('click')
} }
var desc = ' li:not(.disabled):visible a' var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return if (!$items.length) return
var index = $items.index(e.target) var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0 if (!~index) index = 0
$items.eq(index).trigger('focus') $items.eq(index).trigger('focus')
} }
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
// DROPDOWN PLUGIN DEFINITION // DROPDOWN PLUGIN DEFINITION
// ========================== // ==========================
@@ -895,13 +904,12 @@ if (typeof jQuery === 'undefined') {
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: modal.js v3.3.4 * Bootstrap: modal.js v3.3.6
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -935,7 +943,7 @@ if (typeof jQuery === 'undefined') {
} }
} }
Modal.VERSION = '3.3.4' Modal.VERSION = '3.3.6'
Modal.TRANSITION_DURATION = 300 Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.BACKDROP_TRANSITION_DURATION = 150
@@ -992,9 +1000,7 @@ if (typeof jQuery === 'undefined') {
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
} }
that.$element that.$element.addClass('in')
.addClass('in')
.attr('aria-hidden', false)
that.enforceFocus() that.enforceFocus()
@@ -1028,7 +1034,6 @@ if (typeof jQuery === 'undefined') {
this.$element this.$element
.removeClass('in') .removeClass('in')
.attr('aria-hidden', true)
.off('click.dismiss.bs.modal') .off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal')
@@ -1092,7 +1097,8 @@ if (typeof jQuery === 'undefined') {
if (this.isShown && this.options.backdrop) { if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') this.$backdrop = $(document.createElement('div'))
.addClass('modal-backdrop ' + animate)
.appendTo(this.$body) .appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {
@@ -1241,7 +1247,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tooltip.js v3.3.4 * Bootstrap: tooltip.js v3.3.6
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
@@ -1263,11 +1269,12 @@ if (typeof jQuery === 'undefined') {
this.timeout = null this.timeout = null
this.hoverState = null this.hoverState = null
this.$element = null this.$element = null
this.inState = null
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
Tooltip.VERSION = '3.3.4' Tooltip.VERSION = '3.3.6'
Tooltip.TRANSITION_DURATION = 150 Tooltip.TRANSITION_DURATION = 150
@@ -1292,7 +1299,8 @@ if (typeof jQuery === 'undefined') {
this.type = type this.type = type
this.$element = $(element) this.$element = $(element)
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
this.inState = { click: false, hover: false, focus: false }
if (this.$element[0] instanceof document.constructor && !this.options.selector) { if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
@@ -1351,16 +1359,20 @@ if (typeof jQuery === 'undefined') {
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type) obj : $(obj.currentTarget).data('bs.' + this.type)
if (self && self.$tip && self.$tip.is(':visible')) {
self.hoverState = 'in'
return
}
if (!self) { if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self) $(obj.currentTarget).data('bs.' + this.type, self)
} }
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
}
if (self.tip().hasClass('in') || self.hoverState == 'in') {
self.hoverState = 'in'
return
}
clearTimeout(self.timeout) clearTimeout(self.timeout)
self.hoverState = 'in' self.hoverState = 'in'
@@ -1372,6 +1384,14 @@ if (typeof jQuery === 'undefined') {
}, self.options.delay.show) }, self.options.delay.show)
} }
Tooltip.prototype.isInStateTrue = function () {
for (var key in this.inState) {
if (this.inState[key]) return true
}
return false
}
Tooltip.prototype.leave = function (obj) { Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type) obj : $(obj.currentTarget).data('bs.' + this.type)
@@ -1381,6 +1401,12 @@ if (typeof jQuery === 'undefined') {
$(obj.currentTarget).data('bs.' + this.type, self) $(obj.currentTarget).data('bs.' + this.type, self)
} }
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
}
if (self.isInStateTrue()) return
clearTimeout(self.timeout) clearTimeout(self.timeout)
self.hoverState = 'out' self.hoverState = 'out'
@@ -1427,6 +1453,7 @@ if (typeof jQuery === 'undefined') {
.data('bs.' + this.type, this) .data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
this.$element.trigger('inserted.bs.' + this.type)
var pos = this.getPosition() var pos = this.getPosition()
var actualWidth = $tip[0].offsetWidth var actualWidth = $tip[0].offsetWidth
@@ -1434,13 +1461,12 @@ if (typeof jQuery === 'undefined') {
if (autoPlace) { if (autoPlace) {
var orgPlacement = placement var orgPlacement = placement
var $container = this.options.container ? $(this.options.container) : this.$element.parent() var viewportDim = this.getPosition(this.$viewport)
var containerDim = this.getPosition($container)
placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
placement placement
$tip $tip
@@ -1481,8 +1507,8 @@ if (typeof jQuery === 'undefined') {
if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0 if (isNaN(marginLeft)) marginLeft = 0
offset.top = offset.top + marginTop offset.top += marginTop
offset.left = offset.left + marginLeft offset.left += marginLeft
// $.fn.offset doesn't round pixel values // $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0 // so we use setOffset directly with our own function B-0
@@ -1564,7 +1590,7 @@ if (typeof jQuery === 'undefined') {
Tooltip.prototype.fixTitle = function () { Tooltip.prototype.fixTitle = function () {
var $e = this.$element var $e = this.$element
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '') $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
} }
} }
@@ -1619,7 +1645,7 @@ if (typeof jQuery === 'undefined') {
var rightEdgeOffset = pos.left + viewportPadding + actualWidth var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset delta.left = viewportDimensions.left - leftEdgeOffset
} else if (rightEdgeOffset > viewportDimensions.width) { // right overflow } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
} }
} }
@@ -1645,7 +1671,13 @@ if (typeof jQuery === 'undefined') {
} }
Tooltip.prototype.tip = function () { Tooltip.prototype.tip = function () {
return (this.$tip = this.$tip || $(this.options.template)) if (!this.$tip) {
this.$tip = $(this.options.template)
if (this.$tip.length != 1) {
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
}
}
return this.$tip
} }
Tooltip.prototype.arrow = function () { Tooltip.prototype.arrow = function () {
@@ -1674,7 +1706,13 @@ if (typeof jQuery === 'undefined') {
} }
} }
self.tip().hasClass('in') ? self.leave(self) : self.enter(self) if (e) {
self.inState.click = !self.inState.click
if (self.isInStateTrue()) self.enter(self)
else self.leave(self)
} else {
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
} }
Tooltip.prototype.destroy = function () { Tooltip.prototype.destroy = function () {
@@ -1682,6 +1720,12 @@ if (typeof jQuery === 'undefined') {
clearTimeout(this.timeout) clearTimeout(this.timeout)
this.hide(function () { this.hide(function () {
that.$element.off('.' + that.type).removeData('bs.' + that.type) that.$element.off('.' + that.type).removeData('bs.' + that.type)
if (that.$tip) {
that.$tip.detach()
}
that.$tip = null
that.$arrow = null
that.$viewport = null
}) })
} }
@@ -1718,7 +1762,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: popover.js v3.3.4 * Bootstrap: popover.js v3.3.6
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -1738,7 +1782,7 @@ if (typeof jQuery === 'undefined') {
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.4' Popover.VERSION = '3.3.6'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right', placement: 'right',
@@ -1827,7 +1871,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: scrollspy.js v3.3.4 * Bootstrap: scrollspy.js v3.3.6
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -1856,7 +1900,7 @@ if (typeof jQuery === 'undefined') {
this.process() this.process()
} }
ScrollSpy.VERSION = '3.3.4' ScrollSpy.VERSION = '3.3.6'
ScrollSpy.DEFAULTS = { ScrollSpy.DEFAULTS = {
offset: 10 offset: 10
@@ -2000,7 +2044,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: tab.js v3.3.4 * Bootstrap: tab.js v3.3.6
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -2015,10 +2059,12 @@ if (typeof jQuery === 'undefined') {
// ==================== // ====================
var Tab = function (element) { var Tab = function (element) {
// jscs:disable requireDollarBeforejQueryAssignment
this.element = $(element) this.element = $(element)
// jscs:enable requireDollarBeforejQueryAssignment
} }
Tab.VERSION = '3.3.4' Tab.VERSION = '3.3.6'
Tab.TRANSITION_DURATION = 150 Tab.TRANSITION_DURATION = 150
@@ -2066,7 +2112,7 @@ if (typeof jQuery === 'undefined') {
var $active = container.find('> .active') var $active = container.find('> .active')
var transition = callback var transition = callback
&& $.support.transition && $.support.transition
&& (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
function next() { function next() {
$active $active
@@ -2154,7 +2200,7 @@ if (typeof jQuery === 'undefined') {
}(jQuery); }(jQuery);
/* ======================================================================== /* ========================================================================
* Bootstrap: affix.js v3.3.4 * Bootstrap: affix.js v3.3.6
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -2183,7 +2229,7 @@ if (typeof jQuery === 'undefined') {
this.checkPosition() this.checkPosition()
} }
Affix.VERSION = '3.3.4' Affix.VERSION = '3.3.6'
Affix.RESET = 'affix affix-top affix-bottom' Affix.RESET = 'affix affix-top affix-bottom'
@@ -2233,7 +2279,7 @@ if (typeof jQuery === 'undefined') {
var offset = this.options.offset var offset = this.options.offset
var offsetTop = offset.top var offsetTop = offset.top
var offsetBottom = offset.bottom var offsetBottom = offset.bottom
var scrollHeight = $(document.body).height() var scrollHeight = Math.max($(document).height(), $(document.body).height())
if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)

File diff suppressed because one or more lines are too long

View File

@@ -1,4 +1,12 @@
/*!
* Bootstrap Grunt task for the CommonJS module generation
* http://getbootstrap.com
* Copyright 2014-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
'use strict'; 'use strict';
var fs = require('fs'); var fs = require('fs');
var path = require('path'); var path = require('path');
@@ -15,8 +23,7 @@ module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath)
var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n'); var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n');
try { try {
fs.writeFileSync(destFilepath, moduleOutputJs); fs.writeFileSync(destFilepath, moduleOutputJs);
} } catch (err) {
catch (err) {
grunt.fail.warn(err); grunt.fail.warn(err);
} }
grunt.log.writeln('File ' + destFilepath.cyan + ' created.'); grunt.log.writeln('File ' + destFilepath.cyan + ' created.');

View File

@@ -1,10 +1,12 @@
/*! /*!
* Bootstrap Grunt task for Glyphicons data generation * Bootstrap Grunt task for Glyphicons data generation
* http://getbootstrap.com * http://getbootstrap.com
* Copyright 2014 Twitter, Inc. * Copyright 2014-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
'use strict'; 'use strict';
var fs = require('fs'); var fs = require('fs');
module.exports = function generateGlyphiconsData(grunt) { module.exports = function generateGlyphiconsData(grunt) {
@@ -33,8 +35,7 @@ module.exports = function generateGlyphiconsData(grunt) {
try { try {
fs.writeFileSync(glyphiconsYml, glyphiconsData); fs.writeFileSync(glyphiconsYml, glyphiconsData);
} } catch (err) {
catch (err) {
grunt.fail.warn(err); grunt.fail.warn(err);
} }
grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.'); grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');

View File

@@ -1,9 +1,10 @@
/*! /*!
* Bootstrap Grunt task for parsing Less docstrings * Bootstrap Grunt task for parsing Less docstrings
* http://getbootstrap.com * http://getbootstrap.com
* Copyright 2014 Twitter, Inc. * Copyright 2014-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
'use strict'; 'use strict';
var Markdown = require('markdown-it'); var Markdown = require('markdown-it');
@@ -121,7 +122,7 @@ Tokenizer.prototype._shift = function () {
return new VarDocstring(match[1]); return new VarDocstring(match[1]);
} }
var commentStart = line.lastIndexOf('//'); var commentStart = line.lastIndexOf('//');
var varLine = (commentStart === -1) ? line : line.slice(0, commentStart); var varLine = commentStart === -1 ? line : line.slice(0, commentStart);
match = VAR_ASSIGNMENT.exec(varLine); match = VAR_ASSIGNMENT.exec(varLine);
if (match !== null) { if (match !== null) {
return new Variable(match[1], match[2]); return new Variable(match[1], match[2]);
@@ -168,8 +169,7 @@ Parser.prototype.parseSection = function () {
var docstring = this._tokenizer.shift(); var docstring = this._tokenizer.shift();
if (docstring instanceof SectionDocstring) { if (docstring instanceof SectionDocstring) {
section.docstring = docstring; section.docstring = docstring;
} } else {
else {
this._tokenizer.unshift(docstring); this._tokenizer.unshift(docstring);
} }
this.parseSubSections(section); this.parseSubSections(section);
@@ -185,15 +185,14 @@ Parser.prototype.parseSubSections = function (section) {
// Presume an implicit initial subsection // Presume an implicit initial subsection
subsection = new SubSection(''); subsection = new SubSection('');
this.parseVars(subsection); this.parseVars(subsection);
} } else {
else {
break; break;
} }
} }
section.addSubSection(subsection); section.addSubSection(subsection);
} }
if (section.subsections.length === 1 && !(section.subsections[0].heading) && section.subsections[0].variables.length === 0) { if (section.subsections.length === 1 && !section.subsections[0].heading && section.subsections[0].variables.length === 0) {
// Ignore lone empty implicit subsection // Ignore lone empty implicit subsection
section.subsections = []; section.subsections = [];
} }

View File

@@ -1,28 +1,27 @@
/*! /*!
* Bootstrap Grunt task for generating raw-files.min.js for the Customizer * Bootstrap Grunt task for generating raw-files.min.js for the Customizer
* http://getbootstrap.com * http://getbootstrap.com
* Copyright 2014 Twitter, Inc. * Copyright 2014-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/ */
/* global btoa: true */
'use strict'; 'use strict';
var fs = require('fs'); var fs = require('fs');
var btoa = require('btoa'); var btoa = require('btoa');
var glob = require('glob'); var glob = require('glob');
function getFiles(type) { function getFiles(type) {
var files = {}; var files = {};
var recursive = (type === 'less'); var recursive = type === 'less';
var globExpr = (recursive ? '/**/*' : '/*'); var globExpr = recursive ? '/**/*' : '/*';
glob.sync(type + globExpr) glob.sync(type + globExpr)
.filter(function (path) { .filter(function (path) {
return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path); return type === 'fonts' ? true : new RegExp('\\.' + type + '$').test(path);
}) })
.forEach(function (fullPath) { .forEach(function (fullPath) {
var relativePath = fullPath.replace(/^[^/]+\//, ''); var relativePath = fullPath.replace(/^[^/]+\//, '');
files[relativePath] = (type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8')); files[relativePath] = type === 'fonts' ? btoa(fs.readFileSync(fullPath)) : fs.readFileSync(fullPath, 'utf8');
}); });
return 'var __' + type + ' = ' + JSON.stringify(files) + '\n'; return 'var __' + type + ' = ' + JSON.stringify(files) + '\n';
} }
@@ -38,8 +37,7 @@ module.exports = function generateRawFilesJs(grunt, banner) {
var rawFilesJs = 'docs/assets/js/raw-files.min.js'; var rawFilesJs = 'docs/assets/js/raw-files.min.js';
try { try {
fs.writeFileSync(rawFilesJs, files); fs.writeFileSync(rawFilesJs, files);
} } catch (err) {
catch (err) {
grunt.fail.warn(err); grunt.fail.warn(err);
} }
grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.'); grunt.log.writeln('File ' + rawFilesJs.cyan + ' created.');

View File

@@ -11,7 +11,7 @@
"../assets/js/src/customizer.js" "../assets/js/src/customizer.js"
], ],
"docsJs": [ "docsJs": [
"../assets/js/vendor/holder.js", "../assets/js/vendor/holder.min.js",
"../assets/js/vendor/ZeroClipboard.min.js", "../assets/js/vendor/ZeroClipboard.min.js",
"../assets/js/vendor/anchor.js", "../assets/js/vendor/anchor.js",
"../assets/js/src/application.js" "../assets/js/src/application.js"
@@ -37,8 +37,8 @@
"+function ($) {", "+function ($) {",
" 'use strict';", " 'use strict';",
" var version = $.fn.jquery.split(' ')[0].split('.')", " var version = $.fn.jquery.split(' ')[0].split('.')",
" if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {", " if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] > 2)) {",
" throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')", " throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3')",
" }", " }",
"}(jQuery);\n\n" "}(jQuery);\n\n"
] ]

View File

@@ -57,7 +57,7 @@
{ {
browserName: "iphone", browserName: "iphone",
platform: "OS X 10.10", platform: "OS X 10.10",
version: "8.1" version: "8.2"
}, },
# iOS Chrome not currently supported by Sauce Labs # iOS Chrome not currently supported by Sauce Labs

View File

@@ -8,6 +8,7 @@
"disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"], "disallowSpaceAfterPrefixUnaryOperators": ["++", "--", "+", "-", "~", "!"],
"disallowSpaceBeforeBinaryOperators": [","], "disallowSpaceBeforeBinaryOperators": [","],
"disallowSpaceBeforePostfixUnaryOperators": ["++", "--"], "disallowSpaceBeforePostfixUnaryOperators": ["++", "--"],
"disallowSpacesInFunctionDeclaration": { "beforeOpeningRoundBrace": true },
"disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true }, "disallowSpacesInNamedFunctionExpression": { "beforeOpeningRoundBrace": true },
"disallowSpacesInsideArrayBrackets": true, "disallowSpacesInsideArrayBrackets": true,
"disallowSpacesInsideParentheses": true, "disallowSpacesInsideParentheses": true,
@@ -16,8 +17,11 @@
"requireCamelCaseOrUpperCaseIdentifiers": true, "requireCamelCaseOrUpperCaseIdentifiers": true,
"requireCapitalizedConstructors": true, "requireCapitalizedConstructors": true,
"requireCommaBeforeLineBreak": true, "requireCommaBeforeLineBreak": true,
"requireDollarBeforejQueryAssignment": true,
"requireDotNotation": true, "requireDotNotation": true,
"requireLineFeedAtFileEnd": true, "requireLineFeedAtFileEnd": true,
"requirePaddingNewLinesAfterUseStrict": true,
"requirePaddingNewLinesBeforeExport": true,
"requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="], "requireSpaceAfterBinaryOperators": ["+", "-", "/", "*", "=", "==", "===", "!=", "!==", ">", "<", ">=", "<="],
"requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"], "requireSpaceAfterKeywords": ["if", "else", "for", "while", "do", "switch", "return", "try", "catch"],
"requireSpaceAfterLineComment": true, "requireSpaceAfterLineComment": true,
@@ -30,7 +34,9 @@
"requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true }, "requireSpacesInFunctionExpression": { "beforeOpeningCurlyBrace": true },
"requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true }, "requireSpacesInNamedFunctionExpression": { "beforeOpeningCurlyBrace": true },
"requireSpacesInsideObjectBrackets": "allButNested", "requireSpacesInsideObjectBrackets": "allButNested",
"validateAlignedFunctionParameters": true,
"validateIndentation": 2, "validateIndentation": 2,
"validateLineBreaks": "LF", "validateLineBreaks": "LF",
"validateNewlineAfterArrayElements": true,
"validateQuoteMarks": "'" "validateQuoteMarks": "'"
} }

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: affix.js v3.3.4 * Bootstrap: affix.js v3.3.6
* http://getbootstrap.com/javascript/#affix * http://getbootstrap.com/javascript/#affix
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -28,7 +28,7 @@
this.checkPosition() this.checkPosition()
} }
Affix.VERSION = '3.3.4' Affix.VERSION = '3.3.6'
Affix.RESET = 'affix affix-top affix-bottom' Affix.RESET = 'affix affix-top affix-bottom'
@@ -78,7 +78,7 @@
var offset = this.options.offset var offset = this.options.offset
var offsetTop = offset.top var offsetTop = offset.top
var offsetBottom = offset.bottom var offsetBottom = offset.bottom
var scrollHeight = $(document.body).height() var scrollHeight = Math.max($(document).height(), $(document.body).height())
if (typeof offset != 'object') offsetBottom = offsetTop = offset if (typeof offset != 'object') offsetBottom = offsetTop = offset
if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element) if (typeof offsetTop == 'function') offsetTop = offset.top(this.$element)

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: alert.js v3.3.4 * Bootstrap: alert.js v3.3.6
* http://getbootstrap.com/javascript/#alerts * http://getbootstrap.com/javascript/#alerts
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -18,7 +18,7 @@
$(el).on('click', dismiss, this.close) $(el).on('click', dismiss, this.close)
} }
Alert.VERSION = '3.3.4' Alert.VERSION = '3.3.6'
Alert.TRANSITION_DURATION = 150 Alert.TRANSITION_DURATION = 150

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: button.js v3.3.4 * Bootstrap: button.js v3.3.6
* http://getbootstrap.com/javascript/#buttons * http://getbootstrap.com/javascript/#buttons
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -19,7 +19,7 @@
this.isLoading = false this.isLoading = false
} }
Button.VERSION = '3.3.4' Button.VERSION = '3.3.6'
Button.DEFAULTS = { Button.DEFAULTS = {
loadingText: 'loading...' loadingText: 'loading...'
@@ -31,7 +31,7 @@
var val = $el.is('input') ? 'val' : 'html' var val = $el.is('input') ? 'val' : 'html'
var data = $el.data() var data = $el.data()
state = state + 'Text' state += 'Text'
if (data.resetText == null) $el.data('resetText', $el[val]()) if (data.resetText == null) $el.data('resetText', $el[val]())
@@ -56,15 +56,19 @@
if ($parent.length) { if ($parent.length) {
var $input = this.$element.find('input') var $input = this.$element.find('input')
if ($input.prop('type') == 'radio') { if ($input.prop('type') == 'radio') {
if ($input.prop('checked') && this.$element.hasClass('active')) changed = false if ($input.prop('checked')) changed = false
else $parent.find('.active').removeClass('active') $parent.find('.active').removeClass('active')
this.$element.addClass('active')
} else if ($input.prop('type') == 'checkbox') {
if (($input.prop('checked')) !== this.$element.hasClass('active')) changed = false
this.$element.toggleClass('active')
} }
if (changed) $input.prop('checked', !this.$element.hasClass('active')).trigger('change') $input.prop('checked', this.$element.hasClass('active'))
if (changed) $input.trigger('change')
} else { } else {
this.$element.attr('aria-pressed', !this.$element.hasClass('active')) this.$element.attr('aria-pressed', !this.$element.hasClass('active'))
this.$element.toggleClass('active')
} }
if (changed) this.$element.toggleClass('active')
} }
@@ -107,7 +111,7 @@
var $btn = $(e.target) var $btn = $(e.target)
if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn') if (!$btn.hasClass('btn')) $btn = $btn.closest('.btn')
Plugin.call($btn, 'toggle') Plugin.call($btn, 'toggle')
e.preventDefault() if (!($(e.target).is('input[type="radio"]') || $(e.target).is('input[type="checkbox"]'))) e.preventDefault()
}) })
.on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) { .on('focus.bs.button.data-api blur.bs.button.data-api', '[data-toggle^="button"]', function (e) {
$(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type)) $(e.target).closest('.btn').toggleClass('focus', /^focus(in)?$/.test(e.type))

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: carousel.js v3.3.4 * Bootstrap: carousel.js v3.3.6
* http://getbootstrap.com/javascript/#carousel * http://getbootstrap.com/javascript/#carousel
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -30,7 +30,7 @@
.on('mouseleave.bs.carousel', $.proxy(this.cycle, this)) .on('mouseleave.bs.carousel', $.proxy(this.cycle, this))
} }
Carousel.VERSION = '3.3.4' Carousel.VERSION = '3.3.6'
Carousel.TRANSITION_DURATION = 600 Carousel.TRANSITION_DURATION = 600

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: collapse.js v3.3.4 * Bootstrap: collapse.js v3.3.6
* http://getbootstrap.com/javascript/#collapse * http://getbootstrap.com/javascript/#collapse
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -29,7 +29,7 @@
if (this.options.toggle) this.toggle() if (this.options.toggle) this.toggle()
} }
Collapse.VERSION = '3.3.4' Collapse.VERSION = '3.3.6'
Collapse.TRANSITION_DURATION = 350 Collapse.TRANSITION_DURATION = 350

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: dropdown.js v3.3.4 * Bootstrap: dropdown.js v3.3.6
* http://getbootstrap.com/javascript/#dropdowns * http://getbootstrap.com/javascript/#dropdowns
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -19,7 +19,41 @@
$(element).on('click.bs.dropdown', this.toggle) $(element).on('click.bs.dropdown', this.toggle)
} }
Dropdown.VERSION = '3.3.4' Dropdown.VERSION = '3.3.6'
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
if (e && e.type == 'click' && /input|textarea/i.test(e.target.tagName) && $.contains($parent[0], e.target)) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger($.Event('hidden.bs.dropdown', relatedTarget))
})
}
Dropdown.prototype.toggle = function (e) { Dropdown.prototype.toggle = function (e) {
var $this = $(this) var $this = $(this)
@@ -34,7 +68,10 @@
if (!isActive) { if (!isActive) {
if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) { if ('ontouchstart' in document.documentElement && !$parent.closest('.navbar-nav').length) {
// if mobile we use a backdrop because click events don't delegate // if mobile we use a backdrop because click events don't delegate
$('<div class="dropdown-backdrop"/>').insertAfter($(this)).on('click', clearMenus) $(document.createElement('div'))
.addClass('dropdown-backdrop')
.insertAfter($(this))
.on('click', clearMenus)
} }
var relatedTarget = { relatedTarget: this } var relatedTarget = { relatedTarget: this }
@@ -48,7 +85,7 @@
$parent $parent
.toggleClass('open') .toggleClass('open')
.trigger('shown.bs.dropdown', relatedTarget) .trigger($.Event('shown.bs.dropdown', relatedTarget))
} }
return false return false
@@ -67,57 +104,25 @@
var $parent = getParent($this) var $parent = getParent($this)
var isActive = $parent.hasClass('open') var isActive = $parent.hasClass('open')
if ((!isActive && e.which != 27) || (isActive && e.which == 27)) { if (!isActive && e.which != 27 || isActive && e.which == 27) {
if (e.which == 27) $parent.find(toggle).trigger('focus') if (e.which == 27) $parent.find(toggle).trigger('focus')
return $this.trigger('click') return $this.trigger('click')
} }
var desc = ' li:not(.disabled):visible a' var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc) var $items = $parent.find('.dropdown-menu' + desc)
if (!$items.length) return if (!$items.length) return
var index = $items.index(e.target) var index = $items.index(e.target)
if (e.which == 38 && index > 0) index-- // up if (e.which == 38 && index > 0) index-- // up
if (e.which == 40 && index < $items.length - 1) index++ // down if (e.which == 40 && index < $items.length - 1) index++ // down
if (!~index) index = 0 if (!~index) index = 0
$items.eq(index).trigger('focus') $items.eq(index).trigger('focus')
} }
function clearMenus(e) {
if (e && e.which === 3) return
$(backdrop).remove()
$(toggle).each(function () {
var $this = $(this)
var $parent = getParent($this)
var relatedTarget = { relatedTarget: this }
if (!$parent.hasClass('open')) return
$parent.trigger(e = $.Event('hide.bs.dropdown', relatedTarget))
if (e.isDefaultPrevented()) return
$this.attr('aria-expanded', 'false')
$parent.removeClass('open').trigger('hidden.bs.dropdown', relatedTarget)
})
}
function getParent($this) {
var selector = $this.attr('data-target')
if (!selector) {
selector = $this.attr('href')
selector = selector && /#[A-Za-z]/.test(selector) && selector.replace(/.*(?=#[^\s]*$)/, '') // strip for ie7
}
var $parent = selector && $(selector)
return $parent && $parent.length ? $parent : $this.parent()
}
// DROPDOWN PLUGIN DEFINITION // DROPDOWN PLUGIN DEFINITION
// ========================== // ==========================
@@ -155,7 +160,6 @@
.on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() }) .on('click.bs.dropdown.data-api', '.dropdown form', function (e) { e.stopPropagation() })
.on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle) .on('click.bs.dropdown.data-api', toggle, Dropdown.prototype.toggle)
.on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', toggle, Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="menu"]', Dropdown.prototype.keydown) .on('keydown.bs.dropdown.data-api', '.dropdown-menu', Dropdown.prototype.keydown)
.on('keydown.bs.dropdown.data-api', '[role="listbox"]', Dropdown.prototype.keydown)
}(jQuery); }(jQuery);

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: modal.js v3.3.4 * Bootstrap: modal.js v3.3.6
* http://getbootstrap.com/javascript/#modals * http://getbootstrap.com/javascript/#modals
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -33,7 +33,7 @@
} }
} }
Modal.VERSION = '3.3.4' Modal.VERSION = '3.3.6'
Modal.TRANSITION_DURATION = 300 Modal.TRANSITION_DURATION = 300
Modal.BACKDROP_TRANSITION_DURATION = 150 Modal.BACKDROP_TRANSITION_DURATION = 150
@@ -90,9 +90,7 @@
that.$element[0].offsetWidth // force reflow that.$element[0].offsetWidth // force reflow
} }
that.$element that.$element.addClass('in')
.addClass('in')
.attr('aria-hidden', false)
that.enforceFocus() that.enforceFocus()
@@ -126,7 +124,6 @@
this.$element this.$element
.removeClass('in') .removeClass('in')
.attr('aria-hidden', true)
.off('click.dismiss.bs.modal') .off('click.dismiss.bs.modal')
.off('mouseup.dismiss.bs.modal') .off('mouseup.dismiss.bs.modal')
@@ -190,7 +187,8 @@
if (this.isShown && this.options.backdrop) { if (this.isShown && this.options.backdrop) {
var doAnimate = $.support.transition && animate var doAnimate = $.support.transition && animate
this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') this.$backdrop = $(document.createElement('div'))
.addClass('modal-backdrop ' + animate)
.appendTo(this.$body) .appendTo(this.$body)
this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) { this.$element.on('click.dismiss.bs.modal', $.proxy(function (e) {

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: popover.js v3.3.4 * Bootstrap: popover.js v3.3.6
* http://getbootstrap.com/javascript/#popovers * http://getbootstrap.com/javascript/#popovers
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -19,7 +19,7 @@
if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js') if (!$.fn.tooltip) throw new Error('Popover requires tooltip.js')
Popover.VERSION = '3.3.4' Popover.VERSION = '3.3.6'
Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, { Popover.DEFAULTS = $.extend({}, $.fn.tooltip.Constructor.DEFAULTS, {
placement: 'right', placement: 'right',

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: scrollspy.js v3.3.4 * Bootstrap: scrollspy.js v3.3.6
* http://getbootstrap.com/javascript/#scrollspy * http://getbootstrap.com/javascript/#scrollspy
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -28,7 +28,7 @@
this.process() this.process()
} }
ScrollSpy.VERSION = '3.3.4' ScrollSpy.VERSION = '3.3.6'
ScrollSpy.DEFAULTS = { ScrollSpy.DEFAULTS = {
offset: 10 offset: 10

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: tab.js v3.3.4 * Bootstrap: tab.js v3.3.6
* http://getbootstrap.com/javascript/#tabs * http://getbootstrap.com/javascript/#tabs
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.
@@ -14,10 +14,12 @@
// ==================== // ====================
var Tab = function (element) { var Tab = function (element) {
// jscs:disable requireDollarBeforejQueryAssignment
this.element = $(element) this.element = $(element)
// jscs:enable requireDollarBeforejQueryAssignment
} }
Tab.VERSION = '3.3.4' Tab.VERSION = '3.3.6'
Tab.TRANSITION_DURATION = 150 Tab.TRANSITION_DURATION = 150
@@ -65,7 +67,7 @@
var $active = container.find('> .active') var $active = container.find('> .active')
var transition = callback var transition = callback
&& $.support.transition && $.support.transition
&& (($active.length && $active.hasClass('fade')) || !!container.find('> .fade').length) && ($active.length && $active.hasClass('fade') || !!container.find('> .fade').length)
function next() { function next() {
$active $active

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: tooltip.js v3.3.4 * Bootstrap: tooltip.js v3.3.6
* http://getbootstrap.com/javascript/#tooltip * http://getbootstrap.com/javascript/#tooltip
* Inspired by the original jQuery.tipsy by Jason Frame * Inspired by the original jQuery.tipsy by Jason Frame
* ======================================================================== * ========================================================================
@@ -21,11 +21,12 @@
this.timeout = null this.timeout = null
this.hoverState = null this.hoverState = null
this.$element = null this.$element = null
this.inState = null
this.init('tooltip', element, options) this.init('tooltip', element, options)
} }
Tooltip.VERSION = '3.3.4' Tooltip.VERSION = '3.3.6'
Tooltip.TRANSITION_DURATION = 150 Tooltip.TRANSITION_DURATION = 150
@@ -50,7 +51,8 @@
this.type = type this.type = type
this.$element = $(element) this.$element = $(element)
this.options = this.getOptions(options) this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport) this.$viewport = this.options.viewport && $($.isFunction(this.options.viewport) ? this.options.viewport.call(this, this.$element) : (this.options.viewport.selector || this.options.viewport))
this.inState = { click: false, hover: false, focus: false }
if (this.$element[0] instanceof document.constructor && !this.options.selector) { if (this.$element[0] instanceof document.constructor && !this.options.selector) {
throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!') throw new Error('`selector` option must be specified when initializing ' + this.type + ' on the window.document object!')
@@ -109,16 +111,20 @@
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type) obj : $(obj.currentTarget).data('bs.' + this.type)
if (self && self.$tip && self.$tip.is(':visible')) {
self.hoverState = 'in'
return
}
if (!self) { if (!self) {
self = new this.constructor(obj.currentTarget, this.getDelegateOptions()) self = new this.constructor(obj.currentTarget, this.getDelegateOptions())
$(obj.currentTarget).data('bs.' + this.type, self) $(obj.currentTarget).data('bs.' + this.type, self)
} }
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusin' ? 'focus' : 'hover'] = true
}
if (self.tip().hasClass('in') || self.hoverState == 'in') {
self.hoverState = 'in'
return
}
clearTimeout(self.timeout) clearTimeout(self.timeout)
self.hoverState = 'in' self.hoverState = 'in'
@@ -130,6 +136,14 @@
}, self.options.delay.show) }, self.options.delay.show)
} }
Tooltip.prototype.isInStateTrue = function () {
for (var key in this.inState) {
if (this.inState[key]) return true
}
return false
}
Tooltip.prototype.leave = function (obj) { Tooltip.prototype.leave = function (obj) {
var self = obj instanceof this.constructor ? var self = obj instanceof this.constructor ?
obj : $(obj.currentTarget).data('bs.' + this.type) obj : $(obj.currentTarget).data('bs.' + this.type)
@@ -139,6 +153,12 @@
$(obj.currentTarget).data('bs.' + this.type, self) $(obj.currentTarget).data('bs.' + this.type, self)
} }
if (obj instanceof $.Event) {
self.inState[obj.type == 'focusout' ? 'focus' : 'hover'] = false
}
if (self.isInStateTrue()) return
clearTimeout(self.timeout) clearTimeout(self.timeout)
self.hoverState = 'out' self.hoverState = 'out'
@@ -185,6 +205,7 @@
.data('bs.' + this.type, this) .data('bs.' + this.type, this)
this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element) this.options.container ? $tip.appendTo(this.options.container) : $tip.insertAfter(this.$element)
this.$element.trigger('inserted.bs.' + this.type)
var pos = this.getPosition() var pos = this.getPosition()
var actualWidth = $tip[0].offsetWidth var actualWidth = $tip[0].offsetWidth
@@ -192,13 +213,12 @@
if (autoPlace) { if (autoPlace) {
var orgPlacement = placement var orgPlacement = placement
var $container = this.options.container ? $(this.options.container) : this.$element.parent() var viewportDim = this.getPosition(this.$viewport)
var containerDim = this.getPosition($container)
placement = placement == 'bottom' && pos.bottom + actualHeight > containerDim.bottom ? 'top' : placement = placement == 'bottom' && pos.bottom + actualHeight > viewportDim.bottom ? 'top' :
placement == 'top' && pos.top - actualHeight < containerDim.top ? 'bottom' : placement == 'top' && pos.top - actualHeight < viewportDim.top ? 'bottom' :
placement == 'right' && pos.right + actualWidth > containerDim.width ? 'left' : placement == 'right' && pos.right + actualWidth > viewportDim.width ? 'left' :
placement == 'left' && pos.left - actualWidth < containerDim.left ? 'right' : placement == 'left' && pos.left - actualWidth < viewportDim.left ? 'right' :
placement placement
$tip $tip
@@ -239,8 +259,8 @@
if (isNaN(marginTop)) marginTop = 0 if (isNaN(marginTop)) marginTop = 0
if (isNaN(marginLeft)) marginLeft = 0 if (isNaN(marginLeft)) marginLeft = 0
offset.top = offset.top + marginTop offset.top += marginTop
offset.left = offset.left + marginLeft offset.left += marginLeft
// $.fn.offset doesn't round pixel values // $.fn.offset doesn't round pixel values
// so we use setOffset directly with our own function B-0 // so we use setOffset directly with our own function B-0
@@ -322,7 +342,7 @@
Tooltip.prototype.fixTitle = function () { Tooltip.prototype.fixTitle = function () {
var $e = this.$element var $e = this.$element
if ($e.attr('title') || typeof ($e.attr('data-original-title')) != 'string') { if ($e.attr('title') || typeof $e.attr('data-original-title') != 'string') {
$e.attr('data-original-title', $e.attr('title') || '').attr('title', '') $e.attr('data-original-title', $e.attr('title') || '').attr('title', '')
} }
} }
@@ -377,7 +397,7 @@
var rightEdgeOffset = pos.left + viewportPadding + actualWidth var rightEdgeOffset = pos.left + viewportPadding + actualWidth
if (leftEdgeOffset < viewportDimensions.left) { // left overflow if (leftEdgeOffset < viewportDimensions.left) { // left overflow
delta.left = viewportDimensions.left - leftEdgeOffset delta.left = viewportDimensions.left - leftEdgeOffset
} else if (rightEdgeOffset > viewportDimensions.width) { // right overflow } else if (rightEdgeOffset > viewportDimensions.right) { // right overflow
delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset delta.left = viewportDimensions.left + viewportDimensions.width - rightEdgeOffset
} }
} }
@@ -403,7 +423,13 @@
} }
Tooltip.prototype.tip = function () { Tooltip.prototype.tip = function () {
return (this.$tip = this.$tip || $(this.options.template)) if (!this.$tip) {
this.$tip = $(this.options.template)
if (this.$tip.length != 1) {
throw new Error(this.type + ' `template` option must consist of exactly 1 top-level element!')
}
}
return this.$tip
} }
Tooltip.prototype.arrow = function () { Tooltip.prototype.arrow = function () {
@@ -432,7 +458,13 @@
} }
} }
self.tip().hasClass('in') ? self.leave(self) : self.enter(self) if (e) {
self.inState.click = !self.inState.click
if (self.isInStateTrue()) self.enter(self)
else self.leave(self)
} else {
self.tip().hasClass('in') ? self.leave(self) : self.enter(self)
}
} }
Tooltip.prototype.destroy = function () { Tooltip.prototype.destroy = function () {
@@ -440,6 +472,12 @@
clearTimeout(this.timeout) clearTimeout(this.timeout)
this.hide(function () { this.hide(function () {
that.$element.off('.' + that.type).removeData('bs.' + that.type) that.$element.off('.' + that.type).removeData('bs.' + that.type)
if (that.$tip) {
that.$tip.detach()
}
that.$tip = null
that.$arrow = null
that.$viewport = null
}) })
} }

View File

@@ -1,5 +1,5 @@
/* ======================================================================== /* ========================================================================
* Bootstrap: transition.js v3.3.4 * Bootstrap: transition.js v3.3.6
* http://getbootstrap.com/javascript/#transitions * http://getbootstrap.com/javascript/#transitions
* ======================================================================== * ========================================================================
* Copyright 2011-2015 Twitter, Inc. * Copyright 2011-2015 Twitter, Inc.

View File

@@ -12,7 +12,7 @@
font-weight: @badge-font-weight; font-weight: @badge-font-weight;
color: @badge-color; color: @badge-color;
line-height: @badge-line-height; line-height: @badge-line-height;
vertical-align: baseline; vertical-align: middle;
white-space: nowrap; white-space: nowrap;
text-align: center; text-align: center;
background-color: @badge-bg; background-color: @badge-bg;

View File

@@ -1,3 +1,9 @@
/*!
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// Core variables and mixins // Core variables and mixins
@import "variables.less"; @import "variables.less";
@import "mixins.less"; @import "mixins.less";

View File

@@ -36,6 +36,7 @@
margin-left: -5px; // Offset the first child's margin margin-left: -5px; // Offset the first child's margin
&:extend(.clearfix all); &:extend(.clearfix all);
.btn,
.btn-group, .btn-group,
.input-group { .input-group {
float: left; float: left;
@@ -172,12 +173,12 @@
border-radius: 0; border-radius: 0;
} }
&:first-child:not(:last-child) { &:first-child:not(:last-child) {
border-top-right-radius: @border-radius-base; .border-top-radius(@btn-border-radius-base);
.border-bottom-radius(0); .border-bottom-radius(0);
} }
&:last-child:not(:first-child) { &:last-child:not(:first-child) {
border-bottom-left-radius: @border-radius-base;
.border-top-radius(0); .border-top-radius(0);
.border-bottom-radius(@btn-border-radius-base);
} }
} }
.btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn { .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {

View File

@@ -17,7 +17,7 @@
background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214 background-image: none; // Reset unusual Firefox-on-Android default style; see https://github.com/necolas/normalize.css/issues/214
border: 1px solid transparent; border: 1px solid transparent;
white-space: nowrap; white-space: nowrap;
.button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @border-radius-base); .button-size(@padding-base-vertical; @padding-base-horizontal; @font-size-base; @line-height-base; @btn-border-radius-base);
.user-select(none); .user-select(none);
&, &,
@@ -47,10 +47,16 @@
&[disabled], &[disabled],
fieldset[disabled] & { fieldset[disabled] & {
cursor: @cursor-disabled; cursor: @cursor-disabled;
pointer-events: none; // Future-proof disabling of clicks
.opacity(.65); .opacity(.65);
.box-shadow(none); .box-shadow(none);
} }
a& {
&.disabled,
fieldset[disabled] & {
pointer-events: none; // Future-proof disabling of clicks on `<a>` elements
}
}
} }
@@ -126,14 +132,14 @@
.btn-lg { .btn-lg {
// line-height: ensure even-numbered height of button next to large input // line-height: ensure even-numbered height of button next to large input
.button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large); .button-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @btn-border-radius-large);
} }
.btn-sm { .btn-sm {
// line-height: ensure proper height of button next to small input // line-height: ensure proper height of button next to small input
.button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small); .button-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
} }
.btn-xs { .btn-xs {
.button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @border-radius-small); .button-size(@padding-xs-vertical; @padding-xs-horizontal; @font-size-small; @line-height-small; @btn-border-radius-small);
} }

View File

@@ -29,7 +29,7 @@
@media all and (transform-3d), (-webkit-transform-3d) { @media all and (transform-3d), (-webkit-transform-3d) {
.transition-transform(~'0.6s ease-in-out'); .transition-transform(~'0.6s ease-in-out');
.backface-visibility(~'hidden'); .backface-visibility(~'hidden');
.perspective(1000); .perspective(1000px);
&.next, &.next,
&.active.right { &.active.right {
@@ -101,6 +101,7 @@
color: @carousel-control-color; color: @carousel-control-color;
text-align: center; text-align: center;
text-shadow: @carousel-text-shadow; text-shadow: @carousel-text-shadow;
background-color: rgba(0, 0, 0, 0); // Fix IE9 click-thru bug
// We can't have this transition here because WebKit cancels the carousel // We can't have this transition here because WebKit cancels the carousel
// animation if you trip this while in the middle of another animation. // animation if you trip this while in the middle of another animation.
@@ -130,6 +131,7 @@
.glyphicon-chevron-right { .glyphicon-chevron-right {
position: absolute; position: absolute;
top: 50%; top: 50%;
margin-top: -10px;
z-index: 5; z-index: 5;
display: inline-block; display: inline-block;
} }
@@ -147,7 +149,6 @@
.icon-next { .icon-next {
width: 20px; width: 20px;
height: 20px; height: 20px;
margin-top: -10px;
line-height: 1; line-height: 1;
font-family: serif; font-family: serif;
} }
@@ -240,18 +241,18 @@
.glyphicon-chevron-right, .glyphicon-chevron-right,
.icon-prev, .icon-prev,
.icon-next { .icon-next {
width: 30px; width: (@carousel-control-font-size * 1.5);
height: 30px; height: (@carousel-control-font-size * 1.5);
margin-top: -15px; margin-top: (@carousel-control-font-size / -2);
font-size: 30px; font-size: (@carousel-control-font-size * 1.5);
} }
.glyphicon-chevron-left, .glyphicon-chevron-left,
.icon-prev { .icon-prev {
margin-left: -15px; margin-left: (@carousel-control-font-size / -2);
} }
.glyphicon-chevron-right, .glyphicon-chevron-right,
.icon-next { .icon-next {
margin-right: -15px; margin-right: (@carousel-control-font-size / -2);
} }
} }

View File

@@ -11,6 +11,7 @@
margin-left: 2px; margin-left: 2px;
vertical-align: middle; vertical-align: middle;
border-top: @caret-width-base dashed; border-top: @caret-width-base dashed;
border-top: @caret-width-base solid ~"\9"; // IE8
border-right: @caret-width-base solid transparent; border-right: @caret-width-base solid transparent;
border-left: @caret-width-base solid transparent; border-left: @caret-width-base solid transparent;
} }
@@ -184,7 +185,8 @@
// Reverse the caret // Reverse the caret
.caret { .caret {
border-top: 0; border-top: 0;
border-bottom: @caret-width-base solid; border-bottom: @caret-width-base dashed;
border-bottom: @caret-width-base solid ~"\9"; // IE8
content: ""; content: "";
} }
// Different positioning for bottom up menu // Different positioning for bottom up menu

View File

@@ -56,7 +56,6 @@ input[type="checkbox"] {
line-height: normal; line-height: normal;
} }
// Set the height of file controls to match text inputs
input[type="file"] { input[type="file"] {
display: block; display: block;
} }
@@ -133,6 +132,12 @@ output {
// Placeholder // Placeholder
.placeholder(); .placeholder();
// Unstyle the caret on `<select>`s in IE10+.
&::-ms-expand {
border: 0;
background-color: transparent;
}
// Disabled and read-only inputs // Disabled and read-only inputs
// //
// HTML5 says that controls under a fieldset > legend:first-child won't be // HTML5 says that controls under a fieldset > legend:first-child won't be
@@ -175,13 +180,17 @@ input[type="search"] {
// text within the input to become vertically misaligned. As a workaround, we // text within the input to become vertically misaligned. As a workaround, we
// set a pixel line-height that matches the given height of the input, but only // set a pixel line-height that matches the given height of the input, but only
// for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848 // for Safari. See https://bugs.webkit.org/show_bug.cgi?id=139848
//
// Note that as of 8.3, iOS doesn't support `datetime` or `week`.
@media screen and (-webkit-min-device-pixel-ratio: 0) { @media screen and (-webkit-min-device-pixel-ratio: 0) {
input[type="date"], input[type="date"],
input[type="time"], input[type="time"],
input[type="datetime-local"], input[type="datetime-local"],
input[type="month"] { input[type="month"] {
line-height: @input-height-base; &.form-control {
line-height: @input-height-base;
}
&.input-sm, &.input-sm,
.input-group-sm & { .input-group-sm & {
@@ -322,14 +331,26 @@ input[type="checkbox"] {
} }
.form-group-sm { .form-group-sm {
.form-control { .form-control {
.input-size(@input-height-small; @padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @input-border-radius-small);
}
.form-control-static {
height: @input-height-small; height: @input-height-small;
padding: @padding-small-vertical @padding-small-horizontal; padding: @padding-small-vertical @padding-small-horizontal;
font-size: @font-size-small; font-size: @font-size-small;
line-height: @line-height-small; line-height: @line-height-small;
border-radius: @input-border-radius-small;
}
select.form-control {
height: @input-height-small;
line-height: @input-height-small;
}
textarea.form-control,
select[multiple].form-control {
height: auto;
}
.form-control-static {
height: @input-height-small;
min-height: (@line-height-computed + @font-size-small); min-height: (@line-height-computed + @font-size-small);
padding: (@padding-small-vertical + 1) @padding-small-horizontal;
font-size: @font-size-small;
line-height: @line-height-small;
} }
} }
@@ -338,14 +359,26 @@ input[type="checkbox"] {
} }
.form-group-lg { .form-group-lg {
.form-control { .form-control {
.input-size(@input-height-large; @padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @input-border-radius-large);
}
.form-control-static {
height: @input-height-large; height: @input-height-large;
padding: @padding-large-vertical @padding-large-horizontal; padding: @padding-large-vertical @padding-large-horizontal;
font-size: @font-size-large; font-size: @font-size-large;
line-height: @line-height-large; line-height: @line-height-large;
border-radius: @input-border-radius-large;
}
select.form-control {
height: @input-height-large;
line-height: @input-height-large;
}
textarea.form-control,
select[multiple].form-control {
height: auto;
}
.form-control-static {
height: @input-height-large;
min-height: (@line-height-computed + @font-size-large); min-height: (@line-height-computed + @font-size-large);
padding: (@padding-large-vertical + 1) @padding-large-horizontal;
font-size: @font-size-large;
line-height: @line-height-large;
} }
} }
@@ -376,12 +409,16 @@ input[type="checkbox"] {
text-align: center; text-align: center;
pointer-events: none; pointer-events: none;
} }
.input-lg + .form-control-feedback { .input-lg + .form-control-feedback,
.input-group-lg + .form-control-feedback,
.form-group-lg .form-control + .form-control-feedback {
width: @input-height-large; width: @input-height-large;
height: @input-height-large; height: @input-height-large;
line-height: @input-height-large; line-height: @input-height-large;
} }
.input-sm + .form-control-feedback { .input-sm + .form-control-feedback,
.input-group-sm + .form-control-feedback,
.form-group-sm .form-control + .form-control-feedback {
width: @input-height-small; width: @input-height-small;
height: @input-height-small; height: @input-height-small;
line-height: @input-height-small; line-height: @input-height-small;
@@ -402,10 +439,10 @@ input[type="checkbox"] {
.has-feedback label { .has-feedback label {
& ~ .form-control-feedback { & ~ .form-control-feedback {
top: (@line-height-computed + 5); // Height of the `label` and its margin top: (@line-height-computed + 5); // Height of the `label` and its margin
} }
&.sr-only ~ .form-control-feedback { &.sr-only ~ .form-control-feedback {
top: 0; top: 0;
} }
} }
@@ -550,7 +587,7 @@ input[type="checkbox"] {
// Reposition the icon because it's now within a grid column and columns have // Reposition the icon because it's now within a grid column and columns have
// `position: relative;` on them. Also accounts for the grid gutter padding. // `position: relative;` on them. Also accounts for the grid gutter padding.
.has-feedback .form-control-feedback { .has-feedback .form-control-feedback {
right: (@grid-gutter-width / 2); right: floor((@grid-gutter-width / 2));
} }
// Form group sizes // Form group sizes
@@ -560,7 +597,8 @@ input[type="checkbox"] {
.form-group-lg { .form-group-lg {
@media (min-width: @screen-sm-min) { @media (min-width: @screen-sm-min) {
.control-label { .control-label {
padding-top: ((@padding-large-vertical * @line-height-large) + 1); padding-top: (@padding-large-vertical + 1);
font-size: @font-size-large;
} }
} }
} }
@@ -568,6 +606,7 @@ input[type="checkbox"] {
@media (min-width: @screen-sm-min) { @media (min-width: @screen-sm-min) {
.control-label { .control-label {
padding-top: (@padding-small-vertical + 1); padding-top: (@padding-small-vertical + 1);
font-size: @font-size-small;
} }
} }
} }

View File

@@ -32,8 +32,8 @@
} }
// Individual icons // Individual icons
.glyphicon-asterisk { &:before { content: "\2a"; } } .glyphicon-asterisk { &:before { content: "\002a"; } }
.glyphicon-plus { &:before { content: "\2b"; } } .glyphicon-plus { &:before { content: "\002b"; } }
.glyphicon-euro, .glyphicon-euro,
.glyphicon-eur { &:before { content: "\20ac"; } } .glyphicon-eur { &:before { content: "\20ac"; } }
.glyphicon-minus { &:before { content: "\2212"; } } .glyphicon-minus { &:before { content: "\2212"; } }

View File

@@ -29,6 +29,10 @@
width: 100%; width: 100%;
margin-bottom: 0; margin-bottom: 0;
&:focus {
z-index: 3;
}
} }
} }
@@ -79,18 +83,18 @@
text-align: center; text-align: center;
background-color: @input-group-addon-bg; background-color: @input-group-addon-bg;
border: 1px solid @input-group-addon-border-color; border: 1px solid @input-group-addon-border-color;
border-radius: @border-radius-base; border-radius: @input-border-radius;
// Sizing // Sizing
&.input-sm { &.input-sm {
padding: @padding-small-vertical @padding-small-horizontal; padding: @padding-small-vertical @padding-small-horizontal;
font-size: @font-size-small; font-size: @font-size-small;
border-radius: @border-radius-small; border-radius: @input-border-radius-small;
} }
&.input-lg { &.input-lg {
padding: @padding-large-vertical @padding-large-horizontal; padding: @padding-large-vertical @padding-large-horizontal;
font-size: @font-size-large; font-size: @font-size-large;
border-radius: @border-radius-large; border-radius: @input-border-radius-large;
} }
// Nuke default margins from checkboxes and radios to vertically center within. // Nuke default margins from checkboxes and radios to vertically center within.
@@ -160,6 +164,7 @@
&:last-child { &:last-child {
> .btn, > .btn,
> .btn-group { > .btn-group {
z-index: 2;
margin-left: -1px; margin-left: -1px;
} }
} }

View File

@@ -4,7 +4,8 @@
.jumbotron { .jumbotron {
padding: @jumbotron-padding (@jumbotron-padding / 2); padding-top: @jumbotron-padding;
padding-bottom: @jumbotron-padding;
margin-bottom: @jumbotron-padding; margin-bottom: @jumbotron-padding;
color: @jumbotron-color; color: @jumbotron-color;
background-color: @jumbotron-bg; background-color: @jumbotron-bg;
@@ -27,6 +28,8 @@
.container &, .container &,
.container-fluid & { .container-fluid & {
border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container border-radius: @border-radius-large; // Only round corners at higher resolutions if contained in a container
padding-left: (@grid-gutter-width / 2);
padding-right: (@grid-gutter-width / 2);
} }
.container { .container {
@@ -34,7 +37,8 @@
} }
@media screen and (min-width: @screen-sm-min) { @media screen and (min-width: @screen-sm-min) {
padding: (@jumbotron-padding * 1.6) 0; padding-top: (@jumbotron-padding * 1.6);
padding-bottom: (@jumbotron-padding * 1.6);
.container &, .container &,
.container-fluid & { .container-fluid & {
@@ -44,7 +48,7 @@
h1, h1,
.h1 { .h1 {
font-size: (@font-size-base * 4.5); font-size: @jumbotron-heading-font-size;
} }
} }
} }

View File

@@ -38,12 +38,13 @@
} }
// Linked list items // Interactive list items
// //
// Use anchor elements instead of `li`s or `div`s to create linked list items. // Use anchor or button elements instead of `li`s or `div`s to create interactive items.
// Includes an extra `.active` modifier class for showing selected items. // Includes an extra `.active` modifier class for showing selected items.
a.list-group-item { a.list-group-item,
button.list-group-item {
color: @list-group-link-color; color: @list-group-link-color;
.list-group-item-heading { .list-group-item-heading {
@@ -59,6 +60,11 @@ a.list-group-item {
} }
} }
button.list-group-item {
width: 100%;
text-align: left;
}
.list-group-item { .list-group-item {
// Disabled state // Disabled state
&.disabled, &.disabled,

View File

@@ -19,6 +19,11 @@
.media-object { .media-object {
display: block; display: block;
// Fix collapse in webkit from max-width: 100% and display: table-cell.
&.img-thumbnail {
max-width: none;
}
} }
.media-right, .media-right,

View File

@@ -11,6 +11,7 @@
@import "mixins/responsive-visibility.less"; @import "mixins/responsive-visibility.less";
@import "mixins/size.less"; @import "mixins/size.less";
@import "mixins/tab-focus.less"; @import "mixins/tab-focus.less";
@import "mixins/reset-text.less";
@import "mixins/text-emphasis.less"; @import "mixins/text-emphasis.less";
@import "mixins/text-overflow.less"; @import "mixins/text-overflow.less";
@import "mixins/vendor-prefixes.less"; @import "mixins/vendor-prefixes.less";

View File

@@ -2,7 +2,8 @@
.bg-variant(@color) { .bg-variant(@color) {
background-color: @color; background-color: @color;
a&:hover { a&:hover,
a&:focus {
background-color: darken(@color, 10%); background-color: darken(@color, 10%);
} }
} }

View File

@@ -8,15 +8,31 @@
background-color: @background; background-color: @background;
border-color: @border; border-color: @border;
&:hover,
&:focus, &:focus,
&.focus, &.focus {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 25%);
}
&:hover {
color: @color;
background-color: darken(@background, 10%);
border-color: darken(@border, 12%);
}
&:active, &:active,
&.active, &.active,
.open > .dropdown-toggle& { .open > .dropdown-toggle& {
color: @color; color: @color;
background-color: darken(@background, 10%); background-color: darken(@background, 10%);
border-color: darken(@border, 12%); border-color: darken(@border, 12%);
&:hover,
&:focus,
&.focus {
color: @color;
background-color: darken(@background, 17%);
border-color: darken(@border, 25%);
}
} }
&:active, &:active,
&.active, &.active,
@@ -26,12 +42,9 @@
&.disabled, &.disabled,
&[disabled], &[disabled],
fieldset[disabled] & { fieldset[disabled] & {
&,
&:hover, &:hover,
&:focus, &:focus,
&.focus, &.focus {
&:active,
&.active {
background-color: @background; background-color: @background;
border-color: @border; border-color: @border;
} }

View File

@@ -19,8 +19,8 @@
// Prevent columns from collapsing when empty // Prevent columns from collapsing when empty
min-height: 1px; min-height: 1px;
// Inner gutter via padding // Inner gutter via padding
padding-left: (@grid-gutter-width / 2); padding-left: ceil((@grid-gutter-width / 2));
padding-right: (@grid-gutter-width / 2); padding-right: floor((@grid-gutter-width / 2));
} }
} }
.col(1); // kickstart it .col(1); // kickstart it

View File

@@ -6,15 +6,15 @@
.container-fixed(@gutter: @grid-gutter-width) { .container-fixed(@gutter: @grid-gutter-width) {
margin-right: auto; margin-right: auto;
margin-left: auto; margin-left: auto;
padding-left: (@gutter / 2); padding-left: floor((@gutter / 2));
padding-right: (@gutter / 2); padding-right: ceil((@gutter / 2));
&:extend(.clearfix all); &:extend(.clearfix all);
} }
// Creates a wrapper for a series of columns // Creates a wrapper for a series of columns
.make-row(@gutter: @grid-gutter-width) { .make-row(@gutter: @grid-gutter-width) {
margin-left: (@gutter / -2); margin-left: ceil((@gutter / -2));
margin-right: (@gutter / -2); margin-right: floor((@gutter / -2));
&:extend(.clearfix all); &:extend(.clearfix all);
} }

View File

@@ -1,12 +1,12 @@
// CSS image replacement // CSS image replacement
// //
// Heads up! v3 launched with with only `.hide-text()`, but per our pattern for // Heads up! v3 launched with only `.hide-text()`, but per our pattern for
// mixins being reused as classes with the same name, this doesn't hold up. As // mixins being reused as classes with the same name, this doesn't hold up. As
// of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`. // of v3.0.1 we have added `.text-hide()` and deprecated `.hide-text()`.
// //
// Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757 // Source: https://github.com/h5bp/html5-boilerplate/commit/aa0396eae757
// Deprecated as of v3.0.1 (will be removed in v4) // Deprecated as of v3.0.1 (has been removed in v4)
.hide-text() { .hide-text() {
font: ~"0/0" a; font: ~"0/0" a;
color: transparent; color: transparent;

View File

@@ -5,7 +5,8 @@
color: @color; color: @color;
background-color: @background; background-color: @background;
a& { a&,
button& {
color: @color; color: @color;
.list-group-item-heading { .list-group-item-heading {

View File

@@ -1,11 +1,12 @@
// Pagination // Pagination
.pagination-size(@padding-vertical; @padding-horizontal; @font-size; @border-radius) { .pagination-size(@padding-vertical; @padding-horizontal; @font-size; @line-height; @border-radius) {
> li { > li {
> a, > a,
> span { > span {
padding: @padding-vertical @padding-horizontal; padding: @padding-vertical @padding-horizontal;
font-size: @font-size; font-size: @font-size;
line-height: @line-height;
} }
&:first-child { &:first-child {
> a, > a,

View File

@@ -0,0 +1,18 @@
.reset-text() {
font-family: @font-family-base;
// We deliberately do NOT reset font-size.
font-style: normal;
font-weight: normal;
letter-spacing: normal;
line-break: auto;
line-height: @line-height-base;
text-align: left; // Fallback for where `start` is not supported
text-align: start;
text-decoration: none;
text-shadow: none;
text-transform: none;
white-space: normal;
word-break: normal;
word-spacing: normal;
word-wrap: normal;
}

View File

@@ -4,7 +4,7 @@
// More easily include all the states for responsive-utilities.less. // More easily include all the states for responsive-utilities.less.
.responsive-visibility() { .responsive-visibility() {
display: block !important; display: block !important;
table& { display: table; } table& { display: table !important; }
tr& { display: table-row !important; } tr& { display: table-row !important; }
th&, th&,
td& { display: table-cell !important; } td& { display: table-cell !important; }

View File

@@ -2,7 +2,8 @@
.text-emphasis-variant(@color) { .text-emphasis-variant(@color) {
color: @color; color: @color;
a&:hover { a&:hover,
a&:focus {
color: darken(@color, 10%); color: darken(@color, 10%);
} }
} }

View File

@@ -1,7 +1,7 @@
// Vendor Prefixes // Vendor Prefixes
// //
// All vendor mixins are deprecated as of v3.2.0 due to the introduction of // All vendor mixins are deprecated as of v3.2.0 due to the introduction of
// Autoprefixer in our Gruntfile. They will be removed in v4. // Autoprefixer in our Gruntfile. They have been removed in v4.
// - Animations // - Animations
// - Backface visibility // - Backface visibility
@@ -54,7 +54,7 @@
// Prevent browsers from flickering when using CSS 3D transforms. // Prevent browsers from flickering when using CSS 3D transforms.
// Default value is `visible`, but can be changed to `hidden` // Default value is `visible`, but can be changed to `hidden`
.backface-visibility(@visibility){ .backface-visibility(@visibility) {
-webkit-backface-visibility: @visibility; -webkit-backface-visibility: @visibility;
-moz-backface-visibility: @visibility; -moz-backface-visibility: @visibility;
backface-visibility: @visibility; backface-visibility: @visibility;

View File

@@ -79,7 +79,7 @@
.modal-header { .modal-header {
padding: @modal-title-padding; padding: @modal-title-padding;
border-bottom: 1px solid @modal-header-border-color; border-bottom: 1px solid @modal-header-border-color;
min-height: (@modal-title-padding + @modal-title-line-height); &:extend(.clearfix all);
} }
// Close icon // Close icon
.modal-header .close { .modal-header .close {

View File

@@ -1,9 +1,9 @@
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */ /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */
// //
// 1. Set default font family to sans-serif. // 1. Set default font family to sans-serif.
// 2. Prevent iOS text size adjust after orientation change, without disabling // 2. Prevent iOS and IE text size adjust after device orientation change,
// user zoom. // without disabling user zoom.
// //
html { html {
@@ -71,7 +71,7 @@ audio:not([controls]) {
// //
// Address `[hidden]` styling not present in IE 8/9/10. // Address `[hidden]` styling not present in IE 8/9/10.
// Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22. // Hide the `template` element in IE 8/9/10/11, Safari, and Firefox < 22.
// //
[hidden], [hidden],
@@ -91,7 +91,8 @@ a {
} }
// //
// Improve readability when focused and also mouse hovered in all browsers. // Improve readability of focused elements when they are also in an
// active/hover state.
// //
a:active, a:active,
@@ -209,7 +210,6 @@ figure {
// //
hr { hr {
-moz-box-sizing: content-box;
box-sizing: content-box; box-sizing: content-box;
height: 0; height: 0;
} }
@@ -350,15 +350,12 @@ input[type="number"]::-webkit-outer-spin-button {
// //
// 1. Address `appearance` set to `searchfield` in Safari and Chrome. // 1. Address `appearance` set to `searchfield` in Safari and Chrome.
// 2. Address `box-sizing` set to `border-box` in Safari and Chrome // 2. Address `box-sizing` set to `border-box` in Safari and Chrome.
// (include `-moz` to future-proof).
// //
input[type="search"] { input[type="search"] {
-webkit-appearance: textfield; // 1 -webkit-appearance: textfield; // 1
-moz-box-sizing: content-box; box-sizing: content-box; //2
-webkit-box-sizing: content-box; // 2
box-sizing: content-box;
} }
// //

View File

@@ -40,6 +40,7 @@
> li > span { > li > span {
&:hover, &:hover,
&:focus { &:focus {
z-index: 2;
color: @pagination-hover-color; color: @pagination-hover-color;
background-color: @pagination-hover-bg; background-color: @pagination-hover-bg;
border-color: @pagination-hover-border; border-color: @pagination-hover-border;
@@ -51,7 +52,7 @@
&, &,
&:hover, &:hover,
&:focus { &:focus {
z-index: 2; z-index: 3;
color: @pagination-active-color; color: @pagination-active-color;
background-color: @pagination-active-bg; background-color: @pagination-active-bg;
border-color: @pagination-active-border; border-color: @pagination-active-border;
@@ -79,10 +80,10 @@
// Large // Large
.pagination-lg { .pagination-lg {
.pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @border-radius-large); .pagination-size(@padding-large-vertical; @padding-large-horizontal; @font-size-large; @line-height-large; @border-radius-large);
} }
// Small // Small
.pagination-sm { .pagination-sm {
.pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @border-radius-small); .pagination-size(@padding-small-vertical; @padding-small-horizontal; @font-size-small; @line-height-small; @border-radius-small);
} }

View File

@@ -76,6 +76,7 @@
.border-top-radius((@panel-border-radius - 1)); .border-top-radius((@panel-border-radius - 1));
} }
} }
// Add border bottom radius for last one // Add border bottom radius for last one
&:last-child { &:last-child {
.list-group-item:last-child { .list-group-item:last-child {
@@ -84,6 +85,11 @@
} }
} }
} }
> .panel-heading + .panel-collapse > .list-group {
.list-group-item:first-child {
.border-top-radius(0);
}
}
} }
// Collapse space between when there's no additional content. // Collapse space between when there's no additional content.
.panel-heading + .list-group { .panel-heading + .list-group {

View File

@@ -11,12 +11,11 @@
display: none; display: none;
max-width: @popover-max-width; max-width: @popover-max-width;
padding: 1px; padding: 1px;
// Reset font and text properties given new insertion method // Our parent element can be arbitrary since popovers are by default inserted as a sibling of their target element.
font-family: @font-family-base; // So reset our font and text properties to avoid inheriting weird values.
.reset-text();
font-size: @font-size-base; font-size: @font-size-base;
font-weight: normal;
line-height: @line-height-base;
text-align: left;
background-color: @popover-bg; background-color: @popover-bg;
background-clip: padding-box; background-clip: padding-box;
border: 1px solid @popover-fallback-border-color; border: 1px solid @popover-fallback-border-color;
@@ -24,9 +23,6 @@
border-radius: @border-radius-large; border-radius: @border-radius-large;
.box-shadow(0 5px 10px rgba(0,0,0,.2)); .box-shadow(0 5px 10px rgba(0,0,0,.2));
// Overrides for proper insertion
white-space: normal;
// Offset the popover to account for the popover arrow // Offset the popover to account for the popover arrow
&.top { margin-top: -@popover-arrow-width; } &.top { margin-top: -@popover-arrow-width; }
&.right { margin-left: @popover-arrow-width; } &.right { margin-left: @popover-arrow-width; }

View File

@@ -67,12 +67,6 @@
} }
// Bootstrap specific changes start // Bootstrap specific changes start
//
// Chrome (OSX) fix for https://github.com/twbs/bootstrap/issues/11245
// Once fixed, we can just straight up remove this.
select {
background: #fff !important;
}
// Bootstrap components // Bootstrap components
.navbar { .navbar {

View File

@@ -155,7 +155,6 @@ hr {
// Fixes "clickability" issue (and more generally, the firing of events such as focus as well) // Fixes "clickability" issue (and more generally, the firing of events such as focus as well)
// for traditionally non-focusable elements with role="button" // for traditionally non-focusable elements with role="button"
// see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile // see https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile
// Upstream patch for normalize.css submitted: https://github.com/necolas/normalize.css/pull/379 - remove this fix once that is merged
[role="button"] { [role="button"] {
cursor: pointer; cursor: pointer;

View File

@@ -1,3 +1,8 @@
/*!
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
// //
// Load core variables and mixins // Load core variables and mixins
@@ -28,6 +33,12 @@
.box-shadow(inset 0 3px 5px rgba(0,0,0,.125)); .box-shadow(inset 0 3px 5px rgba(0,0,0,.125));
} }
&.disabled,
&[disabled],
fieldset[disabled] & {
.box-shadow(none);
}
.badge { .badge {
text-shadow: none; text-shadow: none;
} }
@@ -53,10 +64,17 @@
} }
&.disabled, &.disabled,
&:disabled, &[disabled],
&[disabled] { fieldset[disabled] & {
background-color: darken(@btn-color, 12%); &,
background-image: none; &:hover,
&:focus,
&.focus,
&:active,
&.active {
background-color: darken(@btn-color, 12%);
background-image: none;
}
} }
} }
@@ -132,7 +150,7 @@
.navbar-inverse { .navbar-inverse {
#gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg); #gradient > .vertical(@start-color: lighten(@navbar-inverse-bg, 10%); @end-color: @navbar-inverse-bg);
.reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257 .reset-filter(); // Remove gradient in IE<10 to fix bug where dropdowns don't get triggered; see https://github.com/twbs/bootstrap/issues/10257
border-radius: @navbar-border-radius;
.navbar-nav > .open > a, .navbar-nav > .open > a,
.navbar-nav > .active > a { .navbar-nav > .active > a {
#gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%)); #gradient > .vertical(@start-color: @navbar-inverse-link-active-bg; @end-color: lighten(@navbar-inverse-link-active-bg, 2.5%));

View File

@@ -8,11 +8,11 @@
position: absolute; position: absolute;
z-index: @zindex-tooltip; z-index: @zindex-tooltip;
display: block; display: block;
// Reset font and text properties given new insertion method // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.
font-family: @font-family-base; // So reset our font and text properties to avoid inheriting weird values.
.reset-text();
font-size: @font-size-small; font-size: @font-size-small;
font-weight: normal;
line-height: 1.4;
.opacity(0); .opacity(0);
&.in { .opacity(@tooltip-opacity); } &.in { .opacity(@tooltip-opacity); }
@@ -28,7 +28,6 @@
padding: 3px 8px; padding: 3px 8px;
color: @tooltip-color; color: @tooltip-color;
text-align: center; text-align: center;
text-decoration: none;
background-color: @tooltip-bg; background-color: @tooltip-bg;
border-radius: @border-radius-base; border-radius: @border-radius-base;
} }

View File

@@ -211,7 +211,7 @@ dd {
&:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present &:extend(.clearfix all); // Clear the floated `dt` if an empty `dd` is present
} }
@media (min-width: @grid-float-breakpoint) { @media (min-width: @dl-horizontal-breakpoint) {
dt { dt {
float: left; float: left;
width: (@dl-horizontal-offset - 20); width: (@dl-horizontal-offset - 20);

View File

@@ -170,6 +170,11 @@
@btn-link-disabled-color: @gray-light; @btn-link-disabled-color: @gray-light;
// Allows for customizing button radius independently from global border radius
@btn-border-radius-base: @border-radius-base;
@btn-border-radius-large: @border-radius-large;
@btn-border-radius-small: @border-radius-small;
//== Forms //== Forms
// //
@@ -383,7 +388,7 @@
@navbar-default-toggle-border-color: #ddd; @navbar-default-toggle-border-color: #ddd;
// Inverted navbar //=== Inverted navbar
// Reset inverted navbar basics // Reset inverted navbar basics
@navbar-inverse-color: lighten(@gray-light, 15%); @navbar-inverse-color: lighten(@gray-light, 15%);
@navbar-inverse-bg: #222; @navbar-inverse-bg: #222;
@@ -484,6 +489,7 @@
@jumbotron-bg: @gray-lighter; @jumbotron-bg: @gray-lighter;
@jumbotron-heading-color: inherit; @jumbotron-heading-color: inherit;
@jumbotron-font-size: ceil((@font-size-base * 1.5)); @jumbotron-font-size: ceil((@font-size-base * 1.5));
@jumbotron-heading-font-size: ceil((@font-size-base * 4.5));
//== Form states and alerts //== Form states and alerts
@@ -857,5 +863,7 @@
@page-header-border-color: @gray-lighter; @page-header-border-color: @gray-lighter;
//** Width of horizontal description list titles //** Width of horizontal description list titles
@dl-horizontal-offset: @component-offset-horizontal; @dl-horizontal-offset: @component-offset-horizontal;
//** Point at which .dl-horizontal becomes horizontal
@dl-horizontal-breakpoint: @grid-float-breakpoint;
//** Horizontal line color. //** Horizontal line color.
@hr-border: @gray-lighter; @hr-border: @gray-lighter;

View File

@@ -0,0 +1,8 @@
$nuget = $env:NuGet
#parse the version number out of package.json
$bsversion = ((Get-Content $env:SourcesPath\package.json) -join "`n" | ConvertFrom-Json).version
#create packages
& $nuget pack "nuget\bootstrap.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion
& $nuget pack "nuget\bootstrap.less.nuspec" -Verbosity detailed -NonInteractive -NoPackageAnalysis -BasePath $env:SourcesPath -Version $bsversion

View File

@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>bootstrap.less</id>
<version>3.3</version>
<title>Bootstrap Less</title>
<authors>Twitter, Inc.</authors>
<owners>bootstrap</owners>
<description>The most popular front-end framework for developing responsive, mobile first projects on the web.</description>
<releaseNotes>http://blog.getbootstrap.com</releaseNotes>
<summary>Bootstrap framework in Less. Includes fonts and JavaScript</summary>
<language>en-us</language>
<projectUrl>http://getbootstrap.com</projectUrl>
<iconUrl>http://getbootstrap.com/apple-touch-icon.png</iconUrl>
<licenseUrl>https://github.com/twbs/bootstrap/blob/master/LICENSE</licenseUrl>
<copyright>Copyright 2015</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<dependencies>
<dependency id="jQuery" version="[1.9.1,3)" />
</dependencies>
<tags>css js less mobile-first responsive front-end framework web</tags>
</metadata>
<files>
<file src="less\**\*.less" target="content\Content\bootstrap" />
<file src="fonts\*.*" target="content\Content\fonts" />
<file src="dist\js\bootstrap*.js" target="content\Scripts" />
</files>
</package>

View File

@@ -0,0 +1,28 @@
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
<metadata>
<id>bootstrap</id>
<version>3.3</version>
<title>Bootstrap CSS</title>
<authors>Twitter, Inc.</authors>
<owners>bootstrap</owners>
<description>The most popular front-end framework for developing responsive, mobile first projects on the web.</description>
<releaseNotes>http://blog.getbootstrap.com</releaseNotes>
<summary>Bootstrap framework in CSS. Includes fonts and JavaScript</summary>
<language>en-us</language>
<projectUrl>http://getbootstrap.com</projectUrl>
<iconUrl>http://getbootstrap.com/apple-touch-icon.png</iconUrl>
<licenseUrl>https://github.com/twbs/bootstrap/blob/master/LICENSE</licenseUrl>
<copyright>Copyright 2015</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<dependencies>
<dependency id="jQuery" version="[1.9.1,3)" />
</dependencies>
<tags>css js less mobile-first responsive front-end framework web</tags>
</metadata>
<files>
<file src="dist\css\*.*" target="content\Content" />
<file src="dist\fonts\*.*" target="content\fonts" />
<file src="dist\js\bootstrap*.js" target="content\Scripts" />
</files>
</package>

View File

@@ -1,22 +1,32 @@
// package metadata file for Meteor.js // package metadata file for Meteor.js
/* jshint strict:false */
/* global Package:true */
Package.describe({ Package.describe({
name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap
summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.', summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
version: '3.3.4', version: '3.3.6',
git: 'https://github.com/twbs/bootstrap.git' git: 'https://github.com/twbs/bootstrap.git'
}); });
Package.onUse(function (api) { Package.onUse(function (api) {
api.versionsFrom('METEOR@1.0'); api.versionsFrom('METEOR@1.0');
api.use('jquery', 'client'); api.use('jquery', 'client');
api.addFiles([ var assets = [
'dist/fonts/glyphicons-halflings-regular.eot', 'dist/fonts/glyphicons-halflings-regular.eot',
'dist/fonts/glyphicons-halflings-regular.svg', 'dist/fonts/glyphicons-halflings-regular.svg',
'dist/fonts/glyphicons-halflings-regular.ttf', 'dist/fonts/glyphicons-halflings-regular.ttf',
'dist/fonts/glyphicons-halflings-regular.woff', 'dist/fonts/glyphicons-halflings-regular.woff',
'dist/fonts/glyphicons-halflings-regular.woff2', 'dist/fonts/glyphicons-halflings-regular.woff2'
];
if (api.addAssets) {
api.addAssets(assets, 'client');
} else {
api.addFiles(assets, 'client', { isAsset: true });
}
api.addFiles([
'dist/css/bootstrap.css', 'dist/css/bootstrap.css',
'dist/js/bootstrap.js', 'dist/js/bootstrap.js'
], 'client'); ], 'client');
}); });

View File

@@ -1,7 +1,7 @@
{ {
"name": "bootstrap", "name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.", "description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.4", "version": "3.3.6",
"keywords": [ "keywords": [
"css", "css",
"less", "less",
@@ -26,40 +26,37 @@
"bugs": { "bugs": {
"url": "https://github.com/twbs/bootstrap/issues" "url": "https://github.com/twbs/bootstrap/issues"
}, },
"license": { "license": "MIT",
"type": "MIT",
"url": "https://github.com/twbs/bootstrap/blob/master/LICENSE"
},
"devDependencies": { "devDependencies": {
"btoa": "~1.1.2", "btoa": "~1.1.2",
"glob": "~5.0.3", "glob": "~6.0.1",
"grunt": "~0.4.5", "grunt": "~0.4.5",
"grunt-autoprefixer": "~2.2.0", "grunt-autoprefixer": "~3.0.3",
"grunt-banner": "~0.3.1",
"grunt-contrib-clean": "~0.6.0", "grunt-contrib-clean": "~0.6.0",
"grunt-contrib-compress": "~0.13.0", "grunt-contrib-compress": "~0.14.0",
"grunt-contrib-concat": "~0.5.1", "grunt-contrib-concat": "~0.5.1",
"grunt-contrib-connect": "~0.9.0", "grunt-contrib-connect": "~0.11.2",
"grunt-contrib-copy": "~0.8.0", "grunt-contrib-copy": "~0.8.0",
"grunt-contrib-csslint": "~0.4.0", "grunt-contrib-csslint": "~0.5.0",
"grunt-contrib-cssmin": "~0.12.2", "grunt-contrib-cssmin": "~0.14.0",
"grunt-contrib-jade": "~0.14.1", "grunt-contrib-htmlmin": "~0.6.0",
"grunt-contrib-jshint": "~0.11.0", "grunt-contrib-jade": "~0.15.0",
"grunt-contrib-less": "~1.0.0", "grunt-contrib-jshint": "~0.11.2",
"grunt-contrib-qunit": "~0.5.2", "grunt-contrib-less": "~1.1.0",
"grunt-contrib-uglify": "~0.8.0", "grunt-contrib-qunit": "~0.7.0",
"grunt-contrib-uglify": "~0.9.2",
"grunt-contrib-watch": "~0.6.1", "grunt-contrib-watch": "~0.6.1",
"grunt-csscomb": "~3.0.0", "grunt-csscomb": "~3.1.0",
"grunt-exec": "~0.4.6", "grunt-exec": "~0.4.6",
"grunt-html": "~4.0.1", "grunt-html": "~5.0.1",
"grunt-jekyll": "~0.4.2", "grunt-jekyll": "~0.4.2",
"grunt-jscs": "~1.5.0", "grunt-jscs": "~2.3.0",
"grunt-saucelabs": "~8.6.0", "grunt-saucelabs": "~8.6.1",
"grunt-sed": "~0.1.1", "grunt-sed": "twbs/grunt-sed#v0.2.0",
"load-grunt-tasks": "~3.1.0", "load-grunt-tasks": "~3.3.0",
"markdown-it": "^4.0.1", "markdown-it": "^5.0.0",
"npm-shrinkwrap": "^200.1.0", "npm-shrinkwrap": "^200.4.0",
"time-grunt": "^1.1.0" "time-grunt": "^1.2.1"
}, },
"engines": { "engines": {
"node": ">=0.10.1" "node": ">=0.10.1"
@@ -67,8 +64,7 @@
"files": [ "files": [
"dist", "dist",
"fonts", "fonts",
"grunt/*.js", "grunt",
"grunt/*.json",
"js/*.js", "js/*.js",
"less/**/*.less", "less/**/*.less",
"Gruntfile.js", "Gruntfile.js",
@@ -76,18 +72,16 @@
], ],
"jspm": { "jspm": {
"main": "js/bootstrap", "main": "js/bootstrap",
"directories": {
"example": "examples",
"lib": "dist"
},
"shim": { "shim": {
"js/bootstrap": { "js/bootstrap": {
"imports": "jquery", "deps": "jquery",
"exports": "$" "exports": "$"
} }
}, },
"buildConfig": { "files": [
"uglify": true "css",
} "fonts",
"js"
]
} }
} }

View File

@@ -1,20 +1,20 @@
{ {
"name": "datatables-responsive", "name": "datatables-responsive",
"version": "1.0.5", "version": "1.0.7",
"main": [ "main": [
"js/dataTables.responsive.js", "js/dataTables.responsive.js",
"css/dataTables.responsive.css" "css/responsive.dataTables.scss"
], ],
"dependencies": { "dependencies": {
"jquery": ">=1.7.0", "jquery": ">=1.7.0",
"datatables": ">=1.10.1" "datatables": ">=1.10.1"
}, },
"homepage": "https://github.com/DataTables/Responsive", "homepage": "https://github.com/DataTables/Responsive",
"_release": "1.0.5", "_release": "1.0.7",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.0.5", "tag": "1.0.7",
"commit": "2c66f3b8b2dd04b83443c2695f8845285876e8e1" "commit": "435b1bd36ed29de73dd704121de0571a5c1a50a6"
}, },
"_source": "git://github.com/DataTables/Responsive.git", "_source": "git://github.com/DataTables/Responsive.git",
"_target": "~1.0.3", "_target": "~1.0.3",

View File

@@ -1,3 +1,5 @@
MIT license
Copyright (c) 2014-2015 SpryMedia Limited Copyright (c) 2014-2015 SpryMedia Limited
http://datatables.net http://datatables.net

View File

@@ -0,0 +1,35 @@
# Responsive
Responsive will automatically optimise the table's layout for different screen sizes through the dynamic column visibility control, making your tables useful on desktop and mobile screens.
# Installation
To use Responsive the best way to obtain the software is to use the [DataTables downloader](//datatables.net/download). You can also include the individual files from the [DataTables CDN](//cdn.datatables.net). See the [documentation](http://datatables.net/extensions/responsive/) for full details.
# Basic usage
Responsive is initialised using the `responsive` option in the DataTables constructor - a simple boolean `true` will enable the feature. Further options can be specified using this option as an object - see the documentation for details.
Example:
```js
$(document).ready( function () {
$('#myTable').DataTable( {
responsive: true
} );
} );
```
# Documentation / support
* [Documentation](https://datatables.net/extensions/responsive/)
* [DataTables support forums](http://datatables.net/forums)
# GitHub
If you fancy getting involved with the development of Responsive and help make it better, please refer to its [GitHub repo](https://github.com/DataTables/Responsive).

View File

@@ -1,9 +1,9 @@
{ {
"name": "datatables-responsive", "name": "datatables-responsive",
"version": "1.0.5", "version": "1.0.7",
"main": [ "main": [
"js/dataTables.responsive.js", "js/dataTables.responsive.js",
"css/dataTables.responsive.css" "css/responsive.dataTables.scss"
], ],
"dependencies": { "dependencies": {
"jquery": ">=1.7.0", "jquery": ">=1.7.0",

View File

@@ -1,106 +0,0 @@
table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child,
table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child {
position: relative;
padding-left: 30px;
cursor: pointer;
}
table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child:before,
table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child:before {
top: 8px;
left: 4px;
height: 16px;
width: 16px;
display: block;
position: absolute;
color: white;
border: 2px solid white;
border-radius: 16px;
text-align: center;
line-height: 14px;
box-shadow: 0 0 3px #444;
box-sizing: content-box;
content: '+';
background-color: #31b131;
}
table.dataTable.dtr-inline.collapsed > tbody > tr > td:first-child.dataTables_empty:before,
table.dataTable.dtr-inline.collapsed > tbody > tr > th:first-child.dataTables_empty:before {
display: none;
}
table.dataTable.dtr-inline.collapsed > tbody > tr.parent > td:first-child:before,
table.dataTable.dtr-inline.collapsed > tbody > tr.parent > th:first-child:before {
content: '-';
background-color: #d33333;
}
table.dataTable.dtr-inline.collapsed > tbody > tr.child td:before {
display: none;
}
table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child,
table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child {
padding-left: 27px;
}
table.dataTable.dtr-inline.collapsed.compact > tbody > tr > td:first-child:before,
table.dataTable.dtr-inline.collapsed.compact > tbody > tr > th:first-child:before {
top: 5px;
left: 4px;
height: 14px;
width: 14px;
border-radius: 14px;
line-height: 12px;
}
table.dataTable.dtr-column > tbody > tr > td.control,
table.dataTable.dtr-column > tbody > tr > th.control {
position: relative;
cursor: pointer;
}
table.dataTable.dtr-column > tbody > tr > td.control:before,
table.dataTable.dtr-column > tbody > tr > th.control:before {
top: 50%;
left: 50%;
height: 16px;
width: 16px;
margin-top: -10px;
margin-left: -10px;
display: block;
position: absolute;
color: white;
border: 2px solid white;
border-radius: 16px;
text-align: center;
line-height: 14px;
box-shadow: 0 0 3px #444;
box-sizing: content-box;
content: '+';
background-color: #31b131;
}
table.dataTable.dtr-column > tbody > tr.parent td.control:before,
table.dataTable.dtr-column > tbody > tr.parent th.control:before {
content: '-';
background-color: #d33333;
}
table.dataTable > tbody > tr.child {
padding: 0.5em 1em;
}
table.dataTable > tbody > tr.child:hover {
background: transparent !important;
}
table.dataTable > tbody > tr.child ul {
display: inline-block;
list-style-type: none;
margin: 0;
padding: 0;
}
table.dataTable > tbody > tr.child ul li {
border-bottom: 1px solid #efefef;
padding: 0.5em 0;
}
table.dataTable > tbody > tr.child ul li:first-child {
padding-top: 0;
}
table.dataTable > tbody > tr.child ul li:last-child {
border-bottom: none;
}
table.dataTable > tbody > tr.child span.dtr-title {
display: inline-block;
min-width: 75px;
font-weight: bold;
}

View File

@@ -0,0 +1,4 @@
$open-button-background: #337ab7 !default;
@import 'responsive.dataTables.scss';

View File

@@ -1,4 +1,12 @@
//
// Variables
//
$open-button-background: #31b131 !default;
$close-button-background: #d33333 !default;
// //
// Mixins // Mixins
// //
@@ -16,12 +24,12 @@
@mixin control-open() { @mixin control-open() {
content: '+'; content: '+';
background-color: #31b131; background-color: $open-button-background;
} }
@mixin control-close() { @mixin control-close() {
content: '-'; content: '-';
background-color: #d33333; background-color: $close-button-background;
} }

View File

@@ -0,0 +1,10 @@
$open-button-background: #008CBA !default;
@import 'responsive.dataTables.scss';
table.dataTable > tbody > tr.child {
ul {
font-size: 1em;
}
}

View File

@@ -0,0 +1,2 @@
@import 'responsive.dataTables.scss';

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-api group="responsive"> <dt-api library="Responsive">
<name>responsive.index()</name> <name>responsive.index()</name>
<summary>Obtain the cell index from a `-tag li` details element</summary> <summary>Obtain the cell index from a `-tag li` details element</summary>
<since>1.0.3</since> <since>1.0.3</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-api group="responsive"> <dt-api library="Responsive">
<name>responsive.rebuild()</name> <name>responsive.rebuild()</name>
<summary>Recalculate the column breakpoints based on the class information of the column header cells</summary> <summary>Recalculate the column breakpoints based on the class information of the column header cells</summary>
<since>1.0.4</since> <since>1.0.4</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-api group="responsive"> <dt-api library="Responsive">
<name>responsive.recalc()</name> <name>responsive.recalc()</name>
<summary>Recalculate the widths used by responsive after a change in the display</summary> <summary>Recalculate the widths used by responsive after a change in the display</summary>
<since>1.0.1</since> <since>1.0.1</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-option group="responsive"> <dt-option library="Responsive">
<name>responsive.breakpoints</name> <name>responsive.breakpoints</name>
<summary>Set the breakpoints for a Responsive instance</summary> <summary>Set the breakpoints for a Responsive instance</summary>
<since>Responsive 1.0.0</since> <since>Responsive 1.0.0</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-option group="responsive"> <dt-option library="Responsive">
<name>responsive.details.renderer</name> <name>responsive.details.renderer</name>
<summary>Define the renderer used to display the child rows</summary> <summary>Define the renderer used to display the child rows</summary>
<since>Responsive 1.0.0</since> <since>Responsive 1.0.0</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-option group="responsive"> <dt-option library="Responsive">
<name>responsive.details.target</name> <name>responsive.details.target</name>
<summary>Column / selector for child row display control when using `column` details type</summary> <summary>Column / selector for child row display control when using `column` details type</summary>
<since>Responsive 1.0.0</since> <since>Responsive 1.0.0</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-option group="responsive"> <dt-option library="Responsive">
<name>responsive.details.type</name> <name>responsive.details.type</name>
<summary>Set the child row display control type</summary> <summary>Set the child row display control type</summary>
<since>Responsive 1.0.0</since> <since>Responsive 1.0.0</since>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-option group="responsive"> <dt-option library="Responsive">
<name>responsive.details</name> <name>responsive.details</name>
<summary>Enable and configure the child rows shown by Responsive for collapsed tables</summary> <summary>Enable and configure the child rows shown by Responsive for collapsed tables</summary>
<since>Responsive 1.0.0</since> <since>Responsive 1.0.0</since>

View File

@@ -1,12 +1,12 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-option group="responsive"> <dt-option library="Responsive">
<name>responsive</name> <name>responsive</name>
<summary>Enable and configure the Responsive extension for DataTables</summary> <summary>Enable and configure the Responsive extension for DataTables</summary>
<since>Responsive 1.0.0</since> <since>Responsive 1.0.0</since>
<type type="boolean"> <type type="boolean">
<description> <description>
As a boolean value this property will enable Responsive on the DataTable that is being created. `true` will enable Responsive, while `false` will not (even if the table has a class of `-string responsive` or `-string dt-responsive`. As a boolean value this property will enable Responsive on the DataTable that is being created. `true` will enable Responsive, while `false` will not (even if the table has a class of `-string responsive` or `-string dt-responsive`).
This is a short-cut option to enable Responsive with the default configuration options. Customisations can be made by giving this parameter as an object, see below. This is a short-cut option to enable Responsive with the default configuration options. Customisations can be made by giving this parameter as an object, see below.
</description> </description>

View File

@@ -13,7 +13,6 @@ $(document).ready(function() {
{ "data": "name" }, { "data": "name" },
{ "data": "position" }, { "data": "position" },
{ "data": "office" }, { "data": "office" },
{ "data": "age" },
{ "data": "start_date" }, { "data": "start_date" },
{ "data": "salary" }, { "data": "salary" },
{ "data": "extn" } { "data": "extn" }
@@ -47,7 +46,7 @@ Additionally, there are three special class names:
Please [refer to the Responsive manual](//datatables.net/extensions/responsive/) for further details of these options. Please [refer to the Responsive manual](//datatables.net/extensions/responsive/) for further details of these options.
This example shows the `salary` column visible on a desktop only - `office` and `age` require a tablet, while the `position` column requires a phone in landscape or larger. The `name` column is always visible and the `start date` is never visible. This example shows the `salary` column visible on a desktop only - `office` requires a tablet, while the `position` column requires a phone in landscape or larger. The `name` column is always visible and the `start date` is never visible.
This can be useful if you wish to change the format of the data shown on different devices, for example using a combination of `mobile` and `not-mobile` on two different columns would allow information to be formatted suitable for each device type. This can be useful if you wish to change the format of the data shown on different devices, for example using a combination of `mobile` and `not-mobile` on two different columns would allow information to be formatted suitable for each device type.
@@ -61,7 +60,6 @@ This can be useful if you wish to change the format of the data shown on differe
<th class="all">Name</th> <th class="all">Name</th>
<th class="min-phone-l">Position</th> <th class="min-phone-l">Position</th>
<th class="min-tablet">Office</th> <th class="min-tablet">Office</th>
<th class="min-tablet">Age</th>
<th class="never">Start date</th> <th class="never">Start date</th>
<th class="desktop">Salary</th> <th class="desktop">Salary</th>
<th class="none">Extn.</th> <th class="none">Extn.</th>
@@ -73,7 +71,6 @@ This can be useful if you wish to change the format of the data shown on differe
<th>Name</th> <th>Name</th>
<th>Position</th> <th>Position</th>
<th>Office</th> <th>Office</th>
<th>Age</th>
<th>Start date</th> <th>Start date</th>
<th>Salary</th> <th>Salary</th>
<th>Extn.</th> <th>Extn.</th>

View File

@@ -0,0 +1,53 @@
<?xml version="1.0" encoding="UTF-8" ?>
<dt-example table-type="html-complex-header" table-class="display nowrap" order="5">
<css lib="datatables responsive">
th {
position: relative;
min-height: 41px;
}
th span {
display: block;
position: absolute;
left: 0;
right: 0;
white-space: nowrap;
text-overflow: ellipsis;
overflow: hidden;
}
</css>
<js lib="jquery datatables responsive">
<![CDATA[
$(document).ready(function() {
// jQuery update a column title from the demo table to contain a long description
// You would not need to do this in your own code.
$('#example thead tr:eq(0) th:eq(2)').html("This is a really long column title!");
// Wrap the colspan'ing header cells with a span so they can be positioned
// absolutely - filling the available space, and no more.
$('#example thead th[colspan]').wrapInner( '<span/>' ).append( '&nbsp;' );
// Standard initialisation
$('#example').DataTable( {
responsive: true,
paging: false
} );
} );
]]>
</js>
<title lib="Responsive">Complex headers (rowspan / colspan)</title>
<info><![CDATA[
This example shows how Responsive can be used with _complex headers_ (i.e. headers that contain `colspan` attributes for one or more cells). As Responsive will removed columns one at a time the cell with the `colspan` attribute can end up forcing the width of a column, disrupting the flow. Rather than removing all columns under the `colspan` cell, we want to reduce the amount of text that is visible in that cell. This example shows how that can be achieved thought a little bit of jQuery and CSS.
We use jQuery to find the header cells which have a `colspan` attribute and wrap their contents in a `-tag span` tag. That `-tag span` is then set to `position: absolute;` using `text-overflow: ellipsis`. The result is that the text of the `colspan` cell will reduce automatically to fit the available area based on the contents of the column cells below it.
This functionality is not currently built into Responsive. It might be included in future.
]]></info>
</dt-example>

View File

@@ -13,7 +13,6 @@ $(document).ready(function() {
{ "data": "name", className: "all" }, { "data": "name", className: "all" },
{ "data": "position", className: "min-phone-l" }, { "data": "position", className: "min-phone-l" },
{ "data": "office", className: "min-tablet" }, { "data": "office", className: "min-tablet" },
{ "data": "age", className: "min-tablet" },
{ "data": "start_date", className: "never" }, { "data": "start_date", className: "never" },
{ "data": "salary", className: "desktop" }, { "data": "salary", className: "desktop" },
{ "data": "extn", className: "none" } { "data": "extn", className: "none" }
@@ -40,7 +39,6 @@ This example exactly matches the functionality of the [class control example](cl
<th>Name</th> <th>Name</th>
<th>Position</th> <th>Position</th>
<th>Office</th> <th>Office</th>
<th>Age</th>
<th>Start date</th> <th>Start date</th>
<th>Salary</th> <th>Salary</th>
<th>Extn.</th> <th>Extn.</th>
@@ -52,7 +50,6 @@ This example exactly matches the functionality of the [class control example](cl
<th>Name</th> <th>Name</th>
<th>Position</th> <th>Position</th>
<th>Office</th> <th>Office</th>
<th>Age</th>
<th>Start date</th> <th>Start date</th>
<th>Salary</th> <th>Salary</th>
<th>Extn.</th> <th>Extn.</th>

View File

@@ -20,7 +20,7 @@ $(document).ready(function() {
<info><![CDATA[ <info><![CDATA[
Responsive will automatically detect new DataTable instances being created on a page and initialise itself if it find the `r-init responsive` option or `responsive` class name on the table, as shown in the other examples. Responsive will automatically detect new DataTable instances being created on a page and initialise itself if it finds the `r-init responsive` option or `responsive` class name on the table, as shown in the other examples.
The third way of initialising Responsive is manually creating a new instance using the `$.fn.dataTable.Responsive` class, as shown in this example (the other two methods are provided using this constructor in a `dt-event init` event handler!). The third way of initialising Responsive is manually creating a new instance using the `$.fn.dataTable.Responsive` class, as shown in this example (the other two methods are provided using this constructor in a `dt-event init` event handler!).

View File

@@ -1,15 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-example table-type="html-wide" table-class="table table-striped table-hover dt-responsive" order="1"> <dt-example table-type="html-wide" table-class="display dt-responsive nowrap" order="1" framework="bootstrap">
<css lib="bootstrap datatables-bootstrap responsive"> <css lib="datatables responsive"/>
body { font-size: 140% } <js lib="jquery datatables responsive">
table.dataTable th,
table.dataTable td {
white-space: nowrap;
}
</css>
<js lib="jquery datatables responsive datatables-bootstrap">
<![CDATA[ <![CDATA[
$(document).ready(function() { $(document).ready(function() {
@@ -23,7 +16,7 @@ $(document).ready(function() {
<info><![CDATA[ <info><![CDATA[
This example shows DataTables and the Responsive extension being used with the [Bootstrap](http://getbootstrap.com) framework providing the styling. The [DataTables / Bootstrap integration files](//datatables.net/manual/styling/bootstrap) prove seamless integration for DataTables to be used in a Bootstrap page. This example shows DataTables and the Responsive extension being used with the [Bootstrap](http://getbootstrap.com) framework providing the styling. The [DataTables / Bootstrap integration](//datatables.net/manual/styling/bootstrap) prove seamless integration for DataTables to be used in a Bootstrap page.
Note that the `dt-responsive` class is used to indicate to the extension that it should be enabled on this page, as `responsive` [has special meaning in Bootstrap](http://getbootstrap.com/css/#tables-responsive). The `r-init responsive` option could also be used if required. Note that the `dt-responsive` class is used to indicate to the extension that it should be enabled on this page, as `responsive` [has special meaning in Bootstrap](http://getbootstrap.com/css/#tables-responsive). The `r-init responsive` option could also be used if required.

View File

@@ -8,9 +8,9 @@
<![CDATA[ <![CDATA[
$(document).ready(function() { $(document).ready(function() {
var table = $('#example').DataTable(); var table = $('#example').DataTable( {
responsive: true
new $.fn.dataTable.Responsive( table ); } );
} ); } );
]]> ]]>

View File

@@ -1,13 +1,8 @@
<?xml version="1.0" encoding="UTF-8" ?> <?xml version="1.0" encoding="UTF-8" ?>
<dt-example table-type="html-wide" table-class="tdisplay responsive" order="2"> <dt-example table-type="html-wide" table-class="display responsive nowrap" order="2" framework="foundation">
<css lib="foundation datatables-foundation responsive"> <css lib="datatables responsive"/>
table.dataTable th, <js lib="jquery datatables responsive">
table.dataTable td {
white-space: nowrap;
}
</css>
<js lib="jquery datatables responsive datatables-foundation">
<![CDATA[ <![CDATA[
$(document).ready(function() { $(document).ready(function() {
@@ -21,7 +16,7 @@ $(document).ready(function() {
<info><![CDATA[ <info><![CDATA[
This example shows DataTables and the Responsive extension being used with the [Foundation](http://foundation.zurb.com) framework providing the styling. The [DataTables / Foundation integration files](//datatables.net/manual/styling/foundation) prove seamless integration for DataTables to be used in a Foundation page. This example shows DataTables and the Responsive extension being used with the [Foundation](http://foundation.zurb.com) framework providing the styling. The [DataTables / Foundation integration](//datatables.net/manual/styling/foundation) prove seamless integration for DataTables to be used in a Foundation page.
]]></info> ]]></info>

Some files were not shown because too many files have changed in this diff Show More