aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGijs Boddeus <[email protected]>2017-10-15 11:55:02 +0200
committerGitHub <[email protected]>2017-10-15 11:55:02 +0200
commit98778164e04c581bfedab72a9a09b6525261c860 (patch)
tree10fe8118ce2dbecdb29c2215b4caba8d7f8ffc87
parent8f483dc4322cc12849eda65246edfb47b5aaad0b (diff)
parent3ccb7ef16ad2fa858c767128a5414a0b1bd7fa30 (diff)
downloadbootstrap-98778164e04c581bfedab72a9a09b6525261c860.tar.xz
bootstrap-98778164e04c581bfedab72a9a09b6525261c860.zip
Merge branch 'v4-dev' into yiq-function-update
-rw-r--r--.hound.yml10
-rw-r--r--Gemfile2
-rw-r--r--Gemfile.lock8
-rw-r--r--README.md38
-rw-r--r--_data/colors.yml24
-rw-r--r--_data/grays.yml16
-rw-r--r--_data/theme-colors.yml2
-rw-r--r--_includes/icons/import.svg2
-rw-r--r--assets/scss/_brand.scss2
-rw-r--r--assets/scss/_component-examples.scss2
-rw-r--r--assets/scss/_content.scss2
-rw-r--r--build/.stylelintrc4
-rw-r--r--build/htmllint.js46
-rw-r--r--build/postcss.config.js2
-rw-r--r--build/saucelabs-unit-test.js43
-rw-r--r--docs/4.0/examples/.stylelintrc12
-rw-r--r--docs/4.0/examples/blog/blog.css18
-rw-r--r--docs/4.0/examples/dashboard/dashboard.css8
-rw-r--r--docs/4.0/getting-started/contents.md56
-rw-r--r--docs/4.0/getting-started/download.md2
-rw-r--r--docs/4.0/getting-started/theming.md10
-rw-r--r--docs/4.0/layout/grid.md4
-rw-r--r--docs/4.0/migration.md2
-rw-r--r--js/src/modal.js12
-rw-r--r--js/tests/README.md8
-rw-r--r--js/tests/visual/modal.html22
-rw-r--r--package-lock.json638
-rw-r--r--package.json13
-rw-r--r--scss/_buttons.scss4
-rw-r--r--scss/_card.scss44
-rw-r--r--scss/_dropdown.scss26
-rw-r--r--scss/_reboot.scss16
-rw-r--r--scss/_root.scss13
-rw-r--r--scss/_tables.scss1
-rw-r--r--scss/_tooltip.scss12
-rw-r--r--scss/_variables.scss842
-rw-r--r--scss/mixins/_buttons.scss8
-rw-r--r--scss/mixins/_grid.scss3
38 files changed, 1129 insertions, 848 deletions
diff --git a/.hound.yml b/.hound.yml
index d47b1677d..2a6b05592 100644
--- a/.hound.yml
+++ b/.hound.yml
@@ -2,6 +2,12 @@ fail_on_violations: true
stylelint:
config_file: build/.stylelintrc
+ enabled: true
+ ignore_file: .houndignore
+
+eslint:
+ config_file: js/.eslintrc.json
+ ignore_file: .houndignore
scss:
enabled: false
@@ -9,9 +15,5 @@ scss:
jshint:
enabled: false
-eslint:
- config_file: js/.eslintrc.json
- ignore_file: .houndignore
-
ruby:
enabled: false
diff --git a/Gemfile b/Gemfile
index 2c0ac91d5..135694ee6 100644
--- a/Gemfile
+++ b/Gemfile
@@ -4,5 +4,5 @@ group :development, :test do
gem 'jekyll', '~> 3.6.0'
gem 'jekyll-redirect-from', '~> 0.12.1'
gem 'jekyll-sitemap', '~> 1.1.1'
- gem 'jekyll-toc', '~> 0.3.0'
+ gem 'jekyll-toc', '~> 0.4.0.rc2'
end
diff --git a/Gemfile.lock b/Gemfile.lock
index 99c54cc87..0be2f9d18 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -24,7 +24,7 @@ GEM
sass (~> 3.4)
jekyll-sitemap (1.1.1)
jekyll (~> 3.3)
- jekyll-toc (0.3.0)
+ jekyll-toc (0.4.0.rc2)
nokogiri (~> 1.6)
jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1)
@@ -39,7 +39,7 @@ GEM
mini_portile2 (~> 2.3.0)
nokogiri (1.8.1-x64-mingw32)
mini_portile2 (~> 2.3.0)
- pathutil (0.14.0)
+ pathutil (0.16.0)
forwardable-extended (~> 2.6)
public_suffix (3.0.0)
rb-fsevent (0.10.2)
@@ -47,7 +47,7 @@ GEM
ffi (>= 0.5.0, < 2)
rouge (2.2.1)
safe_yaml (1.0.4)
- sass (3.5.1)
+ sass (3.5.2)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
@@ -61,7 +61,7 @@ DEPENDENCIES
jekyll (~> 3.6.0)
jekyll-redirect-from (~> 0.12.1)
jekyll-sitemap (~> 1.1.1)
- jekyll-toc (~> 0.3.0)
+ jekyll-toc (~> 0.4.0.rc2)
BUNDLED WITH
1.15.4
diff --git a/README.md b/README.md
index b9104e7e8..d1b52608e 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
<p align="center">
<a href="https://getbootstrap.com/">
- <img src="https://getbootstrap.com/assets/brand/bootstrap-solid.svg" width=72 height=72>
+ <img src="https://getbootstrap.com/assets/brand/bootstrap-solid.svg" alt="" width=72 height=72>
</a>
<h3 align="center">Bootstrap</h3>
@@ -8,13 +8,13 @@
<p align="center">
Sleek, intuitive, and powerful front-end framework for faster and easier web development.
<br>
- <a href="https://getbootstrap.com/docs/4.0/"><strong>Explore Bootstrap docs &raquo;</strong></a>
+ <a href="https://getbootstrap.com/docs/4.0/"><strong>Explore Bootstrap docs »</strong></a>
<br>
<br>
<a href="https://themes.getbootstrap.com/">Bootstrap Themes</a>
- &middot;
+ ·
<a href="https://jobs.getbootstrap.com/">Job Board</a>
- &middot;
+ ·
<a href="https://blog.getbootstrap.com/">Blog</a>
</p>
</p>
@@ -50,16 +50,18 @@ Read the [Getting started page](https://getbootstrap.com/getting-started/) for i
## Status
[![Slack](https://bootstrap-slack.herokuapp.com/badge.svg)](https://bootstrap-slack.herokuapp.com/)
+[![Build Status](https://img.shields.io/travis/twbs/bootstrap/v4-dev.svg)](https://travis-ci.org/twbs/bootstrap)
[![npm version](https://img.shields.io/npm/v/bootstrap.svg)](https://www.npmjs.com/package/bootstrap)
[![Gem version](https://img.shields.io/gem/v/bootstrap.svg)](https://rubygems.org/gems/bootstrap)
-[![Build Status](https://img.shields.io/travis/twbs/bootstrap/v4-dev.svg)](https://travis-ci.org/twbs/bootstrap)
-[![peerDependencies Status](https://david-dm.org/twbs/bootstrap/peer-status.svg)](https://david-dm.org/twbs/bootstrap?type=peer)
-[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap?type=dev)
[![Meteor Atmosphere](https://img.shields.io/badge/meteor-twbs%3Abootstrap-blue.svg)](https://atmospherejs.com/twbs/bootstrap)
[![Packagist Prerelease](https://img.shields.io/packagist/vpre/twbs/bootstrap.svg)](https://packagist.org/packages/twbs/bootstrap)
[![NuGet](https://img.shields.io/nuget/vpre/bootstrap.svg)](https://www.nuget.org/packages/bootstrap/absoluteLatest)
+[![peerDependencies Status](https://img.shields.io/david/peer/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap?type=peer)
+[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg)](https://david-dm.org/twbs/bootstrap?type=dev)
+[![CSS gzip size](http://img.badgesize.io/twbs/bootstrap/v4-dev/dist/css/bootstrap.min.css?compression=gzip&label=CSS+gzip+size)](https://github.com/twbs/bootstrap/tree/v4-dev/dist/css/bootstrap.min.css)
+[![JS gzip size](http://img.badgesize.io/twbs/bootstrap/v4-dev/dist/js/bootstrap.min.js?compression=gzip&label=JS+gzip+size)](https://github.com/twbs/bootstrap/tree/v4-dev/dist/js/bootstrap.min.js)
-[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
+[![Sauce Labs Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
## What's included
@@ -71,7 +73,15 @@ bootstrap/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
-│ └── bootstrap.min.css.map
+│ ├── bootstrap.min.css.map
+│ ├── bootstrap-grid.css
+│ ├── bootstrap-grid.css.map
+│ ├── bootstrap-grid.min.css
+│ ├── bootstrap-grid.min.css.map
+│ ├── bootstrap-reboot.css
+│ ├── bootstrap-reboot.css.map
+│ ├── bootstrap-reboot.min.css
+│ └── bootstrap-reboot.min.css.map
└── js/
├── bootstrap.js
└── bootstrap.min.js
@@ -87,13 +97,13 @@ Have a bug or a feature request? Please first read the [issue guidelines](https:
## Documentation
-Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com) and publicly hosted on GitHub Pages at <https://getbootstrap.com>. The docs may also be run locally.
+Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](https://jekyllrb.com/) and publicly hosted on GitHub Pages at <https://getbootstrap.com/>. The docs may also be run locally.
Documentation search is powered by [Algolia's DocSearch](https://community.algolia.com/docsearch/). Working on our search? Be sure to set `debug: true` in the `_scripts.html` include.
### Running documentation locally
-1. Run through the [tooling setup](https://github.com/twbs/bootstrap/blob/v4-dev/docs/4.0/getting-started/build-tools.md#tooling-setup) to install Jekyll (the site builder) and other Ruby dependencies with `bundle install`.
+1. Run through the [tooling setup](https://getbootstrap.com/docs/4.0/getting-started/build-tools/#tooling-setup) to install Jekyll (the site builder) and other Ruby dependencies with `bundle install`.
2. Run `npm install` to install Node.js dependencies.
3. Run `npm run test` (or a specific NPM script) to rebuild distributed CSS and JavaScript files, as well as our docs assets.
4. From the root `/bootstrap` directory, run `npm run docs-serve` in the command line.
@@ -109,15 +119,13 @@ Learn more about using Jekyll by reading its [documentation](https://jekyllrb.co
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
-
## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include [relevant unit tests](https://github.com/twbs/bootstrap/tree/master/js/tests). All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
-Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
-
+Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org/>.
## Community
@@ -132,7 +140,6 @@ Get updates on Bootstrap's development and chat with the project maintainers and
- Developers should use the keyword `bootstrap` on packages which modify or add to the functionality of Bootstrap when distributing through [npm](https://www.npmjs.com/browse/keyword/bootstrap) or similar delivery mechanisms for maximum discoverability.
-
## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
@@ -153,7 +160,6 @@ See [the Releases section of our GitHub project](https://github.com/twbs/bootstr
- <https://github.com/fat>
-
## Copyright and license
Code and documentation copyright 2011-2017 the [Bootstrap Authors](https://github.com/twbs/bootstrap/graphs/contributors) and [Twitter, Inc.](https://twitter.com) Code released under the [MIT License](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).
diff --git a/_data/colors.yml b/_data/colors.yml
index 4208ec75a..202270cdc 100644
--- a/_data/colors.yml
+++ b/_data/colors.yml
@@ -1,26 +1,26 @@
- name: blue
- hex: "#007aff"
+ hex: "#007bff"
- name: indigo
- hex: "#2b29bb"
+ hex: "#6610f2"
- name: purple
- hex: "#882ae0"
+ hex: "#6f42c1"
- name: pink
- hex: "#f14095"
+ hex: "#e83e8c"
- name: red
- hex: "#ea0242"
+ hex: "#dc3545"
- name: orange
- hex: "#ff8d00"
+ hex: "#fd7e14"
- name: yellow
- hex: "#ffec00"
+ hex: "#ffc107"
- name: green
- hex: "#34da36"
+ hex: "#28a745"
- name: teal
- hex: "#1dde8e"
+ hex: "#20c997"
- name: cyan
- hex: "#08eff3"
+ hex: "#17a2b8"
- name: white
hex: "#fff"
- name: gray
- hex: "#464a4c"
+ hex: "#868e96"
- name: gray-dark
- hex: "#292b2c"
+ hex: "#343a40"
diff --git a/_data/grays.yml b/_data/grays.yml
index bf9750ee9..d6e50f9e1 100644
--- a/_data/grays.yml
+++ b/_data/grays.yml
@@ -1,18 +1,18 @@
- name: 100
hex: "#f8f9fa"
- name: 200
- hex: "#ebedef"
+ hex: "#e9ecef"
- name: 300
- hex: "#ced3d8"
+ hex: "#dee2e6"
- name: 400
- hex: "#abb3bd"
+ hex: "#ced4da"
- name: 500
- hex: "#7c8a99"
+ hex: "#adb5bd"
- name: 600
- hex: "#55626f"
+ hex: "#868e96"
- name: 700
- hex: "#4a5560"
+ hex: "#495057"
- name: 800
- hex: "#384048"
+ hex: "#343a40"
- name: 900
- hex: "#131619"
+ hex: "#212529"
diff --git a/_data/theme-colors.yml b/_data/theme-colors.yml
index 92ea28838..bef5002ac 100644
--- a/_data/theme-colors.yml
+++ b/_data/theme-colors.yml
@@ -1,5 +1,5 @@
- name: primary
- hex: "#007aff"
+ hex: "#007bff"
- name: secondary
hex: "#868e96"
- name: success
diff --git a/_includes/icons/import.svg b/_includes/icons/import.svg
index 72a4b603b..0a9dbb269 100644
--- a/_includes/icons/import.svg
+++ b/_includes/icons/import.svg
@@ -1 +1 @@
-<svg xmlns="http://www.w3.org/2000/svg" focusable="false"{% if include.width %} width="{{ include.width }}"{% endif %}{% if include.height %} height="{{ include.height }}"{% endif %} fill="none" stroke="currentcolor" stroke-width="2"{% if include.class %} class="{{ include.class }}"{% endif %} viewBox="0 0 32 32" stroke-linecap="round" stroke-linejoin="round"><title>Import icon</title><path d="M18 13l8-11L8 13l6 6-8 11 18-11z"/></svg>
+<svg xmlns="http://www.w3.org/2000/svg" focusable="false"{% if include.width %} width="{{ include.width }}"{% endif %}{% if include.height %} height="{{ include.height }}"{% endif %} fill="none" stroke="currentcolor" stroke-width="2"{% if include.class %} class="{{ include.class }}"{% endif %} viewBox="0 0 32 32" stroke-linecap="round" stroke-linejoin="round"><title>Import icon</title><path d="M28 22v8H4v-8M16 4v20m-8-8l8 8 8-8"/></svg>
diff --git a/assets/scss/_brand.scss b/assets/scss/_brand.scss
index 1fb2119a2..2d5c5a4cf 100644
--- a/assets/scss/_brand.scss
+++ b/assets/scss/_brand.scss
@@ -1,3 +1,5 @@
+// stylelint-disable no-duplicate-selectors
+
//
// Brand guidelines
//
diff --git a/assets/scss/_component-examples.scss b/assets/scss/_component-examples.scss
index 2a2c740b3..3d216991a 100644
--- a/assets/scss/_component-examples.scss
+++ b/assets/scss/_component-examples.scss
@@ -1,4 +1,4 @@
-// stylelint-disable selector-no-qualifying-type
+// stylelint-disable no-duplicate-selectors, selector-no-qualifying-type
//
// Grid examples
diff --git a/assets/scss/_content.scss b/assets/scss/_content.scss
index b8311495c..112370a2d 100644
--- a/assets/scss/_content.scss
+++ b/assets/scss/_content.scss
@@ -1,4 +1,4 @@
-// stylelint-disable selector-max-combinators, selector-max-compound-selectors, selector-max-type, selector-no-qualifying-type
+// stylelint-disable no-duplicate-selectors, selector-max-combinators, selector-max-compound-selectors, selector-max-type, selector-no-qualifying-type
//
// Automatically style Markdown-based tables like a Bootstrap `.table`.
diff --git a/build/.stylelintrc b/build/.stylelintrc
index 8fa310490..11a6db284 100644
--- a/build/.stylelintrc
+++ b/build/.stylelintrc
@@ -19,7 +19,7 @@
"declaration-block-semicolon-space-after": "always-single-line",
"declaration-empty-line-before": null,
"declaration-no-important": true,
- "font-family-name-quotes": "always-where-required",
+ "font-family-name-quotes": "always-where-recommended",
"font-weight-notation": "numeric",
"function-comma-space-after": null,
"function-url-no-scheme-relative": true,
@@ -32,7 +32,7 @@
"media-feature-range-operator-space-after": "always",
"media-feature-range-operator-space-before": "never",
"no-descending-specificity": null,
- "no-duplicate-selectors": null,
+ "no-duplicate-selectors": true,
"number-leading-zero": "never",
"order/properties-order": [
"position",
diff --git a/build/htmllint.js b/build/htmllint.js
new file mode 100644
index 000000000..f69d80141
--- /dev/null
+++ b/build/htmllint.js
@@ -0,0 +1,46 @@
+#!/usr/bin/env node
+
+/*!
+ * Script to run vnu-jar if Java is available.
+ * Copyright 2017 The Bootstrap Authors
+ * Copyright 2017 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+'use strict'
+
+const childProcess = require('child_process')
+const vnu = require('vnu-jar')
+
+childProcess.exec('java -version', function (error) {
+ if (error) {
+ console.error('Skipping HTML lint test; Java is missing.')
+ return
+ }
+
+ const ignores = [
+ 'Attribute “autocomplete” is only allowed when the input type is “color”, “date”, “datetime-local”, “email”, “hidden”, “month”, “number”, “password”, “range”, “search”, “tel”, “text”, “time”, “url”, or “week”.',
+ 'Attribute “autocomplete” not allowed on element “button” at this point.',
+ 'Attribute “title” not allowed on element “circle” at this point.',
+ 'Bad value “tablist” for attribute “role” on element “nav”.',
+ 'Element “img” is missing required attribute “src”.',
+ 'Element “legend” not allowed as child of element “div” in this context.*'
+ ].join('|')
+
+ const args = [
+ '-jar',
+ vnu,
+ '--asciiquotes',
+ '--errors-only',
+ '--skip-non-html',
+ `--filterpattern "${ignores}"`,
+ '_gh_pages/',
+ 'js/tests/'
+ ]
+
+ return childProcess.spawn('java', args, {
+ shell: true,
+ stdio: 'inherit'
+ })
+ .on('exit', process.exit)
+})
diff --git a/build/postcss.config.js b/build/postcss.config.js
index b34a0ce46..425228eaa 100644
--- a/build/postcss.config.js
+++ b/build/postcss.config.js
@@ -1,7 +1,7 @@
'use strict'
module.exports = (ctx) => ({
- map: ctx.file.dirname.startsWith('docs') ? false : {
+ map: ctx.file.dirname.includes('examples') ? false : {
inline: false,
annotation: true,
sourcesContent: true
diff --git a/build/saucelabs-unit-test.js b/build/saucelabs-unit-test.js
index cfc4ed274..0b4a3b5f0 100644
--- a/build/saucelabs-unit-test.js
+++ b/build/saucelabs-unit-test.js
@@ -1,23 +1,32 @@
+/*!
+ * Script to run our Sauce Labs tests.
+ * Copyright 2017 The Bootstrap Authors
+ * Copyright 2017 Twitter, Inc.
+ * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
+ */
+
+/*
+Docs: https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
+Mac Opera is not currently supported by Sauce Labs
+Win Opera 15+ is not currently supported by Sauce Labs
+iOS Chrome is not currently supported by Sauce Labs
+*/
+
'use strict'
const path = require('path')
const JSUnitSaucelabs = require('jsunitsaucelabs')
-// Docs: https://wiki.saucelabs.com/display/DOCS/Platform+Configurator
-// Mac Opera is not currently supported by Sauce Labs
-// Win Opera 15+ is not currently supported by Sauce Labs
-// iOS Chrome is not currently supported by Sauce Labs
-
const jsUnitSaucelabs = new JSUnitSaucelabs({
username: process.env.SAUCE_USERNAME,
password: process.env.SAUCE_ACCESS_KEY,
- build: process.env.TRAVIS_JOB_ID
+ build: process.env.TRAVIS_JOB_ID
})
-const testURL = 'http://localhost:3000/js/tests/index.html?hidepassed'
+const testURL = 'http://localhost:3000/js/tests/index.html?hidepassed'
const browsersFile = require(path.resolve(__dirname, './sauce_browsers.json'))
-let jobsDone = 0
-let jobsSucceeded = 0
+let jobsDone = 0
+let jobsSucceeded = 0
const waitingCallback = (error, body, id) => {
if (error) {
@@ -33,8 +42,8 @@ const waitingCallback = (error, body, id) => {
})
}, 2000)
} else {
- const test = body['js tests'][0]
- let passed = false
+ const test = body['js tests'][0]
+ let passed = false
let errorStr = false
if (test.result !== null) {
@@ -46,9 +55,9 @@ const waitingCallback = (error, body, id) => {
}
console.log(`Tested ${testURL}`)
- console.log(`Platform: ${test.platform.join(',')}`)
+ console.log(`Platform: ${test.platform.join(', ')}`)
console.log(`Passed: ${passed.toString()}`)
- console.log(`Url ${test.url} \n`)
+ console.log(`URL: ${test.url}\n`)
if (errorStr) {
console.error(errorStr)
}
@@ -61,7 +70,13 @@ const waitingCallback = (error, body, id) => {
// Exit
if (jobsDone === browsersFile.length - 1) {
jsUnitSaucelabs.stop()
- process.exit(jobsDone === jobsSucceeded ? 0 : 1)
+ if (jobsDone > jobsSucceeded) {
+ const failedTest = jobsDone - jobsSucceeded
+ throw new Error(`Some test(s) failed (${failedTest})`)
+ }
+
+ console.log('All tests passed')
+ process.exit(0)
}
}
}
diff --git a/docs/4.0/examples/.stylelintrc b/docs/4.0/examples/.stylelintrc
new file mode 100644
index 000000000..44cf7c0e0
--- /dev/null
+++ b/docs/4.0/examples/.stylelintrc
@@ -0,0 +1,12 @@
+{
+ "extends": "../../../build/.stylelintrc",
+ "rules": {
+ "at-rule-no-vendor-prefix": null,
+ "comment-empty-line-before": null,
+ "media-feature-name-no-vendor-prefix": null,
+ "property-no-vendor-prefix": null,
+ "selector-no-qualifying-type": null,
+ "selector-no-vendor-prefix": null,
+ "value-no-vendor-prefix": null
+ }
+}
diff --git a/docs/4.0/examples/blog/blog.css b/docs/4.0/examples/blog/blog.css
index 6eda0a7b1..0f319ec92 100644
--- a/docs/4.0/examples/blog/blog.css
+++ b/docs/4.0/examples/blog/blog.css
@@ -13,12 +13,18 @@ body {
color: #555;
}
-h1, .h1,
-h2, .h2,
-h3, .h3,
-h4, .h4,
-h5, .h5,
-h6, .h6 {
+h1,
+.h1,
+h2,
+.h2,
+h3,
+.h3,
+h4,
+.h4,
+h5,
+.h5,
+h6,
+.h6 {
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
font-weight: 400;
color: #333;
diff --git a/docs/4.0/examples/dashboard/dashboard.css b/docs/4.0/examples/dashboard/dashboard.css
index a59005148..ca7135b08 100644
--- a/docs/4.0/examples/dashboard/dashboard.css
+++ b/docs/4.0/examples/dashboard/dashboard.css
@@ -27,18 +27,12 @@ h1 {
bottom: 0;
left: 0;
z-index: 1000;
- padding: 20px;
+ padding: 20px 0;
overflow-x: hidden;
overflow-y: auto; /* Scrollable contents if viewport is shorter than content. */
border-right: 1px solid #eee;
}
-/* Sidebar navigation */
-.sidebar {
- padding-right: 0;
- padding-left: 0;
-}
-
.sidebar .nav {
margin-bottom: 20px;
}
diff --git a/docs/4.0/getting-started/contents.md b/docs/4.0/getting-started/contents.md
index 96acbc053..3d5389fee 100644
--- a/docs/4.0/getting-started/contents.md
+++ b/docs/4.0/getting-started/contents.md
@@ -18,7 +18,15 @@ bootstrap/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
-│ └── bootstrap.min.css.map
+│ ├── bootstrap.min.css.map
+│ ├── bootstrap-grid.css
+│ ├── bootstrap-grid.css.map
+│ ├── bootstrap-grid.min.css
+│ ├── bootstrap-grid.min.css.map
+│ ├── bootstrap-reboot.css
+│ ├── bootstrap-reboot.css.map
+│ ├── bootstrap-reboot.min.css
+│ └── bootstrap-reboot.min.css.map
└── js/
├── bootstrap.js
└── bootstrap.min.js
@@ -26,6 +34,52 @@ bootstrap/
This is the most basic form of Bootstrap: precompiled files for quick drop-in usage in nearly any web project. We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/web/tools/chrome-devtools/javascript/source-maps) (`bootstrap.*.map`) are available for use with certain browsers' developer tools.
+### Comparison of CSS files
+
+<table class="table table-bordered table-responsive">
+ <thead>
+ <tr>
+ <th scope="col">CSS files</th>
+ <th scope="col" class="text-center">Layout</th>
+ <th scope="col" class="text-center">Content</th>
+ <th scope="col" class="text-center">Components</th>
+ <th scope="col" class="text-center">Utilities</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr>
+ <th scope="row">
+ <div><code class="text-nowrap">bootstrap.css</code></div>
+ <div><code class="text-nowrap">bootstrap.min.css</code></div>
+ </th>
+ <td class="table-success text-center align-middle">All</td>
+ <td class="table-success text-center align-middle">All</td>
+ <td class="table-success text-center align-middle">All</td>
+ <td class="table-success text-center align-middle">All</td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <div><code class="text-nowrap">bootstrap-grid.css</code></div>
+ <div><code class="text-nowrap">bootstrap-grid.min.css</code></div>
+ </th>
+ <td class="table-warning text-center align-middle">Only <a href="{{ site.baseurl }}/docs/{{ site.docs_version }}/layout/grid/">grid</a> system</td>
+ <td class="table-danger text-center align-middle">No</td>
+ <td class="table-danger text-center align-middle">No</td>
+ <td class="table-warning text-center align-middle">Only <a href="{{ site.baseurl }}/docs/{{ site.docs_version }}/utilities/flex/">flex</a> utilities</td>
+ </tr>
+ <tr>
+ <th scope="row">
+ <div><code class="text-nowrap">bootstrap-reboot.css</code></div>
+ <div><code class="text-nowrap">bootstrap-reboot.min.css</code></div>
+ </th>
+ <td class="table-danger text-center align-middle">No</td>
+ <td class="table-warning text-center align-middle">Only <a href="{{ site.baseurl }}/docs/{{ site.docs_version }}/content/reboot/">Reboot</a></td>
+ <td class="table-danger text-center align-middle">No</td>
+ <td class="table-danger text-center align-middle">No</td>
+ </tr>
+ </tbody>
+</table>
+
## Bootstrap source code
The Bootstrap source code download includes the precompiled CSS and JavaScript assets, along with source Sass, JavaScript, and documentation. More specifically, it includes the following and more:
diff --git a/docs/4.0/getting-started/download.md b/docs/4.0/getting-started/download.md
index cce660178..9f1199317 100644
--- a/docs/4.0/getting-started/download.md
+++ b/docs/4.0/getting-started/download.md
@@ -10,7 +10,7 @@ toc: true
Download ready-to-use compiled code for **Bootstrap v{{ site.current_version}}** to easily drop into your project, which includes:
-- Compiled and minified CSS bundles (default, grid-only, and Reboot-only)
+- Compiled and minified CSS bundles (see [CSS files comparison]({{ site.baseurl }}/docs/{{ site.docs_version }}/getting-started/contents/#comparison-of-css-files))
- Compiled and minified JavaScript plugins
This doesn't include documentation, source files, or any optional JavaScript dependencies (jQuery and Popper.js).
diff --git a/docs/4.0/getting-started/theming.md b/docs/4.0/getting-started/theming.md
index c4c50dc4b..15c5caa0b 100644
--- a/docs/4.0/getting-started/theming.md
+++ b/docs/4.0/getting-started/theming.md
@@ -228,17 +228,19 @@ Within `_variables.scss`, you'll find our color variables and Sass map. Here's a
{% highlight scss %}
$colors: (
+ "blue": $blue,
+ "indigo": $indigo,
+ "purple": $purple,
+ "pink": $pink,
"red": $red,
"orange": $orange,
"yellow": $yellow,
"green": $green,
"teal": $teal,
- "blue": $blue,
- "pink": $pink,
- "purple": $purple,
+ "cyan": $cyan,
"white": $white,
"gray": $gray-600,
- "gray-dark": $gray-900
+ "gray-dark": $gray-800
) !default;
{% endhighlight %}
diff --git a/docs/4.0/layout/grid.md b/docs/4.0/layout/grid.md
index ca608477b..9e81dd913 100644
--- a/docs/4.0/layout/grid.md
+++ b/docs/4.0/layout/grid.md
@@ -149,9 +149,9 @@ For example, here are two grid layouts that apply to every device and viewport,
{% endexample %}
</div>
-Equal-width columns can be broken into multiple lines, but there is a [Safari flexbox bug](https://github.com/philipwalton/flexbugs#11-min-and-max-size-declarations-are-ignored-when-wrapping-flex-items) that prevents this from working without an explicit `flex-basis` or `border`. Our example works thanks to the `border` being set; you can do the same with `.col { border: 1px solid transparent; }`. Alternatively, you can set the flex-basis to the width of the column (e.g., `.col { flex: 1 0 50%; }`).
+Equal-width columns can be broken into multiple lines, but there was a [Safari flexbox bug](https://github.com/philipwalton/flexbugs#11-min-and-max-size-declarations-are-ignored-when-wrapping-flex-items) that prevented this from working without an explicit `flex-basis` or `border`.
-Both these fixes have been documented in a [reduced test case outside Bootstrap](https://output.jsbin.com/micohor).
+Two workarounds have been documented in a [reduced test case outside Bootstrap](https://output.jsbin.com/micohor), though if the browser is up to date this shouldn't be necessary.
<div class="bd-example-row">
{% example html %}
diff --git a/docs/4.0/migration.md b/docs/4.0/migration.md
index 7c70c7221..8a0d3d3fa 100644
--- a/docs/4.0/migration.md
+++ b/docs/4.0/migration.md
@@ -69,7 +69,7 @@ Here are the big ticket items you'll want to be aware of when moving from v3 to
- [Octicons](https://octicons.github.com/)
- [Font Awesome](http://fontawesome.io/)
- See the [Extend page]({{ site.baseurl }}/docs/{{ site.docs_version }}/extend/icons/) for a list of alternatives. Have additional suggestions? Please open an issue or PR.
-- Dropped the Affix jQuery plugin.
+- **Dropped the Affix jQuery plugin.**
- We recommend using `position: sticky` instead. [See the HTML5 Please entry](http://html5please.com/#sticky) for details and specific polyfill recommendations. One suggestion is to use an `@supports` rule for implementing it (e.g., `@supports (position: sticky) { ... }`)/
- If you were using Affix to apply additional, non-`position` styles, the polyfills might not support your use case. One option for such uses is the third-party [ScrollPos-Styler](https://github.com/acch/scrollpos-styler) library.
- **Dropped the pager component** as it was essentially slightly customized buttons.
diff --git a/js/src/modal.js b/js/src/modal.js
index 1ea630c41..399adc4c1 100644
--- a/js/src/modal.js
+++ b/js/src/modal.js
@@ -169,12 +169,6 @@ const Modal = (() => {
return
}
- const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)
-
- if (transition) {
- this._isTransitioning = true
- }
-
const hideEvent = $.Event(Event.HIDE)
$(this._element).trigger(hideEvent)
@@ -185,6 +179,12 @@ const Modal = (() => {
this._isShown = false
+ const transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)
+
+ if (transition) {
+ this._isTransitioning = true
+ }
+
this._setEscapeEvent()
this._setResizeEvent()
diff --git a/js/tests/README.md b/js/tests/README.md
index 72ece2d36..8c8c2f17e 100644
--- a/js/tests/README.md
+++ b/js/tests/README.md
@@ -24,7 +24,7 @@ To run the unit test suite via a real web browser, open `index.html` in the brow
* Each test should have a unique name clearly stating what unit is being tested.
* Each test should test only one unit per test, although one test can include several assertions. Create multiple tests for multiple units of functionality.
-* Each test should begin with [`assert.expect`](https://api.qunitjs.com/expect/) to ensure that the expected assertions are run.
+* Each test should begin with [`assert.expect`](https://api.qunitjs.com/assert/expect/) to ensure that the expected assertions are run.
* Each test should follow the project's [JavaScript Code Guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#js)
### Example tests
@@ -33,16 +33,16 @@ To run the unit test suite via a real web browser, open `index.html` in the brow
// Synchronous test
QUnit.test('should describe the unit being tested', function (assert) {
assert.expect(1)
- var templateHTML = '<div class="alert alert-danger fade in">'
+ var templateHTML = '<div class="alert alert-danger fade show">'
+ '<a class="close" href="#" data-dismiss="alert">×</a>'
+ '<p><strong>Template necessary for the test.</p>'
+ '</div>'
var $alert = $(templateHTML).appendTo('#qunit-fixture').bootstrapAlert()
- $alert.find('.close').click()
+ $alert.find('.close').trigger('click')
// Make assertion
- assert.strictEqual($alert.hasClass('in'), false, 'remove .in class on .close click')
+ assert.strictEqual($alert.hasClass('show'), false, 'remove .show class on .close click')
})
// Asynchronous test
diff --git a/js/tests/visual/modal.html b/js/tests/visual/modal.html
index 6e9f0f710..fcc96035b 100644
--- a/js/tests/visual/modal.html
+++ b/js/tests/visual/modal.html
@@ -171,6 +171,12 @@
<button type="button" class="btn btn-secondary btn-lg" data-toggle="modal" data-target="&#x3C;div class=&#x22;modal fade the-bad&#x22; tabindex=&#x22;-1&#x22; role=&#x22;dialog&#x22;&#x3E;&#x3C;div class=&#x22;modal-dialog&#x22; role=&#x22;document&#x22;&#x3E;&#x3C;div class=&#x22;modal-content&#x22;&#x3E;&#x3C;div class=&#x22;modal-header&#x22;&#x3E;&#x3C;button type=&#x22;button&#x22; class=&#x22;close&#x22; data-dismiss=&#x22;modal&#x22; aria-label=&#x22;Close&#x22;&#x3E;&#x3C;span aria-hidden=&#x22;true&#x22;&#x3E;&#x26;times;&#x3C;/span&#x3E;&#x3C;/button&#x3E;&#x3C;h4 class=&#x22;modal-title&#x22;&#x3E;The Bad Modal&#x3C;/h4&#x3E;&#x3C;/div&#x3E;&#x3C;div class=&#x22;modal-body&#x22;&#x3E;This modal&#x27;s HTTML source code is declared inline, inside the data-target attribute of it&#x27;s show-button&#x3C;/div&#x3E;&#x3C;/div&#x3E;&#x3C;/div&#x3E;&#x3C;/div&#x3E;">
Modal with an XSS inside the data-target
</button>
+
+ <br><br>
+
+ <button type="button" class="btn btn-secondary btn-lg" id="btnPreventModal">
+ Launch prevented modal on hide (to see the result open your console)
+ </button>
</div>
<script src="../../../assets/js/vendor/jquery-slim.min.js"></script>
@@ -203,6 +209,22 @@
$('#firefoxModal').on('focus', reportFirefoxTestResult.bind(false))
$('#ff-bug-input').on('focus', reportFirefoxTestResult.bind(true))
})
+
+ $('#btnPreventModal').on('click', function () {
+ $('#firefoxModal').one('shown.bs.modal', function () {
+ $(this).modal('hide')
+ })
+ .one('hide.bs.modal', function (event) {
+ event.preventDefault()
+ if ($(this).data('bs.modal')._isTransitioning) {
+ console.error('Modal plugin should not set _isTransitioning when hide event is prevented')
+ } else {
+ console.log('Test passed')
+ $(this).modal('hide') // work as expected
+ }
+ })
+ .modal('show')
+ })
})
</script>
</body>
diff --git a/package-lock.json b/package-lock.json
index 4fec5a068..bc5c6b5fc 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -67,9 +67,9 @@
}
},
"ansi-escapes": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.0.0.tgz",
- "integrity": "sha512-O/klc27mWNUigtv0F8NJWbLF00OcegQalkqKURWdosW08YZKi4m6CnSUSvIZG1otNJbTWhN01Hhz389DW7mvDQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-1.4.0.tgz",
+ "integrity": "sha1-06ioOzGapneTZisT52HHkRQiMG4=",
"dev": true
},
"ansi-regex": {
@@ -237,16 +237,16 @@
"dev": true
},
"autoprefixer": {
- "version": "7.1.4",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.4.tgz",
- "integrity": "sha512-MB1XybOJqu1uAwpfSilAa1wSURNc4W310CFKvMj1fNaJBFxr1PGgz72vZaPr9ryKGqs2vYZ6jDyJ0aiGELjsoA==",
+ "version": "7.1.5",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-7.1.5.tgz",
+ "integrity": "sha512-sMN453qIm8Z+tunzYWW+Y490wWkICHhCYm/VohLjjl+N7ARSFuF5au7E6tr7oEbeeXj8mNjpSw2kxjJaO6YCOw==",
"dev": true,
"requires": {
- "browserslist": "2.4.0",
- "caniuse-lite": "1.0.30000743",
+ "browserslist": "2.5.1",
+ "caniuse-lite": "1.0.30000745",
"normalize-range": "0.1.2",
"num2fraction": "1.2.2",
- "postcss": "6.0.12",
+ "postcss": "6.0.13",
"postcss-value-parser": "3.3.0"
}
},
@@ -268,7 +268,7 @@
"integrity": "sha1-uk+S8XFn37q0CYN4VFS5rBScPG0=",
"dev": true,
"requires": {
- "follow-redirects": "1.2.4",
+ "follow-redirects": "1.2.5",
"is-buffer": "1.1.5"
}
},
@@ -290,6 +290,14 @@
"output-file-sync": "2.0.0",
"slash": "1.0.0",
"source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"babel-code-frame": {
@@ -324,6 +332,14 @@
"micromatch": "2.3.11",
"resolve": "1.4.0",
"source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"babel-eslint": {
@@ -436,6 +452,14 @@
"lodash": "4.17.4",
"source-map": "0.5.7",
"trim-right": "1.0.1"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"babel-helper-annotate-as-pure": {
@@ -1031,7 +1055,7 @@
"babel-plugin-transform-optional-catch-binding": "7.0.0-beta.2",
"babel-plugin-transform-regenerator": "7.0.0-beta.2",
"babel-plugin-transform-unicode-property-regex": "2.0.5",
- "browserslist": "2.4.0",
+ "browserslist": "2.5.1",
"invariant": "2.2.2",
"semver": "5.4.1"
}
@@ -1140,9 +1164,9 @@
}
},
"bluebird": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz",
- "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=",
+ "version": "3.5.1",
+ "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.1.tgz",
+ "integrity": "sha512-MKiLiV+I1AA596t9w1sQJ8jkiSr5+ZKi0WKrYGUn6d1Fx+Ij4tIj+m2WMQSGczs5jZVxV339chE8iwk6F64wjA==",
"dev": true
},
"boom": {
@@ -1216,12 +1240,12 @@
}
},
"browserslist": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.4.0.tgz",
- "integrity": "sha512-aM2Gt4x9bVlCUteADBS6JP0F+2tMWKM1jQzUulVROtdFWFIcIVvY76AJbr7GDqy0eDhn+PcnpzzivGxY4qiaKQ==",
+ "version": "2.5.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.5.1.tgz",
+ "integrity": "sha512-jAvM2ku7YDJ+leAq3bFH1DE0Ylw+F+EQDq4GkqZfgPEqpWYw9ofQH85uKSB9r3Tv7XDbfqVtE+sdvKJW7IlPJA==",
"dev": true,
"requires": {
- "caniuse-lite": "1.0.30000743",
+ "caniuse-lite": "1.0.30000745",
"electron-to-chromium": "1.3.24"
}
},
@@ -1241,26 +1265,27 @@
}
},
"bundlesize": {
- "version": "0.14.4",
- "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.14.4.tgz",
- "integrity": "sha512-Qi04ADUB+FoeBD98XuSLNt54SW4onfMyuNHnyaHS6rq6/+D11RR+lzADoxFmf5ei9iu1sBqxdltAh6lbJGCT0Q==",
+ "version": "0.15.2",
+ "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.15.2.tgz",
+ "integrity": "sha512-qtn2xv9yd02nTSEzW/qWAEgzjrZhoqxb7v3uE0l0LyuCE3VbVjfxJ+ZmIiAN/Gxv4ystlFFSkOjNGTQDf+pCJA==",
"dev": true,
"requires": {
"axios": "0.16.2",
- "bytes": "2.5.0",
+ "bytes": "3.0.0",
"ci-env": "1.4.0",
"commander": "2.11.0",
"github-build": "1.2.0",
"glob": "7.1.2",
- "gzip-size": "3.0.0",
+ "gzip-size": "4.0.0",
+ "opencollective": "1.0.3",
"prettycli": "1.4.3",
"read-pkg-up": "2.0.0"
}
},
"bytes": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/bytes/-/bytes-2.5.0.tgz",
- "integrity": "sha1-TJQj6i0lLCcMQbK97+/5u2tiwGo=",
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz",
+ "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=",
"dev": true
},
"caller-path": {
@@ -1303,15 +1328,15 @@
}
},
"caniuse-db": {
- "version": "1.0.30000671",
- "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000671.tgz",
- "integrity": "sha1-nwcbvHuWmUY4zLr0eCnVihV3qO0=",
+ "version": "1.0.30000745",
+ "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30000745.tgz",
+ "integrity": "sha1-slmmFzej5IxPtLaxvETt6yZM1CI=",
"dev": true
},
"caniuse-lite": {
- "version": "1.0.30000743",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000743.tgz",
- "integrity": "sha1-9PXGdQZ2/49hROpARWw3KdU0F2k=",
+ "version": "1.0.30000745",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30000745.tgz",
+ "integrity": "sha1-INb+3hFXpJNRM1ApRvx+DmuIDaU=",
"dev": true
},
"capture-stack-trace": {
@@ -1381,6 +1406,14 @@
"dev": true,
"requires": {
"source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"clean-css-cli": {
@@ -1410,9 +1443,9 @@
}
},
"cli-spinners": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.0.1.tgz",
- "integrity": "sha1-JnUyHBAPGVsCh3rEmemRH6NLl4M=",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.1.0.tgz",
+ "integrity": "sha1-8YR7FohE2RemceudFH499JfJDQY=",
"dev": true
},
"cli-width": {
@@ -1451,15 +1484,6 @@
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
}
}
},
@@ -1738,9 +1762,9 @@
"dev": true
},
"dependency-graph": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.5.0.tgz",
- "integrity": "sha1-ce33lF27qGwbGayYK2r7ZHa1bdU=",
+ "version": "0.5.1",
+ "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.5.1.tgz",
+ "integrity": "sha512-nk3OjiI68T3876/tsm4Hm57ye7zc4Kl87hkcALBMCuSrN1q1NvuY5HCnSSkoJjGdrMo5gmu0WTN2cV/D76q/mw==",
"dev": true
},
"detect-file": {
@@ -1842,6 +1866,15 @@
"integrity": "sha1-m3uIuwXOufoBahd4M8wt3jiPIbY=",
"dev": true
},
+ "encoding": {
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.12.tgz",
+ "integrity": "sha1-U4tm8+5izRq1HsMjgp0flIDHS+s=",
+ "dev": true,
+ "requires": {
+ "iconv-lite": "0.4.19"
+ }
+ },
"ensure-posix-path": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/ensure-posix-path/-/ensure-posix-path-1.0.2.tgz",
@@ -1929,7 +1962,7 @@
"globals": "9.18.0",
"ignore": "3.3.5",
"imurmurhash": "0.1.4",
- "inquirer": "3.3.0",
+ "inquirer": "3.0.6",
"is-resolvable": "1.0.0",
"js-yaml": "3.10.0",
"json-stable-stringify": "1.0.1",
@@ -1997,6 +2030,23 @@
"integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==",
"dev": true
},
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ }
+ }
+ },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -2006,27 +2056,15 @@
}
},
"eslint-plugin-compat": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-1.0.4.tgz",
- "integrity": "sha512-16yjDdjrivRQT7/Kov+3O6DMvfg8WYC1JKPAsvf/UNtdLBeMXVYATohAM4nOak1ynGP69mKUlOjw7nroUqY9Sg==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-plugin-compat/-/eslint-plugin-compat-2.0.1.tgz",
+ "integrity": "sha512-6LtsFQsrFyPGLBVJMnQEmUEY1Sc0Trpz56i/y3qTCA5JKc1KePKS5q5Xcc8LoGgPyeDw3IfnyYqS4Q7vR1Ffeg==",
"dev": true,
"requires": {
"babel-runtime": "6.26.0",
- "browserslist": "2.1.4",
- "caniuse-db": "1.0.30000671",
+ "browserslist": "2.5.1",
+ "caniuse-db": "1.0.30000745",
"requireindex": "1.1.0"
- },
- "dependencies": {
- "browserslist": {
- "version": "2.1.4",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-2.1.4.tgz",
- "integrity": "sha1-zFJq9KExK30uBWU+VtDIq3DA4FM=",
- "dev": true,
- "requires": {
- "caniuse-lite": "1.0.30000743",
- "electron-to-chromium": "1.3.24"
- }
- }
}
},
"eslint-scope": {
@@ -2385,9 +2423,9 @@
"dev": true
},
"follow-redirects": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.4.tgz",
- "integrity": "sha512-Suw6KewLV2hReSyEOeql+UUkBVyiBm3ok1VPrVFRZnQInWpdoZbbiG5i8aJVSjTr0yQ4Ava0Sh6/joCg1Brdqw==",
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.2.5.tgz",
+ "integrity": "sha512-lMhwQTryFbG+wYsAIEKC1Kf5IGDlVNnONRogIBllh7LLoV7pNIxW0z9fhjRar9NBql+hd2Y49KboVVNxf6GEfg==",
"dev": true,
"requires": {
"debug": "2.6.9"
@@ -2536,15 +2574,6 @@
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
}
}
},
@@ -2762,12 +2791,21 @@
"dev": true
},
"gzip-size": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz",
- "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.0.0.tgz",
+ "integrity": "sha512-6SWfFRd8r8VTKTpJCR7h/T6IbCaK+jM/n2gB1+pV3IrKcrLO1WTb8ZWdaRy1T/nwOz80cp4gAJf8sujpZxfA1w==",
"dev": true,
"requires": {
- "duplexer": "0.1.1"
+ "duplexer": "0.1.1",
+ "pify": "3.0.0"
+ },
+ "dependencies": {
+ "pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "dev": true
+ }
}
},
"har-schema": {
@@ -2889,7 +2927,7 @@
"integrity": "sha1-PfpDD+dG63vGfCbmlz3EpwyhfLM=",
"dev": true,
"requires": {
- "bluebird": "3.5.0",
+ "bluebird": "3.5.1",
"chalk": "1.1.3",
"cjson": "0.5.0",
"glob": "7.1.2",
@@ -2919,15 +2957,6 @@
"supports-color": "2.0.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -3035,13 +3064,13 @@
"dev": true
},
"inquirer": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.3.0.tgz",
- "integrity": "sha512-h+xtnyk4EwKvFWHrUYsWErEVR+igKtLdchu+o0Z1RL7VU/jVMFbYir2bp6bAj8efFNxWqHX0dIss6fJQ+/+qeQ==",
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.0.6.tgz",
+ "integrity": "sha1-4EqqnQW3o8ubD0B9BDdfBEcZA0c=",
"dev": true,
"requires": {
- "ansi-escapes": "3.0.0",
- "chalk": "2.1.0",
+ "ansi-escapes": "1.4.0",
+ "chalk": "1.1.3",
"cli-cursor": "2.1.0",
"cli-width": "2.2.0",
"external-editor": "2.0.5",
@@ -3049,11 +3078,37 @@
"lodash": "4.17.4",
"mute-stream": "0.0.7",
"run-async": "2.3.0",
- "rx-lite": "4.0.8",
- "rx-lite-aggregates": "4.0.8",
+ "rx": "4.1.0",
"string-width": "2.1.1",
- "strip-ansi": "4.0.0",
+ "strip-ansi": "3.0.1",
"through": "2.3.8"
+ },
+ "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
+ },
+ "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"
+ }
+ },
+ "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
+ }
}
},
"interpret": {
@@ -3559,9 +3614,9 @@
}
},
"known-css-properties": {
- "version": "0.3.0",
- "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.3.0.tgz",
- "integrity": "sha512-QMQcnKAiQccfQTqtBh/qwquGZ2XK/DXND1jrcN9M8gMMy99Gwla7GQjndVUsEqIaRyP6bsFRuhwRj5poafBGJQ==",
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/known-css-properties/-/known-css-properties-0.4.1.tgz",
+ "integrity": "sha512-n+ThoCKhyMFKkMfksdLMP5ndp+VzwDRzQdH6JlmZ2GTpUenYB2EeEKjOue2SErAAG/MmBSUISpwvawDhydWQdQ==",
"dev": true
},
"latest-version": {
@@ -3823,15 +3878,6 @@
"supports-color": "2.0.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -4150,6 +4196,16 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true
},
+ "node-fetch": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.6.3.tgz",
+ "integrity": "sha1-3CNO3WSJmC1Y6PDbT2lQKavNjAQ=",
+ "dev": true,
+ "requires": {
+ "encoding": "0.1.12",
+ "is-stream": "1.1.0"
+ }
+ },
"node-gyp": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.6.2.tgz",
@@ -4240,15 +4296,6 @@
"which": "1.3.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -4470,6 +4517,80 @@
"mimic-fn": "1.1.0"
}
},
+ "opencollective": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/opencollective/-/opencollective-1.0.3.tgz",
+ "integrity": "sha1-ruY3K8KBRFg2kMPKja7PwSDdDvE=",
+ "dev": true,
+ "requires": {
+ "babel-polyfill": "6.23.0",
+ "chalk": "1.1.3",
+ "inquirer": "3.0.6",
+ "minimist": "1.2.0",
+ "node-fetch": "1.6.3",
+ "opn": "4.0.2"
+ },
+ "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
+ },
+ "babel-polyfill": {
+ "version": "6.23.0",
+ "resolved": "https://registry.npmjs.org/babel-polyfill/-/babel-polyfill-6.23.0.tgz",
+ "integrity": "sha1-g2TKYt+Or7gwSZ9pkXdGbDsDSZ0=",
+ "dev": true,
+ "requires": {
+ "babel-runtime": "6.26.0",
+ "core-js": "2.5.1",
+ "regenerator-runtime": "0.10.5"
+ }
+ },
+ "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"
+ }
+ },
+ "minimist": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
+ "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=",
+ "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=",
+ "dev": true
+ },
+ "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
+ }
+ }
+ },
+ "opn": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/opn/-/opn-4.0.2.tgz",
+ "integrity": "sha1-erwi5kTf9jsKltWrfyeQwPAavJU=",
+ "dev": true,
+ "requires": {
+ "object-assign": "4.1.1",
+ "pinkie-promise": "2.0.1"
+ }
+ },
"optionator": {
"version": "0.8.2",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz",
@@ -4492,7 +4613,7 @@
"requires": {
"chalk": "1.1.3",
"cli-cursor": "2.1.0",
- "cli-spinners": "1.0.1",
+ "cli-spinners": "1.1.0",
"log-symbols": "1.0.2"
},
"dependencies": {
@@ -4515,15 +4636,6 @@
"supports-color": "2.0.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -4959,13 +5071,13 @@
"dev": true
},
"postcss": {
- "version": "6.0.12",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.12.tgz",
- "integrity": "sha512-K6SLofXEK43FBSyZ6/ExQV7ji24OEw4tEY6x1CAf7+tcoMWJoO24Rf3rVFVpk+5IQL1e1Cy3sTKfg7hXuLzafg==",
+ "version": "6.0.13",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.13.tgz",
+ "integrity": "sha512-nHsrD1PPTMSJDfU+osVsLtPkSP9YGeoOz4FDLN4r1DW4N5vqL1J+gACzTQHsfwIiWG/0/nV4yCzjTMo1zD8U1g==",
"dev": true,
"requires": {
"chalk": "2.1.0",
- "source-map": "0.5.7",
+ "source-map": "0.6.1",
"supports-color": "4.4.0"
}
},
@@ -4977,12 +5089,12 @@
"requires": {
"chalk": "2.1.0",
"chokidar": "1.7.0",
- "dependency-graph": "0.5.0",
+ "dependency-graph": "0.5.1",
"fs-extra": "4.0.2",
"get-stdin": "5.0.1",
"globby": "6.1.0",
"ora": "1.3.0",
- "postcss": "6.0.12",
+ "postcss": "6.0.13",
"postcss-load-config": "1.2.0",
"postcss-reporter": "5.0.0",
"pretty-hrtime": "1.0.3",
@@ -5090,7 +5202,7 @@
"integrity": "sha512-zl0EEqq8Urh37Ppdv9zzhpZpLHrgkxmt6e3O4ftRa7/b8Uq2LV+/KBVM8/KuzmHNu+mthhOArg1lxbfqQ3NUdg==",
"dev": true,
"requires": {
- "postcss": "5.2.17"
+ "postcss": "5.2.18"
},
"dependencies": {
"ansi-styles": {
@@ -5127,9 +5239,9 @@
"dev": true
},
"postcss": {
- "version": "5.2.17",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.17.tgz",
- "integrity": "sha1-z09Ze4ZNZcikkrLqvp1wbIecOIs=",
+ "version": "5.2.18",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz",
+ "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==",
"dev": true,
"requires": {
"chalk": "1.1.3",
@@ -5138,14 +5250,11 @@
"supports-color": "3.2.3"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
},
"supports-color": {
"version": "3.2.3",
@@ -5205,7 +5314,7 @@
"chalk": "2.1.0",
"lodash": "4.17.4",
"log-symbols": "2.1.0",
- "postcss": "6.0.12"
+ "postcss": "6.0.13"
},
"dependencies": {
"log-symbols": {
@@ -5225,13 +5334,22 @@
"integrity": "sha1-Kcy8fDfe36wwTp//C/FZaz9qDk4=",
"dev": true
},
+ "postcss-safe-parser": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/postcss-safe-parser/-/postcss-safe-parser-3.0.1.tgz",
+ "integrity": "sha1-t1Pv9sfArqXoN1++TN6L+QY/8UI=",
+ "dev": true,
+ "requires": {
+ "postcss": "6.0.13"
+ }
+ },
"postcss-scss": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/postcss-scss/-/postcss-scss-1.0.2.tgz",
"integrity": "sha1-/0XPM1S4ee6JpOtoaA9GrJuxT5Q=",
"dev": true,
"requires": {
- "postcss": "6.0.12"
+ "postcss": "6.0.13"
}
},
"postcss-selector-parser": {
@@ -5252,7 +5370,7 @@
"dev": true,
"requires": {
"lodash": "4.17.4",
- "postcss": "6.0.12"
+ "postcss": "6.0.13"
}
},
"postcss-value-parser": {
@@ -5858,21 +5976,12 @@
"is-promise": "2.1.0"
}
},
- "rx-lite": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz",
- "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=",
+ "rx": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz",
+ "integrity": "sha1-pfE/957zt0D+MKqAP7CfmIBdR4I=",
"dev": true
},
- "rx-lite-aggregates": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz",
- "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=",
- "dev": true,
- "requires": {
- "rx-lite": "4.0.8"
- }
- },
"safe-buffer": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.1.tgz",
@@ -5975,15 +6084,6 @@
"strip-ansi": "3.0.1"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
@@ -6055,15 +6155,6 @@
"supports-color": "2.0.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -6208,9 +6299,9 @@
}
},
"source-map": {
- "version": "0.5.7",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
- "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
"dev": true
},
"source-map-support": {
@@ -6220,6 +6311,14 @@
"dev": true,
"requires": {
"source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"spdx-correct": {
@@ -6315,6 +6414,23 @@
"requires": {
"is-fullwidth-code-point": "2.0.0",
"strip-ansi": "4.0.0"
+ },
+ "dependencies": {
+ "ansi-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
+ "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
+ "dev": true
+ },
+ "strip-ansi": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
+ "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "dev": true,
+ "requires": {
+ "ansi-regex": "3.0.0"
+ }
+ }
}
},
"string.prototype.padend": {
@@ -6335,20 +6451,12 @@
"dev": true
},
"strip-ansi": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz",
- "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "3.0.0"
- },
- "dependencies": {
- "ansi-regex": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz",
- "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=",
- "dev": true
- }
+ "ansi-regex": "2.1.1"
}
},
"strip-bom": {
@@ -6385,15 +6493,15 @@
"dev": true
},
"stylelint": {
- "version": "8.1.1",
- "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-8.1.1.tgz",
- "integrity": "sha512-RtjUtqG2h3dP4CuMU1M++GRJGvKXWozmv5yhLoOLy7NWP2jJZOwLZSVwtcjXQsBJBfGuC33mooBOwNaCIhi2tQ==",
+ "version": "8.2.0",
+ "resolved": "https://registry.npmjs.org/stylelint/-/stylelint-8.2.0.tgz",
+ "integrity": "sha512-57JWIz/1Uh9ehZMZyAqlFC0EDfQrMXCH8yqt8ZuJQQvV3LBKgAM/JYd+CWi1hC4eJtRODSPbIIBYKdGjkPZdMg==",
"dev": true,
"requires": {
- "autoprefixer": "7.1.4",
+ "autoprefixer": "7.1.5",
"balanced-match": "1.0.0",
"chalk": "2.1.0",
- "cosmiconfig": "2.2.2",
+ "cosmiconfig": "3.1.0",
"debug": "3.1.0",
"execall": "1.0.0",
"file-entry-cache": "2.0.0",
@@ -6403,7 +6511,7 @@
"html-tags": "2.0.0",
"ignore": "3.3.5",
"imurmurhash": "0.1.4",
- "known-css-properties": "0.3.0",
+ "known-css-properties": "0.4.1",
"lodash": "4.17.4",
"log-symbols": "2.1.0",
"mathml-tag-names": "2.0.1",
@@ -6411,15 +6519,16 @@
"micromatch": "2.3.11",
"normalize-selector": "0.2.0",
"pify": "3.0.0",
- "postcss": "6.0.12",
+ "postcss": "6.0.13",
"postcss-less": "1.1.1",
"postcss-media-query-parser": "0.2.3",
"postcss-reporter": "5.0.0",
"postcss-resolve-nested-selector": "0.1.1",
+ "postcss-safe-parser": "3.0.1",
"postcss-scss": "1.0.2",
"postcss-selector-parser": "2.2.3",
"postcss-value-parser": "3.3.0",
- "resolve-from": "3.0.0",
+ "resolve-from": "4.0.0",
"specificity": "0.3.2",
"string-width": "2.1.1",
"style-search": "0.1.0",
@@ -6428,6 +6537,18 @@
"table": "4.0.2"
},
"dependencies": {
+ "cosmiconfig": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-3.1.0.tgz",
+ "integrity": "sha512-zedsBhLSbPBms+kE7AH4vHg6JsKDz6epSv2/+5XHs8ILHlgDciSJfSWf8sX9aQ52Jb7KI7VswUTsLpR/G0cr2Q==",
+ "dev": true,
+ "requires": {
+ "is-directory": "0.3.1",
+ "js-yaml": "3.10.0",
+ "parse-json": "3.0.0",
+ "require-from-string": "2.0.1"
+ }
+ },
"get-stdin": {
"version": "5.0.1",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-5.0.1.tgz",
@@ -6464,16 +6585,31 @@
"chalk": "2.1.0"
}
},
+ "parse-json": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-3.0.0.tgz",
+ "integrity": "sha1-+m9HsY4jgm6tMvJj50TQ4ehH+xM=",
+ "dev": true,
+ "requires": {
+ "error-ex": "1.3.1"
+ }
+ },
"pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
"dev": true
},
+ "require-from-string": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.1.tgz",
+ "integrity": "sha1-xUUjPp19pmFunVmt+zn8n1iGdv8=",
+ "dev": true
+ },
"resolve-from": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz",
- "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=",
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
+ "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
"dev": true
}
}
@@ -6509,7 +6645,7 @@
"dev": true,
"requires": {
"lodash": "4.17.4",
- "postcss": "6.0.12",
+ "postcss": "6.0.13",
"postcss-sorting": "3.0.2"
}
},
@@ -6532,7 +6668,7 @@
"integrity": "sha1-ZeUbOVhDL7cNVFGmi7M+MtDPHvc=",
"dev": true,
"requires": {
- "postcss": "6.0.12"
+ "postcss": "6.0.13"
}
},
"supports-color": {
@@ -6709,6 +6845,14 @@
"requires": {
"commander": "2.11.0",
"source-map": "0.5.7"
+ },
+ "dependencies": {
+ "source-map": {
+ "version": "0.5.7",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=",
+ "dev": true
+ }
}
},
"unc-path-regex": {
@@ -6813,15 +6957,6 @@
"supports-color": "2.0.0"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -6872,6 +7007,12 @@
"extsprintf": "1.3.0"
}
},
+ "vnu-jar": {
+ "version": "17.11.1",
+ "resolved": "https://registry.npmjs.org/vnu-jar/-/vnu-jar-17.11.1.tgz",
+ "integrity": "sha512-GtlIJyyBQzVw4WCn5ZIsv/lRBqr02vHzr2RofljEURqsKy/CwUmVRjEJJL/d4nou5+B3rpaf3D1scAdQGOX1tA==",
+ "dev": true
+ },
"walk-sync": {
"version": "0.3.1",
"resolved": "https://registry.npmjs.org/walk-sync/-/walk-sync-0.3.1.tgz",
@@ -6925,15 +7066,6 @@
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
}
}
},
@@ -6965,15 +7097,6 @@
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
}
}
},
@@ -6984,9 +7107,9 @@
"dev": true
},
"workbox-build": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-2.0.3.tgz",
- "integrity": "sha512-Tqwqaq/JAKV2Lj37Eg/AdZq7r7UYrFQ1gTyPx0PBJ2dhQU1Sz/MSa6MUsbY0wVNqyXYqbkaizg2PVmbljLpvdQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-build/-/workbox-build-2.1.0.tgz",
+ "integrity": "sha512-Jdhfnsw5N7vnomC1sDkgZx/COYF5/1qW07nBt3qvFfe8OUSNE5323JpErMZif7HSoEUMvn/Fau9WEbKMu80u6Q==",
"dev": true,
"requires": {
"chalk": "1.1.3",
@@ -6994,7 +7117,7 @@
"glob": "7.1.2",
"lodash.template": "4.4.0",
"mkdirp": "0.5.1",
- "workbox-sw": "2.0.3"
+ "workbox-sw": "2.1.0"
},
"dependencies": {
"ansi-styles": {
@@ -7036,15 +7159,6 @@
"graceful-fs": "4.1.11"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"supports-color": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz",
@@ -7054,9 +7168,9 @@
}
},
"workbox-sw": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-2.0.3.tgz",
- "integrity": "sha512-oVVkci0qYtYnV7kiUcLOWnzCNXXrVpUhCFajqg/cv+T8IWO2onV75qktpjXK+2wvaCVWYStinZ/D8AFSZHTnmQ==",
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/workbox-sw/-/workbox-sw-2.1.0.tgz",
+ "integrity": "sha512-+pQmxqjJsNzEOJFMW64rlTakxmgtlWH1PFMY8PP32TsBDHMEqk1vSHeizaiI0FCUq6nvXlqBr9CNrokYl26d4w==",
"dev": true
},
"wrap-ansi": {
@@ -7088,15 +7202,6 @@
"is-fullwidth-code-point": "1.0.0",
"strip-ansi": "3.0.1"
}
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
}
}
},
@@ -7249,15 +7354,6 @@
"strip-ansi": "3.0.1"
}
},
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "dev": true,
- "requires": {
- "ansi-regex": "2.1.1"
- }
- },
"strip-bom": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz",
diff --git a/package.json b/package.json
index 0b4958ff5..ba56a1d42 100644
--- a/package.json
+++ b/package.json
@@ -25,9 +25,9 @@
"css-compile": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap.scss dist/css/bootstrap.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-grid.scss dist/css/bootstrap-grid.css && node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 scss/bootstrap-reboot.scss dist/css/bootstrap-reboot.css",
"css-compile-docs": "node-sass --output-style expanded --source-map true --source-map-contents true --precision 6 assets/scss/docs.scss assets/css/docs.min.css",
"css-lint": "stylelint --config build/.stylelintrc --syntax scss \"scss/**/*.scss\"",
- "css-lint-docs": "stylelint --config build/.stylelintrc --syntax scss \"assets/scss/*.scss\"",
+ "css-lint-docs": "stylelint --config build/.stylelintrc --syntax scss \"assets/scss/*.scss\" && stylelint --config docs/4.0/examples/.stylelintrc \"docs/**/*.css\"",
"css-prefix": "postcss --config build/postcss.config.js --replace \"dist/css/*.css\"",
- "css-prefix-docs": "postcss --config build/postcss.config.js --no-map --replace assets/css/docs.min.css",
+ "css-prefix-docs": "postcss --config build/postcss.config.js --replace \"assets/css/docs.min.css\" \"docs/**/*.css\"",
"css-minify": "cleancss --level 1 --source-map --source-map-inline-sources --output dist/css/bootstrap.min.css dist/css/bootstrap.css && cleancss --level 1 --source-map --source-map-inline-sources --output dist/css/bootstrap-grid.min.css dist/css/bootstrap-grid.css && cleancss --level 1 --source-map --source-map-inline-sources --output dist/css/bootstrap-reboot.min.css dist/css/bootstrap-reboot.css",
"css-minify-docs": "cleancss --level 1 --source-map --source-map-inline-sources --output assets/css/docs.min.css assets/css/docs.min.css",
"js": "npm-run-all js-lint* js-compile* js-minify*",
@@ -49,7 +49,7 @@
"docs-compile": "bundle exec jekyll build",
"postdocs-compile": "npm run docs-workbox-precache",
"docs-github": "shx echo \"github: true\" > twbsconfig.yml && npm run docs-compile -- --config _config.yml,twbsconfig.yml && shx rm ./twbsconfig.yml",
- "docs-lint": "htmllint --rc build/.htmllintrc \"_gh_pages/**/*.html\" \"js/tests/**/*.html\"",
+ "docs-lint": "htmllint --rc build/.htmllintrc \"_gh_pages/**/*.html\" \"js/tests/**/*.html\" && node build/htmllint.js",
"docs-serve": "bundle exec jekyll serve",
"docs-upload-preview": "build/upload-preview.sh",
"docs-workbox-precache": "node build/workbox.js",
@@ -67,7 +67,7 @@
"main": "dist/js/bootstrap",
"repository": {
"type": "git",
- "url": "https://github.com/twbs/bootstrap.git"
+ "url": "git+https://github.com/twbs/bootstrap.git"
},
"bugs": {
"url": "https://github.com/twbs/bootstrap/issues"
@@ -85,11 +85,11 @@
"babel-plugin-external-helpers": "^7.0.0-beta.0",
"babel-plugin-transform-es2015-modules-strip": "^0.1.1",
"babel-preset-env": "^2.0.0-beta.0",
- "bundlesize": "^0.14.4",
+ "bundlesize": "^0.15.2",
"clean-css-cli": "^4.1.6",
"cross-env": "^5.0.5",
"eslint": "^4.2.0",
- "eslint-plugin-compat": "^1.0.4",
+ "eslint-plugin-compat": "^2.0.1",
"htmllint-cli": "^0.0.6",
"jsunitsaucelabs": "^1.2.0",
"node-sass": "^4.5.3",
@@ -111,6 +111,7 @@
"stylelint-order": "^0.7.0",
"stylelint-scss": "^2.1.0",
"uglify-js": "^3.0.24",
+ "vnu-jar": "^17.11.1",
"workbox-build": "^2.0.1"
},
"engines": {
diff --git a/scss/_buttons.scss b/scss/_buttons.scss
index d69c15998..72fc5f340 100644
--- a/scss/_buttons.scss
+++ b/scss/_buttons.scss
@@ -32,8 +32,8 @@
@include box-shadow(none);
}
- &:active,
- &.active {
+ &:not([disabled]):not(.disabled):active,
+ &:not([disabled]):not(.disabled).active {
background-image: none;
@include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);
}
diff --git a/scss/_card.scss b/scss/_card.scss
index 295d6afcf..a739f1935 100644
--- a/scss/_card.scss
+++ b/scss/_card.scss
@@ -17,6 +17,18 @@
margin-right: 0;
margin-left: 0;
}
+
+ > .list-group:first-child {
+ .list-group-item:first-child {
+ @include border-top-radius($card-border-radius);
+ }
+ }
+
+ > .list-group:last-child {
+ .list-group-item:last-child {
+ @include border-bottom-radius($card-border-radius);
+ }
+ }
}
.card-body {
@@ -49,21 +61,6 @@
}
}
-.card {
- > .list-group:first-child {
- .list-group-item:first-child {
- @include border-top-radius($card-border-radius);
- }
- }
-
- > .list-group:last-child {
- .list-group-item:last-child {
- @include border-bottom-radius($card-border-radius);
- }
- }
-}
-
-
//
// Optional textual caps
//
@@ -156,6 +153,7 @@
.card {
display: flex;
+ // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
flex: 1 0 0%;
flex-direction: column;
margin-right: $card-deck-margin;
@@ -182,6 +180,7 @@
flex-flow: row wrap;
.card {
+ // Flexbugs #4: https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored
flex: 1 0 0%;
margin-bottom: 0;
@@ -214,6 +213,17 @@
}
}
+ &:only-child {
+ @include border-radius($card-border-radius);
+
+ .card-img-top {
+ @include border-top-radius($card-border-radius);
+ }
+ .card-img-bottom {
+ @include border-bottom-radius($card-border-radius);
+ }
+ }
+
&:not(:first-child):not(:last-child):not(:only-child) {
border-radius: 0;
@@ -222,10 +232,6 @@
border-radius: 0;
}
}
-
- &:only-child {
- @include border-radius($card-border-radius);
- }
}
}
}
diff --git a/scss/_dropdown.scss b/scss/_dropdown.scss
index 32657167f..1782d5b9f 100644
--- a/scss/_dropdown.scss
+++ b/scss/_dropdown.scss
@@ -9,19 +9,6 @@
@include caret;
}
-// Allow for dropdowns to go bottom up (aka, dropup-menu)
-// Just add .dropup after the standard .dropdown class and you're set.
-.dropup {
- .dropdown-menu {
- margin-top: 0;
- margin-bottom: $dropdown-spacer;
- }
-
- .dropdown-toggle {
- @include caret(up);
- }
-}
-
// The dropdown menu
.dropdown-menu {
position: absolute;
@@ -44,6 +31,19 @@
@include box-shadow($dropdown-box-shadow);
}
+// Allow for dropdowns to go bottom up (aka, dropup-menu)
+// Just add .dropup after the standard .dropdown class and you're set.
+.dropup {
+ .dropdown-menu {
+ margin-top: 0;
+ margin-bottom: $dropdown-spacer;
+ }
+
+ .dropdown-toggle {
+ @include caret(up);
+ }
+}
+
// Dividers (basically an `<hr>`) within the dropdown
.dropdown-divider {
@include nav-divider($dropdown-divider-bg);
diff --git a/scss/_reboot.scss b/scss/_reboot.scss
index 7dfc8d317..3055cc33d 100644
--- a/scss/_reboot.scss
+++ b/scss/_reboot.scss
@@ -1,4 +1,4 @@
-// stylelint-disable
+// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix
// Reboot
//
@@ -35,13 +35,17 @@ html {
// IE10+ doesn't honor `<meta name="viewport">` in some cases.
@at-root {
- @-ms-viewport { width: device-width; }
+ @-ms-viewport {
+ width: device-width;
+ }
}
+// stylelint-disable selector-list-comma-newline-after
// Shim for "new" HTML5 structural elements to display correctly (IE10, older browsers)
article, aside, dialog, figcaption, figure, footer, header, hgroup, main, nav, section {
display: block;
}
+// stylelint-enable selector-list-comma-newline-after
// Body
//
@@ -91,10 +95,12 @@ hr {
//
// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top
// margin for easier control within type scales as it avoids margin collapsing.
+// stylelint-disable selector-list-comma-newline-after
h1, h2, h3, h4, h5, h6 {
margin-top: 0;
margin-bottom: $headings-margin-bottom;
}
+// stylelint-enable selector-list-comma-newline-after
// Reset margins on paragraphs
//
@@ -157,10 +163,12 @@ dfn {
font-style: italic; // Add the correct font style in Android 4.3-
}
+// stylelint-disable font-weight-notation
b,
strong {
font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari
}
+// stylelint-enable font-weight-notation
small {
font-size: 80%; // Add the correct font size in all browsers
@@ -224,6 +232,7 @@ a:not([href]):not([tabindex]) {
// Code
//
+// stylelint-disable font-family-no-duplicate-names
pre,
code,
kbd,
@@ -231,6 +240,7 @@ samp {
font-family: monospace, monospace; // Correct the inheritance and scaling of font size in all browsers.
font-size: 1em; // Correct the odd `em` font sizing in all browsers.
}
+// stylelint-enable font-family-no-duplicate-names
pre {
// Remove browser default top margin
@@ -283,7 +293,7 @@ a,
area,
button,
[role="button"],
-input:not([type=range]),
+input:not([type="range"]),
label,
select,
summary,
diff --git a/scss/_root.scss b/scss/_root.scss
index 78ac03915..ad550df3b 100644
--- a/scss/_root.scss
+++ b/scss/_root.scss
@@ -1,16 +1,19 @@
:root {
+ // Custom variable values only support SassScript inside `#{}`.
@each $color, $value in $colors {
- --#{$color}: $value;
+ --#{$color}: #{$value};
}
@each $color, $value in $theme-colors {
- --#{$color}: $value;
+ --#{$color}: #{$value};
}
@each $bp, $value in $grid-breakpoints {
- --breakpoint-#{$bp}: $value;
+ --breakpoint-#{$bp}: #{$value};
}
- --font-family-sans-serif: $font-family-sans-serif;
- --font-family-monospace: $font-family-monospace;
+ // Use `inspect` for lists so that quoted items keep the quotes.
+ // See https://github.com/sass/sass/issues/2383#issuecomment-336349172
+ --font-family-sans-serif: #{inspect($font-family-sans-serif)};
+ --font-family-monospace: #{inspect($font-family-monospace)};
}
diff --git a/scss/_tables.scss b/scss/_tables.scss
index 32384391e..6bd0b91a4 100644
--- a/scss/_tables.scss
+++ b/scss/_tables.scss
@@ -103,6 +103,7 @@
//
// Same table markup, but inverted color scheme: dark background and light text.
+// stylelint-disable-next-line no-duplicate-selectors
.table {
.thead-dark {
th {
diff --git a/scss/_tooltip.scss b/scss/_tooltip.scss
index fe97fbbbd..7b5db1cf2 100644
--- a/scss/_tooltip.scss
+++ b/scss/_tooltip.scss
@@ -21,6 +21,12 @@
height: $tooltip-arrow-height;
}
+ .arrow::before {
+ position: absolute;
+ border-color: transparent;
+ border-style: solid;
+ }
+
&.bs-tooltip-top {
padding: $tooltip-arrow-width 0;
.arrow {
@@ -88,12 +94,6 @@
@extend .bs-tooltip-left;
}
}
-
- .arrow::before {
- position: absolute;
- border-color: transparent;
- border-style: solid;
- }
}
// Wrapper for the tooltip content
diff --git a/scss/_variables.scss b/scss/_variables.scss
index 4e987373c..1808e4bd9 100644
--- a/scss/_variables.scss
+++ b/scss/_variables.scss
@@ -9,7 +9,7 @@
//
// stylelint-disable
-$white: #fff !default;
+$white: #fff !default;
$gray-100: #f8f9fa !default;
$gray-200: #e9ecef !default;
$gray-300: #dee2e6 !default;
@@ -19,7 +19,7 @@ $gray-600: #868e96 !default;
$gray-700: #495057 !default;
$gray-800: #343a40 !default;
$gray-900: #212529 !default;
-$black: #000 !default;
+$black: #000 !default;
$grays: () !default;
$grays: map-merge((
@@ -47,36 +47,36 @@ $cyan: #17a2b8 !default;
$colors: () !default;
$colors: map-merge((
- "blue": $blue,
- "indigo": $indigo,
- "purple": $purple,
- "pink": $pink,
- "red": $red,
- "orange": $orange,
- "yellow": $yellow,
- "green": $green,
- "teal": $teal,
- "cyan": $cyan,
- "white": $white,
- "gray": $gray-600,
- "gray-dark": $gray-800
+ "blue": $blue,
+ "indigo": $indigo,
+ "purple": $purple,
+ "pink": $pink,
+ "red": $red,
+ "orange": $orange,
+ "yellow": $yellow,
+ "green": $green,
+ "teal": $teal,
+ "cyan": $cyan,
+ "white": $white,
+ "gray": $gray-600,
+ "gray-dark": $gray-800
), $colors);
$theme-colors: () !default;
$theme-colors: map-merge((
- "primary": $blue,
- "secondary": $gray-600,
- "success": $green,
- "info": $cyan,
- "warning": $yellow,
- "danger": $red,
- "light": $gray-100,
- "dark": $gray-800
+ "primary": $blue,
+ "secondary": $gray-600,
+ "success": $green,
+ "info": $cyan,
+ "warning": $yellow,
+ "danger": $red,
+ "light": $gray-100,
+ "dark": $gray-800
), $theme-colors);
// stylelint-enable
// Set a specific jump point for requesting color jumps
-$theme-color-interval: 8% !default;
+$theme-color-interval: 8% !default;
// Options
@@ -121,23 +121,23 @@ $sizes: (
//
// Settings for the `<body>` element.
-$body-bg: $white !default;
-$body-color: $gray-900 !default;
+$body-bg: $white !default;
+$body-color: $gray-900 !default;
// Links
//
// Style anchor elements.
-$link-color: theme-color("primary") !default;
-$link-decoration: none !default;
-$link-hover-color: darken($link-color, 15%) !default;
-$link-hover-decoration: underline !default;
+$link-color: theme-color("primary") !default;
+$link-decoration: none !default;
+$link-hover-color: darken($link-color, 15%) !default;
+$link-hover-decoration: underline !default;
// Paragraphs
//
// Style p element.
-$paragraph-margin-bottom: 1rem !default;
+$paragraph-margin-bottom: 1rem !default;
// Grid breakpoints
@@ -152,6 +152,7 @@ $grid-breakpoints: (
lg: 992px,
xl: 1200px
) !default;
+
@include _assert-ascending($grid-breakpoints, "$grid-breakpoints");
@include _assert-starts-at-zero($grid-breakpoints);
@@ -166,6 +167,7 @@ $container-max-widths: (
lg: 960px,
xl: 1140px
) !default;
+
@include _assert-ascending($container-max-widths, "$container-max-widths");
@@ -173,31 +175,31 @@ $container-max-widths: (
//
// Set the number of columns and specify the width of the gutters.
-$grid-columns: 12 !default;
-$grid-gutter-width: 30px !default;
+$grid-columns: 12 !default;
+$grid-gutter-width: 30px !default;
// Components
//
// Define common padding and border radius sizes and more.
-$line-height-lg: 1.5 !default;
-$line-height-sm: 1.5 !default;
+$line-height-lg: 1.5 !default;
+$line-height-sm: 1.5 !default;
-$border-width: 1px !default;
-$border-color: $gray-200 !default;
+$border-width: 1px !default;
+$border-color: $gray-200 !default;
-$border-radius: .25rem !default;
-$border-radius-lg: .3rem !default;
-$border-radius-sm: .2rem !default;
+$border-radius: .25rem !default;
+$border-radius-lg: .3rem !default;
+$border-radius-sm: .2rem !default;
-$component-active-color: $white !default;
-$component-active-bg: theme-color("primary") !default;
+$component-active-color: $white !default;
+$component-active-bg: theme-color("primary") !default;
-$caret-width: .3em !default;
+$caret-width: .3em !default;
-$transition-base: all .2s ease-in-out !default;
-$transition-fade: opacity .15s linear !default;
-$transition-collapse: height .35s ease !default;
+$transition-base: all .2s ease-in-out !default;
+$transition-fade: opacity .15s linear !default;
+$transition-collapse: height .35s ease !default;
// Fonts
@@ -205,67 +207,67 @@ $transition-collapse: height .35s ease !default;
// Font, line-height, and color for body text, headings, and more.
// stylelint-disable value-keyword-case
-$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
-$font-family-monospace: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
-$font-family-base: $font-family-sans-serif !default;
+$font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !default;
+$font-family-monospace: "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !default;
+$font-family-base: $font-family-sans-serif !default;
// stylelint-enable value-keyword-case
-$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
-$font-size-lg: 1.25rem !default;
-$font-size-sm: .875rem !default;
+$font-size-base: 1rem !default; // Assumes the browser default, typically `16px`
+$font-size-lg: 1.25rem !default;
+$font-size-sm: .875rem !default;
-$font-weight-light: 300 !default;
-$font-weight-normal: normal !default;
-$font-weight-bold: bold !default;
+$font-weight-light: 300 !default;
+$font-weight-normal: 400 !default;
+$font-weight-bold: 700 !default;
-$font-weight-base: $font-weight-normal !default;
-$line-height-base: 1.5 !default;
+$font-weight-base: $font-weight-normal !default;
+$line-height-base: 1.5 !default;
-$h1-font-size: 2.5rem !default;
-$h2-font-size: 2rem !default;
-$h3-font-size: 1.75rem !default;
-$h4-font-size: 1.5rem !default;
-$h5-font-size: 1.25rem !default;
-$h6-font-size: 1rem !default;
+$h1-font-size: 2.5rem !default;
+$h2-font-size: 2rem !default;
+$h3-font-size: 1.75rem !default;
+$h4-font-size: 1.5rem !default;
+$h5-font-size: 1.25rem !default;
+$h6-font-size: 1rem !default;
-$headings-margin-bottom: ($spacer / 2) !default;
-$headings-font-family: inherit !default;
-$headings-font-weight: 500 !default;
-$headings-line-height: 1.1 !default;
-$headings-color: inherit !default;
+$headings-margin-bottom: ($spacer / 2) !default;
+$headings-font-family: inherit !default;
+$headings-font-weight: 500 !default;
+$headings-line-height: 1.1 !default;
+$headings-color: inherit !default;
-$display1-size: 6rem !default;
-$display2-size: 5.5rem !default;
-$display3-size: 4.5rem !default;
-$display4-size: 3.5rem !default;
+$display1-size: 6rem !default;
+$display2-size: 5.5rem !default;
+$display3-size: 4.5rem !default;
+$display4-size: 3.5rem !default;
-$display1-weight: 300 !default;
-$display2-weight: 300 !default;
-$display3-weight: 300 !default;
-$display4-weight: 300 !default;
-$display-line-height: $headings-line-height !default;
+$display1-weight: 300 !default;
+$display2-weight: 300 !default;
+$display3-weight: 300 !default;
+$display4-weight: 300 !default;
+$display-line-height: $headings-line-height !default;
-$lead-font-size: 1.25rem !default;
-$lead-font-weight: 300 !default;
+$lead-font-size: 1.25rem !default;
+$lead-font-weight: 300 !default;
-$small-font-size: 80% !default;
+$small-font-size: 80% !default;
-$text-muted: $gray-600 !default;
+$text-muted: $gray-600 !default;
-$blockquote-small-color: $gray-600 !default;
-$blockquote-font-size: ($font-size-base * 1.25) !default;
+$blockquote-small-color: $gray-600 !default;
+$blockquote-font-size: ($font-size-base * 1.25) !default;
-$hr-border-color: rgba($black,.1) !default;
-$hr-border-width: $border-width !default;
+$hr-border-color: rgba($black,.1) !default;
+$hr-border-width: $border-width !default;
-$mark-padding: .2em !default;
+$mark-padding: .2em !default;
-$dt-font-weight: $font-weight-bold !default;
+$dt-font-weight: $font-weight-bold !default;
-$kbd-box-shadow: inset 0 -.1rem 0 rgba($black,.25) !default;
-$nested-kbd-font-weight: $font-weight-bold !default;
+$kbd-box-shadow: inset 0 -.1rem 0 rgba($black,.25) !default;
+$nested-kbd-font-weight: $font-weight-bold !default;
-$list-inline-padding: 5px !default;
+$list-inline-padding: 5px !default;
$mark-bg: #fcf8e3 !default;
@@ -274,179 +276,179 @@ $mark-bg: #fcf8e3 !default;
//
// Customizes the `.table` component with basic values, each used across all table variations.
-$table-cell-padding: .75rem !default;
-$table-cell-padding-sm: .3rem !default;
+$table-cell-padding: .75rem !default;
+$table-cell-padding-sm: .3rem !default;
-$table-bg: transparent !default;
-$table-accent-bg: rgba($black,.05) !default;
-$table-hover-bg: rgba($black,.075) !default;
-$table-active-bg: $table-hover-bg !default;
+$table-bg: transparent !default;
+$table-accent-bg: rgba($black,.05) !default;
+$table-hover-bg: rgba($black,.075) !default;
+$table-active-bg: $table-hover-bg !default;
-$table-border-width: $border-width !default;
-$table-border-color: $gray-200 !default;
+$table-border-width: $border-width !default;
+$table-border-color: $gray-200 !default;
-$table-head-bg: $gray-200 !default;
-$table-head-color: $gray-700 !default;
+$table-head-bg: $gray-200 !default;
+$table-head-color: $gray-700 !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;
+$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
//
// For each of Bootstrap's buttons, define text, background and border color.
-$input-btn-padding-y: .375rem !default;
-$input-btn-padding-x: .75rem !default;
-$input-btn-line-height: $line-height-base !default;
+$input-btn-padding-y: .375rem !default;
+$input-btn-padding-x: .75rem !default;
+$input-btn-line-height: $line-height-base !default;
-$input-btn-padding-y-sm: .25rem !default;
-$input-btn-padding-x-sm: .5rem !default;
-$input-btn-line-height-sm: $line-height-sm !default;
+$input-btn-padding-y-sm: .25rem !default;
+$input-btn-padding-x-sm: .5rem !default;
+$input-btn-line-height-sm: $line-height-sm !default;
-$input-btn-padding-y-lg: .5rem !default;
-$input-btn-padding-x-lg: 1rem !default;
-$input-btn-line-height-lg: $line-height-lg !default;
+$input-btn-padding-y-lg: .5rem !default;
+$input-btn-padding-x-lg: 1rem !default;
+$input-btn-line-height-lg: $line-height-lg !default;
-$btn-font-weight: $font-weight-normal !default;
-$btn-box-shadow: inset 0 1px 0 rgba($white,.15), 0 1px 1px rgba($black,.075) !default;
-$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color("primary"), .25) !default;
-$btn-active-box-shadow: inset 0 3px 5px rgba($black,.125) !default;
+$btn-font-weight: $font-weight-normal !default;
+$btn-box-shadow: inset 0 1px 0 rgba($white,.15), 0 1px 1px rgba($black,.075) !default;
+$btn-focus-box-shadow: 0 0 0 3px rgba(theme-color("primary"), .25) !default;
+$btn-active-box-shadow: inset 0 3px 5px rgba($black,.125) !default;
-$btn-link-disabled-color: $gray-600 !default;
+$btn-link-disabled-color: $gray-600 !default;
-$btn-block-spacing-y: .5rem !default;
+$btn-block-spacing-y: .5rem !default;
// Allows for customizing button radius independently from global border radius
-$btn-border-radius: $border-radius !default;
-$btn-border-radius-lg: $border-radius-lg !default;
-$btn-border-radius-sm: $border-radius-sm !default;
+$btn-border-radius: $border-radius !default;
+$btn-border-radius-lg: $border-radius-lg !default;
+$btn-border-radius-sm: $border-radius-sm !default;
-$btn-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
+$btn-transition: background-color .15s ease-in-out, border-color .15s ease-in-out, box-shadow .15s ease-in-out !default;
// Forms
-$input-bg: $white !default;
-$input-disabled-bg: $gray-200 !default;
+$input-bg: $white !default;
+$input-disabled-bg: $gray-200 !default;
-$input-color: $gray-700 !default;
-$input-border-color: $gray-400 !default;
-$input-btn-border-width: $border-width !default; // For form controls and buttons
-$input-box-shadow: inset 0 1px 1px rgba($black,.075) !default;
+$input-color: $gray-700 !default;
+$input-border-color: $gray-400 !default;
+$input-btn-border-width: $border-width !default; // For form controls and buttons
+$input-box-shadow: inset 0 1px 1px rgba($black,.075) !default;
-$input-border-radius: $border-radius !default;
-$input-border-radius-lg: $border-radius-lg !default;
-$input-border-radius-sm: $border-radius-sm !default;
+$input-border-radius: $border-radius !default;
+$input-border-radius-lg: $border-radius-lg !default;
+$input-border-radius-sm: $border-radius-sm !default;
-$input-focus-bg: $input-bg !default;
-$input-focus-border-color: lighten(theme-color("primary"), 25%) !default;
-$input-focus-box-shadow: $input-box-shadow, $btn-focus-box-shadow !default;
-$input-focus-color: $input-color !default;
+$input-focus-bg: $input-bg !default;
+$input-focus-border-color: lighten(theme-color("primary"), 25%) !default;
+$input-focus-box-shadow: $input-box-shadow, $btn-focus-box-shadow !default;
+$input-focus-color: $input-color !default;
-$input-placeholder-color: $gray-600 !default;
+$input-placeholder-color: $gray-600 !default;
-$input-height-border: $input-btn-border-width * 2 !default;
+$input-height-border: $input-btn-border-width * 2 !default;
-$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;
-$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;
+$input-height-inner: ($font-size-base * $input-btn-line-height) + ($input-btn-padding-y * 2) !default;
+$input-height: calc(#{$input-height-inner} + #{$input-height-border}) !default;
-$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;
-$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;
+$input-height-inner-sm: ($font-size-sm * $input-btn-line-height-sm) + ($input-btn-padding-y-sm * 2) !default;
+$input-height-sm: calc(#{$input-height-inner-sm} + #{$input-height-border}) !default;
-$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;
-$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;
+$input-height-inner-lg: ($font-size-lg * $input-btn-line-height-lg) + ($input-btn-padding-y-lg * 2) !default;
+$input-height-lg: calc(#{$input-height-inner-lg} + #{$input-height-border}) !default;
-$input-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default;
+$input-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s !default;
-$form-text-margin-top: .25rem !default;
+$form-text-margin-top: .25rem !default;
-$form-check-margin-bottom: .5rem !default;
-$form-check-input-gutter: 1.25rem !default;
-$form-check-input-margin-y: .25rem !default;
-$form-check-input-margin-x: .25rem !default;
+$form-check-margin-bottom: .5rem !default;
+$form-check-input-gutter: 1.25rem !default;
+$form-check-input-margin-y: .25rem !default;
+$form-check-input-margin-x: .25rem !default;
-$form-check-inline-margin-x: .75rem !default;
+$form-check-inline-margin-x: .75rem !default;
-$form-group-margin-bottom: 1rem !default;
+$form-group-margin-bottom: 1rem !default;
-$input-group-addon-color: $input-color !default;
-$input-group-addon-bg: $gray-200 !default;
-$input-group-addon-border-color: $input-border-color !default;
+$input-group-addon-color: $input-color !default;
+$input-group-addon-bg: $gray-200 !default;
+$input-group-addon-border-color: $input-border-color !default;
-$custom-control-gutter: 1.5rem !default;
-$custom-control-spacer-y: .25rem !default;
-$custom-control-spacer-x: 1rem !default;
+$custom-control-gutter: 1.5rem !default;
+$custom-control-spacer-y: .25rem !default;
+$custom-control-spacer-x: 1rem !default;
-$custom-control-indicator-size: 1rem !default;
-$custom-control-indicator-bg: #ddd !default;
-$custom-control-indicator-bg-size: 50% 50% !default;
-$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;
+$custom-control-indicator-size: 1rem !default;
+$custom-control-indicator-bg: #ddd !default;
+$custom-control-indicator-bg-size: 50% 50% !default;
+$custom-control-indicator-box-shadow: inset 0 .25rem .25rem rgba($black,.1) !default;
-$custom-control-indicator-disabled-bg: $gray-200 !default;
-$custom-control-description-disabled-color: $gray-600 !default;
+$custom-control-indicator-disabled-bg: $gray-200 !default;
+$custom-control-description-disabled-color: $gray-600 !default;
-$custom-control-indicator-checked-color: $white !default;
-$custom-control-indicator-checked-bg: theme-color("primary") !default;
-$custom-control-indicator-checked-box-shadow: none !default;
+$custom-control-indicator-checked-color: $white !default;
+$custom-control-indicator-checked-bg: theme-color("primary") !default;
+$custom-control-indicator-checked-box-shadow: none !default;
-$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px theme-color("primary") !default;
+$custom-control-indicator-focus-box-shadow: 0 0 0 1px $body-bg, 0 0 0 3px theme-color("primary") !default;
-$custom-control-indicator-active-color: $white !default;
-$custom-control-indicator-active-bg: lighten(theme-color("primary"), 35%) !default;
-$custom-control-indicator-active-box-shadow: none !default;
+$custom-control-indicator-active-color: $white !default;
+$custom-control-indicator-active-bg: lighten(theme-color("primary"), 35%) !default;
+$custom-control-indicator-active-box-shadow: none !default;
-$custom-checkbox-indicator-border-radius: $border-radius !default;
-$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-checkbox-indicator-border-radius: $border-radius !default;
+$custom-checkbox-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='#{$custom-control-indicator-checked-color}' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E"), "#", "%23") !default;
-$custom-checkbox-indicator-indeterminate-bg: theme-color("primary") !default;
+$custom-checkbox-indicator-indeterminate-bg: theme-color("primary") !default;
$custom-checkbox-indicator-indeterminate-color: $custom-control-indicator-checked-color !default;
-$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-checkbox-indicator-icon-indeterminate: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='#{$custom-checkbox-indicator-indeterminate-color}' d='M0 2h4'/%3E%3C/svg%3E"), "#", "%23") !default;
$custom-checkbox-indicator-indeterminate-box-shadow: none !default;
-$custom-radio-indicator-border-radius: 50% !default;
-$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-radio-indicator-border-radius: 50% !default;
+$custom-radio-indicator-icon-checked: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='#{$custom-control-indicator-checked-color}'/%3E%3C/svg%3E"), "#", "%23") !default;
-$custom-select-padding-y: .375rem !default;
+$custom-select-padding-y: .375rem !default;
$custom-select-padding-x: .75rem !default;
$custom-select-height: $input-height !default;
$custom-select-indicator-padding: 1rem !default; // Extra padding to account for the presence of the background-image based indicator
$custom-select-line-height: $input-btn-line-height !default;
$custom-select-color: $input-color !default;
$custom-select-disabled-color: $gray-600 !default;
-$custom-select-bg: $white !default;
-$custom-select-disabled-bg: $gray-200 !default;
-$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
-$custom-select-indicator-color: #333 !default;
-$custom-select-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"), "#", "%23") !default;
-$custom-select-border-width: $input-btn-border-width !default;
-$custom-select-border-color: $input-border-color !default;
-$custom-select-border-radius: $border-radius !default;
-
-$custom-select-focus-border-color: lighten(theme-color("primary"), 25%) !default;
-$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;
-
-$custom-select-font-size-sm: 75% !default;
-$custom-select-height-sm: $input-height-sm !default;
-
-$custom-file-height: $input-height !default;
-$custom-file-width: 14rem !default;
-$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem theme-color("primary") !default;
-
-$custom-file-padding-y: $input-btn-padding-y !default;
-$custom-file-padding-x: $input-btn-padding-x !default;
-$custom-file-line-height: $input-btn-line-height !default;
-$custom-file-color: $input-color !default;
-$custom-file-bg: $input-bg !default;
-$custom-file-border-width: $input-btn-border-width !default;
-$custom-file-border-color: $input-border-color !default;
-$custom-file-border-radius: $input-border-radius !default;
-$custom-file-box-shadow: $input-box-shadow !default;
-$custom-file-button-color: $custom-file-color !default;
-$custom-file-button-bg: $input-group-addon-bg !default;
+$custom-select-bg: $white !default;
+$custom-select-disabled-bg: $gray-200 !default;
+$custom-select-bg-size: 8px 10px !default; // In pixels because image dimensions
+$custom-select-indicator-color: #333 !default;
+$custom-select-indicator: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='#{$custom-select-indicator-color}' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E"), "#", "%23") !default;
+$custom-select-border-width: $input-btn-border-width !default;
+$custom-select-border-color: $input-border-color !default;
+$custom-select-border-radius: $border-radius !default;
+
+$custom-select-focus-border-color: lighten(theme-color("primary"), 25%) !default;
+$custom-select-focus-box-shadow: inset 0 1px 2px rgba($black, .075), 0 0 5px rgba($custom-select-focus-border-color, .5) !default;
+
+$custom-select-font-size-sm: 75% !default;
+$custom-select-height-sm: $input-height-sm !default;
+
+$custom-file-height: $input-height !default;
+$custom-file-width: 14rem !default;
+$custom-file-focus-box-shadow: 0 0 0 .075rem $white, 0 0 0 .2rem theme-color("primary") !default;
+
+$custom-file-padding-y: $input-btn-padding-y !default;
+$custom-file-padding-x: $input-btn-padding-x !default;
+$custom-file-line-height: $input-btn-line-height !default;
+$custom-file-color: $input-color !default;
+$custom-file-bg: $input-bg !default;
+$custom-file-border-width: $input-btn-border-width !default;
+$custom-file-border-color: $input-border-color !default;
+$custom-file-border-radius: $input-border-radius !default;
+$custom-file-box-shadow: $input-box-shadow !default;
+$custom-file-button-color: $custom-file-color !default;
+$custom-file-button-bg: $input-group-addon-bg !default;
$custom-file-text: (
placeholder: (
en: "Choose file..."
@@ -458,36 +460,36 @@ $custom-file-text: (
// Form validation
-$form-feedback-valid-color: theme-color("success") !default;
-$form-feedback-invalid-color: theme-color("danger") !default;
+$form-feedback-valid-color: theme-color("success") !default;
+$form-feedback-invalid-color: theme-color("danger") !default;
// Dropdowns
//
// Dropdown menu container and contents.
-$dropdown-min-width: 10rem !default;
-$dropdown-padding-y: .5rem !default;
-$dropdown-spacer: .125rem !default;
-$dropdown-bg: $white !default;
-$dropdown-border-color: rgba($black,.15) !default;
-$dropdown-border-width: $border-width !default;
-$dropdown-divider-bg: $gray-200 !default;
-$dropdown-box-shadow: 0 .5rem 1rem rgba($black,.175) !default;
+$dropdown-min-width: 10rem !default;
+$dropdown-padding-y: .5rem !default;
+$dropdown-spacer: .125rem !default;
+$dropdown-bg: $white !default;
+$dropdown-border-color: rgba($black,.15) !default;
+$dropdown-border-width: $border-width !default;
+$dropdown-divider-bg: $gray-200 !default;
+$dropdown-box-shadow: 0 .5rem 1rem rgba($black,.175) !default;
-$dropdown-link-color: $gray-900 !default;
-$dropdown-link-hover-color: darken($gray-900, 5%) !default;
-$dropdown-link-hover-bg: $gray-100 !default;
+$dropdown-link-color: $gray-900 !default;
+$dropdown-link-hover-color: darken($gray-900, 5%) !default;
+$dropdown-link-hover-bg: $gray-100 !default;
-$dropdown-link-active-color: $component-active-color !default;
-$dropdown-link-active-bg: $component-active-bg !default;
+$dropdown-link-active-color: $component-active-color !default;
+$dropdown-link-active-bg: $component-active-bg !default;
-$dropdown-link-disabled-color: $gray-600 !default;
+$dropdown-link-disabled-color: $gray-600 !default;
-$dropdown-item-padding-y: .25rem !default;
-$dropdown-item-padding-x: 1.5rem !default;
+$dropdown-item-padding-y: .25rem !default;
+$dropdown-item-padding-x: 1.5rem !default;
-$dropdown-header-color: $gray-600 !default;
+$dropdown-header-color: $gray-600 !default;
// Z-index master list
@@ -495,31 +497,31 @@ $dropdown-header-color: $gray-600 !default;
// Warning: Avoid customizing these values. They're used for a bird's eye view
// of components dependent on the z-axis and are designed to all work together.
-$zindex-dropdown: 1000 !default;
-$zindex-sticky: 1020 !default;
-$zindex-fixed: 1030 !default;
-$zindex-modal-backdrop: 1040 !default;
-$zindex-modal: 1050 !default;
-$zindex-popover: 1060 !default;
-$zindex-tooltip: 1070 !default;
+$zindex-dropdown: 1000 !default;
+$zindex-sticky: 1020 !default;
+$zindex-fixed: 1030 !default;
+$zindex-modal-backdrop: 1040 !default;
+$zindex-modal: 1050 !default;
+$zindex-popover: 1060 !default;
+$zindex-tooltip: 1070 !default;
// Navs
-$nav-link-padding-y: .5rem !default;
-$nav-link-padding-x: 1rem !default;
-$nav-link-disabled-color: $gray-600 !default;
+$nav-link-padding-y: .5rem !default;
+$nav-link-padding-x: 1rem !default;
+$nav-link-disabled-color: $gray-600 !default;
-$nav-tabs-border-color: #ddd !default;
-$nav-tabs-border-width: $border-width !default;
-$nav-tabs-border-radius: $border-radius !default;
-$nav-tabs-link-hover-border-color: $gray-200 !default;
-$nav-tabs-link-active-color: $gray-700 !default;
-$nav-tabs-link-active-bg: $body-bg !default;
-$nav-tabs-link-active-border-color: #ddd !default;
+$nav-tabs-border-color: #ddd !default;
+$nav-tabs-border-width: $border-width !default;
+$nav-tabs-border-radius: $border-radius !default;
+$nav-tabs-link-hover-border-color: $gray-200 !default;
+$nav-tabs-link-active-color: $gray-700 !default;
+$nav-tabs-link-active-bg: $body-bg !default;
+$nav-tabs-link-active-border-color: #ddd !default;
-$nav-pills-border-radius: $border-radius !default;
-$nav-pills-link-active-color: $component-active-color !default;
-$nav-pills-link-active-bg: $component-active-bg !default;
+$nav-pills-border-radius: $border-radius !default;
+$nav-pills-link-active-color: $component-active-color !default;
+$nav-pills-link-active-bg: $component-active-bg !default;
// Navbar
@@ -532,286 +534,286 @@ $nav-link-height: $navbar-brand-font-size * $line-height-base
$navbar-brand-height: ($font-size-base * $line-height-base + $nav-link-padding-y * 2) !default;
$navbar-brand-padding-y: ($navbar-brand-height - $nav-link-height) / 2 !default;
-$navbar-toggler-padding-y: .25rem !default;
-$navbar-toggler-padding-x: .75rem !default;
-$navbar-toggler-font-size: $font-size-lg !default;
-$navbar-toggler-border-radius: $btn-border-radius !default;
+$navbar-toggler-padding-y: .25rem !default;
+$navbar-toggler-padding-x: .75rem !default;
+$navbar-toggler-font-size: $font-size-lg !default;
+$navbar-toggler-border-radius: $btn-border-radius !default;
$navbar-dark-color: rgba($white,.5) !default;
$navbar-dark-hover-color: rgba($white,.75) !default;
-$navbar-dark-active-color: rgba($white,1) !default;
+$navbar-dark-active-color: $white !default;
$navbar-dark-disabled-color: rgba($white,.25) !default;
-$navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
+$navbar-dark-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-dark-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
$navbar-dark-toggler-border-color: rgba($white,.1) !default;
$navbar-light-color: rgba($black,.5) !default;
$navbar-light-hover-color: rgba($black,.7) !default;
$navbar-light-active-color: rgba($black,.9) !default;
$navbar-light-disabled-color: rgba($black,.3) !default;
-$navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
+$navbar-light-toggler-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='#{$navbar-light-color}' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E"), "#", "%23") !default;
$navbar-light-toggler-border-color: rgba($black,.1) !default;
// Pagination
-$pagination-padding-y: .5rem !default;
-$pagination-padding-x: .75rem !default;
-$pagination-padding-y-sm: .25rem !default;
-$pagination-padding-x-sm: .5rem !default;
-$pagination-padding-y-lg: .75rem !default;
-$pagination-padding-x-lg: 1.5rem !default;
-$pagination-line-height: 1.25 !default;
+$pagination-padding-y: .5rem !default;
+$pagination-padding-x: .75rem !default;
+$pagination-padding-y-sm: .25rem !default;
+$pagination-padding-x-sm: .5rem !default;
+$pagination-padding-y-lg: .75rem !default;
+$pagination-padding-x-lg: 1.5rem !default;
+$pagination-line-height: 1.25 !default;
-$pagination-color: $link-color !default;
-$pagination-bg: $white !default;
-$pagination-border-width: $border-width !default;
-$pagination-border-color: #ddd !default;
+$pagination-color: $link-color !default;
+$pagination-bg: $white !default;
+$pagination-border-width: $border-width !default;
+$pagination-border-color: #ddd !default;
-$pagination-hover-color: $link-hover-color !default;
-$pagination-hover-bg: $gray-200 !default;
-$pagination-hover-border-color: #ddd !default;
+$pagination-hover-color: $link-hover-color !default;
+$pagination-hover-bg: $gray-200 !default;
+$pagination-hover-border-color: #ddd !default;
-$pagination-active-color: $white !default;
-$pagination-active-bg: theme-color("primary") !default;
-$pagination-active-border-color: theme-color("primary") !default;
+$pagination-active-color: $white !default;
+$pagination-active-bg: theme-color("primary") !default;
+$pagination-active-border-color: theme-color("primary") !default;
-$pagination-disabled-color: $gray-600 !default;
-$pagination-disabled-bg: $white !default;
-$pagination-disabled-border-color: #ddd !default;
+$pagination-disabled-color: $gray-600 !default;
+$pagination-disabled-bg: $white !default;
+$pagination-disabled-border-color: #ddd !default;
// Jumbotron
-$jumbotron-padding: 2rem !default;
-$jumbotron-bg: $gray-200 !default;
+$jumbotron-padding: 2rem !default;
+$jumbotron-bg: $gray-200 !default;
// Cards
-$card-spacer-y: .75rem !default;
-$card-spacer-x: 1.25rem !default;
-$card-border-width: $border-width !default;
-$card-border-radius: $border-radius !default;
-$card-border-color: rgba($black,.125) !default;
-$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
-$card-cap-bg: rgba($black, .03) !default;
-$card-bg: $white !default;
+$card-spacer-y: .75rem !default;
+$card-spacer-x: 1.25rem !default;
+$card-border-width: $border-width !default;
+$card-border-radius: $border-radius !default;
+$card-border-color: rgba($black,.125) !default;
+$card-inner-border-radius: calc(#{$card-border-radius} - #{$card-border-width}) !default;
+$card-cap-bg: rgba($black, .03) !default;
+$card-bg: $white !default;
-$card-img-overlay-padding: 1.25rem !default;
+$card-img-overlay-padding: 1.25rem !default;
-$card-group-margin: ($grid-gutter-width / 2) !default;
-$card-deck-margin: $card-group-margin !default;
+$card-group-margin: ($grid-gutter-width / 2) !default;
+$card-deck-margin: $card-group-margin !default;
-$card-columns-count: 3 !default;
-$card-columns-gap: 1.25rem !default;
-$card-columns-margin: $card-spacer-y !default;
+$card-columns-count: 3 !default;
+$card-columns-gap: 1.25rem !default;
+$card-columns-margin: $card-spacer-y !default;
// Tooltips
-$tooltip-max-width: 200px !default;
-$tooltip-color: $white !default;
-$tooltip-bg: $black !default;
-$tooltip-opacity: .9 !default;
-$tooltip-padding-y: 3px !default;
-$tooltip-padding-x: 8px !default;
-$tooltip-margin: 0 !default;
+$tooltip-max-width: 200px !default;
+$tooltip-color: $white !default;
+$tooltip-bg: $black !default;
+$tooltip-opacity: .9 !default;
+$tooltip-padding-y: 3px !default;
+$tooltip-padding-x: 8px !default;
+$tooltip-margin: 0 !default;
-$tooltip-arrow-width: 5px !default;
-$tooltip-arrow-height: 5px !default;
-$tooltip-arrow-color: $tooltip-bg !default;
+$tooltip-arrow-width: 5px !default;
+$tooltip-arrow-height: 5px !default;
+$tooltip-arrow-color: $tooltip-bg !default;
// Popovers
-$popover-inner-padding: 1px !default;
-$popover-bg: $white !default;
-$popover-max-width: 276px !default;
-$popover-border-width: $border-width !default;
-$popover-border-color: rgba($black,.2) !default;
-$popover-box-shadow: 0 5px 10px rgba($black,.2) !default;
+$popover-inner-padding: 1px !default;
+$popover-bg: $white !default;
+$popover-max-width: 276px !default;
+$popover-border-width: $border-width !default;
+$popover-border-color: rgba($black,.2) !default;
+$popover-box-shadow: 0 5px 10px rgba($black,.2) !default;
-$popover-header-bg: darken($popover-bg, 3%) !default;
-$popover-header-color: $headings-color !default;
-$popover-header-padding-y: 8px !default;
-$popover-header-padding-x: 14px !default;
+$popover-header-bg: darken($popover-bg, 3%) !default;
+$popover-header-color: $headings-color !default;
+$popover-header-padding-y: 8px !default;
+$popover-header-padding-x: 14px !default;
-$popover-body-color: $body-color !default;
-$popover-body-padding-y: 9px !default;
-$popover-body-padding-x: 14px !default;
+$popover-body-color: $body-color !default;
+$popover-body-padding-y: 9px !default;
+$popover-body-padding-x: 14px !default;
-$popover-arrow-width: 10px !default;
-$popover-arrow-height: 5px !default;
-$popover-arrow-color: $popover-bg !default;
+$popover-arrow-width: 10px !default;
+$popover-arrow-height: 5px !default;
+$popover-arrow-color: $popover-bg !default;
-$popover-arrow-outer-width: ($popover-arrow-width + 1px) !default;
-$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
+$popover-arrow-outer-width: ($popover-arrow-width + 1px) !default;
+$popover-arrow-outer-color: fade-in($popover-border-color, .05) !default;
// Badges
-$badge-font-size: 75% !default;
-$badge-font-weight: $font-weight-bold !default;
-$badge-padding-y: .25em !default;
-$badge-padding-x: .4em !default;
-$badge-border-radius: $border-radius !default;
+$badge-font-size: 75% !default;
+$badge-font-weight: $font-weight-bold !default;
+$badge-padding-y: .25em !default;
+$badge-padding-x: .4em !default;
+$badge-border-radius: $border-radius !default;
-$badge-pill-padding-x: .6em !default;
+$badge-pill-padding-x: .6em !default;
// Use a higher than normal value to ensure completely rounded edges when
// customizing padding or font-size on labels.
-$badge-pill-border-radius: 10rem !default;
+$badge-pill-border-radius: 10rem !default;
// Modals
// Padding applied to the modal body
-$modal-inner-padding: 15px !default;
+$modal-inner-padding: 15px !default;
-$modal-dialog-margin: 10px !default;
-$modal-dialog-margin-y-sm-up: 30px !default;
+$modal-dialog-margin: 10px !default;
+$modal-dialog-margin-y-sm-up: 30px !default;
-$modal-title-line-height: $line-height-base !default;
+$modal-title-line-height: $line-height-base !default;
-$modal-content-bg: $white !default;
-$modal-content-border-color: rgba($black,.2) !default;
-$modal-content-border-width: $border-width !default;
-$modal-content-box-shadow-xs: 0 3px 9px rgba($black,.5) !default;
-$modal-content-box-shadow-sm-up: 0 5px 15px rgba($black,.5) !default;
+$modal-content-bg: $white !default;
+$modal-content-border-color: rgba($black,.2) !default;
+$modal-content-border-width: $border-width !default;
+$modal-content-box-shadow-xs: 0 3px 9px rgba($black,.5) !default;
+$modal-content-box-shadow-sm-up: 0 5px 15px rgba($black,.5) !default;
-$modal-backdrop-bg: $black !default;
-$modal-backdrop-opacity: .5 !default;
-$modal-header-border-color: $gray-200 !default;
-$modal-footer-border-color: $modal-header-border-color !default;
-$modal-header-border-width: $modal-content-border-width !default;
-$modal-footer-border-width: $modal-header-border-width !default;
-$modal-header-padding: 15px !default;
+$modal-backdrop-bg: $black !default;
+$modal-backdrop-opacity: .5 !default;
+$modal-header-border-color: $gray-200 !default;
+$modal-footer-border-color: $modal-header-border-color !default;
+$modal-header-border-width: $modal-content-border-width !default;
+$modal-footer-border-width: $modal-header-border-width !default;
+$modal-header-padding: 15px !default;
-$modal-lg: 800px !default;
-$modal-md: 500px !default;
-$modal-sm: 300px !default;
+$modal-lg: 800px !default;
+$modal-md: 500px !default;
+$modal-sm: 300px !default;
-$modal-transition: transform .3s ease-out !default;
+$modal-transition: transform .3s ease-out !default;
// Alerts
//
// Define alert colors, border radius, and padding.
-$alert-padding-y: .75rem !default;
-$alert-padding-x: 1.25rem !default;
-$alert-margin-bottom: 1rem !default;
-$alert-border-radius: $border-radius !default;
-$alert-link-font-weight: $font-weight-bold !default;
-$alert-border-width: $border-width !default;
+$alert-padding-y: .75rem !default;
+$alert-padding-x: 1.25rem !default;
+$alert-margin-bottom: 1rem !default;
+$alert-border-radius: $border-radius !default;
+$alert-link-font-weight: $font-weight-bold !default;
+$alert-border-width: $border-width !default;
// Progress bars
-$progress-height: 1rem !default;
-$progress-font-size: .75rem !default;
-$progress-bg: $gray-200 !default;
-$progress-border-radius: $border-radius !default;
-$progress-box-shadow: inset 0 .1rem .1rem rgba($black,.1) !default;
-$progress-bar-color: $white !default;
-$progress-bar-bg: theme-color("primary") !default;
-$progress-bar-animation-timing: 1s linear infinite !default;
-$progress-bar-transition: width .6s ease !default;
+$progress-height: 1rem !default;
+$progress-font-size: .75rem !default;
+$progress-bg: $gray-200 !default;
+$progress-border-radius: $border-radius !default;
+$progress-box-shadow: inset 0 .1rem .1rem rgba($black,.1) !default;
+$progress-bar-color: $white !default;
+$progress-bar-bg: theme-color("primary") !default;
+$progress-bar-animation-timing: 1s linear infinite !default;
+$progress-bar-transition: width .6s ease !default;
// List group
-$list-group-bg: $white !default;
-$list-group-border-color: rgba($black,.125) !default;
-$list-group-border-width: $border-width !default;
-$list-group-border-radius: $border-radius !default;
+$list-group-bg: $white !default;
+$list-group-border-color: rgba($black,.125) !default;
+$list-group-border-width: $border-width !default;
+$list-group-border-radius: $border-radius !default;
-$list-group-item-padding-y: .75rem !default;
-$list-group-item-padding-x: 1.25rem !default;
+$list-group-item-padding-y: .75rem !default;
+$list-group-item-padding-x: 1.25rem !default;
-$list-group-hover-bg: $gray-100 !default;
-$list-group-active-color: $component-active-color !default;
-$list-group-active-bg: $component-active-bg !default;
-$list-group-active-border-color: $list-group-active-bg !default;
+$list-group-hover-bg: $gray-100 !default;
+$list-group-active-color: $component-active-color !default;
+$list-group-active-bg: $component-active-bg !default;
+$list-group-active-border-color: $list-group-active-bg !default;
-$list-group-disabled-color: $gray-600 !default;
-$list-group-disabled-bg: $list-group-bg !default;
+$list-group-disabled-color: $gray-600 !default;
+$list-group-disabled-bg: $list-group-bg !default;
-$list-group-action-color: $gray-700 !default;
-$list-group-action-hover-color: $list-group-action-color !default;
+$list-group-action-color: $gray-700 !default;
+$list-group-action-hover-color: $list-group-action-color !default;
-$list-group-action-active-color: $body-color !default;
-$list-group-action-active-bg: $gray-200 !default;
+$list-group-action-active-color: $body-color !default;
+$list-group-action-active-bg: $gray-200 !default;
// Image thumbnails
-$thumbnail-padding: .25rem !default;
-$thumbnail-bg: $body-bg !default;
-$thumbnail-border-width: $border-width !default;
-$thumbnail-border-color: #ddd !default;
-$thumbnail-border-radius: $border-radius !default;
-$thumbnail-box-shadow: 0 1px 2px rgba($black,.075) !default;
-$thumbnail-transition: all .2s ease-in-out !default;
+$thumbnail-padding: .25rem !default;
+$thumbnail-bg: $body-bg !default;
+$thumbnail-border-width: $border-width !default;
+$thumbnail-border-color: #ddd !default;
+$thumbnail-border-radius: $border-radius !default;
+$thumbnail-box-shadow: 0 1px 2px rgba($black,.075) !default;
+$thumbnail-transition: all .2s ease-in-out !default;
// Figures
-$figure-caption-font-size: 90% !default;
-$figure-caption-color: $gray-600 !default;
+$figure-caption-font-size: 90% !default;
+$figure-caption-color: $gray-600 !default;
// Breadcrumbs
-$breadcrumb-padding-y: .75rem !default;
-$breadcrumb-padding-x: 1rem !default;
-$breadcrumb-item-padding: .5rem !default;
+$breadcrumb-padding-y: .75rem !default;
+$breadcrumb-padding-x: 1rem !default;
+$breadcrumb-item-padding: .5rem !default;
-$breadcrumb-margin-bottom: 1rem !default;
+$breadcrumb-margin-bottom: 1rem !default;
-$breadcrumb-bg: $gray-200 !default;
-$breadcrumb-divider-color: $gray-600 !default;
-$breadcrumb-active-color: $gray-600 !default;
-$breadcrumb-divider: "/" !default;
+$breadcrumb-bg: $gray-200 !default;
+$breadcrumb-divider-color: $gray-600 !default;
+$breadcrumb-active-color: $gray-600 !default;
+$breadcrumb-divider: "/" !default;
// Carousel
-$carousel-control-color: $white !default;
-$carousel-control-width: 15% !default;
-$carousel-control-opacity: .5 !default;
+$carousel-control-color: $white !default;
+$carousel-control-width: 15% !default;
+$carousel-control-opacity: .5 !default;
-$carousel-indicator-width: 30px !default;
-$carousel-indicator-height: 3px !default;
-$carousel-indicator-spacer: 3px !default;
-$carousel-indicator-active-bg: $white !default;
+$carousel-indicator-width: 30px !default;
+$carousel-indicator-height: 3px !default;
+$carousel-indicator-spacer: 3px !default;
+$carousel-indicator-active-bg: $white !default;
-$carousel-caption-width: 70% !default;
-$carousel-caption-color: $white !default;
+$carousel-caption-width: 70% !default;
+$carousel-caption-color: $white !default;
-$carousel-control-icon-width: 20px !default;
+$carousel-control-icon-width: 20px !default;
-$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M4 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"), "#", "%23") !default;
-$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M1.5 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"), "#", "%23") !default;
+$carousel-control-prev-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E"), "#", "%23") !default;
+$carousel-control-next-icon-bg: str-replace(url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='#{$carousel-control-color}' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E"), "#", "%23") !default;
-$carousel-transition: transform .6s ease !default;
+$carousel-transition: transform .6s ease !default;
// Close
-$close-font-size: $font-size-base * 1.5 !default;
-$close-font-weight: $font-weight-bold !default;
-$close-color: $black !default;
-$close-text-shadow: 0 1px 0 $white !default;
+$close-font-size: $font-size-base * 1.5 !default;
+$close-font-weight: $font-weight-bold !default;
+$close-color: $black !default;
+$close-text-shadow: 0 1px 0 $white !default;
// Code
-$code-font-size: 90% !default;
-$code-padding-y: .2rem !default;
-$code-padding-x: .4rem !default;
-$code-color: #bd4147 !default;
-$code-bg: $gray-100 !default;
+$code-font-size: 90% !default;
+$code-padding-y: .2rem !default;
+$code-padding-x: .4rem !default;
+$code-color: #bd4147 !default;
+$code-bg: $gray-100 !default;
-$kbd-color: $white !default;
-$kbd-bg: $gray-900 !default;
+$kbd-color: $white !default;
+$kbd-bg: $gray-900 !default;
-$pre-color: $gray-900 !default;
-$pre-scrollable-max-height: 340px !default;
+$pre-color: $gray-900 !default;
+$pre-scrollable-max-height: 340px !default;
diff --git a/scss/mixins/_buttons.scss b/scss/mixins/_buttons.scss
index ef623ccd5..50cd4fcbc 100644
--- a/scss/mixins/_buttons.scss
+++ b/scss/mixins/_buttons.scss
@@ -32,8 +32,8 @@
border-color: $border;
}
- &:active,
- &.active,
+ &:not([disabled]):not(.disabled):active,
+ &:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
background-color: $active-background;
background-image: none; // Remove the gradient for the pressed/active state
@@ -65,8 +65,8 @@
background-color: transparent;
}
- &:active,
- &.active,
+ &:not([disabled]):not(.disabled):active,
+ &:not([disabled]):not(.disabled).active,
.show > &.dropdown-toggle {
color: $color-hover;
background-color: $color;
diff --git a/scss/mixins/_grid.scss b/scss/mixins/_grid.scss
index b5612e922..b75ebcbca 100644
--- a/scss/mixins/_grid.scss
+++ b/scss/mixins/_grid.scss
@@ -47,5 +47,6 @@
}
@mixin make-col-offset($size, $columns: $grid-columns) {
- margin-left: percentage($size / $columns);
+ $num: $size / $columns;
+ margin-left: if($num == 0, 0, percentage($num));
}