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.