0
0
mirror of https://github.com/twbs/bootstrap.git synced 2025-01-28 20:52:21 +01:00

Merge pull request #3 from twbs/v4-dev

update from official repo
This commit is contained in:
Gijs Boddeus 2017-08-25 23:29:40 +02:00 committed by GitHub
commit 4356d08abb
70 changed files with 1041 additions and 556 deletions

View File

@ -70,5 +70,5 @@ cdn:
js_hash: "sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1"
jquery: "https://code.jquery.com/jquery-3.2.1.slim.min.js"
jquery_hash: "sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN"
popper: "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js"
popper_hash: "sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4"
popper: "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js"
popper_hash: "sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh"

View File

@ -23,6 +23,8 @@
{% endif %}
<link href="{{ site.baseurl }}/assets/css/docs.min.css" rel="stylesheet">
{% include favicons.html %}
{% include social.html %}
<script>

View File

@ -1,7 +1,8 @@
<!DOCTYPE html>
<html lang="en-US">
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Bootstrap - Content moved</title>
<link rel="canonical" href="{{ page.redirect.to }}">
<meta http-equiv="refresh" content="0; url={{ page.redirect.to }}">
@ -31,6 +32,6 @@
<body>
<h1>Redirecting…</h1>
<a href="{{ page.redirect.to }}">Click here if you are not redirected</a>
<script>location="{{ page.redirect.to }}"</script>
<script>window.location="{{ page.redirect.to }}";</script>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@ -27,7 +27,7 @@
// IE JavaScript conditional compilation docs: https://msdn.microsoft.com/library/121hztk3%28v=vs.94%29.aspx
// @cc_on docs: https://msdn.microsoft.com/library/8ka90k2e%28v=vs.94%29.aspx
var jscriptVersion = new Function('/*@cc_on return @_jscript_version; @*/')() // eslint-disable-line no-new-func
if (jscriptVersion === undefined) {
if (typeof jscriptVersion === 'undefined') {
return 11 // IE11+ not in emulation mode
}
if (jscriptVersion < 9) {

File diff suppressed because one or more lines are too long

View File

@ -31,7 +31,7 @@
"Gruntfile.js"
],
"dependencies": {
"jquery": ">=1.9.1",
"popper.js": "^1.11.0"
"jquery": ">=3.0.0",
"popper.js": "^1.12.3"
}
}

View File

@ -21,8 +21,8 @@ if (typeof jQuery === 'undefined') {
(function ($) {
var version = $.fn.jquery.split(' ')[0].split('.')
if ((version[0] < 2 && version[1] < 9) || (version[0] == 1 && version[1] == 9 && version[2] < 1) || (version[0] >= 4)) {
throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')
if ((version[0] < 3) || (version[0] >= 4)) {
throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0')
}
})(jQuery);

View File

@ -233,6 +233,50 @@ html {
order: 12;
}
.offset-1 {
margin-left: 8.333333%;
}
.offset-2 {
margin-left: 16.666667%;
}
.offset-3 {
margin-left: 25%;
}
.offset-4 {
margin-left: 33.333333%;
}
.offset-5 {
margin-left: 41.666667%;
}
.offset-6 {
margin-left: 50%;
}
.offset-7 {
margin-left: 58.333333%;
}
.offset-8 {
margin-left: 66.666667%;
}
.offset-9 {
margin-left: 75%;
}
.offset-10 {
margin-left: 83.333333%;
}
.offset-11 {
margin-left: 91.666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
@ -355,6 +399,42 @@ html {
-ms-flex-order: 12;
order: 12;
}
.offset-sm-0 {
margin-left: 0%;
}
.offset-sm-1 {
margin-left: 8.333333%;
}
.offset-sm-2 {
margin-left: 16.666667%;
}
.offset-sm-3 {
margin-left: 25%;
}
.offset-sm-4 {
margin-left: 33.333333%;
}
.offset-sm-5 {
margin-left: 41.666667%;
}
.offset-sm-6 {
margin-left: 50%;
}
.offset-sm-7 {
margin-left: 58.333333%;
}
.offset-sm-8 {
margin-left: 66.666667%;
}
.offset-sm-9 {
margin-left: 75%;
}
.offset-sm-10 {
margin-left: 83.333333%;
}
.offset-sm-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 768px) {
@ -479,6 +559,42 @@ html {
-ms-flex-order: 12;
order: 12;
}
.offset-md-0 {
margin-left: 0%;
}
.offset-md-1 {
margin-left: 8.333333%;
}
.offset-md-2 {
margin-left: 16.666667%;
}
.offset-md-3 {
margin-left: 25%;
}
.offset-md-4 {
margin-left: 33.333333%;
}
.offset-md-5 {
margin-left: 41.666667%;
}
.offset-md-6 {
margin-left: 50%;
}
.offset-md-7 {
margin-left: 58.333333%;
}
.offset-md-8 {
margin-left: 66.666667%;
}
.offset-md-9 {
margin-left: 75%;
}
.offset-md-10 {
margin-left: 83.333333%;
}
.offset-md-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 992px) {
@ -603,6 +719,42 @@ html {
-ms-flex-order: 12;
order: 12;
}
.offset-lg-0 {
margin-left: 0%;
}
.offset-lg-1 {
margin-left: 8.333333%;
}
.offset-lg-2 {
margin-left: 16.666667%;
}
.offset-lg-3 {
margin-left: 25%;
}
.offset-lg-4 {
margin-left: 33.333333%;
}
.offset-lg-5 {
margin-left: 41.666667%;
}
.offset-lg-6 {
margin-left: 50%;
}
.offset-lg-7 {
margin-left: 58.333333%;
}
.offset-lg-8 {
margin-left: 66.666667%;
}
.offset-lg-9 {
margin-left: 75%;
}
.offset-lg-10 {
margin-left: 83.333333%;
}
.offset-lg-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 1200px) {
@ -727,6 +879,42 @@ html {
-ms-flex-order: 12;
order: 12;
}
.offset-xl-0 {
margin-left: 0%;
}
.offset-xl-1 {
margin-left: 8.333333%;
}
.offset-xl-2 {
margin-left: 16.666667%;
}
.offset-xl-3 {
margin-left: 25%;
}
.offset-xl-4 {
margin-left: 33.333333%;
}
.offset-xl-5 {
margin-left: 41.666667%;
}
.offset-xl-6 {
margin-left: 50%;
}
.offset-xl-7 {
margin-left: 58.333333%;
}
.offset-xl-8 {
margin-left: 66.666667%;
}
.offset-xl-9 {
margin-left: 75%;
}
.offset-xl-10 {
margin-left: 83.333333%;
}
.offset-xl-11 {
margin-left: 91.666667%;
}
}
.flex-row {

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -816,6 +816,50 @@ pre code {
order: 12;
}
.offset-1 {
margin-left: 8.333333%;
}
.offset-2 {
margin-left: 16.666667%;
}
.offset-3 {
margin-left: 25%;
}
.offset-4 {
margin-left: 33.333333%;
}
.offset-5 {
margin-left: 41.666667%;
}
.offset-6 {
margin-left: 50%;
}
.offset-7 {
margin-left: 58.333333%;
}
.offset-8 {
margin-left: 66.666667%;
}
.offset-9 {
margin-left: 75%;
}
.offset-10 {
margin-left: 83.333333%;
}
.offset-11 {
margin-left: 91.666667%;
}
@media (min-width: 576px) {
.col-sm {
-ms-flex-preferred-size: 0;
@ -938,6 +982,42 @@ pre code {
-ms-flex-order: 12;
order: 12;
}
.offset-sm-0 {
margin-left: 0%;
}
.offset-sm-1 {
margin-left: 8.333333%;
}
.offset-sm-2 {
margin-left: 16.666667%;
}
.offset-sm-3 {
margin-left: 25%;
}
.offset-sm-4 {
margin-left: 33.333333%;
}
.offset-sm-5 {
margin-left: 41.666667%;
}
.offset-sm-6 {
margin-left: 50%;
}
.offset-sm-7 {
margin-left: 58.333333%;
}
.offset-sm-8 {
margin-left: 66.666667%;
}
.offset-sm-9 {
margin-left: 75%;
}
.offset-sm-10 {
margin-left: 83.333333%;
}
.offset-sm-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 768px) {
@ -1062,6 +1142,42 @@ pre code {
-ms-flex-order: 12;
order: 12;
}
.offset-md-0 {
margin-left: 0%;
}
.offset-md-1 {
margin-left: 8.333333%;
}
.offset-md-2 {
margin-left: 16.666667%;
}
.offset-md-3 {
margin-left: 25%;
}
.offset-md-4 {
margin-left: 33.333333%;
}
.offset-md-5 {
margin-left: 41.666667%;
}
.offset-md-6 {
margin-left: 50%;
}
.offset-md-7 {
margin-left: 58.333333%;
}
.offset-md-8 {
margin-left: 66.666667%;
}
.offset-md-9 {
margin-left: 75%;
}
.offset-md-10 {
margin-left: 83.333333%;
}
.offset-md-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 992px) {
@ -1186,6 +1302,42 @@ pre code {
-ms-flex-order: 12;
order: 12;
}
.offset-lg-0 {
margin-left: 0%;
}
.offset-lg-1 {
margin-left: 8.333333%;
}
.offset-lg-2 {
margin-left: 16.666667%;
}
.offset-lg-3 {
margin-left: 25%;
}
.offset-lg-4 {
margin-left: 33.333333%;
}
.offset-lg-5 {
margin-left: 41.666667%;
}
.offset-lg-6 {
margin-left: 50%;
}
.offset-lg-7 {
margin-left: 58.333333%;
}
.offset-lg-8 {
margin-left: 66.666667%;
}
.offset-lg-9 {
margin-left: 75%;
}
.offset-lg-10 {
margin-left: 83.333333%;
}
.offset-lg-11 {
margin-left: 91.666667%;
}
}
@media (min-width: 1200px) {
@ -1310,6 +1462,42 @@ pre code {
-ms-flex-order: 12;
order: 12;
}
.offset-xl-0 {
margin-left: 0%;
}
.offset-xl-1 {
margin-left: 8.333333%;
}
.offset-xl-2 {
margin-left: 16.666667%;
}
.offset-xl-3 {
margin-left: 25%;
}
.offset-xl-4 {
margin-left: 33.333333%;
}
.offset-xl-5 {
margin-left: 41.666667%;
}
.offset-xl-6 {
margin-left: 50%;
}
.offset-xl-7 {
margin-left: 58.333333%;
}
.offset-xl-8 {
margin-left: 66.666667%;
}
.offset-xl-9 {
margin-left: 75%;
}
.offset-xl-10 {
margin-left: 83.333333%;
}
.offset-xl-11 {
margin-left: 91.666667%;
}
}
.table {
@ -2385,7 +2573,7 @@ fieldset[disabled] a.btn {
}
.btn-outline-light:hover {
color: #fff;
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
@ -2401,7 +2589,7 @@ fieldset[disabled] a.btn {
.btn-outline-light:active, .btn-outline-light.active,
.show > .btn-outline-light.dropdown-toggle {
color: #fff;
color: #212529;
background-color: #f8f9fa;
border-color: #f8f9fa;
}
@ -3678,6 +3866,10 @@ tbody.collapse.show {
border-bottom-left-radius: 0.25rem;
}
.card .card-header + .list-group > .list-group-item:first-child {
border-top: 0;
}
.card-header {
padding: 0.75rem 1.25rem;
margin-bottom: 0;
@ -3787,9 +3979,9 @@ tbody.collapse.show {
.card-group .card {
-ms-flex: 1 0 0%;
flex: 1 0 0%;
margin-bottom: 0;
}
.card-group .card + .card {
margin-bottom: 0;
margin-left: 0;
border-left: 0;
}
@ -3966,7 +4158,6 @@ tbody.collapse.show {
font-size: 75%;
font-weight: bold;
line-height: 1;
color: #fff;
text-align: center;
white-space: nowrap;
vertical-align: baseline;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -646,7 +646,8 @@ var Carousel = function ($) {
Carousel.prototype.nextWhenVisible = function nextWhenVisible() {
// Don't call next when the page isn't visible
if (!document.hidden) {
// or the carousel or its parent isn't visible
if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
this.next();
}
};

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@ toc: true
## Examples
Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the four **required** contextual classes (e.g., `.alert-success`). For inline dismissal, use the [alerts jQuery plugin](#dismissing).
Alerts are available for any length of text, as well as an optional dismiss button. For proper styling, use one of the eight **required** contextual classes (e.g., `.alert-success`). For inline dismissal, use the [alerts jQuery plugin](#dismissing).
{% example html %}
{% for color in site.data.theme-colors %}

View File

@ -10,7 +10,7 @@ toc: true
Dropdowns are toggleable, contextual overlays for displaying lists of links and more. They're made interactive with the included Bootstrap dropdown JavaScript plugin. They're toggled by clicking, not by hovering; this is [an intentional design decision.](http://markdotto.com/2012/02/27/bootstrap-explained-dropdowns/)
Dropdowns are built on a third party library, [Popper.js](https://popper.js.org), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js](https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js) before Bootstrap's JavaScript.
Dropdowns are built on a third party library, [Popper.js](https://popper.js.org), which provides dynamic positioning and viewport detection. Be sure to include [popper.min.js]({{ site.cdn.popper }}) before Bootstrap's JavaScript.
If you're building our JS from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util).

View File

@ -11,7 +11,7 @@ toc: true
Things to know when using the popover plugin:
- Popovers rely on the 3rd party library [Popper.js](https://popper.js.org) for positioning. You must include [popper.min.js](https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js) before bootstrap.js in order for popovers to work!
- Popovers rely on the 3rd party library [Popper.js](https://popper.js.org) for positioning. You must include [popper.min.js]({{ site.cdn.popper }}) before bootstrap.js in order for popovers to work!
- Popovers require the [tooltip plugin]({{ site.baseurl }}/docs/{{ site.docs_version }}/components/tooltips/) as a dependency.
- If building our JS from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util).
- Popovers are opt-in for performance reasons, so **you must initialize them yourself**.

View File

@ -10,7 +10,7 @@ toc: true
Things to know when using the tooltip plugin:
- Tooltips rely on the 3rd party library [Popper.js](https://popper.js.org) for positioning. You must include [popper.min.js](https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.10.1/umd/popper.min.js) before bootstrap.js in order for tooltips to work!
- Tooltips rely on the 3rd party library [Popper.js](https://popper.js.org) for positioning. You must include [popper.min.js]({{ site.cdn.popper }}) before bootstrap.js in order for tooltips to work!
- If building our JS from source, it [requires `util.js`]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/javascript/#util).
- Tooltips are opt-in for performance reasons, so **you must initialize them yourself**.
- Tooltips with zero-length titles are never displayed.

View File

@ -35,8 +35,6 @@ The default web fonts (Helvetica Neue, Helvetica, and Arial) have been dropped i
$font-family-sans-serif:
// Safari for OS X and iOS (San Francisco)
-apple-system,
// Chrome >= 56 for OS X (San Francisco), Windows, Linux and Android
system-ui,
// Chrome < 56 for OS X (San Francisco)
BlinkMacSystemFont,
// Windows
@ -44,7 +42,9 @@ $font-family-sans-serif:
// Android
"Roboto",
// Basic web fallback
"Helvetica Neue", Arial, sans-serif !default;
"Helvetica Neue", Arial, sans-serif,
// Emoji fonts
"Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
{% endhighlight %}
This `font-family` is applied to the `<body>` and automatically inherited globally throughout Bootstrap. To switch the global `font-family`, update `$font-family-base` and recompile Bootstrap.

View File

@ -45,10 +45,10 @@ Using the most basic table markup, here's how `.table`-based tables look in Boot
</table>
{% endexample %}
You can also invert the colors—with light text on dark backgrounds—with `.table-inverse`.
You can also invert the colors—with light text on dark backgrounds—with `.table-dark`.
{% example html %}
<table class="table table-inverse">
<table class="table table-dark">
<thead>
<tr>
<th>#</th>
@ -82,11 +82,11 @@ You can also invert the colors—with light text on dark backgrounds—with `.ta
## Table head options
Similar to default and inverse tables, use one of two modifier classes to make `<thead>`s appear light or dark gray.
Similar to tables and dark tables, use the modifier classes `.thead-light` or `.thead-dark` to make `<thead>`s appear light or dark gray.
{% example html %}
<table class="table">
<thead class="thead-inverse">
<thead class="thead-dark">
<tr>
<th>#</th>
<th>First Name</th>
@ -117,7 +117,7 @@ Similar to default and inverse tables, use one of two modifier classes to make `
</table>
<table class="table">
<thead class="thead-default">
<thead class="thead-light">
<tr>
<th>#</th>
<th>First Name</th>
@ -186,7 +186,7 @@ Use `.table-striped` to add zebra-striping to any table row within the `<tbody>`
{% endexample %}
{% example html %}
<table class="table table-striped table-inverse">
<table class="table table-striped table-dark">
<thead>
<tr>
<th>#</th>
@ -261,7 +261,7 @@ Add `.table-bordered` for borders on all sides of the table and cells.
{% endexample %}
{% example html %}
<table class="table table-bordered table-inverse">
<table class="table table-bordered table-dark">
<thead>
<tr>
<th>#</th>
@ -335,7 +335,7 @@ Add `.table-hover` to enable a hover state on table rows within a `<tbody>`.
{% endexample %}
{% example html %}
<table class="table table-hover table-inverse">
<table class="table table-hover table-dark">
<thead>
<tr>
<th>#</th>
@ -403,7 +403,7 @@ Add `.table-sm` to make tables more compact by cutting cell padding in half.
{% endexample %}
{% example html %}
<table class="table table-sm table-inverse">
<table class="table table-sm table-dark">
<thead>
<tr>
<th>#</th>
@ -487,10 +487,10 @@ Use contextual classes to color table rows or individual cells.
</tr>
{% endhighlight %}
Regular table background variants are not available with the inverse table, however, you may use [text or background utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/colors/) to achieve similar styles.
Regular table background variants are not available with the dark table, however, you may use [text or background utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/colors/) to achieve similar styles.
<div class="bd-example">
<table class="table table-inverse">
<table class="table table-dark">
<thead>
<tr>
<th>#</th>

View File

@ -51,7 +51,7 @@
<div class="carousel-item active">
<img class="first-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="First slide">
<div class="container">
<div class="carousel-caption d-md-block text-left">
<div class="carousel-caption text-left">
<h1>Example headline.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Sign up today</a></p>
@ -61,7 +61,7 @@
<div class="carousel-item">
<img class="second-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Second slide">
<div class="container">
<div class="carousel-caption d-md-block">
<div class="carousel-caption">
<h1>Another example headline.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Learn more</a></p>
@ -71,7 +71,7 @@
<div class="carousel-item">
<img class="third-slide" src="data:image/gif;base64,R0lGODlhAQABAIAAAHd3dwAAACH5BAAAAAAALAAAAAABAAEAAAICRAEAOw==" alt="Third slide">
<div class="container">
<div class="carousel-caption d-md-block text-right">
<div class="carousel-caption text-right">
<h1>One more for good measure.</h1>
<p>Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus. Nullam id dolor id nibh ultricies vehicula ut id elit.</p>
<p><a class="btn btn-lg btn-primary" href="#" role="button">Browse gallery</a></p>

View File

@ -493,6 +493,22 @@ With the handful of grid tiers available, you're bound to run into issues where,
{% endexample %}
</div>
In addition to column clearing at responsive breakpoints, you may need to reset offsets. See this in action in [the grid example]({{ site.baseurl }}/docs/{{ site.docs_version }}/examples/grid/).
<div class="bd-example-row">
{% example html %}
<div class="row">
<div class="col-sm-5 col-md-6">.col-sm-5 .col-md-6</div>
<div class="col-sm-5 offset-sm-2 col-md-6 offset-md-0">.col-sm-5 .offset-sm-2 .col-md-6 .offset-md-0</div>
</div>
<div class="row">
<div class="col-sm-6 col-md-5 col-lg-6">.col.col-sm-6.col-md-5.col-lg-6</div>
<div class="col-sm-6 col-md-5 offset-md-2 col-lg-6 offset-lg-0">.col-sm-6 .col-md-5 .offset-md-2 .col-lg-6 .offset-lg-0</div>
</div>
{% endexample %}
</div>
## Reordering
### Flex order
@ -519,7 +535,31 @@ Use `.order-` classes for controlling the **visual order** of your content. Thes
### Offsetting columns
With the move to flexbox in v4, we no longer have v3's style of offset classes. Instead, use margin utilities like `.mr-auto` to force sibling columns away from one another.
You can offset grid columns in two ways: our responsive `.offset-` grid classes and our [margin utilities]({{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/spacing/). Grid classes are sized to match columns while margins are more useful for quick layouts where the width of the offset is variable.
#### Offset classes
Move columns to the right using `.offset-md-*` classes. These classes increase the left margin of a column by `*` columns. For example, `.offset-md-4` moves `.col-md-4` over four columns.
<div class="bd-example-row">
{% example html %}
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 offset-md-4">.col-md-4 .offset-md-4</div>
</div>
<div class="row">
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
<div class="col-md-3 offset-md-3">.col-md-3 .offset-md-3</div>
</div>
<div class="row">
<div class="col-md-6 offset-md-3">.col-md-6 .offset-md-3</div>
</div>
{% endexample %}
</div>
#### Margin utilities
With the move to flexbox in v4, you can use margin utilities like `.mr-auto` to force sibling columns away from one another.
<div class="bd-example-row">
{% example html %}
@ -604,6 +644,9 @@ Mixins are used in conjunction with the grid variables to generate semantic CSS
// Make the element grid-ready (applying everything but the width)
@include make-col-ready();
@include make-col($size, $columns: $grid-columns);
// Get fancy by offsetting, or changing the sort order
@include make-col-offset($size, $columns: $grid-columns);
{% endhighlight %}
### Example usage
@ -684,4 +727,4 @@ $container-max-widths: (
);
{% endhighlight %}
When making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will out a brand new set of predefined grid classes for column widths and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints.
When making any changes to the Sass variables or maps, you'll need to save your changes and recompile. Doing so will out a brand new set of predefined grid classes for column widths, offsets, and ordering. Responsive visibility utilities will also be updated to use the custom breakpoints.

View File

@ -14,7 +14,7 @@ Below is an example of a single media object. Only two classes are required—th
{% example html %}
<div class="media">
<img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0">Media heading</h5>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
@ -36,13 +36,13 @@ Media objects can be infinitely nested, though we suggest you stop at some point
{% example html %}
<div class="media">
<img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0">Media heading</h5>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
<div class="media mt-3">
<a class="d-flex pr-3" href="#">
<a class="pr-3" href="#">
<img data-src="holder.js/64x64" alt="Generic placeholder image">
</a>
<div class="media-body">
@ -60,7 +60,7 @@ Media in a media object can be aligned with flexbox utilities to the top (defaul
{% example html %}
<div class="media">
<img class="d-flex align-self-start mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="align-self-start mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0">Top-aligned media</h5>
<p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
@ -71,7 +71,7 @@ Media in a media object can be aligned with flexbox utilities to the top (defaul
{% example html %}
<div class="media">
<img class="d-flex align-self-center mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="align-self-center mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0">Center-aligned media</h5>
<p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
@ -82,7 +82,7 @@ Media in a media object can be aligned with flexbox utilities to the top (defaul
{% example html %}
<div class="media">
<img class="d-flex align-self-end mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="align-self-end mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0">Bottom-aligned media</h5>
<p>Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.</p>
@ -101,7 +101,7 @@ Change the order of content in media objects by modifying the HTML itself, or by
<h5 class="mt-0 mb-1">Media object</h5>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
</div>
<img class="d-flex ml-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="ml-3" data-src="holder.js/64x64" alt="Generic placeholder image">
</div>
{% endexample %}
@ -112,21 +112,21 @@ Because the media object has so few structural requirements, you can also use th
{% example html %}
<ul class="list-unstyled">
<li class="media">
<img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0 mb-1">List-based media object</h5>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
</div>
</li>
<li class="media my-4">
<img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0 mb-1">List-based media object</h5>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.
</div>
</li>
<li class="media">
<img class="d-flex mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<img class="mr-3" data-src="holder.js/64x64" alt="Generic placeholder image">
<div class="media-body">
<h5 class="mt-0 mb-1">List-based media object</h5>
Cras sit amet nibh libero, in gravida nulla. Nulla vel metus scelerisque ante sollicitudin. Cras purus odio, vestibulum in vulputate at, tempus viverra turpis. Fusce condimentum nunc ac nisi vulputate fringilla. Donec lacinia congue felis in faucibus.

View File

@ -212,7 +212,7 @@ Dropped entirely for the new card component.
- All CSS has been un-nested and renamed, ensuring each class is prefixed with `.carousel-`.
- For carousel items, `.next`, `.prev`, `.left`, and `.right` are now `.carousel-item-next`, `.carousel-item-prev`, `.carousel-item-left`, and `.carousel-item-right`.
- `.item` is also now `.carousel-item`.
- For prev/next controls, `.carousel-control.right` and `.carousel-control.left` are now `.carousel-control-right` and `.carousel-control-left`, meaning they no longer require a specific base class.
- For prev/next controls, `.carousel-control.right` and `.carousel-control.left` are now `.carousel-control-next` and `.carousel-control-prev`, meaning they no longer require a specific base class.
- Removed all responsive styling, deferring to utilities (e.g., showing captions on certain viewports) and custom styles as needed.
- Removed image overrides for images in carousel items, deferring to utilities.
- Tweaked the Carousel example to include the new markup and styles.

View File

@ -6,7 +6,7 @@ group: utilities
toc: true
---
Easily clear `float`s by adding `.clearfix` **to the parent element**. Utilizes [the micro clearfix](http://nicolasgallagher.com/micro-clearfix-hack/) as popularized by Nicolas Gallagher. Can also be used as a mixin.
Easily clear `float`s by adding `.clearfix` **to the parent element**. Can also be used as a mixin.
{% highlight html %}
<div class="clearfix">...</div>

View File

@ -1,6 +1,6 @@
---
layout: docs
title: Typography
title: Text
description: Documentation and examples for common text utilities to control alignment, wrapping, weight, and more.
group: utilities
toc: true

View File

@ -14,9 +14,8 @@
"rules": {
// Possible Errors
"no-await-in-loop": "error",
"no-compare-neg-zero": "error",
"no-extra-parens": "error",
"no-prototype-builtins": "off",
"no-prototype-builtins": "error",
"no-template-curly-in-string": "error",
"valid-jsdoc": "error",
@ -75,7 +74,7 @@
"no-param-reassign": "off",
"no-proto": "error",
"no-restricted-properties": "error",
"no-return-assign": "off",
"no-return-assign": "error",
"no-return-await": "error",
"no-script-url": "error",
"no-self-compare": "error",
@ -85,7 +84,6 @@
"no-unused-expressions": "error",
"no-useless-call": "error",
"no-useless-concat": "error",
"no-useless-escape": "error",
"no-useless-return": "off",
"no-void": "error",
"no-warning-comments": "off",
@ -108,7 +106,7 @@
"no-shadow": "off",
"no-shadow-restricted-names": "error",
"no-undef-init": "error",
"no-undefined": "off",
"no-undefined": "error",
"no-use-before-define": "off",
// Node.js and CommonJS
@ -213,7 +211,7 @@
"wrap-regex": "off",
// ECMAScript 6
"arrow-body-style": "off",
"arrow-body-style": ["error", "as-needed"],
"arrow-parens": "error",
"arrow-spacing": "error",
"generator-star-spacing": "error",

3
js/dist/carousel.js vendored
View File

@ -123,7 +123,8 @@ var Carousel = function ($) {
Carousel.prototype.nextWhenVisible = function nextWhenVisible() {
// Don't call next when the page isn't visible
if (!document.hidden) {
// or the carousel or its parent isn't visible
if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
this.next();
}
};

File diff suppressed because one or more lines are too long

View File

@ -131,7 +131,9 @@ const Carousel = (($) => {
nextWhenVisible() {
// Don't call next when the page isn't visible
if (!document.hidden) {
// or the carousel or its parent isn't visible
if (!document.hidden &&
($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {
this.next()
}
}
@ -441,7 +443,7 @@ const Carousel = (($) => {
if (typeof config === 'number') {
data.to(config)
} else if (typeof action === 'string') {
if (data[action] === undefined) {
if (typeof data[action] === 'undefined') {
throw new Error(`No method named "${action}"`)
}
data[action]()

View File

@ -343,7 +343,7 @@ const Collapse = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config]()
@ -361,7 +361,8 @@ const Collapse = (($) => {
*/
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
if (!/input|textarea/i.test(event.target.tagName)) {
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
if (event.target.tagName === 'A' && !$.contains(this, event.target)) {
event.preventDefault()
}

View File

@ -204,7 +204,7 @@ const Dropdown = (($) => {
_getConfig(config) {
const elementData = $(this._element).data()
if (elementData.placement !== undefined) {
if (typeof elementData.placement !== 'undefined') {
elementData.placement = AttachmentMap[elementData.placement.toUpperCase()]
}
@ -287,7 +287,7 @@ const Dropdown = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config]()

View File

@ -68,6 +68,7 @@ const Modal = (($) => {
DATA_TOGGLE : '[data-toggle="modal"]',
DATA_DISMISS : '[data-dismiss="modal"]',
FIXED_CONTENT : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
STICKY_CONTENT : '.sticky-top',
NAVBAR_TOGGLER : '.navbar-toggler'
}
@ -441,6 +442,13 @@ const Modal = (($) => {
$(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)
})
// Adjust sticky content margin
$(Selector.STICKY_CONTENT).each((index, element) => {
const actualMargin = $(element)[0].style.marginRight
const calculatedMargin = $(element).css('margin-right')
$(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)
})
// Adjust navbar-toggler margin
$(Selector.NAVBAR_TOGGLER).each((index, element) => {
const actualMargin = $(element)[0].style.marginRight
@ -464,8 +472,8 @@ const Modal = (($) => {
}
})
// Restore navbar-toggler margin
$(Selector.NAVBAR_TOGGLER).each((index, element) => {
// Restore sticky content and navbar-toggler margin
$(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {
const margin = $(element).data('margin-right')
if (typeof margin !== 'undefined') {
$(element).css('margin-right', margin).removeData('margin-right')
@ -507,7 +515,7 @@ const Modal = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config](relatedTarget)

View File

@ -114,7 +114,8 @@ const Popover = (($) => {
}
getTipElement() {
return this.tip = this.tip || $(this.config.template)[0]
this.tip = this.tip || $(this.config.template)[0]
return this.tip
}
setContent() {
@ -162,7 +163,7 @@ const Popover = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config]()

View File

@ -231,7 +231,7 @@ const ScrollSpy = (($) => {
for (let i = this._offsets.length; i--;) {
const isActiveTarget = this._activeTarget !== this._targets[i]
&& scrollTop >= this._offsets[i]
&& (this._offsets[i + 1] === undefined ||
&& (typeof this._offsets[i + 1] === 'undefined' ||
scrollTop < this._offsets[i + 1])
if (isActiveTarget) {
@ -246,6 +246,7 @@ const ScrollSpy = (($) => {
this._clear()
let queries = this._selector.split(',')
// eslint-disable-next-line arrow-body-style
queries = queries.map((selector) => {
return `${selector}[data-target="${target}"],` +
`${selector}[href="${target}"]`
@ -287,7 +288,7 @@ const ScrollSpy = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config]()

View File

@ -238,7 +238,7 @@ const Tab = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config]()

View File

@ -184,6 +184,10 @@ const Tooltip = (($) => {
}
toggle(event) {
if (!this._isEnabled) {
return
}
if (event) {
const dataKey = this.constructor.DATA_KEY
let context = $(event.currentTarget).data(dataKey)
@ -234,8 +238,8 @@ const Tooltip = (($) => {
if (this._popper !== null) {
this._popper.destroy()
}
this._popper = null
this._popper = null
this.element = null
this.config = null
this.tip = null
@ -415,7 +419,8 @@ const Tooltip = (($) => {
}
getTipElement() {
return this.tip = this.tip || $(this.config.template)[0]
this.tip = this.tip || $(this.config.template)[0]
return this.tip
}
setContent() {
@ -698,14 +703,13 @@ const Tooltip = (($) => {
}
if (typeof config === 'string') {
if (data[config] === undefined) {
if (typeof data[config] === 'undefined') {
throw new Error(`No method named "${config}"`)
}
data[config]()
}
})
}
}

View File

@ -42,7 +42,7 @@ const Util = (($) => {
if ($(event.target).is(this)) {
return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params
}
return undefined
return undefined // eslint-disable-line no-undefined
}
}
}
@ -55,7 +55,7 @@ const Util = (($) => {
const el = document.createElement('bootstrap')
for (const name in TransitionEndEvent) {
if (el.style[name] !== undefined) {
if (typeof el.style[name] !== 'undefined') {
return {
end: TransitionEndEvent[name]
}
@ -138,7 +138,7 @@ const Util = (($) => {
typeCheckConfig(componentName, config, configTypes) {
for (const property in configTypes) {
if (configTypes.hasOwnProperty(property)) {
if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
const expectedTypes = configTypes[property]
const value = config[property]
const valueType = value && isElement(value) ?

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.alert, undefined, 'alert was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.alert, 'undefined', 'alert was set back to undefined (org value)')
})
QUnit.test('should return jquery collection containing the element', function (assert) {

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.button, undefined, 'button was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.button, 'undefined', 'button was set back to undefined (org value)')
})
QUnit.test('should return jquery collection containing the element', function (assert) {

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.carousel, undefined, 'carousel was set back to undefined (orig value)')
assert.strictEqual(typeof $.fn.carousel, 'undefined', 'carousel was set back to undefined (orig value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {
@ -371,14 +371,14 @@ $(function () {
var done = assert.async()
$(template)
.on('slid.bs.carousel', function (e) {
assert.ok(e.from !== undefined, 'from present')
assert.ok(e.to !== undefined, 'to present')
assert.ok(typeof e.from !== 'undefined', 'from present')
assert.ok(typeof e.to !== 'undefined', 'to present')
$(this).off()
done()
})
.on('slide.bs.carousel', function (e) {
assert.ok(e.from !== undefined, 'from present')
assert.ok(e.to !== undefined, 'to present')
assert.ok(typeof e.from !== 'undefined', 'from present')
assert.ok(typeof e.to !== 'undefined', 'to present')
$(this).off('slide.bs.carousel')
})
.bootstrapCarousel('next')
@ -842,4 +842,80 @@ $(function () {
})
$textArea.trigger(eventKeyDown)
})
QUnit.test('Should not go to the next item when the carousel is not visible', function (assert) {
assert.expect(2)
var done = assert.async()
var html = '<div id="myCarousel" class="carousel slide" data-interval="50" style="display: none;">'
+ ' <div class="carousel-inner">'
+ ' <div id="firstItem" class="carousel-item active">'
+ ' <img alt="">'
+ ' </div>'
+ ' <div class="carousel-item">'
+ ' <img alt="">'
+ ' </div>'
+ ' <div class="carousel-item">'
+ ' <img alt="">'
+ ' </div>'
+ ' <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>'
+ ' <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>'
+ '</div>'
var $html = $(html)
$html
.appendTo('#qunit-fixture')
.bootstrapCarousel()
var $firstItem = $('#firstItem')
setTimeout(function () {
assert.ok($firstItem.hasClass('active'))
$html
.bootstrapCarousel('dispose')
.attr('style', 'visibility: hidden;')
.bootstrapCarousel()
setTimeout(function () {
assert.ok($firstItem.hasClass('active'))
done()
}, 80)
}, 80)
})
QUnit.test('Should not go to the next item when the parent of the carousel is not visible', function (assert) {
assert.expect(2)
var done = assert.async()
var html = '<div id="parent" style="display: none;">'
+ ' <div id="myCarousel" class="carousel slide" data-interval="50" style="display: none;">'
+ ' <div class="carousel-inner">'
+ ' <div id="firstItem" class="carousel-item active">'
+ ' <img alt="">'
+ ' </div>'
+ ' <div class="carousel-item">'
+ ' <img alt="">'
+ ' </div>'
+ ' <div class="carousel-item">'
+ ' <img alt="">'
+ ' </div>'
+ ' <a class="left carousel-control" href="#myCarousel" data-slide="prev">&lsaquo;</a>'
+ ' <a class="right carousel-control" href="#myCarousel" data-slide="next">&rsaquo;</a>'
+ ' </div>'
+ '</div>'
var $html = $(html)
$html.appendTo('#qunit-fixture')
var $parent = $html.find('#parent')
var $carousel = $html.find('#myCarousel')
$carousel.bootstrapCarousel()
var $firstItem = $('#firstItem')
setTimeout(function () {
assert.ok($firstItem.hasClass('active'))
$carousel.bootstrapCarousel('dispose')
$parent.attr('style', 'visibility: hidden;')
$carousel.bootstrapCarousel()
setTimeout(function () {
assert.ok($firstItem.hasClass('active'))
done()
}, 80)
}, 80)
})
})

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.collapse, undefined, 'collapse was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.collapse, 'undefined', 'collapse was set back to undefined (org value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {
@ -673,4 +673,29 @@ $(function () {
})
$trigger3.trigger('click')
})
QUnit.test('should not prevent interactions inside the collapse element', function (assert) {
assert.expect(2)
var done = assert.async()
var $target = $('<input type="checkbox" data-toggle="collapse" data-target="#collapsediv1" />').appendTo('#qunit-fixture')
var htmlCollapse =
'<div id="collapsediv1" class="collapse">' +
' <input type="checkbox" id="testCheckbox" />' +
'</div>'
$(htmlCollapse)
.appendTo('#qunit-fixture')
.on('shown.bs.collapse', function () {
assert.ok($target.prop('checked'), '$trigger is checked')
var $testCheckbox = $('#testCheckbox')
$testCheckbox.trigger($.Event('click'))
setTimeout(function () {
assert.ok($testCheckbox.prop('checked'), '$testCheckbox is checked too')
done()
}, 5)
})
$target.trigger($.Event('click'))
})
})

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.dropdown, undefined, 'dropdown was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.dropdown, 'undefined', 'dropdown was set back to undefined (org value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {
@ -644,7 +644,7 @@ $(function () {
$triggerDropdown
.parent('.dropdown')
.on('shown.bs.dropdown', function () {
assert.ok($dropdownMenu.attr('style') === undefined, 'No inline style applied by Popper.js')
assert.ok(typeof $dropdownMenu.attr('style') === 'undefined', 'No inline style applied by Popper.js')
done()
})
$triggerDropdown.trigger($.Event('click'))

View File

@ -34,7 +34,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.modal, undefined, 'modal was set back to undefined (orig value)')
assert.strictEqual(typeof $.fn.modal, 'undefined', 'modal was set back to undefined (orig value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {
@ -380,7 +380,7 @@ $(function () {
$('<div id="modal-test"/>')
.on('hidden.bs.modal', function () {
assert.strictEqual($body.data('padding-right'), undefined, 'data-padding-right should be cleared after closing')
assert.strictEqual(typeof $body.data('padding-right'), 'undefined', 'data-padding-right should be cleared after closing')
$body.removeAttr('style')
done()
})
@ -422,7 +422,7 @@ $(function () {
$('<div id="modal-test"/>')
.on('hidden.bs.modal', function () {
assert.strictEqual($element.data('padding-right'), undefined, 'data-padding-right should be cleared after closing')
assert.strictEqual(typeof $element.data('padding-right'), 'undefined', 'data-padding-right should be cleared after closing')
$element.remove()
done()
})
@ -433,6 +433,48 @@ $(function () {
.bootstrapModal('show')
})
QUnit.test('should adjust the inline margin of sticky elements when opening and restore when closing', function (assert) {
assert.expect(2)
var done = assert.async()
var $element = $('<div class="sticky-top"></div>').appendTo('#qunit-fixture')
var originalPadding = $element.css('margin-right')
$('<div id="modal-test"/>')
.on('hidden.bs.modal', function () {
var currentPadding = $element.css('margin-right')
assert.strictEqual(currentPadding, originalPadding, 'sticky element margin should be reset after closing')
$element.remove()
done()
})
.on('shown.bs.modal', function () {
var expectedPadding = parseFloat(originalPadding) - $(this).getScrollbarWidth() + 'px'
var currentPadding = $element.css('margin-right')
assert.strictEqual(currentPadding, expectedPadding, 'sticky element margin should be adjusted while opening')
$(this).bootstrapModal('hide')
})
.bootstrapModal('show')
})
QUnit.test('should store the original margin of sticky elements in data-margin-right before showing', function (assert) {
assert.expect(2)
var done = assert.async()
var $element = $('<div class="sticky-top"></div>').appendTo('#qunit-fixture')
var originalPadding = '0px'
$element.css('margin-right', originalPadding)
$('<div id="modal-test"/>')
.on('hidden.bs.modal', function () {
assert.strictEqual(typeof $element.data('margin-right'), 'undefined', 'data-margin-right should be cleared after closing')
$element.remove()
done()
})
.on('shown.bs.modal', function () {
assert.strictEqual($element.data('margin-right'), originalPadding, 'original sticky element margin should be stored in data-margin-right')
$(this).bootstrapModal('hide')
})
.bootstrapModal('show')
})
QUnit.test('should adjust the inline margin of the navbar-toggler when opening and restore when closing', function (assert) {
assert.expect(2)
var done = assert.async()
@ -464,7 +506,7 @@ $(function () {
$('<div id="modal-test"/>')
.on('hidden.bs.modal', function () {
assert.strictEqual($element.data('margin-right'), undefined, 'data-margin-right should be cleared after closing')
assert.strictEqual(typeof $element.data('margin-right'), 'undefined', 'data-margin-right should be cleared after closing')
$element.remove()
done()
})

View File

@ -22,7 +22,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.popover, undefined, 'popover was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.popover, 'undefined', 'popover was set back to undefined (org value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {
@ -304,7 +304,7 @@ $(function () {
assert.ok(false, 'should not fire any popover events')
})
.bootstrapPopover('hide')
assert.strictEqual($popover.data('bs.popover'), undefined, 'should not initialize the popover')
assert.strictEqual(typeof $popover.data('bs.popover'), 'undefined', 'should not initialize the popover')
})
QUnit.test('should fire inserted event', function (assert) {
@ -387,4 +387,27 @@ $(function () {
$popover.bootstrapPopover('show')
})
QUnit.test('popover should be shown right away after the call of disable/enable', function (assert) {
assert.expect(2)
var done = assert.async()
var $popover = $('<a href="#">@mdo</a>')
.appendTo('#qunit-fixture')
.bootstrapPopover({
title: 'Test popover',
content: 'with disable/enable'
})
.on('shown.bs.popover', function () {
assert.strictEqual($('.popover').hasClass('show'), true)
done()
})
$popover.bootstrapPopover('disable')
$popover.trigger($.Event('click'))
setTimeout(function () {
assert.strictEqual($('.popover').length === 0, true)
$popover.bootstrapPopover('enable')
$popover.trigger($.Event('click'))
}, 200)
})
})

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.scrollspy, undefined, 'scrollspy was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.scrollspy, 'undefined', 'scrollspy was set back to undefined (org value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {

View File

@ -21,7 +21,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.tab, undefined, 'tab was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.tab, 'undefined', 'tab was set back to undefined (org value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {

View File

@ -22,7 +22,7 @@ $(function () {
QUnit.test('should provide no conflict', function (assert) {
assert.expect(1)
assert.strictEqual($.fn.tooltip, undefined, 'tooltip was set back to undefined (org value)')
assert.strictEqual(typeof $.fn.tooltip, 'undefined', 'tooltip was set back to undefined (org value)')
})
QUnit.test('should throw explicit error on undefined method', function (assert) {
@ -382,7 +382,7 @@ $(function () {
.on('inserted.bs.tooltip', function () {
var $tooltip = $($(this).data('bs.tooltip').tip)
assert.ok($tooltip.hasClass('bs-tooltip-right'))
assert.ok($tooltip.attr('style') === undefined)
assert.ok(typeof $tooltip.attr('style') === 'undefined')
$styles.remove()
done()
})
@ -701,7 +701,7 @@ $(function () {
assert.ok(false, 'should not fire any tooltip events')
})
.bootstrapTooltip('hide')
assert.strictEqual($tooltip.data('bs.tooltip'), undefined, 'should not initialize the tooltip')
assert.strictEqual(typeof $tooltip.data('bs.tooltip'), 'undefined', 'should not initialize the tooltip')
})
QUnit.test('should not remove tooltip if multiple triggers are set and one is still active', function (assert) {
@ -826,4 +826,26 @@ $(function () {
$el.bootstrapTooltip('show')
})
QUnit.test('tooltip should be shown right away after the call of disable/enable', function (assert) {
assert.expect(2)
var done = assert.async()
var $trigger = $('<a href="#" rel="tooltip" data-trigger="click" title="Another tooltip"/>')
.appendTo('#qunit-fixture')
.bootstrapTooltip()
.on('shown.bs.tooltip', function () {
assert.strictEqual($('.tooltip').hasClass('show'), true)
done()
})
$trigger.bootstrapTooltip('disable')
$trigger.trigger($.Event('click'))
setTimeout(function () {
assert.strictEqual($('.tooltip').length === 0, true)
$trigger.bootstrapTooltip('enable')
$trigger.trigger($.Event('click'))
}, 200)
})
})

View File

@ -57,7 +57,7 @@
</div>
</div>
<script src="../../../docs/assets/js/vendor/jquery-slim.min.js"></script>
<script src="../../../assets/js/vendor/jquery-slim.min.js"></script>
<script src="../../dist/util.js"></script>
<script src="../../dist/collapse.js"></script>
</body>

View File

@ -16,8 +16,8 @@
<copyright>Copyright 2017</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<dependencies>
<dependency id="jQuery" version="[1.9.1,4)" />
<dependency id="popper.js" version="[1.11,2)" />
<dependency id="jQuery" version="[3.0.0,4)" />
<dependency id="popper.js" version="[1.12.3,2)" />
</dependencies>
<tags>css mobile-first responsive front-end framework web</tags>
</metadata>

View File

@ -16,8 +16,8 @@
<copyright>Copyright 2017</copyright>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<dependencies>
<dependency id="jQuery" version="[1.9.1,4)" />
<dependency id="popper.js" version="[1.11,2)" />
<dependency id="jQuery" version="[3.0.0,4)" />
<dependency id="popper.js" version="[1.12.3,2)" />
</dependencies>
<tags>css sass mobile-first responsive front-end framework web</tags>
</metadata>

564
package-lock.json generated
View File

@ -257,7 +257,7 @@
"integrity": "sha1-++rwfUj9h44Ggr98vurecorbKxg=",
"dev": true,
"requires": {
"browserslist": "2.3.2",
"browserslist": "2.3.3",
"caniuse-lite": "1.0.30000715",
"normalize-range": "0.1.2",
"num2fraction": "1.2.2",
@ -278,15 +278,15 @@
"dev": true
},
"babel-cli": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.24.1.tgz",
"integrity": "sha1-IHzXBbumFImy6kG1MSNBz2rKIoM=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-cli/-/babel-cli-6.26.0.tgz",
"integrity": "sha1-UCq1SHTX24itALiHoGODzgPQAvE=",
"dev": true,
"requires": {
"babel-core": "6.25.0",
"babel-polyfill": "6.23.0",
"babel-register": "6.24.1",
"babel-runtime": "6.25.0",
"babel-core": "6.26.0",
"babel-polyfill": "6.26.0",
"babel-register": "6.26.0",
"babel-runtime": "6.26.0",
"chokidar": "1.7.0",
"commander": "2.11.0",
"convert-source-map": "1.5.0",
@ -301,9 +301,9 @@
}
},
"babel-code-frame": {
"version": "6.22.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.22.0.tgz",
"integrity": "sha1-AnYgvuVnqIwyVhV05/0IAdMxGOQ=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz",
"integrity": "sha1-Y/1D99weO7fONZR9uP42mj9Yx0s=",
"dev": true,
"requires": {
"chalk": "1.1.3",
@ -339,21 +339,21 @@
}
},
"babel-core": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.25.0.tgz",
"integrity": "sha1-fdQrBGPHQunVKW3rPsZ6kyLa1yk=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.0.tgz",
"integrity": "sha1-rzL3izGm/O8RnIew/Y2XU/A6C7g=",
"dev": true,
"requires": {
"babel-code-frame": "6.22.0",
"babel-generator": "6.25.0",
"babel-code-frame": "6.26.0",
"babel-generator": "6.26.0",
"babel-helpers": "6.24.1",
"babel-messages": "6.23.0",
"babel-register": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0",
"babylon": "6.17.4",
"babel-register": "6.26.0",
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"convert-source-map": "1.5.0",
"debug": "2.6.8",
"json5": "0.5.1",
@ -371,21 +371,21 @@
"integrity": "sha1-sv4tgBJkcPXBlELcdXJTqJdxCCc=",
"dev": true,
"requires": {
"babel-code-frame": "6.22.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0",
"babylon": "6.17.4"
"babel-code-frame": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0"
}
},
"babel-generator": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.25.0.tgz",
"integrity": "sha1-M6GvcNXyiQrrRlpKd5PB32qeqfw=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.0.tgz",
"integrity": "sha1-rBriAHC3n248odMmlhMFN3TyDcU=",
"dev": true,
"requires": {
"babel-messages": "6.23.0",
"babel-runtime": "6.25.0",
"babel-types": "6.25.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"detect-indent": "4.0.0",
"jsesc": "1.3.0",
"lodash": "4.17.4",
@ -400,20 +400,20 @@
"dev": true,
"requires": {
"babel-helper-hoist-variables": "6.24.1",
"babel-runtime": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-helper-define-map": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.24.1.tgz",
"integrity": "sha1-epdH8ljYlH0y1RX2qhx70CIEoIA=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz",
"integrity": "sha1-pfVtq0GiX5fstJjH66ypgZ+Vvl8=",
"dev": true,
"requires": {
"babel-helper-function-name": "6.24.1",
"babel-runtime": "6.25.0",
"babel-types": "6.25.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"lodash": "4.17.4"
}
},
@ -424,10 +424,10 @@
"dev": true,
"requires": {
"babel-helper-get-function-arity": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-helper-get-function-arity": {
@ -436,8 +436,8 @@
"integrity": "sha1-j3eCqpNAfEHTqlCQj4mwMbG2hT0=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-helper-hoist-variables": {
@ -446,8 +446,8 @@
"integrity": "sha1-HssnaJydJVE+rbyZFKc/VAi+enY=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-helper-optimise-call-expression": {
@ -456,18 +456,18 @@
"integrity": "sha1-96E0J7qfc/j0+pk8VKl4gtEkQlc=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-helper-regex": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.24.1.tgz",
"integrity": "sha1-024i+rEAjXnYhkjjIRaGgShFbOg=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz",
"integrity": "sha1-MlxZ+QL4LyS3T6zu0DY5VPZJXnI=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"lodash": "4.17.4"
}
},
@ -479,10 +479,10 @@
"requires": {
"babel-helper-optimise-call-expression": "6.24.1",
"babel-messages": "6.23.0",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-helpers": {
@ -491,8 +491,8 @@
"integrity": "sha1-NHHenK7DiOXIUOWX5Yom3fN2ArI=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-template": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0"
}
},
"babel-messages": {
@ -501,7 +501,7 @@
"integrity": "sha1-8830cDhYA1sqKVHG7F7fbGLyYw4=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-check-es2015-constants": {
@ -510,7 +510,7 @@
"integrity": "sha1-NRV7EBQm/S/9PaP3XH0ekYNbv4o=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-arrow-functions": {
@ -519,7 +519,7 @@
"integrity": "sha1-RSaSy3EdX3ncf4XkQM5BufJE0iE=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-block-scoped-functions": {
@ -528,19 +528,19 @@
"integrity": "sha1-u8UbSflk1wy42OC5ToICRs46YUE=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-block-scoping": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.24.1.tgz",
"integrity": "sha1-dsKV3DpHQbFmWt/TFnIV3P8ypXY=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz",
"integrity": "sha1-1w9SmcEwjQXBL0Y4E7CgnnOxiV8=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0",
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"lodash": "4.17.4"
}
},
@ -550,15 +550,15 @@
"integrity": "sha1-WkxYpQyclGHlZLSyo7+ryXolhNs=",
"dev": true,
"requires": {
"babel-helper-define-map": "6.24.1",
"babel-helper-define-map": "6.26.0",
"babel-helper-function-name": "6.24.1",
"babel-helper-optimise-call-expression": "6.24.1",
"babel-helper-replace-supers": "6.24.1",
"babel-messages": "6.23.0",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-computed-properties": {
@ -567,8 +567,8 @@
"integrity": "sha1-b+Ko0WiV1WNPTNmZttNICjCBWbM=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-template": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0"
}
},
"babel-plugin-transform-es2015-destructuring": {
@ -577,7 +577,7 @@
"integrity": "sha1-mXux8auWf2gtKwh2/jWNYOdlxW0=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-duplicate-keys": {
@ -586,8 +586,8 @@
"integrity": "sha1-c+s9MQypaePvnskcU3QabxV2Qj4=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-for-of": {
@ -596,7 +596,7 @@
"integrity": "sha1-9HyVsrYT3x0+zC/bdXNiPHUkhpE=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-function-name": {
@ -606,8 +606,8 @@
"dev": true,
"requires": {
"babel-helper-function-name": "6.24.1",
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-literals": {
@ -616,7 +616,7 @@
"integrity": "sha1-T1SgLWzWbPkVKAAZox0xklN3yi4=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-modules-amd": {
@ -625,21 +625,21 @@
"integrity": "sha1-Oz5UAXI5hC1tGcMBHEvS8AoA0VQ=",
"dev": true,
"requires": {
"babel-plugin-transform-es2015-modules-commonjs": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0"
"babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
"babel-runtime": "6.26.0",
"babel-template": "6.26.0"
}
},
"babel-plugin-transform-es2015-modules-commonjs": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.24.1.tgz",
"integrity": "sha1-0+MQtA72ZKNmIiAAl8bUQCmPK/4=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.0.tgz",
"integrity": "sha1-DYOUApt9xqvhqX7xgeAHWN0uXYo=",
"dev": true,
"requires": {
"babel-plugin-transform-strict-mode": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-modules-strip": {
@ -655,8 +655,8 @@
"dev": true,
"requires": {
"babel-helper-hoist-variables": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0"
}
},
"babel-plugin-transform-es2015-modules-umd": {
@ -666,8 +666,8 @@
"dev": true,
"requires": {
"babel-plugin-transform-es2015-modules-amd": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0"
}
},
"babel-plugin-transform-es2015-object-super": {
@ -677,7 +677,7 @@
"dev": true,
"requires": {
"babel-helper-replace-supers": "6.24.1",
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-parameters": {
@ -688,10 +688,10 @@
"requires": {
"babel-helper-call-delegate": "6.24.1",
"babel-helper-get-function-arity": "6.24.1",
"babel-runtime": "6.25.0",
"babel-template": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-template": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-shorthand-properties": {
@ -700,8 +700,8 @@
"integrity": "sha1-JPh11nIch2YbvZmkYi5R8U3jiqA=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-spread": {
@ -710,7 +710,7 @@
"integrity": "sha1-1taKmfia7cRTbIGlQujdnxdG+NE=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-sticky-regex": {
@ -719,9 +719,9 @@
"integrity": "sha1-AMHNsaynERLN8M9hJsLta0V8zbw=",
"dev": true,
"requires": {
"babel-helper-regex": "6.24.1",
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-helper-regex": "6.26.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-plugin-transform-es2015-template-literals": {
@ -730,7 +730,7 @@
"integrity": "sha1-qEs0UPfp+PH2g51taH2oS7EjbY0=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-typeof-symbol": {
@ -739,7 +739,7 @@
"integrity": "sha1-3sCfHN3/lLUqxz1QXITfWdzOs3I=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0"
"babel-runtime": "6.26.0"
}
},
"babel-plugin-transform-es2015-unicode-regex": {
@ -748,18 +748,18 @@
"integrity": "sha1-04sS9C6nMj9yk4fxinxa4frrNek=",
"dev": true,
"requires": {
"babel-helper-regex": "6.24.1",
"babel-runtime": "6.25.0",
"babel-helper-regex": "6.26.0",
"babel-runtime": "6.26.0",
"regexpu-core": "2.0.0"
}
},
"babel-plugin-transform-regenerator": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.24.1.tgz",
"integrity": "sha1-uNowWtQ8PJm0hI5P5AN7dw0jxBg=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz",
"integrity": "sha1-4HA2lvveJ/Cj78rPi03KL3s6jy8=",
"dev": true,
"requires": {
"regenerator-transform": "0.9.11"
"regenerator-transform": "0.10.1"
}
},
"babel-plugin-transform-strict-mode": {
@ -768,19 +768,27 @@
"integrity": "sha1-1fr3qleKZbvlkc9e2uBKDGcCB1g=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0"
"babel-runtime": "6.26.0",
"babel-types": "6.26.0"
}
},
"babel-polyfill": {
"version": "6.23.0",
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
"integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.26.0.tgz",
"integrity": "sha1-N5k3q8Z9eJWXCtxiHyhM2WbPIVM=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-runtime": "6.26.0",
"core-js": "2.5.0",
"regenerator-runtime": "0.10.5"
},
"dependencies": {
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
"dev": true
}
}
},
"babel-preset-es2015": {
@ -792,7 +800,7 @@
"babel-plugin-check-es2015-constants": "6.22.0",
"babel-plugin-transform-es2015-arrow-functions": "6.22.0",
"babel-plugin-transform-es2015-block-scoped-functions": "6.22.0",
"babel-plugin-transform-es2015-block-scoping": "6.24.1",
"babel-plugin-transform-es2015-block-scoping": "6.26.0",
"babel-plugin-transform-es2015-classes": "6.24.1",
"babel-plugin-transform-es2015-computed-properties": "6.24.1",
"babel-plugin-transform-es2015-destructuring": "6.23.0",
@ -801,7 +809,7 @@
"babel-plugin-transform-es2015-function-name": "6.24.1",
"babel-plugin-transform-es2015-literals": "6.22.0",
"babel-plugin-transform-es2015-modules-amd": "6.24.1",
"babel-plugin-transform-es2015-modules-commonjs": "6.24.1",
"babel-plugin-transform-es2015-modules-commonjs": "6.26.0",
"babel-plugin-transform-es2015-modules-systemjs": "6.24.1",
"babel-plugin-transform-es2015-modules-umd": "6.24.1",
"babel-plugin-transform-es2015-object-super": "6.24.1",
@ -812,58 +820,58 @@
"babel-plugin-transform-es2015-template-literals": "6.22.0",
"babel-plugin-transform-es2015-typeof-symbol": "6.23.0",
"babel-plugin-transform-es2015-unicode-regex": "6.24.1",
"babel-plugin-transform-regenerator": "6.24.1"
"babel-plugin-transform-regenerator": "6.26.0"
}
},
"babel-register": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.24.1.tgz",
"integrity": "sha1-fhDhOi9xBlvfrVoXh7pFvKbe118=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz",
"integrity": "sha1-btAhFz4vy0htestFxgCahW9kcHE=",
"dev": true,
"requires": {
"babel-core": "6.25.0",
"babel-runtime": "6.25.0",
"babel-core": "6.26.0",
"babel-runtime": "6.26.0",
"core-js": "2.5.0",
"home-or-tmp": "2.0.0",
"lodash": "4.17.4",
"mkdirp": "0.5.1",
"source-map-support": "0.4.15"
"source-map-support": "0.4.16"
}
},
"babel-runtime": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.25.0.tgz",
"integrity": "sha1-M7mOql1IK7AajRqmtDetKwGuxBw=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz",
"integrity": "sha1-llxwWGaOgrVde/4E/yM3vItWR/4=",
"dev": true,
"requires": {
"core-js": "2.5.0",
"regenerator-runtime": "0.10.5"
"regenerator-runtime": "0.11.0"
}
},
"babel-template": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.25.0.tgz",
"integrity": "sha1-ZlJBFmt8KqTGGdceGSlpVSsQwHE=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz",
"integrity": "sha1-3gPi0WOWsGn0bdn/+FIfsaDjXgI=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-traverse": "6.25.0",
"babel-types": "6.25.0",
"babylon": "6.17.4",
"babel-runtime": "6.26.0",
"babel-traverse": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"lodash": "4.17.4"
}
},
"babel-traverse": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.25.0.tgz",
"integrity": "sha1-IldJfi/NGbie3BPEyROB+VEklvE=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz",
"integrity": "sha1-RqnL1+3MYsjlwGTi0tjQ9ANXZu4=",
"dev": true,
"requires": {
"babel-code-frame": "6.22.0",
"babel-code-frame": "6.26.0",
"babel-messages": "6.23.0",
"babel-runtime": "6.25.0",
"babel-types": "6.25.0",
"babylon": "6.17.4",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"babylon": "6.18.0",
"debug": "2.6.8",
"globals": "9.18.0",
"invariant": "2.2.2",
@ -871,21 +879,21 @@
}
},
"babel-types": {
"version": "6.25.0",
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.25.0.tgz",
"integrity": "sha1-cK+ySNVmDl0Y+BHZHIMDtUE0oY4=",
"version": "6.26.0",
"resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz",
"integrity": "sha1-o7Bz+Uq0nrb6Vc1lInozQ4BjJJc=",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-runtime": "6.26.0",
"esutils": "2.0.2",
"lodash": "4.17.4",
"to-fast-properties": "1.0.3"
}
},
"babylon": {
"version": "6.17.4",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.17.4.tgz",
"integrity": "sha512-kChlV+0SXkjE0vUn9OZ7pBMWRFd8uq3mZe8x1K6jhuNcAFAtEnjchFAqB+dYEXKyd+JpT6eppRR78QAr5gTsUw==",
"version": "6.18.0",
"resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz",
"integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==",
"dev": true
},
"balanced-match": {
@ -905,9 +913,9 @@
}
},
"binary-extensions": {
"version": "1.9.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.9.0.tgz",
"integrity": "sha1-ZlBsFs5vTWkopbPNajPKQelB43s=",
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.10.0.tgz",
"integrity": "sha1-muuabF6IY4qtFx4Wf1kAq+JINdA=",
"dev": true
},
"block-stream": {
@ -956,9 +964,9 @@
}
},
"browserslist": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.3.2.tgz",
"integrity": "sha512-arvLUwBTsmpfmyMfoBQH8WWICiyaVkMxJsft73/rTRU80rAPSXsi3M0uYBcUH22w7MG475eET31F4M0+31w81g==",
"version": "2.3.3",
"resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.3.3.tgz",
"integrity": "sha512-p9hz6FA2H1w1ZUAXKfK3MlIA4Z9fEd56hnZSOecBIITb5j0oZk/tZRwhdE0xG56RGx2x8cc1c5AWJKWVjMLOEQ==",
"dev": true,
"requires": {
"caniuse-lite": "1.0.30000715",
@ -1591,7 +1599,7 @@
"dev": true,
"requires": {
"ajv": "5.2.2",
"babel-code-frame": "6.22.0",
"babel-code-frame": "6.26.0",
"chalk": "1.1.3",
"concat-stream": "1.6.0",
"cross-spawn": "5.1.0",
@ -1608,7 +1616,7 @@
"globals": "9.18.0",
"ignore": "3.3.3",
"imurmurhash": "0.1.4",
"inquirer": "3.2.1",
"inquirer": "3.2.2",
"is-resolvable": "1.0.0",
"js-yaml": "3.9.1",
"json-stable-stringify": "1.0.1",
@ -1825,34 +1833,26 @@
}
},
"extract-zip": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.5.0.tgz",
"integrity": "sha1-ksz22B73Cp+kwXRxFMzvbYaIpsQ=",
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.6.5.tgz",
"integrity": "sha1-maBnNbbqIOqbcF13ms/8yHz/BEA=",
"dev": true,
"requires": {
"concat-stream": "1.5.0",
"debug": "0.7.4",
"concat-stream": "1.6.0",
"debug": "2.2.0",
"mkdirp": "0.5.0",
"yauzl": "2.4.1"
},
"dependencies": {
"concat-stream": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.5.0.tgz",
"integrity": "sha1-U/fUPFHF5D+ByP3QMyHGMb5o1hE=",
"debug": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-2.2.0.tgz",
"integrity": "sha1-+HBX6ZWxofauaklgZkE3vFbwOdo=",
"dev": true,
"requires": {
"inherits": "2.0.3",
"readable-stream": "2.0.6",
"typedarray": "0.0.6"
"ms": "0.7.1"
}
},
"debug": {
"version": "0.7.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-0.7.4.tgz",
"integrity": "sha1-BuHqgILCyxTjmAbiLi9vdX+Srzk=",
"dev": true
},
"mkdirp": {
"version": "0.5.0",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.0.tgz",
@ -1862,24 +1862,10 @@
"minimist": "0.0.8"
}
},
"readable-stream": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.0.6.tgz",
"integrity": "sha1-j5A0HmilPMySh4jaz80Rs265t44=",
"dev": true,
"requires": {
"core-util-is": "1.0.2",
"inherits": "2.0.3",
"isarray": "1.0.0",
"process-nextick-args": "1.0.7",
"string_decoder": "0.10.31",
"util-deprecate": "1.0.2"
}
},
"string_decoder": {
"version": "0.10.31",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
"integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=",
"ms": {
"version": "0.7.1",
"resolved": "https://registry.npmjs.org/ms/-/ms-0.7.1.tgz",
"integrity": "sha1-nNE8A62/8ltl7/3nzoZO6VIBcJg=",
"dev": true
}
}
@ -2193,21 +2179,6 @@
"globule": "1.2.0"
}
},
"generate-function": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.0.0.tgz",
"integrity": "sha1-aFj+fAlpt9TpCTM3ZHrHn2DfvnQ=",
"dev": true
},
"generate-object-property": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/generate-object-property/-/generate-object-property-1.2.0.tgz",
"integrity": "sha1-nA4cQDCM6AT0eDYYuTf6iPmdUNA=",
"dev": true,
"requires": {
"is-property": "1.0.2"
}
},
"get-caller-file": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.2.tgz",
@ -2848,9 +2819,9 @@
"dev": true
},
"inquirer": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.1.tgz",
"integrity": "sha512-QgW3eiPN8gpj/K5vVpHADJJgrrF0ho/dZGylikGX7iqAdRgC9FVKYKWFLx6hZDBFcOLEoSqINYrVPeFAeG/PdA==",
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.2.tgz",
"integrity": "sha512-bTKLzEHJVATimZO/YFdLrom0lRx1BHfRYskFHfIMVkGdp8+dIZaxuU+4yrsS1lcu6YWywVQVVsfvdwESzbeqHw==",
"dev": true,
"requires": {
"ansi-escapes": "2.0.0",
@ -2929,7 +2900,7 @@
"integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=",
"dev": true,
"requires": {
"binary-extensions": "1.9.0"
"binary-extensions": "1.10.0"
}
},
"is-buffer": {
@ -3016,18 +2987,6 @@
"is-extglob": "1.0.0"
}
},
"is-my-json-valid": {
"version": "2.16.0",
"resolved": "https://registry.npmjs.org/is-my-json-valid/-/is-my-json-valid-2.16.0.tgz",
"integrity": "sha1-8Hndm/2uZe4gOKrorLyGqxCeNpM=",
"dev": true,
"requires": {
"generate-function": "2.0.0",
"generate-object-property": "1.2.0",
"jsonpointer": "4.0.1",
"xtend": "4.0.1"
}
},
"is-npm": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-npm/-/is-npm-1.0.0.tgz",
@ -3102,12 +3061,6 @@
"integrity": "sha1-eaKp7OfwlugPNtKy87wWwf9L8/o=",
"dev": true
},
"is-property": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz",
"integrity": "sha1-V/4cTkhHTt1lsJkR8msc1Ald2oQ=",
"dev": true
},
"is-redirect": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-redirect/-/is-redirect-1.0.0.tgz",
@ -3317,12 +3270,6 @@
"integrity": "sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM=",
"dev": true
},
"jsonpointer": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/jsonpointer/-/jsonpointer-4.0.1.tgz",
"integrity": "sha1-T9kss04OnbPInIYi7PUfm5eMbLk=",
"dev": true
},
"jsprim": {
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@ -3965,7 +3912,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
"remove-trailing-separator": "1.0.2"
"remove-trailing-separator": "1.1.0"
}
},
"normalize-range": {
@ -4416,117 +4363,34 @@
"dev": true
},
"phantomjs-prebuilt": {
"version": "2.1.14",
"resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.14.tgz",
"integrity": "sha1-1T0xH8+30dCN2yQBRVjxGIxRbaA=",
"version": "2.1.15",
"resolved": "https://registry.npmjs.org/phantomjs-prebuilt/-/phantomjs-prebuilt-2.1.15.tgz",
"integrity": "sha1-IPhugtM0nFBZF1J3RbekEeCLOQM=",
"dev": true,
"requires": {
"es6-promise": "4.0.5",
"extract-zip": "1.5.0",
"extract-zip": "1.6.5",
"fs-extra": "1.0.0",
"hasha": "2.2.0",
"kew": "0.7.0",
"progress": "1.1.8",
"request": "2.79.0",
"request": "2.81.0",
"request-progress": "2.0.1",
"which": "1.2.14"
},
"dependencies": {
"ansi-styles": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz",
"integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=",
"dev": true
},
"caseless": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz",
"integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=",
"dev": true
},
"chalk": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz",
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
"ansi-styles": "2.2.1",
"escape-string-regexp": "1.0.5",
"has-ansi": "2.0.0",
"strip-ansi": "3.0.1",
"supports-color": "2.0.0"
}
},
"es6-promise": {
"version": "4.0.5",
"resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.0.5.tgz",
"integrity": "sha1-eILzCt3lskDM+n99eMVIMwlRrkI=",
"dev": true
},
"har-validator": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/har-validator/-/har-validator-2.0.6.tgz",
"integrity": "sha1-zcvAgYgmWtEZtqWnyKtw7s+10n0=",
"dev": true,
"requires": {
"chalk": "1.1.3",
"commander": "2.11.0",
"is-my-json-valid": "2.16.0",
"pinkie-promise": "2.0.1"
}
},
"progress": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/progress/-/progress-1.1.8.tgz",
"integrity": "sha1-4mDHj2Fhzdmw5WzD4Khd4Xx6V74=",
"dev": true
},
"qs": {
"version": "6.3.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.3.2.tgz",
"integrity": "sha1-51vV9uJoEioqDgvaYwslUMFmUCw=",
"dev": true
},
"request": {
"version": "2.79.0",
"resolved": "https://registry.npmjs.org/request/-/request-2.79.0.tgz",
"integrity": "sha1-Tf5b9r6LjNw3/Pk+BLZVd3InEN4=",
"dev": true,
"requires": {
"aws-sign2": "0.6.0",
"aws4": "1.6.0",
"caseless": "0.11.0",
"combined-stream": "1.0.5",
"extend": "3.0.1",
"forever-agent": "0.6.1",
"form-data": "2.1.4",
"har-validator": "2.0.6",
"hawk": "3.1.3",
"http-signature": "1.1.1",
"is-typedarray": "1.0.0",
"isstream": "0.1.2",
"json-stringify-safe": "5.0.1",
"mime-types": "2.1.16",
"oauth-sign": "0.8.2",
"qs": "6.3.2",
"stringstream": "0.0.5",
"tough-cookie": "2.3.2",
"tunnel-agent": "0.4.3",
"uuid": "3.1.0"
}
},
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
"integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=",
"dev": true
},
"tunnel-agent": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.4.3.tgz",
"integrity": "sha1-Y3PbdpCf5XDgjXNYM2Xtgop07us=",
"dev": true
},
"which": {
"version": "1.2.14",
"resolved": "https://registry.npmjs.org/which/-/which-1.2.14.tgz",
@ -5158,19 +5022,19 @@
"dev": true
},
"regenerator-runtime": {
"version": "0.10.5",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.10.5.tgz",
"integrity": "sha1-M2w+/BIgrc7dosn6tntaeVWjNlg=",
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.0.tgz",
"integrity": "sha512-/aA0kLeRb5N9K0d4fw7ooEbI+xDe+DKD499EQqygGqeS8N3xto15p09uY2xj7ixP81sNPXvRLnAQIqdVStgb1A==",
"dev": true
},
"regenerator-transform": {
"version": "0.9.11",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.9.11.tgz",
"integrity": "sha1-On0GdSDLe3F2dp61/4aGkb7+EoM=",
"version": "0.10.1",
"resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz",
"integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==",
"dev": true,
"requires": {
"babel-runtime": "6.25.0",
"babel-types": "6.25.0",
"babel-runtime": "6.26.0",
"babel-types": "6.26.0",
"private": "0.1.7"
}
},
@ -5228,9 +5092,9 @@
}
},
"remove-trailing-separator": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.0.2.tgz",
"integrity": "sha1-abBi2XhyetFNxrVrpKt3L9jXBRE=",
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz",
"integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=",
"dev": true
},
"repeat-element": {
@ -5666,9 +5530,9 @@
"dev": true
},
"source-map-support": {
"version": "0.4.15",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.15.tgz",
"integrity": "sha1-AyAt9lwG0r2MfsI2KhkwVv7407E=",
"version": "0.4.16",
"resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.16.tgz",
"integrity": "sha512-A6vlydY7H/ljr4L2UOhDSajQdZQ6dMD7cLH0pzwcmwLyc9u8PNI4WGtnfDDzX7uzGL6c/T+ORL97Zlh+S4iOrg==",
"dev": true,
"requires": {
"source-map": "0.5.6"
@ -6323,12 +6187,6 @@
"os-homedir": "1.0.2"
}
},
"xtend": {
"version": "4.0.1",
"resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
"integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68=",
"dev": true
},
"y18n": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz",

View File

@ -67,8 +67,8 @@
"license": "MIT",
"dependencies": {},
"peerDependencies": {
"jquery": ">=3.0.0",
"popper.js": "^1.11.0"
"jquery": "3.0.0 - 4.0.0",
"popper.js": "^1.12.3"
},
"devDependencies": {
"autoprefixer": "^7.1.2",
@ -117,13 +117,16 @@
"shim": {
"js/bootstrap": {
"deps": [
"jquery"
"jquery",
"popper.js"
],
"exports": "$"
}
},
"dependencies": {
"jquery": "3"
"dependencies": {},
"peerDependencies": {
"jquery": "3",
"popper.js": "npm:popper.js@^1.12.3"
}
}
}

View File

@ -9,7 +9,6 @@
font-size: $badge-font-size;
font-weight: $badge-font-weight;
line-height: 1;
color: $badge-color;
text-align: center;
white-space: nowrap;
vertical-align: baseline;

View File

@ -105,11 +105,11 @@ fieldset[disabled] a.btn {
//
.btn-lg {
@include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $line-height-lg, $btn-border-radius-lg);
@include button-size($input-btn-padding-y-lg, $input-btn-padding-x-lg, $font-size-lg, $input-btn-line-height-lg, $btn-border-radius-lg);
}
.btn-sm {
@include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $line-height-sm, $btn-border-radius-sm);
@include button-size($input-btn-padding-y-sm, $input-btn-padding-x-sm, $font-size-sm, $input-btn-line-height-sm, $btn-border-radius-sm);
}

View File

@ -56,6 +56,10 @@
@include border-bottom-radius($card-border-radius);
}
}
.card-header + .list-group > .list-group-item:first-child {
border-top: 0;
}
}
@ -172,9 +176,9 @@
.card {
flex: 1 0 0%;
margin-bottom: 0;
+ .card {
margin-bottom: 0;
margin-left: 0;
border-left: 0;
}

View File

@ -7,8 +7,6 @@
.form-control {
display: block;
width: 100%;
// // Make inputs at least the height of their button counterpart (base line-height + padding + border)
// height: $input-height;
padding: $input-btn-padding-y $input-btn-padding-x;
font-size: $font-size-base;
line-height: $input-btn-line-height;

View File

@ -72,7 +72,7 @@
@return map-get($theme-colors, $key);
}
@function grayscale($key: "100") {
@function gray($key: "100") {
@return map-get($grays, $key);
}

View File

@ -43,6 +43,8 @@
position: relative;
width: auto;
margin: $modal-dialog-margin;
// allow clicks to pass through for custom click handling to close modal
pointer-events: none;
}
// Actual modal
@ -50,6 +52,8 @@
position: relative;
display: flex;
flex-direction: column;
// counteract the pointer-events: none; in the .modal-dialog
pointer-events: auto;
background-color: $modal-content-bg;
background-clip: padding-box;
border: $modal-content-border-width solid $modal-content-border-color;

View File

@ -280,7 +280,7 @@ a,
area,
button,
[role="button"],
input,
input:not([type=range]),
label,
select,
summary,

View File

@ -99,32 +99,36 @@
@include table-row-variant(active, $table-active-bg);
// Inverse styles
// Dark styles
//
// Same table markup, but inverted color scheme: dark background and light text.
.thead-inverse {
th {
color: $table-inverse-color;
background-color: $table-inverse-bg;
.table {
.thead-dark {
th {
color: $table-dark-color;
background-color: $table-dark-bg;
border-color: $table-dark-border-color;
}
}
.thead-light {
th {
color: $table-head-color;
background-color: $table-head-bg;
border-color: $table-border-color;
}
}
}
.thead-default {
th {
color: $table-head-color;
background-color: $table-head-bg;
}
}
.table-inverse {
color: $table-inverse-color;
background-color: $table-inverse-bg;
.table-dark {
color: $table-dark-color;
background-color: $table-dark-bg;
th,
td,
thead th {
border-color: $table-inverse-border-color;
border-color: $table-dark-border-color;
}
&.table-bordered {
@ -133,14 +137,14 @@
&.table-striped {
tbody tr:nth-of-type(odd) {
background-color: $table-inverse-accent-bg;
background-color: $table-dark-accent-bg;
}
}
&.table-hover {
tbody tr {
@include hover {
background-color: $table-inverse-hover-bg;
background-color: $table-dark-hover-bg;
}
}
}
@ -149,20 +153,27 @@
// Responsive tables
//
// Add `.table-responsive` to `.table`s and we'll make them mobile friendly by
// enabling horizontal scrolling. Only applies <768px. Everything above that
// will display normally.
// Generate series of `.table-responsive-*` classes for configuring the screen
// size of where your table will overflow.
.table-responsive {
@include media-breakpoint-down(md) {
display: block;
width: 100%;
overflow-x: auto;
-ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057
@each $breakpoint in map-keys($grid-breakpoints) {
$next: breakpoint-next($breakpoint, $grid-breakpoints);
$infix: breakpoint-infix($next, $grid-breakpoints);
// Prevent double border on horizontal scroll due to use of `display: block;`
&.table-bordered {
border: 0;
&#{$infix} {
@include media-breakpoint-down($breakpoint) {
display: block;
width: 100%;
overflow-x: auto;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057
// Prevent double border on horizontal scroll due to use of `display: block;`
&.table-bordered {
border: 0;
}
}
}
}
}

View File

@ -3,44 +3,6 @@
// Variables should follow the `$component-state-property-size` formula for
// consistent naming. Ex: $nav-link-disabled-color and $modal-content-box-shadow-xs.
// Table of Contents
//
// Color system
// Options
// Spacing
// Body
// Links
// Paragraphs
// Grid breakpoints
// Grid containers
// Grid columns
// Fonts
// Components
// Tables
// Buttons
// Forms
// Dropdowns
// Z-index master list
// Navs
// Navbar
// Pagination
// Jumbotron
// Form states and alerts
// Cards
// Tooltips
// Popovers
// Badges
// Modals
// Alerts
// Progress bars
// List group
// Image thumbnails
// Figures
// Breadcrumbs
// Carousel
// Close
// Code
//
// Color system
@ -321,11 +283,11 @@ $table-border-color: $gray-200 !default;
$table-head-bg: $gray-200 !default;
$table-head-color: $gray-700 !default;
$table-inverse-bg: $gray-900 !default;
$table-inverse-accent-bg: rgba($white, .05) !default;
$table-inverse-hover-bg: rgba($white, .075) !default;
$table-inverse-border-color: lighten($gray-900, 7.5%) !default;
$table-inverse-color: $body-bg !default;
$table-dark-bg: $gray-900 !default;
$table-dark-accent-bg: rgba($white, .05) !default;
$table-dark-hover-bg: rgba($white, .075) !default;
$table-dark-border-color: lighten($gray-900, 7.5%) !default;
$table-dark-color: $body-bg !default;
// Buttons
@ -684,7 +646,6 @@ $popover-arrow-outer-color: fade-in($popover-border-color, .05) !defau
// Badges
$badge-color: $white !default;
$badge-font-size: 75% !default;
$badge-font-weight: $font-weight-bold !default;
$badge-padding-y: .25em !default;

View File

@ -98,8 +98,12 @@
@content;
}
} @else if $max == null {
@include media-breakpoint-up($name)
@include media-breakpoint-up($name) {
@content;
}
} @else if $min == null {
@include media-breakpoint-down($name)
@include media-breakpoint-down($name) {
@content;
}
}
}

View File

@ -51,6 +51,15 @@
order: $i;
}
}
// `$columns - 1` because offsetting by the width of an entire row isn't possible
@for $i from 0 through ($columns - 1) {
@if not ($infix == "" and $i == 0) { // Avoid emitting useless .offset-0
.offset#{$infix}-#{$i} {
@include make-col-offset($i, $columns)
}
}
}
}
}
}

View File

@ -45,3 +45,7 @@
// do not appear to require this.
max-width: percentage($size / $columns);
}
@mixin make-col-offset($size, $columns: $grid-columns) {
margin-left: percentage($size / $columns);
}