Pleets /
SQLWebManager
| 1 | /*! |
||
| 2 | * Bootstrap v4.0.0 (https://getbootstrap.com) |
||
| 3 | * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) |
||
| 4 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 5 | */ |
||
| 6 | View Code Duplication | (function (global, factory) { |
|
|
0 ignored issues
–
show
Duplication
introduced
by
Loading history...
|
|||
| 7 | typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('jquery'), require('popper.js')) : |
||
| 8 | typeof define === 'function' && define.amd ? define(['exports', 'jquery', 'popper.js'], factory) : |
||
|
0 ignored issues
–
show
The variable
define seems to be never declared. If this is a global, consider adding a /** global: define */ comment.
This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed. To learn more about declaring variables in Javascript, see the MDN. Loading history...
|
|||
| 9 | (factory((global.bootstrap = {}),global.jQuery,global.Popper)); |
||
| 10 | }(this, (function (exports,$,Popper) { 'use strict'; |
||
| 11 | |||
| 12 | $ = $ && $.hasOwnProperty('default') ? $['default'] : $; |
||
| 13 | Popper = Popper && Popper.hasOwnProperty('default') ? Popper['default'] : Popper; |
||
| 14 | |||
| 15 | function _defineProperties(target, props) { |
||
| 16 | for (var i = 0; i < props.length; i++) { |
||
| 17 | var descriptor = props[i]; |
||
| 18 | descriptor.enumerable = descriptor.enumerable || false; |
||
| 19 | descriptor.configurable = true; |
||
| 20 | if ("value" in descriptor) descriptor.writable = true; |
||
| 21 | Object.defineProperty(target, descriptor.key, descriptor); |
||
| 22 | } |
||
| 23 | } |
||
| 24 | |||
| 25 | function _createClass(Constructor, protoProps, staticProps) { |
||
| 26 | if (protoProps) _defineProperties(Constructor.prototype, protoProps); |
||
| 27 | if (staticProps) _defineProperties(Constructor, staticProps); |
||
| 28 | return Constructor; |
||
| 29 | } |
||
| 30 | |||
| 31 | function _extends() { |
||
| 32 | _extends = Object.assign || function (target) { |
||
|
0 ignored issues
–
show
|
|||
| 33 | for (var i = 1; i < arguments.length; i++) { |
||
| 34 | var source = arguments[i]; |
||
| 35 | |||
| 36 | 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...
|
|||
| 37 | if (Object.prototype.hasOwnProperty.call(source, key)) { |
||
| 38 | target[key] = source[key]; |
||
| 39 | } |
||
| 40 | } |
||
| 41 | } |
||
| 42 | |||
| 43 | return target; |
||
| 44 | }; |
||
| 45 | |||
| 46 | return _extends.apply(this, arguments); |
||
| 47 | } |
||
| 48 | |||
| 49 | function _inheritsLoose(subClass, superClass) { |
||
| 50 | subClass.prototype = Object.create(superClass.prototype); |
||
| 51 | subClass.prototype.constructor = subClass; |
||
| 52 | subClass.__proto__ = superClass; |
||
| 53 | } |
||
| 54 | |||
| 55 | /** |
||
| 56 | * -------------------------------------------------------------------------- |
||
| 57 | * Bootstrap (v4.0.0): util.js |
||
| 58 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 59 | * -------------------------------------------------------------------------- |
||
| 60 | */ |
||
| 61 | |||
| 62 | var Util = function ($$$1) { |
||
| 63 | /** |
||
| 64 | * ------------------------------------------------------------------------ |
||
| 65 | * Private TransitionEnd Helpers |
||
| 66 | * ------------------------------------------------------------------------ |
||
| 67 | */ |
||
| 68 | var transition = false; |
||
| 69 | var MAX_UID = 1000000; // Shoutout AngusCroll (https://goo.gl/pxwQGp) |
||
| 70 | |||
| 71 | function toType(obj) { |
||
| 72 | return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); |
||
| 73 | } |
||
| 74 | |||
| 75 | function getSpecialTransitionEndEvent() { |
||
| 76 | return { |
||
| 77 | bindType: transition.end, |
||
| 78 | delegateType: transition.end, |
||
| 79 | handle: function handle(event) { |
||
| 80 | if ($$$1(event.target).is(this)) { |
||
| 81 | return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params |
||
| 82 | } |
||
| 83 | |||
| 84 | return undefined; // eslint-disable-line no-undefined |
||
| 85 | } |
||
| 86 | }; |
||
| 87 | } |
||
| 88 | |||
| 89 | function transitionEndTest() { |
||
| 90 | if (typeof window !== 'undefined' && window.QUnit) { |
||
| 91 | return false; |
||
| 92 | } |
||
| 93 | |||
| 94 | return { |
||
| 95 | end: 'transitionend' |
||
| 96 | }; |
||
| 97 | } |
||
| 98 | |||
| 99 | function transitionEndEmulator(duration) { |
||
| 100 | var _this = this; |
||
| 101 | |||
| 102 | var called = false; |
||
| 103 | $$$1(this).one(Util.TRANSITION_END, function () { |
||
| 104 | called = true; |
||
| 105 | }); |
||
| 106 | setTimeout(function () { |
||
| 107 | if (!called) { |
||
| 108 | Util.triggerTransitionEnd(_this); |
||
| 109 | } |
||
| 110 | }, duration); |
||
| 111 | return this; |
||
| 112 | } |
||
| 113 | |||
| 114 | function setTransitionEndSupport() { |
||
| 115 | transition = transitionEndTest(); |
||
| 116 | $$$1.fn.emulateTransitionEnd = transitionEndEmulator; |
||
| 117 | |||
| 118 | if (Util.supportsTransitionEnd()) { |
||
| 119 | $$$1.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); |
||
| 120 | } |
||
| 121 | } |
||
| 122 | |||
| 123 | function escapeId(selector) { |
||
| 124 | // We escape IDs in case of special selectors (selector = '#myId:something') |
||
| 125 | // $.escapeSelector does not exist in jQuery < 3 |
||
| 126 | selector = typeof $$$1.escapeSelector === 'function' ? $$$1.escapeSelector(selector).substr(1) : selector.replace(/(:|\.|\[|\]|,|=|@)/g, '\\$1'); |
||
| 127 | return selector; |
||
| 128 | } |
||
| 129 | /** |
||
| 130 | * -------------------------------------------------------------------------- |
||
| 131 | * Public Util Api |
||
| 132 | * -------------------------------------------------------------------------- |
||
| 133 | */ |
||
| 134 | |||
| 135 | |||
| 136 | var Util = { |
||
| 137 | TRANSITION_END: 'bsTransitionEnd', |
||
| 138 | getUID: function getUID(prefix) { |
||
| 139 | do { |
||
| 140 | // eslint-disable-next-line no-bitwise |
||
| 141 | prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here |
||
| 142 | } while (document.getElementById(prefix)); |
||
| 143 | |||
| 144 | return prefix; |
||
| 145 | }, |
||
| 146 | getSelectorFromElement: function getSelectorFromElement(element) { |
||
| 147 | var selector = element.getAttribute('data-target'); |
||
| 148 | |||
| 149 | if (!selector || selector === '#') { |
||
| 150 | selector = element.getAttribute('href') || ''; |
||
| 151 | } // If it's an ID |
||
| 152 | |||
| 153 | |||
| 154 | if (selector.charAt(0) === '#') { |
||
| 155 | selector = escapeId(selector); |
||
| 156 | } |
||
| 157 | |||
| 158 | try { |
||
| 159 | var $selector = $$$1(document).find(selector); |
||
| 160 | return $selector.length > 0 ? selector : null; |
||
| 161 | } catch (err) { |
||
| 162 | return null; |
||
| 163 | } |
||
| 164 | }, |
||
| 165 | reflow: function reflow(element) { |
||
| 166 | return element.offsetHeight; |
||
| 167 | }, |
||
| 168 | triggerTransitionEnd: function triggerTransitionEnd(element) { |
||
| 169 | $$$1(element).trigger(transition.end); |
||
| 170 | }, |
||
| 171 | supportsTransitionEnd: function supportsTransitionEnd() { |
||
| 172 | return Boolean(transition); |
||
| 173 | }, |
||
| 174 | isElement: function isElement(obj) { |
||
| 175 | return (obj[0] || obj).nodeType; |
||
| 176 | }, |
||
| 177 | typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { |
||
| 178 | for (var property in configTypes) { |
||
|
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...
|
|||
| 179 | if (Object.prototype.hasOwnProperty.call(configTypes, property)) { |
||
| 180 | var expectedTypes = configTypes[property]; |
||
| 181 | var value = config[property]; |
||
| 182 | var valueType = value && Util.isElement(value) ? 'element' : toType(value); |
||
| 183 | |||
| 184 | if (!new RegExp(expectedTypes).test(valueType)) { |
||
| 185 | throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\".")); |
||
| 186 | } |
||
| 187 | } |
||
| 188 | } |
||
| 189 | } |
||
| 190 | }; |
||
| 191 | setTransitionEndSupport(); |
||
| 192 | return Util; |
||
| 193 | }($); |
||
| 194 | |||
| 195 | /** |
||
| 196 | * -------------------------------------------------------------------------- |
||
| 197 | * Bootstrap (v4.0.0): alert.js |
||
| 198 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 199 | * -------------------------------------------------------------------------- |
||
| 200 | */ |
||
| 201 | |||
| 202 | var Alert = function ($$$1) { |
||
| 203 | /** |
||
| 204 | * ------------------------------------------------------------------------ |
||
| 205 | * Constants |
||
| 206 | * ------------------------------------------------------------------------ |
||
| 207 | */ |
||
| 208 | var NAME = 'alert'; |
||
| 209 | var VERSION = '4.0.0'; |
||
| 210 | var DATA_KEY = 'bs.alert'; |
||
| 211 | var EVENT_KEY = "." + DATA_KEY; |
||
| 212 | var DATA_API_KEY = '.data-api'; |
||
| 213 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 214 | var TRANSITION_DURATION = 150; |
||
| 215 | var Selector = { |
||
| 216 | DISMISS: '[data-dismiss="alert"]' |
||
| 217 | }; |
||
| 218 | var Event = { |
||
| 219 | CLOSE: "close" + EVENT_KEY, |
||
| 220 | CLOSED: "closed" + EVENT_KEY, |
||
| 221 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY |
||
| 222 | }; |
||
| 223 | var ClassName = { |
||
| 224 | ALERT: 'alert', |
||
| 225 | FADE: 'fade', |
||
| 226 | SHOW: 'show' |
||
| 227 | /** |
||
| 228 | * ------------------------------------------------------------------------ |
||
| 229 | * Class Definition |
||
| 230 | * ------------------------------------------------------------------------ |
||
| 231 | */ |
||
| 232 | |||
| 233 | }; |
||
| 234 | |||
| 235 | var Alert = |
||
| 236 | /*#__PURE__*/ |
||
| 237 | function () { |
||
| 238 | function Alert(element) { |
||
| 239 | this._element = element; |
||
| 240 | } // Getters |
||
| 241 | |||
| 242 | |||
| 243 | var _proto = Alert.prototype; |
||
| 244 | |||
| 245 | // Public |
||
| 246 | _proto.close = function close(element) { |
||
| 247 | element = element || this._element; |
||
| 248 | |||
| 249 | var rootElement = this._getRootElement(element); |
||
| 250 | |||
| 251 | var customEvent = this._triggerCloseEvent(rootElement); |
||
| 252 | |||
| 253 | if (customEvent.isDefaultPrevented()) { |
||
| 254 | return; |
||
| 255 | } |
||
| 256 | |||
| 257 | this._removeElement(rootElement); |
||
| 258 | }; |
||
| 259 | |||
| 260 | _proto.dispose = function dispose() { |
||
| 261 | $$$1.removeData(this._element, DATA_KEY); |
||
| 262 | this._element = null; |
||
| 263 | }; // Private |
||
| 264 | |||
| 265 | |||
| 266 | _proto._getRootElement = function _getRootElement(element) { |
||
| 267 | var selector = Util.getSelectorFromElement(element); |
||
| 268 | var parent = false; |
||
| 269 | |||
| 270 | if (selector) { |
||
| 271 | parent = $$$1(selector)[0]; |
||
| 272 | } |
||
| 273 | |||
| 274 | if (!parent) { |
||
| 275 | parent = $$$1(element).closest("." + ClassName.ALERT)[0]; |
||
| 276 | } |
||
| 277 | |||
| 278 | return parent; |
||
| 279 | }; |
||
| 280 | |||
| 281 | _proto._triggerCloseEvent = function _triggerCloseEvent(element) { |
||
| 282 | var closeEvent = $$$1.Event(Event.CLOSE); |
||
| 283 | $$$1(element).trigger(closeEvent); |
||
| 284 | return closeEvent; |
||
| 285 | }; |
||
| 286 | |||
| 287 | _proto._removeElement = function _removeElement(element) { |
||
| 288 | var _this = this; |
||
| 289 | |||
| 290 | $$$1(element).removeClass(ClassName.SHOW); |
||
| 291 | |||
| 292 | if (!Util.supportsTransitionEnd() || !$$$1(element).hasClass(ClassName.FADE)) { |
||
| 293 | this._destroyElement(element); |
||
| 294 | |||
| 295 | return; |
||
| 296 | } |
||
| 297 | |||
| 298 | $$$1(element).one(Util.TRANSITION_END, function (event) { |
||
| 299 | return _this._destroyElement(element, event); |
||
| 300 | }).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 301 | }; |
||
| 302 | |||
| 303 | _proto._destroyElement = function _destroyElement(element) { |
||
| 304 | $$$1(element).detach().trigger(Event.CLOSED).remove(); |
||
| 305 | }; // Static |
||
| 306 | |||
| 307 | |||
| 308 | Alert._jQueryInterface = function _jQueryInterface(config) { |
||
| 309 | return this.each(function () { |
||
| 310 | var $element = $$$1(this); |
||
| 311 | var data = $element.data(DATA_KEY); |
||
| 312 | |||
| 313 | if (!data) { |
||
| 314 | data = new Alert(this); |
||
| 315 | $element.data(DATA_KEY, data); |
||
| 316 | } |
||
| 317 | |||
| 318 | if (config === 'close') { |
||
| 319 | data[config](this); |
||
| 320 | } |
||
| 321 | }); |
||
| 322 | }; |
||
| 323 | |||
| 324 | Alert._handleDismiss = function _handleDismiss(alertInstance) { |
||
| 325 | return function (event) { |
||
| 326 | if (event) { |
||
| 327 | event.preventDefault(); |
||
| 328 | } |
||
| 329 | |||
| 330 | alertInstance.close(this); |
||
| 331 | }; |
||
| 332 | }; |
||
| 333 | |||
| 334 | _createClass(Alert, null, [{ |
||
| 335 | key: "VERSION", |
||
| 336 | get: function get() { |
||
| 337 | return VERSION; |
||
| 338 | } |
||
| 339 | }]); |
||
| 340 | return Alert; |
||
| 341 | }(); |
||
| 342 | /** |
||
| 343 | * ------------------------------------------------------------------------ |
||
| 344 | * Data Api implementation |
||
| 345 | * ------------------------------------------------------------------------ |
||
| 346 | */ |
||
| 347 | |||
| 348 | |||
| 349 | $$$1(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); |
||
| 350 | /** |
||
| 351 | * ------------------------------------------------------------------------ |
||
| 352 | * jQuery |
||
| 353 | * ------------------------------------------------------------------------ |
||
| 354 | */ |
||
| 355 | |||
| 356 | $$$1.fn[NAME] = Alert._jQueryInterface; |
||
| 357 | $$$1.fn[NAME].Constructor = Alert; |
||
| 358 | |||
| 359 | $$$1.fn[NAME].noConflict = function () { |
||
| 360 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 361 | return Alert._jQueryInterface; |
||
| 362 | }; |
||
| 363 | |||
| 364 | return Alert; |
||
| 365 | }($); |
||
| 366 | |||
| 367 | /** |
||
| 368 | * -------------------------------------------------------------------------- |
||
| 369 | * Bootstrap (v4.0.0): button.js |
||
| 370 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 371 | * -------------------------------------------------------------------------- |
||
| 372 | */ |
||
| 373 | |||
| 374 | var Button = function ($$$1) { |
||
| 375 | /** |
||
| 376 | * ------------------------------------------------------------------------ |
||
| 377 | * Constants |
||
| 378 | * ------------------------------------------------------------------------ |
||
| 379 | */ |
||
| 380 | var NAME = 'button'; |
||
| 381 | var VERSION = '4.0.0'; |
||
| 382 | var DATA_KEY = 'bs.button'; |
||
| 383 | var EVENT_KEY = "." + DATA_KEY; |
||
| 384 | var DATA_API_KEY = '.data-api'; |
||
| 385 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 386 | var ClassName = { |
||
| 387 | ACTIVE: 'active', |
||
| 388 | BUTTON: 'btn', |
||
| 389 | FOCUS: 'focus' |
||
| 390 | }; |
||
| 391 | var Selector = { |
||
| 392 | DATA_TOGGLE_CARROT: '[data-toggle^="button"]', |
||
| 393 | DATA_TOGGLE: '[data-toggle="buttons"]', |
||
| 394 | INPUT: 'input', |
||
| 395 | ACTIVE: '.active', |
||
| 396 | BUTTON: '.btn' |
||
| 397 | }; |
||
| 398 | var Event = { |
||
| 399 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, |
||
| 400 | FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY) |
||
| 401 | /** |
||
| 402 | * ------------------------------------------------------------------------ |
||
| 403 | * Class Definition |
||
| 404 | * ------------------------------------------------------------------------ |
||
| 405 | */ |
||
| 406 | |||
| 407 | }; |
||
| 408 | |||
| 409 | var Button = |
||
| 410 | /*#__PURE__*/ |
||
| 411 | function () { |
||
| 412 | function Button(element) { |
||
| 413 | this._element = element; |
||
| 414 | } // Getters |
||
| 415 | |||
| 416 | |||
| 417 | var _proto = Button.prototype; |
||
| 418 | |||
| 419 | // Public |
||
| 420 | _proto.toggle = function toggle() { |
||
| 421 | var triggerChangeEvent = true; |
||
| 422 | var addAriaPressed = true; |
||
| 423 | var rootElement = $$$1(this._element).closest(Selector.DATA_TOGGLE)[0]; |
||
| 424 | |||
| 425 | if (rootElement) { |
||
| 426 | var input = $$$1(this._element).find(Selector.INPUT)[0]; |
||
| 427 | |||
| 428 | if (input) { |
||
| 429 | if (input.type === 'radio') { |
||
| 430 | if (input.checked && $$$1(this._element).hasClass(ClassName.ACTIVE)) { |
||
| 431 | triggerChangeEvent = false; |
||
| 432 | } else { |
||
| 433 | var activeElement = $$$1(rootElement).find(Selector.ACTIVE)[0]; |
||
| 434 | |||
| 435 | if (activeElement) { |
||
| 436 | $$$1(activeElement).removeClass(ClassName.ACTIVE); |
||
| 437 | } |
||
| 438 | } |
||
| 439 | } |
||
| 440 | |||
| 441 | if (triggerChangeEvent) { |
||
| 442 | if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { |
||
| 443 | return; |
||
| 444 | } |
||
| 445 | |||
| 446 | input.checked = !$$$1(this._element).hasClass(ClassName.ACTIVE); |
||
| 447 | $$$1(input).trigger('change'); |
||
| 448 | } |
||
| 449 | |||
| 450 | input.focus(); |
||
| 451 | addAriaPressed = false; |
||
| 452 | } |
||
| 453 | } |
||
| 454 | |||
| 455 | if (addAriaPressed) { |
||
| 456 | this._element.setAttribute('aria-pressed', !$$$1(this._element).hasClass(ClassName.ACTIVE)); |
||
| 457 | } |
||
| 458 | |||
| 459 | if (triggerChangeEvent) { |
||
| 460 | $$$1(this._element).toggleClass(ClassName.ACTIVE); |
||
| 461 | } |
||
| 462 | }; |
||
| 463 | |||
| 464 | _proto.dispose = function dispose() { |
||
| 465 | $$$1.removeData(this._element, DATA_KEY); |
||
| 466 | this._element = null; |
||
| 467 | }; // Static |
||
| 468 | |||
| 469 | |||
| 470 | Button._jQueryInterface = function _jQueryInterface(config) { |
||
| 471 | return this.each(function () { |
||
| 472 | var data = $$$1(this).data(DATA_KEY); |
||
| 473 | |||
| 474 | if (!data) { |
||
| 475 | data = new Button(this); |
||
| 476 | $$$1(this).data(DATA_KEY, data); |
||
| 477 | } |
||
| 478 | |||
| 479 | if (config === 'toggle') { |
||
| 480 | data[config](); |
||
| 481 | } |
||
| 482 | }); |
||
| 483 | }; |
||
| 484 | |||
| 485 | _createClass(Button, null, [{ |
||
| 486 | key: "VERSION", |
||
| 487 | get: function get() { |
||
| 488 | return VERSION; |
||
| 489 | } |
||
| 490 | }]); |
||
| 491 | return Button; |
||
| 492 | }(); |
||
| 493 | /** |
||
| 494 | * ------------------------------------------------------------------------ |
||
| 495 | * Data Api implementation |
||
| 496 | * ------------------------------------------------------------------------ |
||
| 497 | */ |
||
| 498 | |||
| 499 | |||
| 500 | $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { |
||
| 501 | event.preventDefault(); |
||
| 502 | var button = event.target; |
||
| 503 | |||
| 504 | if (!$$$1(button).hasClass(ClassName.BUTTON)) { |
||
| 505 | button = $$$1(button).closest(Selector.BUTTON); |
||
| 506 | } |
||
| 507 | |||
| 508 | Button._jQueryInterface.call($$$1(button), 'toggle'); |
||
| 509 | }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { |
||
| 510 | var button = $$$1(event.target).closest(Selector.BUTTON)[0]; |
||
| 511 | $$$1(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); |
||
| 512 | }); |
||
| 513 | /** |
||
| 514 | * ------------------------------------------------------------------------ |
||
| 515 | * jQuery |
||
| 516 | * ------------------------------------------------------------------------ |
||
| 517 | */ |
||
| 518 | |||
| 519 | $$$1.fn[NAME] = Button._jQueryInterface; |
||
| 520 | $$$1.fn[NAME].Constructor = Button; |
||
| 521 | |||
| 522 | $$$1.fn[NAME].noConflict = function () { |
||
| 523 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 524 | return Button._jQueryInterface; |
||
| 525 | }; |
||
| 526 | |||
| 527 | return Button; |
||
| 528 | }($); |
||
| 529 | |||
| 530 | /** |
||
| 531 | * -------------------------------------------------------------------------- |
||
| 532 | * Bootstrap (v4.0.0): carousel.js |
||
| 533 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 534 | * -------------------------------------------------------------------------- |
||
| 535 | */ |
||
| 536 | |||
| 537 | var Carousel = function ($$$1) { |
||
| 538 | /** |
||
| 539 | * ------------------------------------------------------------------------ |
||
| 540 | * Constants |
||
| 541 | * ------------------------------------------------------------------------ |
||
| 542 | */ |
||
| 543 | var NAME = 'carousel'; |
||
| 544 | var VERSION = '4.0.0'; |
||
| 545 | var DATA_KEY = 'bs.carousel'; |
||
| 546 | var EVENT_KEY = "." + DATA_KEY; |
||
| 547 | var DATA_API_KEY = '.data-api'; |
||
| 548 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 549 | var TRANSITION_DURATION = 600; |
||
| 550 | var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key |
||
| 551 | |||
| 552 | var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key |
||
| 553 | |||
| 554 | var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch |
||
| 555 | |||
| 556 | var Default = { |
||
| 557 | interval: 5000, |
||
| 558 | keyboard: true, |
||
| 559 | slide: false, |
||
| 560 | pause: 'hover', |
||
| 561 | wrap: true |
||
| 562 | }; |
||
| 563 | var DefaultType = { |
||
| 564 | interval: '(number|boolean)', |
||
| 565 | keyboard: 'boolean', |
||
| 566 | slide: '(boolean|string)', |
||
| 567 | pause: '(string|boolean)', |
||
| 568 | wrap: 'boolean' |
||
| 569 | }; |
||
| 570 | var Direction = { |
||
| 571 | NEXT: 'next', |
||
| 572 | PREV: 'prev', |
||
| 573 | LEFT: 'left', |
||
| 574 | RIGHT: 'right' |
||
| 575 | }; |
||
| 576 | var Event = { |
||
| 577 | SLIDE: "slide" + EVENT_KEY, |
||
| 578 | SLID: "slid" + EVENT_KEY, |
||
| 579 | KEYDOWN: "keydown" + EVENT_KEY, |
||
| 580 | MOUSEENTER: "mouseenter" + EVENT_KEY, |
||
| 581 | MOUSELEAVE: "mouseleave" + EVENT_KEY, |
||
| 582 | TOUCHEND: "touchend" + EVENT_KEY, |
||
| 583 | LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY, |
||
| 584 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY |
||
| 585 | }; |
||
| 586 | var ClassName = { |
||
| 587 | CAROUSEL: 'carousel', |
||
| 588 | ACTIVE: 'active', |
||
| 589 | SLIDE: 'slide', |
||
| 590 | RIGHT: 'carousel-item-right', |
||
| 591 | LEFT: 'carousel-item-left', |
||
| 592 | NEXT: 'carousel-item-next', |
||
| 593 | PREV: 'carousel-item-prev', |
||
| 594 | ITEM: 'carousel-item' |
||
| 595 | }; |
||
| 596 | var Selector = { |
||
| 597 | ACTIVE: '.active', |
||
| 598 | ACTIVE_ITEM: '.active.carousel-item', |
||
| 599 | ITEM: '.carousel-item', |
||
| 600 | NEXT_PREV: '.carousel-item-next, .carousel-item-prev', |
||
| 601 | INDICATORS: '.carousel-indicators', |
||
| 602 | DATA_SLIDE: '[data-slide], [data-slide-to]', |
||
| 603 | DATA_RIDE: '[data-ride="carousel"]' |
||
| 604 | /** |
||
| 605 | * ------------------------------------------------------------------------ |
||
| 606 | * Class Definition |
||
| 607 | * ------------------------------------------------------------------------ |
||
| 608 | */ |
||
| 609 | |||
| 610 | }; |
||
| 611 | |||
| 612 | var Carousel = |
||
| 613 | /*#__PURE__*/ |
||
| 614 | function () { |
||
| 615 | function Carousel(element, config) { |
||
| 616 | this._items = null; |
||
| 617 | this._interval = null; |
||
| 618 | this._activeElement = null; |
||
| 619 | this._isPaused = false; |
||
| 620 | this._isSliding = false; |
||
| 621 | this.touchTimeout = null; |
||
| 622 | this._config = this._getConfig(config); |
||
| 623 | this._element = $$$1(element)[0]; |
||
| 624 | this._indicatorsElement = $$$1(this._element).find(Selector.INDICATORS)[0]; |
||
| 625 | |||
| 626 | this._addEventListeners(); |
||
| 627 | } // Getters |
||
| 628 | |||
| 629 | |||
| 630 | var _proto = Carousel.prototype; |
||
| 631 | |||
| 632 | // Public |
||
| 633 | _proto.next = function next() { |
||
| 634 | if (!this._isSliding) { |
||
| 635 | this._slide(Direction.NEXT); |
||
| 636 | } |
||
| 637 | }; |
||
| 638 | |||
| 639 | _proto.nextWhenVisible = function nextWhenVisible() { |
||
| 640 | // Don't call next when the page isn't visible |
||
| 641 | // or the carousel or its parent isn't visible |
||
| 642 | if (!document.hidden && $$$1(this._element).is(':visible') && $$$1(this._element).css('visibility') !== 'hidden') { |
||
| 643 | this.next(); |
||
| 644 | } |
||
| 645 | }; |
||
| 646 | |||
| 647 | _proto.prev = function prev() { |
||
| 648 | if (!this._isSliding) { |
||
| 649 | this._slide(Direction.PREV); |
||
| 650 | } |
||
| 651 | }; |
||
| 652 | |||
| 653 | _proto.pause = function pause(event) { |
||
| 654 | if (!event) { |
||
| 655 | this._isPaused = true; |
||
| 656 | } |
||
| 657 | |||
| 658 | if ($$$1(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) { |
||
| 659 | Util.triggerTransitionEnd(this._element); |
||
| 660 | this.cycle(true); |
||
| 661 | } |
||
| 662 | |||
| 663 | clearInterval(this._interval); |
||
| 664 | this._interval = null; |
||
| 665 | }; |
||
| 666 | |||
| 667 | _proto.cycle = function cycle(event) { |
||
| 668 | if (!event) { |
||
| 669 | this._isPaused = false; |
||
| 670 | } |
||
| 671 | |||
| 672 | if (this._interval) { |
||
| 673 | clearInterval(this._interval); |
||
| 674 | this._interval = null; |
||
| 675 | } |
||
| 676 | |||
| 677 | if (this._config.interval && !this._isPaused) { |
||
| 678 | this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); |
||
| 679 | } |
||
| 680 | }; |
||
| 681 | |||
| 682 | _proto.to = function to(index) { |
||
| 683 | var _this = this; |
||
| 684 | |||
| 685 | this._activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; |
||
| 686 | |||
| 687 | var activeIndex = this._getItemIndex(this._activeElement); |
||
| 688 | |||
| 689 | if (index > this._items.length - 1 || index < 0) { |
||
| 690 | return; |
||
| 691 | } |
||
| 692 | |||
| 693 | if (this._isSliding) { |
||
| 694 | $$$1(this._element).one(Event.SLID, function () { |
||
| 695 | return _this.to(index); |
||
| 696 | }); |
||
| 697 | return; |
||
| 698 | } |
||
| 699 | |||
| 700 | if (activeIndex === index) { |
||
| 701 | this.pause(); |
||
| 702 | this.cycle(); |
||
| 703 | return; |
||
| 704 | } |
||
| 705 | |||
| 706 | var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; |
||
| 707 | |||
| 708 | this._slide(direction, this._items[index]); |
||
| 709 | }; |
||
| 710 | |||
| 711 | _proto.dispose = function dispose() { |
||
| 712 | $$$1(this._element).off(EVENT_KEY); |
||
| 713 | $$$1.removeData(this._element, DATA_KEY); |
||
| 714 | this._items = null; |
||
| 715 | this._config = null; |
||
| 716 | this._element = null; |
||
| 717 | this._interval = null; |
||
| 718 | this._isPaused = null; |
||
| 719 | this._isSliding = null; |
||
| 720 | this._activeElement = null; |
||
| 721 | this._indicatorsElement = null; |
||
| 722 | }; // Private |
||
| 723 | |||
| 724 | |||
| 725 | _proto._getConfig = function _getConfig(config) { |
||
| 726 | config = _extends({}, Default, config); |
||
| 727 | Util.typeCheckConfig(NAME, config, DefaultType); |
||
| 728 | return config; |
||
| 729 | }; |
||
| 730 | |||
| 731 | _proto._addEventListeners = function _addEventListeners() { |
||
| 732 | var _this2 = this; |
||
| 733 | |||
| 734 | if (this._config.keyboard) { |
||
| 735 | $$$1(this._element).on(Event.KEYDOWN, function (event) { |
||
| 736 | return _this2._keydown(event); |
||
| 737 | }); |
||
| 738 | } |
||
| 739 | |||
| 740 | if (this._config.pause === 'hover') { |
||
| 741 | $$$1(this._element).on(Event.MOUSEENTER, function (event) { |
||
| 742 | return _this2.pause(event); |
||
| 743 | }).on(Event.MOUSELEAVE, function (event) { |
||
| 744 | return _this2.cycle(event); |
||
| 745 | }); |
||
| 746 | |||
| 747 | if ('ontouchstart' in document.documentElement) { |
||
| 748 | // If it's a touch-enabled device, mouseenter/leave are fired as |
||
| 749 | // part of the mouse compatibility events on first tap - the carousel |
||
| 750 | // would stop cycling until user tapped out of it; |
||
| 751 | // here, we listen for touchend, explicitly pause the carousel |
||
| 752 | // (as if it's the second time we tap on it, mouseenter compat event |
||
| 753 | // is NOT fired) and after a timeout (to allow for mouse compatibility |
||
| 754 | // events to fire) we explicitly restart cycling |
||
| 755 | $$$1(this._element).on(Event.TOUCHEND, function () { |
||
| 756 | _this2.pause(); |
||
| 757 | |||
| 758 | if (_this2.touchTimeout) { |
||
| 759 | clearTimeout(_this2.touchTimeout); |
||
| 760 | } |
||
| 761 | |||
| 762 | _this2.touchTimeout = setTimeout(function (event) { |
||
| 763 | return _this2.cycle(event); |
||
| 764 | }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); |
||
| 765 | }); |
||
| 766 | } |
||
| 767 | } |
||
| 768 | }; |
||
| 769 | |||
| 770 | _proto._keydown = function _keydown(event) { |
||
| 771 | if (/input|textarea/i.test(event.target.tagName)) { |
||
| 772 | return; |
||
| 773 | } |
||
| 774 | |||
| 775 | switch (event.which) { |
||
| 776 | case ARROW_LEFT_KEYCODE: |
||
| 777 | event.preventDefault(); |
||
| 778 | this.prev(); |
||
| 779 | break; |
||
| 780 | |||
| 781 | case ARROW_RIGHT_KEYCODE: |
||
| 782 | event.preventDefault(); |
||
| 783 | this.next(); |
||
| 784 | break; |
||
| 785 | |||
| 786 | default: |
||
| 787 | } |
||
| 788 | }; |
||
| 789 | |||
| 790 | _proto._getItemIndex = function _getItemIndex(element) { |
||
| 791 | this._items = $$$1.makeArray($$$1(element).parent().find(Selector.ITEM)); |
||
| 792 | return this._items.indexOf(element); |
||
| 793 | }; |
||
| 794 | |||
| 795 | _proto._getItemByDirection = function _getItemByDirection(direction, activeElement) { |
||
| 796 | var isNextDirection = direction === Direction.NEXT; |
||
| 797 | var isPrevDirection = direction === Direction.PREV; |
||
| 798 | |||
| 799 | var activeIndex = this._getItemIndex(activeElement); |
||
| 800 | |||
| 801 | var lastItemIndex = this._items.length - 1; |
||
| 802 | var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; |
||
| 803 | |||
| 804 | if (isGoingToWrap && !this._config.wrap) { |
||
| 805 | return activeElement; |
||
| 806 | } |
||
| 807 | |||
| 808 | var delta = direction === Direction.PREV ? -1 : 1; |
||
| 809 | var itemIndex = (activeIndex + delta) % this._items.length; |
||
| 810 | return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; |
||
| 811 | }; |
||
| 812 | |||
| 813 | _proto._triggerSlideEvent = function _triggerSlideEvent(relatedTarget, eventDirectionName) { |
||
| 814 | var targetIndex = this._getItemIndex(relatedTarget); |
||
| 815 | |||
| 816 | var fromIndex = this._getItemIndex($$$1(this._element).find(Selector.ACTIVE_ITEM)[0]); |
||
| 817 | |||
| 818 | var slideEvent = $$$1.Event(Event.SLIDE, { |
||
| 819 | relatedTarget: relatedTarget, |
||
| 820 | direction: eventDirectionName, |
||
| 821 | from: fromIndex, |
||
| 822 | to: targetIndex |
||
| 823 | }); |
||
| 824 | $$$1(this._element).trigger(slideEvent); |
||
| 825 | return slideEvent; |
||
| 826 | }; |
||
| 827 | |||
| 828 | _proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) { |
||
| 829 | if (this._indicatorsElement) { |
||
| 830 | $$$1(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); |
||
| 831 | |||
| 832 | var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; |
||
| 833 | |||
| 834 | if (nextIndicator) { |
||
| 835 | $$$1(nextIndicator).addClass(ClassName.ACTIVE); |
||
| 836 | } |
||
| 837 | } |
||
| 838 | }; |
||
| 839 | |||
| 840 | _proto._slide = function _slide(direction, element) { |
||
| 841 | var _this3 = this; |
||
| 842 | |||
| 843 | var activeElement = $$$1(this._element).find(Selector.ACTIVE_ITEM)[0]; |
||
| 844 | |||
| 845 | var activeElementIndex = this._getItemIndex(activeElement); |
||
| 846 | |||
| 847 | var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); |
||
| 848 | |||
| 849 | var nextElementIndex = this._getItemIndex(nextElement); |
||
| 850 | |||
| 851 | var isCycling = Boolean(this._interval); |
||
| 852 | var directionalClassName; |
||
| 853 | var orderClassName; |
||
| 854 | var eventDirectionName; |
||
| 855 | |||
| 856 | if (direction === Direction.NEXT) { |
||
| 857 | directionalClassName = ClassName.LEFT; |
||
| 858 | orderClassName = ClassName.NEXT; |
||
| 859 | eventDirectionName = Direction.LEFT; |
||
| 860 | } else { |
||
| 861 | directionalClassName = ClassName.RIGHT; |
||
| 862 | orderClassName = ClassName.PREV; |
||
| 863 | eventDirectionName = Direction.RIGHT; |
||
| 864 | } |
||
| 865 | |||
| 866 | if (nextElement && $$$1(nextElement).hasClass(ClassName.ACTIVE)) { |
||
| 867 | this._isSliding = false; |
||
| 868 | return; |
||
| 869 | } |
||
| 870 | |||
| 871 | var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); |
||
| 872 | |||
| 873 | if (slideEvent.isDefaultPrevented()) { |
||
| 874 | return; |
||
| 875 | } |
||
| 876 | |||
| 877 | if (!activeElement || !nextElement) { |
||
| 878 | // Some weirdness is happening, so we bail |
||
| 879 | return; |
||
| 880 | } |
||
| 881 | |||
| 882 | this._isSliding = true; |
||
| 883 | |||
| 884 | if (isCycling) { |
||
| 885 | this.pause(); |
||
| 886 | } |
||
| 887 | |||
| 888 | this._setActiveIndicatorElement(nextElement); |
||
| 889 | |||
| 890 | var slidEvent = $$$1.Event(Event.SLID, { |
||
| 891 | relatedTarget: nextElement, |
||
| 892 | direction: eventDirectionName, |
||
| 893 | from: activeElementIndex, |
||
| 894 | to: nextElementIndex |
||
| 895 | }); |
||
| 896 | |||
| 897 | if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.SLIDE)) { |
||
| 898 | $$$1(nextElement).addClass(orderClassName); |
||
| 899 | Util.reflow(nextElement); |
||
| 900 | $$$1(activeElement).addClass(directionalClassName); |
||
| 901 | $$$1(nextElement).addClass(directionalClassName); |
||
| 902 | $$$1(activeElement).one(Util.TRANSITION_END, function () { |
||
| 903 | $$$1(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE); |
||
| 904 | $$$1(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName); |
||
| 905 | _this3._isSliding = false; |
||
| 906 | setTimeout(function () { |
||
| 907 | return $$$1(_this3._element).trigger(slidEvent); |
||
| 908 | }, 0); |
||
| 909 | }).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 910 | } else { |
||
| 911 | $$$1(activeElement).removeClass(ClassName.ACTIVE); |
||
| 912 | $$$1(nextElement).addClass(ClassName.ACTIVE); |
||
| 913 | this._isSliding = false; |
||
| 914 | $$$1(this._element).trigger(slidEvent); |
||
| 915 | } |
||
| 916 | |||
| 917 | if (isCycling) { |
||
| 918 | this.cycle(); |
||
| 919 | } |
||
| 920 | }; // Static |
||
| 921 | |||
| 922 | |||
| 923 | Carousel._jQueryInterface = function _jQueryInterface(config) { |
||
| 924 | return this.each(function () { |
||
| 925 | var data = $$$1(this).data(DATA_KEY); |
||
| 926 | |||
| 927 | var _config = _extends({}, Default, $$$1(this).data()); |
||
| 928 | |||
| 929 | if (typeof config === 'object') { |
||
| 930 | _config = _extends({}, _config, config); |
||
| 931 | } |
||
| 932 | |||
| 933 | var action = typeof config === 'string' ? config : _config.slide; |
||
| 934 | |||
| 935 | if (!data) { |
||
| 936 | data = new Carousel(this, _config); |
||
| 937 | $$$1(this).data(DATA_KEY, data); |
||
| 938 | } |
||
| 939 | |||
| 940 | if (typeof config === 'number') { |
||
| 941 | data.to(config); |
||
| 942 | } else if (typeof action === 'string') { |
||
| 943 | if (typeof data[action] === 'undefined') { |
||
| 944 | throw new TypeError("No method named \"" + action + "\""); |
||
| 945 | } |
||
| 946 | |||
| 947 | data[action](); |
||
| 948 | } else if (_config.interval) { |
||
| 949 | data.pause(); |
||
| 950 | data.cycle(); |
||
| 951 | } |
||
| 952 | }); |
||
| 953 | }; |
||
| 954 | |||
| 955 | Carousel._dataApiClickHandler = function _dataApiClickHandler(event) { |
||
| 956 | var selector = Util.getSelectorFromElement(this); |
||
| 957 | |||
| 958 | if (!selector) { |
||
| 959 | return; |
||
| 960 | } |
||
| 961 | |||
| 962 | var target = $$$1(selector)[0]; |
||
| 963 | |||
| 964 | if (!target || !$$$1(target).hasClass(ClassName.CAROUSEL)) { |
||
| 965 | return; |
||
| 966 | } |
||
| 967 | |||
| 968 | var config = _extends({}, $$$1(target).data(), $$$1(this).data()); |
||
| 969 | var slideIndex = this.getAttribute('data-slide-to'); |
||
| 970 | |||
| 971 | if (slideIndex) { |
||
| 972 | config.interval = false; |
||
| 973 | } |
||
| 974 | |||
| 975 | Carousel._jQueryInterface.call($$$1(target), config); |
||
| 976 | |||
| 977 | if (slideIndex) { |
||
| 978 | $$$1(target).data(DATA_KEY).to(slideIndex); |
||
| 979 | } |
||
| 980 | |||
| 981 | event.preventDefault(); |
||
| 982 | }; |
||
| 983 | |||
| 984 | _createClass(Carousel, null, [{ |
||
| 985 | key: "VERSION", |
||
| 986 | get: function get() { |
||
| 987 | return VERSION; |
||
| 988 | } |
||
| 989 | }, { |
||
| 990 | key: "Default", |
||
| 991 | get: function get() { |
||
| 992 | return Default; |
||
| 993 | } |
||
| 994 | }]); |
||
| 995 | return Carousel; |
||
| 996 | }(); |
||
| 997 | /** |
||
| 998 | * ------------------------------------------------------------------------ |
||
| 999 | * Data Api implementation |
||
| 1000 | * ------------------------------------------------------------------------ |
||
| 1001 | */ |
||
| 1002 | |||
| 1003 | |||
| 1004 | $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); |
||
| 1005 | $$$1(window).on(Event.LOAD_DATA_API, function () { |
||
| 1006 | $$$1(Selector.DATA_RIDE).each(function () { |
||
| 1007 | var $carousel = $$$1(this); |
||
| 1008 | |||
| 1009 | Carousel._jQueryInterface.call($carousel, $carousel.data()); |
||
| 1010 | }); |
||
| 1011 | }); |
||
| 1012 | /** |
||
| 1013 | * ------------------------------------------------------------------------ |
||
| 1014 | * jQuery |
||
| 1015 | * ------------------------------------------------------------------------ |
||
| 1016 | */ |
||
| 1017 | |||
| 1018 | $$$1.fn[NAME] = Carousel._jQueryInterface; |
||
| 1019 | $$$1.fn[NAME].Constructor = Carousel; |
||
| 1020 | |||
| 1021 | $$$1.fn[NAME].noConflict = function () { |
||
| 1022 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 1023 | return Carousel._jQueryInterface; |
||
| 1024 | }; |
||
| 1025 | |||
| 1026 | return Carousel; |
||
| 1027 | }($); |
||
| 1028 | |||
| 1029 | /** |
||
| 1030 | * -------------------------------------------------------------------------- |
||
| 1031 | * Bootstrap (v4.0.0): collapse.js |
||
| 1032 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 1033 | * -------------------------------------------------------------------------- |
||
| 1034 | */ |
||
| 1035 | |||
| 1036 | var Collapse = function ($$$1) { |
||
| 1037 | /** |
||
| 1038 | * ------------------------------------------------------------------------ |
||
| 1039 | * Constants |
||
| 1040 | * ------------------------------------------------------------------------ |
||
| 1041 | */ |
||
| 1042 | var NAME = 'collapse'; |
||
| 1043 | var VERSION = '4.0.0'; |
||
| 1044 | var DATA_KEY = 'bs.collapse'; |
||
| 1045 | var EVENT_KEY = "." + DATA_KEY; |
||
| 1046 | var DATA_API_KEY = '.data-api'; |
||
| 1047 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 1048 | var TRANSITION_DURATION = 600; |
||
| 1049 | var Default = { |
||
| 1050 | toggle: true, |
||
| 1051 | parent: '' |
||
| 1052 | }; |
||
| 1053 | var DefaultType = { |
||
| 1054 | toggle: 'boolean', |
||
| 1055 | parent: '(string|element)' |
||
| 1056 | }; |
||
| 1057 | var Event = { |
||
| 1058 | SHOW: "show" + EVENT_KEY, |
||
| 1059 | SHOWN: "shown" + EVENT_KEY, |
||
| 1060 | HIDE: "hide" + EVENT_KEY, |
||
| 1061 | HIDDEN: "hidden" + EVENT_KEY, |
||
| 1062 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY |
||
| 1063 | }; |
||
| 1064 | var ClassName = { |
||
| 1065 | SHOW: 'show', |
||
| 1066 | COLLAPSE: 'collapse', |
||
| 1067 | COLLAPSING: 'collapsing', |
||
| 1068 | COLLAPSED: 'collapsed' |
||
| 1069 | }; |
||
| 1070 | var Dimension = { |
||
| 1071 | WIDTH: 'width', |
||
| 1072 | HEIGHT: 'height' |
||
| 1073 | }; |
||
| 1074 | var Selector = { |
||
| 1075 | ACTIVES: '.show, .collapsing', |
||
| 1076 | DATA_TOGGLE: '[data-toggle="collapse"]' |
||
| 1077 | /** |
||
| 1078 | * ------------------------------------------------------------------------ |
||
| 1079 | * Class Definition |
||
| 1080 | * ------------------------------------------------------------------------ |
||
| 1081 | */ |
||
| 1082 | |||
| 1083 | }; |
||
| 1084 | |||
| 1085 | var Collapse = |
||
| 1086 | /*#__PURE__*/ |
||
| 1087 | function () { |
||
| 1088 | function Collapse(element, config) { |
||
| 1089 | this._isTransitioning = false; |
||
| 1090 | this._element = element; |
||
| 1091 | this._config = this._getConfig(config); |
||
| 1092 | this._triggerArray = $$$1.makeArray($$$1("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]"))); |
||
| 1093 | var tabToggles = $$$1(Selector.DATA_TOGGLE); |
||
| 1094 | |||
| 1095 | for (var i = 0; i < tabToggles.length; i++) { |
||
| 1096 | var elem = tabToggles[i]; |
||
| 1097 | var selector = Util.getSelectorFromElement(elem); |
||
| 1098 | |||
| 1099 | if (selector !== null && $$$1(selector).filter(element).length > 0) { |
||
| 1100 | this._selector = selector; |
||
| 1101 | |||
| 1102 | this._triggerArray.push(elem); |
||
| 1103 | } |
||
| 1104 | } |
||
| 1105 | |||
| 1106 | this._parent = this._config.parent ? this._getParent() : null; |
||
| 1107 | |||
| 1108 | if (!this._config.parent) { |
||
| 1109 | this._addAriaAndCollapsedClass(this._element, this._triggerArray); |
||
| 1110 | } |
||
| 1111 | |||
| 1112 | if (this._config.toggle) { |
||
| 1113 | this.toggle(); |
||
| 1114 | } |
||
| 1115 | } // Getters |
||
| 1116 | |||
| 1117 | |||
| 1118 | var _proto = Collapse.prototype; |
||
| 1119 | |||
| 1120 | // Public |
||
| 1121 | _proto.toggle = function toggle() { |
||
| 1122 | if ($$$1(this._element).hasClass(ClassName.SHOW)) { |
||
| 1123 | this.hide(); |
||
| 1124 | } else { |
||
| 1125 | this.show(); |
||
| 1126 | } |
||
| 1127 | }; |
||
| 1128 | |||
| 1129 | _proto.show = function show() { |
||
| 1130 | var _this = this; |
||
| 1131 | |||
| 1132 | if (this._isTransitioning || $$$1(this._element).hasClass(ClassName.SHOW)) { |
||
| 1133 | return; |
||
| 1134 | } |
||
| 1135 | |||
| 1136 | var actives; |
||
| 1137 | var activesData; |
||
| 1138 | |||
| 1139 | if (this._parent) { |
||
| 1140 | actives = $$$1.makeArray($$$1(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"" + this._config.parent + "\"]")); |
||
| 1141 | |||
| 1142 | if (actives.length === 0) { |
||
| 1143 | actives = null; |
||
| 1144 | } |
||
| 1145 | } |
||
| 1146 | |||
| 1147 | if (actives) { |
||
| 1148 | activesData = $$$1(actives).not(this._selector).data(DATA_KEY); |
||
| 1149 | |||
| 1150 | if (activesData && activesData._isTransitioning) { |
||
| 1151 | return; |
||
| 1152 | } |
||
| 1153 | } |
||
| 1154 | |||
| 1155 | var startEvent = $$$1.Event(Event.SHOW); |
||
| 1156 | $$$1(this._element).trigger(startEvent); |
||
| 1157 | |||
| 1158 | if (startEvent.isDefaultPrevented()) { |
||
| 1159 | return; |
||
| 1160 | } |
||
| 1161 | |||
| 1162 | if (actives) { |
||
| 1163 | Collapse._jQueryInterface.call($$$1(actives).not(this._selector), 'hide'); |
||
| 1164 | |||
| 1165 | if (!activesData) { |
||
| 1166 | $$$1(actives).data(DATA_KEY, null); |
||
| 1167 | } |
||
| 1168 | } |
||
| 1169 | |||
| 1170 | var dimension = this._getDimension(); |
||
| 1171 | |||
| 1172 | $$$1(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); |
||
| 1173 | this._element.style[dimension] = 0; |
||
| 1174 | |||
| 1175 | if (this._triggerArray.length > 0) { |
||
| 1176 | $$$1(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); |
||
| 1177 | } |
||
| 1178 | |||
| 1179 | this.setTransitioning(true); |
||
| 1180 | |||
| 1181 | var complete = function complete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
complete already seems to be declared on line 1181. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 1182 | $$$1(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); |
||
| 1183 | _this._element.style[dimension] = ''; |
||
| 1184 | |||
| 1185 | _this.setTransitioning(false); |
||
| 1186 | |||
| 1187 | $$$1(_this._element).trigger(Event.SHOWN); |
||
| 1188 | }; |
||
| 1189 | |||
| 1190 | if (!Util.supportsTransitionEnd()) { |
||
| 1191 | complete(); |
||
| 1192 | return; |
||
| 1193 | } |
||
| 1194 | |||
| 1195 | var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); |
||
| 1196 | var scrollSize = "scroll" + capitalizedDimension; |
||
| 1197 | $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 1198 | this._element.style[dimension] = this._element[scrollSize] + "px"; |
||
| 1199 | }; |
||
| 1200 | |||
| 1201 | _proto.hide = function hide() { |
||
| 1202 | var _this2 = this; |
||
| 1203 | |||
| 1204 | if (this._isTransitioning || !$$$1(this._element).hasClass(ClassName.SHOW)) { |
||
| 1205 | return; |
||
| 1206 | } |
||
| 1207 | |||
| 1208 | var startEvent = $$$1.Event(Event.HIDE); |
||
| 1209 | $$$1(this._element).trigger(startEvent); |
||
| 1210 | |||
| 1211 | if (startEvent.isDefaultPrevented()) { |
||
| 1212 | return; |
||
| 1213 | } |
||
| 1214 | |||
| 1215 | var dimension = this._getDimension(); |
||
| 1216 | |||
| 1217 | this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + "px"; |
||
| 1218 | Util.reflow(this._element); |
||
| 1219 | $$$1(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); |
||
| 1220 | |||
| 1221 | if (this._triggerArray.length > 0) { |
||
| 1222 | for (var i = 0; i < this._triggerArray.length; i++) { |
||
| 1223 | var trigger = this._triggerArray[i]; |
||
| 1224 | var selector = Util.getSelectorFromElement(trigger); |
||
| 1225 | |||
| 1226 | if (selector !== null) { |
||
| 1227 | var $elem = $$$1(selector); |
||
| 1228 | |||
| 1229 | if (!$elem.hasClass(ClassName.SHOW)) { |
||
| 1230 | $$$1(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); |
||
| 1231 | } |
||
| 1232 | } |
||
| 1233 | } |
||
| 1234 | } |
||
| 1235 | |||
| 1236 | this.setTransitioning(true); |
||
| 1237 | |||
| 1238 | var complete = function complete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
complete already seems to be declared on line 1238. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 1239 | _this2.setTransitioning(false); |
||
| 1240 | |||
| 1241 | $$$1(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); |
||
| 1242 | }; |
||
| 1243 | |||
| 1244 | this._element.style[dimension] = ''; |
||
| 1245 | |||
| 1246 | if (!Util.supportsTransitionEnd()) { |
||
| 1247 | complete(); |
||
| 1248 | return; |
||
| 1249 | } |
||
| 1250 | |||
| 1251 | $$$1(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 1252 | }; |
||
| 1253 | |||
| 1254 | _proto.setTransitioning = function setTransitioning(isTransitioning) { |
||
| 1255 | this._isTransitioning = isTransitioning; |
||
| 1256 | }; |
||
| 1257 | |||
| 1258 | _proto.dispose = function dispose() { |
||
| 1259 | $$$1.removeData(this._element, DATA_KEY); |
||
| 1260 | this._config = null; |
||
| 1261 | this._parent = null; |
||
| 1262 | this._element = null; |
||
| 1263 | this._triggerArray = null; |
||
| 1264 | this._isTransitioning = null; |
||
| 1265 | }; // Private |
||
| 1266 | |||
| 1267 | |||
| 1268 | _proto._getConfig = function _getConfig(config) { |
||
| 1269 | config = _extends({}, Default, config); |
||
| 1270 | config.toggle = Boolean(config.toggle); // Coerce string values |
||
| 1271 | |||
| 1272 | Util.typeCheckConfig(NAME, config, DefaultType); |
||
| 1273 | return config; |
||
| 1274 | }; |
||
| 1275 | |||
| 1276 | _proto._getDimension = function _getDimension() { |
||
| 1277 | var hasWidth = $$$1(this._element).hasClass(Dimension.WIDTH); |
||
| 1278 | return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; |
||
| 1279 | }; |
||
| 1280 | |||
| 1281 | _proto._getParent = function _getParent() { |
||
| 1282 | var _this3 = this; |
||
| 1283 | |||
| 1284 | var parent = null; |
||
| 1285 | |||
| 1286 | if (Util.isElement(this._config.parent)) { |
||
| 1287 | parent = this._config.parent; // It's a jQuery object |
||
| 1288 | |||
| 1289 | if (typeof this._config.parent.jquery !== 'undefined') { |
||
| 1290 | parent = this._config.parent[0]; |
||
| 1291 | } |
||
| 1292 | } else { |
||
| 1293 | parent = $$$1(this._config.parent)[0]; |
||
| 1294 | } |
||
| 1295 | |||
| 1296 | var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]"; |
||
| 1297 | $$$1(parent).find(selector).each(function (i, element) { |
||
| 1298 | _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); |
||
| 1299 | }); |
||
| 1300 | return parent; |
||
| 1301 | }; |
||
| 1302 | |||
| 1303 | _proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) { |
||
| 1304 | if (element) { |
||
| 1305 | var isOpen = $$$1(element).hasClass(ClassName.SHOW); |
||
| 1306 | |||
| 1307 | if (triggerArray.length > 0) { |
||
| 1308 | $$$1(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); |
||
| 1309 | } |
||
| 1310 | } |
||
| 1311 | }; // Static |
||
| 1312 | |||
| 1313 | |||
| 1314 | Collapse._getTargetFromElement = function _getTargetFromElement(element) { |
||
| 1315 | var selector = Util.getSelectorFromElement(element); |
||
| 1316 | return selector ? $$$1(selector)[0] : null; |
||
| 1317 | }; |
||
| 1318 | |||
| 1319 | Collapse._jQueryInterface = function _jQueryInterface(config) { |
||
| 1320 | return this.each(function () { |
||
| 1321 | var $this = $$$1(this); |
||
| 1322 | var data = $this.data(DATA_KEY); |
||
| 1323 | |||
| 1324 | var _config = _extends({}, Default, $this.data(), typeof config === 'object' && config); |
||
| 1325 | |||
| 1326 | if (!data && _config.toggle && /show|hide/.test(config)) { |
||
| 1327 | _config.toggle = false; |
||
| 1328 | } |
||
| 1329 | |||
| 1330 | if (!data) { |
||
| 1331 | data = new Collapse(this, _config); |
||
| 1332 | $this.data(DATA_KEY, data); |
||
| 1333 | } |
||
| 1334 | |||
| 1335 | if (typeof config === 'string') { |
||
| 1336 | if (typeof data[config] === 'undefined') { |
||
| 1337 | throw new TypeError("No method named \"" + config + "\""); |
||
| 1338 | } |
||
| 1339 | |||
| 1340 | data[config](); |
||
| 1341 | } |
||
| 1342 | }); |
||
| 1343 | }; |
||
| 1344 | |||
| 1345 | _createClass(Collapse, null, [{ |
||
| 1346 | key: "VERSION", |
||
| 1347 | get: function get() { |
||
| 1348 | return VERSION; |
||
| 1349 | } |
||
| 1350 | }, { |
||
| 1351 | key: "Default", |
||
| 1352 | get: function get() { |
||
| 1353 | return Default; |
||
| 1354 | } |
||
| 1355 | }]); |
||
| 1356 | return Collapse; |
||
| 1357 | }(); |
||
| 1358 | /** |
||
| 1359 | * ------------------------------------------------------------------------ |
||
| 1360 | * Data Api implementation |
||
| 1361 | * ------------------------------------------------------------------------ |
||
| 1362 | */ |
||
| 1363 | |||
| 1364 | |||
| 1365 | $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { |
||
| 1366 | // preventDefault only for <a> elements (which change the URL) not inside the collapsible element |
||
| 1367 | if (event.currentTarget.tagName === 'A') { |
||
| 1368 | event.preventDefault(); |
||
| 1369 | } |
||
| 1370 | |||
| 1371 | var $trigger = $$$1(this); |
||
| 1372 | var selector = Util.getSelectorFromElement(this); |
||
| 1373 | $$$1(selector).each(function () { |
||
| 1374 | var $target = $$$1(this); |
||
| 1375 | var data = $target.data(DATA_KEY); |
||
| 1376 | var config = data ? 'toggle' : $trigger.data(); |
||
| 1377 | |||
| 1378 | Collapse._jQueryInterface.call($target, config); |
||
| 1379 | }); |
||
| 1380 | }); |
||
| 1381 | /** |
||
| 1382 | * ------------------------------------------------------------------------ |
||
| 1383 | * jQuery |
||
| 1384 | * ------------------------------------------------------------------------ |
||
| 1385 | */ |
||
| 1386 | |||
| 1387 | $$$1.fn[NAME] = Collapse._jQueryInterface; |
||
| 1388 | $$$1.fn[NAME].Constructor = Collapse; |
||
| 1389 | |||
| 1390 | $$$1.fn[NAME].noConflict = function () { |
||
| 1391 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 1392 | return Collapse._jQueryInterface; |
||
| 1393 | }; |
||
| 1394 | |||
| 1395 | return Collapse; |
||
| 1396 | }($); |
||
| 1397 | |||
| 1398 | /** |
||
| 1399 | * -------------------------------------------------------------------------- |
||
| 1400 | * Bootstrap (v4.0.0): dropdown.js |
||
| 1401 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 1402 | * -------------------------------------------------------------------------- |
||
| 1403 | */ |
||
| 1404 | |||
| 1405 | var Dropdown = function ($$$1) { |
||
| 1406 | /** |
||
| 1407 | * ------------------------------------------------------------------------ |
||
| 1408 | * Constants |
||
| 1409 | * ------------------------------------------------------------------------ |
||
| 1410 | */ |
||
| 1411 | var NAME = 'dropdown'; |
||
| 1412 | var VERSION = '4.0.0'; |
||
| 1413 | var DATA_KEY = 'bs.dropdown'; |
||
| 1414 | var EVENT_KEY = "." + DATA_KEY; |
||
| 1415 | var DATA_API_KEY = '.data-api'; |
||
| 1416 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 1417 | var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key |
||
| 1418 | |||
| 1419 | var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key |
||
| 1420 | |||
| 1421 | var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key |
||
| 1422 | |||
| 1423 | var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key |
||
| 1424 | |||
| 1425 | var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key |
||
| 1426 | |||
| 1427 | var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) |
||
| 1428 | |||
| 1429 | var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE); |
||
| 1430 | var Event = { |
||
| 1431 | HIDE: "hide" + EVENT_KEY, |
||
| 1432 | HIDDEN: "hidden" + EVENT_KEY, |
||
| 1433 | SHOW: "show" + EVENT_KEY, |
||
| 1434 | SHOWN: "shown" + EVENT_KEY, |
||
| 1435 | CLICK: "click" + EVENT_KEY, |
||
| 1436 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY, |
||
| 1437 | KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY, |
||
| 1438 | KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY |
||
| 1439 | }; |
||
| 1440 | var ClassName = { |
||
| 1441 | DISABLED: 'disabled', |
||
| 1442 | SHOW: 'show', |
||
| 1443 | DROPUP: 'dropup', |
||
| 1444 | DROPRIGHT: 'dropright', |
||
| 1445 | DROPLEFT: 'dropleft', |
||
| 1446 | MENURIGHT: 'dropdown-menu-right', |
||
| 1447 | MENULEFT: 'dropdown-menu-left', |
||
| 1448 | POSITION_STATIC: 'position-static' |
||
| 1449 | }; |
||
| 1450 | var Selector = { |
||
| 1451 | DATA_TOGGLE: '[data-toggle="dropdown"]', |
||
| 1452 | FORM_CHILD: '.dropdown form', |
||
| 1453 | MENU: '.dropdown-menu', |
||
| 1454 | NAVBAR_NAV: '.navbar-nav', |
||
| 1455 | VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)' |
||
| 1456 | }; |
||
| 1457 | var AttachmentMap = { |
||
| 1458 | TOP: 'top-start', |
||
| 1459 | TOPEND: 'top-end', |
||
| 1460 | BOTTOM: 'bottom-start', |
||
| 1461 | BOTTOMEND: 'bottom-end', |
||
| 1462 | RIGHT: 'right-start', |
||
| 1463 | RIGHTEND: 'right-end', |
||
| 1464 | LEFT: 'left-start', |
||
| 1465 | LEFTEND: 'left-end' |
||
| 1466 | }; |
||
| 1467 | var Default = { |
||
| 1468 | offset: 0, |
||
| 1469 | flip: true, |
||
| 1470 | boundary: 'scrollParent' |
||
| 1471 | }; |
||
| 1472 | var DefaultType = { |
||
| 1473 | offset: '(number|string|function)', |
||
| 1474 | flip: 'boolean', |
||
| 1475 | boundary: '(string|element)' |
||
| 1476 | /** |
||
| 1477 | * ------------------------------------------------------------------------ |
||
| 1478 | * Class Definition |
||
| 1479 | * ------------------------------------------------------------------------ |
||
| 1480 | */ |
||
| 1481 | |||
| 1482 | }; |
||
| 1483 | |||
| 1484 | var Dropdown = |
||
| 1485 | /*#__PURE__*/ |
||
| 1486 | function () { |
||
| 1487 | function Dropdown(element, config) { |
||
| 1488 | this._element = element; |
||
| 1489 | this._popper = null; |
||
| 1490 | this._config = this._getConfig(config); |
||
| 1491 | this._menu = this._getMenuElement(); |
||
| 1492 | this._inNavbar = this._detectNavbar(); |
||
| 1493 | |||
| 1494 | this._addEventListeners(); |
||
| 1495 | } // Getters |
||
| 1496 | |||
| 1497 | |||
| 1498 | var _proto = Dropdown.prototype; |
||
| 1499 | |||
| 1500 | // Public |
||
| 1501 | _proto.toggle = function toggle() { |
||
| 1502 | if (this._element.disabled || $$$1(this._element).hasClass(ClassName.DISABLED)) { |
||
| 1503 | return; |
||
| 1504 | } |
||
| 1505 | |||
| 1506 | var parent = Dropdown._getParentFromElement(this._element); |
||
| 1507 | |||
| 1508 | var isActive = $$$1(this._menu).hasClass(ClassName.SHOW); |
||
| 1509 | |||
| 1510 | Dropdown._clearMenus(); |
||
| 1511 | |||
| 1512 | if (isActive) { |
||
| 1513 | return; |
||
| 1514 | } |
||
| 1515 | |||
| 1516 | var relatedTarget = { |
||
| 1517 | relatedTarget: this._element |
||
| 1518 | }; |
||
| 1519 | var showEvent = $$$1.Event(Event.SHOW, relatedTarget); |
||
| 1520 | $$$1(parent).trigger(showEvent); |
||
| 1521 | |||
| 1522 | if (showEvent.isDefaultPrevented()) { |
||
| 1523 | return; |
||
| 1524 | } // Disable totally Popper.js for Dropdown in Navbar |
||
| 1525 | |||
| 1526 | |||
| 1527 | if (!this._inNavbar) { |
||
| 1528 | /** |
||
| 1529 | * Check for Popper dependency |
||
| 1530 | * Popper - https://popper.js.org |
||
| 1531 | */ |
||
| 1532 | if (typeof Popper === 'undefined') { |
||
| 1533 | throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); |
||
| 1534 | } |
||
| 1535 | |||
| 1536 | var element = this._element; // For dropup with alignment we use the parent as popper container |
||
| 1537 | |||
| 1538 | if ($$$1(parent).hasClass(ClassName.DROPUP)) { |
||
| 1539 | if ($$$1(this._menu).hasClass(ClassName.MENULEFT) || $$$1(this._menu).hasClass(ClassName.MENURIGHT)) { |
||
| 1540 | element = parent; |
||
| 1541 | } |
||
| 1542 | } // If boundary is not `scrollParent`, then set position to `static` |
||
| 1543 | // to allow the menu to "escape" the scroll parent's boundaries |
||
| 1544 | // https://github.com/twbs/bootstrap/issues/24251 |
||
| 1545 | |||
| 1546 | |||
| 1547 | if (this._config.boundary !== 'scrollParent') { |
||
| 1548 | $$$1(parent).addClass(ClassName.POSITION_STATIC); |
||
| 1549 | } |
||
| 1550 | |||
| 1551 | this._popper = new Popper(element, this._menu, this._getPopperConfig()); |
||
| 1552 | } // If this is a touch-enabled device we add extra |
||
| 1553 | // empty mouseover listeners to the body's immediate children; |
||
| 1554 | // only needed because of broken event delegation on iOS |
||
| 1555 | // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html |
||
| 1556 | |||
| 1557 | |||
| 1558 | if ('ontouchstart' in document.documentElement && $$$1(parent).closest(Selector.NAVBAR_NAV).length === 0) { |
||
| 1559 | $$$1('body').children().on('mouseover', null, $$$1.noop); |
||
| 1560 | } |
||
| 1561 | |||
| 1562 | this._element.focus(); |
||
| 1563 | |||
| 1564 | this._element.setAttribute('aria-expanded', true); |
||
| 1565 | |||
| 1566 | $$$1(this._menu).toggleClass(ClassName.SHOW); |
||
| 1567 | $$$1(parent).toggleClass(ClassName.SHOW).trigger($$$1.Event(Event.SHOWN, relatedTarget)); |
||
| 1568 | }; |
||
| 1569 | |||
| 1570 | _proto.dispose = function dispose() { |
||
| 1571 | $$$1.removeData(this._element, DATA_KEY); |
||
| 1572 | $$$1(this._element).off(EVENT_KEY); |
||
| 1573 | this._element = null; |
||
| 1574 | this._menu = null; |
||
| 1575 | |||
| 1576 | if (this._popper !== null) { |
||
| 1577 | this._popper.destroy(); |
||
| 1578 | |||
| 1579 | this._popper = null; |
||
| 1580 | } |
||
| 1581 | }; |
||
| 1582 | |||
| 1583 | _proto.update = function update() { |
||
| 1584 | this._inNavbar = this._detectNavbar(); |
||
| 1585 | |||
| 1586 | if (this._popper !== null) { |
||
| 1587 | this._popper.scheduleUpdate(); |
||
| 1588 | } |
||
| 1589 | }; // Private |
||
| 1590 | |||
| 1591 | |||
| 1592 | _proto._addEventListeners = function _addEventListeners() { |
||
| 1593 | var _this = this; |
||
| 1594 | |||
| 1595 | $$$1(this._element).on(Event.CLICK, function (event) { |
||
| 1596 | event.preventDefault(); |
||
| 1597 | event.stopPropagation(); |
||
| 1598 | |||
| 1599 | _this.toggle(); |
||
| 1600 | }); |
||
| 1601 | }; |
||
| 1602 | |||
| 1603 | _proto._getConfig = function _getConfig(config) { |
||
| 1604 | config = _extends({}, this.constructor.Default, $$$1(this._element).data(), config); |
||
| 1605 | Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); |
||
| 1606 | return config; |
||
| 1607 | }; |
||
| 1608 | |||
| 1609 | _proto._getMenuElement = function _getMenuElement() { |
||
| 1610 | if (!this._menu) { |
||
| 1611 | var parent = Dropdown._getParentFromElement(this._element); |
||
| 1612 | |||
| 1613 | this._menu = $$$1(parent).find(Selector.MENU)[0]; |
||
| 1614 | } |
||
| 1615 | |||
| 1616 | return this._menu; |
||
| 1617 | }; |
||
| 1618 | |||
| 1619 | _proto._getPlacement = function _getPlacement() { |
||
| 1620 | var $parentDropdown = $$$1(this._element).parent(); |
||
| 1621 | var placement = AttachmentMap.BOTTOM; // Handle dropup |
||
| 1622 | |||
| 1623 | if ($parentDropdown.hasClass(ClassName.DROPUP)) { |
||
| 1624 | placement = AttachmentMap.TOP; |
||
| 1625 | |||
| 1626 | if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { |
||
| 1627 | placement = AttachmentMap.TOPEND; |
||
| 1628 | } |
||
| 1629 | } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { |
||
| 1630 | placement = AttachmentMap.RIGHT; |
||
| 1631 | } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { |
||
| 1632 | placement = AttachmentMap.LEFT; |
||
| 1633 | } else if ($$$1(this._menu).hasClass(ClassName.MENURIGHT)) { |
||
| 1634 | placement = AttachmentMap.BOTTOMEND; |
||
| 1635 | } |
||
| 1636 | |||
| 1637 | return placement; |
||
| 1638 | }; |
||
| 1639 | |||
| 1640 | _proto._detectNavbar = function _detectNavbar() { |
||
| 1641 | return $$$1(this._element).closest('.navbar').length > 0; |
||
| 1642 | }; |
||
| 1643 | |||
| 1644 | _proto._getPopperConfig = function _getPopperConfig() { |
||
| 1645 | var _this2 = this; |
||
| 1646 | |||
| 1647 | var offsetConf = {}; |
||
| 1648 | |||
| 1649 | if (typeof this._config.offset === 'function') { |
||
| 1650 | offsetConf.fn = function (data) { |
||
| 1651 | data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); |
||
| 1652 | return data; |
||
| 1653 | }; |
||
| 1654 | } else { |
||
| 1655 | offsetConf.offset = this._config.offset; |
||
| 1656 | } |
||
| 1657 | |||
| 1658 | var popperConfig = { |
||
| 1659 | placement: this._getPlacement(), |
||
| 1660 | modifiers: { |
||
| 1661 | offset: offsetConf, |
||
| 1662 | flip: { |
||
| 1663 | enabled: this._config.flip |
||
| 1664 | }, |
||
| 1665 | preventOverflow: { |
||
| 1666 | boundariesElement: this._config.boundary |
||
| 1667 | } |
||
| 1668 | } |
||
| 1669 | }; |
||
| 1670 | return popperConfig; |
||
| 1671 | }; // Static |
||
| 1672 | |||
| 1673 | |||
| 1674 | Dropdown._jQueryInterface = function _jQueryInterface(config) { |
||
| 1675 | return this.each(function () { |
||
| 1676 | var data = $$$1(this).data(DATA_KEY); |
||
| 1677 | |||
| 1678 | var _config = typeof config === 'object' ? config : null; |
||
| 1679 | |||
| 1680 | if (!data) { |
||
| 1681 | data = new Dropdown(this, _config); |
||
| 1682 | $$$1(this).data(DATA_KEY, data); |
||
| 1683 | } |
||
| 1684 | |||
| 1685 | if (typeof config === 'string') { |
||
| 1686 | if (typeof data[config] === 'undefined') { |
||
| 1687 | throw new TypeError("No method named \"" + config + "\""); |
||
| 1688 | } |
||
| 1689 | |||
| 1690 | data[config](); |
||
| 1691 | } |
||
| 1692 | }); |
||
| 1693 | }; |
||
| 1694 | |||
| 1695 | Dropdown._clearMenus = function _clearMenus(event) { |
||
| 1696 | if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { |
||
| 1697 | return; |
||
| 1698 | } |
||
| 1699 | |||
| 1700 | var toggles = $$$1.makeArray($$$1(Selector.DATA_TOGGLE)); |
||
| 1701 | |||
| 1702 | for (var i = 0; i < toggles.length; i++) { |
||
| 1703 | var parent = Dropdown._getParentFromElement(toggles[i]); |
||
| 1704 | |||
| 1705 | var context = $$$1(toggles[i]).data(DATA_KEY); |
||
| 1706 | var relatedTarget = { |
||
| 1707 | relatedTarget: toggles[i] |
||
| 1708 | }; |
||
| 1709 | |||
| 1710 | if (!context) { |
||
| 1711 | continue; |
||
| 1712 | } |
||
| 1713 | |||
| 1714 | var dropdownMenu = context._menu; |
||
| 1715 | |||
| 1716 | if (!$$$1(parent).hasClass(ClassName.SHOW)) { |
||
| 1717 | continue; |
||
| 1718 | } |
||
| 1719 | |||
| 1720 | if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $$$1.contains(parent, event.target)) { |
||
| 1721 | continue; |
||
| 1722 | } |
||
| 1723 | |||
| 1724 | var hideEvent = $$$1.Event(Event.HIDE, relatedTarget); |
||
| 1725 | $$$1(parent).trigger(hideEvent); |
||
| 1726 | |||
| 1727 | if (hideEvent.isDefaultPrevented()) { |
||
| 1728 | continue; |
||
| 1729 | } // If this is a touch-enabled device we remove the extra |
||
| 1730 | // empty mouseover listeners we added for iOS support |
||
| 1731 | |||
| 1732 | |||
| 1733 | if ('ontouchstart' in document.documentElement) { |
||
| 1734 | $$$1('body').children().off('mouseover', null, $$$1.noop); |
||
| 1735 | } |
||
| 1736 | |||
| 1737 | toggles[i].setAttribute('aria-expanded', 'false'); |
||
| 1738 | $$$1(dropdownMenu).removeClass(ClassName.SHOW); |
||
| 1739 | $$$1(parent).removeClass(ClassName.SHOW).trigger($$$1.Event(Event.HIDDEN, relatedTarget)); |
||
| 1740 | } |
||
| 1741 | }; |
||
| 1742 | |||
| 1743 | Dropdown._getParentFromElement = function _getParentFromElement(element) { |
||
| 1744 | var parent; |
||
| 1745 | var selector = Util.getSelectorFromElement(element); |
||
| 1746 | |||
| 1747 | if (selector) { |
||
| 1748 | parent = $$$1(selector)[0]; |
||
| 1749 | } |
||
| 1750 | |||
| 1751 | return parent || element.parentNode; |
||
| 1752 | }; // eslint-disable-next-line complexity |
||
| 1753 | |||
| 1754 | |||
| 1755 | Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) { |
||
| 1756 | // If not input/textarea: |
||
| 1757 | // - And not a key in REGEXP_KEYDOWN => not a dropdown command |
||
| 1758 | // If input/textarea: |
||
| 1759 | // - If space key => not a dropdown command |
||
| 1760 | // - If key is other than escape |
||
| 1761 | // - If key is not up or down => not a dropdown command |
||
| 1762 | // - If trigger inside the menu => not a dropdown command |
||
| 1763 | if (/input|textarea/i.test(event.target.tagName) ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE && (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE || $$$1(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { |
||
| 1764 | return; |
||
| 1765 | } |
||
| 1766 | |||
| 1767 | event.preventDefault(); |
||
| 1768 | event.stopPropagation(); |
||
| 1769 | |||
| 1770 | if (this.disabled || $$$1(this).hasClass(ClassName.DISABLED)) { |
||
| 1771 | return; |
||
| 1772 | } |
||
| 1773 | |||
| 1774 | var parent = Dropdown._getParentFromElement(this); |
||
| 1775 | |||
| 1776 | var isActive = $$$1(parent).hasClass(ClassName.SHOW); |
||
| 1777 | |||
| 1778 | if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { |
||
| 1779 | if (event.which === ESCAPE_KEYCODE) { |
||
| 1780 | var toggle = $$$1(parent).find(Selector.DATA_TOGGLE)[0]; |
||
| 1781 | $$$1(toggle).trigger('focus'); |
||
| 1782 | } |
||
| 1783 | |||
| 1784 | $$$1(this).trigger('click'); |
||
| 1785 | return; |
||
| 1786 | } |
||
| 1787 | |||
| 1788 | var items = $$$1(parent).find(Selector.VISIBLE_ITEMS).get(); |
||
| 1789 | |||
| 1790 | if (items.length === 0) { |
||
| 1791 | return; |
||
| 1792 | } |
||
| 1793 | |||
| 1794 | var index = items.indexOf(event.target); |
||
| 1795 | |||
| 1796 | if (event.which === ARROW_UP_KEYCODE && index > 0) { |
||
| 1797 | // Up |
||
| 1798 | index--; |
||
| 1799 | } |
||
| 1800 | |||
| 1801 | if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { |
||
| 1802 | // Down |
||
| 1803 | index++; |
||
| 1804 | } |
||
| 1805 | |||
| 1806 | if (index < 0) { |
||
| 1807 | index = 0; |
||
| 1808 | } |
||
| 1809 | |||
| 1810 | items[index].focus(); |
||
| 1811 | }; |
||
| 1812 | |||
| 1813 | _createClass(Dropdown, null, [{ |
||
| 1814 | key: "VERSION", |
||
| 1815 | get: function get() { |
||
| 1816 | return VERSION; |
||
| 1817 | } |
||
| 1818 | }, { |
||
| 1819 | key: "Default", |
||
| 1820 | get: function get() { |
||
| 1821 | return Default; |
||
| 1822 | } |
||
| 1823 | }, { |
||
| 1824 | key: "DefaultType", |
||
| 1825 | get: function get() { |
||
| 1826 | return DefaultType; |
||
| 1827 | } |
||
| 1828 | }]); |
||
| 1829 | return Dropdown; |
||
| 1830 | }(); |
||
| 1831 | /** |
||
| 1832 | * ------------------------------------------------------------------------ |
||
| 1833 | * Data Api implementation |
||
| 1834 | * ------------------------------------------------------------------------ |
||
| 1835 | */ |
||
| 1836 | |||
| 1837 | |||
| 1838 | $$$1(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { |
||
| 1839 | event.preventDefault(); |
||
| 1840 | event.stopPropagation(); |
||
| 1841 | |||
| 1842 | Dropdown._jQueryInterface.call($$$1(this), 'toggle'); |
||
| 1843 | }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { |
||
| 1844 | e.stopPropagation(); |
||
| 1845 | }); |
||
| 1846 | /** |
||
| 1847 | * ------------------------------------------------------------------------ |
||
| 1848 | * jQuery |
||
| 1849 | * ------------------------------------------------------------------------ |
||
| 1850 | */ |
||
| 1851 | |||
| 1852 | $$$1.fn[NAME] = Dropdown._jQueryInterface; |
||
| 1853 | $$$1.fn[NAME].Constructor = Dropdown; |
||
| 1854 | |||
| 1855 | $$$1.fn[NAME].noConflict = function () { |
||
| 1856 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 1857 | return Dropdown._jQueryInterface; |
||
| 1858 | }; |
||
| 1859 | |||
| 1860 | return Dropdown; |
||
| 1861 | }($, Popper); |
||
| 1862 | |||
| 1863 | /** |
||
| 1864 | * -------------------------------------------------------------------------- |
||
| 1865 | * Bootstrap (v4.0.0): modal.js |
||
| 1866 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 1867 | * -------------------------------------------------------------------------- |
||
| 1868 | */ |
||
| 1869 | |||
| 1870 | var Modal = function ($$$1) { |
||
| 1871 | /** |
||
| 1872 | * ------------------------------------------------------------------------ |
||
| 1873 | * Constants |
||
| 1874 | * ------------------------------------------------------------------------ |
||
| 1875 | */ |
||
| 1876 | var NAME = 'modal'; |
||
| 1877 | var VERSION = '4.0.0'; |
||
| 1878 | var DATA_KEY = 'bs.modal'; |
||
| 1879 | var EVENT_KEY = "." + DATA_KEY; |
||
| 1880 | var DATA_API_KEY = '.data-api'; |
||
| 1881 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 1882 | var TRANSITION_DURATION = 300; |
||
| 1883 | var BACKDROP_TRANSITION_DURATION = 150; |
||
| 1884 | var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key |
||
| 1885 | |||
| 1886 | var Default = { |
||
| 1887 | backdrop: true, |
||
| 1888 | keyboard: true, |
||
| 1889 | focus: true, |
||
| 1890 | show: true |
||
| 1891 | }; |
||
| 1892 | var DefaultType = { |
||
| 1893 | backdrop: '(boolean|string)', |
||
| 1894 | keyboard: 'boolean', |
||
| 1895 | focus: 'boolean', |
||
| 1896 | show: 'boolean' |
||
| 1897 | }; |
||
| 1898 | var Event = { |
||
| 1899 | HIDE: "hide" + EVENT_KEY, |
||
| 1900 | HIDDEN: "hidden" + EVENT_KEY, |
||
| 1901 | SHOW: "show" + EVENT_KEY, |
||
| 1902 | SHOWN: "shown" + EVENT_KEY, |
||
| 1903 | FOCUSIN: "focusin" + EVENT_KEY, |
||
| 1904 | RESIZE: "resize" + EVENT_KEY, |
||
| 1905 | CLICK_DISMISS: "click.dismiss" + EVENT_KEY, |
||
| 1906 | KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY, |
||
| 1907 | MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY, |
||
| 1908 | MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY, |
||
| 1909 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY |
||
| 1910 | }; |
||
| 1911 | var ClassName = { |
||
| 1912 | SCROLLBAR_MEASURER: 'modal-scrollbar-measure', |
||
| 1913 | BACKDROP: 'modal-backdrop', |
||
| 1914 | OPEN: 'modal-open', |
||
| 1915 | FADE: 'fade', |
||
| 1916 | SHOW: 'show' |
||
| 1917 | }; |
||
| 1918 | var Selector = { |
||
| 1919 | DIALOG: '.modal-dialog', |
||
| 1920 | DATA_TOGGLE: '[data-toggle="modal"]', |
||
| 1921 | DATA_DISMISS: '[data-dismiss="modal"]', |
||
| 1922 | FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', |
||
| 1923 | STICKY_CONTENT: '.sticky-top', |
||
| 1924 | NAVBAR_TOGGLER: '.navbar-toggler' |
||
| 1925 | /** |
||
| 1926 | * ------------------------------------------------------------------------ |
||
| 1927 | * Class Definition |
||
| 1928 | * ------------------------------------------------------------------------ |
||
| 1929 | */ |
||
| 1930 | |||
| 1931 | }; |
||
| 1932 | |||
| 1933 | var Modal = |
||
| 1934 | /*#__PURE__*/ |
||
| 1935 | function () { |
||
| 1936 | function Modal(element, config) { |
||
| 1937 | this._config = this._getConfig(config); |
||
| 1938 | this._element = element; |
||
| 1939 | this._dialog = $$$1(element).find(Selector.DIALOG)[0]; |
||
| 1940 | this._backdrop = null; |
||
| 1941 | this._isShown = false; |
||
| 1942 | this._isBodyOverflowing = false; |
||
| 1943 | this._ignoreBackdropClick = false; |
||
| 1944 | this._originalBodyPadding = 0; |
||
| 1945 | this._scrollbarWidth = 0; |
||
| 1946 | } // Getters |
||
| 1947 | |||
| 1948 | |||
| 1949 | var _proto = Modal.prototype; |
||
| 1950 | |||
| 1951 | // Public |
||
| 1952 | _proto.toggle = function toggle(relatedTarget) { |
||
| 1953 | return this._isShown ? this.hide() : this.show(relatedTarget); |
||
| 1954 | }; |
||
| 1955 | |||
| 1956 | _proto.show = function show(relatedTarget) { |
||
| 1957 | var _this = this; |
||
| 1958 | |||
| 1959 | if (this._isTransitioning || this._isShown) { |
||
| 1960 | return; |
||
| 1961 | } |
||
| 1962 | |||
| 1963 | if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) { |
||
| 1964 | this._isTransitioning = true; |
||
| 1965 | } |
||
| 1966 | |||
| 1967 | var showEvent = $$$1.Event(Event.SHOW, { |
||
| 1968 | relatedTarget: relatedTarget |
||
| 1969 | }); |
||
| 1970 | $$$1(this._element).trigger(showEvent); |
||
| 1971 | |||
| 1972 | if (this._isShown || showEvent.isDefaultPrevented()) { |
||
| 1973 | return; |
||
| 1974 | } |
||
| 1975 | |||
| 1976 | this._isShown = true; |
||
| 1977 | |||
| 1978 | this._checkScrollbar(); |
||
| 1979 | |||
| 1980 | this._setScrollbar(); |
||
| 1981 | |||
| 1982 | this._adjustDialog(); |
||
| 1983 | |||
| 1984 | $$$1(document.body).addClass(ClassName.OPEN); |
||
| 1985 | |||
| 1986 | this._setEscapeEvent(); |
||
| 1987 | |||
| 1988 | this._setResizeEvent(); |
||
| 1989 | |||
| 1990 | $$$1(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { |
||
| 1991 | return _this.hide(event); |
||
| 1992 | }); |
||
| 1993 | $$$1(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { |
||
| 1994 | $$$1(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { |
||
| 1995 | if ($$$1(event.target).is(_this._element)) { |
||
| 1996 | _this._ignoreBackdropClick = true; |
||
| 1997 | } |
||
| 1998 | }); |
||
| 1999 | }); |
||
| 2000 | |||
| 2001 | this._showBackdrop(function () { |
||
| 2002 | return _this._showElement(relatedTarget); |
||
| 2003 | }); |
||
| 2004 | }; |
||
| 2005 | |||
| 2006 | _proto.hide = function hide(event) { |
||
| 2007 | var _this2 = this; |
||
| 2008 | |||
| 2009 | if (event) { |
||
| 2010 | event.preventDefault(); |
||
| 2011 | } |
||
| 2012 | |||
| 2013 | if (this._isTransitioning || !this._isShown) { |
||
| 2014 | return; |
||
| 2015 | } |
||
| 2016 | |||
| 2017 | var hideEvent = $$$1.Event(Event.HIDE); |
||
| 2018 | $$$1(this._element).trigger(hideEvent); |
||
| 2019 | |||
| 2020 | if (!this._isShown || hideEvent.isDefaultPrevented()) { |
||
| 2021 | return; |
||
| 2022 | } |
||
| 2023 | |||
| 2024 | this._isShown = false; |
||
| 2025 | var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE); |
||
| 2026 | |||
| 2027 | if (transition) { |
||
| 2028 | this._isTransitioning = true; |
||
| 2029 | } |
||
| 2030 | |||
| 2031 | this._setEscapeEvent(); |
||
| 2032 | |||
| 2033 | this._setResizeEvent(); |
||
| 2034 | |||
| 2035 | $$$1(document).off(Event.FOCUSIN); |
||
| 2036 | $$$1(this._element).removeClass(ClassName.SHOW); |
||
| 2037 | $$$1(this._element).off(Event.CLICK_DISMISS); |
||
| 2038 | $$$1(this._dialog).off(Event.MOUSEDOWN_DISMISS); |
||
| 2039 | |||
| 2040 | if (transition) { |
||
| 2041 | $$$1(this._element).one(Util.TRANSITION_END, function (event) { |
||
| 2042 | return _this2._hideModal(event); |
||
| 2043 | }).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 2044 | } else { |
||
| 2045 | this._hideModal(); |
||
| 2046 | } |
||
| 2047 | }; |
||
| 2048 | |||
| 2049 | _proto.dispose = function dispose() { |
||
| 2050 | $$$1.removeData(this._element, DATA_KEY); |
||
| 2051 | $$$1(window, document, this._element, this._backdrop).off(EVENT_KEY); |
||
| 2052 | this._config = null; |
||
| 2053 | this._element = null; |
||
| 2054 | this._dialog = null; |
||
| 2055 | this._backdrop = null; |
||
| 2056 | this._isShown = null; |
||
| 2057 | this._isBodyOverflowing = null; |
||
| 2058 | this._ignoreBackdropClick = null; |
||
| 2059 | this._scrollbarWidth = null; |
||
| 2060 | }; |
||
| 2061 | |||
| 2062 | _proto.handleUpdate = function handleUpdate() { |
||
| 2063 | this._adjustDialog(); |
||
| 2064 | }; // Private |
||
| 2065 | |||
| 2066 | |||
| 2067 | _proto._getConfig = function _getConfig(config) { |
||
| 2068 | config = _extends({}, Default, config); |
||
| 2069 | Util.typeCheckConfig(NAME, config, DefaultType); |
||
| 2070 | return config; |
||
| 2071 | }; |
||
| 2072 | |||
| 2073 | _proto._showElement = function _showElement(relatedTarget) { |
||
| 2074 | var _this3 = this; |
||
| 2075 | |||
| 2076 | var transition = Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE); |
||
| 2077 | |||
| 2078 | if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { |
||
|
0 ignored issues
–
show
The variable
Node seems to be never declared. If this is a global, consider adding a /** global: Node */ comment.
This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed. To learn more about declaring variables in Javascript, see the MDN. Loading history...
|
|||
| 2079 | // Don't move modal's DOM position |
||
| 2080 | document.body.appendChild(this._element); |
||
| 2081 | } |
||
| 2082 | |||
| 2083 | this._element.style.display = 'block'; |
||
| 2084 | |||
| 2085 | this._element.removeAttribute('aria-hidden'); |
||
| 2086 | |||
| 2087 | this._element.scrollTop = 0; |
||
| 2088 | |||
| 2089 | if (transition) { |
||
| 2090 | Util.reflow(this._element); |
||
| 2091 | } |
||
| 2092 | |||
| 2093 | $$$1(this._element).addClass(ClassName.SHOW); |
||
| 2094 | |||
| 2095 | if (this._config.focus) { |
||
| 2096 | this._enforceFocus(); |
||
| 2097 | } |
||
| 2098 | |||
| 2099 | var shownEvent = $$$1.Event(Event.SHOWN, { |
||
| 2100 | relatedTarget: relatedTarget |
||
| 2101 | }); |
||
| 2102 | |||
| 2103 | var transitionComplete = function transitionComplete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
transitionComplete already seems to be declared on line 2103. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 2104 | if (_this3._config.focus) { |
||
| 2105 | _this3._element.focus(); |
||
| 2106 | } |
||
| 2107 | |||
| 2108 | _this3._isTransitioning = false; |
||
| 2109 | $$$1(_this3._element).trigger(shownEvent); |
||
| 2110 | }; |
||
| 2111 | |||
| 2112 | if (transition) { |
||
| 2113 | $$$1(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 2114 | } else { |
||
| 2115 | transitionComplete(); |
||
| 2116 | } |
||
| 2117 | }; |
||
| 2118 | |||
| 2119 | _proto._enforceFocus = function _enforceFocus() { |
||
| 2120 | var _this4 = this; |
||
| 2121 | |||
| 2122 | $$$1(document).off(Event.FOCUSIN) // Guard against infinite focus loop |
||
| 2123 | .on(Event.FOCUSIN, function (event) { |
||
| 2124 | if (document !== event.target && _this4._element !== event.target && $$$1(_this4._element).has(event.target).length === 0) { |
||
| 2125 | _this4._element.focus(); |
||
| 2126 | } |
||
| 2127 | }); |
||
| 2128 | }; |
||
| 2129 | |||
| 2130 | _proto._setEscapeEvent = function _setEscapeEvent() { |
||
| 2131 | var _this5 = this; |
||
| 2132 | |||
| 2133 | if (this._isShown && this._config.keyboard) { |
||
| 2134 | $$$1(this._element).on(Event.KEYDOWN_DISMISS, function (event) { |
||
| 2135 | if (event.which === ESCAPE_KEYCODE) { |
||
| 2136 | event.preventDefault(); |
||
| 2137 | |||
| 2138 | _this5.hide(); |
||
| 2139 | } |
||
| 2140 | }); |
||
| 2141 | } else if (!this._isShown) { |
||
| 2142 | $$$1(this._element).off(Event.KEYDOWN_DISMISS); |
||
| 2143 | } |
||
| 2144 | }; |
||
| 2145 | |||
| 2146 | _proto._setResizeEvent = function _setResizeEvent() { |
||
| 2147 | var _this6 = this; |
||
| 2148 | |||
| 2149 | if (this._isShown) { |
||
| 2150 | $$$1(window).on(Event.RESIZE, function (event) { |
||
| 2151 | return _this6.handleUpdate(event); |
||
| 2152 | }); |
||
| 2153 | } else { |
||
| 2154 | $$$1(window).off(Event.RESIZE); |
||
| 2155 | } |
||
| 2156 | }; |
||
| 2157 | |||
| 2158 | _proto._hideModal = function _hideModal() { |
||
| 2159 | var _this7 = this; |
||
| 2160 | |||
| 2161 | this._element.style.display = 'none'; |
||
| 2162 | |||
| 2163 | this._element.setAttribute('aria-hidden', true); |
||
| 2164 | |||
| 2165 | this._isTransitioning = false; |
||
| 2166 | |||
| 2167 | this._showBackdrop(function () { |
||
| 2168 | $$$1(document.body).removeClass(ClassName.OPEN); |
||
| 2169 | |||
| 2170 | _this7._resetAdjustments(); |
||
| 2171 | |||
| 2172 | _this7._resetScrollbar(); |
||
| 2173 | |||
| 2174 | $$$1(_this7._element).trigger(Event.HIDDEN); |
||
| 2175 | }); |
||
| 2176 | }; |
||
| 2177 | |||
| 2178 | _proto._removeBackdrop = function _removeBackdrop() { |
||
| 2179 | if (this._backdrop) { |
||
| 2180 | $$$1(this._backdrop).remove(); |
||
| 2181 | this._backdrop = null; |
||
| 2182 | } |
||
| 2183 | }; |
||
| 2184 | |||
| 2185 | _proto._showBackdrop = function _showBackdrop(callback) { |
||
| 2186 | var _this8 = this; |
||
| 2187 | |||
| 2188 | var animate = $$$1(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; |
||
| 2189 | |||
| 2190 | if (this._isShown && this._config.backdrop) { |
||
| 2191 | var doAnimate = Util.supportsTransitionEnd() && animate; |
||
| 2192 | this._backdrop = document.createElement('div'); |
||
| 2193 | this._backdrop.className = ClassName.BACKDROP; |
||
| 2194 | |||
| 2195 | if (animate) { |
||
| 2196 | $$$1(this._backdrop).addClass(animate); |
||
| 2197 | } |
||
| 2198 | |||
| 2199 | $$$1(this._backdrop).appendTo(document.body); |
||
| 2200 | $$$1(this._element).on(Event.CLICK_DISMISS, function (event) { |
||
| 2201 | if (_this8._ignoreBackdropClick) { |
||
| 2202 | _this8._ignoreBackdropClick = false; |
||
| 2203 | return; |
||
| 2204 | } |
||
| 2205 | |||
| 2206 | if (event.target !== event.currentTarget) { |
||
| 2207 | return; |
||
| 2208 | } |
||
| 2209 | |||
| 2210 | if (_this8._config.backdrop === 'static') { |
||
| 2211 | _this8._element.focus(); |
||
| 2212 | } else { |
||
| 2213 | _this8.hide(); |
||
| 2214 | } |
||
| 2215 | }); |
||
| 2216 | |||
| 2217 | if (doAnimate) { |
||
| 2218 | Util.reflow(this._backdrop); |
||
| 2219 | } |
||
| 2220 | |||
| 2221 | $$$1(this._backdrop).addClass(ClassName.SHOW); |
||
| 2222 | |||
| 2223 | if (!callback) { |
||
| 2224 | return; |
||
| 2225 | } |
||
| 2226 | |||
| 2227 | if (!doAnimate) { |
||
| 2228 | callback(); |
||
| 2229 | return; |
||
| 2230 | } |
||
| 2231 | |||
| 2232 | $$$1(this._backdrop).one(Util.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); |
||
| 2233 | } else if (!this._isShown && this._backdrop) { |
||
| 2234 | $$$1(this._backdrop).removeClass(ClassName.SHOW); |
||
| 2235 | |||
| 2236 | var callbackRemove = function callbackRemove() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
callbackRemove already seems to be declared on line 2236. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 2237 | _this8._removeBackdrop(); |
||
| 2238 | |||
| 2239 | if (callback) { |
||
| 2240 | callback(); |
||
| 2241 | } |
||
| 2242 | }; |
||
| 2243 | |||
| 2244 | if (Util.supportsTransitionEnd() && $$$1(this._element).hasClass(ClassName.FADE)) { |
||
| 2245 | $$$1(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); |
||
| 2246 | } else { |
||
| 2247 | callbackRemove(); |
||
| 2248 | } |
||
| 2249 | } else if (callback) { |
||
| 2250 | callback(); |
||
| 2251 | } |
||
| 2252 | }; // ---------------------------------------------------------------------- |
||
| 2253 | // the following methods are used to handle overflowing modals |
||
| 2254 | // todo (fat): these should probably be refactored out of modal.js |
||
| 2255 | // ---------------------------------------------------------------------- |
||
| 2256 | |||
| 2257 | |||
| 2258 | _proto._adjustDialog = function _adjustDialog() { |
||
| 2259 | var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; |
||
| 2260 | |||
| 2261 | if (!this._isBodyOverflowing && isModalOverflowing) { |
||
| 2262 | this._element.style.paddingLeft = this._scrollbarWidth + "px"; |
||
| 2263 | } |
||
| 2264 | |||
| 2265 | if (this._isBodyOverflowing && !isModalOverflowing) { |
||
| 2266 | this._element.style.paddingRight = this._scrollbarWidth + "px"; |
||
| 2267 | } |
||
| 2268 | }; |
||
| 2269 | |||
| 2270 | _proto._resetAdjustments = function _resetAdjustments() { |
||
| 2271 | this._element.style.paddingLeft = ''; |
||
| 2272 | this._element.style.paddingRight = ''; |
||
| 2273 | }; |
||
| 2274 | |||
| 2275 | _proto._checkScrollbar = function _checkScrollbar() { |
||
| 2276 | var rect = document.body.getBoundingClientRect(); |
||
| 2277 | this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; |
||
| 2278 | this._scrollbarWidth = this._getScrollbarWidth(); |
||
| 2279 | }; |
||
| 2280 | |||
| 2281 | _proto._setScrollbar = function _setScrollbar() { |
||
| 2282 | var _this9 = this; |
||
| 2283 | |||
| 2284 | if (this._isBodyOverflowing) { |
||
| 2285 | // Note: DOMNode.style.paddingRight returns the actual value or '' if not set |
||
| 2286 | // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set |
||
| 2287 | // Adjust fixed content padding |
||
| 2288 | $$$1(Selector.FIXED_CONTENT).each(function (index, element) { |
||
| 2289 | var actualPadding = $$$1(element)[0].style.paddingRight; |
||
| 2290 | var calculatedPadding = $$$1(element).css('padding-right'); |
||
| 2291 | $$$1(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px"); |
||
| 2292 | }); // Adjust sticky content margin |
||
| 2293 | |||
| 2294 | $$$1(Selector.STICKY_CONTENT).each(function (index, element) { |
||
| 2295 | var actualMargin = $$$1(element)[0].style.marginRight; |
||
| 2296 | var calculatedMargin = $$$1(element).css('margin-right'); |
||
| 2297 | $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px"); |
||
| 2298 | }); // Adjust navbar-toggler margin |
||
| 2299 | |||
| 2300 | $$$1(Selector.NAVBAR_TOGGLER).each(function (index, element) { |
||
| 2301 | var actualMargin = $$$1(element)[0].style.marginRight; |
||
| 2302 | var calculatedMargin = $$$1(element).css('margin-right'); |
||
| 2303 | $$$1(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) + _this9._scrollbarWidth + "px"); |
||
| 2304 | }); // Adjust body padding |
||
| 2305 | |||
| 2306 | var actualPadding = document.body.style.paddingRight; |
||
| 2307 | var calculatedPadding = $$$1('body').css('padding-right'); |
||
| 2308 | $$$1('body').data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + this._scrollbarWidth + "px"); |
||
| 2309 | } |
||
| 2310 | }; |
||
| 2311 | |||
| 2312 | _proto._resetScrollbar = function _resetScrollbar() { |
||
| 2313 | // Restore fixed content padding |
||
| 2314 | $$$1(Selector.FIXED_CONTENT).each(function (index, element) { |
||
| 2315 | var padding = $$$1(element).data('padding-right'); |
||
| 2316 | |||
| 2317 | if (typeof padding !== 'undefined') { |
||
| 2318 | $$$1(element).css('padding-right', padding).removeData('padding-right'); |
||
| 2319 | } |
||
| 2320 | }); // Restore sticky content and navbar-toggler margin |
||
| 2321 | |||
| 2322 | $$$1(Selector.STICKY_CONTENT + ", " + Selector.NAVBAR_TOGGLER).each(function (index, element) { |
||
| 2323 | var margin = $$$1(element).data('margin-right'); |
||
| 2324 | |||
| 2325 | if (typeof margin !== 'undefined') { |
||
| 2326 | $$$1(element).css('margin-right', margin).removeData('margin-right'); |
||
| 2327 | } |
||
| 2328 | }); // Restore body padding |
||
| 2329 | |||
| 2330 | var padding = $$$1('body').data('padding-right'); |
||
| 2331 | |||
| 2332 | if (typeof padding !== 'undefined') { |
||
| 2333 | $$$1('body').css('padding-right', padding).removeData('padding-right'); |
||
| 2334 | } |
||
| 2335 | }; |
||
| 2336 | |||
| 2337 | _proto._getScrollbarWidth = function _getScrollbarWidth() { |
||
| 2338 | // thx d.walsh |
||
| 2339 | var scrollDiv = document.createElement('div'); |
||
| 2340 | scrollDiv.className = ClassName.SCROLLBAR_MEASURER; |
||
| 2341 | document.body.appendChild(scrollDiv); |
||
| 2342 | var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; |
||
| 2343 | document.body.removeChild(scrollDiv); |
||
| 2344 | return scrollbarWidth; |
||
| 2345 | }; // Static |
||
| 2346 | |||
| 2347 | |||
| 2348 | Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) { |
||
| 2349 | return this.each(function () { |
||
| 2350 | var data = $$$1(this).data(DATA_KEY); |
||
| 2351 | |||
| 2352 | var _config = _extends({}, Modal.Default, $$$1(this).data(), typeof config === 'object' && config); |
||
| 2353 | |||
| 2354 | if (!data) { |
||
| 2355 | data = new Modal(this, _config); |
||
| 2356 | $$$1(this).data(DATA_KEY, data); |
||
| 2357 | } |
||
| 2358 | |||
| 2359 | if (typeof config === 'string') { |
||
| 2360 | if (typeof data[config] === 'undefined') { |
||
| 2361 | throw new TypeError("No method named \"" + config + "\""); |
||
| 2362 | } |
||
| 2363 | |||
| 2364 | data[config](relatedTarget); |
||
| 2365 | } else if (_config.show) { |
||
| 2366 | data.show(relatedTarget); |
||
| 2367 | } |
||
| 2368 | }); |
||
| 2369 | }; |
||
| 2370 | |||
| 2371 | _createClass(Modal, null, [{ |
||
| 2372 | key: "VERSION", |
||
| 2373 | get: function get() { |
||
| 2374 | return VERSION; |
||
| 2375 | } |
||
| 2376 | }, { |
||
| 2377 | key: "Default", |
||
| 2378 | get: function get() { |
||
| 2379 | return Default; |
||
| 2380 | } |
||
| 2381 | }]); |
||
| 2382 | return Modal; |
||
| 2383 | }(); |
||
| 2384 | /** |
||
| 2385 | * ------------------------------------------------------------------------ |
||
| 2386 | * Data Api implementation |
||
| 2387 | * ------------------------------------------------------------------------ |
||
| 2388 | */ |
||
| 2389 | |||
| 2390 | |||
| 2391 | $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { |
||
| 2392 | var _this10 = this; |
||
| 2393 | |||
| 2394 | var target; |
||
| 2395 | var selector = Util.getSelectorFromElement(this); |
||
| 2396 | |||
| 2397 | if (selector) { |
||
| 2398 | target = $$$1(selector)[0]; |
||
| 2399 | } |
||
| 2400 | |||
| 2401 | var config = $$$1(target).data(DATA_KEY) ? 'toggle' : _extends({}, $$$1(target).data(), $$$1(this).data()); |
||
|
0 ignored issues
–
show
|
|||
| 2402 | |||
| 2403 | if (this.tagName === 'A' || this.tagName === 'AREA') { |
||
| 2404 | event.preventDefault(); |
||
| 2405 | } |
||
| 2406 | |||
| 2407 | var $target = $$$1(target).one(Event.SHOW, function (showEvent) { |
||
| 2408 | if (showEvent.isDefaultPrevented()) { |
||
| 2409 | // Only register focus restorer if modal will actually get shown |
||
| 2410 | return; |
||
| 2411 | } |
||
| 2412 | |||
| 2413 | $target.one(Event.HIDDEN, function () { |
||
| 2414 | if ($$$1(_this10).is(':visible')) { |
||
| 2415 | _this10.focus(); |
||
| 2416 | } |
||
| 2417 | }); |
||
| 2418 | }); |
||
| 2419 | |||
| 2420 | Modal._jQueryInterface.call($$$1(target), config, this); |
||
| 2421 | }); |
||
| 2422 | /** |
||
| 2423 | * ------------------------------------------------------------------------ |
||
| 2424 | * jQuery |
||
| 2425 | * ------------------------------------------------------------------------ |
||
| 2426 | */ |
||
| 2427 | |||
| 2428 | $$$1.fn[NAME] = Modal._jQueryInterface; |
||
| 2429 | $$$1.fn[NAME].Constructor = Modal; |
||
| 2430 | |||
| 2431 | $$$1.fn[NAME].noConflict = function () { |
||
| 2432 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 2433 | return Modal._jQueryInterface; |
||
| 2434 | }; |
||
| 2435 | |||
| 2436 | return Modal; |
||
| 2437 | }($); |
||
| 2438 | |||
| 2439 | /** |
||
| 2440 | * -------------------------------------------------------------------------- |
||
| 2441 | * Bootstrap (v4.0.0): tooltip.js |
||
| 2442 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 2443 | * -------------------------------------------------------------------------- |
||
| 2444 | */ |
||
| 2445 | |||
| 2446 | var Tooltip = function ($$$1) { |
||
| 2447 | /** |
||
| 2448 | * ------------------------------------------------------------------------ |
||
| 2449 | * Constants |
||
| 2450 | * ------------------------------------------------------------------------ |
||
| 2451 | */ |
||
| 2452 | var NAME = 'tooltip'; |
||
| 2453 | var VERSION = '4.0.0'; |
||
| 2454 | var DATA_KEY = 'bs.tooltip'; |
||
| 2455 | var EVENT_KEY = "." + DATA_KEY; |
||
| 2456 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 2457 | var TRANSITION_DURATION = 150; |
||
| 2458 | var CLASS_PREFIX = 'bs-tooltip'; |
||
| 2459 | var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); |
||
| 2460 | var DefaultType = { |
||
| 2461 | animation: 'boolean', |
||
| 2462 | template: 'string', |
||
| 2463 | title: '(string|element|function)', |
||
| 2464 | trigger: 'string', |
||
| 2465 | delay: '(number|object)', |
||
| 2466 | html: 'boolean', |
||
| 2467 | selector: '(string|boolean)', |
||
| 2468 | placement: '(string|function)', |
||
| 2469 | offset: '(number|string)', |
||
| 2470 | container: '(string|element|boolean)', |
||
| 2471 | fallbackPlacement: '(string|array)', |
||
| 2472 | boundary: '(string|element)' |
||
| 2473 | }; |
||
| 2474 | var AttachmentMap = { |
||
| 2475 | AUTO: 'auto', |
||
| 2476 | TOP: 'top', |
||
| 2477 | RIGHT: 'right', |
||
| 2478 | BOTTOM: 'bottom', |
||
| 2479 | LEFT: 'left' |
||
| 2480 | }; |
||
| 2481 | var Default = { |
||
| 2482 | animation: true, |
||
| 2483 | template: '<div class="tooltip" role="tooltip">' + '<div class="arrow"></div>' + '<div class="tooltip-inner"></div></div>', |
||
| 2484 | trigger: 'hover focus', |
||
| 2485 | title: '', |
||
| 2486 | delay: 0, |
||
| 2487 | html: false, |
||
| 2488 | selector: false, |
||
| 2489 | placement: 'top', |
||
| 2490 | offset: 0, |
||
| 2491 | container: false, |
||
| 2492 | fallbackPlacement: 'flip', |
||
| 2493 | boundary: 'scrollParent' |
||
| 2494 | }; |
||
| 2495 | var HoverState = { |
||
| 2496 | SHOW: 'show', |
||
| 2497 | OUT: 'out' |
||
| 2498 | }; |
||
| 2499 | var Event = { |
||
| 2500 | HIDE: "hide" + EVENT_KEY, |
||
| 2501 | HIDDEN: "hidden" + EVENT_KEY, |
||
| 2502 | SHOW: "show" + EVENT_KEY, |
||
| 2503 | SHOWN: "shown" + EVENT_KEY, |
||
| 2504 | INSERTED: "inserted" + EVENT_KEY, |
||
| 2505 | CLICK: "click" + EVENT_KEY, |
||
| 2506 | FOCUSIN: "focusin" + EVENT_KEY, |
||
| 2507 | FOCUSOUT: "focusout" + EVENT_KEY, |
||
| 2508 | MOUSEENTER: "mouseenter" + EVENT_KEY, |
||
| 2509 | MOUSELEAVE: "mouseleave" + EVENT_KEY |
||
| 2510 | }; |
||
| 2511 | var ClassName = { |
||
| 2512 | FADE: 'fade', |
||
| 2513 | SHOW: 'show' |
||
| 2514 | }; |
||
| 2515 | var Selector = { |
||
| 2516 | TOOLTIP: '.tooltip', |
||
| 2517 | TOOLTIP_INNER: '.tooltip-inner', |
||
| 2518 | ARROW: '.arrow' |
||
| 2519 | }; |
||
| 2520 | var Trigger = { |
||
| 2521 | HOVER: 'hover', |
||
| 2522 | FOCUS: 'focus', |
||
| 2523 | CLICK: 'click', |
||
| 2524 | MANUAL: 'manual' |
||
| 2525 | /** |
||
| 2526 | * ------------------------------------------------------------------------ |
||
| 2527 | * Class Definition |
||
| 2528 | * ------------------------------------------------------------------------ |
||
| 2529 | */ |
||
| 2530 | |||
| 2531 | }; |
||
| 2532 | |||
| 2533 | var Tooltip = |
||
| 2534 | /*#__PURE__*/ |
||
| 2535 | function () { |
||
| 2536 | function Tooltip(element, config) { |
||
| 2537 | /** |
||
| 2538 | * Check for Popper dependency |
||
| 2539 | * Popper - https://popper.js.org |
||
| 2540 | */ |
||
| 2541 | if (typeof Popper === 'undefined') { |
||
| 2542 | throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)'); |
||
| 2543 | } // private |
||
| 2544 | |||
| 2545 | |||
| 2546 | this._isEnabled = true; |
||
| 2547 | this._timeout = 0; |
||
| 2548 | this._hoverState = ''; |
||
| 2549 | this._activeTrigger = {}; |
||
| 2550 | this._popper = null; // Protected |
||
| 2551 | |||
| 2552 | this.element = element; |
||
| 2553 | this.config = this._getConfig(config); |
||
| 2554 | this.tip = null; |
||
| 2555 | |||
| 2556 | this._setListeners(); |
||
| 2557 | } // Getters |
||
| 2558 | |||
| 2559 | |||
| 2560 | var _proto = Tooltip.prototype; |
||
| 2561 | |||
| 2562 | // Public |
||
| 2563 | _proto.enable = function enable() { |
||
| 2564 | this._isEnabled = true; |
||
| 2565 | }; |
||
| 2566 | |||
| 2567 | _proto.disable = function disable() { |
||
| 2568 | this._isEnabled = false; |
||
| 2569 | }; |
||
| 2570 | |||
| 2571 | _proto.toggleEnabled = function toggleEnabled() { |
||
| 2572 | this._isEnabled = !this._isEnabled; |
||
| 2573 | }; |
||
| 2574 | |||
| 2575 | _proto.toggle = function toggle(event) { |
||
| 2576 | if (!this._isEnabled) { |
||
| 2577 | return; |
||
| 2578 | } |
||
| 2579 | |||
| 2580 | if (event) { |
||
| 2581 | var dataKey = this.constructor.DATA_KEY; |
||
| 2582 | var context = $$$1(event.currentTarget).data(dataKey); |
||
| 2583 | |||
| 2584 | if (!context) { |
||
| 2585 | context = new this.constructor(event.currentTarget, this._getDelegateConfig()); |
||
| 2586 | $$$1(event.currentTarget).data(dataKey, context); |
||
| 2587 | } |
||
| 2588 | |||
| 2589 | context._activeTrigger.click = !context._activeTrigger.click; |
||
| 2590 | |||
| 2591 | if (context._isWithActiveTrigger()) { |
||
| 2592 | context._enter(null, context); |
||
| 2593 | } else { |
||
| 2594 | context._leave(null, context); |
||
| 2595 | } |
||
| 2596 | } else { |
||
| 2597 | if ($$$1(this.getTipElement()).hasClass(ClassName.SHOW)) { |
||
| 2598 | this._leave(null, this); |
||
| 2599 | |||
| 2600 | return; |
||
| 2601 | } |
||
| 2602 | |||
| 2603 | this._enter(null, this); |
||
| 2604 | } |
||
| 2605 | }; |
||
| 2606 | |||
| 2607 | _proto.dispose = function dispose() { |
||
| 2608 | clearTimeout(this._timeout); |
||
| 2609 | $$$1.removeData(this.element, this.constructor.DATA_KEY); |
||
| 2610 | $$$1(this.element).off(this.constructor.EVENT_KEY); |
||
| 2611 | $$$1(this.element).closest('.modal').off('hide.bs.modal'); |
||
| 2612 | |||
| 2613 | if (this.tip) { |
||
| 2614 | $$$1(this.tip).remove(); |
||
| 2615 | } |
||
| 2616 | |||
| 2617 | this._isEnabled = null; |
||
| 2618 | this._timeout = null; |
||
| 2619 | this._hoverState = null; |
||
| 2620 | this._activeTrigger = null; |
||
| 2621 | |||
| 2622 | if (this._popper !== null) { |
||
| 2623 | this._popper.destroy(); |
||
| 2624 | } |
||
| 2625 | |||
| 2626 | this._popper = null; |
||
| 2627 | this.element = null; |
||
| 2628 | this.config = null; |
||
| 2629 | this.tip = null; |
||
| 2630 | }; |
||
| 2631 | |||
| 2632 | _proto.show = function show() { |
||
| 2633 | var _this = this; |
||
| 2634 | |||
| 2635 | if ($$$1(this.element).css('display') === 'none') { |
||
| 2636 | throw new Error('Please use show on visible elements'); |
||
| 2637 | } |
||
| 2638 | |||
| 2639 | var showEvent = $$$1.Event(this.constructor.Event.SHOW); |
||
| 2640 | |||
| 2641 | if (this.isWithContent() && this._isEnabled) { |
||
| 2642 | $$$1(this.element).trigger(showEvent); |
||
| 2643 | var isInTheDom = $$$1.contains(this.element.ownerDocument.documentElement, this.element); |
||
| 2644 | |||
| 2645 | if (showEvent.isDefaultPrevented() || !isInTheDom) { |
||
| 2646 | return; |
||
| 2647 | } |
||
| 2648 | |||
| 2649 | var tip = this.getTipElement(); |
||
| 2650 | var tipId = Util.getUID(this.constructor.NAME); |
||
| 2651 | tip.setAttribute('id', tipId); |
||
| 2652 | this.element.setAttribute('aria-describedby', tipId); |
||
| 2653 | this.setContent(); |
||
| 2654 | |||
| 2655 | if (this.config.animation) { |
||
| 2656 | $$$1(tip).addClass(ClassName.FADE); |
||
| 2657 | } |
||
| 2658 | |||
| 2659 | var placement = typeof this.config.placement === 'function' ? this.config.placement.call(this, tip, this.element) : this.config.placement; |
||
| 2660 | |||
| 2661 | var attachment = this._getAttachment(placement); |
||
| 2662 | |||
| 2663 | this.addAttachmentClass(attachment); |
||
| 2664 | var container = this.config.container === false ? document.body : $$$1(this.config.container); |
||
| 2665 | $$$1(tip).data(this.constructor.DATA_KEY, this); |
||
| 2666 | |||
| 2667 | if (!$$$1.contains(this.element.ownerDocument.documentElement, this.tip)) { |
||
| 2668 | $$$1(tip).appendTo(container); |
||
| 2669 | } |
||
| 2670 | |||
| 2671 | $$$1(this.element).trigger(this.constructor.Event.INSERTED); |
||
| 2672 | this._popper = new Popper(this.element, tip, { |
||
| 2673 | placement: attachment, |
||
| 2674 | modifiers: { |
||
| 2675 | offset: { |
||
| 2676 | offset: this.config.offset |
||
| 2677 | }, |
||
| 2678 | flip: { |
||
| 2679 | behavior: this.config.fallbackPlacement |
||
| 2680 | }, |
||
| 2681 | arrow: { |
||
| 2682 | element: Selector.ARROW |
||
| 2683 | }, |
||
| 2684 | preventOverflow: { |
||
| 2685 | boundariesElement: this.config.boundary |
||
| 2686 | } |
||
| 2687 | }, |
||
| 2688 | onCreate: function onCreate(data) { |
||
| 2689 | if (data.originalPlacement !== data.placement) { |
||
| 2690 | _this._handlePopperPlacementChange(data); |
||
| 2691 | } |
||
| 2692 | }, |
||
| 2693 | onUpdate: function onUpdate(data) { |
||
| 2694 | _this._handlePopperPlacementChange(data); |
||
| 2695 | } |
||
| 2696 | }); |
||
| 2697 | $$$1(tip).addClass(ClassName.SHOW); // If this is a touch-enabled device we add extra |
||
| 2698 | // empty mouseover listeners to the body's immediate children; |
||
| 2699 | // only needed because of broken event delegation on iOS |
||
| 2700 | // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html |
||
| 2701 | |||
| 2702 | if ('ontouchstart' in document.documentElement) { |
||
| 2703 | $$$1('body').children().on('mouseover', null, $$$1.noop); |
||
| 2704 | } |
||
| 2705 | |||
| 2706 | var complete = function complete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
complete already seems to be declared on line 2706. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 2707 | if (_this.config.animation) { |
||
| 2708 | _this._fixTransition(); |
||
| 2709 | } |
||
| 2710 | |||
| 2711 | var prevHoverState = _this._hoverState; |
||
| 2712 | _this._hoverState = null; |
||
| 2713 | $$$1(_this.element).trigger(_this.constructor.Event.SHOWN); |
||
| 2714 | |||
| 2715 | if (prevHoverState === HoverState.OUT) { |
||
| 2716 | _this._leave(null, _this); |
||
| 2717 | } |
||
| 2718 | }; |
||
| 2719 | |||
| 2720 | if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) { |
||
| 2721 | $$$1(this.tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(Tooltip._TRANSITION_DURATION); |
||
| 2722 | } else { |
||
| 2723 | complete(); |
||
| 2724 | } |
||
| 2725 | } |
||
| 2726 | }; |
||
| 2727 | |||
| 2728 | _proto.hide = function hide(callback) { |
||
| 2729 | var _this2 = this; |
||
| 2730 | |||
| 2731 | var tip = this.getTipElement(); |
||
| 2732 | var hideEvent = $$$1.Event(this.constructor.Event.HIDE); |
||
| 2733 | |||
| 2734 | var complete = function complete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
complete already seems to be declared on line 2734. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 2735 | if (_this2._hoverState !== HoverState.SHOW && tip.parentNode) { |
||
| 2736 | tip.parentNode.removeChild(tip); |
||
| 2737 | } |
||
| 2738 | |||
| 2739 | _this2._cleanTipClass(); |
||
| 2740 | |||
| 2741 | _this2.element.removeAttribute('aria-describedby'); |
||
| 2742 | |||
| 2743 | $$$1(_this2.element).trigger(_this2.constructor.Event.HIDDEN); |
||
| 2744 | |||
| 2745 | if (_this2._popper !== null) { |
||
| 2746 | _this2._popper.destroy(); |
||
| 2747 | } |
||
| 2748 | |||
| 2749 | if (callback) { |
||
| 2750 | callback(); |
||
| 2751 | } |
||
| 2752 | }; |
||
| 2753 | |||
| 2754 | $$$1(this.element).trigger(hideEvent); |
||
| 2755 | |||
| 2756 | if (hideEvent.isDefaultPrevented()) { |
||
| 2757 | return; |
||
| 2758 | } |
||
| 2759 | |||
| 2760 | $$$1(tip).removeClass(ClassName.SHOW); // If this is a touch-enabled device we remove the extra |
||
| 2761 | // empty mouseover listeners we added for iOS support |
||
| 2762 | |||
| 2763 | if ('ontouchstart' in document.documentElement) { |
||
| 2764 | $$$1('body').children().off('mouseover', null, $$$1.noop); |
||
| 2765 | } |
||
| 2766 | |||
| 2767 | this._activeTrigger[Trigger.CLICK] = false; |
||
| 2768 | this._activeTrigger[Trigger.FOCUS] = false; |
||
| 2769 | this._activeTrigger[Trigger.HOVER] = false; |
||
| 2770 | |||
| 2771 | if (Util.supportsTransitionEnd() && $$$1(this.tip).hasClass(ClassName.FADE)) { |
||
| 2772 | $$$1(tip).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 2773 | } else { |
||
| 2774 | complete(); |
||
| 2775 | } |
||
| 2776 | |||
| 2777 | this._hoverState = ''; |
||
| 2778 | }; |
||
| 2779 | |||
| 2780 | _proto.update = function update() { |
||
| 2781 | if (this._popper !== null) { |
||
| 2782 | this._popper.scheduleUpdate(); |
||
| 2783 | } |
||
| 2784 | }; // Protected |
||
| 2785 | |||
| 2786 | |||
| 2787 | _proto.isWithContent = function isWithContent() { |
||
| 2788 | return Boolean(this.getTitle()); |
||
| 2789 | }; |
||
| 2790 | |||
| 2791 | _proto.addAttachmentClass = function addAttachmentClass(attachment) { |
||
| 2792 | $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); |
||
| 2793 | }; |
||
| 2794 | |||
| 2795 | _proto.getTipElement = function getTipElement() { |
||
| 2796 | this.tip = this.tip || $$$1(this.config.template)[0]; |
||
| 2797 | return this.tip; |
||
| 2798 | }; |
||
| 2799 | |||
| 2800 | _proto.setContent = function setContent() { |
||
| 2801 | var $tip = $$$1(this.getTipElement()); |
||
| 2802 | this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle()); |
||
| 2803 | $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); |
||
| 2804 | }; |
||
| 2805 | |||
| 2806 | _proto.setElementContent = function setElementContent($element, content) { |
||
| 2807 | var html = this.config.html; |
||
| 2808 | |||
| 2809 | if (typeof content === 'object' && (content.nodeType || content.jquery)) { |
||
| 2810 | // Content is a DOM node or a jQuery |
||
| 2811 | if (html) { |
||
| 2812 | if (!$$$1(content).parent().is($element)) { |
||
| 2813 | $element.empty().append(content); |
||
| 2814 | } |
||
| 2815 | } else { |
||
| 2816 | $element.text($$$1(content).text()); |
||
| 2817 | } |
||
| 2818 | } else { |
||
| 2819 | $element[html ? 'html' : 'text'](content); |
||
| 2820 | } |
||
| 2821 | }; |
||
| 2822 | |||
| 2823 | _proto.getTitle = function getTitle() { |
||
| 2824 | var title = this.element.getAttribute('data-original-title'); |
||
| 2825 | |||
| 2826 | if (!title) { |
||
| 2827 | title = typeof this.config.title === 'function' ? this.config.title.call(this.element) : this.config.title; |
||
| 2828 | } |
||
| 2829 | |||
| 2830 | return title; |
||
| 2831 | }; // Private |
||
| 2832 | |||
| 2833 | |||
| 2834 | _proto._getAttachment = function _getAttachment(placement) { |
||
| 2835 | return AttachmentMap[placement.toUpperCase()]; |
||
| 2836 | }; |
||
| 2837 | |||
| 2838 | _proto._setListeners = function _setListeners() { |
||
| 2839 | var _this3 = this; |
||
| 2840 | |||
| 2841 | var triggers = this.config.trigger.split(' '); |
||
| 2842 | triggers.forEach(function (trigger) { |
||
| 2843 | if (trigger === 'click') { |
||
| 2844 | $$$1(_this3.element).on(_this3.constructor.Event.CLICK, _this3.config.selector, function (event) { |
||
| 2845 | return _this3.toggle(event); |
||
| 2846 | }); |
||
| 2847 | } else if (trigger !== Trigger.MANUAL) { |
||
| 2848 | var eventIn = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSEENTER : _this3.constructor.Event.FOCUSIN; |
||
| 2849 | var eventOut = trigger === Trigger.HOVER ? _this3.constructor.Event.MOUSELEAVE : _this3.constructor.Event.FOCUSOUT; |
||
| 2850 | $$$1(_this3.element).on(eventIn, _this3.config.selector, function (event) { |
||
| 2851 | return _this3._enter(event); |
||
| 2852 | }).on(eventOut, _this3.config.selector, function (event) { |
||
| 2853 | return _this3._leave(event); |
||
| 2854 | }); |
||
| 2855 | } |
||
| 2856 | |||
| 2857 | $$$1(_this3.element).closest('.modal').on('hide.bs.modal', function () { |
||
| 2858 | return _this3.hide(); |
||
| 2859 | }); |
||
| 2860 | }); |
||
| 2861 | |||
| 2862 | if (this.config.selector) { |
||
| 2863 | this.config = _extends({}, this.config, { |
||
| 2864 | trigger: 'manual', |
||
| 2865 | selector: '' |
||
| 2866 | }); |
||
| 2867 | } else { |
||
| 2868 | this._fixTitle(); |
||
| 2869 | } |
||
| 2870 | }; |
||
| 2871 | |||
| 2872 | _proto._fixTitle = function _fixTitle() { |
||
| 2873 | var titleType = typeof this.element.getAttribute('data-original-title'); |
||
| 2874 | |||
| 2875 | if (this.element.getAttribute('title') || titleType !== 'string') { |
||
| 2876 | this.element.setAttribute('data-original-title', this.element.getAttribute('title') || ''); |
||
| 2877 | this.element.setAttribute('title', ''); |
||
| 2878 | } |
||
| 2879 | }; |
||
| 2880 | |||
| 2881 | _proto._enter = function _enter(event, context) { |
||
| 2882 | var dataKey = this.constructor.DATA_KEY; |
||
| 2883 | context = context || $$$1(event.currentTarget).data(dataKey); |
||
| 2884 | |||
| 2885 | if (!context) { |
||
| 2886 | context = new this.constructor(event.currentTarget, this._getDelegateConfig()); |
||
| 2887 | $$$1(event.currentTarget).data(dataKey, context); |
||
| 2888 | } |
||
| 2889 | |||
| 2890 | if (event) { |
||
| 2891 | context._activeTrigger[event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER] = true; |
||
| 2892 | } |
||
| 2893 | |||
| 2894 | if ($$$1(context.getTipElement()).hasClass(ClassName.SHOW) || context._hoverState === HoverState.SHOW) { |
||
| 2895 | context._hoverState = HoverState.SHOW; |
||
| 2896 | return; |
||
| 2897 | } |
||
| 2898 | |||
| 2899 | clearTimeout(context._timeout); |
||
| 2900 | context._hoverState = HoverState.SHOW; |
||
| 2901 | |||
| 2902 | if (!context.config.delay || !context.config.delay.show) { |
||
| 2903 | context.show(); |
||
| 2904 | return; |
||
| 2905 | } |
||
| 2906 | |||
| 2907 | context._timeout = setTimeout(function () { |
||
| 2908 | if (context._hoverState === HoverState.SHOW) { |
||
| 2909 | context.show(); |
||
| 2910 | } |
||
| 2911 | }, context.config.delay.show); |
||
| 2912 | }; |
||
| 2913 | |||
| 2914 | _proto._leave = function _leave(event, context) { |
||
| 2915 | var dataKey = this.constructor.DATA_KEY; |
||
| 2916 | context = context || $$$1(event.currentTarget).data(dataKey); |
||
| 2917 | |||
| 2918 | if (!context) { |
||
| 2919 | context = new this.constructor(event.currentTarget, this._getDelegateConfig()); |
||
| 2920 | $$$1(event.currentTarget).data(dataKey, context); |
||
| 2921 | } |
||
| 2922 | |||
| 2923 | if (event) { |
||
| 2924 | context._activeTrigger[event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER] = false; |
||
| 2925 | } |
||
| 2926 | |||
| 2927 | if (context._isWithActiveTrigger()) { |
||
| 2928 | return; |
||
| 2929 | } |
||
| 2930 | |||
| 2931 | clearTimeout(context._timeout); |
||
| 2932 | context._hoverState = HoverState.OUT; |
||
| 2933 | |||
| 2934 | if (!context.config.delay || !context.config.delay.hide) { |
||
| 2935 | context.hide(); |
||
| 2936 | return; |
||
| 2937 | } |
||
| 2938 | |||
| 2939 | context._timeout = setTimeout(function () { |
||
| 2940 | if (context._hoverState === HoverState.OUT) { |
||
| 2941 | context.hide(); |
||
| 2942 | } |
||
| 2943 | }, context.config.delay.hide); |
||
| 2944 | }; |
||
| 2945 | |||
| 2946 | _proto._isWithActiveTrigger = function _isWithActiveTrigger() { |
||
| 2947 | for (var trigger in this._activeTrigger) { |
||
|
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...
|
|||
| 2948 | if (this._activeTrigger[trigger]) { |
||
| 2949 | return true; |
||
| 2950 | } |
||
| 2951 | } |
||
| 2952 | |||
| 2953 | return false; |
||
| 2954 | }; |
||
| 2955 | |||
| 2956 | _proto._getConfig = function _getConfig(config) { |
||
| 2957 | config = _extends({}, this.constructor.Default, $$$1(this.element).data(), config); |
||
| 2958 | |||
| 2959 | if (typeof config.delay === 'number') { |
||
| 2960 | config.delay = { |
||
| 2961 | show: config.delay, |
||
| 2962 | hide: config.delay |
||
| 2963 | }; |
||
| 2964 | } |
||
| 2965 | |||
| 2966 | if (typeof config.title === 'number') { |
||
| 2967 | config.title = config.title.toString(); |
||
| 2968 | } |
||
| 2969 | |||
| 2970 | if (typeof config.content === 'number') { |
||
| 2971 | config.content = config.content.toString(); |
||
| 2972 | } |
||
| 2973 | |||
| 2974 | Util.typeCheckConfig(NAME, config, this.constructor.DefaultType); |
||
| 2975 | return config; |
||
| 2976 | }; |
||
| 2977 | |||
| 2978 | _proto._getDelegateConfig = function _getDelegateConfig() { |
||
| 2979 | var config = {}; |
||
| 2980 | |||
| 2981 | if (this.config) { |
||
| 2982 | for (var key in this.config) { |
||
|
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...
|
|||
| 2983 | if (this.constructor.Default[key] !== this.config[key]) { |
||
| 2984 | config[key] = this.config[key]; |
||
| 2985 | } |
||
| 2986 | } |
||
| 2987 | } |
||
| 2988 | |||
| 2989 | return config; |
||
| 2990 | }; |
||
| 2991 | |||
| 2992 | _proto._cleanTipClass = function _cleanTipClass() { |
||
| 2993 | var $tip = $$$1(this.getTipElement()); |
||
| 2994 | var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); |
||
| 2995 | |||
| 2996 | if (tabClass !== null && tabClass.length > 0) { |
||
| 2997 | $tip.removeClass(tabClass.join('')); |
||
| 2998 | } |
||
| 2999 | }; |
||
| 3000 | |||
| 3001 | _proto._handlePopperPlacementChange = function _handlePopperPlacementChange(data) { |
||
| 3002 | this._cleanTipClass(); |
||
| 3003 | |||
| 3004 | this.addAttachmentClass(this._getAttachment(data.placement)); |
||
| 3005 | }; |
||
| 3006 | |||
| 3007 | _proto._fixTransition = function _fixTransition() { |
||
| 3008 | var tip = this.getTipElement(); |
||
| 3009 | var initConfigAnimation = this.config.animation; |
||
| 3010 | |||
| 3011 | if (tip.getAttribute('x-placement') !== null) { |
||
| 3012 | return; |
||
| 3013 | } |
||
| 3014 | |||
| 3015 | $$$1(tip).removeClass(ClassName.FADE); |
||
| 3016 | this.config.animation = false; |
||
| 3017 | this.hide(); |
||
| 3018 | this.show(); |
||
| 3019 | this.config.animation = initConfigAnimation; |
||
| 3020 | }; // Static |
||
| 3021 | |||
| 3022 | |||
| 3023 | Tooltip._jQueryInterface = function _jQueryInterface(config) { |
||
| 3024 | return this.each(function () { |
||
| 3025 | var data = $$$1(this).data(DATA_KEY); |
||
| 3026 | |||
| 3027 | var _config = typeof config === 'object' && config; |
||
| 3028 | |||
| 3029 | if (!data && /dispose|hide/.test(config)) { |
||
| 3030 | return; |
||
| 3031 | } |
||
| 3032 | |||
| 3033 | if (!data) { |
||
| 3034 | data = new Tooltip(this, _config); |
||
| 3035 | $$$1(this).data(DATA_KEY, data); |
||
| 3036 | } |
||
| 3037 | |||
| 3038 | if (typeof config === 'string') { |
||
| 3039 | if (typeof data[config] === 'undefined') { |
||
| 3040 | throw new TypeError("No method named \"" + config + "\""); |
||
| 3041 | } |
||
| 3042 | |||
| 3043 | data[config](); |
||
| 3044 | } |
||
| 3045 | }); |
||
| 3046 | }; |
||
| 3047 | |||
| 3048 | _createClass(Tooltip, null, [{ |
||
| 3049 | key: "VERSION", |
||
| 3050 | get: function get() { |
||
| 3051 | return VERSION; |
||
| 3052 | } |
||
| 3053 | }, { |
||
| 3054 | key: "Default", |
||
| 3055 | get: function get() { |
||
| 3056 | return Default; |
||
| 3057 | } |
||
| 3058 | }, { |
||
| 3059 | key: "NAME", |
||
| 3060 | get: function get() { |
||
| 3061 | return NAME; |
||
| 3062 | } |
||
| 3063 | }, { |
||
| 3064 | key: "DATA_KEY", |
||
| 3065 | get: function get() { |
||
| 3066 | return DATA_KEY; |
||
| 3067 | } |
||
| 3068 | }, { |
||
| 3069 | key: "Event", |
||
| 3070 | get: function get() { |
||
| 3071 | return Event; |
||
| 3072 | } |
||
| 3073 | }, { |
||
| 3074 | key: "EVENT_KEY", |
||
| 3075 | get: function get() { |
||
| 3076 | return EVENT_KEY; |
||
| 3077 | } |
||
| 3078 | }, { |
||
| 3079 | key: "DefaultType", |
||
| 3080 | get: function get() { |
||
| 3081 | return DefaultType; |
||
| 3082 | } |
||
| 3083 | }]); |
||
| 3084 | return Tooltip; |
||
| 3085 | }(); |
||
| 3086 | /** |
||
| 3087 | * ------------------------------------------------------------------------ |
||
| 3088 | * jQuery |
||
| 3089 | * ------------------------------------------------------------------------ |
||
| 3090 | */ |
||
| 3091 | |||
| 3092 | |||
| 3093 | $$$1.fn[NAME] = Tooltip._jQueryInterface; |
||
| 3094 | $$$1.fn[NAME].Constructor = Tooltip; |
||
| 3095 | |||
| 3096 | $$$1.fn[NAME].noConflict = function () { |
||
| 3097 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 3098 | return Tooltip._jQueryInterface; |
||
| 3099 | }; |
||
| 3100 | |||
| 3101 | return Tooltip; |
||
| 3102 | }($, Popper); |
||
| 3103 | |||
| 3104 | /** |
||
| 3105 | * -------------------------------------------------------------------------- |
||
| 3106 | * Bootstrap (v4.0.0): popover.js |
||
| 3107 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 3108 | * -------------------------------------------------------------------------- |
||
| 3109 | */ |
||
| 3110 | |||
| 3111 | var Popover = function ($$$1) { |
||
| 3112 | /** |
||
| 3113 | * ------------------------------------------------------------------------ |
||
| 3114 | * Constants |
||
| 3115 | * ------------------------------------------------------------------------ |
||
| 3116 | */ |
||
| 3117 | var NAME = 'popover'; |
||
| 3118 | var VERSION = '4.0.0'; |
||
| 3119 | var DATA_KEY = 'bs.popover'; |
||
| 3120 | var EVENT_KEY = "." + DATA_KEY; |
||
| 3121 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 3122 | var CLASS_PREFIX = 'bs-popover'; |
||
| 3123 | var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g'); |
||
| 3124 | var Default = _extends({}, Tooltip.Default, { |
||
| 3125 | placement: 'right', |
||
| 3126 | trigger: 'click', |
||
| 3127 | content: '', |
||
| 3128 | template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>' |
||
| 3129 | }); |
||
| 3130 | var DefaultType = _extends({}, Tooltip.DefaultType, { |
||
| 3131 | content: '(string|element|function)' |
||
| 3132 | }); |
||
| 3133 | var ClassName = { |
||
| 3134 | FADE: 'fade', |
||
| 3135 | SHOW: 'show' |
||
| 3136 | }; |
||
| 3137 | var Selector = { |
||
| 3138 | TITLE: '.popover-header', |
||
| 3139 | CONTENT: '.popover-body' |
||
| 3140 | }; |
||
| 3141 | var Event = { |
||
| 3142 | HIDE: "hide" + EVENT_KEY, |
||
| 3143 | HIDDEN: "hidden" + EVENT_KEY, |
||
| 3144 | SHOW: "show" + EVENT_KEY, |
||
| 3145 | SHOWN: "shown" + EVENT_KEY, |
||
| 3146 | INSERTED: "inserted" + EVENT_KEY, |
||
| 3147 | CLICK: "click" + EVENT_KEY, |
||
| 3148 | FOCUSIN: "focusin" + EVENT_KEY, |
||
| 3149 | FOCUSOUT: "focusout" + EVENT_KEY, |
||
| 3150 | MOUSEENTER: "mouseenter" + EVENT_KEY, |
||
| 3151 | MOUSELEAVE: "mouseleave" + EVENT_KEY |
||
| 3152 | /** |
||
| 3153 | * ------------------------------------------------------------------------ |
||
| 3154 | * Class Definition |
||
| 3155 | * ------------------------------------------------------------------------ |
||
| 3156 | */ |
||
| 3157 | |||
| 3158 | }; |
||
| 3159 | |||
| 3160 | var Popover = |
||
| 3161 | /*#__PURE__*/ |
||
| 3162 | function (_Tooltip) { |
||
| 3163 | _inheritsLoose(Popover, _Tooltip); |
||
| 3164 | |||
| 3165 | function Popover() { |
||
| 3166 | return _Tooltip.apply(this, arguments) || this; |
||
| 3167 | } |
||
| 3168 | |||
| 3169 | var _proto = Popover.prototype; |
||
| 3170 | |||
| 3171 | // Overrides |
||
| 3172 | _proto.isWithContent = function isWithContent() { |
||
| 3173 | return this.getTitle() || this._getContent(); |
||
| 3174 | }; |
||
| 3175 | |||
| 3176 | _proto.addAttachmentClass = function addAttachmentClass(attachment) { |
||
| 3177 | $$$1(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment); |
||
| 3178 | }; |
||
| 3179 | |||
| 3180 | _proto.getTipElement = function getTipElement() { |
||
| 3181 | this.tip = this.tip || $$$1(this.config.template)[0]; |
||
| 3182 | return this.tip; |
||
| 3183 | }; |
||
| 3184 | |||
| 3185 | _proto.setContent = function setContent() { |
||
| 3186 | var $tip = $$$1(this.getTipElement()); // We use append for html objects to maintain js events |
||
| 3187 | |||
| 3188 | this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); |
||
| 3189 | |||
| 3190 | var content = this._getContent(); |
||
| 3191 | |||
| 3192 | if (typeof content === 'function') { |
||
| 3193 | content = content.call(this.element); |
||
| 3194 | } |
||
| 3195 | |||
| 3196 | this.setElementContent($tip.find(Selector.CONTENT), content); |
||
| 3197 | $tip.removeClass(ClassName.FADE + " " + ClassName.SHOW); |
||
| 3198 | }; // Private |
||
| 3199 | |||
| 3200 | |||
| 3201 | _proto._getContent = function _getContent() { |
||
| 3202 | return this.element.getAttribute('data-content') || this.config.content; |
||
| 3203 | }; |
||
| 3204 | |||
| 3205 | _proto._cleanTipClass = function _cleanTipClass() { |
||
| 3206 | var $tip = $$$1(this.getTipElement()); |
||
| 3207 | var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); |
||
| 3208 | |||
| 3209 | if (tabClass !== null && tabClass.length > 0) { |
||
| 3210 | $tip.removeClass(tabClass.join('')); |
||
| 3211 | } |
||
| 3212 | }; // Static |
||
| 3213 | |||
| 3214 | |||
| 3215 | Popover._jQueryInterface = function _jQueryInterface(config) { |
||
| 3216 | return this.each(function () { |
||
| 3217 | var data = $$$1(this).data(DATA_KEY); |
||
| 3218 | |||
| 3219 | var _config = typeof config === 'object' ? config : null; |
||
| 3220 | |||
| 3221 | if (!data && /destroy|hide/.test(config)) { |
||
| 3222 | return; |
||
| 3223 | } |
||
| 3224 | |||
| 3225 | if (!data) { |
||
| 3226 | data = new Popover(this, _config); |
||
| 3227 | $$$1(this).data(DATA_KEY, data); |
||
| 3228 | } |
||
| 3229 | |||
| 3230 | if (typeof config === 'string') { |
||
| 3231 | if (typeof data[config] === 'undefined') { |
||
| 3232 | throw new TypeError("No method named \"" + config + "\""); |
||
| 3233 | } |
||
| 3234 | |||
| 3235 | data[config](); |
||
| 3236 | } |
||
| 3237 | }); |
||
| 3238 | }; |
||
| 3239 | |||
| 3240 | _createClass(Popover, null, [{ |
||
| 3241 | key: "VERSION", |
||
| 3242 | // Getters |
||
| 3243 | get: function get() { |
||
| 3244 | return VERSION; |
||
| 3245 | } |
||
| 3246 | }, { |
||
| 3247 | key: "Default", |
||
| 3248 | get: function get() { |
||
| 3249 | return Default; |
||
| 3250 | } |
||
| 3251 | }, { |
||
| 3252 | key: "NAME", |
||
| 3253 | get: function get() { |
||
| 3254 | return NAME; |
||
| 3255 | } |
||
| 3256 | }, { |
||
| 3257 | key: "DATA_KEY", |
||
| 3258 | get: function get() { |
||
| 3259 | return DATA_KEY; |
||
| 3260 | } |
||
| 3261 | }, { |
||
| 3262 | key: "Event", |
||
| 3263 | get: function get() { |
||
| 3264 | return Event; |
||
| 3265 | } |
||
| 3266 | }, { |
||
| 3267 | key: "EVENT_KEY", |
||
| 3268 | get: function get() { |
||
| 3269 | return EVENT_KEY; |
||
| 3270 | } |
||
| 3271 | }, { |
||
| 3272 | key: "DefaultType", |
||
| 3273 | get: function get() { |
||
| 3274 | return DefaultType; |
||
| 3275 | } |
||
| 3276 | }]); |
||
| 3277 | return Popover; |
||
| 3278 | }(Tooltip); |
||
| 3279 | /** |
||
| 3280 | * ------------------------------------------------------------------------ |
||
| 3281 | * jQuery |
||
| 3282 | * ------------------------------------------------------------------------ |
||
| 3283 | */ |
||
| 3284 | |||
| 3285 | |||
| 3286 | $$$1.fn[NAME] = Popover._jQueryInterface; |
||
| 3287 | $$$1.fn[NAME].Constructor = Popover; |
||
| 3288 | |||
| 3289 | $$$1.fn[NAME].noConflict = function () { |
||
| 3290 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 3291 | return Popover._jQueryInterface; |
||
| 3292 | }; |
||
| 3293 | |||
| 3294 | return Popover; |
||
| 3295 | }($); |
||
| 3296 | |||
| 3297 | /** |
||
| 3298 | * -------------------------------------------------------------------------- |
||
| 3299 | * Bootstrap (v4.0.0): scrollspy.js |
||
| 3300 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 3301 | * -------------------------------------------------------------------------- |
||
| 3302 | */ |
||
| 3303 | |||
| 3304 | var ScrollSpy = function ($$$1) { |
||
| 3305 | /** |
||
| 3306 | * ------------------------------------------------------------------------ |
||
| 3307 | * Constants |
||
| 3308 | * ------------------------------------------------------------------------ |
||
| 3309 | */ |
||
| 3310 | var NAME = 'scrollspy'; |
||
| 3311 | var VERSION = '4.0.0'; |
||
| 3312 | var DATA_KEY = 'bs.scrollspy'; |
||
| 3313 | var EVENT_KEY = "." + DATA_KEY; |
||
| 3314 | var DATA_API_KEY = '.data-api'; |
||
| 3315 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 3316 | var Default = { |
||
| 3317 | offset: 10, |
||
| 3318 | method: 'auto', |
||
| 3319 | target: '' |
||
| 3320 | }; |
||
| 3321 | var DefaultType = { |
||
| 3322 | offset: 'number', |
||
| 3323 | method: 'string', |
||
| 3324 | target: '(string|element)' |
||
| 3325 | }; |
||
| 3326 | var Event = { |
||
| 3327 | ACTIVATE: "activate" + EVENT_KEY, |
||
| 3328 | SCROLL: "scroll" + EVENT_KEY, |
||
| 3329 | LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY |
||
| 3330 | }; |
||
| 3331 | var ClassName = { |
||
| 3332 | DROPDOWN_ITEM: 'dropdown-item', |
||
| 3333 | DROPDOWN_MENU: 'dropdown-menu', |
||
| 3334 | ACTIVE: 'active' |
||
| 3335 | }; |
||
| 3336 | var Selector = { |
||
| 3337 | DATA_SPY: '[data-spy="scroll"]', |
||
| 3338 | ACTIVE: '.active', |
||
| 3339 | NAV_LIST_GROUP: '.nav, .list-group', |
||
| 3340 | NAV_LINKS: '.nav-link', |
||
| 3341 | NAV_ITEMS: '.nav-item', |
||
| 3342 | LIST_ITEMS: '.list-group-item', |
||
| 3343 | DROPDOWN: '.dropdown', |
||
| 3344 | DROPDOWN_ITEMS: '.dropdown-item', |
||
| 3345 | DROPDOWN_TOGGLE: '.dropdown-toggle' |
||
| 3346 | }; |
||
| 3347 | var OffsetMethod = { |
||
| 3348 | OFFSET: 'offset', |
||
| 3349 | POSITION: 'position' |
||
| 3350 | /** |
||
| 3351 | * ------------------------------------------------------------------------ |
||
| 3352 | * Class Definition |
||
| 3353 | * ------------------------------------------------------------------------ |
||
| 3354 | */ |
||
| 3355 | |||
| 3356 | }; |
||
| 3357 | |||
| 3358 | var ScrollSpy = |
||
| 3359 | /*#__PURE__*/ |
||
| 3360 | function () { |
||
| 3361 | function ScrollSpy(element, config) { |
||
| 3362 | var _this = this; |
||
| 3363 | |||
| 3364 | this._element = element; |
||
| 3365 | this._scrollElement = element.tagName === 'BODY' ? window : element; |
||
| 3366 | this._config = this._getConfig(config); |
||
| 3367 | this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS); |
||
| 3368 | this._offsets = []; |
||
| 3369 | this._targets = []; |
||
| 3370 | this._activeTarget = null; |
||
| 3371 | this._scrollHeight = 0; |
||
| 3372 | $$$1(this._scrollElement).on(Event.SCROLL, function (event) { |
||
| 3373 | return _this._process(event); |
||
| 3374 | }); |
||
| 3375 | this.refresh(); |
||
| 3376 | |||
| 3377 | this._process(); |
||
| 3378 | } // Getters |
||
| 3379 | |||
| 3380 | |||
| 3381 | var _proto = ScrollSpy.prototype; |
||
| 3382 | |||
| 3383 | // Public |
||
| 3384 | _proto.refresh = function refresh() { |
||
| 3385 | var _this2 = this; |
||
| 3386 | |||
| 3387 | var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; |
||
| 3388 | var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; |
||
| 3389 | var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; |
||
| 3390 | this._offsets = []; |
||
| 3391 | this._targets = []; |
||
| 3392 | this._scrollHeight = this._getScrollHeight(); |
||
| 3393 | var targets = $$$1.makeArray($$$1(this._selector)); |
||
| 3394 | targets.map(function (element) { |
||
| 3395 | var target; |
||
| 3396 | var targetSelector = Util.getSelectorFromElement(element); |
||
| 3397 | |||
| 3398 | if (targetSelector) { |
||
| 3399 | target = $$$1(targetSelector)[0]; |
||
| 3400 | } |
||
| 3401 | |||
| 3402 | if (target) { |
||
| 3403 | var targetBCR = target.getBoundingClientRect(); |
||
| 3404 | |||
| 3405 | if (targetBCR.width || targetBCR.height) { |
||
| 3406 | // TODO (fat): remove sketch reliance on jQuery position/offset |
||
| 3407 | return [$$$1(target)[offsetMethod]().top + offsetBase, targetSelector]; |
||
| 3408 | } |
||
| 3409 | } |
||
| 3410 | |||
| 3411 | return null; |
||
| 3412 | }).filter(function (item) { |
||
| 3413 | return item; |
||
| 3414 | }).sort(function (a, b) { |
||
| 3415 | return a[0] - b[0]; |
||
| 3416 | }).forEach(function (item) { |
||
| 3417 | _this2._offsets.push(item[0]); |
||
| 3418 | |||
| 3419 | _this2._targets.push(item[1]); |
||
| 3420 | }); |
||
| 3421 | }; |
||
| 3422 | |||
| 3423 | _proto.dispose = function dispose() { |
||
| 3424 | $$$1.removeData(this._element, DATA_KEY); |
||
| 3425 | $$$1(this._scrollElement).off(EVENT_KEY); |
||
| 3426 | this._element = null; |
||
| 3427 | this._scrollElement = null; |
||
| 3428 | this._config = null; |
||
| 3429 | this._selector = null; |
||
| 3430 | this._offsets = null; |
||
| 3431 | this._targets = null; |
||
| 3432 | this._activeTarget = null; |
||
| 3433 | this._scrollHeight = null; |
||
| 3434 | }; // Private |
||
| 3435 | |||
| 3436 | |||
| 3437 | _proto._getConfig = function _getConfig(config) { |
||
| 3438 | config = _extends({}, Default, config); |
||
| 3439 | |||
| 3440 | if (typeof config.target !== 'string') { |
||
| 3441 | var id = $$$1(config.target).attr('id'); |
||
| 3442 | |||
| 3443 | if (!id) { |
||
| 3444 | id = Util.getUID(NAME); |
||
| 3445 | $$$1(config.target).attr('id', id); |
||
| 3446 | } |
||
| 3447 | |||
| 3448 | config.target = "#" + id; |
||
| 3449 | } |
||
| 3450 | |||
| 3451 | Util.typeCheckConfig(NAME, config, DefaultType); |
||
| 3452 | return config; |
||
| 3453 | }; |
||
| 3454 | |||
| 3455 | _proto._getScrollTop = function _getScrollTop() { |
||
| 3456 | return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; |
||
| 3457 | }; |
||
| 3458 | |||
| 3459 | _proto._getScrollHeight = function _getScrollHeight() { |
||
| 3460 | return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); |
||
| 3461 | }; |
||
| 3462 | |||
| 3463 | _proto._getOffsetHeight = function _getOffsetHeight() { |
||
| 3464 | return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; |
||
| 3465 | }; |
||
| 3466 | |||
| 3467 | _proto._process = function _process() { |
||
| 3468 | var scrollTop = this._getScrollTop() + this._config.offset; |
||
| 3469 | |||
| 3470 | var scrollHeight = this._getScrollHeight(); |
||
| 3471 | |||
| 3472 | var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); |
||
| 3473 | |||
| 3474 | if (this._scrollHeight !== scrollHeight) { |
||
| 3475 | this.refresh(); |
||
| 3476 | } |
||
| 3477 | |||
| 3478 | if (scrollTop >= maxScroll) { |
||
| 3479 | var target = this._targets[this._targets.length - 1]; |
||
| 3480 | |||
| 3481 | if (this._activeTarget !== target) { |
||
| 3482 | this._activate(target); |
||
| 3483 | } |
||
| 3484 | |||
| 3485 | return; |
||
| 3486 | } |
||
| 3487 | |||
| 3488 | if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { |
||
| 3489 | this._activeTarget = null; |
||
| 3490 | |||
| 3491 | this._clear(); |
||
| 3492 | |||
| 3493 | return; |
||
| 3494 | } |
||
| 3495 | |||
| 3496 | for (var i = this._offsets.length; i--;) { |
||
| 3497 | var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); |
||
| 3498 | |||
| 3499 | if (isActiveTarget) { |
||
| 3500 | this._activate(this._targets[i]); |
||
| 3501 | } |
||
| 3502 | } |
||
| 3503 | }; |
||
| 3504 | |||
| 3505 | _proto._activate = function _activate(target) { |
||
| 3506 | this._activeTarget = target; |
||
| 3507 | |||
| 3508 | this._clear(); |
||
| 3509 | |||
| 3510 | var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style |
||
| 3511 | |||
| 3512 | |||
| 3513 | queries = queries.map(function (selector) { |
||
| 3514 | return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]"); |
||
| 3515 | }); |
||
| 3516 | var $link = $$$1(queries.join(',')); |
||
| 3517 | |||
| 3518 | if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { |
||
| 3519 | $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); |
||
| 3520 | $link.addClass(ClassName.ACTIVE); |
||
| 3521 | } else { |
||
| 3522 | // Set triggered link as active |
||
| 3523 | $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active |
||
| 3524 | // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor |
||
| 3525 | |||
| 3526 | $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item |
||
| 3527 | |||
| 3528 | $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE); |
||
| 3529 | } |
||
| 3530 | |||
| 3531 | $$$1(this._scrollElement).trigger(Event.ACTIVATE, { |
||
| 3532 | relatedTarget: target |
||
| 3533 | }); |
||
| 3534 | }; |
||
| 3535 | |||
| 3536 | _proto._clear = function _clear() { |
||
| 3537 | $$$1(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); |
||
| 3538 | }; // Static |
||
| 3539 | |||
| 3540 | |||
| 3541 | ScrollSpy._jQueryInterface = function _jQueryInterface(config) { |
||
| 3542 | return this.each(function () { |
||
| 3543 | var data = $$$1(this).data(DATA_KEY); |
||
| 3544 | |||
| 3545 | var _config = typeof config === 'object' && config; |
||
| 3546 | |||
| 3547 | if (!data) { |
||
| 3548 | data = new ScrollSpy(this, _config); |
||
| 3549 | $$$1(this).data(DATA_KEY, data); |
||
| 3550 | } |
||
| 3551 | |||
| 3552 | if (typeof config === 'string') { |
||
| 3553 | if (typeof data[config] === 'undefined') { |
||
| 3554 | throw new TypeError("No method named \"" + config + "\""); |
||
| 3555 | } |
||
| 3556 | |||
| 3557 | data[config](); |
||
| 3558 | } |
||
| 3559 | }); |
||
| 3560 | }; |
||
| 3561 | |||
| 3562 | _createClass(ScrollSpy, null, [{ |
||
| 3563 | key: "VERSION", |
||
| 3564 | get: function get() { |
||
| 3565 | return VERSION; |
||
| 3566 | } |
||
| 3567 | }, { |
||
| 3568 | key: "Default", |
||
| 3569 | get: function get() { |
||
| 3570 | return Default; |
||
| 3571 | } |
||
| 3572 | }]); |
||
| 3573 | return ScrollSpy; |
||
| 3574 | }(); |
||
| 3575 | /** |
||
| 3576 | * ------------------------------------------------------------------------ |
||
| 3577 | * Data Api implementation |
||
| 3578 | * ------------------------------------------------------------------------ |
||
| 3579 | */ |
||
| 3580 | |||
| 3581 | |||
| 3582 | $$$1(window).on(Event.LOAD_DATA_API, function () { |
||
| 3583 | var scrollSpys = $$$1.makeArray($$$1(Selector.DATA_SPY)); |
||
| 3584 | |||
| 3585 | for (var i = scrollSpys.length; i--;) { |
||
| 3586 | var $spy = $$$1(scrollSpys[i]); |
||
| 3587 | |||
| 3588 | ScrollSpy._jQueryInterface.call($spy, $spy.data()); |
||
| 3589 | } |
||
| 3590 | }); |
||
| 3591 | /** |
||
| 3592 | * ------------------------------------------------------------------------ |
||
| 3593 | * jQuery |
||
| 3594 | * ------------------------------------------------------------------------ |
||
| 3595 | */ |
||
| 3596 | |||
| 3597 | $$$1.fn[NAME] = ScrollSpy._jQueryInterface; |
||
| 3598 | $$$1.fn[NAME].Constructor = ScrollSpy; |
||
| 3599 | |||
| 3600 | $$$1.fn[NAME].noConflict = function () { |
||
| 3601 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 3602 | return ScrollSpy._jQueryInterface; |
||
| 3603 | }; |
||
| 3604 | |||
| 3605 | return ScrollSpy; |
||
| 3606 | }($); |
||
| 3607 | |||
| 3608 | /** |
||
| 3609 | * -------------------------------------------------------------------------- |
||
| 3610 | * Bootstrap (v4.0.0): tab.js |
||
| 3611 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 3612 | * -------------------------------------------------------------------------- |
||
| 3613 | */ |
||
| 3614 | |||
| 3615 | var Tab = function ($$$1) { |
||
| 3616 | /** |
||
| 3617 | * ------------------------------------------------------------------------ |
||
| 3618 | * Constants |
||
| 3619 | * ------------------------------------------------------------------------ |
||
| 3620 | */ |
||
| 3621 | var NAME = 'tab'; |
||
| 3622 | var VERSION = '4.0.0'; |
||
| 3623 | var DATA_KEY = 'bs.tab'; |
||
| 3624 | var EVENT_KEY = "." + DATA_KEY; |
||
| 3625 | var DATA_API_KEY = '.data-api'; |
||
| 3626 | var JQUERY_NO_CONFLICT = $$$1.fn[NAME]; |
||
| 3627 | var TRANSITION_DURATION = 150; |
||
| 3628 | var Event = { |
||
| 3629 | HIDE: "hide" + EVENT_KEY, |
||
| 3630 | HIDDEN: "hidden" + EVENT_KEY, |
||
| 3631 | SHOW: "show" + EVENT_KEY, |
||
| 3632 | SHOWN: "shown" + EVENT_KEY, |
||
| 3633 | CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY |
||
| 3634 | }; |
||
| 3635 | var ClassName = { |
||
| 3636 | DROPDOWN_MENU: 'dropdown-menu', |
||
| 3637 | ACTIVE: 'active', |
||
| 3638 | DISABLED: 'disabled', |
||
| 3639 | FADE: 'fade', |
||
| 3640 | SHOW: 'show' |
||
| 3641 | }; |
||
| 3642 | var Selector = { |
||
| 3643 | DROPDOWN: '.dropdown', |
||
| 3644 | NAV_LIST_GROUP: '.nav, .list-group', |
||
| 3645 | ACTIVE: '.active', |
||
| 3646 | ACTIVE_UL: '> li > .active', |
||
| 3647 | DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]', |
||
| 3648 | DROPDOWN_TOGGLE: '.dropdown-toggle', |
||
| 3649 | DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active' |
||
| 3650 | /** |
||
| 3651 | * ------------------------------------------------------------------------ |
||
| 3652 | * Class Definition |
||
| 3653 | * ------------------------------------------------------------------------ |
||
| 3654 | */ |
||
| 3655 | |||
| 3656 | }; |
||
| 3657 | |||
| 3658 | var Tab = |
||
| 3659 | /*#__PURE__*/ |
||
| 3660 | function () { |
||
| 3661 | function Tab(element) { |
||
| 3662 | this._element = element; |
||
| 3663 | } // Getters |
||
| 3664 | |||
| 3665 | |||
| 3666 | var _proto = Tab.prototype; |
||
| 3667 | |||
| 3668 | // Public |
||
| 3669 | _proto.show = function show() { |
||
| 3670 | var _this = this; |
||
| 3671 | |||
| 3672 | if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $$$1(this._element).hasClass(ClassName.ACTIVE) || $$$1(this._element).hasClass(ClassName.DISABLED)) { |
||
|
0 ignored issues
–
show
The variable
Node seems to be never declared. If this is a global, consider adding a /** global: Node */ comment.
This checks looks for references to variables that have not been declared. This is most likey a typographical error or a variable has been renamed. To learn more about declaring variables in Javascript, see the MDN. Loading history...
|
|||
| 3673 | return; |
||
| 3674 | } |
||
| 3675 | |||
| 3676 | var target; |
||
| 3677 | var previous; |
||
| 3678 | var listElement = $$$1(this._element).closest(Selector.NAV_LIST_GROUP)[0]; |
||
| 3679 | var selector = Util.getSelectorFromElement(this._element); |
||
| 3680 | |||
| 3681 | if (listElement) { |
||
| 3682 | var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE; |
||
| 3683 | previous = $$$1.makeArray($$$1(listElement).find(itemSelector)); |
||
| 3684 | previous = previous[previous.length - 1]; |
||
| 3685 | } |
||
| 3686 | |||
| 3687 | var hideEvent = $$$1.Event(Event.HIDE, { |
||
| 3688 | relatedTarget: this._element |
||
| 3689 | }); |
||
| 3690 | var showEvent = $$$1.Event(Event.SHOW, { |
||
| 3691 | relatedTarget: previous |
||
|
0 ignored issues
–
show
|
|||
| 3692 | }); |
||
| 3693 | |||
| 3694 | if (previous) { |
||
| 3695 | $$$1(previous).trigger(hideEvent); |
||
| 3696 | } |
||
| 3697 | |||
| 3698 | $$$1(this._element).trigger(showEvent); |
||
| 3699 | |||
| 3700 | if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) { |
||
| 3701 | return; |
||
| 3702 | } |
||
| 3703 | |||
| 3704 | if (selector) { |
||
| 3705 | target = $$$1(selector)[0]; |
||
| 3706 | } |
||
| 3707 | |||
| 3708 | this._activate(this._element, listElement); |
||
| 3709 | |||
| 3710 | var complete = function complete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
complete already seems to be declared on line 3710. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 3711 | var hiddenEvent = $$$1.Event(Event.HIDDEN, { |
||
| 3712 | relatedTarget: _this._element |
||
| 3713 | }); |
||
| 3714 | var shownEvent = $$$1.Event(Event.SHOWN, { |
||
| 3715 | relatedTarget: previous |
||
|
0 ignored issues
–
show
|
|||
| 3716 | }); |
||
| 3717 | $$$1(previous).trigger(hiddenEvent); |
||
| 3718 | $$$1(_this._element).trigger(shownEvent); |
||
| 3719 | }; |
||
| 3720 | |||
| 3721 | if (target) { |
||
| 3722 | this._activate(target, target.parentNode, complete); |
||
| 3723 | } else { |
||
| 3724 | complete(); |
||
| 3725 | } |
||
| 3726 | }; |
||
| 3727 | |||
| 3728 | _proto.dispose = function dispose() { |
||
| 3729 | $$$1.removeData(this._element, DATA_KEY); |
||
| 3730 | this._element = null; |
||
| 3731 | }; // Private |
||
| 3732 | |||
| 3733 | |||
| 3734 | _proto._activate = function _activate(element, container, callback) { |
||
| 3735 | var _this2 = this; |
||
| 3736 | |||
| 3737 | var activeElements; |
||
| 3738 | |||
| 3739 | if (container.nodeName === 'UL') { |
||
| 3740 | activeElements = $$$1(container).find(Selector.ACTIVE_UL); |
||
| 3741 | } else { |
||
| 3742 | activeElements = $$$1(container).children(Selector.ACTIVE); |
||
| 3743 | } |
||
| 3744 | |||
| 3745 | var active = activeElements[0]; |
||
| 3746 | var isTransitioning = callback && Util.supportsTransitionEnd() && active && $$$1(active).hasClass(ClassName.FADE); |
||
| 3747 | |||
| 3748 | var complete = function complete() { |
||
|
0 ignored issues
–
show
Comprehensibility
Naming
Best Practice
introduced
by
The variable
complete already seems to be declared on line 3748. Consider using another variable name or omitting the var keyword.
This check looks for variables that are declared in multiple lines. There may be several reasons for this. In the simplest case the variable name was reused by mistake. This may lead to very hard to locate bugs. If you want to reuse a variable for another purpose, consider declaring it at or near the top of your function and just assigning to it subsequently so it is always declared. Loading history...
|
|||
| 3749 | return _this2._transitionComplete(element, active, callback); |
||
| 3750 | }; |
||
| 3751 | |||
| 3752 | if (active && isTransitioning) { |
||
| 3753 | $$$1(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); |
||
| 3754 | } else { |
||
| 3755 | complete(); |
||
| 3756 | } |
||
| 3757 | }; |
||
| 3758 | |||
| 3759 | _proto._transitionComplete = function _transitionComplete(element, active, callback) { |
||
| 3760 | if (active) { |
||
| 3761 | $$$1(active).removeClass(ClassName.SHOW + " " + ClassName.ACTIVE); |
||
| 3762 | var dropdownChild = $$$1(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0]; |
||
| 3763 | |||
| 3764 | if (dropdownChild) { |
||
| 3765 | $$$1(dropdownChild).removeClass(ClassName.ACTIVE); |
||
| 3766 | } |
||
| 3767 | |||
| 3768 | if (active.getAttribute('role') === 'tab') { |
||
| 3769 | active.setAttribute('aria-selected', false); |
||
| 3770 | } |
||
| 3771 | } |
||
| 3772 | |||
| 3773 | $$$1(element).addClass(ClassName.ACTIVE); |
||
| 3774 | |||
| 3775 | if (element.getAttribute('role') === 'tab') { |
||
| 3776 | element.setAttribute('aria-selected', true); |
||
| 3777 | } |
||
| 3778 | |||
| 3779 | Util.reflow(element); |
||
| 3780 | $$$1(element).addClass(ClassName.SHOW); |
||
| 3781 | |||
| 3782 | if (element.parentNode && $$$1(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) { |
||
| 3783 | var dropdownElement = $$$1(element).closest(Selector.DROPDOWN)[0]; |
||
| 3784 | |||
| 3785 | if (dropdownElement) { |
||
| 3786 | $$$1(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); |
||
| 3787 | } |
||
| 3788 | |||
| 3789 | element.setAttribute('aria-expanded', true); |
||
| 3790 | } |
||
| 3791 | |||
| 3792 | if (callback) { |
||
| 3793 | callback(); |
||
| 3794 | } |
||
| 3795 | }; // Static |
||
| 3796 | |||
| 3797 | |||
| 3798 | Tab._jQueryInterface = function _jQueryInterface(config) { |
||
| 3799 | return this.each(function () { |
||
| 3800 | var $this = $$$1(this); |
||
| 3801 | var data = $this.data(DATA_KEY); |
||
| 3802 | |||
| 3803 | if (!data) { |
||
| 3804 | data = new Tab(this); |
||
| 3805 | $this.data(DATA_KEY, data); |
||
| 3806 | } |
||
| 3807 | |||
| 3808 | if (typeof config === 'string') { |
||
| 3809 | if (typeof data[config] === 'undefined') { |
||
| 3810 | throw new TypeError("No method named \"" + config + "\""); |
||
| 3811 | } |
||
| 3812 | |||
| 3813 | data[config](); |
||
| 3814 | } |
||
| 3815 | }); |
||
| 3816 | }; |
||
| 3817 | |||
| 3818 | _createClass(Tab, null, [{ |
||
| 3819 | key: "VERSION", |
||
| 3820 | get: function get() { |
||
| 3821 | return VERSION; |
||
| 3822 | } |
||
| 3823 | }]); |
||
| 3824 | return Tab; |
||
| 3825 | }(); |
||
| 3826 | /** |
||
| 3827 | * ------------------------------------------------------------------------ |
||
| 3828 | * Data Api implementation |
||
| 3829 | * ------------------------------------------------------------------------ |
||
| 3830 | */ |
||
| 3831 | |||
| 3832 | |||
| 3833 | $$$1(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { |
||
| 3834 | event.preventDefault(); |
||
| 3835 | |||
| 3836 | Tab._jQueryInterface.call($$$1(this), 'show'); |
||
| 3837 | }); |
||
| 3838 | /** |
||
| 3839 | * ------------------------------------------------------------------------ |
||
| 3840 | * jQuery |
||
| 3841 | * ------------------------------------------------------------------------ |
||
| 3842 | */ |
||
| 3843 | |||
| 3844 | $$$1.fn[NAME] = Tab._jQueryInterface; |
||
| 3845 | $$$1.fn[NAME].Constructor = Tab; |
||
| 3846 | |||
| 3847 | $$$1.fn[NAME].noConflict = function () { |
||
| 3848 | $$$1.fn[NAME] = JQUERY_NO_CONFLICT; |
||
| 3849 | return Tab._jQueryInterface; |
||
| 3850 | }; |
||
| 3851 | |||
| 3852 | return Tab; |
||
| 3853 | }($); |
||
| 3854 | |||
| 3855 | /** |
||
| 3856 | * -------------------------------------------------------------------------- |
||
| 3857 | * Bootstrap (v4.0.0-alpha.6): index.js |
||
| 3858 | * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) |
||
| 3859 | * -------------------------------------------------------------------------- |
||
| 3860 | */ |
||
| 3861 | |||
| 3862 | (function ($$$1) { |
||
| 3863 | if (typeof $$$1 === 'undefined') { |
||
| 3864 | throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); |
||
| 3865 | } |
||
| 3866 | |||
| 3867 | var version = $$$1.fn.jquery.split(' ')[0].split('.'); |
||
| 3868 | var minMajor = 1; |
||
| 3869 | var ltMajor = 2; |
||
| 3870 | var minMinor = 9; |
||
| 3871 | var minPatch = 1; |
||
| 3872 | var maxMajor = 4; |
||
| 3873 | |||
| 3874 | if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { |
||
| 3875 | throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); |
||
| 3876 | } |
||
| 3877 | })($); |
||
| 3878 | |||
| 3879 | exports.Util = Util; |
||
| 3880 | exports.Alert = Alert; |
||
| 3881 | exports.Button = Button; |
||
| 3882 | exports.Carousel = Carousel; |
||
| 3883 | exports.Collapse = Collapse; |
||
| 3884 | exports.Dropdown = Dropdown; |
||
| 3885 | exports.Modal = Modal; |
||
| 3886 | exports.Popover = Popover; |
||
| 3887 | exports.Scrollspy = ScrollSpy; |
||
| 3888 | exports.Tab = Tab; |
||
| 3889 | exports.Tooltip = Tooltip; |
||
| 3890 | |||
| 3891 | Object.defineProperty(exports, '__esModule', { value: true }); |
||
| 3892 | |||
| 3893 | }))); |
||
| 3894 | //# sourceMappingURL=bootstrap.js.map |
||
| 3895 |