From 10425e7347f06e6f4d43a18ac1d13aef43c3bf69 Mon Sep 17 00:00:00 2001 From: Bas Brands Date: Mon, 18 Feb 2019 14:03:08 +0100 Subject: [PATCH 1/2] MDL-64887 theme_boost: update bootstrap to 4.3.1 --- .eslintignore | 3 + .stylelintignore | 3 + theme/boost/amd/build/alert.min.js | 2 +- theme/boost/amd/build/button.min.js | 2 +- theme/boost/amd/build/carousel.min.js | 2 +- theme/boost/amd/build/collapse.min.js | 2 +- theme/boost/amd/build/dropdown.min.js | 2 +- theme/boost/amd/build/index.min.js | 1 + theme/boost/amd/build/modal.min.js | 2 +- theme/boost/amd/build/pending.min.js | 2 +- theme/boost/amd/build/popover.min.js | 2 +- theme/boost/amd/build/sanitizer.min.js | 1 + theme/boost/amd/build/scrollspy.min.js | 2 +- theme/boost/amd/build/tab.min.js | 2 +- theme/boost/amd/build/toast.min.js | 1 + theme/boost/amd/build/tooltip.min.js | 2 +- theme/boost/amd/build/util.min.js | 2 +- theme/boost/amd/src/alert.js | 325 ++- theme/boost/amd/src/button.js | 253 +- theme/boost/amd/src/carousel.js | 1059 ++++---- theme/boost/amd/src/collapse.js | 756 +++--- theme/boost/amd/src/dropdown.js | 981 +++---- theme/boost/amd/src/index.js | 79 + theme/boost/amd/src/modal.js | 1184 ++++----- theme/boost/amd/src/pending.js | 11 + theme/boost/amd/src/popover.js | 392 +-- theme/boost/amd/src/sanitizer.js | 131 + theme/boost/amd/src/scrollspy.js | 602 ++--- theme/boost/amd/src/tab.js | 415 ++- theme/boost/amd/src/toast.js | 312 +++ theme/boost/amd/src/tooltip.js | 1321 +++++----- theme/boost/amd/src/util.js | 268 +- theme/boost/readme_moodle.txt | 17 +- theme/boost/scss/bootstrap/LICENSE | 22 - theme/boost/scss/bootstrap/_alert.scss | 2 +- theme/boost/scss/bootstrap/_badge.scss | 9 +- theme/boost/scss/bootstrap/_breadcrumb.scss | 15 +- theme/boost/scss/bootstrap/_button-group.scss | 35 +- theme/boost/scss/bootstrap/_buttons.scss | 26 +- theme/boost/scss/bootstrap/_card.scss | 87 +- theme/boost/scss/bootstrap/_carousel.scss | 132 +- theme/boost/scss/bootstrap/_close.scss | 23 +- theme/boost/scss/bootstrap/_code.scss | 18 +- theme/boost/scss/bootstrap/_custom-forms.scss | 292 ++- theme/boost/scss/bootstrap/_dropdown.scss | 70 +- theme/boost/scss/bootstrap/_forms.scss | 67 +- theme/boost/scss/bootstrap/_functions.scss | 18 +- theme/boost/scss/bootstrap/_images.scss | 4 +- theme/boost/scss/bootstrap/_input-group.scss | 56 +- theme/boost/scss/bootstrap/_jumbotron.scss | 1 + theme/boost/scss/bootstrap/_list-group.scss | 44 +- theme/boost/scss/bootstrap/_mixins.scss | 7 +- theme/boost/scss/bootstrap/_modal.scss | 99 +- theme/boost/scss/bootstrap/_nav.scss | 2 + theme/boost/scss/bootstrap/_navbar.scss | 35 +- theme/boost/scss/bootstrap/_pagination.scss | 8 +- theme/boost/scss/bootstrap/_popover.scss | 112 +- theme/boost/scss/bootstrap/_print.scss | 29 +- theme/boost/scss/bootstrap/_progress.scss | 22 +- theme/boost/scss/bootstrap/_reboot.scss | 101 +- theme/boost/scss/bootstrap/_spinners.scss | 55 + theme/boost/scss/bootstrap/_tables.scss | 27 +- theme/boost/scss/bootstrap/_toasts.scss | 44 + theme/boost/scss/bootstrap/_tooltip.scss | 2 +- theme/boost/scss/bootstrap/_transitions.scss | 24 +- theme/boost/scss/bootstrap/_type.scss | 32 +- theme/boost/scss/bootstrap/_utilities.scss | 3 + theme/boost/scss/bootstrap/_variables.scss | 625 +++-- .../boost/scss/bootstrap/bootstrap-grid.scss | 11 +- .../scss/bootstrap/bootstrap-reboot.scss | 6 +- theme/boost/scss/bootstrap/bootstrap.scss | 8 +- theme/boost/scss/bootstrap/mixins/_badge.scss | 7 +- .../scss/bootstrap/mixins/_border-radius.scss | 30 +- .../scss/bootstrap/mixins/_box-shadow.scss | 17 +- .../scss/bootstrap/mixins/_breakpoints.scss | 6 +- .../boost/scss/bootstrap/mixins/_buttons.scss | 26 +- theme/boost/scss/bootstrap/mixins/_caret.scss | 13 +- .../scss/bootstrap/mixins/_deprecate.scss | 10 + theme/boost/scss/bootstrap/mixins/_float.scss | 3 + theme/boost/scss/bootstrap/mixins/_forms.scss | 83 +- .../scss/bootstrap/mixins/_gradients.scss | 14 +- .../bootstrap/mixins/_grid-framework.scss | 7 +- theme/boost/scss/bootstrap/mixins/_grid.scss | 19 +- theme/boost/scss/bootstrap/mixins/_hover.scss | 8 +- theme/boost/scss/bootstrap/mixins/_image.scss | 4 +- .../scss/bootstrap/mixins/_list-group.scss | 2 +- .../scss/bootstrap/mixins/_nav-divider.scss | 4 +- .../scss/bootstrap/mixins/_navbar-align.scss | 10 - .../scss/bootstrap/mixins/_pagination.scss | 2 +- .../scss/bootstrap/mixins/_reset-text.scss | 2 +- .../scss/bootstrap/mixins/_screen-reader.scss | 4 +- theme/boost/scss/bootstrap/mixins/_size.scss | 1 + .../scss/bootstrap/mixins/_table-row.scss | 11 +- .../scss/bootstrap/mixins/_text-emphasis.scss | 8 +- .../scss/bootstrap/mixins/_text-hide.scss | 4 +- .../scss/bootstrap/mixins/_transition.scss | 7 + .../scss/bootstrap/mixins/_visibility.scss | 1 + .../scss/bootstrap/utilities/_borders.scss | 18 +- .../scss/bootstrap/utilities/_display.scss | 24 +- .../scss/bootstrap/utilities/_embed.scss | 27 +- .../boost/scss/bootstrap/utilities/_flex.scss | 5 + .../scss/bootstrap/utilities/_float.scss | 8 +- .../scss/bootstrap/utilities/_overflow.scss | 5 + .../scss/bootstrap/utilities/_position.scss | 12 +- .../scss/bootstrap/utilities/_shadows.scss | 6 + .../scss/bootstrap/utilities/_sizing.scss | 8 + .../scss/bootstrap/utilities/_spacing.scss | 24 +- .../bootstrap/utilities/_stretched-link.scss | 19 + .../boost/scss/bootstrap/utilities/_text.scss | 32 +- .../scss/bootstrap/utilities/_visibility.scss | 6 +- theme/boost/scss/bootstrap/vendor/_rfs.scss | 204 ++ theme/boost/scss/moodle/bs4alphacompat.scss | 4 +- theme/boost/scss/moodle/core.scss | 10 +- theme/boost/style/moodle.css | 2079 ++++++++++----- theme/boost/thirdpartylibs.xml | 47 +- theme/classic/style/moodle.css | 2245 ++++++++++++----- 116 files changed, 9657 insertions(+), 5741 deletions(-) create mode 100644 theme/boost/amd/build/index.min.js create mode 100644 theme/boost/amd/build/sanitizer.min.js create mode 100644 theme/boost/amd/build/toast.min.js create mode 100644 theme/boost/amd/src/index.js create mode 100644 theme/boost/amd/src/sanitizer.js create mode 100644 theme/boost/amd/src/toast.js delete mode 100644 theme/boost/scss/bootstrap/LICENSE create mode 100644 theme/boost/scss/bootstrap/_spinners.scss create mode 100644 theme/boost/scss/bootstrap/_toasts.scss create mode 100644 theme/boost/scss/bootstrap/mixins/_deprecate.scss delete mode 100644 theme/boost/scss/bootstrap/mixins/_navbar-align.scss create mode 100644 theme/boost/scss/bootstrap/utilities/_overflow.scss create mode 100644 theme/boost/scss/bootstrap/utilities/_shadows.scss create mode 100644 theme/boost/scss/bootstrap/utilities/_stretched-link.scss create mode 100644 theme/boost/scss/bootstrap/vendor/_rfs.scss diff --git a/.eslintignore b/.eslintignore index bb36d0c9836..343a4029780 100644 --- a/.eslintignore +++ b/.eslintignore @@ -74,10 +74,13 @@ theme/boost/amd/src/button.js theme/boost/amd/src/carousel.js theme/boost/amd/src/collapse.js theme/boost/amd/src/dropdown.js +theme/boost/amd/src/index.js theme/boost/amd/src/modal.js theme/boost/amd/src/popover.js +theme/boost/amd/src/sanitizer.js theme/boost/amd/src/scrollspy.js theme/boost/amd/src/tab.js +theme/boost/amd/src/toast.js theme/boost/amd/src/tooltip.js theme/boost/amd/src/util.js theme/boost/amd/src/tether.js diff --git a/.stylelintignore b/.stylelintignore index adf95b6d31a..2754b7abb94 100644 --- a/.stylelintignore +++ b/.stylelintignore @@ -75,10 +75,13 @@ theme/boost/amd/src/button.js theme/boost/amd/src/carousel.js theme/boost/amd/src/collapse.js theme/boost/amd/src/dropdown.js +theme/boost/amd/src/index.js theme/boost/amd/src/modal.js theme/boost/amd/src/popover.js +theme/boost/amd/src/sanitizer.js theme/boost/amd/src/scrollspy.js theme/boost/amd/src/tab.js +theme/boost/amd/src/toast.js theme/boost/amd/src/tooltip.js theme/boost/amd/src/util.js theme/boost/amd/src/tether.js diff --git a/theme/boost/amd/build/alert.min.js b/theme/boost/amd/build/alert.min.js index 353d0e17bd5..7e5873b1124 100644 --- a/theme/boost/amd/build/alert.min.js +++ b/theme/boost/amd/build/alert.min.js @@ -1 +1 @@ -define(["exports","jquery","./util"],function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){for(var c=0;cthis._items.length-1||b<0)){if(this._isSliding)return void a(this._element).one(t.SLID,function(){return c.to(b)});if(d===b)return this.pause(),void this.cycle();var e=b>d?s.NEXT:s.PREV;this._slide(e,this._items[b])}}},{key:"dispose",value:function(){a(this._element).off(h),a.removeData(this._element,d),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null}},{key:"_getConfig",value:function(a){return a=f({},q,a),k["default"].typeCheckConfig(b,a,r),a}},{key:"_addEventListeners",value:function(){var b=this;this._config.keyboard&&a(this._element).on(t.KEYDOWN,function(a){return b._keydown(a)}),"hover"===this._config.pause&&(a(this._element).on(t.MOUSEENTER,function(a){return b.pause(a)}).on(t.MOUSELEAVE,function(a){return b.cycle(a)}),"ontouchstart"in document.documentElement&&a(this._element).on(t.TOUCHEND,function(){b.pause(),b.touchTimeout&&clearTimeout(b.touchTimeout),b.touchTimeout=setTimeout(function(a){return b.cycle(a)},p+b._config.interval)}))}},{key:"_keydown",value:function(a){if(!/input|textarea/i.test(a.target.tagName))switch(a.which){case n:a.preventDefault(),this.prev();break;case o:a.preventDefault(),this.next()}}},{key:"_getItemIndex",value:function(b){return this._items=a.makeArray(a(b).parent().find(v.ITEM)),this._items.indexOf(b)}},{key:"_getItemByDirection",value:function(a,b){var c=a===s.NEXT,d=a===s.PREV,e=this._getItemIndex(b),f=this._items.length-1,g=d&&0===e||c&&e===f;if(g&&!this._config.wrap)return b;var h=a===s.PREV?-1:1,i=(e+h)%this._items.length;return i===-1?this._items[this._items.length-1]:this._items[i]}},{key:"_triggerSlideEvent",value:function(b,c){var d=this._getItemIndex(b),e=this._getItemIndex(a(this._element).find(v.ACTIVE_ITEM)[0]),f=a.Event(t.SLIDE,{relatedTarget:b,direction:c,from:e,to:d});return a(this._element).trigger(f),f}},{key:"_setActiveIndicatorElement",value:function(b){if(this._indicatorsElement){a(this._indicatorsElement).find(v.ACTIVE).removeClass(u.ACTIVE);var c=this._indicatorsElement.children[this._getItemIndex(b)];c&&a(c).addClass(u.ACTIVE)}}},{key:"_slide",value:function(b,c){var d,e,f,g=this,h=a(this._element).find(v.ACTIVE_ITEM)[0],i=this._getItemIndex(h),j=c||h&&this._getItemByDirection(b,h),l=this._getItemIndex(j),n=Boolean(this._interval);if(b===s.NEXT?(d=u.LEFT,e=u.NEXT,f=s.LEFT):(d=u.RIGHT,e=u.PREV,f=s.RIGHT),j&&a(j).hasClass(u.ACTIVE))return void(this._isSliding=!1);var o=this._triggerSlideEvent(j,f);if(!o.isDefaultPrevented()&&h&&j){this._isSliding=!0,n&&this.pause(),this._setActiveIndicatorElement(j);var p=a.Event(t.SLID,{relatedTarget:j,direction:f,from:i,to:l});k["default"].supportsTransitionEnd()&&a(this._element).hasClass(u.SLIDE)?(a(j).addClass(e),k["default"].reflow(j),a(h).addClass(d),a(j).addClass(d),a(h).one(k["default"].TRANSITION_END,function(){a(j).removeClass("".concat(d," ").concat(e)).addClass(u.ACTIVE),a(h).removeClass("".concat(u.ACTIVE," ").concat(e," ").concat(d)),g._isSliding=!1,setTimeout(function(){return a(g._element).trigger(p)},0)}).emulateTransitionEnd(m)):(a(h).removeClass(u.ACTIVE),a(j).addClass(u.ACTIVE),this._isSliding=!1,a(this._element).trigger(p)),n&&this.cycle()}}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(d),g=f({},q,a(this).data());"object"===e(b)&&(g=f({},g,b));var h="string"==typeof b?b:g.slide;if(c||(c=new j(this,g),a(this).data(d,c)),"number"==typeof b)c.to(b);else if("string"==typeof h){if("undefined"==typeof c[h])throw new TypeError('No method named "'.concat(h,'"'));c[h]()}else g.interval&&(c.pause(),c.cycle())})}},{key:"_dataApiClickHandler",value:function(b){var c=k["default"].getSelectorFromElement(this);if(c){var e=a(c)[0];if(e&&a(e).hasClass(u.CAROUSEL)){var g=f({},a(e).data(),a(this).data()),h=this.getAttribute("data-slide-to");h&&(g.interval=!1),j._jQueryInterface.call(a(e),g),h&&a(e).data(d).to(h),b.preventDefault()}}}},{key:"VERSION",get:function(){return c}},{key:"Default",get:function(){return q}}]),j}();return a(document).on(t.CLICK_DATA_API,v.DATA_SLIDE,w._dataApiClickHandler),a(window).on(t.LOAD_DATA_API,function(){a(v.DATA_RIDE).each(function(){var b=a(this);w._jQueryInterface.call(b,b.data())})}),a.fn[b]=w._jQueryInterface,a.fn[b].Constructor=w,a.fn[b].noConflict=function(){return a.fn[b]=l,w._jQueryInterface},w}(j["default"]);a["default"]=l}); \ No newline at end of file +"use strict";define(["exports","jquery","./util"],function(a,b,c){function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function f(a){for(var b=1;b0,this._pointerEvent=Boolean(window.PointerEvent||window.MSPointerEvent),this._addEventListeners()}return j(a,[{key:"next",value:function(){this._isSliding||this._slide(y.NEXT)}},{key:"nextWhenVisible",value:function(){!document.hidden&&(0,k["default"])(this._element).is(":visible")&&"hidden"!==(0,k["default"])(this._element).css("visibility")&&this.next()}},{key:"prev",value:function(){this._isSliding||this._slide(y.PREV)}},{key:"pause",value:function(a){a||(this._isPaused=!0),this._element.querySelector(B.NEXT_PREV)&&(l["default"].triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}},{key:"cycle",value:function(a){a||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}},{key:"to",value:function(a){var b=this;this._activeElement=this._element.querySelector(B.ACTIVE_ITEM);var c=this._getItemIndex(this._activeElement);if(!(a>this._items.length-1||a<0)){if(this._isSliding)return void(0,k["default"])(this._element).one(z.SLID,function(){return b.to(a)});if(c===a)return this.pause(),void this.cycle();var d=a>c?y.NEXT:y.PREV;this._slide(d,this._items[a])}}},{key:"dispose",value:function(){(0,k["default"])(this._element).off(p),k["default"].removeData(this._element,o),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null}},{key:"_getConfig",value:function(a){return a=f({},w,a),l["default"].typeCheckConfig(m,a,x),a}},{key:"_handleSwipe",value:function(){var a=Math.abs(this.touchDeltaX);if(!(a<=v)){var b=a/this.touchDeltaX;b>0&&this.prev(),b<0&&this.next()}}},{key:"_addEventListeners",value:function(){var a=this;this._config.keyboard&&(0,k["default"])(this._element).on(z.KEYDOWN,function(b){return a._keydown(b)}),"hover"===this._config.pause&&(0,k["default"])(this._element).on(z.MOUSEENTER,function(b){return a.pause(b)}).on(z.MOUSELEAVE,function(b){return a.cycle(b)}),this._config.touch&&this._addTouchEventListeners()}},{key:"_addTouchEventListeners",value:function(){var a=this;if(this._touchSupported){var b=function(b){a._pointerEvent&&C[b.originalEvent.pointerType.toUpperCase()]?a.touchStartX=b.originalEvent.clientX:a._pointerEvent||(a.touchStartX=b.originalEvent.touches[0].clientX)},c=function(b){b.originalEvent.touches&&b.originalEvent.touches.length>1?a.touchDeltaX=0:a.touchDeltaX=b.originalEvent.touches[0].clientX-a.touchStartX},d=function(b){a._pointerEvent&&C[b.originalEvent.pointerType.toUpperCase()]&&(a.touchDeltaX=b.originalEvent.clientX-a.touchStartX),a._handleSwipe(),"hover"===a._config.pause&&(a.pause(),a.touchTimeout&&clearTimeout(a.touchTimeout),a.touchTimeout=setTimeout(function(b){return a.cycle(b)},u+a._config.interval))};(0,k["default"])(this._element.querySelectorAll(B.ITEM_IMG)).on(z.DRAG_START,function(a){return a.preventDefault()}),this._pointerEvent?((0,k["default"])(this._element).on(z.POINTERDOWN,function(a){return b(a)}),(0,k["default"])(this._element).on(z.POINTERUP,function(a){return d(a)}),this._element.classList.add(A.POINTER_EVENT)):((0,k["default"])(this._element).on(z.TOUCHSTART,function(a){return b(a)}),(0,k["default"])(this._element).on(z.TOUCHMOVE,function(a){return c(a)}),(0,k["default"])(this._element).on(z.TOUCHEND,function(a){return d(a)}))}}},{key:"_keydown",value:function(a){if(!/input|textarea/i.test(a.target.tagName))switch(a.which){case s:a.preventDefault(),this.prev();break;case t:a.preventDefault(),this.next()}}},{key:"_getItemIndex",value:function(a){return this._items=a&&a.parentNode?[].slice.call(a.parentNode.querySelectorAll(B.ITEM)):[],this._items.indexOf(a)}},{key:"_getItemByDirection",value:function(a,b){var c=a===y.NEXT,d=a===y.PREV,e=this._getItemIndex(b),f=this._items.length-1,g=d&&0===e||c&&e===f;if(g&&!this._config.wrap)return b;var h=a===y.PREV?-1:1,i=(e+h)%this._items.length;return i===-1?this._items[this._items.length-1]:this._items[i]}},{key:"_triggerSlideEvent",value:function(a,b){var c=this._getItemIndex(a),d=this._getItemIndex(this._element.querySelector(B.ACTIVE_ITEM)),e=k["default"].Event(z.SLIDE,{relatedTarget:a,direction:b,from:d,to:c});return(0,k["default"])(this._element).trigger(e),e}},{key:"_setActiveIndicatorElement",value:function(a){if(this._indicatorsElement){var b=[].slice.call(this._indicatorsElement.querySelectorAll(B.ACTIVE));(0,k["default"])(b).removeClass(A.ACTIVE);var c=this._indicatorsElement.children[this._getItemIndex(a)];c&&(0,k["default"])(c).addClass(A.ACTIVE)}}},{key:"_slide",value:function(a,b){var c,d,e,f=this,g=this._element.querySelector(B.ACTIVE_ITEM),h=this._getItemIndex(g),i=b||g&&this._getItemByDirection(a,g),j=this._getItemIndex(i),m=Boolean(this._interval);if(a===y.NEXT?(c=A.LEFT,d=A.NEXT,e=y.LEFT):(c=A.RIGHT,d=A.PREV,e=y.RIGHT),i&&(0,k["default"])(i).hasClass(A.ACTIVE))return void(this._isSliding=!1);var n=this._triggerSlideEvent(i,e);if(!n.isDefaultPrevented()&&g&&i){this._isSliding=!0,m&&this.pause(),this._setActiveIndicatorElement(i);var o=k["default"].Event(z.SLID,{relatedTarget:i,direction:e,from:h,to:j});if((0,k["default"])(this._element).hasClass(A.SLIDE)){(0,k["default"])(i).addClass(d),l["default"].reflow(i),(0,k["default"])(g).addClass(c),(0,k["default"])(i).addClass(c);var p=parseInt(i.getAttribute("data-interval"),10);p?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=p):this._config.interval=this._config.defaultInterval||this._config.interval;var q=l["default"].getTransitionDurationFromElement(g);(0,k["default"])(g).one(l["default"].TRANSITION_END,function(){(0,k["default"])(i).removeClass("".concat(c," ").concat(d)).addClass(A.ACTIVE),(0,k["default"])(g).removeClass("".concat(A.ACTIVE," ").concat(d," ").concat(c)),f._isSliding=!1,setTimeout(function(){return(0,k["default"])(f._element).trigger(o)},0)}).emulateTransitionEnd(q)}else(0,k["default"])(g).removeClass(A.ACTIVE),(0,k["default"])(i).addClass(A.ACTIVE),this._isSliding=!1,(0,k["default"])(this._element).trigger(o);m&&this.cycle()}}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=(0,k["default"])(this).data(o),d=f({},w,(0,k["default"])(this).data());"object"===e(b)&&(d=f({},d,b));var g="string"==typeof b?b:d.slide;if(c||(c=new a(this,d),(0,k["default"])(this).data(o,c)),"number"==typeof b)c.to(b);else if("string"==typeof g){if("undefined"==typeof c[g])throw new TypeError('No method named "'.concat(g,'"'));c[g]()}else d.interval&&d.ride&&(c.pause(),c.cycle())})}},{key:"_dataApiClickHandler",value:function(b){var c=l["default"].getSelectorFromElement(this);if(c){var d=(0,k["default"])(c)[0];if(d&&(0,k["default"])(d).hasClass(A.CAROUSEL)){var e=f({},(0,k["default"])(d).data(),(0,k["default"])(this).data()),g=this.getAttribute("data-slide-to");g&&(e.interval=!1),a._jQueryInterface.call((0,k["default"])(d),e),g&&(0,k["default"])(d).data(o).to(g),b.preventDefault()}}}},{key:"VERSION",get:function(){return n}},{key:"Default",get:function(){return w}}]),a}();(0,k["default"])(document).on(z.CLICK_DATA_API,B.DATA_SLIDE,D._dataApiClickHandler),(0,k["default"])(window).on(z.LOAD_DATA_API,function(){for(var a=[].slice.call(document.querySelectorAll(B.DATA_RIDE)),b=0,c=a.length;b0&&(this._selector=i,this._triggerArray.push(f))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return i(h,[{key:"toggle",value:function(){a(this._element).hasClass(q.SHOW)?this.hide():this.show()}},{key:"show",value:function(){var b=this;if(!this._isTransitioning&&!a(this._element).hasClass(q.SHOW)){var c,e;if(this._parent&&(c=a.makeArray(a(this._parent).find(s.ACTIVES).filter('[data-parent="'.concat(this._config.parent,'"]'))),0===c.length&&(c=null)),!(c&&(e=a(c).not(this._selector).data(d),e&&e._isTransitioning))){var f=a.Event(p.SHOW);if(a(this._element).trigger(f),!f.isDefaultPrevented()){c&&(h._jQueryInterface.call(a(c).not(this._selector),"hide"),e||a(c).data(d,null));var g=this._getDimension();a(this._element).removeClass(q.COLLAPSE).addClass(q.COLLAPSING),this._element.style[g]=0,this._triggerArray.length>0&&a(this._triggerArray).removeClass(q.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var i=function(){a(b._element).removeClass(q.COLLAPSING).addClass(q.COLLAPSE).addClass(q.SHOW),b._element.style[g]="",b.setTransitioning(!1),a(b._element).trigger(p.SHOWN)};if(!k["default"].supportsTransitionEnd())return void i();var j=g[0].toUpperCase()+g.slice(1),l="scroll".concat(j);a(this._element).one(k["default"].TRANSITION_END,i).emulateTransitionEnd(m),this._element.style[g]="".concat(this._element[l],"px")}}}}},{key:"hide",value:function(){var b=this;if(!this._isTransitioning&&a(this._element).hasClass(q.SHOW)){var c=a.Event(p.HIDE);if(a(this._element).trigger(c),!c.isDefaultPrevented()){var d=this._getDimension();if(this._element.style[d]="".concat(this._element.getBoundingClientRect()[d],"px"),k["default"].reflow(this._element),a(this._element).addClass(q.COLLAPSING).removeClass(q.COLLAPSE).removeClass(q.SHOW),this._triggerArray.length>0)for(var e=0;e0&&a(c).toggleClass(q.COLLAPSED,!d).attr("aria-expanded",d)}}}],[{key:"_getTargetFromElement",value:function(b){var c=k["default"].getSelectorFromElement(b);return c?a(c)[0]:null}},{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this),g=c.data(d),i=f({},n,c.data(),"object"===e(b)&&b);if(!g&&i.toggle&&/show|hide/.test(b)&&(i.toggle=!1),g||(g=new h(this,i),c.data(d,g)),"string"==typeof b){if("undefined"==typeof g[b])throw new TypeError('No method named "'.concat(b,'"'));g[b]()}})}},{key:"VERSION",get:function(){return c}},{key:"Default",get:function(){return n}}]),h}();return a(document).on(p.CLICK_DATA_API,s.DATA_TOGGLE,function(b){"A"===b.currentTarget.tagName&&b.preventDefault();var c=a(this),e=k["default"].getSelectorFromElement(this);a(e).each(function(){var b=a(this),e=b.data(d),f=e?"toggle":c.data();t._jQueryInterface.call(b,f)})}),a.fn[b]=t._jQueryInterface,a.fn[b].Constructor=t,a.fn[b].noConflict=function(){return a.fn[b]=l,t._jQueryInterface},t}(j["default"]);a["default"]=l}); \ No newline at end of file +"use strict";define(["exports","jquery","./util"],function(a,b,c){function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function f(a){for(var b=1;b0&&(this._selector=i,this._triggerArray.push(g))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}return j(a,[{key:"toggle",value:function(){(0,k["default"])(this._element).hasClass(v.SHOW)?this.hide():this.show()}},{key:"show",value:function(){var b=this;if(!this._isTransitioning&&!(0,k["default"])(this._element).hasClass(v.SHOW)){var c,d;if(this._parent&&(c=[].slice.call(this._parent.querySelectorAll(x.ACTIVES)).filter(function(a){return"string"==typeof b._config.parent?a.getAttribute("data-parent")===b._config.parent:a.classList.contains(v.COLLAPSE)}),0===c.length&&(c=null)),!(c&&(d=(0,k["default"])(c).not(this._selector).data(o),d&&d._isTransitioning))){var e=k["default"].Event(u.SHOW);if((0,k["default"])(this._element).trigger(e),!e.isDefaultPrevented()){c&&(a._jQueryInterface.call((0,k["default"])(c).not(this._selector),"hide"),d||(0,k["default"])(c).data(o,null));var f=this._getDimension();(0,k["default"])(this._element).removeClass(v.COLLAPSE).addClass(v.COLLAPSING),this._element.style[f]=0,this._triggerArray.length&&(0,k["default"])(this._triggerArray).removeClass(v.COLLAPSED).attr("aria-expanded",!0),this.setTransitioning(!0);var g=function(){(0,k["default"])(b._element).removeClass(v.COLLAPSING).addClass(v.COLLAPSE).addClass(v.SHOW),b._element.style[f]="",b.setTransitioning(!1),(0,k["default"])(b._element).trigger(u.SHOWN)},h=f[0].toUpperCase()+f.slice(1),i="scroll".concat(h),j=l["default"].getTransitionDurationFromElement(this._element);(0,k["default"])(this._element).one(l["default"].TRANSITION_END,g).emulateTransitionEnd(j),this._element.style[f]="".concat(this._element[i],"px")}}}}},{key:"hide",value:function(){var a=this;if(!this._isTransitioning&&(0,k["default"])(this._element).hasClass(v.SHOW)){var b=k["default"].Event(u.HIDE);if((0,k["default"])(this._element).trigger(b),!b.isDefaultPrevented()){var c=this._getDimension();this._element.style[c]="".concat(this._element.getBoundingClientRect()[c],"px"),l["default"].reflow(this._element),(0,k["default"])(this._element).addClass(v.COLLAPSING).removeClass(v.COLLAPSE).removeClass(v.SHOW);var d=this._triggerArray.length;if(d>0)for(var e=0;e0}},{key:"_getPopperConfig",value:function(){var a=this,b={};"function"==typeof this._config.offset?b.fn=function(b){return b.offsets=g({},b.offsets,a._config.offset(b.offsets)||{}),b}:b.offset=this._config.offset;var c={placement:this._getPlacement(),modifiers:{offset:b,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return c}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(d),e="object"===f(b)?b:null;if(c||(c=new i(this,e),a(this).data(d,c)),"string"==typeof b){if("undefined"==typeof c[b])throw new TypeError('No method named "'.concat(b,'"'));c[b]()}})}},{key:"_clearMenus",value:function(b){if(!b||b.which!==s&&("keyup"!==b.type||b.which===p))for(var c=a.makeArray(a(w.DATA_TOGGLE)),e=0;e0&&g--,b.which===r&&g0}},{key:"_getOffset",value:function(){var a=this,b={};return"function"==typeof this._config.offset?b.fn=function(b){return b.offsets=g({},b.offsets,a._config.offset(b.offsets,a._element)||{}),b}:b.offset=this._config.offset,b}},{key:"_getPopperConfig",value:function(){var a={placement:this._getPlacement(),modifiers:{offset:this._getOffset(),flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(a.modifiers.applyStyle={enabled:!1}),a}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=(0,l["default"])(this).data(q),d="object"===f(b)?b:null;if(c||(c=new a(this,d),(0,l["default"])(this).data(q,c)),"string"==typeof b){if("undefined"==typeof c[b])throw new TypeError('No method named "'.concat(b,'"'));c[b]()}})}},{key:"_clearMenus",value:function(b){if(!b||b.which!==z&&("keyup"!==b.type||b.which===w))for(var c=[].slice.call(document.querySelectorAll(D.DATA_TOGGLE)),d=0,e=c.length;d0&&g--,b.which===y&&g=f)throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(),a.Util=B["default"],a.Alert=q["default"],a.Button=r["default"],a.Carousel=s["default"],a.Collapse=t["default"],a.Dropdown=u["default"],a.Modal=v["default"],a.Popover=w["default"],a.Scrollspy=x["default"],a.Tab=y["default"],a.Toast=z["default"],a.Tooltip=A["default"]}); \ No newline at end of file diff --git a/theme/boost/amd/build/modal.min.js b/theme/boost/amd/build/modal.min.js index 9488c37d44f..033d933ff6c 100644 --- a/theme/boost/amd/build/modal.min.js +++ b/theme/boost/amd/build/modal.min.js @@ -1 +1 @@ -define(["exports","jquery","./util"],function(a,b,c){"use strict";function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function f(){return f=Object.assign||function(a){for(var b=1;bdocument.documentElement.clientHeight;!this._isBodyOverflowing&&a&&(this._element.style.paddingLeft="".concat(this._scrollbarWidth,"px")),this._isBodyOverflowing&&!a&&(this._element.style.paddingRight="".concat(this._scrollbarWidth,"px"))}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}},{key:"_checkScrollbar",value:function(){var a=document.body.getBoundingClientRect();this._isBodyOverflowing=a.left+a.rightdocument.documentElement.clientHeight;!this._isBodyOverflowing&&a&&(this._element.style.paddingLeft="".concat(this._scrollbarWidth,"px")),this._isBodyOverflowing&&!a&&(this._element.style.paddingRight="".concat(this._scrollbarWidth,"px"))}},{key:"_resetAdjustments",value:function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}},{key:"_checkScrollbar",value:function(){var a=document.body.getBoundingClientRect();this._isBodyOverflowing=a.left+a.right

'}),q=k({},m["default"].DefaultType,{content:"(string|element|function)"}),r={FADE:"fade",SHOW:"show"},s={TITLE:".popover-header",CONTENT:".popover-body"},t={HIDE:"hide".concat(g),HIDDEN:"hidden".concat(g),SHOW:"show".concat(g),SHOWN:"shown".concat(g),INSERTED:"inserted".concat(g),CLICK:"click".concat(g),FOCUSIN:"focusin".concat(g),FOCUSOUT:"focusout".concat(g),MOUSEENTER:"mouseenter".concat(g),MOUSELEAVE:"mouseleave".concat(g)},u=function(k){function l(){return f(this,l),i(this,(l.__proto__||Object.getPrototypeOf(l)).apply(this,arguments))}return j(l,k),h(l,[{key:"isWithContent",value:function(){return this.getTitle()||this._getContent()}},{key:"addAttachmentClass",value:function(b){a(this.getTipElement()).addClass("".concat(n,"-").concat(b))}},{key:"getTipElement",value:function(){return this.tip=this.tip||a(this.config.template)[0],this.tip}},{key:"setContent",value:function(){var b=a(this.getTipElement());this.setElementContent(b.find(s.TITLE),this.getTitle());var c=this._getContent();"function"==typeof c&&(c=c.call(this.element)),this.setElementContent(b.find(s.CONTENT),c),b.removeClass("".concat(r.FADE," ").concat(r.SHOW))}},{key:"_getContent",value:function(){return this.element.getAttribute("data-content")||this.config.content}},{key:"_cleanTipClass",value:function(){var b=a(this.getTipElement()),c=b.attr("class").match(o);null!==c&&c.length>0&&b.removeClass(c.join(""))}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(d),f="object"===e(b)?b:null;if((c||!/destroy|hide/.test(b))&&(c||(c=new l(this,f),a(this).data(d,c)),"string"==typeof b)){if("undefined"==typeof c[b])throw new TypeError('No method named "'.concat(b,'"'));c[b]()}})}},{key:"VERSION",get:function(){return c}},{key:"Default",get:function(){return p}},{key:"NAME",get:function(){return b}},{key:"DATA_KEY",get:function(){return d}},{key:"Event",get:function(){return t}},{key:"EVENT_KEY",get:function(){return g}},{key:"DefaultType",get:function(){return q}}]),l}(m["default"]);return a.fn[b]=u._jQueryInterface,a.fn[b].Constructor=u,a.fn[b].noConflict=function(){return a.fn[b]=l,u._jQueryInterface},u}(l["default"]);a["default"]=n}); \ No newline at end of file +"use strict";define(["exports","jquery","./tooltip"],function(a,b,c){function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function f(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function g(a,b){for(var c=0;c

'}),y=m({},p["default"].DefaultType,{content:"(string|element|function)"}),z={FADE:"fade",SHOW:"show"},A={TITLE:".popover-header",CONTENT:".popover-body"},B={HIDE:"hide".concat(t),HIDDEN:"hidden".concat(t),SHOW:"show".concat(t),SHOWN:"shown".concat(t),INSERTED:"inserted".concat(t),CLICK:"click".concat(t),FOCUSIN:"focusin".concat(t),FOCUSOUT:"focusout".concat(t),MOUSEENTER:"mouseenter".concat(t),MOUSELEAVE:"mouseleave".concat(t)},C=function(a){function b(){return f(this,b),i(this,(b.__proto__||Object.getPrototypeOf(b)).apply(this,arguments))}return k(b,a),h(b,[{key:"isWithContent",value:function(){return this.getTitle()||this._getContent()}},{key:"addAttachmentClass",value:function(a){(0,o["default"])(this.getTipElement()).addClass("".concat(v,"-").concat(a))}},{key:"getTipElement",value:function(){return this.tip=this.tip||(0,o["default"])(this.config.template)[0],this.tip}},{key:"setContent",value:function(){var a=(0,o["default"])(this.getTipElement());this.setElementContent(a.find(A.TITLE),this.getTitle());var b=this._getContent();"function"==typeof b&&(b=b.call(this.element)),this.setElementContent(a.find(A.CONTENT),b),a.removeClass("".concat(z.FADE," ").concat(z.SHOW))}},{key:"_getContent",value:function(){return this.element.getAttribute("data-content")||this.config.content}},{key:"_cleanTipClass",value:function(){var a=(0,o["default"])(this.getTipElement()),b=a.attr("class").match(w);null!==b&&b.length>0&&a.removeClass(b.join(""))}}],[{key:"_jQueryInterface",value:function(a){return this.each(function(){var c=(0,o["default"])(this).data(s),d="object"===e(a)?a:null;if((c||!/dispose|hide/.test(a))&&(c||(c=new b(this,d),(0,o["default"])(this).data(s,c)),"string"==typeof a)){if("undefined"==typeof c[a])throw new TypeError('No method named "'.concat(a,'"'));c[a]()}})}},{key:"VERSION",get:function(){return r}},{key:"Default",get:function(){return x}},{key:"NAME",get:function(){return q}},{key:"DATA_KEY",get:function(){return s}},{key:"Event",get:function(){return B}},{key:"EVENT_KEY",get:function(){return t}},{key:"DefaultType",get:function(){return y}}]),b}(p["default"]);o["default"].fn[q]=C._jQueryInterface,o["default"].fn[q].Constructor=C,o["default"].fn[q].noConflict=function(){return o["default"].fn[q]=u,C._jQueryInterface},a["default"]=C}); \ No newline at end of file diff --git a/theme/boost/amd/build/sanitizer.min.js b/theme/boost/amd/build/sanitizer.min.js new file mode 100644 index 00000000000..f318ed7d074 --- /dev/null +++ b/theme/boost/amd/build/sanitizer.min.js @@ -0,0 +1 @@ +"use strict";define(["exports"],function(a){function b(a,b){var c=a.nodeName.toLowerCase();if(b.indexOf(c)!==-1)return d.indexOf(c)===-1||Boolean(a.nodeValue.match(f)||a.nodeValue.match(g));for(var e=b.filter(function(a){return a instanceof RegExp}),h=0,i=e.length;h=c){var d=this._targets[this._targets.length-1];return void(this._activeTarget!==d&&this._activate(d))}if(this._activeTarget&&a0)return this._activeTarget=null,void this._clear();for(var e=this._offsets.length;e--;){var f=this._activeTarget!==this._targets[e]&&a>=this._offsets[e]&&("undefined"==typeof this._offsets[e+1]||a=c){var d=this._targets[this._targets.length-1];return void(this._activeTarget!==d&&this._activate(d))}if(this._activeTarget&&a0)return this._activeTarget=null,void this._clear();for(var e=this._offsets.length,f=e;f--;){var g=this._activeTarget!==this._targets[f]&&a>=this._offsets[f]&&("undefined"==typeof this._offsets[f+1]||a li > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},o=function(){function b(a){e(this,b),this._element=a}return g(b,[{key:"show",value:function(){var b=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&a(this._element).hasClass(m.ACTIVE)||a(this._element).hasClass(m.DISABLED))){var c,d,e=a(this._element).closest(n.NAV_LIST_GROUP)[0],f=i["default"].getSelectorFromElement(this._element);if(e){var g="UL"===e.nodeName?n.ACTIVE_UL:n.ACTIVE;d=a.makeArray(a(e).find(g)),d=d[d.length-1]}var h=a.Event(l.HIDE,{relatedTarget:this._element}),j=a.Event(l.SHOW,{relatedTarget:d});if(d&&a(d).trigger(h),a(this._element).trigger(j),!j.isDefaultPrevented()&&!h.isDefaultPrevented()){f&&(c=a(f)[0]),this._activate(this._element,e);var k=function(){var c=a.Event(l.HIDDEN,{relatedTarget:b._element}),e=a.Event(l.SHOWN,{relatedTarget:d});a(d).trigger(c),a(b._element).trigger(e)};c?this._activate(c,c.parentNode,k):k()}}}},{key:"dispose",value:function(){a.removeData(this._element,d),this._element=null}},{key:"_activate",value:function(b,c,d){var e,f=this;e="UL"===c.nodeName?a(c).find(n.ACTIVE_UL):a(c).children(n.ACTIVE);var g=e[0],h=d&&i["default"].supportsTransitionEnd()&&g&&a(g).hasClass(m.FADE),j=function(){return f._transitionComplete(b,g,d)};g&&h?a(g).one(i["default"].TRANSITION_END,j).emulateTransitionEnd(k):j()}},{key:"_transitionComplete",value:function(b,c,d){if(c){a(c).removeClass("".concat(m.SHOW," ").concat(m.ACTIVE));var e=a(c.parentNode).find(n.DROPDOWN_ACTIVE_CHILD)[0];e&&a(e).removeClass(m.ACTIVE),"tab"===c.getAttribute("role")&&c.setAttribute("aria-selected",!1)}if(a(b).addClass(m.ACTIVE),"tab"===b.getAttribute("role")&&b.setAttribute("aria-selected",!0),i["default"].reflow(b),a(b).addClass(m.SHOW),b.parentNode&&a(b.parentNode).hasClass(m.DROPDOWN_MENU)){var f=a(b).closest(n.DROPDOWN)[0];f&&a(f).find(n.DROPDOWN_TOGGLE).addClass(m.ACTIVE),b.setAttribute("aria-expanded",!0)}d&&d()}}],[{key:"_jQueryInterface",value:function(c){return this.each(function(){var e=a(this),f=e.data(d);if(f||(f=new b(this),e.data(d,f)),"string"==typeof c){if("undefined"==typeof f[c])throw new TypeError('No method named "'.concat(c,'"'));f[c]()}})}},{key:"VERSION",get:function(){return c}}]),b}();return a(document).on(l.CLICK_DATA_API,n.DATA_TOGGLE,function(b){b.preventDefault(),o._jQueryInterface.call(a(this),"show")}),a.fn[b]=o._jQueryInterface,a.fn[b].Constructor=o,a.fn[b].noConflict=function(){return a.fn[b]=j,o._jQueryInterface},o}(h["default"]);a["default"]=j}); \ No newline at end of file +"use strict";define(["exports","jquery","./util"],function(a,b,c){function d(a){return a&&a.__esModule?a:{"default":a}}function e(a,b){if(!(a instanceof b))throw new TypeError("Cannot call a class as a function")}function f(a,b){for(var c=0;c li > .active",DATA_TOGGLE:'[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',DROPDOWN_TOGGLE:".dropdown-toggle",DROPDOWN_ACTIVE_CHILD:"> .dropdown-menu .active"},s=function(){function a(b){e(this,a),this._element=b}return g(a,[{key:"show",value:function(){var a=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&(0,h["default"])(this._element).hasClass(q.ACTIVE)||(0,h["default"])(this._element).hasClass(q.DISABLED))){var b,c,d=(0,h["default"])(this._element).closest(r.NAV_LIST_GROUP)[0],e=i["default"].getSelectorFromElement(this._element);if(d){var f="UL"===d.nodeName||"OL"===d.nodeName?r.ACTIVE_UL:r.ACTIVE;c=h["default"].makeArray((0,h["default"])(d).find(f)),c=c[c.length-1]}var g=h["default"].Event(p.HIDE,{relatedTarget:this._element}),j=h["default"].Event(p.SHOW,{relatedTarget:c});if(c&&(0,h["default"])(c).trigger(g),(0,h["default"])(this._element).trigger(j),!j.isDefaultPrevented()&&!g.isDefaultPrevented()){e&&(b=document.querySelector(e)),this._activate(this._element,d);var k=function(){var b=h["default"].Event(p.HIDDEN,{relatedTarget:a._element}),d=h["default"].Event(p.SHOWN,{relatedTarget:c});(0,h["default"])(c).trigger(b),(0,h["default"])(a._element).trigger(d)};b?this._activate(b,b.parentNode,k):k()}}}},{key:"dispose",value:function(){h["default"].removeData(this._element,l),this._element=null}},{key:"_activate",value:function(a,b,c){var d=this,e=!b||"UL"!==b.nodeName&&"OL"!==b.nodeName?(0,h["default"])(b).children(r.ACTIVE):(0,h["default"])(b).find(r.ACTIVE_UL),f=e[0],g=c&&f&&(0,h["default"])(f).hasClass(q.FADE),j=function(){return d._transitionComplete(a,f,c)};if(f&&g){var k=i["default"].getTransitionDurationFromElement(f);(0,h["default"])(f).removeClass(q.SHOW).one(i["default"].TRANSITION_END,j).emulateTransitionEnd(k)}else j()}},{key:"_transitionComplete",value:function(a,b,c){if(b){(0,h["default"])(b).removeClass(q.ACTIVE);var d=(0,h["default"])(b.parentNode).find(r.DROPDOWN_ACTIVE_CHILD)[0];d&&(0,h["default"])(d).removeClass(q.ACTIVE),"tab"===b.getAttribute("role")&&b.setAttribute("aria-selected",!1)}if((0,h["default"])(a).addClass(q.ACTIVE),"tab"===a.getAttribute("role")&&a.setAttribute("aria-selected",!0),i["default"].reflow(a),a.classList.contains(q.FADE)&&a.classList.add(q.SHOW),a.parentNode&&(0,h["default"])(a.parentNode).hasClass(q.DROPDOWN_MENU)){var e=(0,h["default"])(a).closest(r.DROPDOWN)[0];if(e){var f=[].slice.call(e.querySelectorAll(r.DROPDOWN_TOGGLE));(0,h["default"])(f).addClass(q.ACTIVE)}a.setAttribute("aria-expanded",!0)}c&&c()}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=(0,h["default"])(this),d=c.data(l);if(d||(d=new a(this),c.data(l,d)),"string"==typeof b){if("undefined"==typeof d[b])throw new TypeError('No method named "'.concat(b,'"'));d[b]()}})}},{key:"VERSION",get:function(){return k}}]),a}();(0,h["default"])(document).on(p.CLICK_DATA_API,r.DATA_TOGGLE,function(a){a.preventDefault(),s._jQueryInterface.call((0,h["default"])(this),"show")}),h["default"].fn[j]=s._jQueryInterface,h["default"].fn[j].Constructor=s,h["default"].fn[j].noConflict=function(){return h["default"].fn[j]=o,s._jQueryInterface},a["default"]=s}); \ No newline at end of file diff --git a/theme/boost/amd/build/toast.min.js b/theme/boost/amd/build/toast.min.js new file mode 100644 index 00000000000..eccf5d23772 --- /dev/null +++ b/theme/boost/amd/build/toast.min.js @@ -0,0 +1 @@ +"use strict";define(["exports","jquery","./util"],function(a,b,c){function d(a){return a&&a.__esModule?a:{"default":a}}function e(a){return(e="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a})(a)}function f(a){for(var b=1;b
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},s={SHOW:"show",OUT:"out"},t={HIDE:"hide".concat(e),HIDDEN:"hidden".concat(e),SHOW:"show".concat(e),SHOWN:"shown".concat(e),INSERTED:"inserted".concat(e),CLICK:"click".concat(e),FOCUSIN:"focusin".concat(e),FOCUSOUT:"focusout".concat(e),MOUSEENTER:"mouseenter".concat(e),MOUSELEAVE:"mouseleave".concat(e)},u={FADE:"fade",SHOW:"show"},v={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"},w={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},x=function(){function i(a,b){if(h(this,i),"undefined"==typeof l["default"])throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=a,this.config=this._getConfig(b),this.tip=null,this._setListeners()}return j(i,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(b){if(this._isEnabled)if(b){var c=this.constructor.DATA_KEY,d=a(b.currentTarget).data(c);d||(d=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(c,d)),d._activeTrigger.click=!d._activeTrigger.click,d._isWithActiveTrigger()?d._enter(null,d):d._leave(null,d)}else{if(a(this.getTipElement()).hasClass(u.SHOW))return void this._leave(null,this);this._enter(null,this)}}},{key:"dispose",value:function(){clearTimeout(this._timeout),a.removeData(this.element,this.constructor.DATA_KEY),a(this.element).off(this.constructor.EVENT_KEY),a(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&a(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null}},{key:"show",value:function(){var b=this;if("none"===a(this.element).css("display"))throw new Error("Please use show on visible elements");var c=a.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){a(this.element).trigger(c);var d=a.contains(this.element.ownerDocument.documentElement,this.element);if(c.isDefaultPrevented()||!d)return;var e=this.getTipElement(),f=m["default"].getUID(this.constructor.NAME);e.setAttribute("id",f),this.element.setAttribute("aria-describedby",f),this.setContent(),this.config.animation&&a(e).addClass(u.FADE);var g="function"==typeof this.config.placement?this.config.placement.call(this,e,this.element):this.config.placement,h=this._getAttachment(g);this.addAttachmentClass(h);var j=this.config.container===!1?document.body:a(this.config.container);a(e).data(this.constructor.DATA_KEY,this),a.contains(this.element.ownerDocument.documentElement,this.tip)||a(e).appendTo(j),a(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new l["default"](this.element,e,{placement:h,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:v.ARROW},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(a){a.originalPlacement!==a.placement&&b._handlePopperPlacementChange(a)},onUpdate:function(a){b._handlePopperPlacementChange(a)}}),a(e).addClass(u.SHOW),"ontouchstart"in document.documentElement&&a("body").children().on("mouseover",null,a.noop);var k=function(){b.config.animation&&b._fixTransition();var c=b._hoverState;b._hoverState=null,a(b.element).trigger(b.constructor.Event.SHOWN),c===s.OUT&&b._leave(null,b)};m["default"].supportsTransitionEnd()&&a(this.tip).hasClass(u.FADE)?a(this.tip).one(m["default"].TRANSITION_END,k).emulateTransitionEnd(i._TRANSITION_DURATION):k()}}},{key:"hide",value:function(b){var c=this,d=this.getTipElement(),e=a.Event(this.constructor.Event.HIDE),f=function(){c._hoverState!==s.SHOW&&d.parentNode&&d.parentNode.removeChild(d),c._cleanTipClass(),c.element.removeAttribute("aria-describedby"),a(c.element).trigger(c.constructor.Event.HIDDEN),null!==c._popper&&c._popper.destroy(),b&&b()};a(this.element).trigger(e),e.isDefaultPrevented()||(a(d).removeClass(u.SHOW),"ontouchstart"in document.documentElement&&a("body").children().off("mouseover",null,a.noop),this._activeTrigger[w.CLICK]=!1,this._activeTrigger[w.FOCUS]=!1,this._activeTrigger[w.HOVER]=!1,m["default"].supportsTransitionEnd()&&a(this.tip).hasClass(u.FADE)?a(d).one(m["default"].TRANSITION_END,f).emulateTransitionEnd(k):f(),this._hoverState="")}},{key:"update",value:function(){null!==this._popper&&this._popper.scheduleUpdate()}},{key:"isWithContent",value:function(){return Boolean(this.getTitle())}},{key:"addAttachmentClass",value:function(b){a(this.getTipElement()).addClass("".concat(n,"-").concat(b))}},{key:"getTipElement",value:function(){return this.tip=this.tip||a(this.config.template)[0],this.tip}},{key:"setContent",value:function(){var b=a(this.getTipElement());this.setElementContent(b.find(v.TOOLTIP_INNER),this.getTitle()),b.removeClass("".concat(u.FADE," ").concat(u.SHOW))}},{key:"setElementContent",value:function(b,c){var d=this.config.html;"object"===g(c)&&(c.nodeType||c.jquery)?d?a(c).parent().is(b)||b.empty().append(c):b.text(a(c).text()):b[d?"html":"text"](c)}},{key:"getTitle",value:function(){var a=this.element.getAttribute("data-original-title");return a||(a="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),a}},{key:"_getAttachment",value:function(a){return q[a.toUpperCase()]}},{key:"_setListeners",value:function(){var b=this,c=this.config.trigger.split(" ");c.forEach(function(c){if("click"===c)a(b.element).on(b.constructor.Event.CLICK,b.config.selector,function(a){return b.toggle(a)});else if(c!==w.MANUAL){var d=c===w.HOVER?b.constructor.Event.MOUSEENTER:b.constructor.Event.FOCUSIN,e=c===w.HOVER?b.constructor.Event.MOUSELEAVE:b.constructor.Event.FOCUSOUT;a(b.element).on(d,b.config.selector,function(a){return b._enter(a)}).on(e,b.config.selector,function(a){return b._leave(a)})}a(b.element).closest(".modal").on("hide.bs.modal",function(){return b.hide()})}),this.config.selector?this.config=f({},this.config,{trigger:"manual",selector:""}):this._fixTitle()}},{key:"_fixTitle",value:function(){var a=g(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==a)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))}},{key:"_enter",value:function(b,c){var d=this.constructor.DATA_KEY;return c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusin"===b.type?w.FOCUS:w.HOVER]=!0),a(c.getTipElement()).hasClass(u.SHOW)||c._hoverState===s.SHOW?void(c._hoverState=s.SHOW):(clearTimeout(c._timeout),c._hoverState=s.SHOW,c.config.delay&&c.config.delay.show?void(c._timeout=setTimeout(function(){c._hoverState===s.SHOW&&c.show()},c.config.delay.show)):void c.show())}},{key:"_leave",value:function(b,c){var d=this.constructor.DATA_KEY;if(c=c||a(b.currentTarget).data(d),c||(c=new this.constructor(b.currentTarget,this._getDelegateConfig()),a(b.currentTarget).data(d,c)),b&&(c._activeTrigger["focusout"===b.type?w.FOCUS:w.HOVER]=!1),!c._isWithActiveTrigger())return clearTimeout(c._timeout),c._hoverState=s.OUT,c.config.delay&&c.config.delay.hide?void(c._timeout=setTimeout(function(){c._hoverState===s.OUT&&c.hide()},c.config.delay.hide)):void c.hide()}},{key:"_isWithActiveTrigger",value:function(){for(var a in this._activeTrigger)if(this._activeTrigger[a])return!0;return!1}},{key:"_getConfig",value:function(c){return c=f({},this.constructor.Default,a(this.element).data(),c),"number"==typeof c.delay&&(c.delay={show:c.delay,hide:c.delay}),"number"==typeof c.title&&(c.title=c.title.toString()),"number"==typeof c.content&&(c.content=c.content.toString()),m["default"].typeCheckConfig(b,c,this.constructor.DefaultType),c}},{key:"_getDelegateConfig",value:function(){var a={};if(this.config)for(var b in this.config)this.constructor.Default[b]!==this.config[b]&&(a[b]=this.config[b]);return a}},{key:"_cleanTipClass",value:function(){var b=a(this.getTipElement()),c=b.attr("class").match(o);null!==c&&c.length>0&&b.removeClass(c.join(""))}},{key:"_handlePopperPlacementChange",value:function(a){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(a.placement))}},{key:"_fixTransition",value:function(){var b=this.getTipElement(),c=this.config.animation;null===b.getAttribute("x-placement")&&(a(b).removeClass(u.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=c)}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=a(this).data(d),e="object"===g(b)&&b;if((c||!/dispose|hide/.test(b))&&(c||(c=new i(this,e),a(this).data(d,c)),"string"==typeof b)){if("undefined"==typeof c[b])throw new TypeError('No method named "'.concat(b,'"'));c[b]()}})}},{key:"VERSION",get:function(){return c}},{key:"Default",get:function(){return r}},{key:"NAME",get:function(){return b}},{key:"DATA_KEY",get:function(){return d}},{key:"Event",get:function(){return t}},{key:"EVENT_KEY",get:function(){return e}},{key:"DefaultType",get:function(){return p}}]),i}();return a.fn[b]=x._jQueryInterface,a.fn[b].Constructor=x,a.fn[b].noConflict=function(){return a.fn[b]=i,x._jQueryInterface},x}(k["default"],l["default"]);a["default"]=n}); \ No newline at end of file +"use strict";define(["exports","./sanitizer","jquery","core/popper","./util"],function(a,b,c,d,e){function f(a){return a&&a.__esModule?a:{"default":a}}function g(a){for(var b=1;b
',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:b.DefaultWhitelist},A={SHOW:"show",OUT:"out"},B={HIDE:"hide".concat(s),HIDDEN:"hidden".concat(s),SHOW:"show".concat(s),SHOWN:"shown".concat(s),INSERTED:"inserted".concat(s),CLICK:"click".concat(s),FOCUSIN:"focusin".concat(s),FOCUSOUT:"focusout".concat(s),MOUSEENTER:"mouseenter".concat(s),MOUSELEAVE:"mouseleave".concat(s)},C={FADE:"fade",SHOW:"show"},D={TOOLTIP:".tooltip",TOOLTIP_INNER:".tooltip-inner",ARROW:".arrow"},E={HOVER:"hover",FOCUS:"focus",CLICK:"click",MANUAL:"manual"},F=function(){function a(b,c){if(j(this,a),"undefined"==typeof n["default"])throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=b,this.config=this._getConfig(c),this.tip=null,this._setListeners()}return l(a,[{key:"enable",value:function(){this._isEnabled=!0}},{key:"disable",value:function(){this._isEnabled=!1}},{key:"toggleEnabled",value:function(){this._isEnabled=!this._isEnabled}},{key:"toggle",value:function(a){if(this._isEnabled)if(a){var b=this.constructor.DATA_KEY,c=(0,m["default"])(a.currentTarget).data(b);c||(c=new this.constructor(a.currentTarget,this._getDelegateConfig()),(0,m["default"])(a.currentTarget).data(b,c)),c._activeTrigger.click=!c._activeTrigger.click,c._isWithActiveTrigger()?c._enter(null,c):c._leave(null,c)}else{if((0,m["default"])(this.getTipElement()).hasClass(C.SHOW))return void this._leave(null,this);this._enter(null,this)}}},{key:"dispose",value:function(){clearTimeout(this._timeout),m["default"].removeData(this.element,this.constructor.DATA_KEY),(0,m["default"])(this.element).off(this.constructor.EVENT_KEY),(0,m["default"])(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&(0,m["default"])(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,null!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null}},{key:"show",value:function(){var a=this;if("none"===(0,m["default"])(this.element).css("display"))throw new Error("Please use show on visible elements");var b=m["default"].Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){(0,m["default"])(this.element).trigger(b);var c=o["default"].findShadowRoot(this.element),d=m["default"].contains(null!==c?c:this.element.ownerDocument.documentElement,this.element);if(b.isDefaultPrevented()||!d)return;var e=this.getTipElement(),f=o["default"].getUID(this.constructor.NAME);e.setAttribute("id",f),this.element.setAttribute("aria-describedby",f),this.setContent(),this.config.animation&&(0,m["default"])(e).addClass(C.FADE);var g="function"==typeof this.config.placement?this.config.placement.call(this,e,this.element):this.config.placement,h=this._getAttachment(g);this.addAttachmentClass(h);var i=this._getContainer();(0,m["default"])(e).data(this.constructor.DATA_KEY,this),m["default"].contains(this.element.ownerDocument.documentElement,this.tip)||(0,m["default"])(e).appendTo(i),(0,m["default"])(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new n["default"](this.element,e,{placement:h,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:D.ARROW},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(b){b.originalPlacement!==b.placement&&a._handlePopperPlacementChange(b)},onUpdate:function(b){return a._handlePopperPlacementChange(b)}}),(0,m["default"])(e).addClass(C.SHOW),"ontouchstart"in document.documentElement&&(0,m["default"])(document.body).children().on("mouseover",null,m["default"].noop);var j=function(){a.config.animation&&a._fixTransition();var b=a._hoverState;a._hoverState=null,(0,m["default"])(a.element).trigger(a.constructor.Event.SHOWN),b===A.OUT&&a._leave(null,a)};if((0,m["default"])(this.tip).hasClass(C.FADE)){var k=o["default"].getTransitionDurationFromElement(this.tip);(0,m["default"])(this.tip).one(o["default"].TRANSITION_END,j).emulateTransitionEnd(k)}else j()}}},{key:"hide",value:function(a){var b=this,c=this.getTipElement(),d=m["default"].Event(this.constructor.Event.HIDE),e=function(){b._hoverState!==A.SHOW&&c.parentNode&&c.parentNode.removeChild(c),b._cleanTipClass(),b.element.removeAttribute("aria-describedby"),(0,m["default"])(b.element).trigger(b.constructor.Event.HIDDEN),null!==b._popper&&b._popper.destroy(),a&&a()};if((0,m["default"])(this.element).trigger(d),!d.isDefaultPrevented()){if((0,m["default"])(c).removeClass(C.SHOW),"ontouchstart"in document.documentElement&&(0,m["default"])(document.body).children().off("mouseover",null,m["default"].noop),this._activeTrigger[E.CLICK]=!1,this._activeTrigger[E.FOCUS]=!1,this._activeTrigger[E.HOVER]=!1,(0,m["default"])(this.tip).hasClass(C.FADE)){var f=o["default"].getTransitionDurationFromElement(c);(0,m["default"])(c).one(o["default"].TRANSITION_END,e).emulateTransitionEnd(f)}else e();this._hoverState=""}}},{key:"update",value:function(){null!==this._popper&&this._popper.scheduleUpdate()}},{key:"isWithContent",value:function(){return Boolean(this.getTitle())}},{key:"addAttachmentClass",value:function(a){(0,m["default"])(this.getTipElement()).addClass("".concat(u,"-").concat(a))}},{key:"getTipElement",value:function(){return this.tip=this.tip||(0,m["default"])(this.config.template)[0],this.tip}},{key:"setContent",value:function(){var a=this.getTipElement();this.setElementContent((0,m["default"])(a.querySelectorAll(D.TOOLTIP_INNER)),this.getTitle()),(0,m["default"])(a).removeClass("".concat(C.FADE," ").concat(C.SHOW))}},{key:"setElementContent",value:function(a,c){return"object"===i(c)&&(c.nodeType||c.jquery)?void(this.config.html?(0,m["default"])(c).parent().is(a)||a.empty().append(c):a.text((0,m["default"])(c).text())):void(this.config.html?(this.config.sanitize&&(c=(0,b.sanitizeHtml)(c,this.config.whiteList,this.config.sanitizeFn)),a.html(c)):a.text(c))}},{key:"getTitle",value:function(){var a=this.element.getAttribute("data-original-title");return a||(a="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),a}},{key:"_getOffset",value:function(){var a=this,b={};return"function"==typeof this.config.offset?b.fn=function(b){return b.offsets=g({},b.offsets,a.config.offset(b.offsets,a.element)||{}),b}:b.offset=this.config.offset,b}},{key:"_getContainer",value:function(){return this.config.container===!1?document.body:o["default"].isElement(this.config.container)?(0,m["default"])(this.config.container):(0,m["default"])(document).find(this.config.container)}},{key:"_getAttachment",value:function(a){return y[a.toUpperCase()]}},{key:"_setListeners",value:function(){var a=this,b=this.config.trigger.split(" ");b.forEach(function(b){if("click"===b)(0,m["default"])(a.element).on(a.constructor.Event.CLICK,a.config.selector,function(b){return a.toggle(b)});else if(b!==E.MANUAL){var c=b===E.HOVER?a.constructor.Event.MOUSEENTER:a.constructor.Event.FOCUSIN,d=b===E.HOVER?a.constructor.Event.MOUSELEAVE:a.constructor.Event.FOCUSOUT;(0,m["default"])(a.element).on(c,a.config.selector,function(b){return a._enter(b)}).on(d,a.config.selector,function(b){return a._leave(b)})}}),(0,m["default"])(this.element).closest(".modal").on("hide.bs.modal",function(){a.element&&a.hide()}),this.config.selector?this.config=g({},this.config,{trigger:"manual",selector:""}):this._fixTitle()}},{key:"_fixTitle",value:function(){var a=i(this.element.getAttribute("data-original-title"));(this.element.getAttribute("title")||"string"!==a)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))}},{key:"_enter",value:function(a,b){var c=this.constructor.DATA_KEY;return b=b||(0,m["default"])(a.currentTarget).data(c),b||(b=new this.constructor(a.currentTarget,this._getDelegateConfig()),(0,m["default"])(a.currentTarget).data(c,b)),a&&(b._activeTrigger["focusin"===a.type?E.FOCUS:E.HOVER]=!0),(0,m["default"])(b.getTipElement()).hasClass(C.SHOW)||b._hoverState===A.SHOW?void(b._hoverState=A.SHOW):(clearTimeout(b._timeout),b._hoverState=A.SHOW,b.config.delay&&b.config.delay.show?void(b._timeout=setTimeout(function(){b._hoverState===A.SHOW&&b.show()},b.config.delay.show)):void b.show())}},{key:"_leave",value:function(a,b){var c=this.constructor.DATA_KEY;if(b=b||(0,m["default"])(a.currentTarget).data(c),b||(b=new this.constructor(a.currentTarget,this._getDelegateConfig()),(0,m["default"])(a.currentTarget).data(c,b)),a&&(b._activeTrigger["focusout"===a.type?E.FOCUS:E.HOVER]=!1),!b._isWithActiveTrigger())return clearTimeout(b._timeout),b._hoverState=A.OUT,b.config.delay&&b.config.delay.hide?void(b._timeout=setTimeout(function(){b._hoverState===A.OUT&&b.hide()},b.config.delay.hide)):void b.hide()}},{key:"_isWithActiveTrigger",value:function(){for(var a in this._activeTrigger)if(this._activeTrigger[a])return!0;return!1}},{key:"_getConfig",value:function(a){var c=(0,m["default"])(this.element).data();return Object.keys(c).forEach(function(a){w.indexOf(a)!==-1&&delete c[a]}),a=g({},this.constructor.Default,c,"object"===i(a)&&a?a:{}),"number"==typeof a.delay&&(a.delay={show:a.delay,hide:a.delay}),"number"==typeof a.title&&(a.title=a.title.toString()),"number"==typeof a.content&&(a.content=a.content.toString()),o["default"].typeCheckConfig(p,a,this.constructor.DefaultType),a.sanitize&&(a.template=(0,b.sanitizeHtml)(a.template,a.whiteList,a.sanitizeFn)),a}},{key:"_getDelegateConfig",value:function(){var a={};if(this.config)for(var b in this.config)this.constructor.Default[b]!==this.config[b]&&(a[b]=this.config[b]);return a}},{key:"_cleanTipClass",value:function(){var a=(0,m["default"])(this.getTipElement()),b=a.attr("class").match(v);null!==b&&b.length&&a.removeClass(b.join(""))}},{key:"_handlePopperPlacementChange",value:function(a){var b=a.instance;this.tip=b.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(a.placement))}},{key:"_fixTransition",value:function(){var a=this.getTipElement(),b=this.config.animation;null===a.getAttribute("x-placement")&&((0,m["default"])(a).removeClass(C.FADE),this.config.animation=!1,this.hide(),this.show(),this.config.animation=b)}}],[{key:"_jQueryInterface",value:function(b){return this.each(function(){var c=(0,m["default"])(this).data(r),d="object"===i(b)&&b;if((c||!/dispose|hide/.test(b))&&(c||(c=new a(this,d),(0,m["default"])(this).data(r,c)),"string"==typeof b)){if("undefined"==typeof c[b])throw new TypeError('No method named "'.concat(b,'"'));c[b]()}})}},{key:"VERSION",get:function(){return q}},{key:"Default",get:function(){return z}},{key:"NAME",get:function(){return p}},{key:"DATA_KEY",get:function(){return r}},{key:"Event",get:function(){return B}},{key:"EVENT_KEY",get:function(){return s}},{key:"DefaultType",get:function(){return x}}]),a}();m["default"].fn[p]=F._jQueryInterface,m["default"].fn[p].Constructor=F,m["default"].fn[p].noConflict=function(){return m["default"].fn[p]=t,F._jQueryInterface},a["default"]=F}); \ No newline at end of file diff --git a/theme/boost/amd/build/util.min.js b/theme/boost/amd/build/util.min.js index 3ecdb77c63f..639879592d2 100644 --- a/theme/boost/amd/build/util.min.js +++ b/theme/boost/amd/build/util.min.js @@ -1 +1 @@ -define(["exports","jquery"],function(a,b){"use strict";function c(a){return a&&a.__esModule?a:{"default":a}}Object.defineProperty(a,"__esModule",{value:!0});var d=c(b),e=function(a){function b(a){return{}.toString.call(a).match(/\s([a-zA-Z]+)/)[1].toLowerCase()}function c(){return{bindType:h.end,delegateType:h.end,handle:function(b){if(a(b.target).is(this))return b.handleObj.handler.apply(this,arguments)}}}function d(){return("undefined"==typeof window||!window.QUnit)&&{end:"transitionend"}}function e(b){var c=this,d=!1;return a(this).one(j.TRANSITION_END,function(){d=!0}),setTimeout(function(){d||j.triggerTransitionEnd(c)},b),this}function f(){h=d(),a.fn.emulateTransitionEnd=e,j.supportsTransitionEnd()&&(a.event.special[j.TRANSITION_END]=c())}function g(b){return b="function"==typeof a.escapeSelector?a.escapeSelector(b).substr(1):b.replace(/(:|\.|\[|\]|,|=|@)/g,"\\$1")}var h=!1,i=1e6,j={TRANSITION_END:"bsTransitionEnd",getUID:function(a){do a+=~~(Math.random()*i);while(document.getElementById(a));return a},getSelectorFromElement:function(b){var c=b.getAttribute("data-target");c&&"#"!==c||(c=b.getAttribute("href")||""),"#"===c.charAt(0)&&(c=g(c));try{var d=a(document).find(c);return d.length>0?c:null}catch(e){return null}},reflow:function(a){return a.offsetHeight},triggerTransitionEnd:function(b){a(b).trigger(h.end)},supportsTransitionEnd:function(){return Boolean(h)},isElement:function(a){return(a[0]||a).nodeType},typeCheckConfig:function(a,c,d){for(var e in d)if(Object.prototype.hasOwnProperty.call(d,e)){var f=d[e],g=c[e],h=g&&j.isElement(g)?"element":b(g);if(!new RegExp(f).test(h))throw new Error("".concat(a.toUpperCase(),": ")+'Option "'.concat(e,'" provided type "').concat(h,'" ')+'but expected type "'.concat(f,'".'))}}};return f(),j}(d["default"]);a["default"]=e}); \ No newline at end of file +"use strict";define(["exports","jquery"],function(a,b){function c(a){return a&&a.__esModule?a:{"default":a}}function d(a){return{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase()}function e(){return{bindType:i,delegateType:i,handle:function(a){if((0,h["default"])(a.target).is(this))return a.handleObj.handler.apply(this,arguments)}}}function f(a){var b=this,c=!1;return(0,h["default"])(this).one(l.TRANSITION_END,function(){c=!0}),setTimeout(function(){c||l.triggerTransitionEnd(b)},a),this}function g(){h["default"].fn.emulateTransitionEnd=f,h["default"].event.special[l.TRANSITION_END]=e()}Object.defineProperty(a,"__esModule",{value:!0});var h=c(b),i="transitionend",j=1e6,k=1e3,l={TRANSITION_END:"bsTransitionEnd",getUID:function(a){do a+=~~(Math.random()*j);while(document.getElementById(a));return a},getSelectorFromElement:function(a){var b=a.getAttribute("data-target");if(!b||"#"===b){var c=a.getAttribute("href");b=c&&"#"!==c?c.trim():""}try{return document.querySelector(b)?b:null}catch(d){return null}},getTransitionDurationFromElement:function(a){if(!a)return 0;var b=(0,h["default"])(a).css("transition-duration"),c=(0,h["default"])(a).css("transition-delay"),d=parseFloat(b),e=parseFloat(c);return d||e?(b=b.split(",")[0],c=c.split(",")[0],(parseFloat(b)+parseFloat(c))*k):0},reflow:function(a){return a.offsetHeight},triggerTransitionEnd:function(a){(0,h["default"])(a).trigger(i)},supportsTransitionEnd:function(){return Boolean(i)},isElement:function(a){return(a[0]||a).nodeType},typeCheckConfig:function(a,b,c){for(var e in c)if(Object.prototype.hasOwnProperty.call(c,e)){var f=c[e],g=b[e],h=g&&l.isElement(g)?"element":d(g);if(!new RegExp(f).test(h))throw new Error("".concat(a.toUpperCase(),": ")+'Option "'.concat(e,'" provided type "').concat(h,'" ')+'but expected type "'.concat(f,'".'))}},findShadowRoot:function(a){if(!document.documentElement.attachShadow)return null;if("function"==typeof a.getRootNode){var b=a.getRootNode();return b instanceof ShadowRoot?b:null}return a instanceof ShadowRoot?a:a.parentNode?l.findShadowRoot(a.parentNode):null}};g(),a["default"]=l}); \ No newline at end of file diff --git a/theme/boost/amd/src/alert.js b/theme/boost/amd/src/alert.js index 4d3065eca91..a1f927f2985 100644 --- a/theme/boost/amd/src/alert.js +++ b/theme/boost/amd/src/alert.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { "use strict"; @@ -38,179 +40,174 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): alert.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Alert = function ($) { + var NAME = 'alert'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.alert'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var Selector = { + DISMISS: '[data-dismiss="alert"]' + }; + var Event = { + CLOSE: "close".concat(EVENT_KEY), + CLOSED: "closed".concat(EVENT_KEY), + CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) + }; + var ClassName = { + ALERT: 'alert', + FADE: 'fade', + SHOW: 'show' /** * ------------------------------------------------------------------------ - * Constants - * ------------------------------------------------------------------------ - */ - var NAME = 'alert'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.alert'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 150; - var Selector = { - DISMISS: '[data-dismiss="alert"]' - }; - var Event = { - CLOSE: "close".concat(EVENT_KEY), - CLOSED: "closed".concat(EVENT_KEY), - CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) - }; - var ClassName = { - ALERT: 'alert', - FADE: 'fade', - SHOW: 'show' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - - }; - - var Alert = function () { - function Alert(element) { - _classCallCheck(this, Alert); - - this._element = element; - } // Getters - - - _createClass(Alert, [{ - key: "close", - value: function close(element) { - element = element || this._element; - - var rootElement = this._getRootElement(element); - - var customEvent = this._triggerCloseEvent(rootElement); - - if (customEvent.isDefaultPrevented()) { - return; - } - - this._removeElement(rootElement); - } - }, { - key: "dispose", - value: function dispose() { - $.removeData(this._element, DATA_KEY); - this._element = null; - } - }, { - key: "_getRootElement", - value: function _getRootElement(element) { - var selector = _util2.default.getSelectorFromElement(element); - - var parent = false; - - if (selector) { - parent = $(selector)[0]; - } - - if (!parent) { - parent = $(element).closest(".".concat(ClassName.ALERT))[0]; - } - - return parent; - } - }, { - key: "_triggerCloseEvent", - value: function _triggerCloseEvent(element) { - var closeEvent = $.Event(Event.CLOSE); - $(element).trigger(closeEvent); - return closeEvent; - } - }, { - key: "_removeElement", - value: function _removeElement(element) { - var _this = this; - - $(element).removeClass(ClassName.SHOW); - - if (!_util2.default.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) { - this._destroyElement(element); - - return; - } - - $(element).one(_util2.default.TRANSITION_END, function (event) { - return _this._destroyElement(element, event); - }).emulateTransitionEnd(TRANSITION_DURATION); - } - }, { - key: "_destroyElement", - value: function _destroyElement(element) { - $(element).detach().trigger(Event.CLOSED).remove(); - } - }], [{ - key: "_jQueryInterface", - value: function _jQueryInterface(config) { - return this.each(function () { - var $element = $(this); - var data = $element.data(DATA_KEY); - - if (!data) { - data = new Alert(this); - $element.data(DATA_KEY, data); - } - - if (config === 'close') { - data[config](this); - } - }); - } - }, { - key: "_handleDismiss", - value: function _handleDismiss(alertInstance) { - return function (event) { - if (event) { - event.preventDefault(); - } - - alertInstance.close(this); - }; - } - }, { - key: "VERSION", - get: function get() { - return VERSION; - } - }]); - - return Alert; - }(); - - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - $(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); - /** - * ------------------------------------------------------------------------ - * jQuery + * Class Definition * ------------------------------------------------------------------------ */ - $.fn[NAME] = Alert._jQueryInterface; - $.fn[NAME].Constructor = Alert; + }; - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Alert._jQueryInterface; - }; + var Alert = function () { + function Alert(element) { + _classCallCheck(this, Alert); + + this._element = element; + } // Getters + + + _createClass(Alert, [{ + key: "close", + value: function close(element) { + var rootElement = this._element; + + if (element) { + rootElement = this._getRootElement(element); + } + + var customEvent = this._triggerCloseEvent(rootElement); + + if (customEvent.isDefaultPrevented()) { + return; + } + + this._removeElement(rootElement); + } + }, { + key: "dispose", + value: function dispose() { + _jquery2.default.removeData(this._element, DATA_KEY); + + this._element = null; + } + }, { + key: "_getRootElement", + value: function _getRootElement(element) { + var selector = _util2.default.getSelectorFromElement(element); + + var parent = false; + + if (selector) { + parent = document.querySelector(selector); + } + + if (!parent) { + parent = (0, _jquery2.default)(element).closest(".".concat(ClassName.ALERT))[0]; + } + + return parent; + } + }, { + key: "_triggerCloseEvent", + value: function _triggerCloseEvent(element) { + var closeEvent = _jquery2.default.Event(Event.CLOSE); + + (0, _jquery2.default)(element).trigger(closeEvent); + return closeEvent; + } + }, { + key: "_removeElement", + value: function _removeElement(element) { + var _this = this; + + (0, _jquery2.default)(element).removeClass(ClassName.SHOW); + + if (!(0, _jquery2.default)(element).hasClass(ClassName.FADE)) { + this._destroyElement(element); + + return; + } + + var transitionDuration = _util2.default.getTransitionDurationFromElement(element); + + (0, _jquery2.default)(element).one(_util2.default.TRANSITION_END, function (event) { + return _this._destroyElement(element, event); + }).emulateTransitionEnd(transitionDuration); + } + }, { + key: "_destroyElement", + value: function _destroyElement(element) { + (0, _jquery2.default)(element).detach().trigger(Event.CLOSED).remove(); + } + }], [{ + key: "_jQueryInterface", + value: function _jQueryInterface(config) { + return this.each(function () { + var $element = (0, _jquery2.default)(this); + var data = $element.data(DATA_KEY); + + if (!data) { + data = new Alert(this); + $element.data(DATA_KEY, data); + } + + if (config === 'close') { + data[config](this); + } + }); + } + }, { + key: "_handleDismiss", + value: function _handleDismiss(alertInstance) { + return function (event) { + if (event) { + event.preventDefault(); + } + + alertInstance.close(this); + }; + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }]); return Alert; - }(_jquery2.default); + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + (0, _jquery2.default)(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert())); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _jquery2.default.fn[NAME] = Alert._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Alert; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Alert._jQueryInterface; + }; exports.default = Alert; }); \ No newline at end of file diff --git a/theme/boost/amd/src/button.js b/theme/boost/amd/src/button.js index 00a407a66dc..7cb7f690155 100644 --- a/theme/boost/amd/src/button.js +++ b/theme/boost/amd/src/button.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery"], function (exports, _jquery) { "use strict"; @@ -36,165 +38,156 @@ define(["exports", "jquery"], function (exports, _jquery) { } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): button.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Button = function ($) { + var NAME = 'button'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.button'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var ClassName = { + ACTIVE: 'active', + BUTTON: 'btn', + FOCUS: 'focus' + }; + var Selector = { + DATA_TOGGLE_CARROT: '[data-toggle^="button"]', + DATA_TOGGLE: '[data-toggle="buttons"]', + INPUT: 'input:not([type="hidden"])', + ACTIVE: '.active', + BUTTON: '.btn' + }; + var Event = { + CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY), + FOCUS_BLUR_DATA_API: "focus".concat(EVENT_KEY).concat(DATA_API_KEY, " ") + "blur".concat(EVENT_KEY).concat(DATA_API_KEY) /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'button'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.button'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var ClassName = { - ACTIVE: 'active', - BUTTON: 'btn', - FOCUS: 'focus' - }; - var Selector = { - DATA_TOGGLE_CARROT: '[data-toggle^="button"]', - DATA_TOGGLE: '[data-toggle="buttons"]', - INPUT: 'input', - ACTIVE: '.active', - BUTTON: '.btn' - }; - var Event = { - CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY), - FOCUS_BLUR_DATA_API: "focus".concat(EVENT_KEY).concat(DATA_API_KEY, " ") + "blur".concat(EVENT_KEY).concat(DATA_API_KEY) - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - }; + }; - var Button = function () { - function Button(element) { - _classCallCheck(this, Button); + var Button = function () { + function Button(element) { + _classCallCheck(this, Button); - this._element = element; - } // Getters + this._element = element; + } // Getters - _createClass(Button, [{ - key: "toggle", - value: function toggle() { - var triggerChangeEvent = true; - var addAriaPressed = true; - var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0]; + _createClass(Button, [{ + key: "toggle", + value: function toggle() { + var triggerChangeEvent = true; + var addAriaPressed = true; + var rootElement = (0, _jquery2.default)(this._element).closest(Selector.DATA_TOGGLE)[0]; - if (rootElement) { - var input = $(this._element).find(Selector.INPUT)[0]; + if (rootElement) { + var input = this._element.querySelector(Selector.INPUT); - if (input) { - if (input.type === 'radio') { - if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) { - triggerChangeEvent = false; - } else { - var activeElement = $(rootElement).find(Selector.ACTIVE)[0]; + if (input) { + if (input.type === 'radio') { + if (input.checked && this._element.classList.contains(ClassName.ACTIVE)) { + triggerChangeEvent = false; + } else { + var activeElement = rootElement.querySelector(Selector.ACTIVE); - if (activeElement) { - $(activeElement).removeClass(ClassName.ACTIVE); - } + if (activeElement) { + (0, _jquery2.default)(activeElement).removeClass(ClassName.ACTIVE); } } + } - if (triggerChangeEvent) { - if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { - return; - } - - input.checked = !$(this._element).hasClass(ClassName.ACTIVE); - $(input).trigger('change'); + if (triggerChangeEvent) { + if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) { + return; } - input.focus(); - addAriaPressed = false; - } - } - - if (addAriaPressed) { - this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE)); - } - - if (triggerChangeEvent) { - $(this._element).toggleClass(ClassName.ACTIVE); - } - } - }, { - key: "dispose", - value: function dispose() { - $.removeData(this._element, DATA_KEY); - this._element = null; - } - }], [{ - key: "_jQueryInterface", - value: function _jQueryInterface(config) { - return this.each(function () { - var data = $(this).data(DATA_KEY); - - if (!data) { - data = new Button(this); - $(this).data(DATA_KEY, data); + input.checked = !this._element.classList.contains(ClassName.ACTIVE); + (0, _jquery2.default)(input).trigger('change'); } - if (config === 'toggle') { - data[config](); - } - }); + input.focus(); + addAriaPressed = false; + } } - }, { - key: "VERSION", - get: function get() { - return VERSION; + + if (addAriaPressed) { + this._element.setAttribute('aria-pressed', !this._element.classList.contains(ClassName.ACTIVE)); } - }]); - return Button; - }(); - - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { - event.preventDefault(); - var button = event.target; - - if (!$(button).hasClass(ClassName.BUTTON)) { - button = $(button).closest(Selector.BUTTON); + if (triggerChangeEvent) { + (0, _jquery2.default)(this._element).toggleClass(ClassName.ACTIVE); + } } + }, { + key: "dispose", + value: function dispose() { + _jquery2.default.removeData(this._element, DATA_KEY); - Button._jQueryInterface.call($(button), 'toggle'); - }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { - var button = $(event.target).closest(Selector.BUTTON)[0]; - $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + this._element = null; + } + }], [{ + key: "_jQueryInterface", + value: function _jQueryInterface(config) { + return this.each(function () { + var data = (0, _jquery2.default)(this).data(DATA_KEY); - $.fn[NAME] = Button._jQueryInterface; - $.fn[NAME].Constructor = Button; + if (!data) { + data = new Button(this); + (0, _jquery2.default)(this).data(DATA_KEY, data); + } - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Button._jQueryInterface; - }; + if (config === 'toggle') { + data[config](); + } + }); + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }]); return Button; - }(_jquery2.default); + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + (0, _jquery2.default)(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + event.preventDefault(); + var button = event.target; + + if (!(0, _jquery2.default)(button).hasClass(ClassName.BUTTON)) { + button = (0, _jquery2.default)(button).closest(Selector.BUTTON); + } + + Button._jQueryInterface.call((0, _jquery2.default)(button), 'toggle'); + }).on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) { + var button = (0, _jquery2.default)(event.target).closest(Selector.BUTTON)[0]; + (0, _jquery2.default)(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type)); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _jquery2.default.fn[NAME] = Button._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Button; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Button._jQueryInterface; + }; exports.default = Button; }); \ No newline at end of file diff --git a/theme/boost/amd/src/carousel.js b/theme/boost/amd/src/carousel.js index c1a9e67ea63..cb712f94b46 100644 --- a/theme/boost/amd/src/carousel.js +++ b/theme/boost/amd/src/carousel.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { "use strict"; @@ -29,22 +31,38 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { return _typeof(obj); } - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); } - return target; - }; + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } - return _extends.apply(this, arguments); + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; } function _classCallCheck(instance, Constructor) { @@ -70,520 +88,625 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): carousel.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Carousel = function ($) { + var NAME = 'carousel'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.carousel'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key + + var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + + var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + + var SWIPE_THRESHOLD = 40; + var Default = { + interval: 5000, + keyboard: true, + slide: false, + pause: 'hover', + wrap: true, + touch: true + }; + var DefaultType = { + interval: '(number|boolean)', + keyboard: 'boolean', + slide: '(boolean|string)', + pause: '(string|boolean)', + wrap: 'boolean', + touch: 'boolean' + }; + var Direction = { + NEXT: 'next', + PREV: 'prev', + LEFT: 'left', + RIGHT: 'right' + }; + var Event = { + SLIDE: "slide".concat(EVENT_KEY), + SLID: "slid".concat(EVENT_KEY), + KEYDOWN: "keydown".concat(EVENT_KEY), + MOUSEENTER: "mouseenter".concat(EVENT_KEY), + MOUSELEAVE: "mouseleave".concat(EVENT_KEY), + TOUCHSTART: "touchstart".concat(EVENT_KEY), + TOUCHMOVE: "touchmove".concat(EVENT_KEY), + TOUCHEND: "touchend".concat(EVENT_KEY), + POINTERDOWN: "pointerdown".concat(EVENT_KEY), + POINTERUP: "pointerup".concat(EVENT_KEY), + DRAG_START: "dragstart".concat(EVENT_KEY), + LOAD_DATA_API: "load".concat(EVENT_KEY).concat(DATA_API_KEY), + CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) + }; + var ClassName = { + CAROUSEL: 'carousel', + ACTIVE: 'active', + SLIDE: 'slide', + RIGHT: 'carousel-item-right', + LEFT: 'carousel-item-left', + NEXT: 'carousel-item-next', + PREV: 'carousel-item-prev', + ITEM: 'carousel-item', + POINTER_EVENT: 'pointer-event' + }; + var Selector = { + ACTIVE: '.active', + ACTIVE_ITEM: '.active.carousel-item', + ITEM: '.carousel-item', + ITEM_IMG: '.carousel-item img', + NEXT_PREV: '.carousel-item-next, .carousel-item-prev', + INDICATORS: '.carousel-indicators', + DATA_SLIDE: '[data-slide], [data-slide-to]', + DATA_RIDE: '[data-ride="carousel"]' + }; + var PointerType = { + TOUCH: 'touch', + PEN: 'pen' /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'carousel'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.carousel'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 600; - var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key - var ARROW_RIGHT_KEYCODE = 39; // KeyboardEvent.which value for right arrow key + }; - var TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch + var Carousel = function () { + function Carousel(element, config) { + _classCallCheck(this, Carousel); - var Default = { - interval: 5000, - keyboard: true, - slide: false, - pause: 'hover', - wrap: true - }; - var DefaultType = { - interval: '(number|boolean)', - keyboard: 'boolean', - slide: '(boolean|string)', - pause: '(string|boolean)', - wrap: 'boolean' - }; - var Direction = { - NEXT: 'next', - PREV: 'prev', - LEFT: 'left', - RIGHT: 'right' - }; - var Event = { - SLIDE: "slide".concat(EVENT_KEY), - SLID: "slid".concat(EVENT_KEY), - KEYDOWN: "keydown".concat(EVENT_KEY), - MOUSEENTER: "mouseenter".concat(EVENT_KEY), - MOUSELEAVE: "mouseleave".concat(EVENT_KEY), - TOUCHEND: "touchend".concat(EVENT_KEY), - LOAD_DATA_API: "load".concat(EVENT_KEY).concat(DATA_API_KEY), - CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) - }; - var ClassName = { - CAROUSEL: 'carousel', - ACTIVE: 'active', - SLIDE: 'slide', - RIGHT: 'carousel-item-right', - LEFT: 'carousel-item-left', - NEXT: 'carousel-item-next', - PREV: 'carousel-item-prev', - ITEM: 'carousel-item' - }; - var Selector = { - ACTIVE: '.active', - ACTIVE_ITEM: '.active.carousel-item', - ITEM: '.carousel-item', - NEXT_PREV: '.carousel-item-next, .carousel-item-prev', - INDICATORS: '.carousel-indicators', - DATA_SLIDE: '[data-slide], [data-slide-to]', - DATA_RIDE: '[data-ride="carousel"]' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + this._items = null; + this._interval = null; + this._activeElement = null; + this._isPaused = false; + this._isSliding = false; + this.touchTimeout = null; + this.touchStartX = 0; + this.touchDeltaX = 0; + this._config = this._getConfig(config); + this._element = element; + this._indicatorsElement = this._element.querySelector(Selector.INDICATORS); + this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0; + this._pointerEvent = Boolean(window.PointerEvent || window.MSPointerEvent); - }; + this._addEventListeners(); + } // Getters - var Carousel = function () { - function Carousel(element, config) { - _classCallCheck(this, Carousel); - this._items = null; + _createClass(Carousel, [{ + key: "next", + value: function next() { + if (!this._isSliding) { + this._slide(Direction.NEXT); + } + } + }, { + key: "nextWhenVisible", + value: function nextWhenVisible() { + // Don't call next when the page isn't visible + // or the carousel or its parent isn't visible + if (!document.hidden && (0, _jquery2.default)(this._element).is(':visible') && (0, _jquery2.default)(this._element).css('visibility') !== 'hidden') { + this.next(); + } + } + }, { + key: "prev", + value: function prev() { + if (!this._isSliding) { + this._slide(Direction.PREV); + } + } + }, { + key: "pause", + value: function pause(event) { + if (!event) { + this._isPaused = true; + } + + if (this._element.querySelector(Selector.NEXT_PREV)) { + _util2.default.triggerTransitionEnd(this._element); + + this.cycle(true); + } + + clearInterval(this._interval); this._interval = null; - this._activeElement = null; - this._isPaused = false; - this._isSliding = false; - this.touchTimeout = null; - this._config = this._getConfig(config); - this._element = $(element)[0]; - this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0]; - - this._addEventListeners(); - } // Getters - - - _createClass(Carousel, [{ - key: "next", - value: function next() { - if (!this._isSliding) { - this._slide(Direction.NEXT); - } + } + }, { + key: "cycle", + value: function cycle(event) { + if (!event) { + this._isPaused = false; } - }, { - key: "nextWhenVisible", - value: function nextWhenVisible() { - // Don't call next when the page isn't visible - // or the carousel or its parent isn't visible - if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') { - this.next(); - } - } - }, { - key: "prev", - value: function prev() { - if (!this._isSliding) { - this._slide(Direction.PREV); - } - } - }, { - key: "pause", - value: function pause(event) { - if (!event) { - this._isPaused = true; - } - - if ($(this._element).find(Selector.NEXT_PREV)[0] && _util2.default.supportsTransitionEnd()) { - _util2.default.triggerTransitionEnd(this._element); - - this.cycle(true); - } + if (this._interval) { clearInterval(this._interval); this._interval = null; } - }, { - key: "cycle", - value: function cycle(event) { - if (!event) { - this._isPaused = false; - } - if (this._interval) { - clearInterval(this._interval); - this._interval = null; - } - - if (this._config.interval && !this._isPaused) { - this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); - } + if (this._config.interval && !this._isPaused) { + this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval); } - }, { - key: "to", - value: function to(index) { - var _this = this; + } + }, { + key: "to", + value: function to(index) { + var _this = this; - this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; + this._activeElement = this._element.querySelector(Selector.ACTIVE_ITEM); - var activeIndex = this._getItemIndex(this._activeElement); + var activeIndex = this._getItemIndex(this._activeElement); - if (index > this._items.length - 1 || index < 0) { - return; - } - - if (this._isSliding) { - $(this._element).one(Event.SLID, function () { - return _this.to(index); - }); - return; - } - - if (activeIndex === index) { - this.pause(); - this.cycle(); - return; - } - - var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; - - this._slide(direction, this._items[index]); + if (index > this._items.length - 1 || index < 0) { + return; } - }, { - key: "dispose", - value: function dispose() { - $(this._element).off(EVENT_KEY); - $.removeData(this._element, DATA_KEY); - this._items = null; - this._config = null; - this._element = null; - this._interval = null; - this._isPaused = null; - this._isSliding = null; - this._activeElement = null; - this._indicatorsElement = null; - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = _extends({}, Default, config); - _util2.default.typeCheckConfig(NAME, config, DefaultType); - - return config; - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this2 = this; - - if (this._config.keyboard) { - $(this._element).on(Event.KEYDOWN, function (event) { - return _this2._keydown(event); - }); - } - - if (this._config.pause === 'hover') { - $(this._element).on(Event.MOUSEENTER, function (event) { - return _this2.pause(event); - }).on(Event.MOUSELEAVE, function (event) { - return _this2.cycle(event); - }); - - if ('ontouchstart' in document.documentElement) { - // If it's a touch-enabled device, mouseenter/leave are fired as - // part of the mouse compatibility events on first tap - the carousel - // would stop cycling until user tapped out of it; - // here, we listen for touchend, explicitly pause the carousel - // (as if it's the second time we tap on it, mouseenter compat event - // is NOT fired) and after a timeout (to allow for mouse compatibility - // events to fire) we explicitly restart cycling - $(this._element).on(Event.TOUCHEND, function () { - _this2.pause(); - - if (_this2.touchTimeout) { - clearTimeout(_this2.touchTimeout); - } - - _this2.touchTimeout = setTimeout(function (event) { - return _this2.cycle(event); - }, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval); - }); - } - } - } - }, { - key: "_keydown", - value: function _keydown(event) { - if (/input|textarea/i.test(event.target.tagName)) { - return; - } - - switch (event.which) { - case ARROW_LEFT_KEYCODE: - event.preventDefault(); - this.prev(); - break; - - case ARROW_RIGHT_KEYCODE: - event.preventDefault(); - this.next(); - break; - - default: - } - } - }, { - key: "_getItemIndex", - value: function _getItemIndex(element) { - this._items = $.makeArray($(element).parent().find(Selector.ITEM)); - return this._items.indexOf(element); - } - }, { - key: "_getItemByDirection", - value: function _getItemByDirection(direction, activeElement) { - var isNextDirection = direction === Direction.NEXT; - var isPrevDirection = direction === Direction.PREV; - - var activeIndex = this._getItemIndex(activeElement); - - var lastItemIndex = this._items.length - 1; - var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; - - if (isGoingToWrap && !this._config.wrap) { - return activeElement; - } - - var delta = direction === Direction.PREV ? -1 : 1; - var itemIndex = (activeIndex + delta) % this._items.length; - return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; - } - }, { - key: "_triggerSlideEvent", - value: function _triggerSlideEvent(relatedTarget, eventDirectionName) { - var targetIndex = this._getItemIndex(relatedTarget); - - var fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0]); - - var slideEvent = $.Event(Event.SLIDE, { - relatedTarget: relatedTarget, - direction: eventDirectionName, - from: fromIndex, - to: targetIndex + if (this._isSliding) { + (0, _jquery2.default)(this._element).one(Event.SLID, function () { + return _this.to(index); }); - $(this._element).trigger(slideEvent); - return slideEvent; + return; } - }, { - key: "_setActiveIndicatorElement", - value: function _setActiveIndicatorElement(element) { - if (this._indicatorsElement) { - $(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE); - var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + if (activeIndex === index) { + this.pause(); + this.cycle(); + return; + } - if (nextIndicator) { - $(nextIndicator).addClass(ClassName.ACTIVE); - } + var direction = index > activeIndex ? Direction.NEXT : Direction.PREV; + + this._slide(direction, this._items[index]); + } + }, { + key: "dispose", + value: function dispose() { + (0, _jquery2.default)(this._element).off(EVENT_KEY); + + _jquery2.default.removeData(this._element, DATA_KEY); + + this._items = null; + this._config = null; + this._element = null; + this._interval = null; + this._isPaused = null; + this._isSliding = null; + this._activeElement = null; + this._indicatorsElement = null; + } + }, { + key: "_getConfig", + value: function _getConfig(config) { + config = _objectSpread({}, Default, config); + + _util2.default.typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: "_handleSwipe", + value: function _handleSwipe() { + var absDeltax = Math.abs(this.touchDeltaX); + + if (absDeltax <= SWIPE_THRESHOLD) { + return; + } + + var direction = absDeltax / this.touchDeltaX; // swipe left + + if (direction > 0) { + this.prev(); + } // swipe right + + + if (direction < 0) { + this.next(); + } + } + }, { + key: "_addEventListeners", + value: function _addEventListeners() { + var _this2 = this; + + if (this._config.keyboard) { + (0, _jquery2.default)(this._element).on(Event.KEYDOWN, function (event) { + return _this2._keydown(event); + }); + } + + if (this._config.pause === 'hover') { + (0, _jquery2.default)(this._element).on(Event.MOUSEENTER, function (event) { + return _this2.pause(event); + }).on(Event.MOUSELEAVE, function (event) { + return _this2.cycle(event); + }); + } + + if (this._config.touch) { + this._addTouchEventListeners(); + } + } + }, { + key: "_addTouchEventListeners", + value: function _addTouchEventListeners() { + var _this3 = this; + + if (!this._touchSupported) { + return; + } + + var start = function start(event) { + if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { + _this3.touchStartX = event.originalEvent.clientX; + } else if (!_this3._pointerEvent) { + _this3.touchStartX = event.originalEvent.touches[0].clientX; } - } - }, { - key: "_slide", - value: function _slide(direction, element) { - var _this3 = this; + }; - var activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]; - - var activeElementIndex = this._getItemIndex(activeElement); - - var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); - - var nextElementIndex = this._getItemIndex(nextElement); - - var isCycling = Boolean(this._interval); - var directionalClassName; - var orderClassName; - var eventDirectionName; - - if (direction === Direction.NEXT) { - directionalClassName = ClassName.LEFT; - orderClassName = ClassName.NEXT; - eventDirectionName = Direction.LEFT; + var move = function move(event) { + // ensure swiping with one touch and not pinching + if (event.originalEvent.touches && event.originalEvent.touches.length > 1) { + _this3.touchDeltaX = 0; } else { - directionalClassName = ClassName.RIGHT; - orderClassName = ClassName.PREV; - eventDirectionName = Direction.RIGHT; + _this3.touchDeltaX = event.originalEvent.touches[0].clientX - _this3.touchStartX; + } + }; + + var end = function end(event) { + if (_this3._pointerEvent && PointerType[event.originalEvent.pointerType.toUpperCase()]) { + _this3.touchDeltaX = event.originalEvent.clientX - _this3.touchStartX; } - if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) { - this._isSliding = false; - return; + _this3._handleSwipe(); + + if (_this3._config.pause === 'hover') { + // If it's a touch-enabled device, mouseenter/leave are fired as + // part of the mouse compatibility events on first tap - the carousel + // would stop cycling until user tapped out of it; + // here, we listen for touchend, explicitly pause the carousel + // (as if it's the second time we tap on it, mouseenter compat event + // is NOT fired) and after a timeout (to allow for mouse compatibility + // events to fire) we explicitly restart cycling + _this3.pause(); + + if (_this3.touchTimeout) { + clearTimeout(_this3.touchTimeout); + } + + _this3.touchTimeout = setTimeout(function (event) { + return _this3.cycle(event); + }, TOUCHEVENT_COMPAT_WAIT + _this3._config.interval); } + }; - var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + (0, _jquery2.default)(this._element.querySelectorAll(Selector.ITEM_IMG)).on(Event.DRAG_START, function (e) { + return e.preventDefault(); + }); - if (slideEvent.isDefaultPrevented()) { - return; - } - - if (!activeElement || !nextElement) { - // Some weirdness is happening, so we bail - return; - } - - this._isSliding = true; - - if (isCycling) { - this.pause(); - } - - this._setActiveIndicatorElement(nextElement); - - var slidEvent = $.Event(Event.SLID, { - relatedTarget: nextElement, - direction: eventDirectionName, - from: activeElementIndex, - to: nextElementIndex + if (this._pointerEvent) { + (0, _jquery2.default)(this._element).on(Event.POINTERDOWN, function (event) { + return start(event); + }); + (0, _jquery2.default)(this._element).on(Event.POINTERUP, function (event) { + return end(event); }); - if (_util2.default.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) { - $(nextElement).addClass(orderClassName); + this._element.classList.add(ClassName.POINTER_EVENT); + } else { + (0, _jquery2.default)(this._element).on(Event.TOUCHSTART, function (event) { + return start(event); + }); + (0, _jquery2.default)(this._element).on(Event.TOUCHMOVE, function (event) { + return move(event); + }); + (0, _jquery2.default)(this._element).on(Event.TOUCHEND, function (event) { + return end(event); + }); + } + } + }, { + key: "_keydown", + value: function _keydown(event) { + if (/input|textarea/i.test(event.target.tagName)) { + return; + } - _util2.default.reflow(nextElement); + switch (event.which) { + case ARROW_LEFT_KEYCODE: + event.preventDefault(); + this.prev(); + break; - $(activeElement).addClass(directionalClassName); - $(nextElement).addClass(directionalClassName); - $(activeElement).one(_util2.default.TRANSITION_END, function () { - $(nextElement).removeClass("".concat(directionalClassName, " ").concat(orderClassName)).addClass(ClassName.ACTIVE); - $(activeElement).removeClass("".concat(ClassName.ACTIVE, " ").concat(orderClassName, " ").concat(directionalClassName)); - _this3._isSliding = false; - setTimeout(function () { - return $(_this3._element).trigger(slidEvent); - }, 0); - }).emulateTransitionEnd(TRANSITION_DURATION); + case ARROW_RIGHT_KEYCODE: + event.preventDefault(); + this.next(); + break; + + default: + } + } + }, { + key: "_getItemIndex", + value: function _getItemIndex(element) { + this._items = element && element.parentNode ? [].slice.call(element.parentNode.querySelectorAll(Selector.ITEM)) : []; + return this._items.indexOf(element); + } + }, { + key: "_getItemByDirection", + value: function _getItemByDirection(direction, activeElement) { + var isNextDirection = direction === Direction.NEXT; + var isPrevDirection = direction === Direction.PREV; + + var activeIndex = this._getItemIndex(activeElement); + + var lastItemIndex = this._items.length - 1; + var isGoingToWrap = isPrevDirection && activeIndex === 0 || isNextDirection && activeIndex === lastItemIndex; + + if (isGoingToWrap && !this._config.wrap) { + return activeElement; + } + + var delta = direction === Direction.PREV ? -1 : 1; + var itemIndex = (activeIndex + delta) % this._items.length; + return itemIndex === -1 ? this._items[this._items.length - 1] : this._items[itemIndex]; + } + }, { + key: "_triggerSlideEvent", + value: function _triggerSlideEvent(relatedTarget, eventDirectionName) { + var targetIndex = this._getItemIndex(relatedTarget); + + var fromIndex = this._getItemIndex(this._element.querySelector(Selector.ACTIVE_ITEM)); + + var slideEvent = _jquery2.default.Event(Event.SLIDE, { + relatedTarget: relatedTarget, + direction: eventDirectionName, + from: fromIndex, + to: targetIndex + }); + + (0, _jquery2.default)(this._element).trigger(slideEvent); + return slideEvent; + } + }, { + key: "_setActiveIndicatorElement", + value: function _setActiveIndicatorElement(element) { + if (this._indicatorsElement) { + var indicators = [].slice.call(this._indicatorsElement.querySelectorAll(Selector.ACTIVE)); + (0, _jquery2.default)(indicators).removeClass(ClassName.ACTIVE); + + var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)]; + + if (nextIndicator) { + (0, _jquery2.default)(nextIndicator).addClass(ClassName.ACTIVE); + } + } + } + }, { + key: "_slide", + value: function _slide(direction, element) { + var _this4 = this; + + var activeElement = this._element.querySelector(Selector.ACTIVE_ITEM); + + var activeElementIndex = this._getItemIndex(activeElement); + + var nextElement = element || activeElement && this._getItemByDirection(direction, activeElement); + + var nextElementIndex = this._getItemIndex(nextElement); + + var isCycling = Boolean(this._interval); + var directionalClassName; + var orderClassName; + var eventDirectionName; + + if (direction === Direction.NEXT) { + directionalClassName = ClassName.LEFT; + orderClassName = ClassName.NEXT; + eventDirectionName = Direction.LEFT; + } else { + directionalClassName = ClassName.RIGHT; + orderClassName = ClassName.PREV; + eventDirectionName = Direction.RIGHT; + } + + if (nextElement && (0, _jquery2.default)(nextElement).hasClass(ClassName.ACTIVE)) { + this._isSliding = false; + return; + } + + var slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName); + + if (slideEvent.isDefaultPrevented()) { + return; + } + + if (!activeElement || !nextElement) { + // Some weirdness is happening, so we bail + return; + } + + this._isSliding = true; + + if (isCycling) { + this.pause(); + } + + this._setActiveIndicatorElement(nextElement); + + var slidEvent = _jquery2.default.Event(Event.SLID, { + relatedTarget: nextElement, + direction: eventDirectionName, + from: activeElementIndex, + to: nextElementIndex + }); + + if ((0, _jquery2.default)(this._element).hasClass(ClassName.SLIDE)) { + (0, _jquery2.default)(nextElement).addClass(orderClassName); + + _util2.default.reflow(nextElement); + + (0, _jquery2.default)(activeElement).addClass(directionalClassName); + (0, _jquery2.default)(nextElement).addClass(directionalClassName); + var nextElementInterval = parseInt(nextElement.getAttribute('data-interval'), 10); + + if (nextElementInterval) { + this._config.defaultInterval = this._config.defaultInterval || this._config.interval; + this._config.interval = nextElementInterval; } else { - $(activeElement).removeClass(ClassName.ACTIVE); - $(nextElement).addClass(ClassName.ACTIVE); - this._isSliding = false; - $(this._element).trigger(slidEvent); + this._config.interval = this._config.defaultInterval || this._config.interval; } - if (isCycling) { - this.cycle(); - } + var transitionDuration = _util2.default.getTransitionDurationFromElement(activeElement); + + (0, _jquery2.default)(activeElement).one(_util2.default.TRANSITION_END, function () { + (0, _jquery2.default)(nextElement).removeClass("".concat(directionalClassName, " ").concat(orderClassName)).addClass(ClassName.ACTIVE); + (0, _jquery2.default)(activeElement).removeClass("".concat(ClassName.ACTIVE, " ").concat(orderClassName, " ").concat(directionalClassName)); + _this4._isSliding = false; + setTimeout(function () { + return (0, _jquery2.default)(_this4._element).trigger(slidEvent); + }, 0); + }).emulateTransitionEnd(transitionDuration); + } else { + (0, _jquery2.default)(activeElement).removeClass(ClassName.ACTIVE); + (0, _jquery2.default)(nextElement).addClass(ClassName.ACTIVE); + this._isSliding = false; + (0, _jquery2.default)(this._element).trigger(slidEvent); } - }], [{ - key: "_jQueryInterface", - value: function _jQueryInterface(config) { - return this.each(function () { - var data = $(this).data(DATA_KEY); - var _config = _extends({}, Default, $(this).data()); + if (isCycling) { + this.cycle(); + } + } + }], [{ + key: "_jQueryInterface", + value: function _jQueryInterface(config) { + return this.each(function () { + var data = (0, _jquery2.default)(this).data(DATA_KEY); - if (_typeof(config) === 'object') { - _config = _extends({}, _config, config); + var _config = _objectSpread({}, Default, (0, _jquery2.default)(this).data()); + + if (_typeof(config) === 'object') { + _config = _objectSpread({}, _config, config); + } + + var action = typeof config === 'string' ? config : _config.slide; + + if (!data) { + data = new Carousel(this, _config); + (0, _jquery2.default)(this).data(DATA_KEY, data); + } + + if (typeof config === 'number') { + data.to(config); + } else if (typeof action === 'string') { + if (typeof data[action] === 'undefined') { + throw new TypeError("No method named \"".concat(action, "\"")); } - var action = typeof config === 'string' ? config : _config.slide; - - if (!data) { - data = new Carousel(this, _config); - $(this).data(DATA_KEY, data); - } - - if (typeof config === 'number') { - data.to(config); - } else if (typeof action === 'string') { - if (typeof data[action] === 'undefined') { - throw new TypeError("No method named \"".concat(action, "\"")); - } - - data[action](); - } else if (_config.interval) { - data.pause(); - data.cycle(); - } - }); - } - }, { - key: "_dataApiClickHandler", - value: function _dataApiClickHandler(event) { - var selector = _util2.default.getSelectorFromElement(this); - - if (!selector) { - return; + data[action](); + } else if (_config.interval && _config.ride) { + data.pause(); + data.cycle(); } + }); + } + }, { + key: "_dataApiClickHandler", + value: function _dataApiClickHandler(event) { + var selector = _util2.default.getSelectorFromElement(this); - var target = $(selector)[0]; - - if (!target || !$(target).hasClass(ClassName.CAROUSEL)) { - return; - } - - var config = _extends({}, $(target).data(), $(this).data()); - - var slideIndex = this.getAttribute('data-slide-to'); - - if (slideIndex) { - config.interval = false; - } - - Carousel._jQueryInterface.call($(target), config); - - if (slideIndex) { - $(target).data(DATA_KEY).to(slideIndex); - } - - event.preventDefault(); + if (!selector) { + return; } - }, { - key: "VERSION", - get: function get() { - return VERSION; + + var target = (0, _jquery2.default)(selector)[0]; + + if (!target || !(0, _jquery2.default)(target).hasClass(ClassName.CAROUSEL)) { + return; } - }, { - key: "Default", - get: function get() { - return Default; + + var config = _objectSpread({}, (0, _jquery2.default)(target).data(), (0, _jquery2.default)(this).data()); + + var slideIndex = this.getAttribute('data-slide-to'); + + if (slideIndex) { + config.interval = false; } - }]); - return Carousel; - }(); + Carousel._jQueryInterface.call((0, _jquery2.default)(target), config); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - $(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); - $(window).on(Event.LOAD_DATA_API, function () { - $(Selector.DATA_RIDE).each(function () { - var $carousel = $(this); + if (slideIndex) { + (0, _jquery2.default)(target).data(DATA_KEY).to(slideIndex); + } - Carousel._jQueryInterface.call($carousel, $carousel.data()); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - - $.fn[NAME] = Carousel._jQueryInterface; - $.fn[NAME].Constructor = Carousel; - - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Carousel._jQueryInterface; - }; + event.preventDefault(); + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); return Carousel; - }(_jquery2.default); + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + (0, _jquery2.default)(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler); + (0, _jquery2.default)(window).on(Event.LOAD_DATA_API, function () { + var carousels = [].slice.call(document.querySelectorAll(Selector.DATA_RIDE)); + + for (var i = 0, len = carousels.length; i < len; i++) { + var $carousel = (0, _jquery2.default)(carousels[i]); + + Carousel._jQueryInterface.call($carousel, $carousel.data()); + } + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _jquery2.default.fn[NAME] = Carousel._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Carousel; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Carousel._jQueryInterface; + }; exports.default = Carousel; }); \ No newline at end of file diff --git a/theme/boost/amd/src/collapse.js b/theme/boost/amd/src/collapse.js index 636cd5f8616..415633d2b34 100644 --- a/theme/boost/amd/src/collapse.js +++ b/theme/boost/amd/src/collapse.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { "use strict"; @@ -29,22 +31,38 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { return _typeof(obj); } - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); } - return target; - }; + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } - return _extends.apply(this, arguments); + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; } function _classCallCheck(instance, Constructor) { @@ -70,386 +88,384 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): collapse.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Collapse = function ($) { + var NAME = 'collapse'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.collapse'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var Default = { + toggle: true, + parent: '' + }; + var DefaultType = { + toggle: 'boolean', + parent: '(string|element)' + }; + var Event = { + SHOW: "show".concat(EVENT_KEY), + SHOWN: "shown".concat(EVENT_KEY), + HIDE: "hide".concat(EVENT_KEY), + HIDDEN: "hidden".concat(EVENT_KEY), + CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) + }; + var ClassName = { + SHOW: 'show', + COLLAPSE: 'collapse', + COLLAPSING: 'collapsing', + COLLAPSED: 'collapsed' + }; + var Dimension = { + WIDTH: 'width', + HEIGHT: 'height' + }; + var Selector = { + ACTIVES: '.show, .collapsing', + DATA_TOGGLE: '[data-toggle="collapse"]' /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'collapse'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.collapse'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 600; - var Default = { - toggle: true, - parent: '' - }; - var DefaultType = { - toggle: 'boolean', - parent: '(string|element)' - }; - var Event = { - SHOW: "show".concat(EVENT_KEY), - SHOWN: "shown".concat(EVENT_KEY), - HIDE: "hide".concat(EVENT_KEY), - HIDDEN: "hidden".concat(EVENT_KEY), - CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) - }; - var ClassName = { - SHOW: 'show', - COLLAPSE: 'collapse', - COLLAPSING: 'collapsing', - COLLAPSED: 'collapsed' - }; - var Dimension = { - WIDTH: 'width', - HEIGHT: 'height' - }; - var Selector = { - ACTIVES: '.show, .collapsing', - DATA_TOGGLE: '[data-toggle="collapse"]' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - }; + }; - var Collapse = function () { - function Collapse(element, config) { - _classCallCheck(this, Collapse); + var Collapse = function () { + function Collapse(element, config) { + _classCallCheck(this, Collapse); - this._isTransitioning = false; - this._element = element; - this._config = this._getConfig(config); - this._triggerArray = $.makeArray($("[data-toggle=\"collapse\"][href=\"#".concat(element.id, "\"],") + "[data-toggle=\"collapse\"][data-target=\"#".concat(element.id, "\"]"))); - var tabToggles = $(Selector.DATA_TOGGLE); + this._isTransitioning = false; + this._element = element; + this._config = this._getConfig(config); + this._triggerArray = [].slice.call(document.querySelectorAll("[data-toggle=\"collapse\"][href=\"#".concat(element.id, "\"],") + "[data-toggle=\"collapse\"][data-target=\"#".concat(element.id, "\"]"))); + var toggleList = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE)); - for (var i = 0; i < tabToggles.length; i++) { - var elem = tabToggles[i]; + for (var i = 0, len = toggleList.length; i < len; i++) { + var elem = toggleList[i]; - var selector = _util2.default.getSelectorFromElement(elem); + var selector = _util2.default.getSelectorFromElement(elem); - if (selector !== null && $(selector).filter(element).length > 0) { - this._selector = selector; + var filterElement = [].slice.call(document.querySelectorAll(selector)).filter(function (foundElem) { + return foundElem === element; + }); - this._triggerArray.push(elem); - } + if (selector !== null && filterElement.length > 0) { + this._selector = selector; + + this._triggerArray.push(elem); } - - this._parent = this._config.parent ? this._getParent() : null; - - if (!this._config.parent) { - this._addAriaAndCollapsedClass(this._element, this._triggerArray); - } - - if (this._config.toggle) { - this.toggle(); - } - } // Getters - - - _createClass(Collapse, [{ - key: "toggle", - value: function toggle() { - if ($(this._element).hasClass(ClassName.SHOW)) { - this.hide(); - } else { - this.show(); - } - } - }, { - key: "show", - value: function show() { - var _this = this; - - if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) { - return; - } - - var actives; - var activesData; - - if (this._parent) { - actives = $.makeArray($(this._parent).find(Selector.ACTIVES).filter("[data-parent=\"".concat(this._config.parent, "\"]"))); - - if (actives.length === 0) { - actives = null; - } - } - - if (actives) { - activesData = $(actives).not(this._selector).data(DATA_KEY); - - if (activesData && activesData._isTransitioning) { - return; - } - } - - var startEvent = $.Event(Event.SHOW); - $(this._element).trigger(startEvent); - - if (startEvent.isDefaultPrevented()) { - return; - } - - if (actives) { - Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide'); - - if (!activesData) { - $(actives).data(DATA_KEY, null); - } - } - - var dimension = this._getDimension(); - - $(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); - this._element.style[dimension] = 0; - - if (this._triggerArray.length > 0) { - $(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); - } - - this.setTransitioning(true); - - var complete = function complete() { - $(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); - _this._element.style[dimension] = ''; - - _this.setTransitioning(false); - - $(_this._element).trigger(Event.SHOWN); - }; - - if (!_util2.default.supportsTransitionEnd()) { - complete(); - return; - } - - var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); - var scrollSize = "scroll".concat(capitalizedDimension); - $(this._element).one(_util2.default.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); - this._element.style[dimension] = "".concat(this._element[scrollSize], "px"); - } - }, { - key: "hide", - value: function hide() { - var _this2 = this; - - if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) { - return; - } - - var startEvent = $.Event(Event.HIDE); - $(this._element).trigger(startEvent); - - if (startEvent.isDefaultPrevented()) { - return; - } - - var dimension = this._getDimension(); - - this._element.style[dimension] = "".concat(this._element.getBoundingClientRect()[dimension], "px"); - - _util2.default.reflow(this._element); - - $(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); - - if (this._triggerArray.length > 0) { - for (var i = 0; i < this._triggerArray.length; i++) { - var trigger = this._triggerArray[i]; - - var selector = _util2.default.getSelectorFromElement(trigger); - - if (selector !== null) { - var $elem = $(selector); - - if (!$elem.hasClass(ClassName.SHOW)) { - $(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); - } - } - } - } - - this.setTransitioning(true); - - var complete = function complete() { - _this2.setTransitioning(false); - - $(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); - }; - - this._element.style[dimension] = ''; - - if (!_util2.default.supportsTransitionEnd()) { - complete(); - return; - } - - $(this._element).one(_util2.default.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION); - } - }, { - key: "setTransitioning", - value: function setTransitioning(isTransitioning) { - this._isTransitioning = isTransitioning; - } - }, { - key: "dispose", - value: function dispose() { - $.removeData(this._element, DATA_KEY); - this._config = null; - this._parent = null; - this._element = null; - this._triggerArray = null; - this._isTransitioning = null; - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = _extends({}, Default, config); - config.toggle = Boolean(config.toggle); // Coerce string values - - _util2.default.typeCheckConfig(NAME, config, DefaultType); - - return config; - } - }, { - key: "_getDimension", - value: function _getDimension() { - var hasWidth = $(this._element).hasClass(Dimension.WIDTH); - return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; - } - }, { - key: "_getParent", - value: function _getParent() { - var _this3 = this; - - var parent = null; - - if (_util2.default.isElement(this._config.parent)) { - parent = this._config.parent; // It's a jQuery object - - if (typeof this._config.parent.jquery !== 'undefined') { - parent = this._config.parent[0]; - } - } else { - parent = $(this._config.parent)[0]; - } - - var selector = "[data-toggle=\"collapse\"][data-parent=\"".concat(this._config.parent, "\"]"); - $(parent).find(selector).each(function (i, element) { - _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); - }); - return parent; - } - }, { - key: "_addAriaAndCollapsedClass", - value: function _addAriaAndCollapsedClass(element, triggerArray) { - if (element) { - var isOpen = $(element).hasClass(ClassName.SHOW); - - if (triggerArray.length > 0) { - $(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); - } - } - } - }], [{ - key: "_getTargetFromElement", - value: function _getTargetFromElement(element) { - var selector = _util2.default.getSelectorFromElement(element); - - return selector ? $(selector)[0] : null; - } - }, { - key: "_jQueryInterface", - value: function _jQueryInterface(config) { - return this.each(function () { - var $this = $(this); - var data = $this.data(DATA_KEY); - - var _config = _extends({}, Default, $this.data(), _typeof(config) === 'object' && config); - - if (!data && _config.toggle && /show|hide/.test(config)) { - _config.toggle = false; - } - - if (!data) { - data = new Collapse(this, _config); - $this.data(DATA_KEY, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - } - }); - } - }, { - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); - - return Collapse; - }(); - - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - // preventDefault only for elements (which change the URL) not inside the collapsible element - if (event.currentTarget.tagName === 'A') { - event.preventDefault(); } - var $trigger = $(this); + this._parent = this._config.parent ? this._getParent() : null; - var selector = _util2.default.getSelectorFromElement(this); + if (!this._config.parent) { + this._addAriaAndCollapsedClass(this._element, this._triggerArray); + } - $(selector).each(function () { - var $target = $(this); - var data = $target.data(DATA_KEY); - var config = data ? 'toggle' : $trigger.data(); + if (this._config.toggle) { + this.toggle(); + } + } // Getters - Collapse._jQueryInterface.call($target, config); - }); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - $.fn[NAME] = Collapse._jQueryInterface; - $.fn[NAME].Constructor = Collapse; + _createClass(Collapse, [{ + key: "toggle", + value: function toggle() { + if ((0, _jquery2.default)(this._element).hasClass(ClassName.SHOW)) { + this.hide(); + } else { + this.show(); + } + } + }, { + key: "show", + value: function show() { + var _this = this; - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Collapse._jQueryInterface; - }; + if (this._isTransitioning || (0, _jquery2.default)(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var actives; + var activesData; + + if (this._parent) { + actives = [].slice.call(this._parent.querySelectorAll(Selector.ACTIVES)).filter(function (elem) { + if (typeof _this._config.parent === 'string') { + return elem.getAttribute('data-parent') === _this._config.parent; + } + + return elem.classList.contains(ClassName.COLLAPSE); + }); + + if (actives.length === 0) { + actives = null; + } + } + + if (actives) { + activesData = (0, _jquery2.default)(actives).not(this._selector).data(DATA_KEY); + + if (activesData && activesData._isTransitioning) { + return; + } + } + + var startEvent = _jquery2.default.Event(Event.SHOW); + + (0, _jquery2.default)(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + if (actives) { + Collapse._jQueryInterface.call((0, _jquery2.default)(actives).not(this._selector), 'hide'); + + if (!activesData) { + (0, _jquery2.default)(actives).data(DATA_KEY, null); + } + } + + var dimension = this._getDimension(); + + (0, _jquery2.default)(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING); + this._element.style[dimension] = 0; + + if (this._triggerArray.length) { + (0, _jquery2.default)(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true); + } + + this.setTransitioning(true); + + var complete = function complete() { + (0, _jquery2.default)(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW); + _this._element.style[dimension] = ''; + + _this.setTransitioning(false); + + (0, _jquery2.default)(_this._element).trigger(Event.SHOWN); + }; + + var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1); + var scrollSize = "scroll".concat(capitalizedDimension); + + var transitionDuration = _util2.default.getTransitionDurationFromElement(this._element); + + (0, _jquery2.default)(this._element).one(_util2.default.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + this._element.style[dimension] = "".concat(this._element[scrollSize], "px"); + } + }, { + key: "hide", + value: function hide() { + var _this2 = this; + + if (this._isTransitioning || !(0, _jquery2.default)(this._element).hasClass(ClassName.SHOW)) { + return; + } + + var startEvent = _jquery2.default.Event(Event.HIDE); + + (0, _jquery2.default)(this._element).trigger(startEvent); + + if (startEvent.isDefaultPrevented()) { + return; + } + + var dimension = this._getDimension(); + + this._element.style[dimension] = "".concat(this._element.getBoundingClientRect()[dimension], "px"); + + _util2.default.reflow(this._element); + + (0, _jquery2.default)(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW); + var triggerArrayLength = this._triggerArray.length; + + if (triggerArrayLength > 0) { + for (var i = 0; i < triggerArrayLength; i++) { + var trigger = this._triggerArray[i]; + + var selector = _util2.default.getSelectorFromElement(trigger); + + if (selector !== null) { + var $elem = (0, _jquery2.default)([].slice.call(document.querySelectorAll(selector))); + + if (!$elem.hasClass(ClassName.SHOW)) { + (0, _jquery2.default)(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false); + } + } + } + } + + this.setTransitioning(true); + + var complete = function complete() { + _this2.setTransitioning(false); + + (0, _jquery2.default)(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN); + }; + + this._element.style[dimension] = ''; + + var transitionDuration = _util2.default.getTransitionDurationFromElement(this._element); + + (0, _jquery2.default)(this._element).one(_util2.default.TRANSITION_END, complete).emulateTransitionEnd(transitionDuration); + } + }, { + key: "setTransitioning", + value: function setTransitioning(isTransitioning) { + this._isTransitioning = isTransitioning; + } + }, { + key: "dispose", + value: function dispose() { + _jquery2.default.removeData(this._element, DATA_KEY); + + this._config = null; + this._parent = null; + this._element = null; + this._triggerArray = null; + this._isTransitioning = null; + } + }, { + key: "_getConfig", + value: function _getConfig(config) { + config = _objectSpread({}, Default, config); + config.toggle = Boolean(config.toggle); // Coerce string values + + _util2.default.typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: "_getDimension", + value: function _getDimension() { + var hasWidth = (0, _jquery2.default)(this._element).hasClass(Dimension.WIDTH); + return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT; + } + }, { + key: "_getParent", + value: function _getParent() { + var _this3 = this; + + var parent; + + if (_util2.default.isElement(this._config.parent)) { + parent = this._config.parent; // It's a jQuery object + + if (typeof this._config.parent.jquery !== 'undefined') { + parent = this._config.parent[0]; + } + } else { + parent = document.querySelector(this._config.parent); + } + + var selector = "[data-toggle=\"collapse\"][data-parent=\"".concat(this._config.parent, "\"]"); + var children = [].slice.call(parent.querySelectorAll(selector)); + (0, _jquery2.default)(children).each(function (i, element) { + _this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]); + }); + return parent; + } + }, { + key: "_addAriaAndCollapsedClass", + value: function _addAriaAndCollapsedClass(element, triggerArray) { + var isOpen = (0, _jquery2.default)(element).hasClass(ClassName.SHOW); + + if (triggerArray.length) { + (0, _jquery2.default)(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen); + } + } + }], [{ + key: "_getTargetFromElement", + value: function _getTargetFromElement(element) { + var selector = _util2.default.getSelectorFromElement(element); + + return selector ? document.querySelector(selector) : null; + } + }, { + key: "_jQueryInterface", + value: function _jQueryInterface(config) { + return this.each(function () { + var $this = (0, _jquery2.default)(this); + var data = $this.data(DATA_KEY); + + var _config = _objectSpread({}, Default, $this.data(), _typeof(config) === 'object' && config ? config : {}); + + if (!data && _config.toggle && /show|hide/.test(config)) { + _config.toggle = false; + } + + if (!data) { + data = new Collapse(this, _config); + $this.data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"".concat(config, "\"")); + } + + data[config](); + } + }); + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); return Collapse; - }(_jquery2.default); + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + (0, _jquery2.default)(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + // preventDefault only for elements (which change the URL) not inside the collapsible element + if (event.currentTarget.tagName === 'A') { + event.preventDefault(); + } + + var $trigger = (0, _jquery2.default)(this); + + var selector = _util2.default.getSelectorFromElement(this); + + var selectors = [].slice.call(document.querySelectorAll(selector)); + (0, _jquery2.default)(selectors).each(function () { + var $target = (0, _jquery2.default)(this); + var data = $target.data(DATA_KEY); + var config = data ? 'toggle' : $trigger.data(); + + Collapse._jQueryInterface.call($target, config); + }); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _jquery2.default.fn[NAME] = Collapse._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Collapse; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Collapse._jQueryInterface; + }; exports.default = Collapse; }); \ No newline at end of file diff --git a/theme/boost/amd/src/dropdown.js b/theme/boost/amd/src/dropdown.js index 6940589a51f..6465bec14a6 100644 --- a/theme/boost/amd/src/dropdown.js +++ b/theme/boost/amd/src/dropdown.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "core/popper", "./util"], function (exports, _jquery, _popper, _util) { "use strict"; @@ -31,22 +33,38 @@ define(["exports", "jquery", "core/popper", "./util"], function (exports, _jquer return _typeof(obj); } - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); } - return target; - }; + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } - return _extends.apply(this, arguments); + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; } function _classCallCheck(instance, Constructor) { @@ -72,478 +90,547 @@ define(["exports", "jquery", "core/popper", "./util"], function (exports, _jquer } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): dropdown.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Dropdown = function ($) { + var NAME = 'dropdown'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.dropdown'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + + var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + + var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + + var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + + var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) + + var REGEXP_KEYDOWN = new RegExp("".concat(ARROW_UP_KEYCODE, "|").concat(ARROW_DOWN_KEYCODE, "|").concat(ESCAPE_KEYCODE)); + var Event = { + HIDE: "hide".concat(EVENT_KEY), + HIDDEN: "hidden".concat(EVENT_KEY), + SHOW: "show".concat(EVENT_KEY), + SHOWN: "shown".concat(EVENT_KEY), + CLICK: "click".concat(EVENT_KEY), + CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY), + KEYDOWN_DATA_API: "keydown".concat(EVENT_KEY).concat(DATA_API_KEY), + KEYUP_DATA_API: "keyup".concat(EVENT_KEY).concat(DATA_API_KEY) + }; + var ClassName = { + DISABLED: 'disabled', + SHOW: 'show', + DROPUP: 'dropup', + DROPRIGHT: 'dropright', + DROPLEFT: 'dropleft', + MENURIGHT: 'dropdown-menu-right', + MENULEFT: 'dropdown-menu-left', + POSITION_STATIC: 'position-static' + }; + var Selector = { + DATA_TOGGLE: '[data-toggle="dropdown"]', + FORM_CHILD: '.dropdown form', + MENU: '.dropdown-menu', + NAVBAR_NAV: '.navbar-nav', + VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)' + }; + var AttachmentMap = { + TOP: 'top-start', + TOPEND: 'top-end', + BOTTOM: 'bottom-start', + BOTTOMEND: 'bottom-end', + RIGHT: 'right-start', + RIGHTEND: 'right-end', + LEFT: 'left-start', + LEFTEND: 'left-end' + }; + var Default = { + offset: 0, + flip: true, + boundary: 'scrollParent', + reference: 'toggle', + display: 'dynamic' + }; + var DefaultType = { + offset: '(number|string|function)', + flip: 'boolean', + boundary: '(string|element)', + reference: '(string|element)', + display: 'string' /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'dropdown'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.dropdown'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key + }; - var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab key + var Dropdown = function () { + function Dropdown(element, config) { + _classCallCheck(this, Dropdown); - var ARROW_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key + this._element = element; + this._popper = null; + this._config = this._getConfig(config); + this._menu = this._getMenuElement(); + this._inNavbar = this._detectNavbar(); - var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down arrow key + this._addEventListeners(); + } // Getters - var RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse) - var REGEXP_KEYDOWN = new RegExp("".concat(ARROW_UP_KEYCODE, "|").concat(ARROW_DOWN_KEYCODE, "|").concat(ESCAPE_KEYCODE)); - var Event = { - HIDE: "hide".concat(EVENT_KEY), - HIDDEN: "hidden".concat(EVENT_KEY), - SHOW: "show".concat(EVENT_KEY), - SHOWN: "shown".concat(EVENT_KEY), - CLICK: "click".concat(EVENT_KEY), - CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY), - KEYDOWN_DATA_API: "keydown".concat(EVENT_KEY).concat(DATA_API_KEY), - KEYUP_DATA_API: "keyup".concat(EVENT_KEY).concat(DATA_API_KEY) - }; - var ClassName = { - DISABLED: 'disabled', - SHOW: 'show', - DROPUP: 'dropup', - DROPRIGHT: 'dropright', - DROPLEFT: 'dropleft', - MENURIGHT: 'dropdown-menu-right', - MENULEFT: 'dropdown-menu-left', - POSITION_STATIC: 'position-static' - }; - var Selector = { - DATA_TOGGLE: '[data-toggle="dropdown"]', - FORM_CHILD: '.dropdown form', - MENU: '.dropdown-menu', - NAVBAR_NAV: '.navbar-nav', - VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)' - }; - var AttachmentMap = { - TOP: 'top-start', - TOPEND: 'top-end', - BOTTOM: 'bottom-start', - BOTTOMEND: 'bottom-end', - RIGHT: 'right-start', - RIGHTEND: 'right-end', - LEFT: 'left-start', - LEFTEND: 'left-end' - }; - var Default = { - offset: 0, - flip: false, - boundary: 'scrollParent' - }; - var DefaultType = { - offset: '(number|string|function)', - flip: 'boolean', - boundary: '(string|element)' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + _createClass(Dropdown, [{ + key: "toggle", + value: function toggle() { + if (this._element.disabled || (0, _jquery2.default)(this._element).hasClass(ClassName.DISABLED)) { + return; + } - }; + var parent = Dropdown._getParentFromElement(this._element); - var Dropdown = function () { - function Dropdown(element, config) { - _classCallCheck(this, Dropdown); + var isActive = (0, _jquery2.default)(this._menu).hasClass(ClassName.SHOW); - this._element = element; - this._popper = null; - this._config = this._getConfig(config); - this._menu = this._getMenuElement(); + Dropdown._clearMenus(); + + if (isActive) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + + var showEvent = _jquery2.default.Event(Event.SHOW, relatedTarget); + + (0, _jquery2.default)(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } // Disable totally Popper.js for Dropdown in Navbar + + + if (!this._inNavbar) { + /** + * Check for Popper dependency + * Popper - https://popper.js.org + */ + if (typeof _popper2.default === 'undefined') { + throw new TypeError('Bootstrap\'s dropdowns require Popper.js (https://popper.js.org/)'); + } + + var referenceElement = this._element; + + if (this._config.reference === 'parent') { + referenceElement = parent; + } else if (_util2.default.isElement(this._config.reference)) { + referenceElement = this._config.reference; // Check if it's jQuery element + + if (typeof this._config.reference.jquery !== 'undefined') { + referenceElement = this._config.reference[0]; + } + } // If boundary is not `scrollParent`, then set position to `static` + // to allow the menu to "escape" the scroll parent's boundaries + // https://github.com/twbs/bootstrap/issues/24251 + + + if (this._config.boundary !== 'scrollParent') { + (0, _jquery2.default)(parent).addClass(ClassName.POSITION_STATIC); + } + + this._popper = new _popper2.default(referenceElement, this._menu, this._getPopperConfig()); + } // If this is a touch-enabled device we add extra + // empty mouseover listeners to the body's immediate children; + // only needed because of broken event delegation on iOS + // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html + + + if ('ontouchstart' in document.documentElement && (0, _jquery2.default)(parent).closest(Selector.NAVBAR_NAV).length === 0) { + (0, _jquery2.default)(document.body).children().on('mouseover', null, _jquery2.default.noop); + } + + this._element.focus(); + + this._element.setAttribute('aria-expanded', true); + + (0, _jquery2.default)(this._menu).toggleClass(ClassName.SHOW); + (0, _jquery2.default)(parent).toggleClass(ClassName.SHOW).trigger(_jquery2.default.Event(Event.SHOWN, relatedTarget)); + } + }, { + key: "show", + value: function show() { + if (this._element.disabled || (0, _jquery2.default)(this._element).hasClass(ClassName.DISABLED) || (0, _jquery2.default)(this._menu).hasClass(ClassName.SHOW)) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + + var showEvent = _jquery2.default.Event(Event.SHOW, relatedTarget); + + var parent = Dropdown._getParentFromElement(this._element); + + (0, _jquery2.default)(parent).trigger(showEvent); + + if (showEvent.isDefaultPrevented()) { + return; + } + + (0, _jquery2.default)(this._menu).toggleClass(ClassName.SHOW); + (0, _jquery2.default)(parent).toggleClass(ClassName.SHOW).trigger(_jquery2.default.Event(Event.SHOWN, relatedTarget)); + } + }, { + key: "hide", + value: function hide() { + if (this._element.disabled || (0, _jquery2.default)(this._element).hasClass(ClassName.DISABLED) || !(0, _jquery2.default)(this._menu).hasClass(ClassName.SHOW)) { + return; + } + + var relatedTarget = { + relatedTarget: this._element + }; + + var hideEvent = _jquery2.default.Event(Event.HIDE, relatedTarget); + + var parent = Dropdown._getParentFromElement(this._element); + + (0, _jquery2.default)(parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + return; + } + + (0, _jquery2.default)(this._menu).toggleClass(ClassName.SHOW); + (0, _jquery2.default)(parent).toggleClass(ClassName.SHOW).trigger(_jquery2.default.Event(Event.HIDDEN, relatedTarget)); + } + }, { + key: "dispose", + value: function dispose() { + _jquery2.default.removeData(this._element, DATA_KEY); + + (0, _jquery2.default)(this._element).off(EVENT_KEY); + this._element = null; + this._menu = null; + + if (this._popper !== null) { + this._popper.destroy(); + + this._popper = null; + } + } + }, { + key: "update", + value: function update() { this._inNavbar = this._detectNavbar(); - this._addEventListeners(); - } // Getters - - - _createClass(Dropdown, [{ - key: "toggle", - value: function toggle() { - if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) { - return; - } - - var parent = Dropdown._getParentFromElement(this._element); - - var isActive = $(this._menu).hasClass(ClassName.SHOW); - - Dropdown._clearMenus(); - - if (isActive) { - return; - } - - var relatedTarget = { - relatedTarget: this._element - }; - var showEvent = $.Event(Event.SHOW, relatedTarget); - $(parent).trigger(showEvent); - - if (showEvent.isDefaultPrevented()) { - return; - } // Disable totally Popper.js for Dropdown in Navbar - - - if (!this._inNavbar) { - /** - * Check for Popper dependency - * Popper - https://popper.js.org - */ - if (typeof _popper2.default === 'undefined') { - throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)'); - } - - var element = this._element; // For dropup with alignment we use the parent as popper container - - if ($(parent).hasClass(ClassName.DROPUP)) { - if ($(this._menu).hasClass(ClassName.MENULEFT) || $(this._menu).hasClass(ClassName.MENURIGHT)) { - element = parent; - } - } // If boundary is not `scrollParent`, then set position to `static` - // to allow the menu to "escape" the scroll parent's boundaries - // https://github.com/twbs/bootstrap/issues/24251 - - - if (this._config.boundary !== 'scrollParent') { - $(parent).addClass(ClassName.POSITION_STATIC); - } - - this._popper = new _popper2.default(element, this._menu, this._getPopperConfig()); - } // If this is a touch-enabled device we add extra - // empty mouseover listeners to the body's immediate children; - // only needed because of broken event delegation on iOS - // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html - - - if ('ontouchstart' in document.documentElement && $(parent).closest(Selector.NAVBAR_NAV).length === 0) { - $('body').children().on('mouseover', null, $.noop); - } - - this._element.focus(); - - this._element.setAttribute('aria-expanded', true); - - $(this._menu).toggleClass(ClassName.SHOW); - $(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget)); + if (this._popper !== null) { + this._popper.scheduleUpdate(); } - }, { - key: "dispose", - value: function dispose() { - $.removeData(this._element, DATA_KEY); - $(this._element).off(EVENT_KEY); - this._element = null; - this._menu = null; - - if (this._popper !== null) { - this._popper.destroy(); - - this._popper = null; - } - } - }, { - key: "update", - value: function update() { - this._inNavbar = this._detectNavbar(); - - if (this._popper !== null) { - this._popper.scheduleUpdate(); - } - } - }, { - key: "_addEventListeners", - value: function _addEventListeners() { - var _this = this; - - $(this._element).on(Event.CLICK, function (event) { - event.preventDefault(); - event.stopPropagation(); - - _this.toggle(); - }); - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = _extends({}, this.constructor.Default, $(this._element).data(), config); - - _util2.default.typeCheckConfig(NAME, config, this.constructor.DefaultType); - - return config; - } - }, { - key: "_getMenuElement", - value: function _getMenuElement() { - if (!this._menu) { - var parent = Dropdown._getParentFromElement(this._element); - - this._menu = $(parent).find(Selector.MENU)[0]; - } - - return this._menu; - } - }, { - key: "_getPlacement", - value: function _getPlacement() { - var $parentDropdown = $(this._element).parent(); - var placement = AttachmentMap.BOTTOM; // Handle dropup - - if ($parentDropdown.hasClass(ClassName.DROPUP)) { - placement = AttachmentMap.TOP; - - if ($(this._menu).hasClass(ClassName.MENURIGHT)) { - placement = AttachmentMap.TOPEND; - } - } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { - placement = AttachmentMap.RIGHT; - } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { - placement = AttachmentMap.LEFT; - } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) { - placement = AttachmentMap.BOTTOMEND; - } - - return placement; - } - }, { - key: "_detectNavbar", - value: function _detectNavbar() { - return $(this._element).closest('.navbar').length > 0; - } - }, { - key: "_getPopperConfig", - value: function _getPopperConfig() { - var _this2 = this; - - var offsetConf = {}; - - if (typeof this._config.offset === 'function') { - offsetConf.fn = function (data) { - data.offsets = _extends({}, data.offsets, _this2._config.offset(data.offsets) || {}); - return data; - }; - } else { - offsetConf.offset = this._config.offset; - } - - var popperConfig = { - placement: this._getPlacement(), - modifiers: { - offset: offsetConf, - flip: { - enabled: this._config.flip - }, - preventOverflow: { - boundariesElement: this._config.boundary - } - } - }; - return popperConfig; - } - }], [{ - key: "_jQueryInterface", - value: function _jQueryInterface(config) { - return this.each(function () { - var data = $(this).data(DATA_KEY); - - var _config = _typeof(config) === 'object' ? config : null; - - if (!data) { - data = new Dropdown(this, _config); - $(this).data(DATA_KEY, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - } - }); - } - }, { - key: "_clearMenus", - value: function _clearMenus(event) { - if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { - return; - } - - var toggles = $.makeArray($(Selector.DATA_TOGGLE)); - - for (var i = 0; i < toggles.length; i++) { - var parent = Dropdown._getParentFromElement(toggles[i]); - - var context = $(toggles[i]).data(DATA_KEY); - var relatedTarget = { - relatedTarget: toggles[i] - }; - - if (!context) { - continue; - } - - var dropdownMenu = context._menu; - - if (!$(parent).hasClass(ClassName.SHOW)) { - continue; - } - - if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && $.contains(parent, event.target)) { - continue; - } - - var hideEvent = $.Event(Event.HIDE, relatedTarget); - $(parent).trigger(hideEvent); - - if (hideEvent.isDefaultPrevented()) { - continue; - } // If this is a touch-enabled device we remove the extra - // empty mouseover listeners we added for iOS support - - - if ('ontouchstart' in document.documentElement) { - $('body').children().off('mouseover', null, $.noop); - } - - toggles[i].setAttribute('aria-expanded', 'false'); - $(dropdownMenu).removeClass(ClassName.SHOW); - $(parent).removeClass(ClassName.SHOW).trigger($.Event(Event.HIDDEN, relatedTarget)); - } - } - }, { - key: "_getParentFromElement", - value: function _getParentFromElement(element) { - var parent; - - var selector = _util2.default.getSelectorFromElement(element); - - if (selector) { - parent = $(selector)[0]; - } - - return parent || element.parentNode; - } - }, { - key: "_dataApiKeydownHandler", - value: function _dataApiKeydownHandler(event) { - // If not input/textarea: - // - And not a key in REGEXP_KEYDOWN => not a dropdown command - // If input/textarea: - // - If space key => not a dropdown command - // - If key is other than escape - // - If key is not up or down => not a dropdown command - // - If trigger inside the menu => not a dropdown command - 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 || $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { - return; - } + } + }, { + key: "_addEventListeners", + value: function _addEventListeners() { + var _this = this; + (0, _jquery2.default)(this._element).on(Event.CLICK, function (event) { event.preventDefault(); event.stopPropagation(); - if (this.disabled || $(this).hasClass(ClassName.DISABLED)) { - return; + _this.toggle(); + }); + } + }, { + key: "_getConfig", + value: function _getConfig(config) { + config = _objectSpread({}, this.constructor.Default, (0, _jquery2.default)(this._element).data(), config); + + _util2.default.typeCheckConfig(NAME, config, this.constructor.DefaultType); + + return config; + } + }, { + key: "_getMenuElement", + value: function _getMenuElement() { + if (!this._menu) { + var parent = Dropdown._getParentFromElement(this._element); + + if (parent) { + this._menu = parent.querySelector(Selector.MENU); + } + } + + return this._menu; + } + }, { + key: "_getPlacement", + value: function _getPlacement() { + var $parentDropdown = (0, _jquery2.default)(this._element.parentNode); + var placement = AttachmentMap.BOTTOM; // Handle dropup + + if ($parentDropdown.hasClass(ClassName.DROPUP)) { + placement = AttachmentMap.TOP; + + if ((0, _jquery2.default)(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.TOPEND; + } + } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) { + placement = AttachmentMap.RIGHT; + } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) { + placement = AttachmentMap.LEFT; + } else if ((0, _jquery2.default)(this._menu).hasClass(ClassName.MENURIGHT)) { + placement = AttachmentMap.BOTTOMEND; + } + + return placement; + } + }, { + key: "_detectNavbar", + value: function _detectNavbar() { + return (0, _jquery2.default)(this._element).closest('.navbar').length > 0; + } + }, { + key: "_getOffset", + value: function _getOffset() { + var _this2 = this; + + var offset = {}; + + if (typeof this._config.offset === 'function') { + offset.fn = function (data) { + data.offsets = _objectSpread({}, data.offsets, _this2._config.offset(data.offsets, _this2._element) || {}); + return data; + }; + } else { + offset.offset = this._config.offset; + } + + return offset; + } + }, { + key: "_getPopperConfig", + value: function _getPopperConfig() { + var popperConfig = { + placement: this._getPlacement(), + modifiers: { + offset: this._getOffset(), + flip: { + enabled: this._config.flip + }, + preventOverflow: { + boundariesElement: this._config.boundary + } + } // Disable Popper.js if we have a static display + + }; + + if (this._config.display === 'static') { + popperConfig.modifiers.applyStyle = { + enabled: false + }; + } + + return popperConfig; + } + }], [{ + key: "_jQueryInterface", + value: function _jQueryInterface(config) { + return this.each(function () { + var data = (0, _jquery2.default)(this).data(DATA_KEY); + + var _config = _typeof(config) === 'object' ? config : null; + + if (!data) { + data = new Dropdown(this, _config); + (0, _jquery2.default)(this).data(DATA_KEY, data); } - var parent = Dropdown._getParentFromElement(this); - - var isActive = $(parent).hasClass(ClassName.SHOW); - - if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { - if (event.which === ESCAPE_KEYCODE) { - var toggle = $(parent).find(Selector.DATA_TOGGLE)[0]; - $(toggle).trigger('focus'); + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"".concat(config, "\"")); } - $(this).trigger('click'); - return; + data[config](); } - - var items = $(parent).find(Selector.VISIBLE_ITEMS).get(); - - if (items.length === 0) { - return; - } - - var index = items.indexOf(event.target); - - if (event.which === ARROW_UP_KEYCODE && index > 0) { - // Up - index--; - } - - if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { - // Down - index++; - } - - if (index < 0) { - index = 0; - } - - items[index].focus(); + }); + } + }, { + key: "_clearMenus", + value: function _clearMenus(event) { + if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) { + return; } - }, { - key: "VERSION", - get: function get() { - return VERSION; + + var toggles = [].slice.call(document.querySelectorAll(Selector.DATA_TOGGLE)); + + for (var i = 0, len = toggles.length; i < len; i++) { + var parent = Dropdown._getParentFromElement(toggles[i]); + + var context = (0, _jquery2.default)(toggles[i]).data(DATA_KEY); + var relatedTarget = { + relatedTarget: toggles[i] + }; + + if (event && event.type === 'click') { + relatedTarget.clickEvent = event; + } + + if (!context) { + continue; + } + + var dropdownMenu = context._menu; + + if (!(0, _jquery2.default)(parent).hasClass(ClassName.SHOW)) { + continue; + } + + if (event && (event.type === 'click' && /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) && _jquery2.default.contains(parent, event.target)) { + continue; + } + + var hideEvent = _jquery2.default.Event(Event.HIDE, relatedTarget); + + (0, _jquery2.default)(parent).trigger(hideEvent); + + if (hideEvent.isDefaultPrevented()) { + continue; + } // If this is a touch-enabled device we remove the extra + // empty mouseover listeners we added for iOS support + + + if ('ontouchstart' in document.documentElement) { + (0, _jquery2.default)(document.body).children().off('mouseover', null, _jquery2.default.noop); + } + + toggles[i].setAttribute('aria-expanded', 'false'); + (0, _jquery2.default)(dropdownMenu).removeClass(ClassName.SHOW); + (0, _jquery2.default)(parent).removeClass(ClassName.SHOW).trigger(_jquery2.default.Event(Event.HIDDEN, relatedTarget)); } - }, { - key: "Default", - get: function get() { - return Default; + } + }, { + key: "_getParentFromElement", + value: function _getParentFromElement(element) { + var parent; + + var selector = _util2.default.getSelectorFromElement(element); + + if (selector) { + parent = document.querySelector(selector); } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; + + return parent || element.parentNode; + } + }, { + key: "_dataApiKeydownHandler", + value: function _dataApiKeydownHandler(event) { + // If not input/textarea: + // - And not a key in REGEXP_KEYDOWN => not a dropdown command + // If input/textarea: + // - If space key => not a dropdown command + // - If key is other than escape + // - If key is not up or down => not a dropdown command + // - If trigger inside the menu => not a dropdown command + 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 || (0, _jquery2.default)(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) { + return; } - }]); - return Dropdown; - }(); + event.preventDefault(); + event.stopPropagation(); - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - $(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on("".concat(Event.CLICK_DATA_API, " ").concat(Event.KEYUP_DATA_API), Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - event.preventDefault(); - event.stopPropagation(); + if (this.disabled || (0, _jquery2.default)(this).hasClass(ClassName.DISABLED)) { + return; + } - Dropdown._jQueryInterface.call($(this), 'toggle'); - }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { - e.stopPropagation(); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + var parent = Dropdown._getParentFromElement(this); - $.fn[NAME] = Dropdown._jQueryInterface; - $.fn[NAME].Constructor = Dropdown; + var isActive = (0, _jquery2.default)(parent).hasClass(ClassName.SHOW); - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Dropdown._jQueryInterface; - }; + if (!isActive || isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) { + if (event.which === ESCAPE_KEYCODE) { + var toggle = parent.querySelector(Selector.DATA_TOGGLE); + (0, _jquery2.default)(toggle).trigger('focus'); + } + + (0, _jquery2.default)(this).trigger('click'); + return; + } + + var items = [].slice.call(parent.querySelectorAll(Selector.VISIBLE_ITEMS)); + + if (items.length === 0) { + return; + } + + var index = items.indexOf(event.target); + + if (event.which === ARROW_UP_KEYCODE && index > 0) { + // Up + index--; + } + + if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { + // Down + index++; + } + + if (index < 0) { + index = 0; + } + + items[index].focus(); + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); return Dropdown; - }(_jquery2.default, _popper2.default); + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + (0, _jquery2.default)(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on("".concat(Event.CLICK_DATA_API, " ").concat(Event.KEYUP_DATA_API), Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + event.preventDefault(); + event.stopPropagation(); + + Dropdown._jQueryInterface.call((0, _jquery2.default)(this), 'toggle'); + }).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) { + e.stopPropagation(); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _jquery2.default.fn[NAME] = Dropdown._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Dropdown; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Dropdown._jQueryInterface; + }; exports.default = Dropdown; }); \ No newline at end of file diff --git a/theme/boost/amd/src/index.js b/theme/boost/amd/src/index.js new file mode 100644 index 00000000000..5ecfad5ce6e --- /dev/null +++ b/theme/boost/amd/src/index.js @@ -0,0 +1,79 @@ +"use strict"; + +define(["exports", "jquery", "./alert", "./button", "./carousel", "./collapse", "./dropdown", "./modal", "./popover", "./scrollspy", "./tab", "./toast", "./tooltip", "./util"], function (exports, _jquery, _alert, _button, _carousel, _collapse, _dropdown, _modal, _popover, _scrollspy, _tab, _toast, _tooltip, _util) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.Tooltip = exports.Toast = exports.Tab = exports.Scrollspy = exports.Popover = exports.Modal = exports.Dropdown = exports.Collapse = exports.Carousel = exports.Button = exports.Alert = exports.Util = undefined; + + var _jquery2 = _interopRequireDefault(_jquery); + + var _alert2 = _interopRequireDefault(_alert); + + var _button2 = _interopRequireDefault(_button); + + var _carousel2 = _interopRequireDefault(_carousel); + + var _collapse2 = _interopRequireDefault(_collapse); + + var _dropdown2 = _interopRequireDefault(_dropdown); + + var _modal2 = _interopRequireDefault(_modal); + + var _popover2 = _interopRequireDefault(_popover); + + var _scrollspy2 = _interopRequireDefault(_scrollspy); + + var _tab2 = _interopRequireDefault(_tab); + + var _toast2 = _interopRequireDefault(_toast); + + var _tooltip2 = _interopRequireDefault(_tooltip); + + var _util2 = _interopRequireDefault(_util); + + function _interopRequireDefault(obj) { + return obj && obj.__esModule ? obj : { + default: obj + }; + } + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): index.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + (function () { + if (typeof _jquery2.default === 'undefined') { + throw new TypeError('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.'); + } + + var version = _jquery2.default.fn.jquery.split(' ')[0].split('.'); + + var minMajor = 1; + var ltMajor = 2; + var minMinor = 9; + var minPatch = 1; + var maxMajor = 4; + + if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) { + throw new Error('Bootstrap\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0'); + } + })(); + + exports.Util = _util2.default; + exports.Alert = _alert2.default; + exports.Button = _button2.default; + exports.Carousel = _carousel2.default; + exports.Collapse = _collapse2.default; + exports.Dropdown = _dropdown2.default; + exports.Modal = _modal2.default; + exports.Popover = _popover2.default; + exports.Scrollspy = _scrollspy2.default; + exports.Tab = _tab2.default; + exports.Toast = _toast2.default; + exports.Tooltip = _tooltip2.default; +}); \ No newline at end of file diff --git a/theme/boost/amd/src/modal.js b/theme/boost/amd/src/modal.js index e17353862cc..8a4fabd6942 100644 --- a/theme/boost/amd/src/modal.js +++ b/theme/boost/amd/src/modal.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { "use strict"; @@ -29,22 +31,38 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { return _typeof(obj); } - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); } - return target; - }; + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } - return _extends.apply(this, arguments); + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; } function _classCallCheck(instance, Constructor) { @@ -70,593 +88,605 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): modal.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Modal = function ($) { + var NAME = 'modal'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.modal'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key + + var Default = { + backdrop: true, + keyboard: true, + focus: true, + show: true + }; + var DefaultType = { + backdrop: '(boolean|string)', + keyboard: 'boolean', + focus: 'boolean', + show: 'boolean' + }; + var Event = { + HIDE: "hide".concat(EVENT_KEY), + HIDDEN: "hidden".concat(EVENT_KEY), + SHOW: "show".concat(EVENT_KEY), + SHOWN: "shown".concat(EVENT_KEY), + FOCUSIN: "focusin".concat(EVENT_KEY), + RESIZE: "resize".concat(EVENT_KEY), + CLICK_DISMISS: "click.dismiss".concat(EVENT_KEY), + KEYDOWN_DISMISS: "keydown.dismiss".concat(EVENT_KEY), + MOUSEUP_DISMISS: "mouseup.dismiss".concat(EVENT_KEY), + MOUSEDOWN_DISMISS: "mousedown.dismiss".concat(EVENT_KEY), + CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) + }; + var ClassName = { + SCROLLABLE: 'modal-dialog-scrollable', + SCROLLBAR_MEASURER: 'modal-scrollbar-measure', + BACKDROP: 'modal-backdrop', + OPEN: 'modal-open', + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + DIALOG: '.modal-dialog', + MODAL_BODY: '.modal-body', + DATA_TOGGLE: '[data-toggle="modal"]', + DATA_DISMISS: '[data-dismiss="modal"]', + FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', + STICKY_CONTENT: '.sticky-top' /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'modal'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.modal'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var TRANSITION_DURATION = 300; - var BACKDROP_TRANSITION_DURATION = 150; - var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key - var Default = { - backdrop: true, - keyboard: true, - focus: true, - show: true - }; - var DefaultType = { - backdrop: '(boolean|string)', - keyboard: 'boolean', - focus: 'boolean', - show: 'boolean' - }; - var Event = { - HIDE: "hide".concat(EVENT_KEY), - HIDDEN: "hidden".concat(EVENT_KEY), - SHOW: "show".concat(EVENT_KEY), - SHOWN: "shown".concat(EVENT_KEY), - FOCUSIN: "focusin".concat(EVENT_KEY), - RESIZE: "resize".concat(EVENT_KEY), - CLICK_DISMISS: "click.dismiss".concat(EVENT_KEY), - KEYDOWN_DISMISS: "keydown.dismiss".concat(EVENT_KEY), - MOUSEUP_DISMISS: "mouseup.dismiss".concat(EVENT_KEY), - MOUSEDOWN_DISMISS: "mousedown.dismiss".concat(EVENT_KEY), - CLICK_DATA_API: "click".concat(EVENT_KEY).concat(DATA_API_KEY) - }; - var ClassName = { - SCROLLBAR_MEASURER: 'modal-scrollbar-measure', - BACKDROP: 'modal-backdrop', - OPEN: 'modal-open', - FADE: 'fade', - SHOW: 'show' - }; - var Selector = { - DIALOG: '.modal-dialog', - DATA_TOGGLE: '[data-toggle="modal"]', - DATA_DISMISS: '[data-dismiss="modal"]', - FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top', - STICKY_CONTENT: '.sticky-top', - NAVBAR_TOGGLER: '.navbar-toggler' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + }; - }; + var Modal = function () { + function Modal(element, config) { + _classCallCheck(this, Modal); - var Modal = function () { - function Modal(element, config) { - _classCallCheck(this, Modal); + this._config = this._getConfig(config); + this._element = element; + this._dialog = element.querySelector(Selector.DIALOG); + this._backdrop = null; + this._isShown = false; + this._isBodyOverflowing = false; + this._ignoreBackdropClick = false; + this._isTransitioning = false; + this._scrollbarWidth = 0; + } // Getters - this._config = this._getConfig(config); - this._element = element; - this._dialog = $(element).find(Selector.DIALOG)[0]; - this._backdrop = null; - this._isShown = false; - this._isBodyOverflowing = false; - this._ignoreBackdropClick = false; - this._originalBodyPadding = 0; - this._scrollbarWidth = 0; - } // Getters - - _createClass(Modal, [{ - key: "toggle", - value: function toggle(relatedTarget) { - return this._isShown ? this.hide() : this.show(relatedTarget); - } - }, { - key: "show", - value: function show(relatedTarget) { - var _this = this; - - if (this._isTransitioning || this._isShown) { - return; - } - - if (_util2.default.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { - this._isTransitioning = true; - } - - var showEvent = $.Event(Event.SHOW, { - relatedTarget: relatedTarget - }); - $(this._element).trigger(showEvent); - - if (this._isShown || showEvent.isDefaultPrevented()) { - return; - } - - this._isShown = true; - - this._checkScrollbar(); - - this._setScrollbar(); - - this._adjustDialog(); - - $(document.body).addClass(ClassName.OPEN); - - this._setEscapeEvent(); - - this._setResizeEvent(); - - $(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { - return _this.hide(event); - }); - $(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { - $(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { - if ($(event.target).is(_this._element)) { - _this._ignoreBackdropClick = true; - } - }); - }); - - this._showBackdrop(function () { - return _this._showElement(relatedTarget); - }); - } - }, { - key: "hide", - value: function hide(event) { - var _this2 = this; - - if (event) { - event.preventDefault(); - } - - if (this._isTransitioning || !this._isShown) { - return; - } - - var hideEvent = $.Event(Event.HIDE); - $(this._element).trigger(hideEvent); - - if (!this._isShown || hideEvent.isDefaultPrevented()) { - return; - } - - this._isShown = false; - var transition = _util2.default.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); - - if (transition) { - this._isTransitioning = true; - } - - this._setEscapeEvent(); - - this._setResizeEvent(); - - $(document).off(Event.FOCUSIN); - $(this._element).removeClass(ClassName.SHOW); - $(this._element).off(Event.CLICK_DISMISS); - $(this._dialog).off(Event.MOUSEDOWN_DISMISS); - - if (transition) { - $(this._element).one(_util2.default.TRANSITION_END, function (event) { - return _this2._hideModal(event); - }).emulateTransitionEnd(TRANSITION_DURATION); - } else { - this._hideModal(); - } - } - }, { - key: "dispose", - value: function dispose() { - $.removeData(this._element, DATA_KEY); - $(window, document, this._element, this._backdrop).off(EVENT_KEY); - this._config = null; - this._element = null; - this._dialog = null; - this._backdrop = null; - this._isShown = null; - this._isBodyOverflowing = null; - this._ignoreBackdropClick = null; - this._scrollbarWidth = null; - } - }, { - key: "handleUpdate", - value: function handleUpdate() { - this._adjustDialog(); - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = _extends({}, Default, config); - - _util2.default.typeCheckConfig(NAME, config, DefaultType); - - return config; - } - }, { - key: "_showElement", - value: function _showElement(relatedTarget) { - var _this3 = this; - - var transition = _util2.default.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE); - - if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { - // Don't move modal's DOM position - document.body.appendChild(this._element); - } - - this._element.style.display = 'block'; - - this._element.removeAttribute('aria-hidden'); - - this._element.scrollTop = 0; - - if (transition) { - _util2.default.reflow(this._element); - } - - $(this._element).addClass(ClassName.SHOW); - - if (this._config.focus) { - this._enforceFocus(); - } - - var shownEvent = $.Event(Event.SHOWN, { - relatedTarget: relatedTarget - }); - - var transitionComplete = function transitionComplete() { - if (_this3._config.focus) { - _this3._element.focus(); - } - - _this3._isTransitioning = false; - $(_this3._element).trigger(shownEvent); - }; - - if (transition) { - $(this._dialog).one(_util2.default.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION); - } else { - transitionComplete(); - } - } - }, { - key: "_enforceFocus", - value: function _enforceFocus() { - var _this4 = this; - - $(document).off(Event.FOCUSIN) // Guard against infinite focus loop - .on(Event.FOCUSIN, function (event) { - if (document !== event.target && _this4._element !== event.target && $(_this4._element).has(event.target).length === 0) { - _this4._element.focus(); - } - }); - } - }, { - key: "_setEscapeEvent", - value: function _setEscapeEvent() { - var _this5 = this; - - if (this._isShown && this._config.keyboard) { - $(this._element).on(Event.KEYDOWN_DISMISS, function (event) { - if (event.which === ESCAPE_KEYCODE) { - event.preventDefault(); - - _this5.hide(); - } - }); - } else if (!this._isShown) { - $(this._element).off(Event.KEYDOWN_DISMISS); - } - } - }, { - key: "_setResizeEvent", - value: function _setResizeEvent() { - var _this6 = this; - - if (this._isShown) { - $(window).on(Event.RESIZE, function (event) { - return _this6.handleUpdate(event); - }); - } else { - $(window).off(Event.RESIZE); - } - } - }, { - key: "_hideModal", - value: function _hideModal() { - var _this7 = this; - - this._element.style.display = 'none'; - - this._element.setAttribute('aria-hidden', true); - - this._isTransitioning = false; - - this._showBackdrop(function () { - $(document.body).removeClass(ClassName.OPEN); - - _this7._resetAdjustments(); - - _this7._resetScrollbar(); - - $(_this7._element).trigger(Event.HIDDEN); - }); - } - }, { - key: "_removeBackdrop", - value: function _removeBackdrop() { - if (this._backdrop) { - $(this._backdrop).remove(); - this._backdrop = null; - } - } - }, { - key: "_showBackdrop", - value: function _showBackdrop(callback) { - var _this8 = this; - - var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; - - if (this._isShown && this._config.backdrop) { - var doAnimate = _util2.default.supportsTransitionEnd() && animate; - this._backdrop = document.createElement('div'); - this._backdrop.className = ClassName.BACKDROP; - - if (animate) { - $(this._backdrop).addClass(animate); - } - - $(this._backdrop).appendTo(document.body); - $(this._element).on(Event.CLICK_DISMISS, function (event) { - if (_this8._ignoreBackdropClick) { - _this8._ignoreBackdropClick = false; - return; - } - - if (event.target !== event.currentTarget) { - return; - } - - if (_this8._config.backdrop === 'static') { - _this8._element.focus(); - } else { - _this8.hide(); - } - }); - - if (doAnimate) { - _util2.default.reflow(this._backdrop); - } - - $(this._backdrop).addClass(ClassName.SHOW); - - if (!callback) { - return; - } - - if (!doAnimate) { - callback(); - return; - } - - $(this._backdrop).one(_util2.default.TRANSITION_END, callback).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); - } else if (!this._isShown && this._backdrop) { - $(this._backdrop).removeClass(ClassName.SHOW); - - var callbackRemove = function callbackRemove() { - _this8._removeBackdrop(); - - if (callback) { - callback(); - } - }; - - if (_util2.default.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) { - $(this._backdrop).one(_util2.default.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION); - } else { - callbackRemove(); - } - } else if (callback) { - callback(); - } - } - }, { - key: "_adjustDialog", - value: function _adjustDialog() { - var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; - - if (!this._isBodyOverflowing && isModalOverflowing) { - this._element.style.paddingLeft = "".concat(this._scrollbarWidth, "px"); - } - - if (this._isBodyOverflowing && !isModalOverflowing) { - this._element.style.paddingRight = "".concat(this._scrollbarWidth, "px"); - } - } - }, { - key: "_resetAdjustments", - value: function _resetAdjustments() { - this._element.style.paddingLeft = ''; - this._element.style.paddingRight = ''; - } - }, { - key: "_checkScrollbar", - value: function _checkScrollbar() { - var rect = document.body.getBoundingClientRect(); - this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; - this._scrollbarWidth = this._getScrollbarWidth(); - } - }, { - key: "_setScrollbar", - value: function _setScrollbar() { - var _this9 = this; - - if (this._isBodyOverflowing) { - // Note: DOMNode.style.paddingRight returns the actual value or '' if not set - // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set - // Adjust fixed content padding - $(Selector.FIXED_CONTENT).each(function (index, element) { - var actualPadding = $(element)[0].style.paddingRight; - var calculatedPadding = $(element).css('padding-right'); - $(element).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + _this9._scrollbarWidth, "px")); - }); // Adjust sticky content margin - - $(Selector.STICKY_CONTENT).each(function (index, element) { - var actualMargin = $(element)[0].style.marginRight; - var calculatedMargin = $(element).css('margin-right'); - $(element).data('margin-right', actualMargin).css('margin-right', "".concat(parseFloat(calculatedMargin) - _this9._scrollbarWidth, "px")); - }); // Adjust navbar-toggler margin - - $(Selector.NAVBAR_TOGGLER).each(function (index, element) { - var actualMargin = $(element)[0].style.marginRight; - var calculatedMargin = $(element).css('margin-right'); - $(element).data('margin-right', actualMargin).css('margin-right', "".concat(parseFloat(calculatedMargin) + _this9._scrollbarWidth, "px")); - }); // Adjust body padding - - var actualPadding = document.body.style.paddingRight; - var calculatedPadding = $('body').css('padding-right'); - $('body').data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + this._scrollbarWidth, "px")); - } - } - }, { - key: "_resetScrollbar", - value: function _resetScrollbar() { - // Restore fixed content padding - $(Selector.FIXED_CONTENT).each(function (index, element) { - var padding = $(element).data('padding-right'); - - if (typeof padding !== 'undefined') { - $(element).css('padding-right', padding).removeData('padding-right'); - } - }); // Restore sticky content and navbar-toggler margin - - $("".concat(Selector.STICKY_CONTENT, ", ").concat(Selector.NAVBAR_TOGGLER)).each(function (index, element) { - var margin = $(element).data('margin-right'); - - if (typeof margin !== 'undefined') { - $(element).css('margin-right', margin).removeData('margin-right'); - } - }); // Restore body padding - - var padding = $('body').data('padding-right'); - - if (typeof padding !== 'undefined') { - $('body').css('padding-right', padding).removeData('padding-right'); - } - } - }, { - key: "_getScrollbarWidth", - value: function _getScrollbarWidth() { - // thx d.walsh - var scrollDiv = document.createElement('div'); - scrollDiv.className = ClassName.SCROLLBAR_MEASURER; - document.body.appendChild(scrollDiv); - var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; - document.body.removeChild(scrollDiv); - return scrollbarWidth; - } - }], [{ - key: "_jQueryInterface", - value: function _jQueryInterface(config, relatedTarget) { - return this.each(function () { - var data = $(this).data(DATA_KEY); - - var _config = _extends({}, Modal.Default, $(this).data(), _typeof(config) === 'object' && config); - - if (!data) { - data = new Modal(this, _config); - $(this).data(DATA_KEY, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](relatedTarget); - } else if (_config.show) { - data.show(relatedTarget); - } - }); - } - }, { - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }]); - - return Modal; - }(); - - /** - * ------------------------------------------------------------------------ - * Data Api implementation - * ------------------------------------------------------------------------ - */ - $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { - var _this10 = this; - - var target; - - var selector = _util2.default.getSelectorFromElement(this); - - if (selector) { - target = $(selector)[0]; + _createClass(Modal, [{ + key: "toggle", + value: function toggle(relatedTarget) { + return this._isShown ? this.hide() : this.show(relatedTarget); } + }, { + key: "show", + value: function show(relatedTarget) { + var _this = this; - var config = $(target).data(DATA_KEY) ? 'toggle' : _extends({}, $(target).data(), $(this).data()); - - if (this.tagName === 'A' || this.tagName === 'AREA') { - event.preventDefault(); - } - - var $target = $(target).one(Event.SHOW, function (showEvent) { - if (showEvent.isDefaultPrevented()) { - // Only register focus restorer if modal will actually get shown + if (this._isShown || this._isTransitioning) { return; } - $target.one(Event.HIDDEN, function () { - if ($(_this10).is(':visible')) { - _this10.focus(); + if ((0, _jquery2.default)(this._element).hasClass(ClassName.FADE)) { + this._isTransitioning = true; + } + + var showEvent = _jquery2.default.Event(Event.SHOW, { + relatedTarget: relatedTarget + }); + + (0, _jquery2.default)(this._element).trigger(showEvent); + + if (this._isShown || showEvent.isDefaultPrevented()) { + return; + } + + this._isShown = true; + + this._checkScrollbar(); + + this._setScrollbar(); + + this._adjustDialog(); + + this._setEscapeEvent(); + + this._setResizeEvent(); + + (0, _jquery2.default)(this._element).on(Event.CLICK_DISMISS, Selector.DATA_DISMISS, function (event) { + return _this.hide(event); + }); + (0, _jquery2.default)(this._dialog).on(Event.MOUSEDOWN_DISMISS, function () { + (0, _jquery2.default)(_this._element).one(Event.MOUSEUP_DISMISS, function (event) { + if ((0, _jquery2.default)(event.target).is(_this._element)) { + _this._ignoreBackdropClick = true; + } + }); + }); + + this._showBackdrop(function () { + return _this._showElement(relatedTarget); + }); + } + }, { + key: "hide", + value: function hide(event) { + var _this2 = this; + + if (event) { + event.preventDefault(); + } + + if (!this._isShown || this._isTransitioning) { + return; + } + + var hideEvent = _jquery2.default.Event(Event.HIDE); + + (0, _jquery2.default)(this._element).trigger(hideEvent); + + if (!this._isShown || hideEvent.isDefaultPrevented()) { + return; + } + + this._isShown = false; + var transition = (0, _jquery2.default)(this._element).hasClass(ClassName.FADE); + + if (transition) { + this._isTransitioning = true; + } + + this._setEscapeEvent(); + + this._setResizeEvent(); + + (0, _jquery2.default)(document).off(Event.FOCUSIN); + (0, _jquery2.default)(this._element).removeClass(ClassName.SHOW); + (0, _jquery2.default)(this._element).off(Event.CLICK_DISMISS); + (0, _jquery2.default)(this._dialog).off(Event.MOUSEDOWN_DISMISS); + + if (transition) { + var transitionDuration = _util2.default.getTransitionDurationFromElement(this._element); + + (0, _jquery2.default)(this._element).one(_util2.default.TRANSITION_END, function (event) { + return _this2._hideModal(event); + }).emulateTransitionEnd(transitionDuration); + } else { + this._hideModal(); + } + } + }, { + key: "dispose", + value: function dispose() { + [window, this._element, this._dialog].forEach(function (htmlElement) { + return (0, _jquery2.default)(htmlElement).off(EVENT_KEY); + }); + /** + * `document` has 2 events `Event.FOCUSIN` and `Event.CLICK_DATA_API` + * Do not move `document` in `htmlElements` array + * It will remove `Event.CLICK_DATA_API` event that should remain + */ + + (0, _jquery2.default)(document).off(Event.FOCUSIN); + + _jquery2.default.removeData(this._element, DATA_KEY); + + this._config = null; + this._element = null; + this._dialog = null; + this._backdrop = null; + this._isShown = null; + this._isBodyOverflowing = null; + this._ignoreBackdropClick = null; + this._isTransitioning = null; + this._scrollbarWidth = null; + } + }, { + key: "handleUpdate", + value: function handleUpdate() { + this._adjustDialog(); + } + }, { + key: "_getConfig", + value: function _getConfig(config) { + config = _objectSpread({}, Default, config); + + _util2.default.typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: "_showElement", + value: function _showElement(relatedTarget) { + var _this3 = this; + + var transition = (0, _jquery2.default)(this._element).hasClass(ClassName.FADE); + + if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) { + // Don't move modal's DOM position + document.body.appendChild(this._element); + } + + this._element.style.display = 'block'; + + this._element.removeAttribute('aria-hidden'); + + this._element.setAttribute('aria-modal', true); + + if ((0, _jquery2.default)(this._dialog).hasClass(ClassName.SCROLLABLE)) { + this._dialog.querySelector(Selector.MODAL_BODY).scrollTop = 0; + } else { + this._element.scrollTop = 0; + } + + if (transition) { + _util2.default.reflow(this._element); + } + + (0, _jquery2.default)(this._element).addClass(ClassName.SHOW); + + if (this._config.focus) { + this._enforceFocus(); + } + + var shownEvent = _jquery2.default.Event(Event.SHOWN, { + relatedTarget: relatedTarget + }); + + var transitionComplete = function transitionComplete() { + if (_this3._config.focus) { + _this3._element.focus(); + } + + _this3._isTransitioning = false; + (0, _jquery2.default)(_this3._element).trigger(shownEvent); + }; + + if (transition) { + var transitionDuration = _util2.default.getTransitionDurationFromElement(this._dialog); + + (0, _jquery2.default)(this._dialog).one(_util2.default.TRANSITION_END, transitionComplete).emulateTransitionEnd(transitionDuration); + } else { + transitionComplete(); + } + } + }, { + key: "_enforceFocus", + value: function _enforceFocus() { + var _this4 = this; + + (0, _jquery2.default)(document).off(Event.FOCUSIN) // Guard against infinite focus loop + .on(Event.FOCUSIN, function (event) { + if (document !== event.target && _this4._element !== event.target && (0, _jquery2.default)(_this4._element).has(event.target).length === 0) { + _this4._element.focus(); } }); - }); + } + }, { + key: "_setEscapeEvent", + value: function _setEscapeEvent() { + var _this5 = this; - Modal._jQueryInterface.call($(target), config, this); - }); - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ + if (this._isShown && this._config.keyboard) { + (0, _jquery2.default)(this._element).on(Event.KEYDOWN_DISMISS, function (event) { + if (event.which === ESCAPE_KEYCODE) { + event.preventDefault(); - $.fn[NAME] = Modal._jQueryInterface; - $.fn[NAME].Constructor = Modal; + _this5.hide(); + } + }); + } else if (!this._isShown) { + (0, _jquery2.default)(this._element).off(Event.KEYDOWN_DISMISS); + } + } + }, { + key: "_setResizeEvent", + value: function _setResizeEvent() { + var _this6 = this; - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Modal._jQueryInterface; - }; + if (this._isShown) { + (0, _jquery2.default)(window).on(Event.RESIZE, function (event) { + return _this6.handleUpdate(event); + }); + } else { + (0, _jquery2.default)(window).off(Event.RESIZE); + } + } + }, { + key: "_hideModal", + value: function _hideModal() { + var _this7 = this; + + this._element.style.display = 'none'; + + this._element.setAttribute('aria-hidden', true); + + this._element.removeAttribute('aria-modal'); + + this._isTransitioning = false; + + this._showBackdrop(function () { + (0, _jquery2.default)(document.body).removeClass(ClassName.OPEN); + + _this7._resetAdjustments(); + + _this7._resetScrollbar(); + + (0, _jquery2.default)(_this7._element).trigger(Event.HIDDEN); + }); + } + }, { + key: "_removeBackdrop", + value: function _removeBackdrop() { + if (this._backdrop) { + (0, _jquery2.default)(this._backdrop).remove(); + this._backdrop = null; + } + } + }, { + key: "_showBackdrop", + value: function _showBackdrop(callback) { + var _this8 = this; + + var animate = (0, _jquery2.default)(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : ''; + + if (this._isShown && this._config.backdrop) { + this._backdrop = document.createElement('div'); + this._backdrop.className = ClassName.BACKDROP; + + if (animate) { + this._backdrop.classList.add(animate); + } + + (0, _jquery2.default)(this._backdrop).appendTo(document.body); + (0, _jquery2.default)(this._element).on(Event.CLICK_DISMISS, function (event) { + if (_this8._ignoreBackdropClick) { + _this8._ignoreBackdropClick = false; + return; + } + + if (event.target !== event.currentTarget) { + return; + } + + if (_this8._config.backdrop === 'static') { + _this8._element.focus(); + } else { + _this8.hide(); + } + }); + + if (animate) { + _util2.default.reflow(this._backdrop); + } + + (0, _jquery2.default)(this._backdrop).addClass(ClassName.SHOW); + + if (!callback) { + return; + } + + if (!animate) { + callback(); + return; + } + + var backdropTransitionDuration = _util2.default.getTransitionDurationFromElement(this._backdrop); + + (0, _jquery2.default)(this._backdrop).one(_util2.default.TRANSITION_END, callback).emulateTransitionEnd(backdropTransitionDuration); + } else if (!this._isShown && this._backdrop) { + (0, _jquery2.default)(this._backdrop).removeClass(ClassName.SHOW); + + var callbackRemove = function callbackRemove() { + _this8._removeBackdrop(); + + if (callback) { + callback(); + } + }; + + if ((0, _jquery2.default)(this._element).hasClass(ClassName.FADE)) { + var _backdropTransitionDuration = _util2.default.getTransitionDurationFromElement(this._backdrop); + + (0, _jquery2.default)(this._backdrop).one(_util2.default.TRANSITION_END, callbackRemove).emulateTransitionEnd(_backdropTransitionDuration); + } else { + callbackRemove(); + } + } else if (callback) { + callback(); + } + } + }, { + key: "_adjustDialog", + value: function _adjustDialog() { + var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight; + + if (!this._isBodyOverflowing && isModalOverflowing) { + this._element.style.paddingLeft = "".concat(this._scrollbarWidth, "px"); + } + + if (this._isBodyOverflowing && !isModalOverflowing) { + this._element.style.paddingRight = "".concat(this._scrollbarWidth, "px"); + } + } + }, { + key: "_resetAdjustments", + value: function _resetAdjustments() { + this._element.style.paddingLeft = ''; + this._element.style.paddingRight = ''; + } + }, { + key: "_checkScrollbar", + value: function _checkScrollbar() { + var rect = document.body.getBoundingClientRect(); + this._isBodyOverflowing = rect.left + rect.right < window.innerWidth; + this._scrollbarWidth = this._getScrollbarWidth(); + } + }, { + key: "_setScrollbar", + value: function _setScrollbar() { + var _this9 = this; + + if (this._isBodyOverflowing) { + // Note: DOMNode.style.paddingRight returns the actual value or '' if not set + // while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set + var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT)); + var stickyContent = [].slice.call(document.querySelectorAll(Selector.STICKY_CONTENT)); // Adjust fixed content padding + + (0, _jquery2.default)(fixedContent).each(function (index, element) { + var actualPadding = element.style.paddingRight; + var calculatedPadding = (0, _jquery2.default)(element).css('padding-right'); + (0, _jquery2.default)(element).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + _this9._scrollbarWidth, "px")); + }); // Adjust sticky content margin + + (0, _jquery2.default)(stickyContent).each(function (index, element) { + var actualMargin = element.style.marginRight; + var calculatedMargin = (0, _jquery2.default)(element).css('margin-right'); + (0, _jquery2.default)(element).data('margin-right', actualMargin).css('margin-right', "".concat(parseFloat(calculatedMargin) - _this9._scrollbarWidth, "px")); + }); // Adjust body padding + + var actualPadding = document.body.style.paddingRight; + var calculatedPadding = (0, _jquery2.default)(document.body).css('padding-right'); + (0, _jquery2.default)(document.body).data('padding-right', actualPadding).css('padding-right', "".concat(parseFloat(calculatedPadding) + this._scrollbarWidth, "px")); + } + + (0, _jquery2.default)(document.body).addClass(ClassName.OPEN); + } + }, { + key: "_resetScrollbar", + value: function _resetScrollbar() { + // Restore fixed content padding + var fixedContent = [].slice.call(document.querySelectorAll(Selector.FIXED_CONTENT)); + (0, _jquery2.default)(fixedContent).each(function (index, element) { + var padding = (0, _jquery2.default)(element).data('padding-right'); + (0, _jquery2.default)(element).removeData('padding-right'); + element.style.paddingRight = padding ? padding : ''; + }); // Restore sticky content + + var elements = [].slice.call(document.querySelectorAll("".concat(Selector.STICKY_CONTENT))); + (0, _jquery2.default)(elements).each(function (index, element) { + var margin = (0, _jquery2.default)(element).data('margin-right'); + + if (typeof margin !== 'undefined') { + (0, _jquery2.default)(element).css('margin-right', margin).removeData('margin-right'); + } + }); // Restore body padding + + var padding = (0, _jquery2.default)(document.body).data('padding-right'); + (0, _jquery2.default)(document.body).removeData('padding-right'); + document.body.style.paddingRight = padding ? padding : ''; + } + }, { + key: "_getScrollbarWidth", + value: function _getScrollbarWidth() { + // thx d.walsh + var scrollDiv = document.createElement('div'); + scrollDiv.className = ClassName.SCROLLBAR_MEASURER; + document.body.appendChild(scrollDiv); + var scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth; + document.body.removeChild(scrollDiv); + return scrollbarWidth; + } + }], [{ + key: "_jQueryInterface", + value: function _jQueryInterface(config, relatedTarget) { + return this.each(function () { + var data = (0, _jquery2.default)(this).data(DATA_KEY); + + var _config = _objectSpread({}, Default, (0, _jquery2.default)(this).data(), _typeof(config) === 'object' && config ? config : {}); + + if (!data) { + data = new Modal(this, _config); + (0, _jquery2.default)(this).data(DATA_KEY, data); + } + + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"".concat(config, "\"")); + } + + data[config](relatedTarget); + } else if (_config.show) { + data.show(relatedTarget); + } + }); + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }]); return Modal; - }(_jquery2.default); + }(); + + /** + * ------------------------------------------------------------------------ + * Data Api implementation + * ------------------------------------------------------------------------ + */ + (0, _jquery2.default)(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) { + var _this10 = this; + + var target; + + var selector = _util2.default.getSelectorFromElement(this); + + if (selector) { + target = document.querySelector(selector); + } + + var config = (0, _jquery2.default)(target).data(DATA_KEY) ? 'toggle' : _objectSpread({}, (0, _jquery2.default)(target).data(), (0, _jquery2.default)(this).data()); + + if (this.tagName === 'A' || this.tagName === 'AREA') { + event.preventDefault(); + } + + var $target = (0, _jquery2.default)(target).one(Event.SHOW, function (showEvent) { + if (showEvent.isDefaultPrevented()) { + // Only register focus restorer if modal will actually get shown + return; + } + + $target.one(Event.HIDDEN, function () { + if ((0, _jquery2.default)(_this10).is(':visible')) { + _this10.focus(); + } + }); + }); + + Modal._jQueryInterface.call((0, _jquery2.default)(target), config, this); + }); + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + + _jquery2.default.fn[NAME] = Modal._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Modal; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Modal._jQueryInterface; + }; exports.default = Modal; }); \ No newline at end of file diff --git a/theme/boost/amd/src/pending.js b/theme/boost/amd/src/pending.js index 1878a0b8507..2e25c8126f4 100644 --- a/theme/boost/amd/src/pending.js +++ b/theme/boost/amd/src/pending.js @@ -92,6 +92,17 @@ define(['jquery'], function($) { }, ], + toast: [ + { + start: 'hide', + end: 'hidden', + }, + { + start: 'show', + end: 'shown', + }, + ], + tooltip: [ { start: 'hide', diff --git a/theme/boost/amd/src/popover.js b/theme/boost/amd/src/popover.js index bc88d804e67..b9a263886bd 100644 --- a/theme/boost/amd/src/popover.js +++ b/theme/boost/amd/src/popover.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "./tooltip"], function (exports, _jquery, _tooltip) { "use strict"; @@ -56,6 +58,10 @@ define(["exports", "jquery", "./tooltip"], function (exports, _jquery, _tooltip) return call; } + return _assertThisInitialized(self); + } + + function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } @@ -71,227 +77,241 @@ define(["exports", "jquery", "./tooltip"], function (exports, _jquery, _tooltip) subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, - enumerable: false, writable: true, configurable: true } }); - if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; + if (superClass) _setPrototypeOf(subClass, superClass); } - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } - } - - return target; + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; }; - return _extends.apply(this, arguments); + return _setPrototypeOf(o, p); + } + + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); + + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); + } + + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } + + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): popover.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var Popover = function ($) { + var NAME = 'popover'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.popover'; + var EVENT_KEY = ".".concat(DATA_KEY); + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var CLASS_PREFIX = 'bs-popover'; + var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)".concat(CLASS_PREFIX, "\\S+"), 'g'); + + var Default = _objectSpread({}, _tooltip2.default.Default, { + placement: 'right', + trigger: 'click', + content: '', + template: '' + }); + + var DefaultType = _objectSpread({}, _tooltip2.default.DefaultType, { + content: '(string|element|function)' + }); + + var ClassName = { + FADE: 'fade', + SHOW: 'show' + }; + var Selector = { + TITLE: '.popover-header', + CONTENT: '.popover-body' + }; + var Event = { + HIDE: "hide".concat(EVENT_KEY), + HIDDEN: "hidden".concat(EVENT_KEY), + SHOW: "show".concat(EVENT_KEY), + SHOWN: "shown".concat(EVENT_KEY), + INSERTED: "inserted".concat(EVENT_KEY), + CLICK: "click".concat(EVENT_KEY), + FOCUSIN: "focusin".concat(EVENT_KEY), + FOCUSOUT: "focusout".concat(EVENT_KEY), + MOUSEENTER: "mouseenter".concat(EVENT_KEY), + MOUSELEAVE: "mouseleave".concat(EVENT_KEY) /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'popover'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.popover'; - var EVENT_KEY = ".".concat(DATA_KEY); - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var CLASS_PREFIX = 'bs-popover'; - var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)".concat(CLASS_PREFIX, "\\S+"), 'g'); - var Default = _extends({}, _tooltip2.default.Default, { - placement: 'right', - trigger: 'click', - content: '', - template: '' - }); + }; - var DefaultType = _extends({}, _tooltip2.default.DefaultType, { - content: '(string|element|function)' - }); + var Popover = function (_Tooltip) { + _inherits(Popover, _Tooltip); - var ClassName = { - FADE: 'fade', - SHOW: 'show' - }; - var Selector = { - TITLE: '.popover-header', - CONTENT: '.popover-body' - }; - var Event = { - HIDE: "hide".concat(EVENT_KEY), - HIDDEN: "hidden".concat(EVENT_KEY), - SHOW: "show".concat(EVENT_KEY), - SHOWN: "shown".concat(EVENT_KEY), - INSERTED: "inserted".concat(EVENT_KEY), - CLICK: "click".concat(EVENT_KEY), - FOCUSIN: "focusin".concat(EVENT_KEY), - FOCUSOUT: "focusout".concat(EVENT_KEY), - MOUSEENTER: "mouseenter".concat(EVENT_KEY), - MOUSELEAVE: "mouseleave".concat(EVENT_KEY) - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ + function Popover() { + _classCallCheck(this, Popover); - }; + return _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).apply(this, arguments)); + } - var Popover = function (_Tooltip) { - _inherits(Popover, _Tooltip); - - function Popover() { - _classCallCheck(this, Popover); - - return _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).apply(this, arguments)); + _createClass(Popover, [{ + key: "isWithContent", + value: function isWithContent() { + return this.getTitle() || this._getContent(); } + }, { + key: "addAttachmentClass", + value: function addAttachmentClass(attachment) { + (0, _jquery2.default)(this.getTipElement()).addClass("".concat(CLASS_PREFIX, "-").concat(attachment)); + } + }, { + key: "getTipElement", + value: function getTipElement() { + this.tip = this.tip || (0, _jquery2.default)(this.config.template)[0]; + return this.tip; + } + }, { + key: "setContent", + value: function setContent() { + var $tip = (0, _jquery2.default)(this.getTipElement()); // We use append for html objects to maintain js events - _createClass(Popover, [{ - key: "isWithContent", - value: function isWithContent() { - return this.getTitle() || this._getContent(); + this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + + var content = this._getContent(); + + if (typeof content === 'function') { + content = content.call(this.element); } - }, { - key: "addAttachmentClass", - value: function addAttachmentClass(attachment) { - $(this.getTipElement()).addClass("".concat(CLASS_PREFIX, "-").concat(attachment)); + + this.setElementContent($tip.find(Selector.CONTENT), content); + $tip.removeClass("".concat(ClassName.FADE, " ").concat(ClassName.SHOW)); + } + }, { + key: "_getContent", + value: function _getContent() { + return this.element.getAttribute('data-content') || this.config.content; + } + }, { + key: "_cleanTipClass", + value: function _cleanTipClass() { + var $tip = (0, _jquery2.default)(this.getTipElement()); + var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); + + if (tabClass !== null && tabClass.length > 0) { + $tip.removeClass(tabClass.join('')); } - }, { - key: "getTipElement", - value: function getTipElement() { - this.tip = this.tip || $(this.config.template)[0]; - return this.tip; - } - }, { - key: "setContent", - value: function setContent() { - var $tip = $(this.getTipElement()); // We use append for html objects to maintain js events + } + }], [{ + key: "_jQueryInterface", + value: function _jQueryInterface(config) { + return this.each(function () { + var data = (0, _jquery2.default)(this).data(DATA_KEY); - this.setElementContent($tip.find(Selector.TITLE), this.getTitle()); + var _config = _typeof(config) === 'object' ? config : null; - var content = this._getContent(); - - if (typeof content === 'function') { - content = content.call(this.element); + if (!data && /dispose|hide/.test(config)) { + return; } - this.setElementContent($tip.find(Selector.CONTENT), content); - $tip.removeClass("".concat(ClassName.FADE, " ").concat(ClassName.SHOW)); - } - }, { - key: "_getContent", - value: function _getContent() { - return this.element.getAttribute('data-content') || this.config.content; - } - }, { - key: "_cleanTipClass", - value: function _cleanTipClass() { - var $tip = $(this.getTipElement()); - var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX); - - if (tabClass !== null && tabClass.length > 0) { - $tip.removeClass(tabClass.join('')); + if (!data) { + data = new Popover(this, _config); + (0, _jquery2.default)(this).data(DATA_KEY, data); } - } - }], [{ - key: "_jQueryInterface", - value: function _jQueryInterface(config) { - return this.each(function () { - var data = $(this).data(DATA_KEY); - var _config = _typeof(config) === 'object' ? config : null; - - if (!data && /destroy|hide/.test(config)) { - return; + if (typeof config === 'string') { + if (typeof data[config] === 'undefined') { + throw new TypeError("No method named \"".concat(config, "\"")); } - if (!data) { - data = new Popover(this, _config); - $(this).data(DATA_KEY, data); - } - - if (typeof config === 'string') { - if (typeof data[config] === 'undefined') { - throw new TypeError("No method named \"".concat(config, "\"")); - } - - data[config](); - } - }); - } - }, { - key: "VERSION", - get: function get() { - return VERSION; - } - }, { - key: "Default", - get: function get() { - return Default; - } - }, { - key: "NAME", - get: function get() { - return NAME; - } - }, { - key: "DATA_KEY", - get: function get() { - return DATA_KEY; - } - }, { - key: "Event", - get: function get() { - return Event; - } - }, { - key: "EVENT_KEY", - get: function get() { - return EVENT_KEY; - } - }, { - key: "DefaultType", - get: function get() { - return DefaultType; - } - }]); - - return Popover; - }(_tooltip2.default); - - /** - * ------------------------------------------------------------------------ - * jQuery - * ------------------------------------------------------------------------ - */ - $.fn[NAME] = Popover._jQueryInterface; - $.fn[NAME].Constructor = Popover; - - $.fn[NAME].noConflict = function () { - $.fn[NAME] = JQUERY_NO_CONFLICT; - return Popover._jQueryInterface; - }; + data[config](); + } + }); + } + }, { + key: "VERSION", + get: function get() { + return VERSION; + } + }, { + key: "Default", + get: function get() { + return Default; + } + }, { + key: "NAME", + get: function get() { + return NAME; + } + }, { + key: "DATA_KEY", + get: function get() { + return DATA_KEY; + } + }, { + key: "Event", + get: function get() { + return Event; + } + }, { + key: "EVENT_KEY", + get: function get() { + return EVENT_KEY; + } + }, { + key: "DefaultType", + get: function get() { + return DefaultType; + } + }]); return Popover; - }(_jquery2.default); + }(_tooltip2.default); + + /** + * ------------------------------------------------------------------------ + * jQuery + * ------------------------------------------------------------------------ + */ + _jquery2.default.fn[NAME] = Popover._jQueryInterface; + _jquery2.default.fn[NAME].Constructor = Popover; + + _jquery2.default.fn[NAME].noConflict = function () { + _jquery2.default.fn[NAME] = JQUERY_NO_CONFLICT; + return Popover._jQueryInterface; + }; exports.default = Popover; }); \ No newline at end of file diff --git a/theme/boost/amd/src/sanitizer.js b/theme/boost/amd/src/sanitizer.js new file mode 100644 index 00000000000..b4575296ac7 --- /dev/null +++ b/theme/boost/amd/src/sanitizer.js @@ -0,0 +1,131 @@ +"use strict"; + +define(["exports"], function (exports) { + "use strict"; + + Object.defineProperty(exports, "__esModule", { + value: true + }); + exports.sanitizeHtml = sanitizeHtml; + + /** + * -------------------------------------------------------------------------- + * Bootstrap (v4.3.1): tools/sanitizer.js + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) + * -------------------------------------------------------------------------- + */ + var uriAttrs = ['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']; + var ARIA_ATTRIBUTE_PATTERN = /^aria-[\w-]*$/i; + var DefaultWhitelist = exports.DefaultWhitelist = { + // Global attributes allowed on any supplied element below. + '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN], + a: ['target', 'href', 'title', 'rel'], + area: [], + b: [], + br: [], + col: [], + code: [], + div: [], + em: [], + hr: [], + h1: [], + h2: [], + h3: [], + h4: [], + h5: [], + h6: [], + i: [], + img: ['src', 'alt', 'title', 'width', 'height'], + li: [], + ol: [], + p: [], + pre: [], + s: [], + small: [], + span: [], + sub: [], + sup: [], + strong: [], + u: [], + ul: [] + /** + * A pattern that recognizes a commonly useful subset of URLs that are safe. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + + }; + var SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^&:/?#]*(?:[/?#]|$))/gi; + /** + * A pattern that matches safe data URLs. Only matches image, video and audio types. + * + * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts + */ + + var DATA_URL_PATTERN = /^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[a-z0-9+/]+=*$/i; + + function allowedAttribute(attr, allowedAttributeList) { + var attrName = attr.nodeName.toLowerCase(); + + if (allowedAttributeList.indexOf(attrName) !== -1) { + if (uriAttrs.indexOf(attrName) !== -1) { + return Boolean(attr.nodeValue.match(SAFE_URL_PATTERN) || attr.nodeValue.match(DATA_URL_PATTERN)); + } + + return true; + } + + var regExp = allowedAttributeList.filter(function (attrRegex) { + return attrRegex instanceof RegExp; + }); // Check if a regular expression validates the attribute. + + for (var i = 0, l = regExp.length; i < l; i++) { + if (attrName.match(regExp[i])) { + return true; + } + } + + return false; + } + + function sanitizeHtml(unsafeHtml, whiteList, sanitizeFn) { + if (unsafeHtml.length === 0) { + return unsafeHtml; + } + + if (sanitizeFn && typeof sanitizeFn === 'function') { + return sanitizeFn(unsafeHtml); + } + + var domParser = new window.DOMParser(); + var createdDocument = domParser.parseFromString(unsafeHtml, 'text/html'); + var whitelistKeys = Object.keys(whiteList); + var elements = [].slice.call(createdDocument.body.querySelectorAll('*')); + + var _loop = function _loop(i, len) { + var el = elements[i]; + var elName = el.nodeName.toLowerCase(); + + if (whitelistKeys.indexOf(el.nodeName.toLowerCase()) === -1) { + el.parentNode.removeChild(el); + return "continue"; + } + + var attributeList = [].slice.call(el.attributes); + var whitelistedAttributes = [].concat(whiteList['*'] || [], whiteList[elName] || []); + attributeList.forEach(function (attr) { + if (!allowedAttribute(attr, whitelistedAttributes)) { + el.removeAttribute(attr.nodeName); + } + }); + }; + + for (var i = 0, len = elements.length; i < len; i++) { + var _ret = _loop(i, len); + + if (_ret === "continue") continue; + } + + return createdDocument.body.innerHTML; + } +}); \ No newline at end of file diff --git a/theme/boost/amd/src/scrollspy.js b/theme/boost/amd/src/scrollspy.js index dc6f96e9f3e..f7ee7e5d820 100644 --- a/theme/boost/amd/src/scrollspy.js +++ b/theme/boost/amd/src/scrollspy.js @@ -1,3 +1,5 @@ +"use strict"; + define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { "use strict"; @@ -29,22 +31,38 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { return _typeof(obj); } - function _extends() { - _extends = Object.assign || function (target) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; + function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(source); - for (var key in source) { - if (Object.prototype.hasOwnProperty.call(source, key)) { - target[key] = source[key]; - } - } + if (typeof Object.getOwnPropertySymbols === 'function') { + ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { + return Object.getOwnPropertyDescriptor(source, sym).enumerable; + })); } - return target; - }; + ownKeys.forEach(function (key) { + _defineProperty(target, key, source[key]); + }); + } - return _extends.apply(this, arguments); + return target; + } + + function _defineProperty(obj, key, value) { + if (key in obj) { + Object.defineProperty(obj, key, { + value: value, + enumerable: true, + configurable: true, + writable: true + }); + } else { + obj[key] = value; + } + + return obj; } function _classCallCheck(instance, Constructor) { @@ -70,321 +88,317 @@ define(["exports", "jquery", "./util"], function (exports, _jquery, _util) { } /** - * -------------------------------------------------------------------------- - * Bootstrap (v4.0.0): scrollspy.js - * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) - * -------------------------------------------------------------------------- + * ------------------------------------------------------------------------ + * Constants + * ------------------------------------------------------------------------ */ - var ScrollSpy = function ($) { + var NAME = 'scrollspy'; + var VERSION = '4.3.1'; + var DATA_KEY = 'bs.scrollspy'; + var EVENT_KEY = ".".concat(DATA_KEY); + var DATA_API_KEY = '.data-api'; + var JQUERY_NO_CONFLICT = _jquery2.default.fn[NAME]; + var Default = { + offset: 10, + method: 'auto', + target: '' + }; + var DefaultType = { + offset: 'number', + method: 'string', + target: '(string|element)' + }; + var Event = { + ACTIVATE: "activate".concat(EVENT_KEY), + SCROLL: "scroll".concat(EVENT_KEY), + LOAD_DATA_API: "load".concat(EVENT_KEY).concat(DATA_API_KEY) + }; + var ClassName = { + DROPDOWN_ITEM: 'dropdown-item', + DROPDOWN_MENU: 'dropdown-menu', + ACTIVE: 'active' + }; + var Selector = { + DATA_SPY: '[data-spy="scroll"]', + ACTIVE: '.active', + NAV_LIST_GROUP: '.nav, .list-group', + NAV_LINKS: '.nav-link', + NAV_ITEMS: '.nav-item', + LIST_ITEMS: '.list-group-item', + DROPDOWN: '.dropdown', + DROPDOWN_ITEMS: '.dropdown-item', + DROPDOWN_TOGGLE: '.dropdown-toggle' + }; + var OffsetMethod = { + OFFSET: 'offset', + POSITION: 'position' /** * ------------------------------------------------------------------------ - * Constants + * Class Definition * ------------------------------------------------------------------------ */ - var NAME = 'scrollspy'; - var VERSION = '4.0.0'; - var DATA_KEY = 'bs.scrollspy'; - var EVENT_KEY = ".".concat(DATA_KEY); - var DATA_API_KEY = '.data-api'; - var JQUERY_NO_CONFLICT = $.fn[NAME]; - var Default = { - offset: 10, - method: 'auto', - target: '' - }; - var DefaultType = { - offset: 'number', - method: 'string', - target: '(string|element)' - }; - var Event = { - ACTIVATE: "activate".concat(EVENT_KEY), - SCROLL: "scroll".concat(EVENT_KEY), - LOAD_DATA_API: "load".concat(EVENT_KEY).concat(DATA_API_KEY) - }; - var ClassName = { - DROPDOWN_ITEM: 'dropdown-item', - DROPDOWN_MENU: 'dropdown-menu', - ACTIVE: 'active' - }; - var Selector = { - DATA_SPY: '[data-spy="scroll"]', - ACTIVE: '.active', - NAV_LIST_GROUP: '.nav, .list-group', - NAV_LINKS: '.nav-link', - NAV_ITEMS: '.nav-item', - LIST_ITEMS: '.list-group-item', - DROPDOWN: '.dropdown', - DROPDOWN_ITEMS: '.dropdown-item', - DROPDOWN_TOGGLE: '.dropdown-toggle' - }; - var OffsetMethod = { - OFFSET: 'offset', - POSITION: 'position' - /** - * ------------------------------------------------------------------------ - * Class Definition - * ------------------------------------------------------------------------ - */ - }; + }; - var ScrollSpy = function () { - function ScrollSpy(element, config) { - var _this = this; + var ScrollSpy = function () { + function ScrollSpy(element, config) { + var _this = this; - _classCallCheck(this, ScrollSpy); + _classCallCheck(this, ScrollSpy); - this._element = element; - this._scrollElement = element.tagName === 'BODY' ? window : element; - this._config = this._getConfig(config); - this._selector = "".concat(this._config.target, " ").concat(Selector.NAV_LINKS, ",") + "".concat(this._config.target, " ").concat(Selector.LIST_ITEMS, ",") + "".concat(this._config.target, " ").concat(Selector.DROPDOWN_ITEMS); + this._element = element; + this._scrollElement = element.tagName === 'BODY' ? window : element; + this._config = this._getConfig(config); + this._selector = "".concat(this._config.target, " ").concat(Selector.NAV_LINKS, ",") + "".concat(this._config.target, " ").concat(Selector.LIST_ITEMS, ",") + "".concat(this._config.target, " ").concat(Selector.DROPDOWN_ITEMS); + this._offsets = []; + this._targets = []; + this._activeTarget = null; + this._scrollHeight = 0; + (0, _jquery2.default)(this._scrollElement).on(Event.SCROLL, function (event) { + return _this._process(event); + }); + this.refresh(); + + this._process(); + } // Getters + + + _createClass(ScrollSpy, [{ + key: "refresh", + value: function refresh() { + var _this2 = this; + + var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; + var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; + var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; this._offsets = []; this._targets = []; - this._activeTarget = null; - this._scrollHeight = 0; - $(this._scrollElement).on(Event.SCROLL, function (event) { - return _this._process(event); + this._scrollHeight = this._getScrollHeight(); + var targets = [].slice.call(document.querySelectorAll(this._selector)); + targets.map(function (element) { + var target; + + var targetSelector = _util2.default.getSelectorFromElement(element); + + if (targetSelector) { + target = document.querySelector(targetSelector); + } + + if (target) { + var targetBCR = target.getBoundingClientRect(); + + if (targetBCR.width || targetBCR.height) { + // TODO (fat): remove sketch reliance on jQuery position/offset + return [(0, _jquery2.default)(target)[offsetMethod]().top + offsetBase, targetSelector]; + } + } + + return null; + }).filter(function (item) { + return item; + }).sort(function (a, b) { + return a[0] - b[0]; + }).forEach(function (item) { + _this2._offsets.push(item[0]); + + _this2._targets.push(item[1]); }); - this.refresh(); + } + }, { + key: "dispose", + value: function dispose() { + _jquery2.default.removeData(this._element, DATA_KEY); - this._process(); - } // Getters + (0, _jquery2.default)(this._scrollElement).off(EVENT_KEY); + this._element = null; + this._scrollElement = null; + this._config = null; + this._selector = null; + this._offsets = null; + this._targets = null; + this._activeTarget = null; + this._scrollHeight = null; + } + }, { + key: "_getConfig", + value: function _getConfig(config) { + config = _objectSpread({}, Default, _typeof(config) === 'object' && config ? config : {}); + if (typeof config.target !== 'string') { + var id = (0, _jquery2.default)(config.target).attr('id'); - _createClass(ScrollSpy, [{ - key: "refresh", - value: function refresh() { - var _this2 = this; + if (!id) { + id = _util2.default.getUID(NAME); + (0, _jquery2.default)(config.target).attr('id', id); + } - var autoMethod = this._scrollElement === this._scrollElement.window ? OffsetMethod.OFFSET : OffsetMethod.POSITION; - var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; - var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; - this._offsets = []; - this._targets = []; - this._scrollHeight = this._getScrollHeight(); - var targets = $.makeArray($(this._selector)); - targets.map(function (element) { - var target; - - var targetSelector = _util2.default.getSelectorFromElement(element); - - if (targetSelector) { - target = $(targetSelector)[0]; - } - - if (target) { - var targetBCR = target.getBoundingClientRect(); - - if (targetBCR.width || targetBCR.height) { - // TODO (fat): remove sketch reliance on jQuery position/offset - return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; - } - } - - return null; - }).filter(function (item) { - return item; - }).sort(function (a, b) { - return a[0] - b[0]; - }).forEach(function (item) { - _this2._offsets.push(item[0]); - - _this2._targets.push(item[1]); - }); + config.target = "#".concat(id); } - }, { - key: "dispose", - value: function dispose() { - $.removeData(this._element, DATA_KEY); - $(this._scrollElement).off(EVENT_KEY); - this._element = null; - this._scrollElement = null; - this._config = null; - this._selector = null; - this._offsets = null; - this._targets = null; + + _util2.default.typeCheckConfig(NAME, config, DefaultType); + + return config; + } + }, { + key: "_getScrollTop", + value: function _getScrollTop() { + return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; + } + }, { + key: "_getScrollHeight", + value: function _getScrollHeight() { + return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); + } + }, { + key: "_getOffsetHeight", + value: function _getOffsetHeight() { + return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; + } + }, { + key: "_process", + value: function _process() { + var scrollTop = this._getScrollTop() + this._config.offset; + + var scrollHeight = this._getScrollHeight(); + + var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); + + if (this._scrollHeight !== scrollHeight) { + this.refresh(); + } + + if (scrollTop >= maxScroll) { + var target = this._targets[this._targets.length - 1]; + + if (this._activeTarget !== target) { + this._activate(target); + } + + return; + } + + if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { this._activeTarget = null; - this._scrollHeight = null; - } - }, { - key: "_getConfig", - value: function _getConfig(config) { - config = _extends({}, Default, config); - - if (typeof config.target !== 'string') { - var id = $(config.target).attr('id'); - - if (!id) { - id = _util2.default.getUID(NAME); - $(config.target).attr('id', id); - } - - config.target = "#".concat(id); - } - - _util2.default.typeCheckConfig(NAME, config, DefaultType); - - return config; - } - }, { - key: "_getScrollTop", - value: function _getScrollTop() { - return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; - } - }, { - key: "_getScrollHeight", - value: function _getScrollHeight() { - return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); - } - }, { - key: "_getOffsetHeight", - value: function _getOffsetHeight() { - return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height; - } - }, { - key: "_process", - value: function _process() { - var scrollTop = this._getScrollTop() + this._config.offset; - - var scrollHeight = this._getScrollHeight(); - - var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); - - if (this._scrollHeight !== scrollHeight) { - this.refresh(); - } - - if (scrollTop >= maxScroll) { - var target = this._targets[this._targets.length - 1]; - - if (this._activeTarget !== target) { - this._activate(target); - } - - return; - } - - if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { - this._activeTarget = null; - - this._clear(); - - return; - } - - for (var i = this._offsets.length; i--;) { - var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - - if (isActiveTarget) { - this._activate(this._targets[i]); - } - } - } - }, { - key: "_activate", - value: function _activate(target) { - this._activeTarget = target; this._clear(); - var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style + return; + } + var offsetLength = this._offsets.length; - queries = queries.map(function (selector) { - return "".concat(selector, "[data-target=\"").concat(target, "\"],") + "".concat(selector, "[href=\"").concat(target, "\"]"); - }); - var $link = $(queries.join(',')); + for (var i = offsetLength; i--;) { + var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1]); - if ($link.hasClass(ClassName.DROPDOWN_ITEM)) { - $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE); - $link.addClass(ClassName.ACTIVE); - } else { - // Set triggered link as active - $link.addClass(ClassName.ACTIVE); // Set triggered links parents as active - // With both