bootstrap 4.0.0.alpha5 → 4.0.0.alpha6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of bootstrap might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/README.md +7 -4
- data/assets/javascripts/bootstrap.js +312 -207
- data/assets/javascripts/bootstrap.min.js +4 -4
- data/assets/javascripts/bootstrap/alert.js +9 -5
- data/assets/javascripts/bootstrap/button.js +5 -5
- data/assets/javascripts/bootstrap/carousel.js +52 -28
- data/assets/javascripts/bootstrap/collapse.js +19 -11
- data/assets/javascripts/bootstrap/dropdown.js +21 -19
- data/assets/javascripts/bootstrap/modal.js +69 -43
- data/assets/javascripts/bootstrap/popover.js +4 -4
- data/assets/javascripts/bootstrap/scrollspy.js +20 -11
- data/assets/javascripts/bootstrap/tab.js +19 -14
- data/assets/javascripts/bootstrap/tooltip.js +54 -22
- data/assets/javascripts/bootstrap/util.js +7 -12
- data/assets/stylesheets/_bootstrap-grid.scss +23 -3
- data/assets/stylesheets/_bootstrap-reboot.scss +2 -3
- data/assets/stylesheets/_bootstrap.scss +6 -6
- data/assets/stylesheets/bootstrap/_alert.scss +3 -4
- data/assets/stylesheets/bootstrap/_badge.scss +77 -0
- data/assets/stylesheets/bootstrap/_button-group.scss +18 -51
- data/assets/stylesheets/bootstrap/_buttons.scss +14 -20
- data/assets/stylesheets/bootstrap/_card.scss +30 -76
- data/assets/stylesheets/bootstrap/_carousel.scss +96 -171
- data/assets/stylesheets/bootstrap/_close.scss +3 -3
- data/assets/stylesheets/bootstrap/_code.scss +7 -0
- data/assets/stylesheets/bootstrap/_custom-forms.scss +13 -12
- data/assets/stylesheets/bootstrap/_dropdown.scss +17 -36
- data/assets/stylesheets/bootstrap/_forms.scss +61 -47
- data/assets/stylesheets/bootstrap/_grid.scss +13 -0
- data/assets/stylesheets/bootstrap/_images.scss +2 -2
- data/assets/stylesheets/bootstrap/_input-group.scss +17 -27
- data/assets/stylesheets/bootstrap/_list-group.scss +79 -63
- data/assets/stylesheets/bootstrap/_media.scss +5 -78
- data/assets/stylesheets/bootstrap/_mixins.scss +8 -5
- data/assets/stylesheets/bootstrap/_modal.scss +21 -13
- data/assets/stylesheets/bootstrap/_nav.scss +30 -68
- data/assets/stylesheets/bootstrap/_navbar.scss +131 -178
- data/assets/stylesheets/bootstrap/_normalize.scss +133 -94
- data/assets/stylesheets/bootstrap/_pagination.scss +16 -22
- data/assets/stylesheets/bootstrap/_popover.scss +3 -3
- data/assets/stylesheets/bootstrap/_print.scss +5 -8
- data/assets/stylesheets/bootstrap/_progress.scss +14 -127
- data/assets/stylesheets/bootstrap/_reboot.scss +16 -15
- data/assets/stylesheets/bootstrap/_responsive-embed.scss +18 -5
- data/assets/stylesheets/bootstrap/_tables.scss +13 -56
- data/assets/stylesheets/bootstrap/_tooltip.scss +1 -1
- data/assets/stylesheets/bootstrap/{_animation.scss → _transitions.scss} +6 -8
- data/assets/stylesheets/bootstrap/_type.scss +5 -12
- data/assets/stylesheets/bootstrap/_utilities.scss +2 -0
- data/assets/stylesheets/bootstrap/_variables.scss +320 -216
- data/assets/stylesheets/bootstrap/mixins/{_tag.scss → _badge.scss} +2 -2
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +25 -16
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +31 -58
- data/assets/stylesheets/bootstrap/mixins/_cards.scss +3 -0
- data/assets/stylesheets/bootstrap/mixins/_clearfix.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_float.scss +3 -0
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +3 -5
- data/assets/stylesheets/bootstrap/mixins/_gradients.scss +1 -7
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +19 -23
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +19 -26
- data/assets/stylesheets/bootstrap/mixins/_list-group.scss +3 -5
- data/assets/stylesheets/bootstrap/mixins/_reset-text.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_transforms.scss +14 -0
- data/assets/stylesheets/bootstrap/mixins/_visibility.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_align.scss +5 -5
- data/assets/stylesheets/bootstrap/utilities/_background.scss +1 -1
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +10 -3
- data/assets/stylesheets/bootstrap/utilities/_display.scss +13 -8
- data/assets/stylesheets/bootstrap/utilities/_flex.scss +42 -31
- data/assets/stylesheets/bootstrap/utilities/_float.scss +5 -9
- data/assets/stylesheets/bootstrap/utilities/_position.scss +23 -0
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +10 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +36 -37
- data/assets/stylesheets/bootstrap/utilities/_text.scss +14 -12
- data/assets/stylesheets/bootstrap/utilities/_visibility.scss +1 -1
- data/lib/bootstrap/version.rb +2 -2
- data/tasks/updater/scss.rb +3 -5
- data/templates/project/_bootstrap-variables.scss +321 -217
- metadata +10 -10
- data/assets/stylesheets/_bootstrap-flex.scss +0 -8
- data/assets/stylesheets/bootstrap/_tags.scss +0 -77
- data/assets/stylesheets/bootstrap/mixins/_progress.scss +0 -23
- data/assets/stylesheets/bootstrap/mixins/_reset-filter.scss +0 -8
- data/assets/stylesheets/bootstrap/mixins/_tab-focus.scss +0 -9
@@ -6,7 +6,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
6
6
|
|
7
7
|
/**
|
8
8
|
* --------------------------------------------------------------------------
|
9
|
-
* Bootstrap (v4.0.0-alpha.
|
9
|
+
* Bootstrap (v4.0.0-alpha.6): modal.js
|
10
10
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
11
11
|
* --------------------------------------------------------------------------
|
12
12
|
*/
|
@@ -20,7 +20,7 @@ var Modal = function ($) {
|
|
20
20
|
*/
|
21
21
|
|
22
22
|
var NAME = 'modal';
|
23
|
-
var VERSION = '4.0.0-alpha.
|
23
|
+
var VERSION = '4.0.0-alpha.6';
|
24
24
|
var DATA_KEY = 'bs.modal';
|
25
25
|
var EVENT_KEY = '.' + DATA_KEY;
|
26
26
|
var DATA_API_KEY = '.data-api';
|
@@ -62,14 +62,14 @@ var Modal = function ($) {
|
|
62
62
|
BACKDROP: 'modal-backdrop',
|
63
63
|
OPEN: 'modal-open',
|
64
64
|
FADE: 'fade',
|
65
|
-
|
65
|
+
SHOW: 'show'
|
66
66
|
};
|
67
67
|
|
68
68
|
var Selector = {
|
69
69
|
DIALOG: '.modal-dialog',
|
70
70
|
DATA_TOGGLE: '[data-toggle="modal"]',
|
71
71
|
DATA_DISMISS: '[data-dismiss="modal"]',
|
72
|
-
FIXED_CONTENT: '.
|
72
|
+
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'
|
73
73
|
};
|
74
74
|
|
75
75
|
/**
|
@@ -89,6 +89,7 @@ var Modal = function ($) {
|
|
89
89
|
this._isShown = false;
|
90
90
|
this._isBodyOverflowing = false;
|
91
91
|
this._ignoreBackdropClick = false;
|
92
|
+
this._isTransitioning = false;
|
92
93
|
this._originalBodyPadding = 0;
|
93
94
|
this._scrollbarWidth = 0;
|
94
95
|
}
|
@@ -104,6 +105,13 @@ var Modal = function ($) {
|
|
104
105
|
Modal.prototype.show = function show(relatedTarget) {
|
105
106
|
var _this = this;
|
106
107
|
|
108
|
+
if (this._isTransitioning) {
|
109
|
+
throw new Error('Modal is transitioning');
|
110
|
+
}
|
111
|
+
|
112
|
+
if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
|
113
|
+
this._isTransitioning = true;
|
114
|
+
}
|
107
115
|
var showEvent = $.Event(Event.SHOW, {
|
108
116
|
relatedTarget: relatedTarget
|
109
117
|
});
|
@@ -124,7 +132,9 @@ var Modal = function ($) {
|
|
124
132
|
this._setEscapeEvent();
|
125
133
|
this._setResizeEvent();
|
126
134
|
|
127
|
-
$(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS,
|
135
|
+
$(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
|
136
|
+
return _this.hide(event);
|
137
|
+
});
|
128
138
|
|
129
139
|
$(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
|
130
140
|
$(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
|
@@ -134,16 +144,28 @@ var Modal = function ($) {
|
|
134
144
|
});
|
135
145
|
});
|
136
146
|
|
137
|
-
this._showBackdrop(
|
147
|
+
this._showBackdrop(function () {
|
148
|
+
return _this._showElement(relatedTarget);
|
149
|
+
});
|
138
150
|
};
|
139
151
|
|
140
152
|
Modal.prototype.hide = function hide(event) {
|
153
|
+
var _this2 = this;
|
154
|
+
|
141
155
|
if (event) {
|
142
156
|
event.preventDefault();
|
143
157
|
}
|
144
158
|
|
145
|
-
|
159
|
+
if (this._isTransitioning) {
|
160
|
+
throw new Error('Modal is transitioning');
|
161
|
+
}
|
162
|
+
|
163
|
+
var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
|
164
|
+
if (transition) {
|
165
|
+
this._isTransitioning = true;
|
166
|
+
}
|
146
167
|
|
168
|
+
var hideEvent = $.Event(Event.HIDE);
|
147
169
|
$(this._element).trigger(hideEvent);
|
148
170
|
|
149
171
|
if (!this._isShown || hideEvent.isDefaultPrevented()) {
|
@@ -157,14 +179,15 @@ var Modal = function ($) {
|
|
157
179
|
|
158
180
|
$(document).off(Event.FOCUSIN);
|
159
181
|
|
160
|
-
$(this._element).removeClass(ClassName.
|
182
|
+
$(this._element).removeClass(ClassName.SHOW);
|
161
183
|
|
162
184
|
$(this._element).off(Event.CLICK_DISMISS);
|
163
185
|
$(this._dialog).off(Event.MOUSEDOWN_DISMISS);
|
164
186
|
|
165
|
-
if (
|
166
|
-
|
167
|
-
|
187
|
+
if (transition) {
|
188
|
+
$(this._element).one(Util.TRANSITION_END, function (event) {
|
189
|
+
return _this2._hideModal(event);
|
190
|
+
}).emulateTransitionEnd(TRANSITION_DURATION);
|
168
191
|
} else {
|
169
192
|
this._hideModal();
|
170
193
|
}
|
@@ -173,10 +196,7 @@ var Modal = function ($) {
|
|
173
196
|
Modal.prototype.dispose = function dispose() {
|
174
197
|
$.removeData(this._element, DATA_KEY);
|
175
198
|
|
176
|
-
$(window).off(EVENT_KEY);
|
177
|
-
$(document).off(EVENT_KEY);
|
178
|
-
$(this._element).off(EVENT_KEY);
|
179
|
-
$(this._backdrop).off(EVENT_KEY);
|
199
|
+
$(window, document, this._element, this._backdrop).off(EVENT_KEY);
|
180
200
|
|
181
201
|
this._config = null;
|
182
202
|
this._element = null;
|
@@ -198,7 +218,7 @@ var Modal = function ($) {
|
|
198
218
|
};
|
199
219
|
|
200
220
|
Modal.prototype._showElement = function _showElement(relatedTarget) {
|
201
|
-
var
|
221
|
+
var _this3 = this;
|
202
222
|
|
203
223
|
var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
|
204
224
|
|
@@ -215,7 +235,7 @@ var Modal = function ($) {
|
|
215
235
|
Util.reflow(this._element);
|
216
236
|
}
|
217
237
|
|
218
|
-
$(this._element).addClass(ClassName.
|
238
|
+
$(this._element).addClass(ClassName.SHOW);
|
219
239
|
|
220
240
|
if (this._config.focus) {
|
221
241
|
this._enforceFocus();
|
@@ -226,10 +246,11 @@ var Modal = function ($) {
|
|
226
246
|
});
|
227
247
|
|
228
248
|
var transitionComplete = function transitionComplete() {
|
229
|
-
if (
|
230
|
-
|
249
|
+
if (_this3._config.focus) {
|
250
|
+
_this3._element.focus();
|
231
251
|
}
|
232
|
-
|
252
|
+
_this3._isTransitioning = false;
|
253
|
+
$(_this3._element).trigger(shownEvent);
|
233
254
|
};
|
234
255
|
|
235
256
|
if (transition) {
|
@@ -240,23 +261,23 @@ var Modal = function ($) {
|
|
240
261
|
};
|
241
262
|
|
242
263
|
Modal.prototype._enforceFocus = function _enforceFocus() {
|
243
|
-
var
|
264
|
+
var _this4 = this;
|
244
265
|
|
245
266
|
$(document).off(Event.FOCUSIN) // guard against infinite focus loop
|
246
267
|
.on(Event.FOCUSIN, function (event) {
|
247
|
-
if (document !== event.target &&
|
248
|
-
|
268
|
+
if (document !== event.target && _this4._element !== event.target && !$(_this4._element).has(event.target).length) {
|
269
|
+
_this4._element.focus();
|
249
270
|
}
|
250
271
|
});
|
251
272
|
};
|
252
273
|
|
253
274
|
Modal.prototype._setEscapeEvent = function _setEscapeEvent() {
|
254
|
-
var
|
275
|
+
var _this5 = this;
|
255
276
|
|
256
277
|
if (this._isShown && this._config.keyboard) {
|
257
278
|
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
258
279
|
if (event.which === ESCAPE_KEYCODE) {
|
259
|
-
|
280
|
+
_this5.hide();
|
260
281
|
}
|
261
282
|
});
|
262
283
|
} else if (!this._isShown) {
|
@@ -265,23 +286,28 @@ var Modal = function ($) {
|
|
265
286
|
};
|
266
287
|
|
267
288
|
Modal.prototype._setResizeEvent = function _setResizeEvent() {
|
289
|
+
var _this6 = this;
|
290
|
+
|
268
291
|
if (this._isShown) {
|
269
|
-
$(window).on(Event.RESIZE,
|
292
|
+
$(window).on(Event.RESIZE, function (event) {
|
293
|
+
return _this6._handleUpdate(event);
|
294
|
+
});
|
270
295
|
} else {
|
271
296
|
$(window).off(Event.RESIZE);
|
272
297
|
}
|
273
298
|
};
|
274
299
|
|
275
300
|
Modal.prototype._hideModal = function _hideModal() {
|
276
|
-
var
|
301
|
+
var _this7 = this;
|
277
302
|
|
278
303
|
this._element.style.display = 'none';
|
279
304
|
this._element.setAttribute('aria-hidden', 'true');
|
305
|
+
this._isTransitioning = false;
|
280
306
|
this._showBackdrop(function () {
|
281
307
|
$(document.body).removeClass(ClassName.OPEN);
|
282
|
-
|
283
|
-
|
284
|
-
$(
|
308
|
+
_this7._resetAdjustments();
|
309
|
+
_this7._resetScrollbar();
|
310
|
+
$(_this7._element).trigger(Event.HIDDEN);
|
285
311
|
});
|
286
312
|
};
|
287
313
|
|
@@ -293,7 +319,7 @@ var Modal = function ($) {
|
|
293
319
|
};
|
294
320
|
|
295
321
|
Modal.prototype._showBackdrop = function _showBackdrop(callback) {
|
296
|
-
var
|
322
|
+
var _this8 = this;
|
297
323
|
|
298
324
|
var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
|
299
325
|
|
@@ -310,17 +336,17 @@ var Modal = function ($) {
|
|
310
336
|
$(this._backdrop).appendTo(document.body);
|
311
337
|
|
312
338
|
$(this._element).on(Event.CLICK_DISMISS, function (event) {
|
313
|
-
if (
|
314
|
-
|
339
|
+
if (_this8._ignoreBackdropClick) {
|
340
|
+
_this8._ignoreBackdropClick = false;
|
315
341
|
return;
|
316
342
|
}
|
317
343
|
if (event.target !== event.currentTarget) {
|
318
344
|
return;
|
319
345
|
}
|
320
|
-
if (
|
321
|
-
|
346
|
+
if (_this8._config.backdrop === 'static') {
|
347
|
+
_this8._element.focus();
|
322
348
|
} else {
|
323
|
-
|
349
|
+
_this8.hide();
|
324
350
|
}
|
325
351
|
});
|
326
352
|
|
@@ -328,7 +354,7 @@ var Modal = function ($) {
|
|
328
354
|
Util.reflow(this._backdrop);
|
329
355
|
}
|
330
356
|
|
331
|
-
$(this._backdrop).addClass(ClassName.
|
357
|
+
$(this._backdrop).addClass(ClassName.SHOW);
|
332
358
|
|
333
359
|
if (!callback) {
|
334
360
|
return;
|
@@ -341,10 +367,10 @@ var Modal = function ($) {
|
|
341
367
|
|
342
368
|
$(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
|
343
369
|
} else if (!this._isShown && this._backdrop) {
|
344
|
-
$(this._backdrop).removeClass(ClassName.
|
370
|
+
$(this._backdrop).removeClass(ClassName.SHOW);
|
345
371
|
|
346
372
|
var callbackRemove = function callbackRemove() {
|
347
|
-
|
373
|
+
_this8._removeBackdrop();
|
348
374
|
if (callback) {
|
349
375
|
callback();
|
350
376
|
}
|
@@ -460,7 +486,7 @@ var Modal = function ($) {
|
|
460
486
|
*/
|
461
487
|
|
462
488
|
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
463
|
-
var
|
489
|
+
var _this9 = this;
|
464
490
|
|
465
491
|
var target = void 0;
|
466
492
|
var selector = Util.getSelectorFromElement(this);
|
@@ -471,7 +497,7 @@ var Modal = function ($) {
|
|
471
497
|
|
472
498
|
var config = $(target).data(DATA_KEY) ? 'toggle' : $.extend({}, $(target).data(), $(this).data());
|
473
499
|
|
474
|
-
if (this.tagName === 'A') {
|
500
|
+
if (this.tagName === 'A' || this.tagName === 'AREA') {
|
475
501
|
event.preventDefault();
|
476
502
|
}
|
477
503
|
|
@@ -482,8 +508,8 @@ var Modal = function ($) {
|
|
482
508
|
}
|
483
509
|
|
484
510
|
$target.one(Event.HIDDEN, function () {
|
485
|
-
if ($(
|
486
|
-
|
511
|
+
if ($(_this9).is(':visible')) {
|
512
|
+
_this9.focus();
|
487
513
|
}
|
488
514
|
});
|
489
515
|
});
|
@@ -10,7 +10,7 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
|
10
10
|
|
11
11
|
/**
|
12
12
|
* --------------------------------------------------------------------------
|
13
|
-
* Bootstrap (v4.0.0-alpha.
|
13
|
+
* Bootstrap (v4.0.0-alpha.6): popover.js
|
14
14
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
15
15
|
* --------------------------------------------------------------------------
|
16
16
|
*/
|
@@ -24,7 +24,7 @@ var Popover = function ($) {
|
|
24
24
|
*/
|
25
25
|
|
26
26
|
var NAME = 'popover';
|
27
|
-
var VERSION = '4.0.0-alpha.
|
27
|
+
var VERSION = '4.0.0-alpha.6';
|
28
28
|
var DATA_KEY = 'bs.popover';
|
29
29
|
var EVENT_KEY = '.' + DATA_KEY;
|
30
30
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
@@ -42,7 +42,7 @@ var Popover = function ($) {
|
|
42
42
|
|
43
43
|
var ClassName = {
|
44
44
|
FADE: 'fade',
|
45
|
-
|
45
|
+
SHOW: 'show'
|
46
46
|
};
|
47
47
|
|
48
48
|
var Selector = {
|
@@ -95,7 +95,7 @@ var Popover = function ($) {
|
|
95
95
|
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
|
96
96
|
this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
|
97
97
|
|
98
|
-
$tip.removeClass(ClassName.FADE
|
98
|
+
$tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW);
|
99
99
|
|
100
100
|
this.cleanupTether();
|
101
101
|
};
|
@@ -6,7 +6,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
6
6
|
|
7
7
|
/**
|
8
8
|
* --------------------------------------------------------------------------
|
9
|
-
* Bootstrap (v4.0.0-alpha.
|
9
|
+
* Bootstrap (v4.0.0-alpha.6): scrollspy.js
|
10
10
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
11
11
|
* --------------------------------------------------------------------------
|
12
12
|
*/
|
@@ -20,7 +20,7 @@ var ScrollSpy = function ($) {
|
|
20
20
|
*/
|
21
21
|
|
22
22
|
var NAME = 'scrollspy';
|
23
|
-
var VERSION = '4.0.0-alpha.
|
23
|
+
var VERSION = '4.0.0-alpha.6';
|
24
24
|
var DATA_KEY = 'bs.scrollspy';
|
25
25
|
var EVENT_KEY = '.' + DATA_KEY;
|
26
26
|
var DATA_API_KEY = '.data-api';
|
@@ -77,6 +77,8 @@ var ScrollSpy = function ($) {
|
|
77
77
|
|
78
78
|
var ScrollSpy = function () {
|
79
79
|
function ScrollSpy(element, config) {
|
80
|
+
var _this = this;
|
81
|
+
|
80
82
|
_classCallCheck(this, ScrollSpy);
|
81
83
|
|
82
84
|
this._element = element;
|
@@ -88,7 +90,9 @@ var ScrollSpy = function ($) {
|
|
88
90
|
this._activeTarget = null;
|
89
91
|
this._scrollHeight = 0;
|
90
92
|
|
91
|
-
$(this._scrollElement).on(Event.SCROLL,
|
93
|
+
$(this._scrollElement).on(Event.SCROLL, function (event) {
|
94
|
+
return _this._process(event);
|
95
|
+
});
|
92
96
|
|
93
97
|
this.refresh();
|
94
98
|
this._process();
|
@@ -99,7 +103,7 @@ var ScrollSpy = function ($) {
|
|
99
103
|
// public
|
100
104
|
|
101
105
|
ScrollSpy.prototype.refresh = function refresh() {
|
102
|
-
var
|
106
|
+
var _this2 = this;
|
103
107
|
|
104
108
|
var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;
|
105
109
|
|
@@ -132,8 +136,8 @@ var ScrollSpy = function ($) {
|
|
132
136
|
}).sort(function (a, b) {
|
133
137
|
return a[0] - b[0];
|
134
138
|
}).forEach(function (item) {
|
135
|
-
|
136
|
-
|
139
|
+
_this2._offsets.push(item[0]);
|
140
|
+
_this2._targets.push(item[1]);
|
137
141
|
});
|
138
142
|
};
|
139
143
|
|
@@ -171,17 +175,21 @@ var ScrollSpy = function ($) {
|
|
171
175
|
};
|
172
176
|
|
173
177
|
ScrollSpy.prototype._getScrollTop = function _getScrollTop() {
|
174
|
-
return this._scrollElement === window ? this._scrollElement.
|
178
|
+
return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
|
175
179
|
};
|
176
180
|
|
177
181
|
ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() {
|
178
182
|
return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
|
179
183
|
};
|
180
184
|
|
185
|
+
ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() {
|
186
|
+
return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight;
|
187
|
+
};
|
188
|
+
|
181
189
|
ScrollSpy.prototype._process = function _process() {
|
182
190
|
var scrollTop = this._getScrollTop() + this._config.offset;
|
183
191
|
var scrollHeight = this._getScrollHeight();
|
184
|
-
var maxScroll = this._config.offset + scrollHeight - this.
|
192
|
+
var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight();
|
185
193
|
|
186
194
|
if (this._scrollHeight !== scrollHeight) {
|
187
195
|
this.refresh();
|
@@ -193,9 +201,10 @@ var ScrollSpy = function ($) {
|
|
193
201
|
if (this._activeTarget !== target) {
|
194
202
|
this._activate(target);
|
195
203
|
}
|
204
|
+
return;
|
196
205
|
}
|
197
206
|
|
198
|
-
if (this._activeTarget && scrollTop < this._offsets[0]) {
|
207
|
+
if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {
|
199
208
|
this._activeTarget = null;
|
200
209
|
this._clear();
|
201
210
|
return;
|
@@ -228,7 +237,7 @@ var ScrollSpy = function ($) {
|
|
228
237
|
} else {
|
229
238
|
// todo (fat) this is kinda sus...
|
230
239
|
// recursively add actives to tested nav-links
|
231
|
-
$link.parents(Selector.LI).find(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
|
240
|
+
$link.parents(Selector.LI).find('> ' + Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
|
232
241
|
}
|
233
242
|
|
234
243
|
$(this._scrollElement).trigger(Event.ACTIVATE, {
|
@@ -245,7 +254,7 @@ var ScrollSpy = function ($) {
|
|
245
254
|
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
246
255
|
return this.each(function () {
|
247
256
|
var data = $(this).data(DATA_KEY);
|
248
|
-
var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config
|
257
|
+
var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config;
|
249
258
|
|
250
259
|
if (!data) {
|
251
260
|
data = new ScrollSpy(this, _config);
|
@@ -4,7 +4,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
|
4
4
|
|
5
5
|
/**
|
6
6
|
* --------------------------------------------------------------------------
|
7
|
-
* Bootstrap (v4.0.0-alpha.
|
7
|
+
* Bootstrap (v4.0.0-alpha.6): tab.js
|
8
8
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
9
9
|
* --------------------------------------------------------------------------
|
10
10
|
*/
|
@@ -18,7 +18,7 @@ var Tab = function ($) {
|
|
18
18
|
*/
|
19
19
|
|
20
20
|
var NAME = 'tab';
|
21
|
-
var VERSION = '4.0.0-alpha.
|
21
|
+
var VERSION = '4.0.0-alpha.6';
|
22
22
|
var DATA_KEY = 'bs.tab';
|
23
23
|
var EVENT_KEY = '.' + DATA_KEY;
|
24
24
|
var DATA_API_KEY = '.data-api';
|
@@ -36,15 +36,16 @@ var Tab = function ($) {
|
|
36
36
|
var ClassName = {
|
37
37
|
DROPDOWN_MENU: 'dropdown-menu',
|
38
38
|
ACTIVE: 'active',
|
39
|
+
DISABLED: 'disabled',
|
39
40
|
FADE: 'fade',
|
40
|
-
|
41
|
+
SHOW: 'show'
|
41
42
|
};
|
42
43
|
|
43
44
|
var Selector = {
|
44
45
|
A: 'a',
|
45
46
|
LI: 'li',
|
46
47
|
DROPDOWN: '.dropdown',
|
47
|
-
|
48
|
+
LIST: 'ul:not(.dropdown-menu), ol:not(.dropdown-menu), nav:not(.dropdown-menu)',
|
48
49
|
FADE_CHILD: '> .nav-item .fade, > .fade',
|
49
50
|
ACTIVE: '.active',
|
50
51
|
ACTIVE_CHILD: '> .nav-item > .active, > .active',
|
@@ -73,17 +74,17 @@ var Tab = function ($) {
|
|
73
74
|
Tab.prototype.show = function show() {
|
74
75
|
var _this = this;
|
75
76
|
|
76
|
-
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE)) {
|
77
|
+
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
|
77
78
|
return;
|
78
79
|
}
|
79
80
|
|
80
81
|
var target = void 0;
|
81
82
|
var previous = void 0;
|
82
|
-
var
|
83
|
+
var listElement = $(this._element).closest(Selector.LIST)[0];
|
83
84
|
var selector = Util.getSelectorFromElement(this._element);
|
84
85
|
|
85
|
-
if (
|
86
|
-
previous = $.makeArray($(
|
86
|
+
if (listElement) {
|
87
|
+
previous = $.makeArray($(listElement).find(Selector.ACTIVE));
|
87
88
|
previous = previous[previous.length - 1];
|
88
89
|
}
|
89
90
|
|
@@ -109,7 +110,7 @@ var Tab = function ($) {
|
|
109
110
|
target = $(selector)[0];
|
110
111
|
}
|
111
112
|
|
112
|
-
this._activate(this._element,
|
113
|
+
this._activate(this._element, listElement);
|
113
114
|
|
114
115
|
var complete = function complete() {
|
115
116
|
var hiddenEvent = $.Event(Event.HIDDEN, {
|
@@ -139,10 +140,14 @@ var Tab = function ($) {
|
|
139
140
|
// private
|
140
141
|
|
141
142
|
Tab.prototype._activate = function _activate(element, container, callback) {
|
143
|
+
var _this2 = this;
|
144
|
+
|
142
145
|
var active = $(container).find(Selector.ACTIVE_CHILD)[0];
|
143
146
|
var isTransitioning = callback && Util.supportsTransitionEnd() && (active && $(active).hasClass(ClassName.FADE) || Boolean($(container).find(Selector.FADE_CHILD)[0]));
|
144
147
|
|
145
|
-
var complete =
|
148
|
+
var complete = function complete() {
|
149
|
+
return _this2._transitionComplete(element, active, isTransitioning, callback);
|
150
|
+
};
|
146
151
|
|
147
152
|
if (active && isTransitioning) {
|
148
153
|
$(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
@@ -151,7 +156,7 @@ var Tab = function ($) {
|
|
151
156
|
}
|
152
157
|
|
153
158
|
if (active) {
|
154
|
-
$(active).removeClass(ClassName.
|
159
|
+
$(active).removeClass(ClassName.SHOW);
|
155
160
|
}
|
156
161
|
};
|
157
162
|
|
@@ -159,7 +164,7 @@ var Tab = function ($) {
|
|
159
164
|
if (active) {
|
160
165
|
$(active).removeClass(ClassName.ACTIVE);
|
161
166
|
|
162
|
-
var dropdownChild = $(active).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
167
|
+
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
163
168
|
|
164
169
|
if (dropdownChild) {
|
165
170
|
$(dropdownChild).removeClass(ClassName.ACTIVE);
|
@@ -173,7 +178,7 @@ var Tab = function ($) {
|
|
173
178
|
|
174
179
|
if (isTransitioning) {
|
175
180
|
Util.reflow(element);
|
176
|
-
$(element).addClass(ClassName.
|
181
|
+
$(element).addClass(ClassName.SHOW);
|
177
182
|
} else {
|
178
183
|
$(element).removeClass(ClassName.FADE);
|
179
184
|
}
|
@@ -201,7 +206,7 @@ var Tab = function ($) {
|
|
201
206
|
var data = $this.data(DATA_KEY);
|
202
207
|
|
203
208
|
if (!data) {
|
204
|
-
data =
|
209
|
+
data = new Tab(this);
|
205
210
|
$this.data(DATA_KEY, data);
|
206
211
|
}
|
207
212
|
|