bootstrap 4.1.2 → 4.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of bootstrap might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/assets/javascripts/bootstrap-sprockets.js +5 -5
- data/assets/javascripts/bootstrap.js +23 -23
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +159 -133
- data/assets/javascripts/bootstrap/button.js +149 -124
- data/assets/javascripts/bootstrap/carousel.js +463 -407
- data/assets/javascripts/bootstrap/collapse.js +338 -282
- data/assets/javascripts/bootstrap/dropdown.js +439 -382
- data/assets/javascripts/bootstrap/modal.js +502 -446
- data/assets/javascripts/bootstrap/popover.js +223 -163
- data/assets/javascripts/bootstrap/scrollspy.js +307 -251
- data/assets/javascripts/bootstrap/tab.js +217 -191
- data/assets/javascripts/bootstrap/tooltip.js +582 -525
- data/assets/javascripts/bootstrap/util.js +129 -116
- data/assets/stylesheets/_bootstrap-grid.scss +1 -1
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +1 -1
- data/assets/stylesheets/bootstrap/_buttons.scss +0 -1
- data/assets/stylesheets/bootstrap/_custom-forms.scss +13 -19
- data/assets/stylesheets/bootstrap/_forms.scss +13 -15
- data/assets/stylesheets/bootstrap/_input-group.scss +15 -2
- data/assets/stylesheets/bootstrap/_modal.scss +18 -6
- data/assets/stylesheets/bootstrap/_reboot.scss +4 -2
- data/assets/stylesheets/bootstrap/_tables.scss +0 -1
- data/assets/stylesheets/bootstrap/_variables.scss +10 -9
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +7 -7
- data/lib/bootstrap/version.rb +2 -2
- metadata +2 -2
@@ -1,130 +1,143 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
/**
|
9
|
-
* ------------------------------------------------------------------------
|
10
|
-
* Private TransitionEnd Helpers
|
11
|
-
* ------------------------------------------------------------------------
|
12
|
-
*/
|
13
|
-
var TRANSITION_END = 'transitionend';
|
14
|
-
var MAX_UID = 1000000;
|
15
|
-
var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
16
|
-
|
17
|
-
function toType(obj) {
|
18
|
-
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
19
|
-
}
|
20
|
-
|
21
|
-
function getSpecialTransitionEndEvent() {
|
22
|
-
return {
|
23
|
-
bindType: TRANSITION_END,
|
24
|
-
delegateType: TRANSITION_END,
|
25
|
-
handle: function handle(event) {
|
26
|
-
if ($(event.target).is(this)) {
|
27
|
-
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
28
|
-
}
|
1
|
+
(function (global, factory) {
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery')) :
|
3
|
+
typeof define === 'function' && define.amd ? define(['jquery'], factory) :
|
4
|
+
(global.Util = factory(global.jQuery));
|
5
|
+
}(this, (function ($) { 'use strict';
|
6
|
+
|
7
|
+
$ = $ && $.hasOwnProperty('default') ? $['default'] : $;
|
29
8
|
|
30
|
-
return undefined; // eslint-disable-line no-undefined
|
31
|
-
}
|
32
|
-
};
|
33
|
-
}
|
34
|
-
|
35
|
-
function transitionEndEmulator(duration) {
|
36
|
-
var _this = this;
|
37
|
-
|
38
|
-
var called = false;
|
39
|
-
$(this).one(Util.TRANSITION_END, function () {
|
40
|
-
called = true;
|
41
|
-
});
|
42
|
-
setTimeout(function () {
|
43
|
-
if (!called) {
|
44
|
-
Util.triggerTransitionEnd(_this);
|
45
|
-
}
|
46
|
-
}, duration);
|
47
|
-
return this;
|
48
|
-
}
|
49
|
-
|
50
|
-
function setTransitionEndSupport() {
|
51
|
-
$.fn.emulateTransitionEnd = transitionEndEmulator;
|
52
|
-
$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
|
53
|
-
}
|
54
9
|
/**
|
55
10
|
* --------------------------------------------------------------------------
|
56
|
-
*
|
11
|
+
* Bootstrap (v4.1.3): util.js
|
12
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
57
13
|
* --------------------------------------------------------------------------
|
58
14
|
*/
|
59
15
|
|
16
|
+
var Util = function ($$$1) {
|
17
|
+
/**
|
18
|
+
* ------------------------------------------------------------------------
|
19
|
+
* Private TransitionEnd Helpers
|
20
|
+
* ------------------------------------------------------------------------
|
21
|
+
*/
|
22
|
+
var TRANSITION_END = 'transitionend';
|
23
|
+
var MAX_UID = 1000000;
|
24
|
+
var MILLISECONDS_MULTIPLIER = 1000; // Shoutout AngusCroll (https://goo.gl/pxwQGp)
|
25
|
+
|
26
|
+
function toType(obj) {
|
27
|
+
return {}.toString.call(obj).match(/\s([a-z]+)/i)[1].toLowerCase();
|
28
|
+
}
|
60
29
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
30
|
+
function getSpecialTransitionEndEvent() {
|
31
|
+
return {
|
32
|
+
bindType: TRANSITION_END,
|
33
|
+
delegateType: TRANSITION_END,
|
34
|
+
handle: function handle(event) {
|
35
|
+
if ($$$1(event.target).is(this)) {
|
36
|
+
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
37
|
+
}
|
68
38
|
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
39
|
+
return undefined; // eslint-disable-line no-undefined
|
40
|
+
}
|
41
|
+
};
|
42
|
+
}
|
73
43
|
|
74
|
-
|
75
|
-
|
76
|
-
}
|
44
|
+
function transitionEndEmulator(duration) {
|
45
|
+
var _this = this;
|
77
46
|
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
47
|
+
var called = false;
|
48
|
+
$$$1(this).one(Util.TRANSITION_END, function () {
|
49
|
+
called = true;
|
50
|
+
});
|
51
|
+
setTimeout(function () {
|
52
|
+
if (!called) {
|
53
|
+
Util.triggerTransitionEnd(_this);
|
54
|
+
}
|
55
|
+
}, duration);
|
56
|
+
return this;
|
57
|
+
}
|
58
|
+
|
59
|
+
function setTransitionEndSupport() {
|
60
|
+
$$$1.fn.emulateTransitionEnd = transitionEndEmulator;
|
61
|
+
$$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
|
62
|
+
}
|
63
|
+
/**
|
64
|
+
* --------------------------------------------------------------------------
|
65
|
+
* Public Util Api
|
66
|
+
* --------------------------------------------------------------------------
|
67
|
+
*/
|
68
|
+
|
69
|
+
|
70
|
+
var Util = {
|
71
|
+
TRANSITION_END: 'bsTransitionEnd',
|
72
|
+
getUID: function getUID(prefix) {
|
73
|
+
do {
|
74
|
+
// eslint-disable-next-line no-bitwise
|
75
|
+
prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
|
76
|
+
} while (document.getElementById(prefix));
|
77
|
+
|
78
|
+
return prefix;
|
79
|
+
},
|
80
|
+
getSelectorFromElement: function getSelectorFromElement(element) {
|
81
|
+
var selector = element.getAttribute('data-target');
|
82
|
+
|
83
|
+
if (!selector || selector === '#') {
|
84
|
+
selector = element.getAttribute('href') || '';
|
85
|
+
}
|
86
|
+
|
87
|
+
try {
|
88
|
+
return document.querySelector(selector) ? selector : null;
|
89
|
+
} catch (err) {
|
90
|
+
return null;
|
91
|
+
}
|
92
|
+
},
|
93
|
+
getTransitionDurationFromElement: function getTransitionDurationFromElement(element) {
|
94
|
+
if (!element) {
|
95
|
+
return 0;
|
96
|
+
} // Get transition-duration of the element
|
97
|
+
|
98
|
+
|
99
|
+
var transitionDuration = $$$1(element).css('transition-duration');
|
100
|
+
var floatTransitionDuration = parseFloat(transitionDuration); // Return 0 if element or transition duration is not found
|
101
|
+
|
102
|
+
if (!floatTransitionDuration) {
|
103
|
+
return 0;
|
104
|
+
} // If multiple durations are defined, take the first
|
105
|
+
|
106
|
+
|
107
|
+
transitionDuration = transitionDuration.split(',')[0];
|
108
|
+
return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER;
|
109
|
+
},
|
110
|
+
reflow: function reflow(element) {
|
111
|
+
return element.offsetHeight;
|
112
|
+
},
|
113
|
+
triggerTransitionEnd: function triggerTransitionEnd(element) {
|
114
|
+
$$$1(element).trigger(TRANSITION_END);
|
115
|
+
},
|
116
|
+
// TODO: Remove in v5
|
117
|
+
supportsTransitionEnd: function supportsTransitionEnd() {
|
118
|
+
return Boolean(TRANSITION_END);
|
119
|
+
},
|
120
|
+
isElement: function isElement(obj) {
|
121
|
+
return (obj[0] || obj).nodeType;
|
122
|
+
},
|
123
|
+
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
|
124
|
+
for (var property in configTypes) {
|
125
|
+
if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
|
126
|
+
var expectedTypes = configTypes[property];
|
127
|
+
var value = config[property];
|
128
|
+
var valueType = value && Util.isElement(value) ? 'element' : toType(value);
|
129
|
+
|
130
|
+
if (!new RegExp(expectedTypes).test(valueType)) {
|
131
|
+
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
|
132
|
+
}
|
123
133
|
}
|
124
134
|
}
|
125
135
|
}
|
126
|
-
}
|
127
|
-
|
128
|
-
|
136
|
+
};
|
137
|
+
setTransitionEndSupport();
|
138
|
+
return Util;
|
139
|
+
}($);
|
140
|
+
|
129
141
|
return Util;
|
130
|
-
|
142
|
+
|
143
|
+
})));
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap Grid v4.1.
|
2
|
+
* Bootstrap Grid v4.1.3 (https://getbootstrap.com/)
|
3
3
|
* Copyright 2011-2018 The Bootstrap Authors
|
4
4
|
* Copyright 2011-2018 Twitter, Inc.
|
5
5
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
@@ -1,5 +1,5 @@
|
|
1
1
|
/*!
|
2
|
-
* Bootstrap Reboot v4.1.
|
2
|
+
* Bootstrap Reboot v4.1.3 (https://getbootstrap.com/)
|
3
3
|
* Copyright 2011-2018 The Bootstrap Authors
|
4
4
|
* Copyright 2011-2018 Twitter, Inc.
|
5
5
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
@@ -10,7 +10,7 @@
|
|
10
10
|
.custom-control {
|
11
11
|
position: relative;
|
12
12
|
display: block;
|
13
|
-
min-height: (
|
13
|
+
min-height: ($font-size-base * $line-height-base);
|
14
14
|
padding-left: $custom-control-gutter;
|
15
15
|
}
|
16
16
|
|
@@ -63,7 +63,7 @@
|
|
63
63
|
// Background-color and (when enabled) gradient
|
64
64
|
&::before {
|
65
65
|
position: absolute;
|
66
|
-
top: (($line-height-base - $custom-control-indicator-size) / 2);
|
66
|
+
top: (($font-size-base * $line-height-base - $custom-control-indicator-size) / 2);
|
67
67
|
left: -$custom-control-gutter;
|
68
68
|
display: block;
|
69
69
|
width: $custom-control-indicator-size;
|
@@ -78,7 +78,7 @@
|
|
78
78
|
// Foreground (icon)
|
79
79
|
&::after {
|
80
80
|
position: absolute;
|
81
|
-
top: (($line-height-base - $custom-control-indicator-size) / 2);
|
81
|
+
top: (($font-size-base * $line-height-base - $custom-control-indicator-size) / 2);
|
82
82
|
left: -$custom-control-gutter;
|
83
83
|
display: block;
|
84
84
|
width: $custom-control-indicator-size;
|
@@ -320,6 +320,12 @@
|
|
320
320
|
|
321
321
|
&:focus {
|
322
322
|
outline: none;
|
323
|
+
|
324
|
+
// Pseudo-elements must be split across multiple rulesets to have an affect.
|
325
|
+
// No box-shadow() mixin for focus accessibility.
|
326
|
+
&::-webkit-slider-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
|
327
|
+
&::-moz-range-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
|
328
|
+
&::-ms-thumb { box-shadow: $custom-range-thumb-focus-box-shadow; }
|
323
329
|
}
|
324
330
|
|
325
331
|
&::-moz-focus-outer {
|
@@ -329,7 +335,7 @@
|
|
329
335
|
&::-webkit-slider-thumb {
|
330
336
|
width: $custom-range-thumb-width;
|
331
337
|
height: $custom-range-thumb-height;
|
332
|
-
margin-top:
|
338
|
+
margin-top: (($custom-range-track-height - $custom-range-thumb-height) / 2); // Webkit specific
|
333
339
|
@include gradient-bg($custom-range-thumb-bg);
|
334
340
|
border: $custom-range-thumb-border;
|
335
341
|
@include border-radius($custom-range-thumb-border-radius);
|
@@ -337,11 +343,6 @@
|
|
337
343
|
@include transition($custom-forms-transition);
|
338
344
|
appearance: none;
|
339
345
|
|
340
|
-
&:focus {
|
341
|
-
outline: none;
|
342
|
-
box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility
|
343
|
-
}
|
344
|
-
|
345
346
|
&:active {
|
346
347
|
@include gradient-bg($custom-range-thumb-active-bg);
|
347
348
|
}
|
@@ -368,11 +369,6 @@
|
|
368
369
|
@include transition($custom-forms-transition);
|
369
370
|
appearance: none;
|
370
371
|
|
371
|
-
&:focus {
|
372
|
-
outline: none;
|
373
|
-
box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility
|
374
|
-
}
|
375
|
-
|
376
372
|
&:active {
|
377
373
|
@include gradient-bg($custom-range-thumb-active-bg);
|
378
374
|
}
|
@@ -392,6 +388,9 @@
|
|
392
388
|
&::-ms-thumb {
|
393
389
|
width: $custom-range-thumb-width;
|
394
390
|
height: $custom-range-thumb-height;
|
391
|
+
margin-top: 0; // Edge specific
|
392
|
+
margin-right: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
|
393
|
+
margin-left: $custom-range-thumb-focus-box-shadow-width; // Workaround that overflowed box-shadow is hidden.
|
395
394
|
@include gradient-bg($custom-range-thumb-bg);
|
396
395
|
border: $custom-range-thumb-border;
|
397
396
|
@include border-radius($custom-range-thumb-border-radius);
|
@@ -399,11 +398,6 @@
|
|
399
398
|
@include transition($custom-forms-transition);
|
400
399
|
appearance: none;
|
401
400
|
|
402
|
-
&:focus {
|
403
|
-
outline: none;
|
404
|
-
box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility
|
405
|
-
}
|
406
|
-
|
407
401
|
&:active {
|
408
402
|
@include gradient-bg($custom-range-thumb-active-bg);
|
409
403
|
}
|
@@ -7,6 +7,7 @@
|
|
7
7
|
.form-control {
|
8
8
|
display: block;
|
9
9
|
width: 100%;
|
10
|
+
height: $input-height;
|
10
11
|
padding: $input-padding-y $input-padding-x;
|
11
12
|
font-size: $font-size-base;
|
12
13
|
line-height: $input-line-height;
|
@@ -57,10 +58,6 @@
|
|
57
58
|
}
|
58
59
|
|
59
60
|
select.form-control {
|
60
|
-
&:not([size]):not([multiple]) {
|
61
|
-
height: $input-height;
|
62
|
-
}
|
63
|
-
|
64
61
|
&:focus::-ms-value {
|
65
62
|
// Suppress the nested default white text on blue background highlight given to
|
66
63
|
// the selected option text when the (still closed) <select> receives focus
|
@@ -139,35 +136,36 @@ select.form-control {
|
|
139
136
|
// Build on `.form-control` with modifier classes to decrease or increase the
|
140
137
|
// height and font-size of form controls.
|
141
138
|
//
|
142
|
-
//
|
143
|
-
// issue documented in https://github.com/twbs/bootstrap/issues/15074.
|
139
|
+
// Repeated in `_input_group.scss` to avoid Sass extend issues.
|
144
140
|
|
145
141
|
.form-control-sm {
|
142
|
+
height: $input-height-sm;
|
146
143
|
padding: $input-padding-y-sm $input-padding-x-sm;
|
147
144
|
font-size: $font-size-sm;
|
148
145
|
line-height: $input-line-height-sm;
|
149
146
|
@include border-radius($input-border-radius-sm);
|
150
147
|
}
|
151
148
|
|
152
|
-
select.form-control-sm {
|
153
|
-
&:not([size]):not([multiple]) {
|
154
|
-
height: $input-height-sm;
|
155
|
-
}
|
156
|
-
}
|
157
|
-
|
158
149
|
.form-control-lg {
|
150
|
+
height: $input-height-lg;
|
159
151
|
padding: $input-padding-y-lg $input-padding-x-lg;
|
160
152
|
font-size: $font-size-lg;
|
161
153
|
line-height: $input-line-height-lg;
|
162
154
|
@include border-radius($input-border-radius-lg);
|
163
155
|
}
|
164
156
|
|
165
|
-
|
166
|
-
|
167
|
-
|
157
|
+
// stylelint-disable no-duplicate-selectors
|
158
|
+
select.form-control {
|
159
|
+
&[size],
|
160
|
+
&[multiple] {
|
161
|
+
height: auto;
|
168
162
|
}
|
169
163
|
}
|
170
164
|
|
165
|
+
textarea.form-control {
|
166
|
+
height: auto;
|
167
|
+
}
|
168
|
+
// stylelint-enable no-duplicate-selectors
|
171
169
|
|
172
170
|
// Form groups
|
173
171
|
//
|
@@ -35,6 +35,11 @@
|
|
35
35
|
z-index: 3;
|
36
36
|
}
|
37
37
|
|
38
|
+
// Bring the custom file input above the label
|
39
|
+
> .custom-file .custom-file-input:focus {
|
40
|
+
z-index: 4;
|
41
|
+
}
|
42
|
+
|
38
43
|
> .form-control,
|
39
44
|
> .custom-select {
|
40
45
|
&:not(:last-child) { @include border-right-radius(0); }
|
@@ -122,7 +127,11 @@
|
|
122
127
|
.input-group-lg > .input-group-append > .input-group-text,
|
123
128
|
.input-group-lg > .input-group-prepend > .btn,
|
124
129
|
.input-group-lg > .input-group-append > .btn {
|
125
|
-
|
130
|
+
height: $input-height-lg;
|
131
|
+
padding: $input-padding-y-lg $input-padding-x-lg;
|
132
|
+
font-size: $font-size-lg;
|
133
|
+
line-height: $input-line-height-lg;
|
134
|
+
@include border-radius($input-border-radius-lg);
|
126
135
|
}
|
127
136
|
|
128
137
|
.input-group-sm > .form-control,
|
@@ -130,7 +139,11 @@
|
|
130
139
|
.input-group-sm > .input-group-append > .input-group-text,
|
131
140
|
.input-group-sm > .input-group-prepend > .btn,
|
132
141
|
.input-group-sm > .input-group-append > .btn {
|
133
|
-
|
142
|
+
height: $input-height-sm;
|
143
|
+
padding: $input-padding-y-sm $input-padding-x-sm;
|
144
|
+
font-size: $font-size-sm;
|
145
|
+
line-height: $input-line-height-sm;
|
146
|
+
@include border-radius($input-border-radius-sm);
|
134
147
|
}
|
135
148
|
|
136
149
|
|