bootstrap 4.1.3 → 4.2.1
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/.travis.yml +1 -1
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/assets/javascripts/bootstrap-sprockets.js +6 -5
- data/assets/javascripts/bootstrap.js +3290 -2985
- data/assets/javascripts/bootstrap.min.js +2 -2
- data/assets/javascripts/bootstrap/alert.js +127 -132
- data/assets/javascripts/bootstrap/button.js +119 -124
- data/assets/javascripts/bootstrap/carousel.js +492 -393
- data/assets/javascripts/bootstrap/collapse.js +276 -279
- data/assets/javascripts/bootstrap/dropdown.js +413 -374
- data/assets/javascripts/bootstrap/modal.js +455 -445
- data/assets/javascripts/bootstrap/popover.js +155 -160
- data/assets/javascripts/bootstrap/scrollspy.js +246 -250
- data/assets/javascripts/bootstrap/tab.js +180 -192
- data/assets/javascripts/bootstrap/toast.js +277 -0
- data/assets/javascripts/bootstrap/tooltip.js +533 -522
- data/assets/javascripts/bootstrap/util.js +140 -116
- data/assets/stylesheets/_bootstrap-grid.scss +2 -5
- data/assets/stylesheets/_bootstrap-reboot.scss +1 -1
- data/assets/stylesheets/_bootstrap.scss +3 -1
- data/assets/stylesheets/bootstrap/_alert.scss +1 -1
- data/assets/stylesheets/bootstrap/_badge.scss +6 -0
- data/assets/stylesheets/bootstrap/_button-group.scss +9 -18
- data/assets/stylesheets/bootstrap/_buttons.scss +7 -10
- data/assets/stylesheets/bootstrap/_card.scss +30 -21
- data/assets/stylesheets/bootstrap/_carousel.scss +36 -74
- data/assets/stylesheets/bootstrap/_close.scss +15 -6
- data/assets/stylesheets/bootstrap/_custom-forms.scss +103 -29
- data/assets/stylesheets/bootstrap/_dropdown.scss +30 -5
- data/assets/stylesheets/bootstrap/_forms.scss +12 -11
- data/assets/stylesheets/bootstrap/_functions.scss +4 -4
- data/assets/stylesheets/bootstrap/_images.scss +1 -1
- data/assets/stylesheets/bootstrap/_input-group.scss +24 -4
- data/assets/stylesheets/bootstrap/_list-group.scss +6 -0
- data/assets/stylesheets/bootstrap/_modal.scss +16 -10
- data/assets/stylesheets/bootstrap/_nav.scss +2 -0
- data/assets/stylesheets/bootstrap/_navbar.scss +4 -4
- data/assets/stylesheets/bootstrap/_popover.scss +1 -1
- data/assets/stylesheets/bootstrap/_reboot.scss +14 -35
- data/assets/stylesheets/bootstrap/_spinners.scss +53 -0
- data/assets/stylesheets/bootstrap/_tables.scss +2 -2
- data/assets/stylesheets/bootstrap/_toasts.scss +43 -0
- data/assets/stylesheets/bootstrap/_type.scss +2 -2
- data/assets/stylesheets/bootstrap/_utilities.scss +1 -0
- data/assets/stylesheets/bootstrap/_variables.scss +220 -81
- data/assets/stylesheets/bootstrap/mixins/_badge.scss +1 -2
- data/assets/stylesheets/bootstrap/mixins/_breakpoints.scss +2 -2
- data/assets/stylesheets/bootstrap/mixins/_buttons.scss +9 -7
- data/assets/stylesheets/bootstrap/mixins/_caret.scss +0 -4
- data/assets/stylesheets/bootstrap/mixins/_forms.scss +61 -10
- data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +3 -4
- data/assets/stylesheets/bootstrap/mixins/_grid.scss +9 -10
- data/assets/stylesheets/bootstrap/mixins/_table-row.scss +10 -1
- data/assets/stylesheets/bootstrap/mixins/_text-emphasis.scss +1 -1
- data/assets/stylesheets/bootstrap/mixins/_transition.scss +5 -2
- data/assets/stylesheets/bootstrap/utilities/_borders.scss +4 -0
- data/assets/stylesheets/bootstrap/utilities/_embed.scss +7 -20
- data/assets/stylesheets/bootstrap/utilities/_overflow.scss +5 -0
- data/assets/stylesheets/bootstrap/utilities/_position.scss +0 -5
- data/assets/stylesheets/bootstrap/utilities/_sizing.scss +8 -0
- data/assets/stylesheets/bootstrap/utilities/_spacing.scss +23 -1
- data/assets/stylesheets/bootstrap/utilities/_text.scss +13 -4
- data/bootstrap.gemspec +6 -3
- data/lib/bootstrap.rb +10 -7
- data/lib/bootstrap/engine.rb +3 -0
- data/lib/bootstrap/version.rb +4 -2
- metadata +15 -11
@@ -1,3 +1,8 @@
|
|
1
|
+
/*!
|
2
|
+
* Bootstrap modal.js v4.2.1 (https://getbootstrap.com/)
|
3
|
+
* Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
|
4
|
+
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
5
|
+
*/
|
1
6
|
(function (global, factory) {
|
2
7
|
typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
|
3
8
|
typeof define === 'function' && define.amd ? define(['jquery', './util.js'], factory) :
|
@@ -58,575 +63,580 @@
|
|
58
63
|
}
|
59
64
|
|
60
65
|
/**
|
61
|
-
*
|
62
|
-
*
|
63
|
-
*
|
64
|
-
* --------------------------------------------------------------------------
|
66
|
+
* ------------------------------------------------------------------------
|
67
|
+
* Constants
|
68
|
+
* ------------------------------------------------------------------------
|
65
69
|
*/
|
66
70
|
|
67
|
-
var
|
71
|
+
var NAME = 'modal';
|
72
|
+
var VERSION = '4.2.1';
|
73
|
+
var DATA_KEY = 'bs.modal';
|
74
|
+
var EVENT_KEY = "." + DATA_KEY;
|
75
|
+
var DATA_API_KEY = '.data-api';
|
76
|
+
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
77
|
+
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
78
|
+
|
79
|
+
var Default = {
|
80
|
+
backdrop: true,
|
81
|
+
keyboard: true,
|
82
|
+
focus: true,
|
83
|
+
show: true
|
84
|
+
};
|
85
|
+
var DefaultType = {
|
86
|
+
backdrop: '(boolean|string)',
|
87
|
+
keyboard: 'boolean',
|
88
|
+
focus: 'boolean',
|
89
|
+
show: 'boolean'
|
90
|
+
};
|
91
|
+
var Event = {
|
92
|
+
HIDE: "hide" + EVENT_KEY,
|
93
|
+
HIDDEN: "hidden" + EVENT_KEY,
|
94
|
+
SHOW: "show" + EVENT_KEY,
|
95
|
+
SHOWN: "shown" + EVENT_KEY,
|
96
|
+
FOCUSIN: "focusin" + EVENT_KEY,
|
97
|
+
RESIZE: "resize" + EVENT_KEY,
|
98
|
+
CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
|
99
|
+
KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
|
100
|
+
MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
|
101
|
+
MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
|
102
|
+
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
103
|
+
};
|
104
|
+
var ClassName = {
|
105
|
+
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
106
|
+
BACKDROP: 'modal-backdrop',
|
107
|
+
OPEN: 'modal-open',
|
108
|
+
FADE: 'fade',
|
109
|
+
SHOW: 'show'
|
110
|
+
};
|
111
|
+
var Selector = {
|
112
|
+
DIALOG: '.modal-dialog',
|
113
|
+
DATA_TOGGLE: '[data-toggle="modal"]',
|
114
|
+
DATA_DISMISS: '[data-dismiss="modal"]',
|
115
|
+
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
116
|
+
STICKY_CONTENT: '.sticky-top'
|
68
117
|
/**
|
69
118
|
* ------------------------------------------------------------------------
|
70
|
-
*
|
119
|
+
* Class Definition
|
71
120
|
* ------------------------------------------------------------------------
|
72
121
|
*/
|
73
|
-
var NAME = 'modal';
|
74
|
-
var VERSION = '4.1.3';
|
75
|
-
var DATA_KEY = 'bs.modal';
|
76
|
-
var EVENT_KEY = "." + DATA_KEY;
|
77
|
-
var DATA_API_KEY = '.data-api';
|
78
|
-
var JQUERY_NO_CONFLICT = $$$1.fn[NAME];
|
79
|
-
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
80
|
-
|
81
|
-
var Default = {
|
82
|
-
backdrop: true,
|
83
|
-
keyboard: true,
|
84
|
-
focus: true,
|
85
|
-
show: true
|
86
|
-
};
|
87
|
-
var DefaultType = {
|
88
|
-
backdrop: '(boolean|string)',
|
89
|
-
keyboard: 'boolean',
|
90
|
-
focus: 'boolean',
|
91
|
-
show: 'boolean'
|
92
|
-
};
|
93
|
-
var Event = {
|
94
|
-
HIDE: "hide" + EVENT_KEY,
|
95
|
-
HIDDEN: "hidden" + EVENT_KEY,
|
96
|
-
SHOW: "show" + EVENT_KEY,
|
97
|
-
SHOWN: "shown" + EVENT_KEY,
|
98
|
-
FOCUSIN: "focusin" + EVENT_KEY,
|
99
|
-
RESIZE: "resize" + EVENT_KEY,
|
100
|
-
CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
|
101
|
-
KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
|
102
|
-
MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
|
103
|
-
MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
|
104
|
-
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
105
|
-
};
|
106
|
-
var ClassName = {
|
107
|
-
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
108
|
-
BACKDROP: 'modal-backdrop',
|
109
|
-
OPEN: 'modal-open',
|
110
|
-
FADE: 'fade',
|
111
|
-
SHOW: 'show'
|
112
|
-
};
|
113
|
-
var Selector = {
|
114
|
-
DIALOG: '.modal-dialog',
|
115
|
-
DATA_TOGGLE: '[data-toggle="modal"]',
|
116
|
-
DATA_DISMISS: '[data-dismiss="modal"]',
|
117
|
-
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
118
|
-
STICKY_CONTENT: '.sticky-top'
|
119
|
-
/**
|
120
|
-
* ------------------------------------------------------------------------
|
121
|
-
* Class Definition
|
122
|
-
* ------------------------------------------------------------------------
|
123
|
-
*/
|
124
122
|
|
123
|
+
};
|
124
|
+
|
125
|
+
var Modal =
|
126
|
+
/*#__PURE__*/
|
127
|
+
function () {
|
128
|
+
function Modal(element, config) {
|
129
|
+
this._config = this._getConfig(config);
|
130
|
+
this._element = element;
|
131
|
+
this._dialog = element.querySelector(Selector.DIALOG);
|
132
|
+
this._backdrop = null;
|
133
|
+
this._isShown = false;
|
134
|
+
this._isBodyOverflowing = false;
|
135
|
+
this._ignoreBackdropClick = false;
|
136
|
+
this._isTransitioning = false;
|
137
|
+
this._scrollbarWidth = 0;
|
138
|
+
} // Getters
|
139
|
+
|
140
|
+
|
141
|
+
var _proto = Modal.prototype;
|
142
|
+
|
143
|
+
// Public
|
144
|
+
_proto.toggle = function toggle(relatedTarget) {
|
145
|
+
return this._isShown ? this.hide() : this.show(relatedTarget);
|
125
146
|
};
|
126
147
|
|
127
|
-
|
128
|
-
|
129
|
-
function () {
|
130
|
-
function Modal(element, config) {
|
131
|
-
this._config = this._getConfig(config);
|
132
|
-
this._element = element;
|
133
|
-
this._dialog = element.querySelector(Selector.DIALOG);
|
134
|
-
this._backdrop = null;
|
135
|
-
this._isShown = false;
|
136
|
-
this._isBodyOverflowing = false;
|
137
|
-
this._ignoreBackdropClick = false;
|
138
|
-
this._scrollbarWidth = 0;
|
139
|
-
} // Getters
|
140
|
-
|
148
|
+
_proto.show = function show(relatedTarget) {
|
149
|
+
var _this = this;
|
141
150
|
|
142
|
-
|
151
|
+
if (this._isShown || this._isTransitioning) {
|
152
|
+
return;
|
153
|
+
}
|
143
154
|
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
};
|
155
|
+
if ($(this._element).hasClass(ClassName.FADE)) {
|
156
|
+
this._isTransitioning = true;
|
157
|
+
}
|
148
158
|
|
149
|
-
|
150
|
-
|
159
|
+
var showEvent = $.Event(Event.SHOW, {
|
160
|
+
relatedTarget: relatedTarget
|
161
|
+
});
|
162
|
+
$(this._element).trigger(showEvent);
|
151
163
|
|
152
|
-
|
153
|
-
|
154
|
-
|
164
|
+
if (this._isShown || showEvent.isDefaultPrevented()) {
|
165
|
+
return;
|
166
|
+
}
|
155
167
|
|
156
|
-
|
157
|
-
this._isTransitioning = true;
|
158
|
-
}
|
168
|
+
this._isShown = true;
|
159
169
|
|
160
|
-
|
161
|
-
relatedTarget: relatedTarget
|
162
|
-
});
|
163
|
-
$$$1(this._element).trigger(showEvent);
|
170
|
+
this._checkScrollbar();
|
164
171
|
|
165
|
-
|
166
|
-
return;
|
167
|
-
}
|
172
|
+
this._setScrollbar();
|
168
173
|
|
169
|
-
|
174
|
+
this._adjustDialog();
|
170
175
|
|
171
|
-
|
176
|
+
this._setEscapeEvent();
|
172
177
|
|
173
|
-
|
178
|
+
this._setResizeEvent();
|
174
179
|
|
175
|
-
|
180
|
+
$(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) {
|
181
|
+
return _this.hide(event);
|
182
|
+
});
|
183
|
+
$(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
|
184
|
+
$(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
|
185
|
+
if ($(event.target).is(_this._element)) {
|
186
|
+
_this._ignoreBackdropClick = true;
|
187
|
+
}
|
188
|
+
});
|
189
|
+
});
|
176
190
|
|
177
|
-
|
191
|
+
this._showBackdrop(function () {
|
192
|
+
return _this._showElement(relatedTarget);
|
193
|
+
});
|
194
|
+
};
|
178
195
|
|
179
|
-
|
196
|
+
_proto.hide = function hide(event) {
|
197
|
+
var _this2 = this;
|
180
198
|
|
181
|
-
|
199
|
+
if (event) {
|
200
|
+
event.preventDefault();
|
201
|
+
}
|
182
202
|
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
$$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
|
187
|
-
$$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
|
188
|
-
if ($$$1(event.target).is(_this._element)) {
|
189
|
-
_this._ignoreBackdropClick = true;
|
190
|
-
}
|
191
|
-
});
|
192
|
-
});
|
203
|
+
if (!this._isShown || this._isTransitioning) {
|
204
|
+
return;
|
205
|
+
}
|
193
206
|
|
194
|
-
|
195
|
-
|
196
|
-
});
|
197
|
-
};
|
207
|
+
var hideEvent = $.Event(Event.HIDE);
|
208
|
+
$(this._element).trigger(hideEvent);
|
198
209
|
|
199
|
-
|
200
|
-
|
210
|
+
if (!this._isShown || hideEvent.isDefaultPrevented()) {
|
211
|
+
return;
|
212
|
+
}
|
201
213
|
|
202
|
-
|
203
|
-
|
204
|
-
}
|
214
|
+
this._isShown = false;
|
215
|
+
var transition = $(this._element).hasClass(ClassName.FADE);
|
205
216
|
|
206
|
-
|
207
|
-
|
208
|
-
|
217
|
+
if (transition) {
|
218
|
+
this._isTransitioning = true;
|
219
|
+
}
|
209
220
|
|
210
|
-
|
211
|
-
$$$1(this._element).trigger(hideEvent);
|
221
|
+
this._setEscapeEvent();
|
212
222
|
|
213
|
-
|
214
|
-
return;
|
215
|
-
}
|
223
|
+
this._setResizeEvent();
|
216
224
|
|
217
|
-
|
218
|
-
|
225
|
+
$(document).off(Event.FOCUSIN);
|
226
|
+
$(this._element).removeClass(ClassName.SHOW);
|
227
|
+
$(this._element).off(Event.CLICK_DISMISS);
|
228
|
+
$(this._dialog).off(Event.MOUSEDOWN_DISMISS);
|
219
229
|
|
220
|
-
|
221
|
-
|
222
|
-
|
230
|
+
if (transition) {
|
231
|
+
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
|
232
|
+
$(this._element).one(Util.TRANSITION_END, function (event) {
|
233
|
+
return _this2._hideModal(event);
|
234
|
+
}).emulateTransitionEnd(transitionDuration);
|
235
|
+
} else {
|
236
|
+
this._hideModal();
|
237
|
+
}
|
238
|
+
};
|
223
239
|
|
224
|
-
|
240
|
+
_proto.dispose = function dispose() {
|
241
|
+
[window, this._element, this._dialog].forEach(function (htmlElement) {
|
242
|
+
return $(htmlElement).off(EVENT_KEY);
|
243
|
+
});
|
244
|
+
/**
|
245
|
+
* `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API`
|
246
|
+
* Do not move `document` in `htmlElements` array
|
247
|
+
* It will remove `Event.CLICK_DATA_API` event that should remain
|
248
|
+
*/
|
225
249
|
|
226
|
-
|
250
|
+
$(document).off(Event.FOCUSIN);
|
251
|
+
$.removeData(this._element, DATA_KEY);
|
252
|
+
this._config = null;
|
253
|
+
this._element = null;
|
254
|
+
this._dialog = null;
|
255
|
+
this._backdrop = null;
|
256
|
+
this._isShown = null;
|
257
|
+
this._isBodyOverflowing = null;
|
258
|
+
this._ignoreBackdropClick = null;
|
259
|
+
this._isTransitioning = null;
|
260
|
+
this._scrollbarWidth = null;
|
261
|
+
};
|
227
262
|
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
$$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS);
|
263
|
+
_proto.handleUpdate = function handleUpdate() {
|
264
|
+
this._adjustDialog();
|
265
|
+
}; // Private
|
232
266
|
|
233
|
-
if (transition) {
|
234
|
-
var transitionDuration = Util.getTransitionDurationFromElement(this._element);
|
235
|
-
$$$1(this._element).one(Util.TRANSITION_END, function (event) {
|
236
|
-
return _this2._hideModal(event);
|
237
|
-
}).emulateTransitionEnd(transitionDuration);
|
238
|
-
} else {
|
239
|
-
this._hideModal();
|
240
|
-
}
|
241
|
-
};
|
242
267
|
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
this._dialog = null;
|
249
|
-
this._backdrop = null;
|
250
|
-
this._isShown = null;
|
251
|
-
this._isBodyOverflowing = null;
|
252
|
-
this._ignoreBackdropClick = null;
|
253
|
-
this._scrollbarWidth = null;
|
254
|
-
};
|
268
|
+
_proto._getConfig = function _getConfig(config) {
|
269
|
+
config = _objectSpread({}, Default, config);
|
270
|
+
Util.typeCheckConfig(NAME, config, DefaultType);
|
271
|
+
return config;
|
272
|
+
};
|
255
273
|
|
256
|
-
|
257
|
-
|
258
|
-
}; // Private
|
274
|
+
_proto._showElement = function _showElement(relatedTarget) {
|
275
|
+
var _this3 = this;
|
259
276
|
|
277
|
+
var transition = $(this._element).hasClass(ClassName.FADE);
|
260
278
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
};
|
279
|
+
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
280
|
+
// Don't move modal's DOM position
|
281
|
+
document.body.appendChild(this._element);
|
282
|
+
}
|
266
283
|
|
267
|
-
|
268
|
-
var _this3 = this;
|
284
|
+
this._element.style.display = 'block';
|
269
285
|
|
270
|
-
|
286
|
+
this._element.removeAttribute('aria-hidden');
|
271
287
|
|
272
|
-
|
273
|
-
// Don't move modal's DOM position
|
274
|
-
document.body.appendChild(this._element);
|
275
|
-
}
|
288
|
+
this._element.setAttribute('aria-modal', true);
|
276
289
|
|
277
|
-
|
290
|
+
this._element.scrollTop = 0;
|
278
291
|
|
279
|
-
|
292
|
+
if (transition) {
|
293
|
+
Util.reflow(this._element);
|
294
|
+
}
|
280
295
|
|
281
|
-
|
296
|
+
$(this._element).addClass(ClassName.SHOW);
|
282
297
|
|
283
|
-
|
284
|
-
|
285
|
-
|
298
|
+
if (this._config.focus) {
|
299
|
+
this._enforceFocus();
|
300
|
+
}
|
286
301
|
|
287
|
-
|
302
|
+
var shownEvent = $.Event(Event.SHOWN, {
|
303
|
+
relatedTarget: relatedTarget
|
304
|
+
});
|
288
305
|
|
289
|
-
|
290
|
-
|
306
|
+
var transitionComplete = function transitionComplete() {
|
307
|
+
if (_this3._config.focus) {
|
308
|
+
_this3._element.focus();
|
291
309
|
}
|
292
310
|
|
293
|
-
|
294
|
-
|
295
|
-
|
311
|
+
_this3._isTransitioning = false;
|
312
|
+
$(_this3._element).trigger(shownEvent);
|
313
|
+
};
|
296
314
|
|
297
|
-
|
298
|
-
|
299
|
-
|
300
|
-
|
315
|
+
if (transition) {
|
316
|
+
var transitionDuration = Util.getTransitionDurationFromElement(this._dialog);
|
317
|
+
$(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
|
318
|
+
} else {
|
319
|
+
transitionComplete();
|
320
|
+
}
|
321
|
+
};
|
301
322
|
|
302
|
-
|
303
|
-
|
304
|
-
};
|
323
|
+
_proto._enforceFocus = function _enforceFocus() {
|
324
|
+
var _this4 = this;
|
305
325
|
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
|
310
|
-
transitionComplete();
|
326
|
+
$(document).off(Event.FOCUSIN) // Guard against infinite focus loop
|
327
|
+
.on(Event.FOCUSIN, function (event) {
|
328
|
+
if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) {
|
329
|
+
_this4._element.focus();
|
311
330
|
}
|
312
|
-
};
|
331
|
+
});
|
332
|
+
};
|
333
|
+
|
334
|
+
_proto._setEscapeEvent = function _setEscapeEvent() {
|
335
|
+
var _this5 = this;
|
313
336
|
|
314
|
-
|
315
|
-
|
337
|
+
if (this._isShown && this._config.keyboard) {
|
338
|
+
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
339
|
+
if (event.which === ESCAPE_KEYCODE) {
|
340
|
+
event.preventDefault();
|
316
341
|
|
317
|
-
|
318
|
-
.on(Event.FOCUSIN, function (event) {
|
319
|
-
if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) {
|
320
|
-
_this4._element.focus();
|
342
|
+
_this5.hide();
|
321
343
|
}
|
322
344
|
});
|
323
|
-
}
|
324
|
-
|
325
|
-
|
326
|
-
|
327
|
-
|
328
|
-
if (this._isShown && this._config.keyboard) {
|
329
|
-
$$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
330
|
-
if (event.which === ESCAPE_KEYCODE) {
|
331
|
-
event.preventDefault();
|
332
|
-
|
333
|
-
_this5.hide();
|
334
|
-
}
|
335
|
-
});
|
336
|
-
} else if (!this._isShown) {
|
337
|
-
$$$1(this._element).off(Event.KEYDOWN_DISMISS);
|
338
|
-
}
|
339
|
-
};
|
340
|
-
|
341
|
-
_proto._setResizeEvent = function _setResizeEvent() {
|
342
|
-
var _this6 = this;
|
345
|
+
} else if (!this._isShown) {
|
346
|
+
$(this._element).off(Event.KEYDOWN_DISMISS);
|
347
|
+
}
|
348
|
+
};
|
343
349
|
|
344
|
-
|
345
|
-
|
346
|
-
return _this6.handleUpdate(event);
|
347
|
-
});
|
348
|
-
} else {
|
349
|
-
$$$1(window).off(Event.RESIZE);
|
350
|
-
}
|
351
|
-
};
|
350
|
+
_proto._setResizeEvent = function _setResizeEvent() {
|
351
|
+
var _this6 = this;
|
352
352
|
|
353
|
-
|
354
|
-
|
353
|
+
if (this._isShown) {
|
354
|
+
$(window).on(Event.RESIZE, function (event) {
|
355
|
+
return _this6.handleUpdate(event);
|
356
|
+
});
|
357
|
+
} else {
|
358
|
+
$(window).off(Event.RESIZE);
|
359
|
+
}
|
360
|
+
};
|
355
361
|
|
356
|
-
|
362
|
+
_proto._hideModal = function _hideModal() {
|
363
|
+
var _this7 = this;
|
357
364
|
|
358
|
-
|
365
|
+
this._element.style.display = 'none';
|
359
366
|
|
360
|
-
|
367
|
+
this._element.setAttribute('aria-hidden', true);
|
361
368
|
|
362
|
-
|
363
|
-
$$$1(document.body).removeClass(ClassName.OPEN);
|
369
|
+
this._element.removeAttribute('aria-modal');
|
364
370
|
|
365
|
-
|
371
|
+
this._isTransitioning = false;
|
366
372
|
|
367
|
-
|
373
|
+
this._showBackdrop(function () {
|
374
|
+
$(document.body).removeClass(ClassName.OPEN);
|
368
375
|
|
369
|
-
|
370
|
-
});
|
371
|
-
};
|
376
|
+
_this7._resetAdjustments();
|
372
377
|
|
373
|
-
|
374
|
-
if (this._backdrop) {
|
375
|
-
$$$1(this._backdrop).remove();
|
376
|
-
this._backdrop = null;
|
377
|
-
}
|
378
|
-
};
|
378
|
+
_this7._resetScrollbar();
|
379
379
|
|
380
|
-
|
381
|
-
|
380
|
+
$(_this7._element).trigger(Event.HIDDEN);
|
381
|
+
});
|
382
|
+
};
|
382
383
|
|
383
|
-
|
384
|
+
_proto._removeBackdrop = function _removeBackdrop() {
|
385
|
+
if (this._backdrop) {
|
386
|
+
$(this._backdrop).remove();
|
387
|
+
this._backdrop = null;
|
388
|
+
}
|
389
|
+
};
|
384
390
|
|
385
|
-
|
386
|
-
|
387
|
-
this._backdrop.className = ClassName.BACKDROP;
|
391
|
+
_proto._showBackdrop = function _showBackdrop(callback) {
|
392
|
+
var _this8 = this;
|
388
393
|
|
389
|
-
|
390
|
-
this._backdrop.classList.add(animate);
|
391
|
-
}
|
394
|
+
var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
|
392
395
|
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
_this8._ignoreBackdropClick = false;
|
397
|
-
return;
|
398
|
-
}
|
399
|
-
|
400
|
-
if (event.target !== event.currentTarget) {
|
401
|
-
return;
|
402
|
-
}
|
403
|
-
|
404
|
-
if (_this8._config.backdrop === 'static') {
|
405
|
-
_this8._element.focus();
|
406
|
-
} else {
|
407
|
-
_this8.hide();
|
408
|
-
}
|
409
|
-
});
|
410
|
-
|
411
|
-
if (animate) {
|
412
|
-
Util.reflow(this._backdrop);
|
413
|
-
}
|
396
|
+
if (this._isShown && this._config.backdrop) {
|
397
|
+
this._backdrop = document.createElement('div');
|
398
|
+
this._backdrop.className = ClassName.BACKDROP;
|
414
399
|
|
415
|
-
|
400
|
+
if (animate) {
|
401
|
+
this._backdrop.classList.add(animate);
|
402
|
+
}
|
416
403
|
|
417
|
-
|
404
|
+
$(this._backdrop).appendTo(document.body);
|
405
|
+
$(this._element).on(Event.CLICK_DISMISS, function (event) {
|
406
|
+
if (_this8._ignoreBackdropClick) {
|
407
|
+
_this8._ignoreBackdropClick = false;
|
418
408
|
return;
|
419
409
|
}
|
420
410
|
|
421
|
-
if (
|
422
|
-
callback();
|
411
|
+
if (event.target !== event.currentTarget) {
|
423
412
|
return;
|
424
413
|
}
|
425
414
|
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
415
|
+
if (_this8._config.backdrop === 'static') {
|
416
|
+
_this8._element.focus();
|
417
|
+
} else {
|
418
|
+
_this8.hide();
|
419
|
+
}
|
420
|
+
});
|
430
421
|
|
431
|
-
|
432
|
-
|
422
|
+
if (animate) {
|
423
|
+
Util.reflow(this._backdrop);
|
424
|
+
}
|
433
425
|
|
434
|
-
|
435
|
-
callback();
|
436
|
-
}
|
437
|
-
};
|
426
|
+
$(this._backdrop).addClass(ClassName.SHOW);
|
438
427
|
|
439
|
-
|
440
|
-
|
428
|
+
if (!callback) {
|
429
|
+
return;
|
430
|
+
}
|
441
431
|
|
442
|
-
|
443
|
-
} else {
|
444
|
-
callbackRemove();
|
445
|
-
}
|
446
|
-
} else if (callback) {
|
432
|
+
if (!animate) {
|
447
433
|
callback();
|
434
|
+
return;
|
448
435
|
}
|
449
|
-
}; // ----------------------------------------------------------------------
|
450
|
-
// the following methods are used to handle overflowing modals
|
451
|
-
// todo (fat): these should probably be refactored out of modal.js
|
452
|
-
// ----------------------------------------------------------------------
|
453
436
|
|
437
|
+
var backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
|
438
|
+
$(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
|
439
|
+
} else if (!this._isShown && this._backdrop) {
|
440
|
+
$(this._backdrop).removeClass(ClassName.SHOW);
|
454
441
|
|
455
|
-
|
456
|
-
|
442
|
+
var callbackRemove = function callbackRemove() {
|
443
|
+
_this8._removeBackdrop();
|
457
444
|
|
458
|
-
|
459
|
-
|
460
|
-
|
445
|
+
if (callback) {
|
446
|
+
callback();
|
447
|
+
}
|
448
|
+
};
|
449
|
+
|
450
|
+
if ($(this._element).hasClass(ClassName.FADE)) {
|
451
|
+
var _backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop);
|
461
452
|
|
462
|
-
|
463
|
-
|
453
|
+
$(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
|
454
|
+
} else {
|
455
|
+
callbackRemove();
|
464
456
|
}
|
465
|
-
}
|
457
|
+
} else if (callback) {
|
458
|
+
callback();
|
459
|
+
}
|
460
|
+
}; // ----------------------------------------------------------------------
|
461
|
+
// the following methods are used to handle overflowing modals
|
462
|
+
// todo (fat): these should probably be refactored out of modal.js
|
463
|
+
// ----------------------------------------------------------------------
|
466
464
|
|
467
|
-
_proto._resetAdjustments = function _resetAdjustments() {
|
468
|
-
this._element.style.paddingLeft = '';
|
469
|
-
this._element.style.paddingRight = '';
|
470
|
-
};
|
471
465
|
|
472
|
-
|
473
|
-
|
474
|
-
this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
|
475
|
-
this._scrollbarWidth = this._getScrollbarWidth();
|
476
|
-
};
|
466
|
+
_proto._adjustDialog = function _adjustDialog() {
|
467
|
+
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
477
468
|
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
var calculatedPadding = $$$1(document.body).css('padding-right');
|
501
|
-
$$$1(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
|
502
|
-
}
|
503
|
-
};
|
469
|
+
if (!this._isBodyOverflowing && isModalOverflowing) {
|
470
|
+
this._element.style.paddingLeft = this._scrollbarWidth + "px";
|
471
|
+
}
|
472
|
+
|
473
|
+
if (this._isBodyOverflowing && !isModalOverflowing) {
|
474
|
+
this._element.style.paddingRight = this._scrollbarWidth + "px";
|
475
|
+
}
|
476
|
+
};
|
477
|
+
|
478
|
+
_proto._resetAdjustments = function _resetAdjustments() {
|
479
|
+
this._element.style.paddingLeft = '';
|
480
|
+
this._element.style.paddingRight = '';
|
481
|
+
};
|
482
|
+
|
483
|
+
_proto._checkScrollbar = function _checkScrollbar() {
|
484
|
+
var rect = document.body.getBoundingClientRect();
|
485
|
+
this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
|
486
|
+
this._scrollbarWidth = this._getScrollbarWidth();
|
487
|
+
};
|
488
|
+
|
489
|
+
_proto._setScrollbar = function _setScrollbar() {
|
490
|
+
var _this9 = this;
|
504
491
|
|
505
|
-
|
506
|
-
//
|
492
|
+
if (this._isBodyOverflowing) {
|
493
|
+
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
494
|
+
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
507
495
|
var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
element.style.paddingRight
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
496
|
+
var stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT)); // Adjust fixed content padding
|
497
|
+
|
498
|
+
$(fixedContent).each(function (index, element) {
|
499
|
+
var actualPadding = element.style.paddingRight;
|
500
|
+
var calculatedPadding = $(element).css('padding-right');
|
501
|
+
$(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
|
502
|
+
}); // Adjust sticky content margin
|
503
|
+
|
504
|
+
$(stickyContent).each(function (index, element) {
|
505
|
+
var actualMargin = element.style.marginRight;
|
506
|
+
var calculatedMargin = $(element).css('margin-right');
|
507
|
+
$(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
|
508
|
+
}); // Adjust body padding
|
509
|
+
|
510
|
+
var actualPadding = document.body.style.paddingRight;
|
511
|
+
var calculatedPadding = $(document.body).css('padding-right');
|
512
|
+
$(document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
|
513
|
+
}
|
522
514
|
|
523
|
-
|
524
|
-
|
525
|
-
document.body.style.paddingRight = padding ? padding : '';
|
526
|
-
};
|
515
|
+
$(document.body).addClass(ClassName.OPEN);
|
516
|
+
};
|
527
517
|
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
518
|
+
_proto._resetScrollbar = function _resetScrollbar() {
|
519
|
+
// Restore fixed content padding
|
520
|
+
var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT));
|
521
|
+
$(fixedContent).each(function (index, element) {
|
522
|
+
var padding = $(element).data('padding-right');
|
523
|
+
$(element).removeData('padding-right');
|
524
|
+
element.style.paddingRight = padding ? padding : '';
|
525
|
+
}); // Restore sticky content
|
526
|
+
|
527
|
+
var elements = [].slice.call(document.querySelectorAll("" + Selector.STICKY_CONTENT));
|
528
|
+
$(elements).each(function (index, element) {
|
529
|
+
var margin = $(element).data('margin-right');
|
530
|
+
|
531
|
+
if (typeof margin !== 'undefined') {
|
532
|
+
$(element).css('margin-right', margin).removeData('margin-right');
|
533
|
+
}
|
534
|
+
}); // Restore body padding
|
537
535
|
|
536
|
+
var padding = $(document.body).data('padding-right');
|
537
|
+
$(document.body).removeData('padding-right');
|
538
|
+
document.body.style.paddingRight = padding ? padding : '';
|
539
|
+
};
|
538
540
|
|
539
|
-
|
540
|
-
|
541
|
-
|
541
|
+
_proto._getScrollbarWidth = function _getScrollbarWidth() {
|
542
|
+
// thx d.walsh
|
543
|
+
var scrollDiv = document.createElement('div');
|
544
|
+
scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
|
545
|
+
document.body.appendChild(scrollDiv);
|
546
|
+
var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
|
547
|
+
document.body.removeChild(scrollDiv);
|
548
|
+
return scrollbarWidth;
|
549
|
+
}; // Static
|
542
550
|
|
543
|
-
var _config = _objectSpread({}, Default, $$$1(this).data(), typeof config === 'object' && config ? config : {});
|
544
551
|
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
552
|
+
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
553
|
+
return this.each(function () {
|
554
|
+
var data = $(this).data(DATA_KEY);
|
555
|
+
|
556
|
+
var _config = _objectSpread({}, Default, $(this).data(), typeof config === 'object' && config ? config : {});
|
549
557
|
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
558
|
+
if (!data) {
|
559
|
+
data = new Modal(this, _config);
|
560
|
+
$(this).data(DATA_KEY, data);
|
561
|
+
}
|
554
562
|
|
555
|
-
|
556
|
-
|
557
|
-
|
563
|
+
if (typeof config === 'string') {
|
564
|
+
if (typeof data[config] === 'undefined') {
|
565
|
+
throw new TypeError("No method named \"" + config + "\"");
|
558
566
|
}
|
559
|
-
});
|
560
|
-
};
|
561
567
|
|
562
|
-
|
563
|
-
|
564
|
-
|
565
|
-
return VERSION;
|
568
|
+
data[config](relatedTarget);
|
569
|
+
} else if (_config.show) {
|
570
|
+
data.show(relatedTarget);
|
566
571
|
}
|
567
|
-
}
|
568
|
-
|
569
|
-
get: function get() {
|
570
|
-
return Default;
|
571
|
-
}
|
572
|
-
}]);
|
572
|
+
});
|
573
|
+
};
|
573
574
|
|
574
|
-
|
575
|
-
|
576
|
-
|
577
|
-
|
578
|
-
|
579
|
-
|
580
|
-
|
575
|
+
_createClass(Modal, null, [{
|
576
|
+
key: "VERSION",
|
577
|
+
get: function get() {
|
578
|
+
return VERSION;
|
579
|
+
}
|
580
|
+
}, {
|
581
|
+
key: "Default",
|
582
|
+
get: function get() {
|
583
|
+
return Default;
|
584
|
+
}
|
585
|
+
}]);
|
586
|
+
|
587
|
+
return Modal;
|
588
|
+
}();
|
589
|
+
/**
|
590
|
+
* ------------------------------------------------------------------------
|
591
|
+
* Data Api implementation
|
592
|
+
* ------------------------------------------------------------------------
|
593
|
+
*/
|
581
594
|
|
582
595
|
|
583
|
-
|
584
|
-
|
596
|
+
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
597
|
+
var _this10 = this;
|
585
598
|
|
586
|
-
|
587
|
-
|
599
|
+
var target;
|
600
|
+
var selector = Util.getSelectorFromElement(this);
|
588
601
|
|
589
|
-
|
590
|
-
|
591
|
-
|
602
|
+
if (selector) {
|
603
|
+
target = document.querySelector(selector);
|
604
|
+
}
|
592
605
|
|
593
|
-
|
606
|
+
var config = $(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, $(target).data(), $(this).data());
|
594
607
|
|
595
|
-
|
596
|
-
|
608
|
+
if (this.tagName === 'A' || this.tagName === 'AREA') {
|
609
|
+
event.preventDefault();
|
610
|
+
}
|
611
|
+
|
612
|
+
var $target = $(target).one(Event.SHOW, function (showEvent) {
|
613
|
+
if (showEvent.isDefaultPrevented()) {
|
614
|
+
// Only register focus restorer if modal will actually get shown
|
615
|
+
return;
|
597
616
|
}
|
598
617
|
|
599
|
-
|
600
|
-
if (
|
601
|
-
|
602
|
-
return;
|
618
|
+
$target.one(Event.HIDDEN, function () {
|
619
|
+
if ($(_this10).is(':visible')) {
|
620
|
+
_this10.focus();
|
603
621
|
}
|
604
|
-
|
605
|
-
$target.one(Event.HIDDEN, function () {
|
606
|
-
if ($$$1(_this10).is(':visible')) {
|
607
|
-
_this10.focus();
|
608
|
-
}
|
609
|
-
});
|
610
622
|
});
|
611
|
-
|
612
|
-
Modal._jQueryInterface.call($$$1(target), config, this);
|
613
623
|
});
|
614
|
-
/**
|
615
|
-
* ------------------------------------------------------------------------
|
616
|
-
* jQuery
|
617
|
-
* ------------------------------------------------------------------------
|
618
|
-
*/
|
619
624
|
|
620
|
-
|
621
|
-
|
625
|
+
Modal._jQueryInterface.call($(target), config, this);
|
626
|
+
});
|
627
|
+
/**
|
628
|
+
* ------------------------------------------------------------------------
|
629
|
+
* jQuery
|
630
|
+
* ------------------------------------------------------------------------
|
631
|
+
*/
|
622
632
|
|
623
|
-
|
624
|
-
|
625
|
-
return Modal._jQueryInterface;
|
626
|
-
};
|
633
|
+
$.fn[NAME] = Modal._jQueryInterface;
|
634
|
+
$.fn[NAME].Constructor = Modal;
|
627
635
|
|
628
|
-
|
629
|
-
|
636
|
+
$.fn[NAME].noConflict = function () {
|
637
|
+
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
638
|
+
return Modal._jQueryInterface;
|
639
|
+
};
|
630
640
|
|
631
641
|
return Modal;
|
632
642
|
|