@@ 6-3893 (lines=3888) @@ | ||
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 | (function (global, factory) { |
|
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) : |
|
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) { |
|
33 | for (var i = 1; i < arguments.length; i++) { |
|
34 | var source = arguments[i]; |
|
35 | ||
36 | for (var key in source) { |
|
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) { |
|
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() { |
|
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() { |
|
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) { |
|
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() { |
|
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() { |
|
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()); |
|
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() { |
|
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() { |
|
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) { |
|
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) { |
|
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)) { |
|
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 |
|
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() { |
|
3711 | var hiddenEvent = $$$1.Event(Event.HIDDEN, { |
|
3712 | relatedTarget: _this._element |
|
3713 | }); |
|
3714 | var shownEvent = $$$1.Event(Event.SHOWN, { |
|
3715 | relatedTarget: previous |
|
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() { |
|
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 |
@@ 6-3893 (lines=3888) @@ | ||
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 | (function (global, factory) { |
|
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) : |
|
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) { |
|
33 | for (var i = 1; i < arguments.length; i++) { |
|
34 | var source = arguments[i]; |
|
35 | ||
36 | for (var key in source) { |
|
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) { |
|
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() { |
|
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() { |
|
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) { |
|
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() { |
|
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() { |
|
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()); |
|
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() { |
|
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() { |
|
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) { |
|
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) { |
|
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)) { |
|
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 |
|
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() { |
|
3711 | var hiddenEvent = $$$1.Event(Event.HIDDEN, { |
|
3712 | relatedTarget: _this._element |
|
3713 | }); |
|
3714 | var shownEvent = $$$1.Event(Event.SHOWN, { |
|
3715 | relatedTarget: previous |
|
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() { |
|
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 |