PageSourceSearch

https://www.jynarque.com/sites/g/files/qhldwo12166/themes/site/the…/build/js/base/bootstrap/bootstrap.modal.js

js jynarque.com collected 2026-10-08 00:24:31 UTC 21,593 bytes, 620 lines download raw bytes

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

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.