bootstrap 4.0.0.alpha4 → 4.0.0.alpha5

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.

Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/assets/javascripts/bootstrap.js +1625 -1768
  4. data/assets/javascripts/bootstrap.min.js +3 -3
  5. data/assets/javascripts/bootstrap/alert.js +83 -96
  6. data/assets/javascripts/bootstrap/button.js +61 -68
  7. data/assets/javascripts/bootstrap/carousel.js +250 -270
  8. data/assets/javascripts/bootstrap/collapse.js +176 -190
  9. data/assets/javascripts/bootstrap/dropdown.js +143 -155
  10. data/assets/javascripts/bootstrap/modal.js +286 -310
  11. data/assets/javascripts/bootstrap/popover.js +61 -69
  12. data/assets/javascripts/bootstrap/scrollspy.js +145 -157
  13. data/assets/javascripts/bootstrap/tab.js +122 -132
  14. data/assets/javascripts/bootstrap/tooltip.js +313 -341
  15. data/assets/javascripts/bootstrap/util.js +9 -16
  16. data/assets/stylesheets/_bootstrap.scss +1 -1
  17. data/assets/stylesheets/bootstrap/_alert.scss +3 -3
  18. data/assets/stylesheets/bootstrap/_animation.scss +12 -3
  19. data/assets/stylesheets/bootstrap/_button-group.scss +1 -0
  20. data/assets/stylesheets/bootstrap/_card.scss +3 -1
  21. data/assets/stylesheets/bootstrap/_custom-forms.scss +7 -10
  22. data/assets/stylesheets/bootstrap/_dropdown.scss +1 -0
  23. data/assets/stylesheets/bootstrap/_forms.scss +16 -6
  24. data/assets/stylesheets/bootstrap/_images.scss +2 -11
  25. data/assets/stylesheets/bootstrap/_list-group.scss +2 -0
  26. data/assets/stylesheets/bootstrap/_mixins.scss +1 -1
  27. data/assets/stylesheets/bootstrap/_modal.scss +4 -2
  28. data/assets/stylesheets/bootstrap/_navbar.scss +72 -13
  29. data/assets/stylesheets/bootstrap/_normalize.scss +51 -53
  30. data/assets/stylesheets/bootstrap/_popover.scss +74 -50
  31. data/assets/stylesheets/bootstrap/_print.scss +8 -2
  32. data/assets/stylesheets/bootstrap/_reboot.scss +7 -12
  33. data/assets/stylesheets/bootstrap/_tables.scss +1 -1
  34. data/assets/stylesheets/bootstrap/_tooltip.scss +15 -12
  35. data/assets/stylesheets/bootstrap/_utilities.scss +3 -1
  36. data/assets/stylesheets/bootstrap/_variables.scss +56 -28
  37. data/assets/stylesheets/bootstrap/mixins/_background-variant.scss +0 -1
  38. data/assets/stylesheets/bootstrap/mixins/{_pulls.scss → _float.scss} +2 -2
  39. data/assets/stylesheets/bootstrap/mixins/_forms.scss +6 -11
  40. data/assets/stylesheets/bootstrap/mixins/_grid-framework.scss +8 -9
  41. data/assets/stylesheets/bootstrap/mixins/_grid.scss +31 -8
  42. data/assets/stylesheets/bootstrap/mixins/_hover.scss +1 -1
  43. data/assets/stylesheets/bootstrap/mixins/_image.scss +6 -4
  44. data/assets/stylesheets/bootstrap/mixins/_screen-reader.scss +1 -1
  45. data/assets/stylesheets/bootstrap/utilities/_align.scss +6 -0
  46. data/assets/stylesheets/bootstrap/utilities/_borders.scss +30 -0
  47. data/assets/stylesheets/bootstrap/utilities/_float.scss +13 -0
  48. data/assets/stylesheets/bootstrap/utilities/_spacing.scss +10 -9
  49. data/assets/stylesheets/bootstrap/utilities/_text.scss +8 -0
  50. data/lib/bootstrap/version.rb +2 -2
  51. data/templates/project/_bootstrap-variables.scss +55 -27
  52. metadata +6 -4
  53. data/assets/stylesheets/bootstrap/utilities/_pulls.scss +0 -13
@@ -1,17 +1,15 @@
1
- 'use strict';
1
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
2
2
 
3
- var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
4
-
5
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
3
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
4
 
7
5
  /**
8
6
  * --------------------------------------------------------------------------
9
- * Bootstrap (v4.0.0-alpha.4): dropdown.js
7
+ * Bootstrap (v4.0.0-alpha.5): dropdown.js
10
8
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
9
  * --------------------------------------------------------------------------
12
10
  */
13
11
 
14
- var Dropdown = (function ($) {
12
+ var Dropdown = function ($) {
15
13
 
16
14
  /**
17
15
  * ------------------------------------------------------------------------
@@ -20,7 +18,7 @@ var Dropdown = (function ($) {
20
18
  */
21
19
 
22
20
  var NAME = 'dropdown';
23
- var VERSION = '4.0.0-alpha.4';
21
+ var VERSION = '4.0.0-alpha.5';
24
22
  var DATA_KEY = 'bs.dropdown';
25
23
  var EVENT_KEY = '.' + DATA_KEY;
26
24
  var DATA_API_KEY = '.data-api';
@@ -62,7 +60,7 @@ var Dropdown = (function ($) {
62
60
  * ------------------------------------------------------------------------
63
61
  */
64
62
 
65
- var Dropdown = (function () {
63
+ var Dropdown = function () {
66
64
  function Dropdown(element) {
67
65
  _classCallCheck(this, Dropdown);
68
66
 
@@ -71,201 +69,185 @@ var Dropdown = (function ($) {
71
69
  this._addEventListeners();
72
70
  }
73
71
 
74
- /**
75
- * ------------------------------------------------------------------------
76
- * Data Api implementation
77
- * ------------------------------------------------------------------------
78
- */
79
-
80
72
  // getters
81
73
 
82
- _createClass(Dropdown, [{
83
- key: 'toggle',
74
+ // public
84
75
 
85
- // public
76
+ Dropdown.prototype.toggle = function toggle() {
77
+ if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
78
+ return false;
79
+ }
86
80
 
87
- value: function toggle() {
88
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
89
- return false;
90
- }
81
+ var parent = Dropdown._getParentFromElement(this);
82
+ var isActive = $(parent).hasClass(ClassName.OPEN);
91
83
 
92
- var parent = Dropdown._getParentFromElement(this);
93
- var isActive = $(parent).hasClass(ClassName.OPEN);
84
+ Dropdown._clearMenus();
94
85
 
95
- Dropdown._clearMenus();
86
+ if (isActive) {
87
+ return false;
88
+ }
96
89
 
97
- if (isActive) {
98
- return false;
99
- }
90
+ if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
100
91
 
101
- if ('ontouchstart' in document.documentElement && !$(parent).closest(Selector.NAVBAR_NAV).length) {
92
+ // if mobile we use a backdrop because click events don't delegate
93
+ var dropdown = document.createElement('div');
94
+ dropdown.className = ClassName.BACKDROP;
95
+ $(dropdown).insertBefore(this);
96
+ $(dropdown).on('click', Dropdown._clearMenus);
97
+ }
102
98
 
103
- // if mobile we use a backdrop because click events don't delegate
104
- var dropdown = document.createElement('div');
105
- dropdown.className = ClassName.BACKDROP;
106
- $(dropdown).insertBefore(this);
107
- $(dropdown).on('click', Dropdown._clearMenus);
108
- }
99
+ var relatedTarget = { relatedTarget: this };
100
+ var showEvent = $.Event(Event.SHOW, relatedTarget);
109
101
 
110
- var relatedTarget = { relatedTarget: this };
111
- var showEvent = $.Event(Event.SHOW, relatedTarget);
102
+ $(parent).trigger(showEvent);
112
103
 
113
- $(parent).trigger(showEvent);
104
+ if (showEvent.isDefaultPrevented()) {
105
+ return false;
106
+ }
114
107
 
115
- if (showEvent.isDefaultPrevented()) {
116
- return false;
117
- }
108
+ this.focus();
109
+ this.setAttribute('aria-expanded', 'true');
118
110
 
119
- this.focus();
120
- this.setAttribute('aria-expanded', 'true');
111
+ $(parent).toggleClass(ClassName.OPEN);
112
+ $(parent).trigger($.Event(Event.SHOWN, relatedTarget));
121
113
 
122
- $(parent).toggleClass(ClassName.OPEN);
123
- $(parent).trigger($.Event(Event.SHOWN, relatedTarget));
114
+ return false;
115
+ };
124
116
 
125
- return false;
126
- }
127
- }, {
128
- key: 'dispose',
129
- value: function dispose() {
130
- $.removeData(this._element, DATA_KEY);
131
- $(this._element).off(EVENT_KEY);
132
- this._element = null;
133
- }
117
+ Dropdown.prototype.dispose = function dispose() {
118
+ $.removeData(this._element, DATA_KEY);
119
+ $(this._element).off(EVENT_KEY);
120
+ this._element = null;
121
+ };
134
122
 
135
- // private
123
+ // private
136
124
 
137
- }, {
138
- key: '_addEventListeners',
139
- value: function _addEventListeners() {
140
- $(this._element).on(Event.CLICK, this.toggle);
141
- }
125
+ Dropdown.prototype._addEventListeners = function _addEventListeners() {
126
+ $(this._element).on(Event.CLICK, this.toggle);
127
+ };
142
128
 
143
- // static
129
+ // static
144
130
 
145
- }], [{
146
- key: '_jQueryInterface',
147
- value: function _jQueryInterface(config) {
148
- return this.each(function () {
149
- var data = $(this).data(DATA_KEY);
131
+ Dropdown._jQueryInterface = function _jQueryInterface(config) {
132
+ return this.each(function () {
133
+ var data = $(this).data(DATA_KEY);
150
134
 
151
- if (!data) {
152
- $(this).data(DATA_KEY, data = new Dropdown(this));
153
- }
154
-
155
- if (typeof config === 'string') {
156
- if (data[config] === undefined) {
157
- throw new Error('No method named "' + config + '"');
158
- }
159
- data[config].call(this);
160
- }
161
- });
162
- }
163
- }, {
164
- key: '_clearMenus',
165
- value: function _clearMenus(event) {
166
- if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {
167
- return;
135
+ if (!data) {
136
+ $(this).data(DATA_KEY, data = new Dropdown(this));
168
137
  }
169
138
 
170
- var backdrop = $(Selector.BACKDROP)[0];
171
- if (backdrop) {
172
- backdrop.parentNode.removeChild(backdrop);
139
+ if (typeof config === 'string') {
140
+ if (data[config] === undefined) {
141
+ throw new Error('No method named "' + config + '"');
142
+ }
143
+ data[config].call(this);
173
144
  }
145
+ });
146
+ };
174
147
 
175
- var toggles = $.makeArray($(Selector.DATA_TOGGLE));
148
+ Dropdown._clearMenus = function _clearMenus(event) {
149
+ if (event && event.which === RIGHT_MOUSE_BUTTON_WHICH) {
150
+ return;
151
+ }
176
152
 
177
- for (var i = 0; i < toggles.length; i++) {
178
- var _parent = Dropdown._getParentFromElement(toggles[i]);
179
- var relatedTarget = { relatedTarget: toggles[i] };
153
+ var backdrop = $(Selector.BACKDROP)[0];
154
+ if (backdrop) {
155
+ backdrop.parentNode.removeChild(backdrop);
156
+ }
180
157
 
181
- if (!$(_parent).hasClass(ClassName.OPEN)) {
182
- continue;
183
- }
158
+ var toggles = $.makeArray($(Selector.DATA_TOGGLE));
184
159
 
185
- if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(_parent, event.target)) {
186
- continue;
187
- }
160
+ for (var i = 0; i < toggles.length; i++) {
161
+ var parent = Dropdown._getParentFromElement(toggles[i]);
162
+ var relatedTarget = { relatedTarget: toggles[i] };
188
163
 
189
- var hideEvent = $.Event(Event.HIDE, relatedTarget);
190
- $(_parent).trigger(hideEvent);
191
- if (hideEvent.isDefaultPrevented()) {
192
- continue;
193
- }
164
+ if (!$(parent).hasClass(ClassName.OPEN)) {
165
+ continue;
166
+ }
194
167
 
195
- toggles[i].setAttribute('aria-expanded', 'false');
168
+ if (event && event.type === 'click' && /input|textarea/i.test(event.target.tagName) && $.contains(parent, event.target)) {
169
+ continue;
170
+ }
196
171
 
197
- $(_parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDEN, relatedTarget));
172
+ var hideEvent = $.Event(Event.HIDE, relatedTarget);
173
+ $(parent).trigger(hideEvent);
174
+ if (hideEvent.isDefaultPrevented()) {
175
+ continue;
198
176
  }
177
+
178
+ toggles[i].setAttribute('aria-expanded', 'false');
179
+
180
+ $(parent).removeClass(ClassName.OPEN).trigger($.Event(Event.HIDDEN, relatedTarget));
199
181
  }
200
- }, {
201
- key: '_getParentFromElement',
202
- value: function _getParentFromElement(element) {
203
- var parent = undefined;
204
- var selector = Util.getSelectorFromElement(element);
205
-
206
- if (selector) {
207
- parent = $(selector)[0];
208
- }
182
+ };
183
+
184
+ Dropdown._getParentFromElement = function _getParentFromElement(element) {
185
+ var parent = void 0;
186
+ var selector = Util.getSelectorFromElement(element);
209
187
 
210
- return parent || element.parentNode;
188
+ if (selector) {
189
+ parent = $(selector)[0];
211
190
  }
212
- }, {
213
- key: '_dataApiKeydownHandler',
214
- value: function _dataApiKeydownHandler(event) {
215
- if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
216
- return;
217
- }
218
191
 
219
- event.preventDefault();
220
- event.stopPropagation();
192
+ return parent || element.parentNode;
193
+ };
221
194
 
222
- if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
223
- return;
224
- }
195
+ Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
196
+ if (!/(38|40|27|32)/.test(event.which) || /input|textarea/i.test(event.target.tagName)) {
197
+ return;
198
+ }
225
199
 
226
- var parent = Dropdown._getParentFromElement(this);
227
- var isActive = $(parent).hasClass(ClassName.OPEN);
200
+ event.preventDefault();
201
+ event.stopPropagation();
228
202
 
229
- if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) {
203
+ if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
204
+ return;
205
+ }
230
206
 
231
- if (event.which === ESCAPE_KEYCODE) {
232
- var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
233
- $(toggle).trigger('focus');
234
- }
207
+ var parent = Dropdown._getParentFromElement(this);
208
+ var isActive = $(parent).hasClass(ClassName.OPEN);
235
209
 
236
- $(this).trigger('click');
237
- return;
210
+ if (!isActive && event.which !== ESCAPE_KEYCODE || isActive && event.which === ESCAPE_KEYCODE) {
211
+
212
+ if (event.which === ESCAPE_KEYCODE) {
213
+ var toggle = $(parent).find(Selector.DATA_TOGGLE)[0];
214
+ $(toggle).trigger('focus');
238
215
  }
239
216
 
240
- var items = $.makeArray($(Selector.VISIBLE_ITEMS));
217
+ $(this).trigger('click');
218
+ return;
219
+ }
241
220
 
242
- items = items.filter(function (item) {
243
- return item.offsetWidth || item.offsetHeight;
244
- });
221
+ var items = $.makeArray($(Selector.VISIBLE_ITEMS));
245
222
 
246
- if (!items.length) {
247
- return;
248
- }
223
+ items = items.filter(function (item) {
224
+ return item.offsetWidth || item.offsetHeight;
225
+ });
249
226
 
250
- var index = items.indexOf(event.target);
227
+ if (!items.length) {
228
+ return;
229
+ }
251
230
 
252
- if (event.which === ARROW_UP_KEYCODE && index > 0) {
253
- // up
254
- index--;
255
- }
231
+ var index = items.indexOf(event.target);
256
232
 
257
- if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
258
- // down
259
- index++;
260
- }
233
+ if (event.which === ARROW_UP_KEYCODE && index > 0) {
234
+ // up
235
+ index--;
236
+ }
261
237
 
262
- if (index < 0) {
263
- index = 0;
264
- }
238
+ if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) {
239
+ // down
240
+ index++;
241
+ }
265
242
 
266
- items[index].focus();
243
+ if (index < 0) {
244
+ index = 0;
267
245
  }
268
- }, {
246
+
247
+ items[index].focus();
248
+ };
249
+
250
+ _createClass(Dropdown, null, [{
269
251
  key: 'VERSION',
270
252
  get: function get() {
271
253
  return VERSION;
@@ -273,7 +255,13 @@ var Dropdown = (function ($) {
273
255
  }]);
274
256
 
275
257
  return Dropdown;
276
- })();
258
+ }();
259
+
260
+ /**
261
+ * ------------------------------------------------------------------------
262
+ * Data Api implementation
263
+ * ------------------------------------------------------------------------
264
+ */
277
265
 
278
266
  $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_MENU, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.ROLE_LISTBOX, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, Dropdown.prototype.toggle).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
279
267
  e.stopPropagation();
@@ -293,4 +281,4 @@ var Dropdown = (function ($) {
293
281
  };
294
282
 
295
283
  return Dropdown;
296
- })(jQuery);
284
+ }(jQuery);
@@ -1,17 +1,17 @@
1
- 'use strict';
1
+ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
2
2
 
3
- var _createClass = (function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ('value' in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
3
+ var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
4
4
 
5
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError('Cannot call a class as a function'); } }
5
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
6
6
 
7
7
  /**
8
8
  * --------------------------------------------------------------------------
9
- * Bootstrap (v4.0.0-alpha.4): modal.js
9
+ * Bootstrap (v4.0.0-alpha.5): modal.js
10
10
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
11
11
  * --------------------------------------------------------------------------
12
12
  */
13
13
 
14
- var Modal = (function ($) {
14
+ var Modal = function ($) {
15
15
 
16
16
  /**
17
17
  * ------------------------------------------------------------------------
@@ -20,7 +20,7 @@ var Modal = (function ($) {
20
20
  */
21
21
 
22
22
  var NAME = 'modal';
23
- var VERSION = '4.0.0-alpha.4';
23
+ var VERSION = '4.0.0-alpha.5';
24
24
  var DATA_KEY = 'bs.modal';
25
25
  var EVENT_KEY = '.' + DATA_KEY;
26
26
  var DATA_API_KEY = '.data-api';
@@ -78,7 +78,7 @@ var Modal = (function ($) {
78
78
  * ------------------------------------------------------------------------
79
79
  */
80
80
 
81
- var Modal = (function () {
81
+ var Modal = function () {
82
82
  function Modal(element, config) {
83
83
  _classCallCheck(this, Modal);
84
84
 
@@ -93,382 +93,352 @@ var Modal = (function ($) {
93
93
  this._scrollbarWidth = 0;
94
94
  }
95
95
 
96
- /**
97
- * ------------------------------------------------------------------------
98
- * Data Api implementation
99
- * ------------------------------------------------------------------------
100
- */
101
-
102
96
  // getters
103
97
 
104
- _createClass(Modal, [{
105
- key: 'toggle',
98
+ // public
106
99
 
107
- // public
100
+ Modal.prototype.toggle = function toggle(relatedTarget) {
101
+ return this._isShown ? this.hide() : this.show(relatedTarget);
102
+ };
108
103
 
109
- value: function toggle(relatedTarget) {
110
- return this._isShown ? this.hide() : this.show(relatedTarget);
111
- }
112
- }, {
113
- key: 'show',
114
- value: function show(relatedTarget) {
115
- var _this = this;
104
+ Modal.prototype.show = function show(relatedTarget) {
105
+ var _this = this;
116
106
 
117
- var showEvent = $.Event(Event.SHOW, {
118
- relatedTarget: relatedTarget
119
- });
107
+ var showEvent = $.Event(Event.SHOW, {
108
+ relatedTarget: relatedTarget
109
+ });
120
110
 
121
- $(this._element).trigger(showEvent);
111
+ $(this._element).trigger(showEvent);
122
112
 
123
- if (this._isShown || showEvent.isDefaultPrevented()) {
124
- return;
125
- }
113
+ if (this._isShown || showEvent.isDefaultPrevented()) {
114
+ return;
115
+ }
126
116
 
127
- this._isShown = true;
117
+ this._isShown = true;
128
118
 
129
- this._checkScrollbar();
130
- this._setScrollbar();
119
+ this._checkScrollbar();
120
+ this._setScrollbar();
131
121
 
132
- $(document.body).addClass(ClassName.OPEN);
122
+ $(document.body).addClass(ClassName.OPEN);
133
123
 
134
- this._setEscapeEvent();
135
- this._setResizeEvent();
124
+ this._setEscapeEvent();
125
+ this._setResizeEvent();
136
126
 
137
- $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this));
127
+ $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, $.proxy(this.hide, this));
138
128
 
139
- $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
140
- $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
141
- if ($(event.target).is(_this._element)) {
142
- _this._ignoreBackdropClick = true;
143
- }
144
- });
129
+ $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () {
130
+ $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) {
131
+ if ($(event.target).is(_this._element)) {
132
+ _this._ignoreBackdropClick = true;
133
+ }
145
134
  });
135
+ });
136
+
137
+ this._showBackdrop($.proxy(this._showElement, this, relatedTarget));
138
+ };
146
139
 
147
- this._showBackdrop($.proxy(this._showElement, this, relatedTarget));
140
+ Modal.prototype.hide = function hide(event) {
141
+ if (event) {
142
+ event.preventDefault();
148
143
  }
149
- }, {
150
- key: 'hide',
151
- value: function hide(event) {
152
- if (event) {
153
- event.preventDefault();
154
- }
155
144
 
156
- var hideEvent = $.Event(Event.HIDE);
145
+ var hideEvent = $.Event(Event.HIDE);
157
146
 
158
- $(this._element).trigger(hideEvent);
147
+ $(this._element).trigger(hideEvent);
159
148
 
160
- if (!this._isShown || hideEvent.isDefaultPrevented()) {
161
- return;
162
- }
149
+ if (!this._isShown || hideEvent.isDefaultPrevented()) {
150
+ return;
151
+ }
163
152
 
164
- this._isShown = false;
153
+ this._isShown = false;
165
154
 
166
- this._setEscapeEvent();
167
- this._setResizeEvent();
155
+ this._setEscapeEvent();
156
+ this._setResizeEvent();
168
157
 
169
- $(document).off(Event.FOCUSIN);
158
+ $(document).off(Event.FOCUSIN);
170
159
 
171
- $(this._element).removeClass(ClassName.IN);
160
+ $(this._element).removeClass(ClassName.IN);
172
161
 
173
- $(this._element).off(Event.CLICK_DISMISS);
174
- $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
162
+ $(this._element).off(Event.CLICK_DISMISS);
163
+ $(this._dialog).off(Event.MOUSEDOWN_DISMISS);
175
164
 
176
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
165
+ if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
177
166
 
178
- $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION);
179
- } else {
180
- this._hideModal();
181
- }
182
- }
183
- }, {
184
- key: 'dispose',
185
- value: function dispose() {
186
- $.removeData(this._element, DATA_KEY);
187
-
188
- $(window).off(EVENT_KEY);
189
- $(document).off(EVENT_KEY);
190
- $(this._element).off(EVENT_KEY);
191
- $(this._backdrop).off(EVENT_KEY);
192
-
193
- this._config = null;
194
- this._element = null;
195
- this._dialog = null;
196
- this._backdrop = null;
197
- this._isShown = null;
198
- this._isBodyOverflowing = null;
199
- this._ignoreBackdropClick = null;
200
- this._originalBodyPadding = null;
201
- this._scrollbarWidth = null;
167
+ $(this._element).one(Util.TRANSITION_END, $.proxy(this._hideModal, this)).emulateTransitionEnd(TRANSITION_DURATION);
168
+ } else {
169
+ this._hideModal();
202
170
  }
171
+ };
203
172
 
204
- // private
173
+ Modal.prototype.dispose = function dispose() {
174
+ $.removeData(this._element, DATA_KEY);
205
175
 
206
- }, {
207
- key: '_getConfig',
208
- value: function _getConfig(config) {
209
- config = $.extend({}, Default, config);
210
- Util.typeCheckConfig(NAME, config, DefaultType);
211
- return config;
176
+ $(window).off(EVENT_KEY);
177
+ $(document).off(EVENT_KEY);
178
+ $(this._element).off(EVENT_KEY);
179
+ $(this._backdrop).off(EVENT_KEY);
180
+
181
+ this._config = null;
182
+ this._element = null;
183
+ this._dialog = null;
184
+ this._backdrop = null;
185
+ this._isShown = null;
186
+ this._isBodyOverflowing = null;
187
+ this._ignoreBackdropClick = null;
188
+ this._originalBodyPadding = null;
189
+ this._scrollbarWidth = null;
190
+ };
191
+
192
+ // private
193
+
194
+ Modal.prototype._getConfig = function _getConfig(config) {
195
+ config = $.extend({}, Default, config);
196
+ Util.typeCheckConfig(NAME, config, DefaultType);
197
+ return config;
198
+ };
199
+
200
+ Modal.prototype._showElement = function _showElement(relatedTarget) {
201
+ var _this2 = this;
202
+
203
+ var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
204
+
205
+ if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
206
+ // don't move modals dom position
207
+ document.body.appendChild(this._element);
212
208
  }
213
- }, {
214
- key: '_showElement',
215
- value: function _showElement(relatedTarget) {
216
- var _this2 = this;
217
209
 
218
- var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
210
+ this._element.style.display = 'block';
211
+ this._element.removeAttribute('aria-hidden');
212
+ this._element.scrollTop = 0;
219
213
 
220
- if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
221
- // don't move modals dom position
222
- document.body.appendChild(this._element);
223
- }
214
+ if (transition) {
215
+ Util.reflow(this._element);
216
+ }
224
217
 
225
- this._element.style.display = 'block';
226
- this._element.removeAttribute('aria-hidden');
227
- this._element.scrollTop = 0;
218
+ $(this._element).addClass(ClassName.IN);
228
219
 
229
- if (transition) {
230
- Util.reflow(this._element);
231
- }
220
+ if (this._config.focus) {
221
+ this._enforceFocus();
222
+ }
232
223
 
233
- $(this._element).addClass(ClassName.IN);
224
+ var shownEvent = $.Event(Event.SHOWN, {
225
+ relatedTarget: relatedTarget
226
+ });
234
227
 
235
- if (this._config.focus) {
236
- this._enforceFocus();
228
+ var transitionComplete = function transitionComplete() {
229
+ if (_this2._config.focus) {
230
+ _this2._element.focus();
237
231
  }
232
+ $(_this2._element).trigger(shownEvent);
233
+ };
238
234
 
239
- var shownEvent = $.Event(Event.SHOWN, {
240
- relatedTarget: relatedTarget
241
- });
235
+ if (transition) {
236
+ $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
237
+ } else {
238
+ transitionComplete();
239
+ }
240
+ };
242
241
 
243
- var transitionComplete = function transitionComplete() {
244
- if (_this2._config.focus) {
245
- _this2._element.focus();
246
- }
247
- $(_this2._element).trigger(shownEvent);
248
- };
242
+ Modal.prototype._enforceFocus = function _enforceFocus() {
243
+ var _this3 = this;
249
244
 
250
- if (transition) {
251
- $(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
252
- } else {
253
- transitionComplete();
245
+ $(document).off(Event.FOCUSIN) // guard against infinite focus loop
246
+ .on(Event.FOCUSIN, function (event) {
247
+ if (document !== event.target && _this3._element !== event.target && !$(_this3._element).has(event.target).length) {
248
+ _this3._element.focus();
254
249
  }
255
- }
256
- }, {
257
- key: '_enforceFocus',
258
- value: function _enforceFocus() {
259
- var _this3 = this;
260
-
261
- $(document).off(Event.FOCUSIN) // guard against infinite focus loop
262
- .on(Event.FOCUSIN, function (event) {
263
- if (document !== event.target && _this3._element !== event.target && !$(_this3._element).has(event.target).length) {
264
- _this3._element.focus();
250
+ });
251
+ };
252
+
253
+ Modal.prototype._setEscapeEvent = function _setEscapeEvent() {
254
+ var _this4 = this;
255
+
256
+ if (this._isShown && this._config.keyboard) {
257
+ $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
258
+ if (event.which === ESCAPE_KEYCODE) {
259
+ _this4.hide();
265
260
  }
266
261
  });
262
+ } else if (!this._isShown) {
263
+ $(this._element).off(Event.KEYDOWN_DISMISS);
267
264
  }
268
- }, {
269
- key: '_setEscapeEvent',
270
- value: function _setEscapeEvent() {
271
- var _this4 = this;
272
-
273
- if (this._isShown && this._config.keyboard) {
274
- $(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
275
- if (event.which === ESCAPE_KEYCODE) {
276
- _this4.hide();
277
- }
278
- });
279
- } else if (!this._isShown) {
280
- $(this._element).off(Event.KEYDOWN_DISMISS);
281
- }
282
- }
283
- }, {
284
- key: '_setResizeEvent',
285
- value: function _setResizeEvent() {
286
- if (this._isShown) {
287
- $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this));
288
- } else {
289
- $(window).off(Event.RESIZE);
290
- }
291
- }
292
- }, {
293
- key: '_hideModal',
294
- value: function _hideModal() {
295
- var _this5 = this;
296
-
297
- this._element.style.display = 'none';
298
- this._element.setAttribute('aria-hidden', 'true');
299
- this._showBackdrop(function () {
300
- $(document.body).removeClass(ClassName.OPEN);
301
- _this5._resetAdjustments();
302
- _this5._resetScrollbar();
303
- $(_this5._element).trigger(Event.HIDDEN);
304
- });
265
+ };
266
+
267
+ Modal.prototype._setResizeEvent = function _setResizeEvent() {
268
+ if (this._isShown) {
269
+ $(window).on(Event.RESIZE, $.proxy(this._handleUpdate, this));
270
+ } else {
271
+ $(window).off(Event.RESIZE);
305
272
  }
306
- }, {
307
- key: '_removeBackdrop',
308
- value: function _removeBackdrop() {
309
- if (this._backdrop) {
310
- $(this._backdrop).remove();
311
- this._backdrop = null;
312
- }
273
+ };
274
+
275
+ Modal.prototype._hideModal = function _hideModal() {
276
+ var _this5 = this;
277
+
278
+ this._element.style.display = 'none';
279
+ this._element.setAttribute('aria-hidden', 'true');
280
+ this._showBackdrop(function () {
281
+ $(document.body).removeClass(ClassName.OPEN);
282
+ _this5._resetAdjustments();
283
+ _this5._resetScrollbar();
284
+ $(_this5._element).trigger(Event.HIDDEN);
285
+ });
286
+ };
287
+
288
+ Modal.prototype._removeBackdrop = function _removeBackdrop() {
289
+ if (this._backdrop) {
290
+ $(this._backdrop).remove();
291
+ this._backdrop = null;
313
292
  }
314
- }, {
315
- key: '_showBackdrop',
316
- value: function _showBackdrop(callback) {
317
- var _this6 = this;
293
+ };
318
294
 
319
- var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
295
+ Modal.prototype._showBackdrop = function _showBackdrop(callback) {
296
+ var _this6 = this;
320
297
 
321
- if (this._isShown && this._config.backdrop) {
322
- var doAnimate = Util.supportsTransitionEnd() && animate;
298
+ var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
323
299
 
324
- this._backdrop = document.createElement('div');
325
- this._backdrop.className = ClassName.BACKDROP;
300
+ if (this._isShown && this._config.backdrop) {
301
+ var doAnimate = Util.supportsTransitionEnd() && animate;
326
302
 
327
- if (animate) {
328
- $(this._backdrop).addClass(animate);
329
- }
303
+ this._backdrop = document.createElement('div');
304
+ this._backdrop.className = ClassName.BACKDROP;
330
305
 
331
- $(this._backdrop).appendTo(document.body);
332
-
333
- $(this._element).on(Event.CLICK_DISMISS, function (event) {
334
- if (_this6._ignoreBackdropClick) {
335
- _this6._ignoreBackdropClick = false;
336
- return;
337
- }
338
- if (event.target !== event.currentTarget) {
339
- return;
340
- }
341
- if (_this6._config.backdrop === 'static') {
342
- _this6._element.focus();
343
- } else {
344
- _this6.hide();
345
- }
346
- });
347
-
348
- if (doAnimate) {
349
- Util.reflow(this._backdrop);
350
- }
306
+ if (animate) {
307
+ $(this._backdrop).addClass(animate);
308
+ }
351
309
 
352
- $(this._backdrop).addClass(ClassName.IN);
310
+ $(this._backdrop).appendTo(document.body);
353
311
 
354
- if (!callback) {
312
+ $(this._element).on(Event.CLICK_DISMISS, function (event) {
313
+ if (_this6._ignoreBackdropClick) {
314
+ _this6._ignoreBackdropClick = false;
355
315
  return;
356
316
  }
357
-
358
- if (!doAnimate) {
359
- callback();
317
+ if (event.target !== event.currentTarget) {
360
318
  return;
361
319
  }
362
-
363
- $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
364
- } else if (!this._isShown && this._backdrop) {
365
- $(this._backdrop).removeClass(ClassName.IN);
366
-
367
- var callbackRemove = function callbackRemove() {
368
- _this6._removeBackdrop();
369
- if (callback) {
370
- callback();
371
- }
372
- };
373
-
374
- if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
375
- $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
320
+ if (_this6._config.backdrop === 'static') {
321
+ _this6._element.focus();
376
322
  } else {
377
- callbackRemove();
323
+ _this6.hide();
378
324
  }
379
- } else if (callback) {
380
- callback();
381
- }
382
- }
325
+ });
383
326
 
384
- // ----------------------------------------------------------------------
385
- // the following methods are used to handle overflowing modals
386
- // todo (fat): these should probably be refactored out of modal.js
387
- // ----------------------------------------------------------------------
327
+ if (doAnimate) {
328
+ Util.reflow(this._backdrop);
329
+ }
388
330
 
389
- }, {
390
- key: '_handleUpdate',
391
- value: function _handleUpdate() {
392
- this._adjustDialog();
393
- }
394
- }, {
395
- key: '_adjustDialog',
396
- value: function _adjustDialog() {
397
- var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
331
+ $(this._backdrop).addClass(ClassName.IN);
398
332
 
399
- if (!this._isBodyOverflowing && isModalOverflowing) {
400
- this._element.style.paddingLeft = this._scrollbarWidth + 'px';
333
+ if (!callback) {
334
+ return;
401
335
  }
402
336
 
403
- if (this._isBodyOverflowing && !isModalOverflowing) {
404
- this._element.style.paddingRight = this._scrollbarWidth + 'px';
337
+ if (!doAnimate) {
338
+ callback();
339
+ return;
405
340
  }
406
- }
407
- }, {
408
- key: '_resetAdjustments',
409
- value: function _resetAdjustments() {
410
- this._element.style.paddingLeft = '';
411
- this._element.style.paddingRight = '';
412
- }
413
- }, {
414
- key: '_checkScrollbar',
415
- value: function _checkScrollbar() {
416
- this._isBodyOverflowing = document.body.clientWidth < window.innerWidth;
417
- this._scrollbarWidth = this._getScrollbarWidth();
418
- }
419
- }, {
420
- key: '_setScrollbar',
421
- value: function _setScrollbar() {
422
- var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10);
423
341
 
424
- this._originalBodyPadding = document.body.style.paddingRight || '';
342
+ $(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
343
+ } else if (!this._isShown && this._backdrop) {
344
+ $(this._backdrop).removeClass(ClassName.IN);
425
345
 
426
- if (this._isBodyOverflowing) {
427
- document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px';
346
+ var callbackRemove = function callbackRemove() {
347
+ _this6._removeBackdrop();
348
+ if (callback) {
349
+ callback();
350
+ }
351
+ };
352
+
353
+ if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
354
+ $(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
355
+ } else {
356
+ callbackRemove();
428
357
  }
358
+ } else if (callback) {
359
+ callback();
429
360
  }
430
- }, {
431
- key: '_resetScrollbar',
432
- value: function _resetScrollbar() {
433
- document.body.style.paddingRight = this._originalBodyPadding;
361
+ };
362
+
363
+ // ----------------------------------------------------------------------
364
+ // the following methods are used to handle overflowing modals
365
+ // todo (fat): these should probably be refactored out of modal.js
366
+ // ----------------------------------------------------------------------
367
+
368
+ Modal.prototype._handleUpdate = function _handleUpdate() {
369
+ this._adjustDialog();
370
+ };
371
+
372
+ Modal.prototype._adjustDialog = function _adjustDialog() {
373
+ var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
374
+
375
+ if (!this._isBodyOverflowing && isModalOverflowing) {
376
+ this._element.style.paddingLeft = this._scrollbarWidth + 'px';
434
377
  }
435
- }, {
436
- key: '_getScrollbarWidth',
437
- value: function _getScrollbarWidth() {
438
- // thx d.walsh
439
- var scrollDiv = document.createElement('div');
440
- scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
441
- document.body.appendChild(scrollDiv);
442
- var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
443
- document.body.removeChild(scrollDiv);
444
- return scrollbarWidth;
378
+
379
+ if (this._isBodyOverflowing && !isModalOverflowing) {
380
+ this._element.style.paddingRight = this._scrollbarWidth + 'px';
445
381
  }
382
+ };
446
383
 
447
- // static
384
+ Modal.prototype._resetAdjustments = function _resetAdjustments() {
385
+ this._element.style.paddingLeft = '';
386
+ this._element.style.paddingRight = '';
387
+ };
448
388
 
449
- }], [{
450
- key: '_jQueryInterface',
451
- value: function _jQueryInterface(config, relatedTarget) {
452
- return this.each(function () {
453
- var data = $(this).data(DATA_KEY);
454
- var _config = $.extend({}, Modal.Default, $(this).data(), typeof config === 'object' && config);
389
+ Modal.prototype._checkScrollbar = function _checkScrollbar() {
390
+ this._isBodyOverflowing = document.body.clientWidth < window.innerWidth;
391
+ this._scrollbarWidth = this._getScrollbarWidth();
392
+ };
455
393
 
456
- if (!data) {
457
- data = new Modal(this, _config);
458
- $(this).data(DATA_KEY, data);
459
- }
394
+ Modal.prototype._setScrollbar = function _setScrollbar() {
395
+ var bodyPadding = parseInt($(Selector.FIXED_CONTENT).css('padding-right') || 0, 10);
460
396
 
461
- if (typeof config === 'string') {
462
- if (data[config] === undefined) {
463
- throw new Error('No method named "' + config + '"');
464
- }
465
- data[config](relatedTarget);
466
- } else if (_config.show) {
467
- data.show(relatedTarget);
468
- }
469
- });
397
+ this._originalBodyPadding = document.body.style.paddingRight || '';
398
+
399
+ if (this._isBodyOverflowing) {
400
+ document.body.style.paddingRight = bodyPadding + this._scrollbarWidth + 'px';
470
401
  }
471
- }, {
402
+ };
403
+
404
+ Modal.prototype._resetScrollbar = function _resetScrollbar() {
405
+ document.body.style.paddingRight = this._originalBodyPadding;
406
+ };
407
+
408
+ Modal.prototype._getScrollbarWidth = function _getScrollbarWidth() {
409
+ // thx d.walsh
410
+ var scrollDiv = document.createElement('div');
411
+ scrollDiv.className = ClassName.SCROLLBAR_MEASURER;
412
+ document.body.appendChild(scrollDiv);
413
+ var scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth;
414
+ document.body.removeChild(scrollDiv);
415
+ return scrollbarWidth;
416
+ };
417
+
418
+ // static
419
+
420
+ Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
421
+ return this.each(function () {
422
+ var data = $(this).data(DATA_KEY);
423
+ var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
424
+
425
+ if (!data) {
426
+ data = new Modal(this, _config);
427
+ $(this).data(DATA_KEY, data);
428
+ }
429
+
430
+ if (typeof config === 'string') {
431
+ if (data[config] === undefined) {
432
+ throw new Error('No method named "' + config + '"');
433
+ }
434
+ data[config](relatedTarget);
435
+ } else if (_config.show) {
436
+ data.show(relatedTarget);
437
+ }
438
+ });
439
+ };
440
+
441
+ _createClass(Modal, null, [{
472
442
  key: 'VERSION',
473
443
  get: function get() {
474
444
  return VERSION;
@@ -481,12 +451,18 @@ var Modal = (function ($) {
481
451
  }]);
482
452
 
483
453
  return Modal;
484
- })();
454
+ }();
455
+
456
+ /**
457
+ * ------------------------------------------------------------------------
458
+ * Data Api implementation
459
+ * ------------------------------------------------------------------------
460
+ */
485
461
 
486
462
  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
487
463
  var _this7 = this;
488
464
 
489
- var target = undefined;
465
+ var target = void 0;
490
466
  var selector = Util.getSelectorFromElement(this);
491
467
 
492
468
  if (selector) {
@@ -529,4 +505,4 @@ var Modal = (function ($) {
529
505
  };
530
506
 
531
507
  return Modal;
532
- })(jQuery);
508
+ }(jQuery);