Issues (141)

resources/bootstrap/js/modal.js (1 issue)

1
/*!
2
  * Bootstrap modal.js v4.6.2 (https://getbootstrap.com/)
3
  * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
4
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
5
  */
6
(function (global, factory) {
7
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('jquery'), require('./util.js')) :
8
  typeof define === 'function' && define.amd ? define(['jquery', './util'], factory) :
9
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.Modal = factory(global.jQuery, global.Util));
10
})(this, (function ($, Util) { 'use strict';
11
12
  function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
13
14
  var $__default = /*#__PURE__*/_interopDefaultLegacy($);
15
  var Util__default = /*#__PURE__*/_interopDefaultLegacy(Util);
16
17
  function _defineProperties(target, props) {
18
    for (var i = 0; i < props.length; i++) {
19
      var descriptor = props[i];
20
      descriptor.enumerable = descriptor.enumerable || false;
21
      descriptor.configurable = true;
22
      if ("value" in descriptor) descriptor.writable = true;
23
      Object.defineProperty(target, descriptor.key, descriptor);
24
    }
25
  }
26
27
  function _createClass(Constructor, protoProps, staticProps) {
28
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
29
    if (staticProps) _defineProperties(Constructor, staticProps);
30
    Object.defineProperty(Constructor, "prototype", {
31
      writable: false
32
    });
33
    return Constructor;
34
  }
35
36
  function _extends() {
37
    _extends = Object.assign ? Object.assign.bind() : function (target) {
38
      for (var i = 1; i < arguments.length; i++) {
39
        var source = arguments[i];
40
41
        for (var key in source) {
0 ignored issues
show
A for in loop automatically includes the property of any prototype object, consider checking the key using hasOwnProperty.

When iterating over the keys of an object, this includes not only the keys of the object, but also keys contained in the prototype of that object. It is generally a best practice to check for these keys specifically:

var someObject;
for (var key in someObject) {
    if ( ! someObject.hasOwnProperty(key)) {
        continue; // Skip keys from the prototype.
    }

    doSomethingWith(key);
}
Loading history...
42
          if (Object.prototype.hasOwnProperty.call(source, key)) {
43
            target[key] = source[key];
44
          }
45
        }
46
      }
47
48
      return target;
49
    };
50
    return _extends.apply(this, arguments);
51
  }
52
53
  /**
54
   * Constants
55
   */
56
57
  var NAME = 'modal';
58
  var VERSION = '4.6.2';
59
  var DATA_KEY = 'bs.modal';
60
  var EVENT_KEY = "." + DATA_KEY;
61
  var DATA_API_KEY = '.data-api';
62
  var JQUERY_NO_CONFLICT = $__default["default"].fn[NAME];
63
  var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
64
65
  var CLASS_NAME_SCROLLABLE = 'modal-dialog-scrollable';
66
  var CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure';
67
  var CLASS_NAME_BACKDROP = 'modal-backdrop';
68
  var CLASS_NAME_OPEN = 'modal-open';
69
  var CLASS_NAME_FADE = 'fade';
70
  var CLASS_NAME_SHOW = 'show';
71
  var CLASS_NAME_STATIC = 'modal-static';
72
  var EVENT_HIDE = "hide" + EVENT_KEY;
73
  var EVENT_HIDE_PREVENTED = "hidePrevented" + EVENT_KEY;
74
  var EVENT_HIDDEN = "hidden" + EVENT_KEY;
75
  var EVENT_SHOW = "show" + EVENT_KEY;
76
  var EVENT_SHOWN = "shown" + EVENT_KEY;
77
  var EVENT_FOCUSIN = "focusin" + EVENT_KEY;
78
  var EVENT_RESIZE = "resize" + EVENT_KEY;
79
  var EVENT_CLICK_DISMISS = "click.dismiss" + EVENT_KEY;
80
  var EVENT_KEYDOWN_DISMISS = "keydown.dismiss" + EVENT_KEY;
81
  var EVENT_MOUSEUP_DISMISS = "mouseup.dismiss" + EVENT_KEY;
82
  var EVENT_MOUSEDOWN_DISMISS = "mousedown.dismiss" + EVENT_KEY;
83
  var EVENT_CLICK_DATA_API = "click" + EVENT_KEY + DATA_API_KEY;
84
  var SELECTOR_DIALOG = '.modal-dialog';
85
  var SELECTOR_MODAL_BODY = '.modal-body';
86
  var SELECTOR_DATA_TOGGLE = '[data-toggle="modal"]';
87
  var SELECTOR_DATA_DISMISS = '[data-dismiss="modal"]';
88
  var SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';
89
  var SELECTOR_STICKY_CONTENT = '.sticky-top';
90
  var Default = {
91
    backdrop: true,
92
    keyboard: true,
93
    focus: true,
94
    show: true
95
  };
96
  var DefaultType = {
97
    backdrop: '(boolean|string)',
98
    keyboard: 'boolean',
99
    focus: 'boolean',
100
    show: 'boolean'
101
  };
102
  /**
103
   * Class definition
104
   */
105
106
  var Modal = /*#__PURE__*/function () {
107
    function Modal(element, config) {
108
      this._config = this._getConfig(config);
109
      this._element = element;
110
      this._dialog = element.querySelector(SELECTOR_DIALOG);
111
      this._backdrop = null;
112
      this._isShown = false;
113
      this._isBodyOverflowing = false;
114
      this._ignoreBackdropClick = false;
115
      this._isTransitioning = false;
116
      this._scrollbarWidth = 0;
117
    } // Getters
118
119
120
    var _proto = Modal.prototype;
121
122
    // Public
123
    _proto.toggle = function toggle(relatedTarget) {
124
      return this._isShown ? this.hide() : this.show(relatedTarget);
125
    };
126
127
    _proto.show = function show(relatedTarget) {
128
      var _this = this;
129
130
      if (this._isShown || this._isTransitioning) {
131
        return;
132
      }
133
134
      var showEvent = $__default["default"].Event(EVENT_SHOW, {
135
        relatedTarget: relatedTarget
136
      });
137
      $__default["default"](this._element).trigger(showEvent);
138
139
      if (showEvent.isDefaultPrevented()) {
140
        return;
141
      }
142
143
      this._isShown = true;
144
145
      if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
146
        this._isTransitioning = true;
147
      }
148
149
      this._checkScrollbar();
150
151
      this._setScrollbar();
152
153
      this._adjustDialog();
154
155
      this._setEscapeEvent();
156
157
      this._setResizeEvent();
158
159
      $__default["default"](this._element).on(EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, function (event) {
160
        return _this.hide(event);
161
      });
162
      $__default["default"](this._dialog).on(EVENT_MOUSEDOWN_DISMISS, function () {
163
        $__default["default"](_this._element).one(EVENT_MOUSEUP_DISMISS, function (event) {
164
          if ($__default["default"](event.target).is(_this._element)) {
165
            _this._ignoreBackdropClick = true;
166
          }
167
        });
168
      });
169
170
      this._showBackdrop(function () {
171
        return _this._showElement(relatedTarget);
172
      });
173
    };
174
175
    _proto.hide = function hide(event) {
176
      var _this2 = this;
177
178
      if (event) {
179
        event.preventDefault();
180
      }
181
182
      if (!this._isShown || this._isTransitioning) {
183
        return;
184
      }
185
186
      var hideEvent = $__default["default"].Event(EVENT_HIDE);
187
      $__default["default"](this._element).trigger(hideEvent);
188
189
      if (!this._isShown || hideEvent.isDefaultPrevented()) {
190
        return;
191
      }
192
193
      this._isShown = false;
194
      var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
195
196
      if (transition) {
197
        this._isTransitioning = true;
198
      }
199
200
      this._setEscapeEvent();
201
202
      this._setResizeEvent();
203
204
      $__default["default"](document).off(EVENT_FOCUSIN);
205
      $__default["default"](this._element).removeClass(CLASS_NAME_SHOW);
206
      $__default["default"](this._element).off(EVENT_CLICK_DISMISS);
207
      $__default["default"](this._dialog).off(EVENT_MOUSEDOWN_DISMISS);
208
209
      if (transition) {
210
        var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._element);
211
        $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function (event) {
212
          return _this2._hideModal(event);
213
        }).emulateTransitionEnd(transitionDuration);
214
      } else {
215
        this._hideModal();
216
      }
217
    };
218
219
    _proto.dispose = function dispose() {
220
      [window, this._element, this._dialog].forEach(function (htmlElement) {
221
        return $__default["default"](htmlElement).off(EVENT_KEY);
222
      });
223
      /**
224
       * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`
225
       * Do not move `document` in `htmlElements` array
226
       * It will remove `EVENT_CLICK_DATA_API` event that should remain
227
       */
228
229
      $__default["default"](document).off(EVENT_FOCUSIN);
230
      $__default["default"].removeData(this._element, DATA_KEY);
231
      this._config = null;
232
      this._element = null;
233
      this._dialog = null;
234
      this._backdrop = null;
235
      this._isShown = null;
236
      this._isBodyOverflowing = null;
237
      this._ignoreBackdropClick = null;
238
      this._isTransitioning = null;
239
      this._scrollbarWidth = null;
240
    };
241
242
    _proto.handleUpdate = function handleUpdate() {
243
      this._adjustDialog();
244
    } // Private
245
    ;
246
247
    _proto._getConfig = function _getConfig(config) {
248
      config = _extends({}, Default, config);
249
      Util__default["default"].typeCheckConfig(NAME, config, DefaultType);
250
      return config;
251
    };
252
253
    _proto._triggerBackdropTransition = function _triggerBackdropTransition() {
254
      var _this3 = this;
255
256
      var hideEventPrevented = $__default["default"].Event(EVENT_HIDE_PREVENTED);
257
      $__default["default"](this._element).trigger(hideEventPrevented);
258
259
      if (hideEventPrevented.isDefaultPrevented()) {
260
        return;
261
      }
262
263
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
264
265
      if (!isModalOverflowing) {
266
        this._element.style.overflowY = 'hidden';
267
      }
268
269
      this._element.classList.add(CLASS_NAME_STATIC);
270
271
      var modalTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
272
      $__default["default"](this._element).off(Util__default["default"].TRANSITION_END);
273
      $__default["default"](this._element).one(Util__default["default"].TRANSITION_END, function () {
274
        _this3._element.classList.remove(CLASS_NAME_STATIC);
275
276
        if (!isModalOverflowing) {
277
          $__default["default"](_this3._element).one(Util__default["default"].TRANSITION_END, function () {
278
            _this3._element.style.overflowY = '';
279
          }).emulateTransitionEnd(_this3._element, modalTransitionDuration);
280
        }
281
      }).emulateTransitionEnd(modalTransitionDuration);
282
283
      this._element.focus();
284
    };
285
286
    _proto._showElement = function _showElement(relatedTarget) {
287
      var _this4 = this;
288
289
      var transition = $__default["default"](this._element).hasClass(CLASS_NAME_FADE);
290
      var modalBody = this._dialog ? this._dialog.querySelector(SELECTOR_MODAL_BODY) : null;
291
292
      if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
293
        // Don't move modal's DOM position
294
        document.body.appendChild(this._element);
295
      }
296
297
      this._element.style.display = 'block';
298
299
      this._element.removeAttribute('aria-hidden');
300
301
      this._element.setAttribute('aria-modal', true);
302
303
      this._element.setAttribute('role', 'dialog');
304
305
      if ($__default["default"](this._dialog).hasClass(CLASS_NAME_SCROLLABLE) && modalBody) {
306
        modalBody.scrollTop = 0;
307
      } else {
308
        this._element.scrollTop = 0;
309
      }
310
311
      if (transition) {
312
        Util__default["default"].reflow(this._element);
313
      }
314
315
      $__default["default"](this._element).addClass(CLASS_NAME_SHOW);
316
317
      if (this._config.focus) {
318
        this._enforceFocus();
319
      }
320
321
      var shownEvent = $__default["default"].Event(EVENT_SHOWN, {
322
        relatedTarget: relatedTarget
323
      });
324
325
      var transitionComplete = function transitionComplete() {
326
        if (_this4._config.focus) {
327
          _this4._element.focus();
328
        }
329
330
        _this4._isTransitioning = false;
331
        $__default["default"](_this4._element).trigger(shownEvent);
332
      };
333
334
      if (transition) {
335
        var transitionDuration = Util__default["default"].getTransitionDurationFromElement(this._dialog);
336
        $__default["default"](this._dialog).one(Util__default["default"].TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration);
337
      } else {
338
        transitionComplete();
339
      }
340
    };
341
342
    _proto._enforceFocus = function _enforceFocus() {
343
      var _this5 = this;
344
345
      $__default["default"](document).off(EVENT_FOCUSIN) // Guard against infinite focus loop
346
      .on(EVENT_FOCUSIN, function (event) {
347
        if (document !== event.target && _this5._element !== event.target && $__default["default"](_this5._element).has(event.target).length === 0) {
348
          _this5._element.focus();
349
        }
350
      });
351
    };
352
353
    _proto._setEscapeEvent = function _setEscapeEvent() {
354
      var _this6 = this;
355
356
      if (this._isShown) {
357
        $__default["default"](this._element).on(EVENT_KEYDOWN_DISMISS, function (event) {
358
          if (_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
359
            event.preventDefault();
360
361
            _this6.hide();
362
          } else if (!_this6._config.keyboard && event.which === ESCAPE_KEYCODE) {
363
            _this6._triggerBackdropTransition();
364
          }
365
        });
366
      } else if (!this._isShown) {
367
        $__default["default"](this._element).off(EVENT_KEYDOWN_DISMISS);
368
      }
369
    };
370
371
    _proto._setResizeEvent = function _setResizeEvent() {
372
      var _this7 = this;
373
374
      if (this._isShown) {
375
        $__default["default"](window).on(EVENT_RESIZE, function (event) {
376
          return _this7.handleUpdate(event);
377
        });
378
      } else {
379
        $__default["default"](window).off(EVENT_RESIZE);
380
      }
381
    };
382
383
    _proto._hideModal = function _hideModal() {
384
      var _this8 = this;
385
386
      this._element.style.display = 'none';
387
388
      this._element.setAttribute('aria-hidden', true);
389
390
      this._element.removeAttribute('aria-modal');
391
392
      this._element.removeAttribute('role');
393
394
      this._isTransitioning = false;
395
396
      this._showBackdrop(function () {
397
        $__default["default"](document.body).removeClass(CLASS_NAME_OPEN);
398
399
        _this8._resetAdjustments();
400
401
        _this8._resetScrollbar();
402
403
        $__default["default"](_this8._element).trigger(EVENT_HIDDEN);
404
      });
405
    };
406
407
    _proto._removeBackdrop = function _removeBackdrop() {
408
      if (this._backdrop) {
409
        $__default["default"](this._backdrop).remove();
410
        this._backdrop = null;
411
      }
412
    };
413
414
    _proto._showBackdrop = function _showBackdrop(callback) {
415
      var _this9 = this;
416
417
      var animate = $__default["default"](this._element).hasClass(CLASS_NAME_FADE) ? CLASS_NAME_FADE : '';
418
419
      if (this._isShown && this._config.backdrop) {
420
        this._backdrop = document.createElement('div');
421
        this._backdrop.className = CLASS_NAME_BACKDROP;
422
423
        if (animate) {
424
          this._backdrop.classList.add(animate);
425
        }
426
427
        $__default["default"](this._backdrop).appendTo(document.body);
428
        $__default["default"](this._element).on(EVENT_CLICK_DISMISS, function (event) {
429
          if (_this9._ignoreBackdropClick) {
430
            _this9._ignoreBackdropClick = false;
431
            return;
432
          }
433
434
          if (event.target !== event.currentTarget) {
435
            return;
436
          }
437
438
          if (_this9._config.backdrop === 'static') {
439
            _this9._triggerBackdropTransition();
440
          } else {
441
            _this9.hide();
442
          }
443
        });
444
445
        if (animate) {
446
          Util__default["default"].reflow(this._backdrop);
447
        }
448
449
        $__default["default"](this._backdrop).addClass(CLASS_NAME_SHOW);
450
451
        if (!callback) {
452
          return;
453
        }
454
455
        if (!animate) {
456
          callback();
457
          return;
458
        }
459
460
        var backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
461
        $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration);
462
      } else if (!this._isShown && this._backdrop) {
463
        $__default["default"](this._backdrop).removeClass(CLASS_NAME_SHOW);
464
465
        var callbackRemove = function callbackRemove() {
466
          _this9._removeBackdrop();
467
468
          if (callback) {
469
            callback();
470
          }
471
        };
472
473
        if ($__default["default"](this._element).hasClass(CLASS_NAME_FADE)) {
474
          var _backdropTransitionDuration = Util__default["default"].getTransitionDurationFromElement(this._backdrop);
475
476
          $__default["default"](this._backdrop).one(Util__default["default"].TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration);
477
        } else {
478
          callbackRemove();
479
        }
480
      } else if (callback) {
481
        callback();
482
      }
483
    } // ----------------------------------------------------------------------
484
    // the following methods are used to handle overflowing modals
485
    // todo (fat): these should probably be refactored out of modal.js
486
    // ----------------------------------------------------------------------
487
    ;
488
489
    _proto._adjustDialog = function _adjustDialog() {
490
      var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
491
492
      if (!this._isBodyOverflowing && isModalOverflowing) {
493
        this._element.style.paddingLeft = this._scrollbarWidth + "px";
494
      }
495
496
      if (this._isBodyOverflowing && !isModalOverflowing) {
497
        this._element.style.paddingRight = this._scrollbarWidth + "px";
498
      }
499
    };
500
501
    _proto._resetAdjustments = function _resetAdjustments() {
502
      this._element.style.paddingLeft = '';
503
      this._element.style.paddingRight = '';
504
    };
505
506
    _proto._checkScrollbar = function _checkScrollbar() {
507
      var rect = document.body.getBoundingClientRect();
508
      this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth;
509
      this._scrollbarWidth = this._getScrollbarWidth();
510
    };
511
512
    _proto._setScrollbar = function _setScrollbar() {
513
      var _this10 = this;
514
515
      if (this._isBodyOverflowing) {
516
        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set
517
        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
518
        var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
519
        var stickyContent = [].slice.call(document.querySelectorAll(SELECTOR_STICKY_CONTENT)); // Adjust fixed content padding
520
521
        $__default["default"](fixedContent).each(function (index, element) {
522
          var actualPadding = element.style.paddingRight;
523
          var calculatedPadding = $__default["default"](element).css('padding-right');
524
          $__default["default"](element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this10._scrollbarWidth + "px");
525
        }); // Adjust sticky content margin
526
527
        $__default["default"](stickyContent).each(function (index, element) {
528
          var actualMargin = element.style.marginRight;
529
          var calculatedMargin = $__default["default"](element).css('margin-right');
530
          $__default["default"](element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this10._scrollbarWidth + "px");
531
        }); // Adjust body padding
532
533
        var actualPadding = document.body.style.paddingRight;
534
        var calculatedPadding = $__default["default"](document.body).css('padding-right');
535
        $__default["default"](document.body).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
536
      }
537
538
      $__default["default"](document.body).addClass(CLASS_NAME_OPEN);
539
    };
540
541
    _proto._resetScrollbar = function _resetScrollbar() {
542
      // Restore fixed content padding
543
      var fixedContent = [].slice.call(document.querySelectorAll(SELECTOR_FIXED_CONTENT));
544
      $__default["default"](fixedContent).each(function (index, element) {
545
        var padding = $__default["default"](element).data('padding-right');
546
        $__default["default"](element).removeData('padding-right');
547
        element.style.paddingRight = padding ? padding : '';
548
      }); // Restore sticky content
549
550
      var elements = [].slice.call(document.querySelectorAll("" + SELECTOR_STICKY_CONTENT));
551
      $__default["default"](elements).each(function (index, element) {
552
        var margin = $__default["default"](element).data('margin-right');
553
554
        if (typeof margin !== 'undefined') {
555
          $__default["default"](element).css('margin-right', margin).removeData('margin-right');
556
        }
557
      }); // Restore body padding
558
559
      var padding = $__default["default"](document.body).data('padding-right');
560
      $__default["default"](document.body).removeData('padding-right');
561
      document.body.style.paddingRight = padding ? padding : '';
562
    };
563
564
    _proto._getScrollbarWidth = function _getScrollbarWidth() {
565
      // thx d.walsh
566
      var scrollDiv = document.createElement('div');
567
      scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER;
568
      document.body.appendChild(scrollDiv);
569
      var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth;
570
      document.body.removeChild(scrollDiv);
571
      return scrollbarWidth;
572
    } // Static
573
    ;
574
575
    Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
576
      return this.each(function () {
577
        var data = $__default["default"](this).data(DATA_KEY);
578
579
        var _config = _extends({}, Default, $__default["default"](this).data(), typeof config === 'object' && config ? config : {});
580
581
        if (!data) {
582
          data = new Modal(this, _config);
583
          $__default["default"](this).data(DATA_KEY, data);
584
        }
585
586
        if (typeof config === 'string') {
587
          if (typeof data[config] === 'undefined') {
588
            throw new TypeError("No method named \"" + config + "\"");
589
          }
590
591
          data[config](relatedTarget);
592
        } else if (_config.show) {
593
          data.show(relatedTarget);
594
        }
595
      });
596
    };
597
598
    _createClass(Modal, null, [{
599
      key: "VERSION",
600
      get: function get() {
601
        return VERSION;
602
      }
603
    }, {
604
      key: "Default",
605
      get: function get() {
606
        return Default;
607
      }
608
    }]);
609
610
    return Modal;
611
  }();
612
  /**
613
   * Data API implementation
614
   */
615
616
617
  $__default["default"](document).on(EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {
618
    var _this11 = this;
619
620
    var target;
621
    var selector = Util__default["default"].getSelectorFromElement(this);
622
623
    if (selector) {
624
      target = document.querySelector(selector);
625
    }
626
627
    var config = $__default["default"](target).data(DATA_KEY) ? 'toggle' : _extends({}, $__default["default"](target).data(), $__default["default"](this).data());
628
629
    if (this.tagName === 'A' || this.tagName === 'AREA') {
630
      event.preventDefault();
631
    }
632
633
    var $target = $__default["default"](target).one(EVENT_SHOW, function (showEvent) {
634
      if (showEvent.isDefaultPrevented()) {
635
        // Only register focus restorer if modal will actually get shown
636
        return;
637
      }
638
639
      $target.one(EVENT_HIDDEN, function () {
640
        if ($__default["default"](_this11).is(':visible')) {
641
          _this11.focus();
642
        }
643
      });
644
    });
645
646
    Modal._jQueryInterface.call($__default["default"](target), config, this);
647
  });
648
  /**
649
   * jQuery
650
   */
651
652
  $__default["default"].fn[NAME] = Modal._jQueryInterface;
653
  $__default["default"].fn[NAME].Constructor = Modal;
654
655
  $__default["default"].fn[NAME].noConflict = function () {
656
    $__default["default"].fn[NAME] = JQUERY_NO_CONFLICT;
657
    return Modal._jQueryInterface;
658
  };
659
660
  return Modal;
661
662
}));
663
//# sourceMappingURL=modal.js.map
664