0
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-01-17 09:52:29 +01:00

Merge branch 'master' into v4

Conflicts:
	.travis.yml
	Gruntfile.js
	bower.json
	dist/css/bootstrap.css
	dist/css/bootstrap.css.map
	dist/css/bootstrap.min.css
	dist/js/bootstrap.js
	dist/js/bootstrap.min.js
	docs/_data/glyphicons.yml
	docs/_includes/components/breadcrumbs.html
	docs/_includes/components/button-dropdowns.html
	docs/_includes/components/button-groups.html
	docs/_includes/components/dropdowns.html
	docs/_includes/components/glyphicons.html
	docs/_includes/components/labels.html
	docs/_includes/components/list-group.html
	docs/_includes/components/media.html
	docs/_includes/components/navs.html
	docs/_includes/components/panels.html
	docs/_includes/components/progress-bars.html
	docs/_includes/components/thumbnails.html
	docs/_includes/components/wells.html
	docs/_includes/css/buttons.html
	docs/_includes/css/forms.html
	docs/_includes/css/helpers.html
	docs/_includes/css/images.html
	docs/_includes/css/less.html
	docs/_includes/customizer-variables.html
	docs/_includes/getting-started/accessibility.html
	docs/_includes/getting-started/browser-device-support.html
	docs/_includes/getting-started/community.html
	docs/_includes/getting-started/examples.html
	docs/_includes/getting-started/grunt.html
	docs/_includes/getting-started/license.html
	docs/_includes/getting-started/template.html
	docs/_includes/header.html
	docs/_includes/js/affix.html
	docs/_includes/js/alerts.html
	docs/_includes/js/carousel.html
	docs/_includes/js/collapse.html
	docs/_includes/js/dropdowns.html
	docs/_includes/js/modal.html
	docs/_includes/js/overview.html
	docs/_includes/js/popovers.html
	docs/_includes/js/scrollspy.html
	docs/_includes/js/tabs.html
	docs/_includes/js/tooltips.html
	docs/_includes/js/transitions.html
	docs/_includes/nav/javascript.html
	docs/_layouts/default.html
	docs/assets/css/docs.min.css
	docs/assets/css/src/docs.css
	docs/assets/js/customize.min.js
	docs/assets/js/docs.min.js
	docs/assets/js/raw-files.min.js
	docs/assets/js/vendor/FileSaver.js
	docs/assets/js/vendor/autoprefixer.js
	docs/assets/js/vendor/uglify.min.js
	docs/dist/css/bootstrap.css
	docs/dist/css/bootstrap.css.map
	docs/dist/css/bootstrap.min.css
	docs/dist/js/bootstrap.min.js
	docs/examples/blog/index.html
	docs/examples/carousel/index.html
	docs/examples/cover/index.html
	docs/examples/dashboard/index.html
	docs/examples/narrow-jumbotron/narrow-jumbotron.css
	docs/examples/navbar-fixed-top/index.html
	docs/examples/navbar-static-top/index.html
	docs/examples/non-responsive/index.html
	docs/examples/non-responsive/non-responsive.css
	docs/examples/theme/index.html
	grunt/configBridge.json
	js/affix.js
	js/carousel.js
	js/collapse.js
	js/dropdown.js
	js/modal.js
	js/popover.js
	js/scrollspy.js
	js/tab.js
	js/tests/unit/affix.js
	js/tests/unit/button.js
	js/tests/unit/carousel.js
	js/tests/unit/modal.js
	js/tests/unit/tooltip.js
	js/tooltip.js
	less/badges.less
	less/glyphicons.less
	less/type.less
	less/variables.less
	package.json
	scss/_dropdown.scss
	scss/_forms.scss
	test-infra/npm-shrinkwrap.json
This commit is contained in:
Mark Otto 2015-03-01 13:44:10 -08:00
commit c16fee5efd
62 changed files with 1737 additions and 1510 deletions

6
.gitattributes vendored
View File

@ -7,3 +7,9 @@
*.md text eol=lf
*.svg text eol=lf
*.yml text eol=lf
# Don't diff or textually merge source maps
*.map binary
bootstrap-theme.css linguist-vendored=false
bootstrap.css linguist-vendored=false
bootstrap.js linguist-vendored=false

View File

@ -2,12 +2,12 @@ language: node_js
git:
depth: 10
node_js:
- "0.10"
- "0.12"
before_install:
- travis_retry sudo pip install -r test-infra/requirements.txt
- rvm use 1.9.3 --fuzzy
- export GEMDIR=$(rvm gemdir)
- if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $GEMDIR) jekyll=$JEKYLL_VERSION rouge=$ROUGE_VERSION scss-lint=$SCSS_LINT_VERSION" > pseudo_Gemfile.lock; fi
- if [ "$TWBS_TEST" = validate-html ]; then echo "ruby=$(basename $GEMDIR) jekyll=$JEKYLL_VERSION rouge=$ROUGE_VERSION" > pseudo_Gemfile.lock; fi
- "export TRAVIS_COMMIT_MSG=\"$(git log --format=%B --no-merges -n 1)\""
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip validator\]'; export TWBS_DO_VALIDATOR=$?; true
- echo "$TRAVIS_COMMIT_MSG" | grep '\[skip sauce\]'; export TWBS_DO_SAUCE=$?; true
@ -15,12 +15,14 @@ before_install:
install:
- npm install -g grunt-cli
- ./test-infra/s3_cache.py download npm-modules
- if [ -n "$BUNDLE_GEMFILE" ]; then ./test-infra/s3_cache.py download rubygems; fi
- if [ "$TWBS_TEST" = validate-html ] && [ $TWBS_DO_VALIDATOR -ne 0 ]; then ./test-infra/s3_cache.py download rubygems; fi
after_script:
- if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ "$TWBS_TEST" = core ]; then ./test-infra/s3_cache.py upload npm-modules; fi
- if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ -n "$BUNDLE_GEMFILE" ]; then ./test-infra/s3_cache.py upload rubygems; fi
- if [ "$TRAVIS_REPO_SLUG" != twbs-savage/bootstrap ] && [ "$TWBS_TEST" = validate-html ] && [ $TWBS_DO_VALIDATOR -ne 0 ]; then ./test-infra/s3_cache.py upload rubygems; fi
env:
global:
- JEKYLL_VERSION="2.5.3"
- ROUGE_VERSION="1.8.0"
- SAUCE_USERNAME="bootstrap"
- secure: "pJkBwnuae9dKU5tEcCqccfS1QQw7/meEcfz63fM7ba7QJNjoA6BaXj08L5Z3Vb5vBmVPwBawxo5Hp0jC0r/Z/O0hGnAmz/Cz09L+cy7dSAZ9x4hvZePSja/UAusaB5ogMoO8l2b773MzgQeSmrLbExr9BWLeqEfjC2hFgdgHLaQ="
- secure: "gqjqISbxBJK6byFbsmr1AyP1qoWH+rap06A2gI7v72+Tn2PU2nYkIMUkCvhZw6K889jv+LhQ/ybcBxDOXHpNCExCnSgB4dcnmYp+9oeNZb37jSP0rQ+Ib4OTLjzc3/FawE/fUq5kukZTC7porzc/k0qJNLAZRx3YLALmK1GIdUY="
@ -32,9 +34,8 @@ env:
- secure: "PabpUdG2dE40hHUkMCdxk1e9Ak3BOo0h7Y5/uekosLKOz5N60Xmn/ooyrSkvicLthXO4cfONFhO3/xSVRKQOxlUw4on5i0VuNK+QSqxJk0IDaRSZnTCcC8J7083K0YL+FvMdGQwcYwMY9LiwS8aS014IRkSQjsa+mjo3owP+dOU="
- secure: "G4/f4PVyVi9o6UbZMqw9YFmDu7cHqe9iymiXYd1RcnPXwhWAePX12m0PWMhUj5itJ180PTEddVip8PNOgBdqyrDxEPKkcgAW2EElVAPIKJXVfvDW64UjQ0H7NS7XvF7iLQUJp/XfmR7NJ7tT393AQdh8SGmuQpJhgYbwIWbES/k="
matrix:
- TWBS_TEST=core TWBS_SASS=libsass BUNDLE_GEMFILE=test-infra/gemfiles/core.gemfile
- TWBS_TEST=core TWBS_SASS=sass BUNDLE_GEMFILE=test-infra/gemfiles/core.gemfile
- TWBS_TEST=validate-html BUNDLE_GEMFILE=Gemfile
- TWBS_TEST=core
- TWBS_TEST=validate-html
- TWBS_TEST=sauce-js-unit
matrix:
fast_finish: true

View File

@ -33,7 +33,7 @@ restrictions:
Our bug tracker utilizes several labels to help organize and identify issues. Here's what they represent and how we use them:
- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in a issue opened on that browser's own bug tracker.
- `browser bug` - Issues that are reported to us, but actually are the result of a browser-specific bug. These are diagnosed with reduced test cases and result in an issue opened on that browser's own bug tracker.
- `confirmed` - Issues that have been confirmed with a reduced test case and identify a bug in Bootstrap.
- `css` - Issues stemming from our compiled CSS or source Less files.
- `docs` - Issues for improving or updating our documentation.

View File

@ -294,8 +294,12 @@ module.exports = function (grunt) {
copy: {
docs: {
src: 'dist/*/*',
dest: 'docs/'
expand: true,
cwd: 'dist/',
src: [
'**/*'
],
dest: 'docs/dist/'
}
},
@ -371,7 +375,7 @@ module.exports = function (grunt) {
concurrency: 10,
maxRetries: 3,
maxPollRetries: 4,
urls: ['http://127.0.0.1:3000/js/tests/index.html'],
urls: ['http://127.0.0.1:3000/js/tests/index.html?hidepassed'],
browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
}
}

View File

@ -28,7 +28,8 @@ Four quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.2.zip).
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
- Install with [Bower](http://bower.io): `bower install bootstrap`.
- Install with [npm](https://www.npmjs.org): `npm install bootstrap`.
- Install with [npm](https://www.npmjs.com): `npm install bootstrap`.
- Install with [Meteor](https://www.meteor.com/): `meteor add twbs:bootstrap`.
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
@ -92,10 +93,11 @@ Editor preferences are available in the [editor config](https://github.com/twbs/
Keep track of development and community news.
- Follow [@twbootstrap on Twitter](https://twitter.com/twbootstrap).
- 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/twbs-bootstrap) or similar delivery mechanisms for maximum discoverability.

View File

@ -78,6 +78,16 @@
origin: >
Offshoot of Bootstrap#8350 & Chromium#337668
-
browser: >
Chrome (OS X)
summary: >
Caps Lock indicator not shown in `<input type="password">` with `display: block`
upstream_bug: >
Chromium#460200
origin: >
Bootstrap#15832
-
browser: >
Chrome
@ -170,6 +180,16 @@
origin: >
Bootstrap#15205
-
browser: >
Safari (OS X)
summary: >
Caps Lock indicator not shown in `<input type="password">` with `display: block`
upstream_bug: >
WebKit#141804, Safari#19892433
origin: >
Bootstrap#15832
-
browser: >
Safari (iOS)

View File

@ -11,7 +11,7 @@
- name: French
code: fr
description: Bootstrap en Français
url: http://www.oneskyapp.com/docs/bootstrap/fr
url: http://www.oneskyapp.com/fr/docs/bootstrap/getting-started/
- name: German
code: de
@ -31,12 +31,12 @@
- name: Russian
code: ru
description: Bootstrap по-русски
url: http://www.oneskyapp.com/docs/bootstrap/ru
url: http://www.oneskyapp.com/ru/docs/bootstrap/
- name: Spanish
code: es
description: Bootstrap en Español
url: http://www.oneskyapp.com/docs/bootstrap/es
url: http://www.oneskyapp.com/es/docs/bootstrap/
- name: Ukrainian
code: uk

View File

@ -6,7 +6,7 @@
<p>Designed and built with all the love in the world by <a href="https://twitter.com/mdo" target="_blank">@mdo</a> and <a href="https://twitter.com/fat" target="_blank">@fat</a>.</p>
<p>Maintained by the <a href="https://github.com/orgs/twbs/people">core team</a> with the help of <a href="https://github.com/twbs/bootstrap/graphs/contributors">our contributors</a>.</p>
<p>Code licensed under <a href="https://github.com/twbs/bootstrap/blob/master/LICENSE" target="_blank">MIT</a>, documentation under <a href="http://creativecommons.org/licenses/by/3.0/">CC BY 3.0</a>.</p>
<p>Code licensed under <a rel="license" href="https://github.com/twbs/bootstrap/blob/master/LICENSE" target="_blank">MIT</a>, documentation under <a rel="license" href="https://creativecommons.org/licenses/by/3.0/" target="_blank">CC BY 3.0</a>.</p>
<ul class="bs-docs-footer-links text-muted">
<li>Currently v{{ site.current_version }}</li>
<li>&middot;</li>

View File

@ -7,10 +7,10 @@
<iframe class="github-btn" src="http://ghbtns.com/github-btn.html?user=twbs&amp;repo=bootstrap&amp;type=fork&amp;count=true" width="102" height="20" title="Fork on GitHub"></iframe>
</li>
<li class="follow-btn">
<a href="https://twitter.com/twbootstrap" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @twbootstrap</a>
<a href="https://twitter.com/getbootstrap" class="twitter-follow-button" data-link-color="#0069D6" data-show-count="true">Follow @getbootstrap</a>
</li>
<li class="tweet-btn">
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://getbootstrap.com/" data-count="horizontal" data-via="twbootstrap" data-related="mdo:Creator of Bootstrap">Tweet</a>
<a href="https://twitter.com/share" class="twitter-share-button" data-url="http://getbootstrap.com/" data-count="horizontal" data-via="getbootstrap" data-related="mdo:Creator of Bootstrap">Tweet</a>
</li>
</ul>
</div>

View File

@ -7,7 +7,7 @@ Bootstrap is released under the MIT license and is copyright {{ site.time | date
#### It requires you to:
* Include the license and copyright notice in your works
* Keep the license and copyright notice included in Bootstrap's CSS and JavaScript files when you use them in your works
#### It permits you to:

View File

@ -0,0 +1,60 @@
/**
* Store the link icon as a base64 embedded icon font.
*/
@font-face {
font-family: 'anchorjs-link';
src: url(data:application/x-font-ttf;charset=utf-8;base64,AAEAAAALAIAAAwAwT1MvMg6v8yoAAAC8AAAAYGNtYXDL8RqdAAABHAAAADxnYXNwAAAAEAAAAVgAAAAIZ2x5Zkm2oNUAAAFgAAABWGhlYWQAHd4cAAACuAAAADZoaGVhB3sECwAAAvAAAAAkaG10eAYAAEcAAAMUAAAADGxvY2EACgCsAAADIAAAAAhtYXhwAAYAcAAAAygAAAAgbmFtZUQXtNYAAANIAAABOXBvc3QAAwAAAAAEhAAAACAAAwQAAZAABQAAApkCzAAAAI8CmQLMAAAB6wAzAQkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABAACDmAAPA/8D/wAPAAEAAAAAAAAAAAAAAAAAAAAAgAAAAAAACAAAAAwAAABQAAwABAAAAFAAEACgAAAAGAAQAAQACACDmAP//AAAAIOYA////4RoCAAEAAAAAAAAAAQAB//8ADwABAAAAAAAAAAAAAgAANzkBAAAAAAIARwAHA7kDeQA2AG0AAAEnLgEiBg8BDgEUFh8BHgMXNy4DLwEuATQ2PwE+ATIWHwEeARQGDwEeAxU3PgE0JicBLgMnBx4DHwEeARQGDwEOASImLwEuATQ2PwEuAzUHDgEUFh8BHgEyNj8BPgE0Ji8BA7kEI1ldWiPaIyQkIwQDBgYGBFAEBwYHAwQTExMT2xMwMjETBBMTExNjBwkGA5gkIyMk/r4DBgYGBFAEBwYHAwQTExMT2xMwMjETBBMTExNjBwkGA5gkIyMkBCNZXVoj2iMkJCMEA3UEJCMjJNojWV1aIwQDBgUFA1ACBQUFAwQUMDIxE9oTExMTBBMxMjATYxAhISIRmSNaXVkj/sYDBgUFA1ACBQUFAwQUMDIxE9oTExMTBBMxMjATYxAhISIRmSNaXVkjBCQjIyTaI1ldWiMEAAEAAAABAABR/4xQXw889QALBAAAAAAAzqNM0wAAAADOo0zTAAAAAAO5A3kAAAAIAAIAAAAAAAAAAQAAA8D/wAAABAAAAABHA7kAAQAAAAAAAAAAAAAAAAAAAAMAAAAAAgAAAAQAAEcAAAAAAAoArAABAAAAAwBuAAIAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAADgCuAAEAAAAAAAEADgAAAAEAAAAAAAIADgBHAAEAAAAAAAMADgAkAAEAAAAAAAQADgBVAAEAAAAAAAUAFgAOAAEAAAAAAAYABwAyAAEAAAAAAAoAKABjAAMAAQQJAAEADgAAAAMAAQQJAAIADgBHAAMAAQQJAAMADgAkAAMAAQQJAAQADgBVAAMAAQQJAAUAFgAOAAMAAQQJAAYADgA5AAMAAQQJAAoAKABjAGkAYwBvAG0AbwBvAG4AVgBlAHIAcwBpAG8AbgAgADAALgAwAGkAYwBvAG0AbwBvAG5pY29tb29uAGkAYwBvAG0AbwBvAG4AUgBlAGcAdQBsAGEAcgBpAGMAbwBtAG8AbwBuAEcAZQBuAGUAcgBhAHQAZQBkACAAYgB5ACAASQBjAG8ATQBvAG8AbgAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA) format('truetype'),
url(data:application/font-woff;charset=utf-8;base64,d09GRgABAAAAAATwAAsAAAAABKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABPUy8yAAABCAAAAGAAAABgDq/zKmNtYXAAAAFoAAAAPAAAADzL8RqdZ2FzcAAAAaQAAAAIAAAACAAAABBnbHlmAAABrAAAAVgAAAFYSbag1WhlYWQAAAMEAAAANgAAADYAHd4caGhlYQAAAzwAAAAkAAAAJAd7BAtobXR4AAADYAAAAAwAAAAMBgAAR2xvY2EAAANsAAAACAAAAAgACgCsbWF4cAAAA3QAAAAgAAAAIAAGAHBuYW1lAAADlAAAATkAAAE5RBe01nBvc3QAAATQAAAAIAAAACAAAwAAAAMEAAGQAAUAAAKZAswAAACPApkCzAAAAesAMwEJAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAg5gADwP/A/8ADwABAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAgAAAAMAAAAUAAMAAQAAABQABAAoAAAABgAEAAEAAgAg5gD//wAAACDmAP///+EaAgABAAAAAAAAAAEAAf//AA8AAQAAAAAAAAAAAAIAADc5AQAAAAACAEcABwO5A3kANgBtAAABJy4BIgYPAQ4BFBYfAR4DFzcuAy8BLgE0Nj8BPgEyFh8BHgEUBg8BHgMVNz4BNCYnAS4DJwceAx8BHgEUBg8BDgEiJi8BLgE0Nj8BLgM1Bw4BFBYfAR4BMjY/AT4BNCYvAQO5BCNZXVoj2iMkJCMEAwYGBgRQBAcGBwMEExMTE9sTMDIxEwQTExMTYwcJBgOYJCMjJP6+AwYGBgRQBAcGBwMEExMTE9sTMDIxEwQTExMTYwcJBgOYJCMjJAQjWV1aI9ojJCQjBAN1BCQjIyTaI1ldWiMEAwYFBQNQAgUFBQMEFDAyMRPaExMTEwQTMTIwE2MQISEiEZkjWl1ZI/7GAwYFBQNQAgUFBQMEFDAyMRPaExMTEwQTMTIwE2MQISEiEZkjWl1ZIwQkIyMk2iNZXVojBAABAAAAAQAAUf+MUF8PPPUACwQAAAAAAM6jTNMAAAAAzqNM0wAAAAADuQN5AAAACAACAAAAAAAAAAEAAAPA/8AAAAQAAAAARwO5AAEAAAAAAAAAAAAAAAAAAAADAAAAAAIAAAAEAABHAAAAAAAKAKwAAQAAAAMAbgACAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAA4ArgABAAAAAAABAA4AAAABAAAAAAACAA4ARwABAAAAAAADAA4AJAABAAAAAAAEAA4AVQABAAAAAAAFABYADgABAAAAAAAGAAcAMgABAAAAAAAKACgAYwADAAEECQABAA4AAAADAAEECQACAA4ARwADAAEECQADAA4AJAADAAEECQAEAA4AVQADAAEECQAFABYADgADAAEECQAGAA4AOQADAAEECQAKACgAYwBpAGMAbwBtAG8AbwBuAFYAZQByAHMAaQBvAG4AIAAwAC4AMABpAGMAbwBtAG8AbwBuaWNvbW9vbgBpAGMAbwBtAG8AbwBuAFIAZQBnAHUAbABhAHIAaQBjAG8AbQBvAG8AbgBHAGUAbgBlAHIAYQB0AGUAZAAgAGIAeQAgAEkAYwBvAE0AbwBvAG4AAAAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==) format('woff');
font-weight: normal;
font-style: normal;
}
.anchorjs-icon {
font-family: 'anchorjs-link';
speak: none;
font-style: normal;
font-weight: normal;
font-variant: normal;
text-transform: none;
line-height: 1;
/* Better Icon Rendering */
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/**
* Link placement and hover behavior.
*/
.anchorjs-link {
float: left;
width: 1em;
height: 1em;
margin-left: -1.2em;
opacity: 0;
color: inherit;
text-align: center;
}
@media (max-width: 480px) {
.anchorjs-link {
display: none;
}
}
*:hover > .anchorjs-link,
.anchorjs-link:focus {
opacity: .75;
transition: color .16s linear;
}
*:hover > .anchorjs-link:hover {
opacity: 1;
text-decoration: none;
}
.anchorjs-icon {
font-size: 60%;
vertical-align: .2em;
}
.anchorjs-icon:before {
content: "\e600";
}

View File

@ -9,7 +9,7 @@
* details, see http://creativecommons.org/licenses/by/3.0/.
*/
/* global ZeroClipboard */
/* global ZeroClipboard, addAnchors */
!function ($) {
'use strict';
@ -153,3 +153,8 @@
})
}(jQuery)
;(function () {
'use strict';
addAnchors('.bs-docs-container h1, .bs-docs-container h2, .bs-docs-container h3, .bs-docs-container h4, .bs-docs-container h5');
})();

48
docs/assets/js/vendor/anchor.js vendored Normal file
View File

@ -0,0 +1,48 @@
/*!
* AnchorJS - v0.1.0 - 2014-08-17
* https://github.com/bryanbraun/anchorjs
* Copyright (c) 2014 Bryan Braun; Licensed MIT
*/
function addAnchors(selector) {
'use strict';
// Sensible default selector, if none is provided.
if (!selector) {
selector = 'h1, h2, h3, h4, h5, h6';
} else if (typeof selector !== 'string') {
throw new Error('AnchorJS accepts only strings; you used a ' + typeof selector);
}
// Select any elements that match the provided selector.
var elements = document.querySelectorAll(selector);
// Loop through the selected elements.
for (var i = 0; i < elements.length; i++) {
var elementID;
if (elements[i].hasAttribute('id')) {
elementID = elements[i].getAttribute('id');
} else {
// We need to create an ID on our element. First, we find which text selection method is available to the browser.
var textMethod = document.body.textContent ? 'textContent' : 'innerText';
// Get the text inside our element
var roughText = elements[i][textMethod];
// Refine it so it makes a good ID. Makes all lowercase and hyphen separated.
// Ex. Hello World > hello-world
var tidyText = roughText.replace(/\s+/g, '-').toLowerCase();
// Assign it to our element.
// Currently the setAttribute element is only supported in IE9 and above.
elements[i].setAttribute('id', tidyText);
// Grab it for use in our anchor.
elementID = tidyText;
}
var anchor = '<a class="anchorjs-link" href="#' + elementID + '"><span class="anchorjs-icon"></span></a>';
elements[i].innerHTML += anchor;
}
}

View File

@ -11,6 +11,7 @@
// Import the syntax highlighting
@import "syntax";
// @import "anchor"; // TODO: move anchor from src to scss directory
// Local docs variables
$bs-purple: #563d7c;

View File

@ -94,14 +94,14 @@ Set an element to `display: block;` and center via `margin`. Available as a mixi
{% endexample %}
{% highlight scss %}
// Classes
// Class
.center-block {
display: block;
margin-left: auto;
margin-right: auto;
}
// Usage as mixins
// Usage as a mixin
.element {
@include center-block;
}
@ -126,7 +126,7 @@ Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes
}
}
// Usage as a Mixin
// Usage as a mixin
.element {
@include clearfix;
}
@ -151,12 +151,12 @@ The `.invisible` class can be used to toggle only the visibility of an element,
{% endhighlight %}
{% highlight scss %}
// Classes
// Class
.invisible {
visibility: hidden;
}
// Usage as mixin
// Usage as a mixin
.element {
.invisible();
}
@ -171,7 +171,7 @@ Hide an element to all devices **except screen readers** with `.sr-only`. Combin
{% endhighlight %}
{% highlight scss %}
// Usage as a Mixin
// Usage as a mixin
.skip-navigation {
@include sr-only;
@include sr-only-focusable;
@ -187,7 +187,7 @@ Utilize the `.text-hide` class or mixin to help replace an element's text conten
{% endhighlight %}
{% highlight scss %}
// Usage as a Mixin
// Usage as a mixin
.heading {
@include text-hide;
}

View File

@ -336,7 +336,7 @@ We remove the default `outline` styles on some form controls and apply a `box-sh
## Disabled states
Add the `disabled` boolean attribute on an `<input>`, `<select>`, or `<textarea>` to prevent user input and trigger a slightly different look.
Add the `disabled` boolean attribute on an input to prevent user interactions. Disabled inputs appear lighter and add a `not-allowed` cursor.
{% highlight html %}
<input class="form-control" id="disabledInput" type="text" placeholder="Disabled input here..." disabled>
@ -379,7 +379,7 @@ Add the `disabled` attribute to a `<fieldset>` to disable all the controls withi
## Readonly inputs
Add the `readonly` boolean attribute on an input to prevent user input and style the input as disabled.
Add the `readonly` boolean attribute on an input to prevent modification of the input's value. Read-only inputs appear lighter (just like disabled inputs), but retain the standard cursor.<
{% example html %}
<input class="form-control" type="text" placeholder="Readonly input here…" readonly>
@ -389,6 +389,12 @@ Add the `readonly` boolean attribute on an input to prevent user input and style
Bootstrap includes validation styles for error, warning, and success states on form controls. To use, add `.has-warning`, `.has-error`, or `.has-success` to the parent element. Any `.control-label`, `.form-control`, and `.help-block` within that element will receive the validation styles.
<div class="bs-callout bs-callout-warning" id="callout-form-validation-state-accessibility">
<h4>Conveying validation state to assistive technologies and colorblind users</h4>
<p>Using these validation styles to denote the state of a form control only provides a visual, color-based indication, which will not be conveyed to users of assistive technologies - such as screen readers - or to colorblind users.</p>
<p>Ensure that an alternative indication of state is also provided. For instance, you can include a hint about state in the form control's <code>&lt;label&gt;</code> text itself (as is the case in the following code example), include a <a href="../components/#glyphicons">Glyphicon</a> (with appropriate alternative text using the <code>.sr-only</code> class - see the <a href="../components/#glyphicons-examples">Glyphicon examples</a>), or by providing an additional <a href="#forms-help-text">help text</a> block. Specifically for assistive technologies, invalid form controls can also be assigned an <code>aria-invalid="true"</code> attribute.</p>
</div>
{% example html %}
<div class="form-group has-success">
<label class="control-label" for="inputSuccess1">Input with success</label>

View File

@ -37,3 +37,7 @@ Add classes to an `<img>` element to easily style images in any project.
<img src="..." alt="..." class="img-circle">
<img src="..." alt="..." class="img-thumbnail">
{% endhighlight %}
## Aligning images
To center images with `.img-responsive`, use `.center-block`. For all other images, use `.text-center`. [See the helper classes section](/css/helpers) for more details about `.center-block` usage.

View File

@ -306,10 +306,10 @@ if (typeof jQuery === 'undefined') {
this.$element = $(element)
this.$indicators = this.$element.find('.carousel-indicators')
this.options = options
this.paused =
this.sliding =
this.interval =
this.$active =
this.paused = null
this.sliding = null
this.interval = null
this.$active = null
this.$items = null
this.options.keyboard && this.$element.on('keydown.bs.carousel', $.proxy(this.keydown, this))
@ -811,7 +811,7 @@ if (typeof jQuery === 'undefined') {
return $this.trigger('click')
}
var desc = ' li:not(.divider):visible a'
var desc = ' li:not(.disabled):visible a'
var $items = $parent.find('[role="menu"]' + desc + ', [role="listbox"]' + desc)
if (!$items.length) return
@ -915,12 +915,13 @@ if (typeof jQuery === 'undefined') {
// ======================
var Modal = function (element, options) {
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$backdrop =
this.isShown = null
this.scrollbarWidth = 0
this.options = options
this.$body = $(document.body)
this.$element = $(element)
this.$backdrop = null
this.isShown = null
this.originalBodyPad = null
this.scrollbarWidth = 0
if (this.options.remote) {
this.$element
@ -1149,17 +1150,23 @@ if (typeof jQuery === 'undefined') {
}
Modal.prototype.checkScrollbar = function () {
this.bodyIsOverflowing = document.body.scrollHeight > document.documentElement.clientHeight
var fullWindowWidth = window.innerWidth
if (!fullWindowWidth) { // workaround for missing window.innerWidth in IE8
var documentElementRect = document.documentElement.getBoundingClientRect()
fullWindowWidth = documentElementRect.right - Math.abs(documentElementRect.left)
}
this.bodyIsOverflowing = document.body.clientWidth < fullWindowWidth
this.scrollbarWidth = this.measureScrollbar()
}
Modal.prototype.setScrollbar = function () {
var bodyPad = parseInt((this.$body.css('padding-right') || 0), 10)
this.originalBodyPad = document.body.style.paddingRight || ''
if (this.bodyIsOverflowing) this.$body.css('padding-right', bodyPad + this.scrollbarWidth)
}
Modal.prototype.resetScrollbar = function () {
this.$body.css('padding-right', '')
this.$body.css('padding-right', this.originalBodyPad)
}
Modal.prototype.measureScrollbar = function () { // thx walsh
@ -1241,11 +1248,11 @@ if (typeof jQuery === 'undefined') {
// ===============================
var Tooltip = function (element, options) {
this.type =
this.options =
this.enabled =
this.timeout =
this.hoverState =
this.type = null
this.options = null
this.enabled = null
this.timeout = null
this.hoverState = null
this.$element = null
this.init('tooltip', element, options)
@ -1278,6 +1285,10 @@ if (typeof jQuery === 'undefined') {
this.options = this.getOptions(options)
this.$viewport = this.options.viewport && $(this.options.viewport.selector || this.options.viewport)
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!');
}
var triggers = this.options.trigger.split(' ')
for (var i = triggers.length; i--;) {
@ -1498,10 +1509,10 @@ if (typeof jQuery === 'undefined') {
this.replaceArrow(arrowDelta, $tip[0][arrowOffsetPosition], isVertical)
}
Tooltip.prototype.replaceArrow = function (delta, dimension, isHorizontal) {
Tooltip.prototype.replaceArrow = function (delta, dimension, isVertical) {
this.arrow()
.css(isHorizontal ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
.css(isHorizontal ? 'top' : 'left', '')
.css(isVertical ? 'left' : 'top', 50 * (1 - delta / dimension) + '%')
.css(isVertical ? 'top' : 'left', '')
}
Tooltip.prototype.setContent = function () {
@ -1514,7 +1525,7 @@ if (typeof jQuery === 'undefined') {
Tooltip.prototype.hide = function (callback) {
var that = this
var $tip = this.tip()
var $tip = $(this.$tip)
var e = $.Event('hide.bs.' + this.type)
function complete() {
@ -1531,7 +1542,7 @@ if (typeof jQuery === 'undefined') {
$tip.removeClass('in')
$.support.transition && this.$tip.hasClass('fade') ?
$.support.transition && $tip.hasClass('fade') ?
$tip
.one('bsTransitionEnd', complete)
.emulateTransitionEnd(Tooltip.TRANSITION_DURATION) :
@ -1774,11 +1785,6 @@ if (typeof jQuery === 'undefined') {
return (this.$arrow = this.$arrow || this.tip().find('.popover-arrow'))
}
Popover.prototype.tip = function () {
if (!this.$tip) this.$tip = $(this.options.template)
return this.$tip
}
// POPOVER PLUGIN DEFINITION
// =========================
@ -1827,10 +1833,8 @@ if (typeof jQuery === 'undefined') {
// ==========================
function ScrollSpy(element, options) {
var process = $.proxy(this.process, this)
this.$body = $('body')
this.$scrollElement = $(element).is('body') ? $(window) : $(element)
this.$body = $(document.body)
this.$scrollElement = $(element).is(document.body) ? $(window) : $(element)
this.options = $.extend({}, ScrollSpy.DEFAULTS, options)
this.selector = (this.options.target || '') + ' .nav li > a'
this.offsets = []
@ -1838,7 +1842,7 @@ if (typeof jQuery === 'undefined') {
this.activeTarget = null
this.scrollHeight = 0
this.$scrollElement.on('scroll.bs.scrollspy', process)
this.$scrollElement.on('scroll.bs.scrollspy', $.proxy(this.process, this))
this.refresh()
this.process()
}
@ -1854,20 +1858,19 @@ if (typeof jQuery === 'undefined') {
}
ScrollSpy.prototype.refresh = function () {
var offsetMethod = 'offset'
var offsetBase = 0
var that = this
var offsetMethod = 'offset'
var offsetBase = 0
this.offsets = []
this.targets = []
this.scrollHeight = this.getScrollHeight()
if (!$.isWindow(this.$scrollElement[0])) {
offsetMethod = 'position'
offsetBase = this.$scrollElement.scrollTop()
}
this.offsets = []
this.targets = []
this.scrollHeight = this.getScrollHeight()
var self = this
this.$body
.find(this.selector)
.map(function () {
@ -1882,8 +1885,8 @@ if (typeof jQuery === 'undefined') {
})
.sort(function (a, b) { return a[0] - b[0] })
.each(function () {
self.offsets.push(this[0])
self.targets.push(this[1])
that.offsets.push(this[0])
that.targets.push(this[1])
})
}
@ -1923,8 +1926,8 @@ if (typeof jQuery === 'undefined') {
this.clear()
var selector = this.selector +
'[data-target="' + target + '"],' +
this.selector + '[href="' + target + '"]'
'[data-target="' + target + '"],' +
this.selector + '[href="' + target + '"]'
var active = $(selector)
.parents('li')
@ -2077,7 +2080,7 @@ if (typeof jQuery === 'undefined') {
element.removeClass('fade')
}
if (element.parent('.dropdown-menu')) {
if (element.parent('.dropdown-menu').length) {
element
.closest('li.dropdown')
.addClass('active')
@ -2164,8 +2167,8 @@ if (typeof jQuery === 'undefined') {
.on('click.bs.affix.data-api', $.proxy(this.checkPositionWithEventLoop, this))
this.$element = $(element)
this.affixed =
this.unpin =
this.affixed = null
this.unpin = null
this.pinnedOffset = null
this.checkPosition()

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
@ -164,6 +165,7 @@
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<script src="../../assets/js/docs.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
@ -50,8 +51,13 @@
<li data-target="#myCarousel" data-slide-to="2"></li>
</ol>
<div class="carousel-inner" role="listbox">
<<<<<<< HEAD
<div class="carousel-item active">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
=======
<div class="item active">
<img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
>>>>>>> master
<div class="container">
<div class="carousel-caption text-left">
<h1>Example headline.</h1>
@ -60,8 +66,13 @@
</div>
</div>
</div>
<<<<<<< HEAD
<div class="carousel-item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAGZmZgAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
=======
<div class="item">
<img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
>>>>>>> master
<div class="container">
<div class="carousel-caption">
<h1>Another example headline.</h1>
@ -70,8 +81,13 @@
</div>
</div>
</div>
<<<<<<< HEAD
<div class="carousel-item">
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAFVVVQAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
=======
<div class="item">
<img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
>>>>>>> master
<div class="container">
<div class="carousel-caption text-right">
<h1>One more for good measure.</h1>
@ -101,19 +117,19 @@
<!-- Three columns of text below the carousel -->
<div class="row">
<div class="col-lg-4">
<img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" style="width: 140px; height: 140px;">
<img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
<h2>Heading</h2>
<p>Donec sed odio dui. Etiam porta sem malesuada magna mollis euismod. Nullam id dolor id nibh ultricies vehicula ut id elit. Morbi leo risus, porta ac consectetur ac, vestibulum at eros. Praesent commodo cursus magna.</p>
<p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" style="width: 140px; height: 140px;">
<img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
<h2>Heading</h2>
<p>Duis mollis, est non commodo luctus, nisi erat porttitor ligula, eget lacinia odio sem nec elit. Cras mattis consectetur purus sit amet fermentum. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh.</p>
<p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
</div><!-- /.col-lg-4 -->
<div class="col-lg-4">
<img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" style="width: 140px; height: 140px;">
<img class="img-circle" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Generic placeholder image" width="140" height="140">
<h2>Heading</h2>
<p>Donec sed odio dui. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Vestibulum id ligula porta felis euismod semper. Fusce dapibus, tellus ac cursus commodo, tortor mauris condimentum nibh, ut fermentum massa justo sit amet risus.</p>
<p><a class="btn btn-secondary" href="#" role="button">View details &raquo;</a></p>
@ -131,20 +147,20 @@
<p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
</div>
<div class="col-md-5">
<img class="featurette-image img-responsive" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
<img class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
</div>
</div>
<hr class="featurette-divider">
<div class="row featurette">
<div class="col-md-5">
<img class="featurette-image img-responsive" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
</div>
<div class="col-md-7">
<div class="col-md-7 col-md-push-5">
<h2 class="featurette-heading">Oh yeah, it's that good. <span class="text-muted">See for yourself.</span></h2>
<p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
</div>
<div class="col-md-5 col-md-pull-7">
<img class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
</div>
</div>
<hr class="featurette-divider">
@ -155,7 +171,7 @@
<p class="lead">Donec ullamcorper nulla non metus auctor fringilla. Vestibulum id ligula porta felis euismod semper. Praesent commodo cursus magna, vel scelerisque nisl consectetur. Fusce dapibus, tellus ac cursus commodo.</p>
</div>
<div class="col-md-5">
<img class="featurette-image img-responsive" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
<img class="featurette-image img-responsive center-block" data-src="holder.js/500x500/auto" alt="Generic placeholder image">
</div>
</div>
@ -178,6 +194,9 @@
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<script src="../../assets/js/docs.min.js"></script>
<!-- Just to make our placeholder images work. Don't actually copy the next line! -->
<script src="../../assets/js/vendor/holder.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
@ -64,6 +65,7 @@
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<script src="../../assets/js/docs.min.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
@ -232,6 +233,9 @@
<!-- Placed at the end of the document so the pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="../../dist/js/bootstrap.min.js"></script>
<script src="../../assets/js/docs.min.js"></script>
<!-- Just to make our placeholder images work. Don't actually copy the next line! -->
<script src="../../assets/js/vendor/holder.js"></script>
<!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->
<script src="../../assets/js/ie10-viewport-bug-workaround.js"></script>
</body>
</html>

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
@ -24,6 +25,8 @@
<div class="container">
<!-- The justified navigation menu is meant for single line per list item.
Multiple lines will require custom code not provided by Bootstrap. -->
<div class="masthead">
<h3 class="text-muted">Project name</h3>
<nav>

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">
@ -23,7 +24,7 @@
<body>
<div class="container">
<div class="header">
<div class="header clearfix">
<nav>
<ul class="nav nav-pills pull-right">
<li class="nav-item active">

View File

@ -14,11 +14,11 @@ body {
/* Custom page header */
.header {
padding-bottom: 1rem;
border-bottom: .05rem solid #e5e5e5;
}
/* Make the masthead heading the same height as the navigation */
.header h3 {
padding-bottom: 1.5rem;
margin-top: 0;
margin-bottom: 0;
line-height: 3rem;

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="icon" href="../../favicon.ico">

View File

@ -4,6 +4,7 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
<meta name="description" content="">
<meta name="author" content="">
<link rel="shortcut icon" href="../../assets/ico/favicon.ico">

View File

@ -7,13 +7,20 @@ Bootstrap follows common web standards and—with minimal extra effort—can be
### Skip navigation
If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link [before the navigation](http://a11yproject.com/posts/skip-nav-links/). Using the `.sr-only` class will visually hide the skip link, and the `.sr-only-focusable` class will ensure that the link becomes visible once focused (for sighted keyboard users).
If your navigation contains many links and comes before the main content in the DOM, add a `Skip to main content` link before the navigation (for a simple explanation, see this [A11Y Project article on skip navigation links](http://a11yproject.com/posts/skip-nav-links/)). Using the `.sr-only` class will visually hide the skip link, and the <code>.sr-only-focusable</code> class will ensure that the link becomes visible once focused (for sighted keyboard users).
<div class="bs-callout bs-callout-danger" id="callout-skiplinks">
<p>Due to long-standing shortcomings/bugs in Chrome (see <a href="https://code.google.com/p/chromium/issues/detail?id=262171" title="Chromium bug tracker - Issue 262171: Focus should cycle from named anchor">issue 262171 in the Chromium bug tracker</a>) and Internet Explorer (see this article on <a href="http://accessibleculture.org/articles/2010/05/in-page-links/">in-page links and focus order</a>), you will need to make sure that the target of your skip link is at least programmatically focusable by adding <code>tabindex="-1"</code>.</p>
<p>In addition, you may want to explicitly suppress a visible focus indication on the target (particularly as Chrome currently also sets focus on elements with <code>tabindex="-1"</code> when they are clicked with the mouse) with <code>#content:focus { outline: none; }</code>.</p>
<p>Note that this bug will also affect any other in-page links your site may be using, rendering them useless for keyboard users. You may consider adding a similar stop-gap fix to all other named anchors / fragment identifiers that act as link targets.</p>
</div>
{% highlight html %}
<body>
<a href="#content" class="sr-only sr-only-focusable">Skip to main content</a>
<div class="container" id="content">
The main page content.
...
<div class="container" id="content" tabindex="-1">
<!-- The main page content -->
</div>
</body>
{% endhighlight %}

View File

@ -9,6 +9,7 @@ Stay up to date on the development of Bootstrap and reach out to the community w
- Chat with fellow Bootstrappers using IRC in the `irc.freenode.net` server, in the [##twitter-bootstrap channel](irc://irc.freenode.net/%23twitter-bootstrap).
- For help using Bootstrap, ask on [StackOverflow using the tag `twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3).
- Find inspiring examples of people building with Bootstrap at the [Bootstrap Expo](http://expo.getbootstrap.com).
- 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.
You can also follow [@twbootstrap on Twitter](https://twitter.com/twbootstrap) for the latest gossip and awesome music videos.
You can also follow [@getbootstrap on Twitter](https://twitter.com/getbootstrap) for the latest gossip and awesome music videos.

View File

@ -7,7 +7,7 @@ Bootstrap uses [Grunt](http://gruntjs.com) for its build system, with convenient
### Install Grunt
**To install Grunt, you must first [download and install node.js](http://nodejs.org/download/)** (which includes npm). npm stands for [node packaged modules](http://npmjs.org/) and is a way to manage development dependencies through node.js.
**To install Grunt, you must first [download and install node.js](http://nodejs.org/download/)** (which includes npm). npm stands for [node packaged modules](http://npmjs.com/) and is a way to manage development dependencies through node.js.
From the command line:
@ -17,7 +17,7 @@ From the command line:
When completed, you'll be able to run the various Grunt commands provided from the command line.
**Unfamiliar with npm? Don't have node installed?** That's a-okay. npm stands for [node packaged modules](http://npmjs.org/) and is a way to manage development dependencies through node.js. [Download and install node.js](http://nodejs.org/download/) before proceeding.
**Unfamiliar with npm? Don't have node installed?** That's a-okay. npm stands for [node packaged modules](http://npmjs.com/) and is a way to manage development dependencies through node.js. [Download and install node.js](http://nodejs.org/download/) before proceeding.
[install-ruby]: https://www.ruby-lang.org/en/documentation/installation/
[gembundler]: http://bundler.io/

View File

@ -14,6 +14,7 @@ Copy the HTML below to begin working with a minimal Bootstrap document.
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags. -->
<title>Bootstrap 101 Template</title>
<!-- Bootstrap -->
@ -23,7 +24,7 @@ Copy the HTML below to begin working with a minimal Bootstrap document.
<h1>Hello, world!</h1>
<!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<!-- Include all compiled plugins (below), or include individual files as needed -->
<script src="js/bootstrap.min.js"></script>
</body>

View File

@ -4,7 +4,7 @@ title: Bootstrap &middot; The world's most popular mobile-first and responsive f
---
<main class="bs-docs-masthead" id="content" role="main">
<main class="bs-docs-masthead" id="content" role="main" tabindex="-1">
<div class="container">
<span class="bs-docs-booticon outline">B</span>
<p class="lead">Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile first projects on the web.</p>

View File

@ -208,6 +208,7 @@ Bootstrap's carousel class exposes two events for hooking into carousel function
- `direction`: The direction in which the carousel is sliding (either `"left"` or `"right"`).
- `relatedTarget`: The DOM element that is being slid into place as the active item.
All carousel events are fired at the carousel itself (i.e. at the `<div class="carousel">`).
<div class="table-responsive">
<table class="table table-bordered table-striped">

View File

@ -248,15 +248,69 @@ For modals that simply appear rather than fade in to view, remove the `.fade` cl
</div>
{% endhighlight %}
## Using the grid system
To take advantage of the Bootstrap grid system within a modal, just nest `.container-fluid within the `.modal-body` and then use the normal grid system classes within this container.
{% example html %}
<div id="gridSystemModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title" id="gridModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 col-md-offset-4">.col-md-4 .col-md-offset-4</div>
</div>
<div class="row">
<div class="col-md-3 col-md-offset-3">.col-md-3 .col-md-offset-3</div>
<div class="col-md-2 col-md-offset-4">.col-md-2 .col-md-offset-4</div>
</div>
<div class="row">
<div class="col-md-6 col-md-offset-3">.col-md-6 .col-md-offset-3</div>
</div>
<div class="row">
<div class="col-sm-9">
Level 1: .col-sm-9
<div class="row">
<div class="col-xs-8 col-sm-6">
Level 2: .col-xs-8 .col-sm-6
</div>
<div class="col-xs-4 col-sm-6">
Level 2: .col-xs-4 .col-sm-6
</div>
</div>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>
</div>
</div>
</div>
</div>
<div class="bs-example bs-example-padded-bottom">
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#gridSystemModal">
Launch demo modal
</button>
</div>
{% endexample %}
## Varying modal content based on trigger button
Have a bunch of buttons that all trigger the same modal, just with slightly different contents? Use `event.relatedTarget` and [HTML `data-*` attributes](https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_data_attributes) (possibly [via jQuery](http://api.jquery.com/data/)) to vary the contents of the modal depending on which button was clicked. See the Modal Events docs for details on `relatedTarget`.
<div class="bs-example" style="padding-bottom: 24px;">
{% example html %}
<div class="bs-example">
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@twbootstrap">Open modal for @twbootstrap</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
@ -287,42 +341,7 @@ Have a bunch of buttons that all trigger the same modal, just with slightly diff
</div>
</div>
</div>
{% highlight html %}
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@twbootstrap">Open modal for @twbootstrap</button>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
<h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="control-label">Recipient:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="form-group">
<label for="message-text" class="control-label">Message:</label>
<textarea class="form-control" id="message-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div>
{% endhighlight %}
{% endexample %}
{% highlight js %}
$('#exampleModal').on('show.bs.modal', function (event) {
@ -336,6 +355,10 @@ $('#exampleModal').on('show.bs.modal', function (event) {
})
{% endhighlight %}
## Modals with dynamic heights
If the height of a modal changes while it is open, you should call `$('#myModal').data('bs.modal').handleUpdate()` to readjust the modal's position in case a scrollbar appears.
## Usage
The modal plugin toggles your hidden content on demand, via data attributes or JavaScript. It also adds `.modal-open` to the `<body>` to override default scrolling behavior and generates a `.modal-backdrop` to provide a click area for dismissing shown modals when clicking outside the modal.
@ -423,7 +446,7 @@ Manually hides a modal. **Returns to the caller before the modal has actually be
### Events
Bootstrap's modal class exposes a few events for hooking into modal functionality.
Bootstrap's modal class exposes a few events for hooking into modal functionality. All modal events are fired at the modal itself (i.e. at the `<div class="modal">`).
<div class="table-responsive">
<table class="table table-bordered table-striped">

View File

@ -289,7 +289,8 @@ Toggles an element's popover. **Returns to the caller before the popover has act
#### .popover('destroy')
Hides and destroys an element's popover.
Hides and destroys an element's popover. Popvoers that use delegation (which are created using [the `selector` option](#popovers-options)) cannot be individually destroyed on descendant trigger elements.
{% highlight js %}$('#element').popover('destroy'){% endhighlight %}

View File

@ -74,9 +74,9 @@ body {
{% endhighlight %}
{% highlight html %}
<body data-spy="scroll" data-target=".navbar-example">
<body data-spy="scroll" data-target="#navbar-example">
...
<div class="navbar-example">
<div id="navbar-example">
<ul class="nav nav-tabs" role="tablist">
...
</ul>
@ -90,7 +90,7 @@ body {
After adding `position: relative;` in your CSS, call the scrollspy via JavaScript:
{% highlight js %}
$('body').scrollspy({ target: '.navbar-example' })
$('body').scrollspy({ target: '#navbar-example' })
{% endhighlight %}
<div class="bs-callout bs-callout-danger">

View File

@ -259,7 +259,7 @@ Toggles an element's tooltip. **Returns to the caller before the tooltip has act
#### .tooltip('destroy')
Hides and destroys an element's tooltip.
Hides and destroys an element's tooltip. Tooltips that use delegation (which are created using [the `selector` option](#tooltips-options)) cannot be individually destroyed on descendant trigger elements.
{% highlight js %}$('#element').tooltip('destroy'){% endhighlight %}

View File

@ -1,10 +1,38 @@
{
"paths": {
"docsJs": [
"assets/js/vendor/holder.js",
"assets/js/vendor/jekyll-search.js",
"assets/js/vendor/ZeroClipboard.min.js",
"assets/js/vendor/anchor.js",
"assets/js/src/application.js"
]
},
"config": {
"autoprefixerBrowsers": [
"Android 2.3",
"Android >= 4",
"Chrome >= 20",
"Firefox >= 24",
"Explorer >= 8",
"iOS >= 6",
"Opera >= 12",
"Safari >= 6"
],
"jqueryCheck": [
"if (typeof jQuery === 'undefined') {",
" throw new Error('Bootstrap\\'s JavaScript requires jQuery')",
"}\n"
],
"jqueryVersionCheck": [
"+function ($) {",
" 'use strict';",
" var version = $.fn.jquery.split(' ')[0].split('.')",
" if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1)) {",
" throw new Error('Bootstrap\\'s JavaScript requires jQuery version 1.9.1 or higher')",
" }",
"}(jQuery);\n\n"
]
}
}

View File

@ -45,7 +45,7 @@
{
browserName: "iphone",
platform: "OS X 10.9",
platform: "OS X 10.10",
version: "8.1"
},

View File

@ -12,10 +12,6 @@
<link rel="stylesheet" href="vendor/qunit.css" media="screen">
<script src="vendor/qunit.js"></script>
<style>
#qunit-tests > li.pass {
display: none;/* Make it easier to see failing tests in Sauce screencasts */
}
#qunit-fixture {
top: 0;
left: 0;
@ -43,12 +39,12 @@
QUnit.testStart(function (testDetails) {
$(window).scrollTop(0)
QUnit.log = function (details) {
QUnit.log(function (details) {
if (!details.result) {
details.name = testDetails.name
log.push(details)
}
}
})
})
// Cleanup

View File

@ -1,35 +1,35 @@
$(function () {
'use strict';
module('alert plugin')
QUnit.module('alert plugin')
test('should be defined on jquery object', function () {
ok($(document.body).alert, 'alert method is defined')
QUnit.test('should be defined on jquery object', function (assert) {
assert.ok($(document.body).alert, 'alert method is defined')
})
module('alert', {
setup: function () {
QUnit.module('alert', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapAlert = $.fn.alert.noConflict()
},
teardown: function () {
afterEach: function () {
$.fn.alert = $.fn.bootstrapAlert
delete $.fn.bootstrapAlert
}
})
test('should provide no conflict', function () {
strictEqual($.fn.alert, undefined, 'alert was set back to undefined (org value)')
QUnit.test('should provide no conflict', function (assert) {
assert.strictEqual($.fn.alert, undefined, 'alert was set back to undefined (org value)')
})
test('should return jquery collection containing the element', function () {
QUnit.test('should return jquery collection containing the element', function (assert) {
var $el = $('<div/>')
var $alert = $el.bootstrapAlert()
ok($alert instanceof $, 'returns jquery collection')
strictEqual($alert[0], $el[0], 'collection contains element')
assert.ok($alert instanceof $, 'returns jquery collection')
assert.strictEqual($alert[0], $el[0], 'collection contains element')
})
test('should fade element out on clicking .close', function () {
QUnit.test('should fade element out on clicking .close', function (assert) {
var alertHTML = '<div class="alert alert-danger fade in">'
+ '<a class="close" href="#" data-dismiss="alert">×</a>'
+ '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>'
@ -38,33 +38,33 @@ $(function () {
$alert.find('.close').click()
equal($alert.hasClass('in'), false, 'remove .in class on .close click')
assert.strictEqual($alert.hasClass('in'), false, 'remove .in class on .close click')
})
test('should remove element when clicking .close', function () {
QUnit.test('should remove element when clicking .close', function (assert) {
var alertHTML = '<div class="alert alert-danger fade in">'
+ '<a class="close" href="#" data-dismiss="alert">×</a>'
+ '<p><strong>Holy guacamole!</strong> Best check yo self, you\'re not looking too good.</p>'
+ '</div>'
var $alert = $(alertHTML).appendTo('#qunit-fixture').bootstrapAlert()
notEqual($('#qunit-fixture').find('.alert').length, 0, 'element added to dom')
assert.notEqual($('#qunit-fixture').find('.alert').length, 0, 'element added to dom')
$alert.find('.close').click()
equal($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom')
assert.strictEqual($('#qunit-fixture').find('.alert').length, 0, 'element removed from dom')
})
test('should not fire closed when close is prevented', function (assert) {
QUnit.test('should not fire closed when close is prevented', function (assert) {
var done = assert.async()
$('<div class="alert"/>')
.on('close.bs.alert', function (e) {
e.preventDefault()
ok(true, 'close event fired')
assert.ok(true, 'close event fired')
done()
})
.on('closed.bs.alert', function () {
ok(false, 'closed event fired')
assert.ok(false, 'closed event fired')
})
.bootstrapAlert('close')
})

View File

@ -1,78 +1,78 @@
$(function () {
'use strict';
module('collapse plugin')
QUnit.module('collapse plugin')
test('should be defined on jquery object', function () {
ok($(document.body).collapse, 'collapse method is defined')
QUnit.test('should be defined on jquery object', function (assert) {
assert.ok($(document.body).collapse, 'collapse method is defined')
})
module('collapse', {
setup: function () {
QUnit.module('collapse', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapCollapse = $.fn.collapse.noConflict()
},
teardown: function () {
afterEach: function () {
$.fn.collapse = $.fn.bootstrapCollapse
delete $.fn.bootstrapCollapse
}
})
test('should provide no conflict', function () {
strictEqual($.fn.collapse, undefined, 'collapse was set back to undefined (org value)')
QUnit.test('should provide no conflict', function (assert) {
assert.strictEqual($.fn.collapse, undefined, 'collapse was set back to undefined (org value)')
})
test('should return jquery collection containing the element', function () {
QUnit.test('should return jquery collection containing the element', function (assert) {
var $el = $('<div/>')
var $collapse = $el.bootstrapCollapse()
ok($collapse instanceof $, 'returns jquery collection')
strictEqual($collapse[0], $el[0], 'collection contains element')
assert.ok($collapse instanceof $, 'returns jquery collection')
assert.strictEqual($collapse[0], $el[0], 'collection contains element')
})
test('should show a collapsed element', function () {
QUnit.test('should show a collapsed element', function (assert) {
var $el = $('<div class="collapse"/>').bootstrapCollapse('show')
ok($el.hasClass('in'), 'has class "in"')
ok(!/height/i.test($el.attr('style')), 'has height reset')
assert.ok($el.hasClass('in'), 'has class "in"')
assert.ok(!/height/i.test($el.attr('style')), 'has height reset')
})
test('should hide a collapsed element', function () {
QUnit.test('should hide a collapsed element', function (assert) {
var $el = $('<div class="collapse"/>').bootstrapCollapse('hide')
ok(!$el.hasClass('in'), 'does not have class "in"')
ok(/height/i.test($el.attr('style')), 'has height set')
assert.ok(!$el.hasClass('in'), 'does not have class "in"')
assert.ok(/height/i.test($el.attr('style')), 'has height set')
})
test('should not fire shown when show is prevented', function (assert) {
QUnit.test('should not fire shown when show is prevented', function (assert) {
var done = assert.async()
$('<div class="collapse"/>')
.on('show.bs.collapse', function (e) {
e.preventDefault()
ok(true, 'show event fired')
assert.ok(true, 'show event fired')
done()
})
.on('shown.bs.collapse', function () {
ok(false, 'shown event fired')
assert.ok(false, 'shown event fired')
})
.bootstrapCollapse('show')
})
test('should reset style to auto after finishing opening collapse', function (assert) {
QUnit.test('should reset style to auto after finishing opening collapse', function (assert) {
var done = assert.async()
$('<div class="collapse" style="height: 0px"/>')
.on('show.bs.collapse', function () {
equal(this.style.height, '0px', 'height is 0px')
assert.strictEqual(this.style.height, '0px', 'height is 0px')
})
.on('shown.bs.collapse', function () {
strictEqual(this.style.height, '', 'height is auto')
assert.strictEqual(this.style.height, '', 'height is auto')
done()
})
.bootstrapCollapse('show')
})
test('should remove "collapsed" class from target when collapse is shown', function (assert) {
QUnit.test('should remove "collapsed" class from target when collapse is shown', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
@ -80,14 +80,14 @@ $(function () {
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
ok(!$target.hasClass('collapsed'))
assert.ok(!$target.hasClass('collapsed'), 'target does not have collapsed class')
done()
})
$target.click()
})
test('should add "collapsed" class to target when collapse is hidden', function (assert) {
QUnit.test('should add "collapsed" class to target when collapse is hidden', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
@ -95,22 +95,56 @@ $(function () {
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hidden.bs.collapse', function () {
ok($target.hasClass('collapsed'))
assert.ok($target.hasClass('collapsed'), 'target has collapsed class')
done()
})
$target.click()
})
test('should not close a collapse when initialized with "show" if already shown', function (assert) {
QUnit.test('should remove "collapsed" class from all triggers targeting the collapse when the collapse is shown', function (assert) {
var done = assert.async()
expect(0)
var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
var $alt = $('<a data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
assert.ok(!$target.hasClass('collapsed'), 'target trigger does not have collapsed class')
assert.ok(!$alt.hasClass('collapsed'), 'alt trigger does not have collapsed class')
done()
})
$target.click()
})
QUnit.test('should add "collapsed" class to all triggers targeting the collapse when the collapse is hidden', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
var $alt = $('<a data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hidden.bs.collapse', function () {
assert.ok($target.hasClass('collapsed'), 'target has collapsed class')
assert.ok($alt.hasClass('collapsed'), 'alt trigger has collapsed class')
done()
})
$target.click()
})
QUnit.test('should not close a collapse when initialized with "show" if already shown', function (assert) {
var done = assert.async()
assert.expect(0)
var $test = $('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hide.bs.collapse', function () {
ok(false)
assert.ok(false)
})
$test.bootstrapCollapse('show')
@ -118,15 +152,15 @@ $(function () {
setTimeout(done, 0)
})
test('should open a collapse when initialized with "show" if not already shown', function (assert) {
QUnit.test('should open a collapse when initialized with "show" if not already shown', function (assert) {
var done = assert.async()
expect(1)
assert.expect(1)
var $test = $('<div id="test1" />')
.appendTo('#qunit-fixture')
.on('show.bs.collapse', function () {
ok(true)
assert.ok(true)
})
$test.bootstrapCollapse('show')
@ -134,7 +168,7 @@ $(function () {
setTimeout(done, 0)
})
test('should remove "collapsed" class from active accordion target', function (assert) {
QUnit.test('should remove "collapsed" class from active accordion target', function (assert) {
var done = assert.async()
var accordionHTML = '<div class="panel-group" id="accordion">'
@ -157,9 +191,9 @@ $(function () {
$('<div id="body3"/>')
.appendTo($groups.eq(2))
.on('shown.bs.collapse', function () {
ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
assert.ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
assert.ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
assert.ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
done()
})
@ -167,7 +201,7 @@ $(function () {
$target3.click()
})
test('should allow dots in data-parent', function (assert) {
QUnit.test('should allow dots in data-parent', function (assert) {
var done = assert.async()
var accordionHTML = '<div class="panel-group accordion">'
@ -190,9 +224,9 @@ $(function () {
$('<div id="body3"/>')
.appendTo($groups.eq(2))
.on('shown.bs.collapse', function () {
ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
assert.ok($target1.hasClass('collapsed'), 'inactive target 1 does have class "collapsed"')
assert.ok($target2.hasClass('collapsed'), 'inactive target 2 does have class "collapsed"')
assert.ok(!$target3.hasClass('collapsed'), 'active target 3 does not have class "collapsed"')
done()
})
@ -200,7 +234,7 @@ $(function () {
$target3.click()
})
test('should set aria-expanded="true" on target when collapse is shown', function (assert) {
QUnit.test('should set aria-expanded="true" on target when collapse is shown', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
@ -208,14 +242,14 @@ $(function () {
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
equal($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
done()
})
$target.click()
})
test('should set aria-expanded="false" on target when collapse is hidden', function (assert) {
QUnit.test('should set aria-expanded="false" on target when collapse is hidden', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
@ -223,14 +257,48 @@ $(function () {
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hidden.bs.collapse', function () {
equal($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
done()
})
$target.click()
})
test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function (assert) {
QUnit.test('should set aria-expanded="true" on all triggers targeting the collapse when the collapse is shown', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
var $alt = $('<a data-toggle="collapse" class="collapsed" href="#test1" aria-expanded="false"/>').appendTo('#qunit-fixture')
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
assert.strictEqual($target.attr('aria-expanded'), 'true', 'aria-expanded on target is "true"')
assert.strictEqual($alt.attr('aria-expanded'), 'true', 'aria-expanded on alt is "true"')
done()
})
$target.click()
})
QUnit.test('should set aria-expanded="false" on all triggers targeting the collapse when the collapse is hidden', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
var $alt = $('<a data-toggle="collapse" href="#test1" aria-expanded="true"/>').appendTo('#qunit-fixture')
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hidden.bs.collapse', function () {
assert.strictEqual($target.attr('aria-expanded'), 'false', 'aria-expanded on target is "false"')
assert.strictEqual($alt.attr('aria-expanded'), 'false', 'aria-expanded on alt is "false"')
done()
})
$target.click()
})
QUnit.test('should change aria-expanded from active accordion target to "false" and set the newly active one to "true"', function (assert) {
var done = assert.async()
var accordionHTML = '<div class="panel-group" id="accordion">'
@ -253,9 +321,9 @@ $(function () {
$('<div id="body3" aria-expanded="false"/>')
.appendTo($groups.eq(2))
.on('shown.bs.collapse', function () {
equal($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"')
equal($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"')
equal($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"')
assert.strictEqual($target1.attr('aria-expanded'), 'false', 'inactive target 1 has aria-expanded="false"')
assert.strictEqual($target2.attr('aria-expanded'), 'false', 'inactive target 2 has aria-expanded="false"')
assert.strictEqual($target3.attr('aria-expanded'), 'true', 'active target 3 has aria-expanded="false"')
done()
})
@ -263,7 +331,7 @@ $(function () {
$target3.click()
})
test('should not fire show event if show is prevented because other element is still transitioning', function (assert) {
QUnit.test('should not fire show event if show is prevented because other element is still transitioning', function (assert) {
var done = assert.async()
var accordionHTML = '<div id="accordion">'
@ -293,12 +361,12 @@ $(function () {
$target1.click()
setTimeout(function () {
ok(!showFired, 'show event didn\'t fire')
assert.ok(!showFired, 'show event did not fire')
done()
}, 1)
})
test('should add "collapsed" class to target when collapse is hidden via manual invocation', function (assert) {
QUnit.test('should add "collapsed" class to target when collapse is hidden via manual invocation', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" href="#test1"/>').appendTo('#qunit-fixture')
@ -306,13 +374,13 @@ $(function () {
$('<div id="test1" class="in"/>')
.appendTo('#qunit-fixture')
.on('hidden.bs.collapse', function () {
ok($target.hasClass('collapsed'))
assert.ok($target.hasClass('collapsed'))
done()
})
.bootstrapCollapse('hide')
})
test('should remove "collapsed" class from target when collapse is shown via manual invocation', function (assert) {
QUnit.test('should remove "collapsed" class from target when collapse is shown via manual invocation', function (assert) {
var done = assert.async()
var $target = $('<a data-toggle="collapse" class="collapsed" href="#test1"/>').appendTo('#qunit-fixture')
@ -320,7 +388,7 @@ $(function () {
$('<div id="test1"/>')
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
ok(!$target.hasClass('collapsed'))
assert.ok(!$target.hasClass('collapsed'))
done()
})
.bootstrapCollapse('show')

View File

@ -1,35 +1,35 @@
$(function () {
'use strict';
module('dropdowns plugin')
QUnit.module('dropdowns plugin')
test('should be defined on jquery object', function () {
ok($(document.body).dropdown, 'dropdown method is defined')
QUnit.test('should be defined on jquery object', function (assert) {
assert.ok($(document.body).dropdown, 'dropdown method is defined')
})
module('dropdowns', {
setup: function () {
QUnit.module('dropdowns', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapDropdown = $.fn.dropdown.noConflict()
},
teardown: function () {
afterEach: function () {
$.fn.dropdown = $.fn.bootstrapDropdown
delete $.fn.bootstrapDropdown
}
})
test('should provide no conflict', function () {
strictEqual($.fn.dropdown, undefined, 'dropdown was set back to undefined (org value)')
QUnit.test('should provide no conflict', function (assert) {
assert.strictEqual($.fn.dropdown, undefined, 'dropdown was set back to undefined (org value)')
})
test('should return jquery collection containing the element', function () {
QUnit.test('should return jquery collection containing the element', function (assert) {
var $el = $('<div/>')
var $dropdown = $el.bootstrapDropdown()
ok($dropdown instanceof $, 'returns jquery collection')
strictEqual($dropdown[0], $el[0], 'collection contains element')
assert.ok($dropdown instanceof $, 'returns jquery collection')
assert.strictEqual($dropdown[0], $el[0], 'collection contains element')
})
test('should not open dropdown if target is disabled via attribute', function () {
QUnit.test('should not open dropdown if target is disabled via attribute', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<button disabled href="#" class="btn dropdown-toggle" data-toggle="dropdown">Dropdown</button>'
@ -43,10 +43,59 @@ $(function () {
+ '</ul>'
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok(!$dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
assert.ok(!$dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
})
test('should not open dropdown if target is disabled via class', function () {
QUnit.test('should set aria-expanded="true" on target when dropdown menu is shown', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Dropdown</a>'
+ '<ul class="dropdown-menu">'
+ '<li><a href="#">Secondary link</a></li>'
+ '<li><a href="#">Something else here</a></li>'
+ '<li class="divider"/>'
+ '<li><a href="#">Another link</a></li>'
+ '</ul>'
+ '</li>'
+ '</ul>'
var $dropdown = $(dropdownHTML)
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
.click()
assert.strictEqual($dropdown.attr('aria-expanded'), 'true', 'aria-expanded is set to string "true" on click')
})
QUnit.test('should set aria-expanded="false" on target when dropdown menu is hidden', function (assert) {
var done = assert.async()
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" aria-expanded="false" data-toggle="dropdown">Dropdown</a>'
+ '<ul class="dropdown-menu">'
+ '<li><a href="#">Secondary link</a></li>'
+ '<li><a href="#">Something else here</a></li>'
+ '<li class="divider"/>'
+ '<li><a href="#">Another link</a></li>'
+ '</ul>'
+ '</li>'
+ '</ul>'
var $dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
$dropdown
.parent('.dropdown')
.on('hidden.bs.dropdown', function () {
assert.strictEqual($dropdown.attr('aria-expanded'), 'false', 'aria-expanded is set to string "false" on hide')
done()
})
$dropdown.click()
$(document.body).click()
})
QUnit.test('should not open dropdown if target is disabled via class', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<button href="#" class="btn dropdown-toggle disabled" data-toggle="dropdown">Dropdown</button>'
@ -60,10 +109,10 @@ $(function () {
+ '</ul>'
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok(!$dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
assert.ok(!$dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
})
test('should add class open to menu if clicked', function () {
QUnit.test('should add class open to menu if clicked', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
@ -77,10 +126,10 @@ $(function () {
+ '</ul>'
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
assert.ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
})
test('should test if element has a # before assuming it\'s a selector', function () {
QUnit.test('should test if element has a # before assuming it\'s a selector', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="/foo/" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
@ -94,11 +143,11 @@ $(function () {
+ '</ul>'
var $dropdown = $(dropdownHTML).find('[data-toggle="dropdown"]').bootstrapDropdown().click()
ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
assert.ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
})
test('should remove "open" class if body is clicked', function () {
QUnit.test('should remove "open" class if body is clicked', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
@ -116,12 +165,12 @@ $(function () {
.bootstrapDropdown()
.click()
ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
assert.ok($dropdown.parent('.dropdown').hasClass('open'), '"open" class added on click')
$(document.body).click()
ok(!$dropdown.parent('.dropdown').hasClass('open'), '"open" class removed')
assert.ok(!$dropdown.parent('.dropdown').hasClass('open'), '"open" class removed')
})
test('should remove "open" class if body is clicked, with multiple dropdowns', function () {
QUnit.test('should remove "open" class if body is clicked, with multiple dropdowns', function (assert) {
var dropdownHTML = '<ul class="nav">'
+ '<li><a href="#menu1">Menu 1</a></li>'
+ '<li class="dropdown" id="testmenu">'
@ -142,22 +191,22 @@ $(function () {
var $first = $dropdowns.first()
var $last = $dropdowns.last()
strictEqual($dropdowns.length, 2, 'two dropdowns')
assert.strictEqual($dropdowns.length, 2, 'two dropdowns')
$first.click()
strictEqual($first.parents('.open').length, 1, '"open" class added on click')
strictEqual($('#qunit-fixture .open').length, 1, 'only one dropdown is open')
assert.strictEqual($first.parents('.open').length, 1, '"open" class added on click')
assert.strictEqual($('#qunit-fixture .open').length, 1, 'only one dropdown is open')
$(document.body).click()
strictEqual($('#qunit-fixture .open').length, 0, '"open" class removed')
assert.strictEqual($('#qunit-fixture .open').length, 0, '"open" class removed')
$last.click()
strictEqual($last.parent('.open').length, 1, '"open" class added on click')
strictEqual($('#qunit-fixture .open').length, 1, 'only one dropdown is open')
assert.strictEqual($last.parent('.open').length, 1, '"open" class added on click')
assert.strictEqual($('#qunit-fixture .open').length, 1, 'only one dropdown is open')
$(document.body).click()
strictEqual($('#qunit-fixture .open').length, 0, '"open" class removed')
assert.strictEqual($('#qunit-fixture .open').length, 0, '"open" class removed')
})
test('should fire show and hide event', function (assert) {
QUnit.test('should fire show and hide event', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
@ -179,10 +228,10 @@ $(function () {
$dropdown
.parent('.dropdown')
.on('show.bs.dropdown', function () {
ok(true, 'show was fired')
assert.ok(true, 'show was fired')
})
.on('hide.bs.dropdown', function () {
ok(true, 'hide was fired')
assert.ok(true, 'hide was fired')
done()
})
@ -191,7 +240,7 @@ $(function () {
})
test('should fire shown and hidden event', function (assert) {
QUnit.test('should fire shown and hidden event', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
@ -213,10 +262,10 @@ $(function () {
$dropdown
.parent('.dropdown')
.on('shown.bs.dropdown', function () {
ok(true, 'shown was fired')
assert.ok(true, 'shown was fired')
})
.on('hidden.bs.dropdown', function () {
ok(true, 'hidden was fired')
assert.ok(true, 'hidden was fired')
done()
})
@ -224,7 +273,7 @@ $(function () {
$(document.body).click()
})
test('should ignore keyboard events within <input>s and <textarea>s', function (assert) {
QUnit.test('should ignore keyboard events within <input>s and <textarea>s', function (assert) {
var done = assert.async()
var dropdownHTML = '<ul class="tabs">'
@ -251,13 +300,13 @@ $(function () {
$dropdown
.parent('.dropdown')
.on('shown.bs.dropdown', function () {
ok(true, 'shown was fired')
assert.ok(true, 'shown was fired')
$input.focus().trigger($.Event('keydown', { which: 38 }))
ok($(document.activeElement).is($input), 'input still focused')
assert.ok($(document.activeElement).is($input), 'input still focused')
$textarea.focus().trigger($.Event('keydown', { which: 38 }))
ok($(document.activeElement).is($textarea), 'textarea still focused')
assert.ok($(document.activeElement).is($textarea), 'textarea still focused')
done()
})
@ -265,4 +314,25 @@ $(function () {
$dropdown.click()
})
QUnit.test('should skip disabled element when using keyboard navigation', function (assert) {
var dropdownHTML = '<ul class="tabs">'
+ '<li class="dropdown">'
+ '<a href="#" class="dropdown-toggle" data-toggle="dropdown">Dropdown</a>'
+ '<ul class="dropdown-menu" role="menu">'
+ '<li class="disabled"><a href="#">Disabled link</a></li>'
+ '<li><a href="#">Another link</a></li>'
+ '</ul>'
+ '</li>'
+ '</ul>'
var $dropdown = $(dropdownHTML)
.appendTo('#qunit-fixture')
.find('[data-toggle="dropdown"]')
.bootstrapDropdown()
.click()
$dropdown.trigger($.Event('keydown', { which: 40 }))
$dropdown.trigger($.Event('keydown', { which: 40 }))
assert.ok(!$(document.activeElement).parent().is('.disabled'), '.disabled is not focused')
})
})

View File

@ -31,8 +31,8 @@
if (!obj.result) {
// Dumping large objects can be very slow, and the dump isn't used for
// passing tests, so only dump if the test failed.
actual = QUnit.jsDump.parse(obj.actual)
expected = QUnit.jsDump.parse(obj.expected)
actual = QUnit.dump.parse(obj.actual)
expected = QUnit.dump.parse(obj.expected)
}
// Send it.
sendMessage('qunit.log', obj.result, actual, expected, obj.message, obj.source)

View File

@ -1,61 +1,61 @@
$(function () {
'use strict';
module('popover plugin')
QUnit.module('popover plugin')
test('should be defined on jquery object', function () {
ok($(document.body).popover, 'popover method is defined')
QUnit.test('should be defined on jquery object', function (assert) {
assert.ok($(document.body).popover, 'popover method is defined')
})
module('popover', {
setup: function () {
QUnit.module('popover', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapPopover = $.fn.popover.noConflict()
},
teardown: function () {
afterEach: function () {
$.fn.popover = $.fn.bootstrapPopover
delete $.fn.bootstrapPopover
}
})
test('should provide no conflict', function () {
strictEqual($.fn.popover, undefined, 'popover was set back to undefined (org value)')
QUnit.test('should provide no conflict', function (assert) {
assert.strictEqual($.fn.popover, undefined, 'popover was set back to undefined (org value)')
})
test('should return jquery collection containing the element', function () {
QUnit.test('should return jquery collection containing the element', function (assert) {
var $el = $('<div/>')
var $popover = $el.bootstrapPopover()
ok($popover instanceof $, 'returns jquery collection')
strictEqual($popover[0], $el[0], 'collection contains element')
assert.ok($popover instanceof $, 'returns jquery collection')
assert.strictEqual($popover[0], $el[0], 'collection contains element')
})
test('should render popover element', function () {
QUnit.test('should render popover element', function (assert) {
var $popover = $('<a href="#" title="mdo" data-content="https://twitter.com/mdo">@mdo</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover removed')
assert.strictEqual($('.popover').length, 0, 'popover removed')
})
test('should store popover instance in popover data object', function () {
QUnit.test('should store popover instance in popover data object', function (assert) {
var $popover = $('<a href="#" title="mdo" data-content="https://twitter.com/mdo">@mdo</a>').bootstrapPopover()
ok($popover.data('bs.popover'), 'popover instance exists')
assert.ok($popover.data('bs.popover'), 'popover instance exists')
})
test('should store popover trigger in popover instance data object', function () {
QUnit.test('should store popover trigger in popover instance data object', function (assert) {
var $popover = $('<a href="#" title="ResentedHook">@ResentedHook</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover()
$popover.bootstrapPopover('show')
ok($('.popover').data('bs.popover'), 'popover trigger stored in instance data')
assert.ok($('.popover').data('bs.popover'), 'popover trigger stored in instance data')
})
test('should get title and content from options', function () {
QUnit.test('should get title and content from options', function (assert) {
var $popover = $('<a href="#">@fat</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover({
@ -69,15 +69,15 @@ $(function () {
$popover.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
equal($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
equal($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
assert.strictEqual($('.popover .popover-title').text(), '@fat', 'title correctly inserted')
assert.strictEqual($('.popover .popover-content').text(), 'loves writing tests (╯°□°)╯︵ ┻━┻', 'content correctly inserted')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
})
test('should not duplicate HTML object', function () {
QUnit.test('should not duplicate HTML object', function (assert) {
var $div = $('<div/>').html('loves writing tests (╯°□°)╯︵ ┻━┻')
var $popover = $('<a href="#">@fat</a>')
@ -89,36 +89,36 @@ $(function () {
})
$popover.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
equal($('.popover .popover-content').html(), $div, 'content correctly inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
assert.equal($('.popover .popover-content').html(), $div, 'content correctly inserted')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
$popover.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
equal($('.popover .popover-content').html(), $div, 'content correctly inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
assert.equal($('.popover .popover-content').html(), $div, 'content correctly inserted')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
})
test('should get title and content from attributes', function () {
QUnit.test('should get title and content from attributes', function (assert) {
var $popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover()
.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
equal($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
equal($('.popover .popover-content').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
assert.strictEqual($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
assert.strictEqual($('.popover .popover-content').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
})
test('should get title and content from attributes ignoring options passed via js', function () {
QUnit.test('should get title and content from attributes ignoring options passed via js', function (assert) {
var $popover = $('<a href="#" title="@mdo" data-content="loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻" >@mdo</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover({
@ -127,15 +127,15 @@ $(function () {
})
.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
equal($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
equal($('.popover .popover-content').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
assert.strictEqual($('.popover .popover-title').text(), '@mdo', 'title correctly inserted')
assert.strictEqual($('.popover .popover-content').text(), 'loves data attributes (づ。◕‿‿◕。)づ ︵ ┻━┻', 'content correctly inserted')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
})
test('should respect custom template', function () {
QUnit.test('should respect custom template', function (assert) {
var $popover = $('<a href="#">@fat</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover({
@ -146,34 +146,34 @@ $(function () {
$popover.bootstrapPopover('show')
notEqual($('.popover').length, 0, 'popover was inserted')
ok($('.popover').hasClass('foobar'), 'custom class is present')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
assert.ok($('.popover').hasClass('foobar'), 'custom class is present')
$popover.bootstrapPopover('hide')
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
})
test('should destroy popover', function () {
QUnit.test('should destroy popover', function (assert) {
var $popover = $('<div/>')
.bootstrapPopover({
trigger: 'hover'
})
.on('click.foo', $.noop)
ok($popover.data('bs.popover'), 'popover has data')
ok($._data($popover[0], 'events').mouseover && $._data($popover[0], 'events').mouseout, 'popover has hover event')
equal($._data($popover[0], 'events').click[0].namespace, 'foo', 'popover has extra click.foo event')
assert.ok($popover.data('bs.popover'), 'popover has data')
assert.ok($._data($popover[0], 'events').mouseover && $._data($popover[0], 'events').mouseout, 'popover has hover event')
assert.strictEqual($._data($popover[0], 'events').click[0].namespace, 'foo', 'popover has extra click.foo event')
$popover.bootstrapPopover('show')
$popover.bootstrapPopover('destroy')
ok(!$popover.hasClass('in'), 'popover is hidden')
ok(!$popover.data('popover'), 'popover does not have data')
equal($._data($popover[0], 'events').click[0].namespace, 'foo', 'popover still has click.foo')
ok(!$._data($popover[0], 'events').mouseover && !$._data($popover[0], 'events').mouseout, 'popover does not have any events')
assert.ok(!$popover.hasClass('in'), 'popover is hidden')
assert.ok(!$popover.data('popover'), 'popover does not have data')
assert.strictEqual($._data($popover[0], 'events').click[0].namespace, 'foo', 'popover still has click.foo')
assert.ok(!$._data($popover[0], 'events').mouseover && !$._data($popover[0], 'events').mouseout, 'popover does not have any events')
})
test('should render popover element using delegated selector', function () {
QUnit.test('should render popover element using delegated selector', function (assert) {
var $div = $('<div><a href="#" title="mdo" data-content="http://twitter.com/mdo">@mdo</a></div>')
.appendTo('#qunit-fixture')
.bootstrapPopover({
@ -182,13 +182,13 @@ $(function () {
})
$div.find('a').click()
notEqual($('.popover').length, 0, 'popover was inserted')
assert.notEqual($('.popover').length, 0, 'popover was inserted')
$div.find('a').click()
equal($('.popover').length, 0, 'popover was removed')
assert.strictEqual($('.popover').length, 0, 'popover was removed')
})
test('should detach popover content rather than removing it so that event handlers are left intact', function (assert) {
QUnit.test('should detach popover content rather than removing it so that event handlers are left intact', function (assert) {
var $content = $('<div class="content-with-handler"><a class="btn btn-warning">Button with event handler</a></div>').appendTo('#qunit-fixture')
var handlerCalled = false
@ -216,7 +216,7 @@ $(function () {
.one('shown.bs.popover', function () {
$('.content-with-handler .btn').click()
$div.bootstrapPopover('destroy')
ok(handlerCalled, 'content\'s event handler still present')
assert.ok(handlerCalled, 'content\'s event handler still present')
done()
})
.bootstrapPopover('show')
@ -225,4 +225,11 @@ $(function () {
})
.bootstrapPopover('show')
})
QUnit.test('should throw an error when initializing popover on the document object without specifying a delegation selector', function (assert) {
assert.throws(function () {
$(document).bootstrapPopover({ title: 'What am I on?', content: 'My selector is missing' })
}, new Error('`selector` option must be specified when initializing popover on the window.document object!'))
})
})

View File

@ -1,35 +1,35 @@
$(function () {
'use strict';
module('scrollspy plugin')
QUnit.module('scrollspy plugin')
test('should be defined on jquery object', function () {
ok($(document.body).scrollspy, 'scrollspy method is defined')
QUnit.test('should be defined on jquery object', function (assert) {
assert.ok($(document.body).scrollspy, 'scrollspy method is defined')
})
module('scrollspy', {
setup: function () {
QUnit.module('scrollspy', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapScrollspy = $.fn.scrollspy.noConflict()
},
teardown: function () {
afterEach: function () {
$.fn.scrollspy = $.fn.bootstrapScrollspy
delete $.fn.bootstrapScrollspy
}
})
test('should provide no conflict', function () {
strictEqual($.fn.scrollspy, undefined, 'scrollspy was set back to undefined (org value)')
QUnit.test('should provide no conflict', function (assert) {
assert.strictEqual($.fn.scrollspy, undefined, 'scrollspy was set back to undefined (org value)')
})
test('should return jquery collection containing the element', function () {
QUnit.test('should return jquery collection containing the element', function (assert) {
var $el = $('<div/>')
var $scrollspy = $el.bootstrapScrollspy()
ok($scrollspy instanceof $, 'returns jquery collection')
strictEqual($scrollspy[0], $el[0], 'collection contains element')
assert.ok($scrollspy instanceof $, 'returns jquery collection')
assert.strictEqual($scrollspy[0], $el[0], 'collection contains element')
})
test('should only switch "active" class on current target', function (assert) {
QUnit.test('should only switch "active" class on current target', function (assert) {
var done = assert.async()
var sectionHTML = '<div id="root" class="active">'
@ -66,14 +66,14 @@ $(function () {
.bootstrapScrollspy({ target: '#ss-target' })
$scrollspy.on('scroll.bs.scrollspy', function () {
ok($section.hasClass('active'), '"active" class still on root node')
assert.ok($section.hasClass('active'), '"active" class still on root node')
done()
})
$scrollspy.scrollTop(350)
})
test('should correctly select middle navigation option when large offset is used', function (assert) {
QUnit.test('should correctly select middle navigation option when large offset is used', function (assert) {
var done = assert.async()
var sectionHTML = '<div id="header" style="height: 500px;"></div>'
@ -97,16 +97,16 @@ $(function () {
$scrollspy.bootstrapScrollspy({ target: '#navigation', offset: $scrollspy.position().top })
$scrollspy.on('scroll.bs.scrollspy', function () {
ok(!$section.find('#one-link').parent().hasClass('active'), '"active" class removed from first section')
ok($section.find('#two-link').parent().hasClass('active'), '"active" class on middle section')
ok(!$section.find('#three-link').parent().hasClass('active'), '"active" class not on last section')
assert.ok(!$section.find('#one-link').parent().hasClass('active'), '"active" class removed from first section')
assert.ok($section.find('#two-link').parent().hasClass('active'), '"active" class on middle section')
assert.ok(!$section.find('#three-link').parent().hasClass('active'), '"active" class not on last section')
done()
})
$scrollspy.scrollTop(550)
})
test('should add the active class to the correct element', function (assert) {
QUnit.test('should add the active class to the correct element', function (assert) {
var navbarHtml =
'<nav class="navbar">'
+ '<ul class="nav">'
@ -130,7 +130,7 @@ $(function () {
var scrollHeight = Math.ceil($content.scrollTop() + $(target).position().top)
var done = assert.async()
$content.one('scroll', function () {
ok($(element).hasClass('active'), 'target:' + target + ', element' + element)
assert.ok($(element).hasClass('active'), 'target:' + target + ', element' + element)
done()
deferred.resolve()
})
@ -142,7 +142,7 @@ $(function () {
.then(function () { return testElementIsActiveAfterScroll('#li-2', '#div-2') })
})
test('should clear selection if above the first section', function (assert) {
QUnit.test('should clear selection if above the first section', function (assert) {
var done = assert.async()
var sectionHTML = '<div id="header" style="height: 500px;"></div>'
@ -170,12 +170,12 @@ $(function () {
offset: $scrollspy.position().top
})
.one('scroll.bs.scrollspy', function () {
strictEqual($('.active').length, 1, '"active" class on only one element present')
strictEqual($('.active').has('#two-link').length, 1, '"active" class on second section')
assert.strictEqual($('.active').length, 1, '"active" class on only one element present')
assert.strictEqual($('.active').has('#two-link').length, 1, '"active" class on second section')
$scrollspy
.one('scroll.bs.scrollspy', function () {
strictEqual($('.active').length, 0, 'selection cleared')
assert.strictEqual($('.active').length, 0, 'selection cleared')
done()
})
.scrollTop(0)

View File

@ -1,35 +1,35 @@
$(function () {
'use strict';
module('tabs plugin')
QUnit.module('tabs plugin')
test('should be defined on jquery object', function () {
ok($(document.body).tab, 'tabs method is defined')
QUnit.test('should be defined on jquery object', function (assert) {
assert.ok($(document.body).tab, 'tabs method is defined')
})
module('tabs', {
setup: function () {
QUnit.module('tabs', {
beforeEach: function () {
// Run all tests in noConflict mode -- it's the only way to ensure that the plugin works in noConflict mode
$.fn.bootstrapTab = $.fn.tab.noConflict()
},
teardown: function () {
afterEach: function () {
$.fn.tab = $.fn.bootstrapTab
delete $.fn.bootstrapTab
}
})
test('should provide no conflict', function () {
strictEqual($.fn.tab, undefined, 'tab was set back to undefined (org value)')
QUnit.test('should provide no conflict', function (assert) {
assert.strictEqual($.fn.tab, undefined, 'tab was set back to undefined (org value)')
})
test('should return jquery collection containing the element', function () {
QUnit.test('should return jquery collection containing the element', function (assert) {
var $el = $('<div/>')
var $tab = $el.bootstrapTab()
ok($tab instanceof $, 'returns jquery collection')
strictEqual($tab[0], $el[0], 'collection contains element')
assert.ok($tab instanceof $, 'returns jquery collection')
assert.strictEqual($tab[0], $el[0], 'collection contains element')
})
test('should activate element by tab id', function () {
QUnit.test('should activate element by tab id', function (assert) {
var tabsHTML = '<ul class="tabs">'
+ '<li><a href="#home">Home</a></li>'
+ '<li><a href="#profile">Profile</a></li>'
@ -38,13 +38,13 @@ $(function () {
$('<ul><li id="home"/><li id="profile"/></ul>').appendTo('#qunit-fixture')
$(tabsHTML).find('li:last a').bootstrapTab('show')
equal($('#qunit-fixture').find('.active').attr('id'), 'profile')
assert.strictEqual($('#qunit-fixture').find('.active').attr('id'), 'profile')
$(tabsHTML).find('li:first a').bootstrapTab('show')
equal($('#qunit-fixture').find('.active').attr('id'), 'home')
assert.strictEqual($('#qunit-fixture').find('.active').attr('id'), 'home')
})
test('should activate element by tab id', function () {
QUnit.test('should activate element by tab id', function (assert) {
var pillsHTML = '<ul class="pills">'
+ '<li><a href="#home">Home</a></li>'
+ '<li><a href="#profile">Profile</a></li>'
@ -53,28 +53,28 @@ $(function () {
$('<ul><li id="home"/><li id="profile"/></ul>').appendTo('#qunit-fixture')
$(pillsHTML).find('li:last a').bootstrapTab('show')
equal($('#qunit-fixture').find('.active').attr('id'), 'profile')
assert.strictEqual($('#qunit-fixture').find('.active').attr('id'), 'profile')
$(pillsHTML).find('li:first a').bootstrapTab('show')
equal($('#qunit-fixture').find('.active').attr('id'), 'home')
assert.strictEqual($('#qunit-fixture').find('.active').attr('id'), 'home')
})
test('should not fire shown when show is prevented', function (assert) {
QUnit.test('should not fire shown when show is prevented', function (assert) {
var done = assert.async()
$('<div class="tab"/>')
.on('show.bs.tab', function (e) {
e.preventDefault()
ok(true, 'show event fired')
assert.ok(true, 'show event fired')
done()
})
.on('shown.bs.tab', function () {
ok(false, 'shown event fired')
assert.ok(false, 'shown event fired')
})
.bootstrapTab('show')
})
test('show and shown events should reference correct relatedTarget', function (assert) {
QUnit.test('show and shown events should reference correct relatedTarget', function (assert) {
var done = assert.async()
var dropHTML = '<ul class="drop">'
@ -92,16 +92,16 @@ $(function () {
.end()
.find('ul > li:last a')
.on('show.bs.tab', function (e) {
equal(e.relatedTarget.hash, '#1-1', 'references correct element as relatedTarget')
assert.strictEqual(e.relatedTarget.hash, '#1-1', 'references correct element as relatedTarget')
})
.on('shown.bs.tab', function (e) {
equal(e.relatedTarget.hash, '#1-1', 'references correct element as relatedTarget')
assert.strictEqual(e.relatedTarget.hash, '#1-1', 'references correct element as relatedTarget')
done()
})
.bootstrapTab('show')
})
test('should fire hide and hidden events', function (assert) {
QUnit.test('should fire hide and hidden events', function (assert) {
var done = assert.async()
var tabsHTML = '<ul class="tabs">'
@ -112,7 +112,7 @@ $(function () {
$(tabsHTML)
.find('li:first a')
.on('hide.bs.tab', function () {
ok(true, 'hide event fired')
assert.ok(true, 'hide event fired')
})
.bootstrapTab('show')
.end()
@ -122,7 +122,7 @@ $(function () {
$(tabsHTML)
.find('li:first a')
.on('hidden.bs.tab', function () {
ok(true, 'hidden event fired')
assert.ok(true, 'hidden event fired')
done()
})
.bootstrapTab('show')
@ -131,7 +131,7 @@ $(function () {
.bootstrapTab('show')
})
test('should not fire hidden when hide is prevented', function (assert) {
QUnit.test('should not fire hidden when hide is prevented', function (assert) {
var done = assert.async()
var tabsHTML = '<ul class="tabs">'
@ -143,11 +143,11 @@ $(function () {
.find('li:first a')
.on('hide.bs.tab', function (e) {
e.preventDefault()
ok(true, 'hide event fired')
assert.ok(true, 'hide event fired')
done()
})
.on('hidden.bs.tab', function () {
ok(false, 'hidden event fired')
assert.ok(false, 'hidden event fired')
})
.bootstrapTab('show')
.end()
@ -155,7 +155,7 @@ $(function () {
.bootstrapTab('show')
})
test('hide and hidden events contain correct relatedTarget', function (assert) {
QUnit.test('hide and hidden events contain correct relatedTarget', function (assert) {
var done = assert.async()
var tabsHTML = '<ul class="tabs">'
@ -166,10 +166,10 @@ $(function () {
$(tabsHTML)
.find('li:first a')
.on('hide.bs.tab', function (e) {
equal(e.relatedTarget.hash, '#profile', 'references correct element as relatedTarget')
assert.strictEqual(e.relatedTarget.hash, '#profile', 'references correct element as relatedTarget')
})
.on('hidden.bs.tab', function (e) {
equal(e.relatedTarget.hash, '#profile', 'references correct element as relatedTarget')
assert.strictEqual(e.relatedTarget.hash, '#profile', 'references correct element as relatedTarget')
done()
})
.bootstrapTab('show')
@ -178,7 +178,7 @@ $(function () {
.bootstrapTab('show')
})
test('selected tab should have aria-expanded', function () {
QUnit.test('selected tab should have aria-expanded', function (assert) {
var tabsHTML = '<ul class="nav nav-tabs">'
+ '<li class="active"><a href="#home" toggle="tab" aria-expanded="true">Home</a></li>'
+ '<li><a href="#profile" toggle="tab" aria-expanded="false">Profile</a></li>'
@ -186,20 +186,20 @@ $(function () {
var $tabs = $(tabsHTML).appendTo('#qunit-fixture')
$tabs.find('li:first a').bootstrapTab('show')
equal($tabs.find('.active a').attr('aria-expanded'), 'true', 'shown tab has aria-expanded = true')
equal($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'hidden tab has aria-expanded = false')
assert.strictEqual($tabs.find('.active a').attr('aria-expanded'), 'true', 'shown tab has aria-expanded = true')
assert.strictEqual($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'hidden tab has aria-expanded = false')
$tabs.find('li:last a').click()
equal($tabs.find('.active a').attr('aria-expanded'), 'true', 'after click, shown tab has aria-expanded = true')
equal($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'after click, hidden tab has aria-expanded = false')
assert.strictEqual($tabs.find('.active a').attr('aria-expanded'), 'true', 'after click, shown tab has aria-expanded = true')
assert.strictEqual($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'after click, hidden tab has aria-expanded = false')
$tabs.find('li:first a').bootstrapTab('show')
equal($tabs.find('.active a').attr('aria-expanded'), 'true', 'shown tab has aria-expanded = true')
equal($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'hidden tab has aria-expanded = false')
assert.strictEqual($tabs.find('.active a').attr('aria-expanded'), 'true', 'shown tab has aria-expanded = true')
assert.strictEqual($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'hidden tab has aria-expanded = false')
$tabs.find('li:first a').click()
equal($tabs.find('.active a').attr('aria-expanded'), 'true', 'after second show event, shown tab still has aria-expanded = true')
equal($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'after second show event, hidden tab has aria-expanded = false')
assert.strictEqual($tabs.find('.active a').attr('aria-expanded'), 'true', 'after second show event, shown tab still has aria-expanded = true')
assert.strictEqual($tabs.find('li:not(.active) a').attr('aria-expanded'), 'false', 'after second show event, hidden tab has aria-expanded = false')
})
})

View File

@ -1,12 +1,12 @@
/*!
* QUnit 1.17.0
* QUnit 1.17.1
* http://qunitjs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2015-01-19T11:58Z
* Date: 2015-01-20T19:39Z
*/
/** Font Family and Sizes */

View File

@ -1,12 +1,12 @@
/*!
* QUnit 1.17.0
* QUnit 1.17.1
* http://qunitjs.com/
*
* Copyright jQuery Foundation and other contributors
* Released under the MIT license
* http://jquery.org/license
*
* Date: 2015-01-19T11:58Z
* Date: 2015-01-20T19:39Z
*/
(function( window ) {
@ -2522,7 +2522,7 @@ function toolbarModuleFilter() {
moduleFilter = document.createElement( "span" ),
moduleFilterHtml = toolbarModuleFilterHtml();
if ( !moduleFilterHtml ) {
if ( !toolbar || !moduleFilterHtml ) {
return false;
}

22
package.js Normal file
View File

@ -0,0 +1,22 @@
// package metadata file for Meteor.js
Package.describe({
name: 'twbs:bootstrap', // http://atmospherejs.com/twbs/bootstrap
summary: 'The most popular front-end framework for developing responsive, mobile first projects on the web.',
version: '3.3.2',
git: 'https://github.com/twbs/bootstrap.git'
});
Package.onUse(function (api) {
api.versionsFrom('METEOR@1.0');
api.use('jquery', 'client');
api.addFiles([
'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',
'dist/css/bootstrap.css',
'dist/js/bootstrap.js',
], 'client');
});

View File

@ -38,8 +38,8 @@
"grunt-banner": "~0.3.1",
"grunt-closure-tools": "^0.9.7",
"grunt-contrib-clean": "~0.6.0",
"grunt-contrib-compress": "^0.13.0",
"grunt-contrib-concat": "^0.5.1",
"grunt-contrib-compress": "~0.13.0",
"grunt-contrib-concat": "~0.5.1",
"grunt-contrib-connect": "~0.9.0",
"grunt-contrib-copy": "~0.8.0",
"grunt-contrib-csslint": "~0.4.0",
@ -61,7 +61,7 @@
"grunt-scss-lint": "^0.3.4",
"grunt-sed": "~0.1.1",
"load-grunt-tasks": "~3.1.0",
"markdown-it": "^3.0.6",
"markdown-it": "^3.0.7",
"mq4-hover-shim": "^0.1.0",
"npm-shrinkwrap": "^200.1.0",
"superstartup-closure-compiler": "^0.1.6",

View File

@ -144,11 +144,14 @@ output {
&:disabled,
&[readonly],
fieldset[disabled] & {
cursor: $cursor-disabled;
background-color: $input-bg-disabled;
opacity: 1; // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655
}
}
&[disabled],
fieldset[disabled] & {
cursor: $cursor-disabled;
}
// Reset height for `textarea`s
textarea.form-control {
@ -203,7 +206,7 @@ input[type="search"] {
// horizontal forms, use the predefined grid classes.
.form-group {
margin-bottom: 15px;
margin-bottom: @form-group-margin-bottom;
}
@ -243,6 +246,7 @@ input[type="search"] {
// Radios and checkboxes on same line
.radio-inline,
.checkbox-inline {
position: relative;
display: inline-block;
padding-left: 20px;
margin-bottom: 0;
@ -299,6 +303,7 @@ input[type="checkbox"] {
padding-bottom: ($padding-base-vertical + 1);
// Remove default margin from `p`
margin-bottom: 0;
min-height: (@line-height-computed + @font-size-base);
&.input-lg,
&.input-sm {
@ -326,6 +331,7 @@ input[type="checkbox"] {
padding: $padding-sm-vertical $padding-sm-horizontal;
font-size: $font-size-sm;
line-height: $line-height-sm;
min-height: ($line-height-computed + $font-size-sm);
}
}
@ -339,6 +345,7 @@ input[type="checkbox"] {
padding: $padding-lg-vertical $padding-lg-horizontal;
font-size: $font-size-lg;
line-height: $line-height-lg;
min-height: ($line-height-computed + $font-size-lg);
}
}

View File

@ -22,14 +22,14 @@
height: 100%;
border: 0;
}
// Modifier class for 16:9 aspect ratio
&.embed-responsive-16by9 {
padding-bottom: 56.25%;
}
// Modifier class for 4:3 aspect ratio
&.embed-responsive-4by3 {
padding-bottom: 75%;
}
}
// Modifier class for 16:9 aspect ratio
.embed-responsive-16by9 {
padding-bottom: 56.25%;
}
// Modifier class for 4:3 aspect ratio
.embed-responsive-4by3 {
padding-bottom: 75%;
}

View File

@ -162,7 +162,7 @@ abbr[data-original-title] {
}
.initialism {
font-size: 90%;
text-transform: uppercase;
@include text-uppercase;
}
// Blockquotes

View File

@ -1,15 +1,16 @@
{
"name": "bootstrap",
"version": "4.0.0-alpha",
"npm-shrinkwrap-version": "200.0.0",
"version": "3.3.2",
"npm-shrinkwrap-version": "200.1.0",
"node-version": "v0.12.0",
"dependencies": {
"btoa": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/btoa/-/btoa-1.1.2.tgz"
},
"glob": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.4.0.tgz",
"dependencies": {
"inflight": {
"version": "1.0.4",
@ -141,6 +142,10 @@
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/grunt-legacy-log/-/grunt-legacy-log-0.1.1.tgz",
"dependencies": {
"colors": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
},
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
@ -153,7 +158,21 @@
},
"grunt-legacy-util": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz"
"resolved": "https://registry.npmjs.org/grunt-legacy-util/-/grunt-legacy-util-0.2.0.tgz",
"dependencies": {
"async": {
"version": "0.1.22",
"resolved": "https://registry.npmjs.org/async/-/async-0.1.22.tgz"
},
"lodash": {
"version": "0.9.2",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-0.9.2.tgz"
},
"underscore.string": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.2.1.tgz"
}
}
},
"hooker": {
"version": "0.2.3",
@ -234,24 +253,24 @@
"resolved": "https://registry.npmjs.org/grunt-autoprefixer/-/grunt-autoprefixer-2.2.0.tgz",
"dependencies": {
"autoprefixer-core": {
"version": "5.1.3",
"resolved": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-5.1.3.tgz",
"version": "5.1.7",
"resolved": "https://registry.npmjs.org/autoprefixer-core/-/autoprefixer-core-5.1.7.tgz",
"dependencies": {
"browserslist": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-0.2.0.tgz"
},
"caniuse-db": {
"version": "1.0.30000065",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000065.tgz"
"version": "1.0.30000079",
"resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000079.tgz"
},
"num2fraction": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.0.1.tgz"
},
"postcss": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-4.0.3.tgz",
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-4.0.4.tgz",
"dependencies": {
"js-base64": {
"version": "2.1.7",
@ -280,8 +299,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -345,6 +364,56 @@
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.5.tgz"
},
"glob": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
"dependencies": {
"inflight": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"minimatch": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.1.tgz",
"dependencies": {
"brace-expansion": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
"dependencies": {
"balanced-match": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz"
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
}
}
}
}
},
"once": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
}
}
},
"lazystream": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/lazystream/-/lazystream-0.1.0.tgz"
@ -406,22 +475,26 @@
}
},
"zip-stream": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.0.tgz",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-0.5.1.tgz",
"dependencies": {
"compress-commons": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.1.tgz",
"version": "0.2.7",
"resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-0.2.7.tgz",
"dependencies": {
"crc32-stream": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.1.tgz"
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-0.3.2.tgz"
},
"node-int64": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.3.3.tgz"
}
}
},
"lodash": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz"
}
}
}
@ -436,8 +509,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -472,8 +545,8 @@
}
},
"grunt-contrib-concat": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.0.tgz",
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/grunt-contrib-concat/-/grunt-contrib-concat-0.5.1.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
@ -484,8 +557,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -514,8 +587,8 @@
}
},
"source-map": {
"version": "0.1.43",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz",
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.3.0.tgz",
"dependencies": {
"amdefine": {
"version": "0.1.0",
@ -534,20 +607,20 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"connect": {
"version": "2.28.3",
"resolved": "https://registry.npmjs.org/connect/-/connect-2.28.3.tgz",
"version": "2.29.0",
"resolved": "https://registry.npmjs.org/connect/-/connect-2.29.0.tgz",
"dependencies": {
"basic-auth-connect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/basic-auth-connect/-/basic-auth-connect-1.0.0.tgz"
},
"body-parser": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.10.2.tgz",
"version": "1.12.0",
"resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.12.0.tgz",
"dependencies": {
"iconv-lite": {
"version": "0.4.6",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.6.tgz"
"version": "0.4.7",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.7.tgz"
},
"on-finished": {
"version": "2.2.0",
@ -560,8 +633,8 @@
}
},
"raw-body": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.2.tgz"
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/raw-body/-/raw-body-1.3.3.tgz"
}
}
},
@ -570,26 +643,26 @@
"resolved": "https://registry.npmjs.org/bytes/-/bytes-1.0.0.tgz"
},
"compression": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/compression/-/compression-1.3.1.tgz",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/compression/-/compression-1.4.1.tgz",
"dependencies": {
"accepts": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.3.tgz",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.4.tgz",
"dependencies": {
"mime-types": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.9.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
},
"negotiator": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.0.tgz"
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.1.tgz"
}
}
},
@ -598,8 +671,8 @@
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.2.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
},
@ -610,8 +683,8 @@
}
},
"connect-timeout": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.5.0.tgz",
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/connect-timeout/-/connect-timeout-1.6.0.tgz",
"dependencies": {
"ms": {
"version": "0.7.0",
@ -619,29 +692,39 @@
}
}
},
"content-type": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.1.tgz"
},
"cookie": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/cookie/-/cookie-0.1.2.tgz"
},
"cookie-parser": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.3.tgz"
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/cookie-parser/-/cookie-parser-1.3.4.tgz",
"dependencies": {
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
}
}
},
"cookie-signature": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.5.tgz"
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
},
"csurf": {
"version": "1.6.6",
"resolved": "https://registry.npmjs.org/csurf/-/csurf-1.6.6.tgz",
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/csurf/-/csurf-1.7.0.tgz",
"dependencies": {
"csrf": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/csrf/-/csrf-2.0.5.tgz",
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/csrf/-/csrf-2.0.6.tgz",
"dependencies": {
"base64-url": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.0.tgz"
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz"
},
"rndm": {
"version": "1.1.0",
@ -652,8 +735,8 @@
"resolved": "https://registry.npmjs.org/scmp/-/scmp-1.0.0.tgz"
},
"uid-safe": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.0.3.tgz",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz",
"dependencies": {
"native-or-bluebird": {
"version": "1.1.2",
@ -680,26 +763,26 @@
"resolved": "https://registry.npmjs.org/depd/-/depd-1.0.0.tgz"
},
"errorhandler": {
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.3.3.tgz",
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.3.4.tgz",
"dependencies": {
"accepts": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.3.tgz",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.4.tgz",
"dependencies": {
"mime-types": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.9.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
},
"negotiator": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.0.tgz"
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.1.tgz"
}
}
},
@ -710,20 +793,24 @@
}
},
"express-session": {
"version": "1.10.2",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.10.2.tgz",
"version": "1.10.3",
"resolved": "https://registry.npmjs.org/express-session/-/express-session-1.10.3.tgz",
"dependencies": {
"cookie-signature": {
"version": "1.0.6",
"resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz"
},
"crc": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/crc/-/crc-3.2.1.tgz"
},
"uid-safe": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.0.3.tgz",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/uid-safe/-/uid-safe-1.1.0.tgz",
"dependencies": {
"base64-url": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.0.tgz"
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/base64-url/-/base64-url-1.2.1.tgz"
},
"native-or-bluebird": {
"version": "1.1.2",
@ -758,8 +845,8 @@
"resolved": "https://registry.npmjs.org/fresh/-/fresh-0.2.4.tgz"
},
"http-errors": {
"version": "1.2.8",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.2.8.tgz",
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
"dependencies": {
"inherits": {
"version": "2.0.1",
@ -858,8 +945,8 @@
"resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz"
},
"response-time": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/response-time/-/response-time-2.2.0.tgz"
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/response-time/-/response-time-2.3.0.tgz"
},
"serve-favicon": {
"version": "2.2.0",
@ -882,16 +969,16 @@
}
},
"serve-index": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.6.1.tgz",
"version": "1.6.2",
"resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.6.2.tgz",
"dependencies": {
"accepts": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.3.tgz",
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/accepts/-/accepts-1.2.4.tgz",
"dependencies": {
"negotiator": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.0.tgz"
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.5.1.tgz"
}
}
},
@ -899,29 +986,43 @@
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/batch/-/batch-0.5.2.tgz"
},
"http-errors": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.3.1.tgz",
"dependencies": {
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"statuses": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.2.1.tgz"
}
}
},
"mime-types": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.9.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
}
}
},
"serve-static": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.8.1.tgz",
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.9.1.tgz",
"dependencies": {
"escape-html": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.1.tgz"
},
"send": {
"version": "0.11.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.11.1.tgz",
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/send/-/send-0.12.1.tgz",
"dependencies": {
"destroy": {
"version": "1.0.3",
@ -938,8 +1039,8 @@
}
},
"mime": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
},
"ms": {
"version": "0.7.0",
@ -964,16 +1065,20 @@
}
},
"type-is": {
"version": "1.5.6",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.5.6.tgz",
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.0.tgz",
"dependencies": {
"media-typer": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz"
},
"mime-types": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.9.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
}
@ -990,8 +1095,8 @@
}
},
"connect-livereload": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.2.tgz"
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/connect-livereload/-/connect-livereload-0.5.3.tgz"
},
"opn": {
"version": "1.0.1",
@ -1010,8 +1115,8 @@
}
},
"grunt-contrib-copy": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.7.0.tgz",
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-copy/-/grunt-contrib-copy-0.8.0.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
@ -1022,8 +1127,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -1050,6 +1155,10 @@
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"file-sync-cmp": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/file-sync-cmp/-/file-sync-cmp-0.1.1.tgz"
}
}
},
@ -1066,8 +1175,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -1116,8 +1225,8 @@
}
},
"grunt-contrib-cssmin": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.11.0.tgz",
"version": "0.12.2",
"resolved": "https://registry.npmjs.org/grunt-contrib-cssmin/-/grunt-contrib-cssmin-0.12.2.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
@ -1128,8 +1237,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -1158,8 +1267,8 @@
}
},
"clean-css": {
"version": "3.0.9",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.0.9.tgz",
"version": "3.0.10",
"resolved": "https://registry.npmjs.org/clean-css/-/clean-css-3.0.10.tgz",
"dependencies": {
"commander": {
"version": "2.5.1",
@ -1234,12 +1343,12 @@
}
},
"pretty-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.2.tgz",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.3.tgz",
"dependencies": {
"get-stdin": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-1.0.0.tgz"
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
}
}
}
@ -1260,8 +1369,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -1290,8 +1399,8 @@
}
},
"jade": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/jade/-/jade-1.9.1.tgz",
"version": "1.9.2",
"resolved": "https://registry.npmjs.org/jade/-/jade-1.9.2.tgz",
"dependencies": {
"character-parser": {
"version": "1.2.1",
@ -1317,160 +1426,6 @@
}
}
},
"coveralls": {
"version": "2.11.2",
"resolved": "https://registry.npmjs.org/coveralls/-/coveralls-2.11.2.tgz",
"dependencies": {
"js-yaml": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.0.1.tgz",
"dependencies": {
"argparse": {
"version": "0.1.16",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
"dependencies": {
"underscore": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz"
},
"underscore.string": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz"
}
}
},
"esprima": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz"
}
}
},
"lcov-parse": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-0.0.6.tgz"
},
"log-driver": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.4.tgz"
},
"request": {
"version": "2.40.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.40.0.tgz",
"dependencies": {
"aws-sign2": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
},
"forever-agent": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz"
},
"form-data": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-0.1.4.tgz",
"dependencies": {
"async": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"combined-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
}
}
},
"mime": {
"version": "1.2.11",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.2.11.tgz"
}
}
},
"hawk": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz",
"dependencies": {
"boom": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz"
},
"cryptiles": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz"
},
"hoek": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz"
},
"sntp": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz"
}
}
},
"http-signature": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
"dependencies": {
"asn1": {
"version": "0.1.11",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
},
"assert-plus": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
},
"ctype": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"
}
}
},
"json-stringify-safe": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz"
},
"mime-types": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
},
"node-uuid": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.2.tgz"
},
"oauth-sign": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.3.0.tgz"
},
"qs": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-1.0.2.tgz"
},
"stringstream": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
},
"tough-cookie": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz",
"dependencies": {
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
}
}
},
"tunnel-agent": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz"
}
}
}
}
},
"mkdirp": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
@ -1538,26 +1493,20 @@
}
},
"void-elements": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-1.0.0.tgz"
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz"
},
"with": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/with/-/with-4.0.0.tgz",
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/with/-/with-4.0.1.tgz",
"dependencies": {
"acorn": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-0.8.0.tgz"
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-0.11.0.tgz"
},
"acorn-globals": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.2.tgz",
"dependencies": {
"acorn": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-0.11.0.tgz"
}
}
"resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-1.0.2.tgz"
}
}
}
@ -1566,16 +1515,16 @@
}
},
"grunt-contrib-jshint": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.10.0.tgz",
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-jshint/-/grunt-contrib-jshint-0.11.0.tgz",
"dependencies": {
"hooker": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"
},
"jshint": {
"version": "2.5.11",
"resolved": "https://registry.npmjs.org/jshint/-/jshint-2.5.11.tgz",
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/jshint/-/jshint-2.6.0.tgz",
"dependencies": {
"cli": {
"version": "0.6.5",
@ -1638,8 +1587,8 @@
"resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz",
"dependencies": {
"dom-serializer": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.0.1.tgz",
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz",
"dependencies": {
"entities": {
"version": "1.1.1",
@ -1707,6 +1656,264 @@
}
}
},
"grunt-contrib-less": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-less/-/grunt-contrib-less-1.0.0.tgz",
"dependencies": {
"async": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"less": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/less/-/less-2.4.0.tgz",
"dependencies": {
"errno": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/errno/-/errno-0.1.1.tgz",
"dependencies": {
"prr": {
"version": "0.0.0",
"resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz"
}
}
},
"graceful-fs": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.5.tgz"
},
"image-size": {
"version": "0.3.5",
"resolved": "https://registry.npmjs.org/image-size/-/image-size-0.3.5.tgz"
},
"mime": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/mime/-/mime-1.3.4.tgz"
},
"mkdirp": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
}
}
},
"promise": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/promise/-/promise-6.1.0.tgz",
"dependencies": {
"asap": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/asap/-/asap-1.0.0.tgz"
}
}
},
"request": {
"version": "2.53.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.53.0.tgz",
"dependencies": {
"aws-sign2": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
},
"bl": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz",
"dependencies": {
"readable-stream": {
"version": "1.0.33",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
}
}
}
}
},
"caseless": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz"
},
"combined-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
}
}
},
"forever-agent": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz"
},
"form-data": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz"
},
"hawk": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
"dependencies": {
"boom": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.6.1.tgz"
},
"cryptiles": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz"
},
"hoek": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.11.0.tgz"
},
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
}
}
},
"http-signature": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
"dependencies": {
"asn1": {
"version": "0.1.11",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
},
"assert-plus": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
},
"ctype": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"
}
}
},
"isstream": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.1.tgz"
},
"json-stringify-safe": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz"
},
"mime-types": {
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.9.tgz",
"dependencies": {
"mime-db": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
},
"node-uuid": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.2.tgz"
},
"oauth-sign": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz"
},
"qs": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz"
},
"stringstream": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
},
"tough-cookie": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz",
"dependencies": {
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
}
}
},
"tunnel-agent": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz"
}
}
},
"source-map": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
"dependencies": {
"amdefine": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz"
}
}
}
}
},
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
}
}
},
"grunt-contrib-qunit": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/grunt-contrib-qunit/-/grunt-contrib-qunit-0.5.2.tgz",
@ -1768,8 +1975,8 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"ini": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.2.tgz"
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz"
},
"mkdirp": {
"version": "0.5.0",
@ -1806,8 +2013,8 @@
"resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.0.tgz"
},
"semver": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.2.0.tgz"
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.0.tgz"
},
"uid-number": {
"version": "0.0.5",
@ -2001,69 +2208,9 @@
}
}
},
"grunt-contrib-sass": {
"version": "0.8.1",
"resolved": "https://registry.npmjs.org/grunt-contrib-sass/-/grunt-contrib-sass-0.8.1.tgz",
"dependencies": {
"async": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"dargs": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/dargs/-/dargs-2.1.0.tgz"
},
"which": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/which/-/which-1.0.8.tgz"
},
"win-spawn": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/win-spawn/-/win-spawn-2.0.0.tgz"
}
}
},
"grunt-contrib-uglify": {
"version": "0.7.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.7.0.tgz",
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/grunt-contrib-uglify/-/grunt-contrib-uglify-0.8.0.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
@ -2074,8 +2221,8 @@
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
@ -2104,8 +2251,8 @@
}
},
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz"
},
"maxmin": {
"version": "1.0.0",
@ -2164,12 +2311,12 @@
}
},
"pretty-bytes": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.2.tgz",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-1.0.3.tgz",
"dependencies": {
"get-stdin": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-1.0.0.tgz"
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
}
}
}
@ -2380,8 +2527,8 @@
"resolved": "https://registry.npmjs.org/grunt-exec/-/grunt-exec-0.4.6.tgz"
},
"grunt-html": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/grunt-html/-/grunt-html-2.0.0.tgz",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/grunt-html/-/grunt-html-3.0.0.tgz",
"dependencies": {
"async": {
"version": "0.2.10",
@ -2418,32 +2565,36 @@
}
},
"grunt-jscs": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/grunt-jscs/-/grunt-jscs-1.2.0.tgz",
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/grunt-jscs/-/grunt-jscs-1.5.0.tgz",
"dependencies": {
"hooker": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"
},
"jscs": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/jscs/-/jscs-1.10.0.tgz",
"version": "1.11.3",
"resolved": "https://registry.npmjs.org/jscs/-/jscs-1.11.3.tgz",
"dependencies": {
"cli-table": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/cli-table/-/cli-table-0.3.1.tgz"
},
"colors": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"
},
"commander": {
"version": "2.5.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.5.1.tgz"
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.6.0.tgz"
},
"esprima": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.3.tgz"
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/esprima/-/esprima-1.2.4.tgz"
},
"esprima-harmony-jscs": {
"version": "1.1.0-regex-token-fix",
"resolved": "https://registry.npmjs.org/esprima-harmony-jscs/-/esprima-harmony-jscs-1.1.0-regex-token-fix.tgz"
"version": "1.1.0-tolerate-import",
"resolved": "https://registry.npmjs.org/esprima-harmony-jscs/-/esprima-harmony-jscs-1.1.0-tolerate-import.tgz"
},
"estraverse": {
"version": "1.9.1",
@ -2454,31 +2605,23 @@
"resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
},
"glob": {
"version": "4.0.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.0.6.tgz",
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
"dependencies": {
"graceful-fs": {
"version": "3.0.5",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-3.0.5.tgz"
"inflight": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"minimatch": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-1.0.0.tgz",
"dependencies": {
"lru-cache": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz"
},
"sigmund": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz"
}
}
},
"once": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz",
@ -2491,6 +2634,54 @@
}
}
},
"lodash.assign": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash.assign/-/lodash.assign-3.0.0.tgz",
"dependencies": {
"lodash._baseassign": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/lodash._baseassign/-/lodash._baseassign-3.0.1.tgz",
"dependencies": {
"lodash._basecopy": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._basecopy/-/lodash._basecopy-3.0.0.tgz"
},
"lodash.keys": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.0.3.tgz",
"dependencies": {
"lodash.isarguments": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash.isarguments/-/lodash.isarguments-3.0.0.tgz"
},
"lodash.isarray": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash.isarray/-/lodash.isarray-3.0.0.tgz"
},
"lodash.isnative": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash.isnative/-/lodash.isnative-3.0.0.tgz"
}
}
}
}
},
"lodash._createassigner": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._createassigner/-/lodash._createassigner-3.0.0.tgz",
"dependencies": {
"lodash._bindcallback": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/lodash._bindcallback/-/lodash._bindcallback-3.0.0.tgz"
},
"lodash._isiterateecall": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/lodash._isiterateecall/-/lodash._isiterateecall-3.0.2.tgz"
}
}
}
}
},
"minimatch": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.1.tgz",
@ -2511,21 +2702,111 @@
}
}
},
"prompt": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/prompt/-/prompt-0.2.14.tgz",
"dependencies": {
"pkginfo": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.3.0.tgz"
},
"read": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/read/-/read-1.0.5.tgz",
"dependencies": {
"mute-stream": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.4.tgz"
}
}
},
"revalidator": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz"
},
"utile": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/utile/-/utile-0.2.1.tgz",
"dependencies": {
"async": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
},
"deep-equal": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.0.tgz"
},
"i": {
"version": "0.3.2",
"resolved": "https://registry.npmjs.org/i/-/i-0.3.2.tgz"
},
"mkdirp": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
}
}
},
"ncp": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/ncp/-/ncp-0.4.2.tgz"
},
"rimraf": {
"version": "2.2.8",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
}
}
},
"winston": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/winston/-/winston-0.8.3.tgz",
"dependencies": {
"async": {
"version": "0.2.10",
"resolved": "https://registry.npmjs.org/async/-/async-0.2.10.tgz"
},
"colors": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz"
},
"cycle": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz"
},
"eyes": {
"version": "0.1.8",
"resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz"
},
"isstream": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.1.tgz"
},
"stack-trace": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz"
}
}
}
}
},
"strip-json-comments": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.2.tgz"
},
"supports-color": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.0.tgz"
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.2.1.tgz"
},
"vow-fs": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/vow-fs/-/vow-fs-0.3.4.tgz",
"dependencies": {
"glob": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
"version": "4.4.0",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.4.0.tgz",
"dependencies": {
"inflight": {
"version": "1.0.4",
@ -2541,6 +2822,26 @@
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"minimatch": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.1.tgz",
"dependencies": {
"brace-expansion": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
"dependencies": {
"balanced-match": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz"
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
}
}
}
}
},
"once": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz",
@ -2564,12 +2865,12 @@
}
},
"xmlbuilder": {
"version": "2.4.6",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.6.tgz",
"version": "2.5.2",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.5.2.tgz",
"dependencies": {
"lodash-node": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash-node/-/lodash-node-2.4.1.tgz"
"lodash": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz"
}
}
}
@ -2585,513 +2886,21 @@
}
}
},
"grunt-postcss": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/grunt-postcss/-/grunt-postcss-0.3.0.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"diff": {
"version": "1.2.2",
"resolved": "https://registry.npmjs.org/diff/-/diff-1.2.2.tgz"
},
"postcss": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-4.0.3.tgz",
"dependencies": {
"js-base64": {
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.7.tgz"
},
"source-map": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
"dependencies": {
"amdefine": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz"
}
}
}
}
}
}
},
"grunt-sass": {
"version": "0.17.0",
"resolved": "https://registry.npmjs.org/grunt-sass/-/grunt-sass-0.17.0.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"each-async": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/each-async/-/each-async-1.1.1.tgz",
"dependencies": {
"onetime": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/onetime/-/onetime-1.0.0.tgz"
},
"set-immediate-shim": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/set-immediate-shim/-/set-immediate-shim-1.0.0.tgz"
}
}
},
"node-sass": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/node-sass/-/node-sass-1.2.3.tgz",
"dependencies": {
"cross-spawn": {
"version": "0.2.3",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-0.2.3.tgz",
"dependencies": {
"lru-cache": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz"
}
}
},
"gaze": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/gaze/-/gaze-0.5.1.tgz",
"dependencies": {
"globule": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/globule/-/globule-0.1.0.tgz",
"dependencies": {
"glob": {
"version": "3.1.21",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.1.21.tgz",
"dependencies": {
"graceful-fs": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-1.2.3.tgz"
},
"inherits": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-1.0.0.tgz"
}
}
},
"lodash": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-1.0.1.tgz"
},
"minimatch": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
"dependencies": {
"lru-cache": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz"
},
"sigmund": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz"
}
}
}
}
}
}
},
"get-stdin": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz"
},
"meow": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/meow/-/meow-2.1.0.tgz",
"dependencies": {
"camelcase-keys": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz",
"dependencies": {
"camelcase": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.0.2.tgz"
},
"map-obj": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.0.tgz"
}
}
},
"indent-string": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.0.tgz",
"dependencies": {
"repeating": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.1.tgz",
"dependencies": {
"is-finite": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.0.tgz"
}
}
}
}
},
"minimist": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.1.0.tgz"
},
"object-assign": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.0.0.tgz"
}
}
},
"mkdirp": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
"dependencies": {
"minimist": {
"version": "0.0.8",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz"
}
}
},
"mocha": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mocha/-/mocha-2.1.0.tgz",
"dependencies": {
"commander": {
"version": "2.3.0",
"resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz"
},
"debug": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.0.0.tgz",
"dependencies": {
"ms": {
"version": "0.6.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.6.2.tgz"
}
}
},
"diff": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/diff/-/diff-1.0.8.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
},
"glob": {
"version": "3.2.3",
"resolved": "https://registry.npmjs.org/glob/-/glob-3.2.3.tgz",
"dependencies": {
"graceful-fs": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-2.0.3.tgz"
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"minimatch": {
"version": "0.2.14",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz",
"dependencies": {
"lru-cache": {
"version": "2.5.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.5.0.tgz"
},
"sigmund": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.0.tgz"
}
}
}
}
},
"growl": {
"version": "1.8.1",
"resolved": "https://registry.npmjs.org/growl/-/growl-1.8.1.tgz"
},
"jade": {
"version": "0.26.3",
"resolved": "https://registry.npmjs.org/jade/-/jade-0.26.3.tgz",
"dependencies": {
"commander": {
"version": "0.6.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-0.6.1.tgz"
},
"mkdirp": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.3.0.tgz"
}
}
}
}
},
"nan": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/nan/-/nan-1.6.1.tgz"
},
"object-assign": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz"
},
"replace-ext": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-0.0.1.tgz"
},
"request": {
"version": "2.53.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.53.0.tgz",
"dependencies": {
"aws-sign2": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
},
"bl": {
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz",
"dependencies": {
"readable-stream": {
"version": "1.0.33",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.33.tgz",
"dependencies": {
"core-util-is": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.1.tgz"
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"isarray": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz"
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz"
}
}
}
}
},
"caseless": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz"
},
"combined-stream": {
"version": "0.0.7",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-0.0.7.tgz",
"dependencies": {
"delayed-stream": {
"version": "0.0.5",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-0.0.5.tgz"
}
}
},
"forever-agent": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.5.2.tgz"
},
"form-data": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-0.2.0.tgz",
"dependencies": {
"async": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
}
}
},
"hawk": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
"dependencies": {
"boom": {
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.6.1.tgz"
},
"cryptiles": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz"
},
"hoek": {
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.11.0.tgz"
},
"sntp": {
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
}
}
},
"http-signature": {
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
"dependencies": {
"asn1": {
"version": "0.1.11",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
},
"assert-plus": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
},
"ctype": {
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"
}
}
},
"isstream": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.1.tgz"
},
"json-stringify-safe": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz"
},
"mime-types": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
}
}
},
"node-uuid": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.2.tgz"
},
"oauth-sign": {
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz"
},
"qs": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/qs/-/qs-2.3.3.tgz"
},
"stringstream": {
"version": "0.0.4",
"resolved": "https://registry.npmjs.org/stringstream/-/stringstream-0.0.4.tgz"
},
"tough-cookie": {
"version": "0.12.1",
"resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-0.12.1.tgz",
"dependencies": {
"punycode": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz"
}
}
},
"tunnel-agent": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.0.tgz"
}
}
},
"shelljs": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz"
}
}
},
"object-assign": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/object-assign/-/object-assign-2.0.0.tgz"
}
}
},
"grunt-saucelabs": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-8.5.0.tgz",
"version": "8.6.0",
"resolved": "https://registry.npmjs.org/grunt-saucelabs/-/grunt-saucelabs-8.6.0.tgz",
"dependencies": {
"colors": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz"
},
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.3.0.tgz"
},
"q": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/q/-/q-1.0.1.tgz"
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/q/-/q-1.1.2.tgz"
},
"requestretry": {
"version": "1.2.2",
@ -3101,6 +2910,10 @@
"version": "0.0.2",
"resolved": "https://registry.npmjs.org/fg-lodash/-/fg-lodash-0.0.2.tgz",
"dependencies": {
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
},
"underscore.string": {
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.3.3.tgz"
@ -3170,12 +2983,12 @@
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"mime-types": {
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"version": "2.0.9",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.9.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.0.tgz"
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.7.0.tgz"
}
}
}
@ -3264,8 +3077,8 @@
}
},
"sauce-tunnel": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/sauce-tunnel/-/sauce-tunnel-2.1.1.tgz",
"version": "2.2.2",
"resolved": "https://registry.npmjs.org/sauce-tunnel/-/sauce-tunnel-2.2.2.tgz",
"dependencies": {
"chalk": {
"version": "0.4.0",
@ -3398,6 +3211,16 @@
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.3.0.tgz"
}
}
},
"split": {
"version": "0.3.3",
"resolved": "https://registry.npmjs.org/split/-/split-0.3.3.tgz",
"dependencies": {
"through": {
"version": "2.3.6",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.6.tgz"
}
}
}
}
},
@ -3407,64 +3230,6 @@
}
}
},
"grunt-scss-lint": {
"version": "0.3.4",
"resolved": "https://registry.npmjs.org/grunt-scss-lint/-/grunt-scss-lint-0.3.4.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
}
}
},
"lodash": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-2.4.1.tgz"
},
"xmlbuilder": {
"version": "2.4.3",
"resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-2.4.3.tgz",
"dependencies": {
"lodash-node": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/lodash-node/-/lodash-node-2.4.1.tgz"
}
}
}
}
},
"grunt-sed": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/grunt-sed/-/grunt-sed-0.1.1.tgz",
@ -3506,12 +3271,64 @@
}
},
"load-grunt-tasks": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-2.0.0.tgz",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/load-grunt-tasks/-/load-grunt-tasks-3.1.0.tgz",
"dependencies": {
"findup-sync": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz"
"resolved": "https://registry.npmjs.org/findup-sync/-/findup-sync-0.2.1.tgz",
"dependencies": {
"glob": {
"version": "4.3.5",
"resolved": "https://registry.npmjs.org/glob/-/glob-4.3.5.tgz",
"dependencies": {
"inflight": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
},
"inherits": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"minimatch": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-2.0.1.tgz",
"dependencies": {
"brace-expansion": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.0.tgz",
"dependencies": {
"balanced-match": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.2.0.tgz"
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
}
}
}
}
},
"once": {
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/once/-/once-1.3.1.tgz",
"dependencies": {
"wrappy": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
}
}
}
}
}
}
},
"multimatch": {
"version": "2.0.0",
@ -3556,62 +3373,36 @@
}
},
"markdown-it": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.0.4.tgz",
"version": "3.0.7",
"resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-3.0.7.tgz",
"dependencies": {
"argparse": {
"version": "0.1.16",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-0.1.16.tgz",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.1.tgz",
"dependencies": {
"underscore": {
"version": "1.7.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.7.0.tgz"
"lodash": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-3.2.0.tgz"
},
"underscore.string": {
"version": "2.4.0",
"resolved": "https://registry.npmjs.org/underscore.string/-/underscore.string-2.4.0.tgz"
"sprintf-js": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.2.tgz"
}
}
},
"autolinker": {
"version": "0.15.2",
"resolved": "https://registry.npmjs.org/autolinker/-/autolinker-0.15.2.tgz"
}
}
},
"mq4-hover-shim": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/mq4-hover-shim/-/mq4-hover-shim-0.1.0.tgz",
"dependencies": {
"css-mediaquery": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/css-mediaquery/-/css-mediaquery-0.1.2.tgz"
},
"postcss": {
"version": "4.0.3",
"resolved": "https://registry.npmjs.org/postcss/-/postcss-4.0.3.tgz",
"dependencies": {
"js-base64": {
"version": "2.1.7",
"resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.1.7.tgz"
},
"source-map": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz",
"dependencies": {
"amdefine": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.0.tgz"
}
}
}
}
"uc.micro": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-0.1.0.tgz"
}
}
},
"npm-shrinkwrap": {
"version": "200.0.0",
"resolved": "https://registry.npmjs.org/npm-shrinkwrap/-/npm-shrinkwrap-200.0.0.tgz",
"version": "200.1.0",
"resolved": "https://registry.npmjs.org/npm-shrinkwrap/-/npm-shrinkwrap-200.1.0.tgz",
"dependencies": {
"array-find": {
"version": "0.1.1",
@ -3650,8 +3441,8 @@
"resolved": "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz",
"dependencies": {
"heap": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/heap/-/heap-0.2.5.tgz"
"version": "0.2.6",
"resolved": "https://registry.npmjs.org/heap/-/heap-0.2.6.tgz"
}
}
},
@ -3740,8 +3531,8 @@
}
},
"npm": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/npm/-/npm-2.4.1.tgz",
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/npm/-/npm-2.6.0.tgz",
"dependencies": {
"abbrev": {
"version": "1.0.5",
@ -3792,12 +3583,12 @@
"resolved": "https://registry.npmjs.org/cmd-shim/-/cmd-shim-2.0.1.tgz"
},
"columnify": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/columnify/-/columnify-1.3.2.tgz",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/columnify/-/columnify-1.4.1.tgz",
"dependencies": {
"strip-ansi": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.0.tgz",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
"dependencies": {
"ansi-regex": {
"version": "1.1.0",
@ -3856,8 +3647,8 @@
"resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.2.tgz"
},
"fstream": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.3.tgz"
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.4.tgz"
},
"fstream-npm": {
"version": "1.0.1",
@ -3894,8 +3685,8 @@
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
},
"ini": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.2.tgz"
"version": "1.3.3",
"resolved": "https://registry.npmjs.org/ini/-/ini-1.3.3.tgz"
},
"init-package-json": {
"version": "1.2.0",
@ -3986,8 +3777,8 @@
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-2.1.3.tgz"
},
"npm-registry-client": {
"version": "6.0.3",
"resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-6.0.3.tgz",
"version": "6.1.1",
"resolved": "https://registry.npmjs.org/npm-registry-client/-/npm-registry-client-6.1.1.tgz",
"dependencies": {
"concat-stream": {
"version": "1.4.7",
@ -4018,8 +3809,8 @@
}
},
"npm-package-arg": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-3.0.0.tgz",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-3.1.0.tgz",
"dependencies": {
"hosted-git-info": {
"version": "1.5.3",
@ -4082,8 +3873,8 @@
}
},
"read-package-json": {
"version": "1.2.7",
"resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-1.2.7.tgz"
"version": "1.3.1",
"resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-1.3.1.tgz"
},
"readable-stream": {
"version": "1.0.33",
@ -4108,20 +3899,20 @@
"resolved": "https://registry.npmjs.org/realize-package-specifier/-/realize-package-specifier-1.3.0.tgz"
},
"request": {
"version": "2.51.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.51.0.tgz",
"version": "2.53.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.53.0.tgz",
"dependencies": {
"aws-sign2": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.5.0.tgz"
},
"bl": {
"version": "0.9.3",
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.3.tgz"
"version": "0.9.4",
"resolved": "https://registry.npmjs.org/bl/-/bl-0.9.4.tgz"
},
"caseless": {
"version": "0.8.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.8.0.tgz"
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.9.0.tgz"
},
"combined-stream": {
"version": "0.0.7",
@ -4144,74 +3935,74 @@
"async": {
"version": "0.9.0",
"resolved": "https://registry.npmjs.org/async/-/async-0.9.0.tgz"
},
"mime-types": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.4.tgz",
"dependencies": {
"mime-db": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.3.0.tgz"
}
}
}
}
},
"hawk": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-1.1.1.tgz",
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/hawk/-/hawk-2.3.1.tgz",
"dependencies": {
"boom": {
"version": "0.4.2",
"resolved": "https://registry.npmjs.org/boom/-/boom-0.4.2.tgz"
"version": "2.6.1",
"resolved": "https://registry.npmjs.org/boom/-/boom-2.6.1.tgz"
},
"cryptiles": {
"version": "0.2.2",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-0.2.2.tgz"
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/cryptiles/-/cryptiles-2.0.4.tgz"
},
"hoek": {
"version": "0.9.1",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-0.9.1.tgz"
"version": "2.11.0",
"resolved": "https://registry.npmjs.org/hoek/-/hoek-2.11.0.tgz"
},
"sntp": {
"version": "0.2.4",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-0.2.4.tgz"
"version": "1.0.9",
"resolved": "https://registry.npmjs.org/sntp/-/sntp-1.0.9.tgz"
}
}
},
"http-signature": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.0.tgz",
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/http-signature/-/http-signature-0.10.1.tgz",
"dependencies": {
"asn1": {
"version": "0.1.11",
"resolved": "https://registry.npmjs.org/asn1/-/asn1-0.1.11.tgz"
},
"assert-plus": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.2.tgz"
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz"
},
"ctype": {
"version": "0.5.2",
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.2.tgz"
"version": "0.5.3",
"resolved": "https://registry.npmjs.org/ctype/-/ctype-0.5.3.tgz"
}
}
},
"isstream": {
"version": "0.1.1",
"resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.1.tgz"
},
"json-stringify-safe": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.0.tgz"
},
"mime-types": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-1.0.2.tgz"
"version": "2.0.8",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.0.8.tgz",
"dependencies": {
"mime-db": {
"version": "1.6.1",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.6.1.tgz"
}
}
},
"node-uuid": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.2.tgz"
},
"oauth-sign": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.5.0.tgz"
"version": "0.6.0",
"resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.6.0.tgz"
},
"qs": {
"version": "2.3.3",
@ -4246,8 +4037,8 @@
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.2.8.tgz"
},
"semver": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.2.0.tgz"
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.0.tgz"
},
"sha": {
"version": "1.3.0",
@ -4332,8 +4123,8 @@
"resolved": "https://registry.npmjs.org/safe-json-parse/-/safe-json-parse-2.0.0.tgz"
},
"semver": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.2.0.tgz"
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-4.3.0.tgz"
},
"sorted-object": {
"version": "1.0.0",
@ -4352,44 +4143,48 @@
}
},
"time-grunt": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.0.0.tgz",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/time-grunt/-/time-grunt-1.1.0.tgz",
"dependencies": {
"chalk": {
"version": "0.5.1",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-0.5.1.tgz",
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.0.0.tgz",
"dependencies": {
"ansi-styles": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-1.1.0.tgz"
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.0.1.tgz"
},
"escape-string-regexp": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.2.tgz"
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.3.tgz"
},
"has-ansi": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-0.1.0.tgz",
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-1.0.3.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
},
"get-stdin": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
}
}
},
"strip-ansi": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-0.3.0.tgz",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-2.0.1.tgz",
"dependencies": {
"ansi-regex": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-0.2.1.tgz"
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-1.1.1.tgz"
}
}
},
"supports-color": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-0.2.0.tgz"
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-1.3.0.tgz"
}
}
},
@ -4406,12 +4201,12 @@
"resolved": "https://registry.npmjs.org/hooker/-/hooker-0.2.3.tgz"
},
"pretty-ms": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-1.0.0.tgz",
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-1.0.1.tgz",
"dependencies": {
"get-stdin": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-3.0.2.tgz"
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz"
},
"parse-ms": {
"version": "1.0.0",