From 219ba7f2eae10b6df4cd2b65f1fb47515bc4285a Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 3 Oct 2017 22:12:31 +0300 Subject: [PATCH 01/35] make-col-offset: Remove percentage if it's zero. --- scss/mixins/_grid.scss | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scss/mixins/_grid.scss b/scss/mixins/_grid.scss index b5612e922e..b75ebcbca0 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)); } From 91b219d5e617a3556d172a219a02c1bf668463c2 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Oct 2017 10:04:34 +0300 Subject: [PATCH 02/35] Add comment where we explicitly use `flex: 1 0 0%;`. --- scss/_card.scss | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scss/_card.scss b/scss/_card.scss index 295d6afcf9..48ec3bb6b8 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -156,6 +156,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 +183,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; From 8fccaa2439e97ec72a4b7dc42ccc1f649790adb0 Mon Sep 17 00:00:00 2001 From: Mark Otto Date: Wed, 4 Oct 2017 20:18:06 -0700 Subject: [PATCH 03/35] formatting --- scss/_card.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scss/_card.scss b/scss/_card.scss index 48ec3bb6b8..ad4221806b 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -156,7 +156,7 @@ .card { display: flex; - // Flexbugs `#4`:https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored + // 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; @@ -183,7 +183,7 @@ flex-flow: row wrap; .card { - // Flexbugs `#4`:https://github.com/philipwalton/flexbugs#4-flex-shorthand-declarations-with-unitless-flex-basis-values-are-ignored + // 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; From d959a11f9e402914b992b8abda6e6ffdb93e73a0 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Thu, 5 Oct 2017 15:25:03 +0300 Subject: [PATCH 04/35] Bump gems to their latest versions. (#24264) --- Gemfile.lock | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Gemfile.lock b/Gemfile.lock index 99c54cc877..38c6658d61 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -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) From 0af78ac63054739db9ff8f08a14da5fdb206c693 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 6 Oct 2017 23:59:38 +0300 Subject: [PATCH 05/35] Hound CI: Enable stylelint. (#24234) --- .hound.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.hound.yml b/.hound.yml index d47b1677dd..4e09c34437 100644 --- a/.hound.yml +++ b/.hound.yml @@ -2,6 +2,11 @@ fail_on_violations: true stylelint: config_file: build/.stylelintrc + enabled: true + +eslint: + config_file: js/.eslintrc.json + ignore_file: .houndignore scss: enabled: false @@ -9,9 +14,5 @@ scss: jshint: enabled: false -eslint: - config_file: js/.eslintrc.json - ignore_file: .houndignore - ruby: enabled: false From 7e149e20a99c811290dfcda33fa543bb086407b1 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Oct 2017 14:02:02 +0300 Subject: [PATCH 06/35] Enable stylelint for _reboot.scss. --- scss/_reboot.scss | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/scss/_reboot.scss b/scss/_reboot.scss index 7dfc8d317f..3055cc33d9 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 `` 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, `

`-`

` 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, From 876733866911f4c6cfefeaf42aad5653105d7dce Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Oct 2017 14:02:35 +0300 Subject: [PATCH 07/35] Reindent _variables.scss. Now it's more consistent. Also switch to numeric values for font-weight. --- scss/_variables.scss | 832 ++++++++++++++++++++++--------------------- 1 file changed, 417 insertions(+), 415 deletions(-) diff --git a/scss/_variables.scss b/scss/_variables.scss index 4e987373cd..c9fe879f28 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 `` 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-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-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-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-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-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-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='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-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; From ebc82db8efe129c4e91849373ed018d7e3f0194e Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Oct 2017 14:11:00 +0300 Subject: [PATCH 08/35] Enable stylelint's no-duplicate-selectors rule. --- assets/scss/_brand.scss | 2 ++ assets/scss/_component-examples.scss | 2 +- assets/scss/_content.scss | 2 +- build/.stylelintrc | 2 +- scss/_card.scss | 27 ++++++++++++--------------- scss/_tables.scss | 1 + 6 files changed, 18 insertions(+), 18 deletions(-) diff --git a/assets/scss/_brand.scss b/assets/scss/_brand.scss index 1fb2119a25..2d5c5a4cf4 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 2a2c740b35..3d216991af 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 b8311495cf..112370a2da 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 8fa3104909..0027d7a082 100644 --- a/build/.stylelintrc +++ b/build/.stylelintrc @@ -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/scss/_card.scss b/scss/_card.scss index ad4221806b..25c511a90b 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 // diff --git a/scss/_tables.scss b/scss/_tables.scss index 32384391e1..6bd0b91a43 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 { From 1aea9d75175340da7365d134e58075091984d950 Mon Sep 17 00:00:00 2001 From: Vasilii Artemchuk Date: Sat, 7 Oct 2017 01:04:21 +0300 Subject: [PATCH 09/35] Update js/tests/README.md (#24281) --- js/tests/README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/js/tests/README.md b/js/tests/README.md index 72ece2d36f..8c8c2f17e8 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 = '
' + var templateHTML = '
' + '×' + '

Template necessary for the test.

' + '
' 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 From ef38ca1c11c63d8e962af4706e4d182e24468cee Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sun, 8 Oct 2017 14:20:41 +0300 Subject: [PATCH 10/35] Make `Dropped the Affix jQuery plugin` bold. (#24294) --- docs/4.0/migration.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/4.0/migration.md b/docs/4.0/migration.md index 7c70c72214..8a0d3d3faa 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. From 5e7a9afe35c2685d88bdb4a94c6718ac758f79b0 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sun, 8 Oct 2017 17:48:37 +0300 Subject: [PATCH 11/35] Update saucelabs-unit-test.js (#24297) Add license header and minor formatting tweaks. --- build/saucelabs-unit-test.js | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/build/saucelabs-unit-test.js b/build/saucelabs-unit-test.js index cfc4ed2745..3ff7fcc40d 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) } From 258507b756075ded64bc13ac6deb92e5dcebb7e5 Mon Sep 17 00:00:00 2001 From: Bardi Harborow Date: Wed, 27 Sep 2017 14:41:58 +0000 Subject: [PATCH 12/35] Move from htmllint to Travis-only vnu.jar. --- .travis.yml | 1 + build/.htmllintrc | 19 ------------------- build/htmllint.js | 23 +++++++++++++++++++++++ package.json | 2 +- 4 files changed, 25 insertions(+), 20 deletions(-) delete mode 100644 build/.htmllintrc create mode 100644 build/htmllint.js diff --git a/.travis.yml b/.travis.yml index 57c810b0a8..5952c303ac 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,6 +11,7 @@ before_install: install: - bundle install --deployment --jobs=3 --retry=3 - npm install + - curl -L https://github.com/validator/validator/releases/download/17.9.0/vnu.jar_17.9.0.zip | jar -x dist/vnu.jar && mv dist/vnu.jar vnu.jar after_success: - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then npm run docs-upload-preview; fi stages: diff --git a/build/.htmllintrc b/build/.htmllintrc deleted file mode 100644 index c04658fb9e..0000000000 --- a/build/.htmllintrc +++ /dev/null @@ -1,19 +0,0 @@ -{ - "attr-bans": ["align", "background", "bgcolor", "border", "frameborder", "longdesc", "marginwidth", "marginheight", "scrolling"], - "attr-name-style": false, - "attr-no-unsafe-char": false, - "class-style": "dash", - "doctype-first": true, - "doctype-html5": true, - "fig-req-figcaption": false, - "html-valid-content-model": false, - "id-class-ignore-regex": "(onclick|content|[a-z]+([A-Z][a-z])+)", - "id-class-style": "dash", - "img-req-src": false, - "img-req-alt": false, - "indent-style": "spaces", - "indent-width": 2, - "spec-char-escape": false, - "tag-bans": ["b", "i"], - "title-max-len": false -} diff --git a/build/htmllint.js b/build/htmllint.js new file mode 100644 index 0000000000..a40ff922ae --- /dev/null +++ b/build/htmllint.js @@ -0,0 +1,23 @@ +'use strict' + +const childProcess = require('child_process') +const fs = require('fs') + +if (fs.existsSync('vnu.jar')) { + childProcess.exec('java -version', function (error) { + if (error) { + console.error('skipping HTML lint test. java missing.') + return + } + + const vnu = childProcess.spawn( + 'java', + ['-jar', 'vnu.jar', '--skip-non-html', '_gh_pages/'], + { stdio: 'inherit' } + ) + + vnu.on('exit', process.exit) + }) +} else { + console.error('skipping HTML lint test. vnu.jar missing.') +} diff --git a/package.json b/package.json index 0b4958ff58..c7ed1ae5a2 100644 --- a/package.json +++ b/package.json @@ -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": "node build/htmllint.js", "docs-serve": "bundle exec jekyll serve", "docs-upload-preview": "build/upload-preview.sh", "docs-workbox-precache": "node build/workbox.js", From ee4176c9c9ea309ede9085c890f23edd79b3762b Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 27 Sep 2017 18:18:23 +0300 Subject: [PATCH 13/35] Move vnu-jar to devDependencies and remove completely htmlhint. --- .travis.yml | 1 - build/htmllint.js | 55 +++-- package-lock.json | 536 +--------------------------------------------- package.json | 2 +- 4 files changed, 46 insertions(+), 548 deletions(-) diff --git a/.travis.yml b/.travis.yml index 5952c303ac..57c810b0a8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,7 +11,6 @@ before_install: install: - bundle install --deployment --jobs=3 --retry=3 - npm install - - curl -L https://github.com/validator/validator/releases/download/17.9.0/vnu.jar_17.9.0.zip | jar -x dist/vnu.jar && mv dist/vnu.jar vnu.jar after_success: - if [ "$TRAVIS_REPO_SLUG" = twbs-savage/bootstrap ]; then npm run docs-upload-preview; fi stages: diff --git a/build/htmllint.js b/build/htmllint.js index a40ff922ae..f69d801411 100644 --- a/build/htmllint.js +++ b/build/htmllint.js @@ -1,23 +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 fs = require('fs') +const vnu = require('vnu-jar') -if (fs.existsSync('vnu.jar')) { - childProcess.exec('java -version', function (error) { - if (error) { - console.error('skipping HTML lint test. java missing.') - return - } +childProcess.exec('java -version', function (error) { + if (error) { + console.error('Skipping HTML lint test; Java is missing.') + return + } - const vnu = childProcess.spawn( - 'java', - ['-jar', 'vnu.jar', '--skip-non-html', '_gh_pages/'], - { stdio: 'inherit' } - ) + 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('|') - vnu.on('exit', process.exit) + 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' }) -} else { - console.error('skipping HTML lint test. vnu.jar missing.') -} + .on('exit', process.exit) +}) diff --git a/package-lock.json b/package-lock.json index 4fec5a068c..bec63e0222 100644 --- a/package-lock.json +++ b/package-lock.json @@ -137,12 +137,6 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, - "array-each": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", - "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", - "dev": true - }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -167,12 +161,6 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, - "array-slice": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", - "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", - "dev": true - }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -200,12 +188,6 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", - "dev": true - }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -1139,12 +1121,6 @@ "inherits": "2.0.3" } }, - "bluebird": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", - "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", - "dev": true - }, "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", @@ -1231,15 +1207,6 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, - "bulk-require": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz", - "integrity": "sha1-yz0DnmmBOaRE/FdLJh1rOyz0TIk=", - "dev": true, - "requires": { - "glob": "7.1.2" - } - }, "bundlesize": { "version": "0.14.4", "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.14.4.tgz", @@ -1365,15 +1332,6 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, - "cjson": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.5.0.tgz", - "integrity": "sha1-oPSGAeAWFk37LG2JHjgMlsramDk=", - "dev": true, - "requires": { - "json-parse-helpfulerror": "1.0.3" - } - }, "clean-css": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", @@ -1762,49 +1720,6 @@ "isarray": "1.0.0" } }, - "dom-serializer": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", - "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", - "dev": true, - "requires": { - "domelementtype": "1.1.3", - "entities": "1.1.1" - }, - "dependencies": { - "domelementtype": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", - "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", - "dev": true - } - } - }, - "domelementtype": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", - "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", - "dev": true - }, - "domhandler": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", - "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", - "dev": true, - "requires": { - "domelementtype": "1.3.0" - } - }, - "domutils": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", - "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", - "dev": true, - "requires": { - "dom-serializer": "0.1.0", - "domelementtype": "1.3.0" - } - }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -1848,12 +1763,6 @@ "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=", "dev": true }, - "entities": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", - "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", - "dev": true - }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", @@ -2336,36 +2245,6 @@ "resolve-dir": "0.1.1" } }, - "fined": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", - "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", - "dev": true, - "requires": { - "expand-tilde": "2.0.2", - "is-plain-object": "2.0.4", - "object.defaults": "1.1.0", - "object.pick": "1.3.0", - "parse-filepath": "1.0.1" - }, - "dependencies": { - "expand-tilde": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", - "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", - "dev": true, - "requires": { - "homedir-polyfill": "1.0.1" - } - } - } - }, - "flagged-respawn": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", - "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", - "dev": true - }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -2871,85 +2750,6 @@ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", "dev": true }, - "htmllint": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/htmllint/-/htmllint-0.6.0.tgz", - "integrity": "sha1-27AGZ23WbXZ8sba7h18IhAuRmY0=", - "dev": true, - "requires": { - "bulk-require": "1.0.1", - "htmlparser2": "3.9.2", - "lodash": "4.17.4", - "promise": "7.3.1" - } - }, - "htmllint-cli": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/htmllint-cli/-/htmllint-cli-0.0.6.tgz", - "integrity": "sha1-PfpDD+dG63vGfCbmlz3EpwyhfLM=", - "dev": true, - "requires": { - "bluebird": "3.5.0", - "chalk": "1.1.3", - "cjson": "0.5.0", - "glob": "7.1.2", - "htmllint": "0.6.0", - "liftoff": "2.3.0", - "promise": "7.3.1", - "semver": "5.4.1", - "yargs": "6.6.0" - }, - "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" - } - }, - "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", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - } - } - }, - "htmlparser2": { - "version": "3.9.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", - "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", - "dev": true, - "requires": { - "domelementtype": "1.3.0", - "domhandler": "2.4.1", - "domutils": "1.6.2", - "entities": "1.1.1", - "inherits": "2.0.3", - "readable-stream": "2.3.3" - } - }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -3077,24 +2877,6 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, - "is-absolute": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", - "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", - "dev": true, - "requires": { - "is-relative": "0.2.1", - "is-windows": "0.2.0" - }, - "dependencies": { - "is-windows": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", - "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", - "dev": true - } - } - }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3251,23 +3033,6 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -3307,15 +3072,6 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, - "is-relative": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", - "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", - "dev": true, - "requires": { - "is-unc-path": "0.1.2" - } - }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", @@ -3355,15 +3111,6 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, - "is-unc-path": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", - "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", - "dev": true, - "requires": { - "unc-path-regex": "0.1.2" - } - }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -3403,12 +3150,6 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, - "jju": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/jju/-/jju-1.3.0.tgz", - "integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=", - "dev": true - }, "js-base64": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", @@ -3456,15 +3197,6 @@ "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", "dev": true }, - "json-parse-helpfulerror": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", - "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", - "dev": true, - "requires": { - "jju": "1.3.0" - } - }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -3592,23 +3324,6 @@ "type-check": "0.3.2" } }, - "liftoff": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", - "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", - "dev": true, - "requires": { - "extend": "3.0.1", - "findup-sync": "0.4.3", - "fined": "1.1.0", - "flagged-respawn": "0.3.2", - "lodash.isplainobject": "4.0.6", - "lodash.isstring": "4.0.1", - "lodash.mapvalues": "4.6.0", - "rechoir": "0.6.2", - "resolve": "1.4.0" - } - }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -3735,18 +3450,6 @@ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", - "dev": true - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", - "dev": true - }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -3758,12 +3461,6 @@ "lodash.isarray": "3.0.4" } }, - "lodash.mapvalues": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", - "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", - "dev": true - }, "lodash.mergewith": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", @@ -3884,12 +3581,6 @@ "pify": "2.3.0" } }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -4396,35 +4087,6 @@ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, - "object.defaults": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", - "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", - "dev": true, - "requires": { - "array-each": "1.0.1", - "array-slice": "1.0.0", - "for-own": "1.0.0", - "isobject": "3.0.1" - }, - "dependencies": { - "for-own": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", - "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", - "dev": true, - "requires": { - "for-in": "1.0.2" - } - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -4435,23 +4097,6 @@ "is-extendable": "0.1.1" } }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "3.0.1" - }, - "dependencies": { - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - } - } - }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4607,17 +4252,6 @@ "semver": "5.4.1" } }, - "parse-filepath": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", - "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", - "dev": true, - "requires": { - "is-absolute": "0.2.6", - "map-cache": "0.2.2", - "path-root": "0.1.1" - } - }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -4675,21 +4309,6 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, - "path-root": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", - "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", - "dev": true, - "requires": { - "path-root-regex": "0.1.2" - } - }, - "path-root-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", - "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", - "dev": true - }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -5312,15 +4931,6 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, - "promise": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", - "dev": true, - "requires": { - "asap": "2.0.6" - } - }, "ps-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", @@ -6711,12 +6321,6 @@ "source-map": "0.5.7" } }, - "unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", - "dev": true - }, "undefsafe": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", @@ -6872,6 +6476,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", @@ -7144,140 +6754,6 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, - "yargs": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", - "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", - "dev": true, - "requires": { - "camelcase": "3.0.0", - "cliui": "3.2.0", - "decamelize": "1.2.0", - "get-caller-file": "1.0.2", - "os-locale": "1.4.0", - "read-pkg-up": "1.0.1", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "1.0.2", - "which-module": "1.0.0", - "y18n": "3.2.1", - "yargs-parser": "4.2.1" - }, - "dependencies": { - "find-up": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", - "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", - "dev": true, - "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" - } - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", - "dev": true, - "requires": { - "number-is-nan": "1.0.1" - } - }, - "load-json-file": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", - "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" - } - }, - "path-exists": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", - "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", - "dev": true, - "requires": { - "pinkie-promise": "2.0.1" - } - }, - "path-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", - "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", - "dev": true, - "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" - } - }, - "read-pkg": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", - "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", - "dev": true, - "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" - } - }, - "read-pkg-up": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", - "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", - "dev": true, - "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", - "dev": true, - "requires": { - "code-point-at": "1.1.0", - "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" - } - }, - "strip-bom": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", - "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", - "dev": true, - "requires": { - "is-utf8": "0.2.1" - } - } - } - }, - "yargs-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", - "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", - "dev": true, - "requires": { - "camelcase": "3.0.0" - } - }, "yauzl": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", diff --git a/package.json b/package.json index c7ed1ae5a2..de371c8d5e 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,6 @@ "cross-env": "^5.0.5", "eslint": "^4.2.0", "eslint-plugin-compat": "^1.0.4", - "htmllint-cli": "^0.0.6", "jsunitsaucelabs": "^1.2.0", "node-sass": "^4.5.3", "nodemon": "^1.11.0", @@ -111,6 +110,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": { From 607f26d0a330f4513197b49319fd1dd6e68be2f3 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 4 Oct 2017 13:13:42 +0300 Subject: [PATCH 14/35] Add back htmlhint. --- build/.htmllintrc | 19 ++ package-lock.json | 530 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 3 files changed, 551 insertions(+), 1 deletion(-) create mode 100644 build/.htmllintrc diff --git a/build/.htmllintrc b/build/.htmllintrc new file mode 100644 index 0000000000..c04658fb9e --- /dev/null +++ b/build/.htmllintrc @@ -0,0 +1,19 @@ +{ + "attr-bans": ["align", "background", "bgcolor", "border", "frameborder", "longdesc", "marginwidth", "marginheight", "scrolling"], + "attr-name-style": false, + "attr-no-unsafe-char": false, + "class-style": "dash", + "doctype-first": true, + "doctype-html5": true, + "fig-req-figcaption": false, + "html-valid-content-model": false, + "id-class-ignore-regex": "(onclick|content|[a-z]+([A-Z][a-z])+)", + "id-class-style": "dash", + "img-req-src": false, + "img-req-alt": false, + "indent-style": "spaces", + "indent-width": 2, + "spec-char-escape": false, + "tag-bans": ["b", "i"], + "title-max-len": false +} diff --git a/package-lock.json b/package-lock.json index bec63e0222..b9ac483fe6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -137,6 +137,12 @@ "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", "dev": true }, + "array-each": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha1-p5SvDAWrF1KEbudTofIRoFugxE8=", + "dev": true + }, "array-filter": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/array-filter/-/array-filter-0.0.1.tgz", @@ -161,6 +167,12 @@ "integrity": "sha1-FziZ0//Rx9k4PkR5Ul2+J4yrXys=", "dev": true }, + "array-slice": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-slice/-/array-slice-1.0.0.tgz", + "integrity": "sha1-5zA08A3MH0CHYAj9IP6ud71LfC8=", + "dev": true + }, "array-union": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", @@ -188,6 +200,12 @@ "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", "dev": true }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, "asn1": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.3.tgz", @@ -1121,6 +1139,12 @@ "inherits": "2.0.3" } }, + "bluebird": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.5.0.tgz", + "integrity": "sha1-eRQg1/VR7qKJdFOop3ZT+WYG1nw=", + "dev": true + }, "boom": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/boom/-/boom-4.3.1.tgz", @@ -1207,6 +1231,15 @@ "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", "dev": true }, + "bulk-require": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/bulk-require/-/bulk-require-1.0.1.tgz", + "integrity": "sha1-yz0DnmmBOaRE/FdLJh1rOyz0TIk=", + "dev": true, + "requires": { + "glob": "7.1.2" + } + }, "bundlesize": { "version": "0.14.4", "resolved": "https://registry.npmjs.org/bundlesize/-/bundlesize-0.14.4.tgz", @@ -1332,6 +1365,15 @@ "integrity": "sha512-UZK3NBx2Mca+b5LsG7bY183pHWt5Y1xts4P3Pz7ENTwGVnJOUWbRb3ocjvX7hx9tq/yTAdclXm9sZ38gNuem4A==", "dev": true }, + "cjson": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cjson/-/cjson-0.5.0.tgz", + "integrity": "sha1-oPSGAeAWFk37LG2JHjgMlsramDk=", + "dev": true, + "requires": { + "json-parse-helpfulerror": "1.0.3" + } + }, "clean-css": { "version": "4.1.9", "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.1.9.tgz", @@ -1720,6 +1762,49 @@ "isarray": "1.0.0" } }, + "dom-serializer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.0.tgz", + "integrity": "sha1-BzxpdUbOB4DOI75KKOKT5AvDDII=", + "dev": true, + "requires": { + "domelementtype": "1.1.3", + "entities": "1.1.1" + }, + "dependencies": { + "domelementtype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.1.3.tgz", + "integrity": "sha1-vSh3PiZCiBrsUVRJJCmcXNgiGFs=", + "dev": true + } + } + }, + "domelementtype": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.0.tgz", + "integrity": "sha1-sXrtguirWeUt2cGbF1bg/BhyBMI=", + "dev": true + }, + "domhandler": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.4.1.tgz", + "integrity": "sha1-iS5HAAqZvlW783dP/qBWHYh5wlk=", + "dev": true, + "requires": { + "domelementtype": "1.3.0" + } + }, + "domutils": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.6.2.tgz", + "integrity": "sha1-GVjMC0yUJuntNn+xyOhUiRsPo/8=", + "dev": true, + "requires": { + "dom-serializer": "0.1.0", + "domelementtype": "1.3.0" + } + }, "dot-prop": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.0.tgz", @@ -1763,6 +1848,12 @@ "integrity": "sha1-pls+QtC3HPxYXrd0+ZQ8jZuRsMI=", "dev": true }, + "entities": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.1.tgz", + "integrity": "sha1-blwtClYhtdra7O+AuQ7ftc13cvA=", + "dev": true + }, "error-ex": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz", @@ -2245,6 +2336,36 @@ "resolve-dir": "0.1.1" } }, + "fined": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fined/-/fined-1.1.0.tgz", + "integrity": "sha1-s33IRLdqL15wgeiE98CuNE8VNHY=", + "dev": true, + "requires": { + "expand-tilde": "2.0.2", + "is-plain-object": "2.0.4", + "object.defaults": "1.1.0", + "object.pick": "1.3.0", + "parse-filepath": "1.0.1" + }, + "dependencies": { + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha1-l+gBqgUt8CRU3kawK/YhZCzchQI=", + "dev": true, + "requires": { + "homedir-polyfill": "1.0.1" + } + } + } + }, + "flagged-respawn": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/flagged-respawn/-/flagged-respawn-0.3.2.tgz", + "integrity": "sha1-/xke3c1wiKZ1smEP/8l2vpuAdLU=", + "dev": true + }, "flat-cache": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.0.tgz", @@ -2750,6 +2871,85 @@ "integrity": "sha1-ELMKOGCF9Dzt41PMj6fLDe7qZos=", "dev": true }, + "htmllint": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/htmllint/-/htmllint-0.6.0.tgz", + "integrity": "sha1-27AGZ23WbXZ8sba7h18IhAuRmY0=", + "dev": true, + "requires": { + "bulk-require": "1.0.1", + "htmlparser2": "3.9.2", + "lodash": "4.17.4", + "promise": "7.3.1" + } + }, + "htmllint-cli": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/htmllint-cli/-/htmllint-cli-0.0.6.tgz", + "integrity": "sha1-PfpDD+dG63vGfCbmlz3EpwyhfLM=", + "dev": true, + "requires": { + "bluebird": "3.5.0", + "chalk": "1.1.3", + "cjson": "0.5.0", + "glob": "7.1.2", + "htmllint": "0.6.0", + "liftoff": "2.3.0", + "promise": "7.3.1", + "semver": "5.4.1", + "yargs": "6.6.0" + }, + "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" + } + }, + "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", + "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", + "dev": true + } + } + }, + "htmlparser2": { + "version": "3.9.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.9.2.tgz", + "integrity": "sha1-G9+HrMoPP55T+k/M6w9LTLsAszg=", + "dev": true, + "requires": { + "domelementtype": "1.3.0", + "domhandler": "2.4.1", + "domutils": "1.6.2", + "entities": "1.1.1", + "inherits": "2.0.3", + "readable-stream": "2.3.3" + } + }, "http-signature": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", @@ -2877,6 +3077,24 @@ "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", "dev": true }, + "is-absolute": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/is-absolute/-/is-absolute-0.2.6.tgz", + "integrity": "sha1-IN5p89uULvLYe5wto28XIjWxtes=", + "dev": true, + "requires": { + "is-relative": "0.2.1", + "is-windows": "0.2.0" + }, + "dependencies": { + "is-windows": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-0.2.0.tgz", + "integrity": "sha1-3hqm1j6indJIc3tp8f+LgALSEIw=", + "dev": true + } + } + }, "is-arrayish": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", @@ -3033,6 +3251,23 @@ "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", "dev": true }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "is-posix-bracket": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", @@ -3072,6 +3307,15 @@ "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", "dev": true }, + "is-relative": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-0.2.1.tgz", + "integrity": "sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU=", + "dev": true, + "requires": { + "is-unc-path": "0.1.2" + } + }, "is-resolvable": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.0.0.tgz", @@ -3111,6 +3355,15 @@ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", "dev": true }, + "is-unc-path": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-0.1.2.tgz", + "integrity": "sha1-arBTpyVzwQJQ/0FqOBTDUXivObk=", + "dev": true, + "requires": { + "unc-path-regex": "0.1.2" + } + }, "is-utf8": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", @@ -3150,6 +3403,12 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", "dev": true }, + "jju": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jju/-/jju-1.3.0.tgz", + "integrity": "sha1-2t2e8BkkvHKLA/L3l5vb1i96Kqo=", + "dev": true + }, "js-base64": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.3.2.tgz", @@ -3197,6 +3456,15 @@ "integrity": "sha1-5CGiqOINawgZ3yiQj3glJrlt0f4=", "dev": true }, + "json-parse-helpfulerror": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/json-parse-helpfulerror/-/json-parse-helpfulerror-1.0.3.tgz", + "integrity": "sha1-E/FM4C7tTpgSl7ZOueO5MuLdE9w=", + "dev": true, + "requires": { + "jju": "1.3.0" + } + }, "json-schema": { "version": "0.2.3", "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", @@ -3324,6 +3592,23 @@ "type-check": "0.3.2" } }, + "liftoff": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/liftoff/-/liftoff-2.3.0.tgz", + "integrity": "sha1-qY8v9nGD2Lp8+soQVIvX/wVQs4U=", + "dev": true, + "requires": { + "extend": "3.0.1", + "findup-sync": "0.4.3", + "fined": "1.1.0", + "flagged-respawn": "0.3.2", + "lodash.isplainobject": "4.0.6", + "lodash.isstring": "4.0.1", + "lodash.mapvalues": "4.6.0", + "rechoir": "0.6.2", + "resolve": "1.4.0" + } + }, "load-json-file": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz", @@ -3450,6 +3735,18 @@ "integrity": "sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U=", "dev": true }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=", + "dev": true + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha1-1SfftUVuynzJu5XV2ur4i6VKVFE=", + "dev": true + }, "lodash.keys": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/lodash.keys/-/lodash.keys-3.1.2.tgz", @@ -3461,6 +3758,12 @@ "lodash.isarray": "3.0.4" } }, + "lodash.mapvalues": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapvalues/-/lodash.mapvalues-4.6.0.tgz", + "integrity": "sha1-G6+lAF3p3W9PJmaMMMo3IwzJaJw=", + "dev": true + }, "lodash.mergewith": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.0.tgz", @@ -3581,6 +3884,12 @@ "pify": "2.3.0" } }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, "map-obj": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", @@ -4087,6 +4396,35 @@ "integrity": "sha1-xUYBd4rVYPEULODgG8yotW0TQm0=", "dev": true }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8=", + "dev": true, + "requires": { + "array-each": "1.0.1", + "array-slice": "1.0.0", + "for-own": "1.0.0", + "isobject": "3.0.1" + }, + "dependencies": { + "for-own": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs=", + "dev": true, + "requires": { + "for-in": "1.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "object.omit": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", @@ -4097,6 +4435,23 @@ "is-extendable": "0.1.1" } }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + } + } + }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -4252,6 +4607,17 @@ "semver": "5.4.1" } }, + "parse-filepath": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-filepath/-/parse-filepath-1.0.1.tgz", + "integrity": "sha1-FZ1hVdQ5BNFsEO9piRHaHpGWm3M=", + "dev": true, + "requires": { + "is-absolute": "0.2.6", + "map-cache": "0.2.2", + "path-root": "0.1.1" + } + }, "parse-glob": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", @@ -4309,6 +4675,21 @@ "integrity": "sha1-PBrfhx6pzWyUMbbqK9dKD/BVxME=", "dev": true }, + "path-root": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc=", + "dev": true, + "requires": { + "path-root-regex": "0.1.2" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0=", + "dev": true + }, "path-type": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz", @@ -4931,6 +5312,15 @@ "integrity": "sha1-ihvjZr+Pwj2yvSPxDG/pILQ4nR8=", "dev": true }, + "promise": { + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "dev": true, + "requires": { + "asap": "2.0.6" + } + }, "ps-tree": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/ps-tree/-/ps-tree-1.1.0.tgz", @@ -6321,6 +6711,12 @@ "source-map": "0.5.7" } }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", + "dev": true + }, "undefsafe": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-0.0.3.tgz", @@ -6754,6 +7150,140 @@ "integrity": "sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI=", "dev": true }, + "yargs": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-6.6.0.tgz", + "integrity": "sha1-eC7CHvQDNF+DCoCMo9UTr1YGUgg=", + "dev": true, + "requires": { + "camelcase": "3.0.0", + "cliui": "3.2.0", + "decamelize": "1.2.0", + "get-caller-file": "1.0.2", + "os-locale": "1.4.0", + "read-pkg-up": "1.0.1", + "require-directory": "2.1.1", + "require-main-filename": "1.0.1", + "set-blocking": "2.0.0", + "string-width": "1.0.2", + "which-module": "1.0.0", + "y18n": "3.2.1", + "yargs-parser": "4.2.1" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "2.1.0", + "pinkie-promise": "2.0.1" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "1.0.1" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "parse-json": "2.2.0", + "pify": "2.3.0", + "pinkie-promise": "2.0.1", + "strip-bom": "2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "2.0.1" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "4.1.11", + "pify": "2.3.0", + "pinkie-promise": "2.0.1" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "1.1.0", + "normalize-package-data": "2.4.0", + "path-type": "1.1.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "1.1.2", + "read-pkg": "1.1.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "1.1.0", + "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" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "0.2.1" + } + } + } + }, + "yargs-parser": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-4.2.1.tgz", + "integrity": "sha1-KczqwNxPA8bIe0qfIX3RjJ90hxw=", + "dev": true, + "requires": { + "camelcase": "3.0.0" + } + }, "yauzl": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.4.1.tgz", diff --git a/package.json b/package.json index de371c8d5e..6a968518ce 100644 --- a/package.json +++ b/package.json @@ -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": "node build/htmllint.js", + "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", @@ -90,6 +90,7 @@ "cross-env": "^5.0.5", "eslint": "^4.2.0", "eslint-plugin-compat": "^1.0.4", + "htmllint-cli": "^0.0.6", "jsunitsaucelabs": "^1.2.0", "node-sass": "^4.5.3", "nodemon": "^1.11.0", From 09f403f81a9c57813d44207689e3e1a9b64f1556 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sun, 8 Oct 2017 18:57:27 +0300 Subject: [PATCH 15/35] Update jekyll-toc to v0.4.0.rc2. --- Gemfile | 2 +- Gemfile.lock | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Gemfile b/Gemfile index 2c0ac91d55..135694ee65 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 38c6658d61..0be2f9d180 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) @@ -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 From 3edc03f4ee04229934854d0b32f584fbf22ece35 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Mon, 9 Oct 2017 10:44:10 +0300 Subject: [PATCH 16/35] Update devDependencies. (#24298) --- package-lock.json | 632 ++++++++++++++++++++++++++-------------------- package.json | 4 +- 2 files changed, 363 insertions(+), 273 deletions(-) diff --git a/package-lock.json b/package-lock.json index b9ac483fe6..bc5c6b5fc1 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", @@ -6931,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" - } } } }, @@ -6971,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" - } } } }, @@ -6990,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", @@ -7000,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": { @@ -7042,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", @@ -7060,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": { @@ -7094,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" - } } } }, @@ -7255,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 6a968518ce..d03e145316 100644 --- a/package.json +++ b/package.json @@ -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", From 0c1597ebde2a41964d77547d5b1d7f00cd9402b6 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sat, 7 Oct 2017 18:48:57 +0300 Subject: [PATCH 17/35] examples/dashboard/dashboard.css: merge duplicate selector. --- docs/4.0/examples/dashboard/dashboard.css | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/docs/4.0/examples/dashboard/dashboard.css b/docs/4.0/examples/dashboard/dashboard.css index a59005148a..ca7135b080 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; } From ecdaf0e34a177a15e9ec4d81021a61f79adaf7fb Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sat, 7 Oct 2017 18:49:35 +0300 Subject: [PATCH 18/35] Run autoprefixer for examples' CSS too. --- build/postcss.config.js | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/postcss.config.js b/build/postcss.config.js index b34a0ce467..1f2be8b7c1 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.startsWith('docs') || ctx.file.dirname.includes('examples') ? false : { inline: false, annotation: true, sourcesContent: true diff --git a/package.json b/package.json index d03e145316..619d8b1ee3 100644 --- a/package.json +++ b/package.json @@ -27,7 +27,7 @@ "css-lint": "stylelint --config build/.stylelintrc --syntax scss \"scss/**/*.scss\"", "css-lint-docs": "stylelint --config build/.stylelintrc --syntax scss \"assets/scss/*.scss\"", "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*", From a8fb64f3e3b7c9a8763ea89aea85082b1a073ef6 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sat, 7 Oct 2017 19:16:49 +0300 Subject: [PATCH 19/35] Lint examples' CSS too. --- build/.stylelintrc | 2 +- docs/4.0/examples/.stylelintrc | 12 ++++++++++++ docs/4.0/examples/blog/blog.css | 18 ++++++++++++------ package.json | 2 +- 4 files changed, 26 insertions(+), 8 deletions(-) create mode 100644 docs/4.0/examples/.stylelintrc diff --git a/build/.stylelintrc b/build/.stylelintrc index 0027d7a082..11a6db2845 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, diff --git a/docs/4.0/examples/.stylelintrc b/docs/4.0/examples/.stylelintrc new file mode 100644 index 0000000000..44cf7c0e0f --- /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 6eda0a7b12..0f319ec92c 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/package.json b/package.json index 619d8b1ee3..0efed55609 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "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 --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", From d687ba56840c8ccd00b57271ef67da5a682abdd0 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Mon, 9 Oct 2017 10:48:35 +0300 Subject: [PATCH 20/35] Remove unused code from postcss.config.js. We actually want to generate a sourcemap for docs.min.css. --- build/postcss.config.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build/postcss.config.js b/build/postcss.config.js index 1f2be8b7c1..425228eaac 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') || ctx.file.dirname.includes('examples') ? false : { + map: ctx.file.dirname.includes('examples') ? false : { inline: false, annotation: true, sourcesContent: true From 64567de6d00ce496008458b85d80b450828ee5ec Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Mon, 9 Oct 2017 14:34:32 +0300 Subject: [PATCH 21/35] package.json: Change repo URL to `git+https`. (#24305) --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0efed55609..ba56a1d423 100644 --- a/package.json +++ b/package.json @@ -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" From bab3246a1d7219e93ee12e09ff7608c5dd6bcbc2 Mon Sep 17 00:00:00 2001 From: Gisete Kindahl Date: Mon, 9 Oct 2017 06:37:46 -0700 Subject: [PATCH 22/35] Centered SVG icon within its own container (#24292) --- scss/_variables.scss | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scss/_variables.scss b/scss/_variables.scss index c9fe879f28..862f965f74 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -791,8 +791,8 @@ $carousel-caption-color: $white !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; From de3973b5e74058e37fd15fecc4cb7b9fd3409def Mon Sep 17 00:00:00 2001 From: Prateek Goel Date: Mon, 9 Oct 2017 23:32:48 +0100 Subject: [PATCH 23/35] Ensure active button styles are not applied to disabled buttons --- scss/_buttons.scss | 4 ++-- scss/mixins/_buttons.scss | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/scss/_buttons.scss b/scss/_buttons.scss index d69c159983..72fc5f3406 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/mixins/_buttons.scss b/scss/mixins/_buttons.scss index 44ce4f72e2..7ce8fef5f3 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; From 64c944bca80f71aea6eae3e2e9a19fd4fdc24461 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 10 Oct 2017 08:58:35 +0300 Subject: [PATCH 24/35] Use `$white` variable for `.navbar-dark`'s color. (#24309) Using `rgba($white,1)` results in `white` instead of the hex. --- scss/_variables.scss | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scss/_variables.scss b/scss/_variables.scss index 862f965f74..1808e4bd94 100644 --- a/scss/_variables.scss +++ b/scss/_variables.scss @@ -541,7 +541,7 @@ $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-border-color: rgba($white,.1) !default; From da22bce2f073d95689a474b294cd16db9ed41862 Mon Sep 17 00:00:00 2001 From: Johann-S Date: Tue, 10 Oct 2017 11:50:55 +0200 Subject: [PATCH 25/35] Add information about failed tests --- build/saucelabs-unit-test.js | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/build/saucelabs-unit-test.js b/build/saucelabs-unit-test.js index 3ff7fcc40d..0b4a3b5f0e 100644 --- a/build/saucelabs-unit-test.js +++ b/build/saucelabs-unit-test.js @@ -70,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) } } } From 8e7ba02c5cf56bdc5b4c0fff71edec19ade1e3e9 Mon Sep 17 00:00:00 2001 From: Johann-S Date: Tue, 10 Oct 2017 13:19:39 +0200 Subject: [PATCH 26/35] Modal plugin set _isTransitioning after the trigger of hide event --- js/src/modal.js | 12 ++++++------ js/tests/visual/modal.html | 22 ++++++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/js/src/modal.js b/js/src/modal.js index 1ea630c415..399adc4c12 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/visual/modal.html b/js/tests/visual/modal.html index 6e9f0f7107..fcc96035bd 100644 --- a/js/tests/visual/modal.html +++ b/js/tests/visual/modal.html @@ -171,6 +171,12 @@ + +

+ +
@@ -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') + }) }) From f7acb278e2cfbe3cce461c5091852340a1abf734 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Tue, 10 Oct 2017 16:46:43 +0300 Subject: [PATCH 27/35] Refactor a few selectors so that the least specific ones are first. (#24310) --- scss/_card.scss | 8 ++++---- scss/_dropdown.scss | 26 +++++++++++++------------- scss/_tooltip.scss | 12 ++++++------ 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/scss/_card.scss b/scss/_card.scss index 25c511a90b..b4d4950dc9 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -213,6 +213,10 @@ } } + &:only-child { + @include border-radius($card-border-radius); + } + &:not(:first-child):not(:last-child):not(:only-child) { border-radius: 0; @@ -221,10 +225,6 @@ border-radius: 0; } } - - &:only-child { - @include border-radius($card-border-radius); - } } } } diff --git a/scss/_dropdown.scss b/scss/_dropdown.scss index 32657167f5..1782d5b9f1 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 `
`) within the dropdown .dropdown-divider { @include nav-divider($dropdown-divider-bg); diff --git a/scss/_tooltip.scss b/scss/_tooltip.scss index fe97fbbbd0..7b5db1cf2a 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 From 776188ad73769884825ae8805f9a62547a8dd461 Mon Sep 17 00:00:00 2001 From: Andres Galante Date: Tue, 10 Oct 2017 19:18:56 -0300 Subject: [PATCH 28/35] Add border radius to an image when it's the only card of a card group (#24321) --- scss/_card.scss | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/scss/_card.scss b/scss/_card.scss index b4d4950dc9..a739f19355 100644 --- a/scss/_card.scss +++ b/scss/_card.scss @@ -215,6 +215,13 @@ &: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) { From ce1a72b2f0970b1de43ceccf210fe64f69d8ed41 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Wed, 11 Oct 2017 15:54:41 +0300 Subject: [PATCH 29/35] Hound CI: Specify `ignore_file` for stylelint. --- .hound.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.hound.yml b/.hound.yml index 4e09c34437..2a6b055924 100644 --- a/.hound.yml +++ b/.hound.yml @@ -3,6 +3,7 @@ fail_on_violations: true stylelint: config_file: build/.stylelintrc enabled: true + ignore_file: .houndignore eslint: config_file: js/.eslintrc.json From c8ee8509cb72edd2f758398664bed8a0eeeb2dc4 Mon Sep 17 00:00:00 2001 From: Michael Letcher Date: Thu, 12 Oct 2017 19:22:18 +0100 Subject: [PATCH 30/35] Updated Safari Bug (#24350) --- docs/4.0/layout/grid.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/4.0/layout/grid.md b/docs/4.0/layout/grid.md index ca608477b4..9e81dd9139 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 %} -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.
{% example html %} From 991cbe74d0004f443fc14c748dd1d8da424d7dde Mon Sep 17 00:00:00 2001 From: Jesse Mandel Date: Fri, 13 Oct 2017 03:34:27 -0700 Subject: [PATCH 31/35] Update colors in _data and theming.md to match _variables.scss (#24355) --- _data/colors.yml | 24 ++++++++++++------------ _data/grays.yml | 16 ++++++++-------- _data/theme-colors.yml | 2 +- docs/4.0/getting-started/theming.md | 10 ++++++---- 4 files changed, 27 insertions(+), 25 deletions(-) diff --git a/_data/colors.yml b/_data/colors.yml index 4208ec75ac..202270cdcb 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 bf9750ee9c..d6e50f9e14 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 92ea288384..bef5002acd 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/docs/4.0/getting-started/theming.md b/docs/4.0/getting-started/theming.md index c4c50dc4b1..15c5caa0be 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 %} From 03522fee489b812a02dd380f3bc5238c0a0cd6a1 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Fri, 13 Oct 2017 13:53:01 +0300 Subject: [PATCH 32/35] Fix import.svg after 10bb79a. (#24359) It was mistakenly the same as lightning.svg. --- _includes/icons/import.svg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/_includes/icons/import.svg b/_includes/icons/import.svg index 72a4b603bc..0a9dbb2696 100644 --- a/_includes/icons/import.svg +++ b/_includes/icons/import.svg @@ -1 +1 @@ -Import icon +Import icon From 71e60e1f85e3e822bb62a919bfb9b1d4e5d7f29b Mon Sep 17 00:00:00 2001 From: Lucas Banegas Date: Fri, 13 Oct 2017 08:34:43 -0300 Subject: [PATCH 33/35] Describe compiled CSS (#24271) --- README.md | 10 ++++- docs/4.0/getting-started/contents.md | 56 +++++++++++++++++++++++++++- docs/4.0/getting-started/download.md | 2 +- 3 files changed, 65 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index b9104e7e80..56231f7b59 100644 --- a/README.md +++ b/README.md @@ -71,7 +71,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 diff --git a/docs/4.0/getting-started/contents.md b/docs/4.0/getting-started/contents.md index 96acbc0537..3d5389fee3 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 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CSS filesLayoutContentComponentsUtilities
+
bootstrap.css
+
bootstrap.min.css
+
AllAllAllAll
+
bootstrap-grid.css
+
bootstrap-grid.min.css
+
Only grid systemNoNoOnly flex utilities
+
bootstrap-reboot.css
+
bootstrap-reboot.min.css
+
NoOnly RebootNoNo
+ ## 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 cce6601784..9f11993179 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). From a9fa21e701536e84789169fec6a1f4a0f821ee3c Mon Sep 17 00:00:00 2001 From: Gleb Mazovetskiy Date: Sat, 14 Oct 2017 08:29:43 +0100 Subject: [PATCH 34/35] Escape SassScript in custom variable values (#24354) This is required for Sass v3.5+ compatibility. See https://github.com/sass/sass/blob/stable/doc-src/SASS_CHANGELOG.md#backwards-incompatibilities----must-read and https://github.com/sass/sass/issues/2383 --- scss/_root.scss | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/scss/_root.scss b/scss/_root.scss index 78ac03915d..ad550df3b4 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)}; } From 3ccb7ef16ad2fa858c767128a5414a0b1bd7fa30 Mon Sep 17 00:00:00 2001 From: XhmikosR Date: Sun, 15 Oct 2017 03:54:47 +0300 Subject: [PATCH 35/35] Update README.md (#24365) 1. Add `alt=""` for the Bootstrap logo 2. Replace the HTML entities with the unicode symbols 3. Refactor the badges to something that makes more sense to me 4. Change `Selenium Test Status` alt attribute to `Sauce Labs Test Status` 5. Use shields.io for the peerDependencies badge too 6. Add CSS and JS gzip size badges, shoutout to @ngryman 7. Add a few more trailing slashes to URLs 8. Change link to tooling setup to the website one --- README.md | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/README.md b/README.md index 56231f7b59..d1b52608e7 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@

- +

Bootstrap

@@ -8,13 +8,13 @@

Sleek, intuitive, and powerful front-end framework for faster and easier web development.
- Explore Bootstrap docs » + Explore Bootstrap docs »

Bootstrap Themes - · + · Job Board - · + · Blog

@@ -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 @@ -95,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 . 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 . 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. @@ -117,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 . - +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 . ## Community @@ -140,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. @@ -161,7 +160,6 @@ See [the Releases section of our GitHub project](https://github.com/twbs/bootstr - - ## 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).