dist
This commit is contained in:
parent
136c49a13f
commit
f5ad6e3987
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -161,6 +161,7 @@ pre {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
-ms-overflow-style: scrollbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
figure {
|
figure {
|
||||||
|
@ -210,6 +211,10 @@ label {
|
||||||
margin-bottom: .5rem;
|
margin-bottom: .5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
button:focus {
|
button:focus {
|
||||||
outline: 1px dotted;
|
outline: 1px dotted;
|
||||||
outline: 5px auto -webkit-focus-ring-color;
|
outline: 5px auto -webkit-focus-ring-color;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,2 +1,2 @@
|
||||||
*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
|
*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}[role=button],a,area,button,input:not([type=range]),label,select,summary,textarea{-ms-touch-action:manipulation;touch-action:manipulation}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#868e96;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item}template{display:none}[hidden]{display:none!important}
|
||||||
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
|
File diff suppressed because one or more lines are too long
|
@ -225,6 +225,7 @@ pre {
|
||||||
margin-top: 0;
|
margin-top: 0;
|
||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
overflow: auto;
|
overflow: auto;
|
||||||
|
-ms-overflow-style: scrollbar;
|
||||||
}
|
}
|
||||||
|
|
||||||
figure {
|
figure {
|
||||||
|
@ -274,6 +275,10 @@ label {
|
||||||
margin-bottom: .5rem;
|
margin-bottom: .5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
button {
|
||||||
|
border-radius: 0;
|
||||||
|
}
|
||||||
|
|
||||||
button:focus {
|
button:focus {
|
||||||
outline: 1px dotted;
|
outline: 1px dotted;
|
||||||
outline: 5px auto -webkit-focus-ring-color;
|
outline: 5px auto -webkit-focus-ring-color;
|
||||||
|
@ -2850,10 +2855,6 @@ tbody.collapse.show {
|
||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
.show > a {
|
|
||||||
outline: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dropdown-menu.show {
|
.dropdown-menu.show {
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
|
@ -3001,12 +3002,12 @@ tbody.collapse.show {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group-vertical:first-child:not(:last-child) {
|
.btn-group-vertical > .btn:first-child:not(:last-child) {
|
||||||
border-bottom-right-radius: 0;
|
border-bottom-right-radius: 0;
|
||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
.btn-group-vertical:last-child:not(:first-child) {
|
.btn-group-vertical > .btn:last-child:not(:first-child) {
|
||||||
border-top-left-radius: 0;
|
border-top-left-radius: 0;
|
||||||
border-top-right-radius: 0;
|
border-top-right-radius: 0;
|
||||||
}
|
}
|
||||||
|
@ -3569,10 +3570,8 @@ tbody.collapse.show {
|
||||||
|
|
||||||
@media (min-width: 576px) {
|
@media (min-width: 576px) {
|
||||||
.navbar-expand-sm {
|
.navbar-expand-sm {
|
||||||
-ms-flex-direction: row;
|
-ms-flex-flow: row nowrap;
|
||||||
flex-direction: row;
|
flex-flow: row nowrap;
|
||||||
-ms-flex-wrap: nowrap;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
-ms-flex-pack: start;
|
-ms-flex-pack: start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -3617,10 +3616,8 @@ tbody.collapse.show {
|
||||||
|
|
||||||
@media (min-width: 768px) {
|
@media (min-width: 768px) {
|
||||||
.navbar-expand-md {
|
.navbar-expand-md {
|
||||||
-ms-flex-direction: row;
|
-ms-flex-flow: row nowrap;
|
||||||
flex-direction: row;
|
flex-flow: row nowrap;
|
||||||
-ms-flex-wrap: nowrap;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
-ms-flex-pack: start;
|
-ms-flex-pack: start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -3665,10 +3662,8 @@ tbody.collapse.show {
|
||||||
|
|
||||||
@media (min-width: 992px) {
|
@media (min-width: 992px) {
|
||||||
.navbar-expand-lg {
|
.navbar-expand-lg {
|
||||||
-ms-flex-direction: row;
|
-ms-flex-flow: row nowrap;
|
||||||
flex-direction: row;
|
flex-flow: row nowrap;
|
||||||
-ms-flex-wrap: nowrap;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
-ms-flex-pack: start;
|
-ms-flex-pack: start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -3713,10 +3708,8 @@ tbody.collapse.show {
|
||||||
|
|
||||||
@media (min-width: 1200px) {
|
@media (min-width: 1200px) {
|
||||||
.navbar-expand-xl {
|
.navbar-expand-xl {
|
||||||
-ms-flex-direction: row;
|
-ms-flex-flow: row nowrap;
|
||||||
flex-direction: row;
|
flex-flow: row nowrap;
|
||||||
-ms-flex-wrap: nowrap;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
-ms-flex-pack: start;
|
-ms-flex-pack: start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -3752,10 +3745,8 @@ tbody.collapse.show {
|
||||||
}
|
}
|
||||||
|
|
||||||
.navbar-expand {
|
.navbar-expand {
|
||||||
-ms-flex-direction: row;
|
-ms-flex-flow: row nowrap;
|
||||||
flex-direction: row;
|
flex-flow: row nowrap;
|
||||||
-ms-flex-wrap: nowrap;
|
|
||||||
flex-wrap: nowrap;
|
|
||||||
-ms-flex-pack: start;
|
-ms-flex-pack: start;
|
||||||
justify-content: flex-start;
|
justify-content: flex-start;
|
||||||
}
|
}
|
||||||
|
@ -3948,6 +3939,10 @@ tbody.collapse.show {
|
||||||
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
|
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.card-header + .list-group .list-group-item:first-child {
|
||||||
|
border-top: 0;
|
||||||
|
}
|
||||||
|
|
||||||
.card-footer {
|
.card-footer {
|
||||||
padding: 0.75rem 1.25rem;
|
padding: 0.75rem 1.25rem;
|
||||||
background-color: rgba(0, 0, 0, 0.03);
|
background-color: rgba(0, 0, 0, 0.03);
|
||||||
|
@ -4072,13 +4067,16 @@ tbody.collapse.show {
|
||||||
.card-group .card:last-child .card-img-bottom {
|
.card-group .card:last-child .card-img-bottom {
|
||||||
border-bottom-left-radius: 0;
|
border-bottom-left-radius: 0;
|
||||||
}
|
}
|
||||||
.card-group .card:not(:first-child):not(:last-child) {
|
.card-group .card:not(:first-child):not(:last-child):not(:only-child) {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
.card-group .card:not(:first-child):not(:last-child) .card-img-top,
|
.card-group .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,
|
||||||
.card-group .card:not(:first-child):not(:last-child) .card-img-bottom {
|
.card-group .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom {
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
}
|
}
|
||||||
|
.card-group .card:only-child {
|
||||||
|
border-radius: 0.25rem;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.card-columns .card {
|
.card-columns .card {
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
1249
dist/js/bootstrap.js
1249
dist/js/bootstrap.js
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,8 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -10,38 +8,31 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Alert = function () {
|
var Alert = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'alert';
|
var NAME = 'alert';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.alert';
|
var DATA_KEY = 'bs.alert';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var TRANSITION_DURATION = 150;
|
var TRANSITION_DURATION = 150;
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DISMISS: '[data-dismiss="alert"]'
|
DISMISS: '[data-dismiss="alert"]'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
CLOSE: 'close' + EVENT_KEY,
|
CLOSE: "close" + EVENT_KEY,
|
||||||
CLOSED: 'closed' + EVENT_KEY,
|
CLOSED: "closed" + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
ALERT: 'alert',
|
ALERT: 'alert',
|
||||||
FADE: 'fade',
|
FADE: 'fade',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -49,120 +40,108 @@ var Alert = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Alert = function () {
|
|
||||||
|
var Alert =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Alert(element) {
|
function Alert(element) {
|
||||||
_classCallCheck(this, Alert);
|
|
||||||
|
|
||||||
this._element = element;
|
this._element = element;
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Alert, [{
|
|
||||||
key: 'close',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Alert.prototype;
|
||||||
|
|
||||||
value: function close(element) {
|
// public
|
||||||
element = element || this._element;
|
_proto.close = function close(element) {
|
||||||
|
element = element || this._element;
|
||||||
|
|
||||||
var rootElement = this._getRootElement(element);
|
var rootElement = this._getRootElement(element);
|
||||||
var customEvent = this._triggerCloseEvent(rootElement);
|
|
||||||
|
|
||||||
if (customEvent.isDefaultPrevented()) {
|
var customEvent = this._triggerCloseEvent(rootElement);
|
||||||
return;
|
|
||||||
|
if (customEvent.isDefaultPrevented()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._removeElement(rootElement);
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.dispose = function dispose() {
|
||||||
|
$.removeData(this._element, DATA_KEY);
|
||||||
|
this._element = null;
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
|
_proto._getRootElement = function _getRootElement(element) {
|
||||||
|
var selector = Util.getSelectorFromElement(element);
|
||||||
|
var parent = false;
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
parent = $(selector)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!parent) {
|
||||||
|
parent = $(element).closest("." + ClassName.ALERT)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._triggerCloseEvent = function _triggerCloseEvent(element) {
|
||||||
|
var closeEvent = $.Event(Event.CLOSE);
|
||||||
|
$(element).trigger(closeEvent);
|
||||||
|
return closeEvent;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._removeElement = function _removeElement(element) {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
|
$(element).removeClass(ClassName.SHOW);
|
||||||
|
|
||||||
|
if (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
|
||||||
|
this._destroyElement(element);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(element).one(Util.TRANSITION_END, function (event) {
|
||||||
|
return _this._destroyElement(element, event);
|
||||||
|
}).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._destroyElement = function _destroyElement(element) {
|
||||||
|
$(element).detach().trigger(Event.CLOSED).remove();
|
||||||
|
}; // static
|
||||||
|
|
||||||
|
|
||||||
|
Alert._jQueryInterface = 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
this._removeElement(rootElement);
|
if (config === 'close') {
|
||||||
}
|
data[config](this);
|
||||||
}, {
|
}
|
||||||
key: 'dispose',
|
});
|
||||||
value: function dispose() {
|
};
|
||||||
$.removeData(this._element, DATA_KEY);
|
|
||||||
this._element = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
Alert._handleDismiss = function _handleDismiss(alertInstance) {
|
||||||
|
return function (event) {
|
||||||
}, {
|
if (event) {
|
||||||
key: '_getRootElement',
|
event.preventDefault();
|
||||||
value: function _getRootElement(element) {
|
|
||||||
var selector = Util.getSelectorFromElement(element);
|
|
||||||
var parent = false;
|
|
||||||
|
|
||||||
if (selector) {
|
|
||||||
parent = $(selector)[0];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!parent) {
|
alertInstance.close(this);
|
||||||
parent = $(element).closest('.' + ClassName.ALERT)[0];
|
};
|
||||||
}
|
};
|
||||||
|
|
||||||
return parent;
|
_createClass(Alert, null, [{
|
||||||
}
|
key: "VERSION",
|
||||||
}, {
|
|
||||||
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 (!Util.supportsTransitionEnd() || !$(element).hasClass(ClassName.FADE)) {
|
|
||||||
this._destroyElement(element);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$(element).one(Util.TRANSITION_END, function (event) {
|
|
||||||
return _this._destroyElement(element, event);
|
|
||||||
}).emulateTransitionEnd(TRANSITION_DURATION);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: '_destroyElement',
|
|
||||||
value: function _destroyElement(element) {
|
|
||||||
$(element).detach().trigger(Event.CLOSED).remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
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() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
|
@ -170,15 +149,14 @@ var Alert = function () {
|
||||||
|
|
||||||
return Alert;
|
return Alert;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
|
|
||||||
|
|
||||||
|
$(document).on(Event.CLICK_DATA_API, Selector.DISMISS, Alert._handleDismiss(new Alert()));
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -187,6 +165,7 @@ var Alert = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Alert._jQueryInterface;
|
$.fn[NAME] = Alert._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Alert;
|
$.fn[NAME].Constructor = Alert;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Alert._jQueryInterface;
|
return Alert._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,8 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -10,28 +8,23 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Button = function () {
|
var Button = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'button';
|
var NAME = 'button';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.button';
|
var DATA_KEY = 'bs.button';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
ACTIVE: 'active',
|
ACTIVE: 'active',
|
||||||
BUTTON: 'btn',
|
BUTTON: 'btn',
|
||||||
FOCUS: 'focus'
|
FOCUS: 'focus'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
|
DATA_TOGGLE_CARROT: '[data-toggle^="button"]',
|
||||||
DATA_TOGGLE: '[data-toggle="buttons"]',
|
DATA_TOGGLE: '[data-toggle="buttons"]',
|
||||||
|
@ -39,11 +32,9 @@ var Button = function () {
|
||||||
ACTIVE: '.active',
|
ACTIVE: '.active',
|
||||||
BUTTON: '.btn'
|
BUTTON: '.btn'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
|
||||||
FOCUS_BLUR_DATA_API: 'focus' + EVENT_KEY + DATA_API_KEY + ' ' + ('blur' + EVENT_KEY + DATA_API_KEY)
|
FOCUS_BLUR_DATA_API: "focus" + EVENT_KEY + DATA_API_KEY + " " + ("blur" + EVENT_KEY + DATA_API_KEY)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -51,90 +42,85 @@ var Button = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Button = function () {
|
|
||||||
|
var Button =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Button(element) {
|
function Button(element) {
|
||||||
_classCallCheck(this, Button);
|
|
||||||
|
|
||||||
this._element = element;
|
this._element = element;
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Button, [{
|
|
||||||
key: 'toggle',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Button.prototype;
|
||||||
|
|
||||||
value: function toggle() {
|
// public
|
||||||
var triggerChangeEvent = true;
|
_proto.toggle = function toggle() {
|
||||||
var addAriaPressed = true;
|
var triggerChangeEvent = true;
|
||||||
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
var addAriaPressed = true;
|
||||||
|
var rootElement = $(this._element).closest(Selector.DATA_TOGGLE)[0];
|
||||||
|
|
||||||
if (rootElement) {
|
if (rootElement) {
|
||||||
var input = $(this._element).find(Selector.INPUT)[0];
|
var input = $(this._element).find(Selector.INPUT)[0];
|
||||||
|
|
||||||
if (input) {
|
if (input) {
|
||||||
if (input.type === 'radio') {
|
if (input.type === 'radio') {
|
||||||
if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
|
if (input.checked && $(this._element).hasClass(ClassName.ACTIVE)) {
|
||||||
triggerChangeEvent = false;
|
triggerChangeEvent = false;
|
||||||
} else {
|
} else {
|
||||||
var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
|
var activeElement = $(rootElement).find(Selector.ACTIVE)[0];
|
||||||
|
|
||||||
if (activeElement) {
|
if (activeElement) {
|
||||||
$(activeElement).removeClass(ClassName.ACTIVE);
|
$(activeElement).removeClass(ClassName.ACTIVE);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (triggerChangeEvent) {
|
if (triggerChangeEvent) {
|
||||||
if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
|
if (input.hasAttribute('disabled') || rootElement.hasAttribute('disabled') || input.classList.contains('disabled') || rootElement.classList.contains('disabled')) {
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
|
|
||||||
$(input).trigger('change');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input.focus();
|
input.checked = !$(this._element).hasClass(ClassName.ACTIVE);
|
||||||
addAriaPressed = false;
|
$(input).trigger('change');
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
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);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config === 'toggle') {
|
input.focus();
|
||||||
data[config]();
|
addAriaPressed = false;
|
||||||
}
|
}
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
if (addAriaPressed) {
|
||||||
|
this._element.setAttribute('aria-pressed', !$(this._element).hasClass(ClassName.ACTIVE));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (triggerChangeEvent) {
|
||||||
|
$(this._element).toggleClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.dispose = function dispose() {
|
||||||
|
$.removeData(this._element, DATA_KEY);
|
||||||
|
this._element = null;
|
||||||
|
}; // static
|
||||||
|
|
||||||
|
|
||||||
|
Button._jQueryInterface = function _jQueryInterface(config) {
|
||||||
|
return this.each(function () {
|
||||||
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
data = new Button(this);
|
||||||
|
$(this).data(DATA_KEY, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config === 'toggle') {
|
||||||
|
data[config]();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_createClass(Button, null, [{
|
||||||
|
key: "VERSION",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
|
@ -142,16 +128,15 @@ var Button = function () {
|
||||||
|
|
||||||
return Button;
|
return Button;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
|
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
var button = event.target;
|
var button = event.target;
|
||||||
|
|
||||||
if (!$(button).hasClass(ClassName.BUTTON)) {
|
if (!$(button).hasClass(ClassName.BUTTON)) {
|
||||||
|
@ -163,7 +148,6 @@ var Button = function () {
|
||||||
var button = $(event.target).closest(Selector.BUTTON)[0];
|
var button = $(event.target).closest(Selector.BUTTON)[0];
|
||||||
$(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
|
$(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type));
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -172,6 +156,7 @@ var Button = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Button._jQueryInterface;
|
$.fn[NAME] = Button._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Button;
|
$.fn[NAME].Constructor = Button;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Button._jQueryInterface;
|
return Button._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,10 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -12,24 +8,23 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Carousel = function () {
|
var Carousel = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'carousel';
|
var NAME = 'carousel';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.carousel';
|
var DATA_KEY = 'bs.carousel';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var TRANSITION_DURATION = 600;
|
var TRANSITION_DURATION = 600;
|
||||||
var ARROW_LEFT_KEYCODE = 37; // KeyboardEvent.which value for left arrow key
|
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 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 TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch
|
||||||
|
|
||||||
var Default = {
|
var Default = {
|
||||||
|
@ -39,7 +34,6 @@ var Carousel = function () {
|
||||||
pause: 'hover',
|
pause: 'hover',
|
||||||
wrap: true
|
wrap: true
|
||||||
};
|
};
|
||||||
|
|
||||||
var DefaultType = {
|
var DefaultType = {
|
||||||
interval: '(number|boolean)',
|
interval: '(number|boolean)',
|
||||||
keyboard: 'boolean',
|
keyboard: 'boolean',
|
||||||
|
@ -47,25 +41,22 @@ var Carousel = function () {
|
||||||
pause: '(string|boolean)',
|
pause: '(string|boolean)',
|
||||||
wrap: 'boolean'
|
wrap: 'boolean'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Direction = {
|
var Direction = {
|
||||||
NEXT: 'next',
|
NEXT: 'next',
|
||||||
PREV: 'prev',
|
PREV: 'prev',
|
||||||
LEFT: 'left',
|
LEFT: 'left',
|
||||||
RIGHT: 'right'
|
RIGHT: 'right'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
SLIDE: 'slide' + EVENT_KEY,
|
SLIDE: "slide" + EVENT_KEY,
|
||||||
SLID: 'slid' + EVENT_KEY,
|
SLID: "slid" + EVENT_KEY,
|
||||||
KEYDOWN: 'keydown' + EVENT_KEY,
|
KEYDOWN: "keydown" + EVENT_KEY,
|
||||||
MOUSEENTER: 'mouseenter' + EVENT_KEY,
|
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
||||||
MOUSELEAVE: 'mouseleave' + EVENT_KEY,
|
MOUSELEAVE: "mouseleave" + EVENT_KEY,
|
||||||
TOUCHEND: 'touchend' + EVENT_KEY,
|
TOUCHEND: "touchend" + EVENT_KEY,
|
||||||
LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY,
|
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
CAROUSEL: 'carousel',
|
CAROUSEL: 'carousel',
|
||||||
ACTIVE: 'active',
|
ACTIVE: 'active',
|
||||||
|
@ -76,7 +67,6 @@ var Carousel = function () {
|
||||||
PREV: 'carousel-item-prev',
|
PREV: 'carousel-item-prev',
|
||||||
ITEM: 'carousel-item'
|
ITEM: 'carousel-item'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
ACTIVE: '.active',
|
ACTIVE: '.active',
|
||||||
ACTIVE_ITEM: '.active.carousel-item',
|
ACTIVE_ITEM: '.active.carousel-item',
|
||||||
|
@ -85,7 +75,6 @@ var Carousel = function () {
|
||||||
INDICATORS: '.carousel-indicators',
|
INDICATORS: '.carousel-indicators',
|
||||||
DATA_SLIDE: '[data-slide], [data-slide-to]',
|
DATA_SLIDE: '[data-slide], [data-slide-to]',
|
||||||
DATA_RIDE: '[data-ride="carousel"]'
|
DATA_RIDE: '[data-ride="carousel"]'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -93,409 +82,387 @@ var Carousel = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Carousel = function () {
|
|
||||||
function Carousel(element, config) {
|
|
||||||
_classCallCheck(this, Carousel);
|
|
||||||
|
|
||||||
|
var Carousel =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
|
function Carousel(element, config) {
|
||||||
this._items = null;
|
this._items = null;
|
||||||
this._interval = null;
|
this._interval = null;
|
||||||
this._activeElement = null;
|
this._activeElement = null;
|
||||||
|
|
||||||
this._isPaused = false;
|
this._isPaused = false;
|
||||||
this._isSliding = false;
|
this._isSliding = false;
|
||||||
|
|
||||||
this.touchTimeout = null;
|
this.touchTimeout = null;
|
||||||
|
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._element = $(element)[0];
|
this._element = $(element)[0];
|
||||||
this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];
|
this._indicatorsElement = $(this._element).find(Selector.INDICATORS)[0];
|
||||||
|
|
||||||
this._addEventListeners();
|
this._addEventListeners();
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Carousel, [{
|
|
||||||
key: 'next',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Carousel.prototype;
|
||||||
|
|
||||||
value: function next() {
|
// public
|
||||||
if (!this._isSliding) {
|
_proto.next = function next() {
|
||||||
this._slide(Direction.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 && $(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] && Util.supportsTransitionEnd()) {
|
_proto.nextWhenVisible = function nextWhenVisible() {
|
||||||
Util.triggerTransitionEnd(this._element);
|
// Don't call next when the page isn't visible
|
||||||
this.cycle(true);
|
// or the carousel or its parent isn't visible
|
||||||
}
|
if (!document.hidden && $(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden') {
|
||||||
|
this.next();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.prev = function prev() {
|
||||||
|
if (!this._isSliding) {
|
||||||
|
this._slide(Direction.PREV);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.pause = function pause(event) {
|
||||||
|
if (!event) {
|
||||||
|
this._isPaused = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($(this._element).find(Selector.NEXT_PREV)[0] && Util.supportsTransitionEnd()) {
|
||||||
|
Util.triggerTransitionEnd(this._element);
|
||||||
|
this.cycle(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
clearInterval(this._interval);
|
||||||
|
this._interval = null;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.cycle = function cycle(event) {
|
||||||
|
if (!event) {
|
||||||
|
this._isPaused = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._interval) {
|
||||||
clearInterval(this._interval);
|
clearInterval(this._interval);
|
||||||
this._interval = null;
|
this._interval = null;
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'cycle',
|
|
||||||
value: function cycle(event) {
|
|
||||||
if (!event) {
|
|
||||||
this._isPaused = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._interval) {
|
if (this._config.interval && !this._isPaused) {
|
||||||
clearInterval(this._interval);
|
this._interval = setInterval((document.visibilityState ? this.nextWhenVisible : this.next).bind(this), this._config.interval);
|
||||||
this._interval = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
|
|
||||||
this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
|
_proto.to = function to(index) {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
var activeIndex = this._getItemIndex(this._activeElement);
|
this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0];
|
||||||
|
|
||||||
if (index > this._items.length - 1 || index < 0) {
|
var activeIndex = this._getItemIndex(this._activeElement);
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._isSliding) {
|
if (index > this._items.length - 1 || index < 0) {
|
||||||
$(this._element).one(Event.SLID, function () {
|
return;
|
||||||
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]);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private
|
if (this._isSliding) {
|
||||||
|
$(this._element).one(Event.SLID, function () {
|
||||||
}, {
|
return _this.to(index);
|
||||||
key: '_getConfig',
|
});
|
||||||
value: function _getConfig(config) {
|
return;
|
||||||
config = $.extend({}, Default, config);
|
|
||||||
Util.typeCheckConfig(NAME, config, DefaultType);
|
|
||||||
return config;
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: '_addEventListeners',
|
|
||||||
value: function _addEventListeners() {
|
|
||||||
var _this2 = this;
|
|
||||||
|
|
||||||
if (this._config.keyboard) {
|
if (activeIndex === index) {
|
||||||
$(this._element).on(Event.KEYDOWN, function (event) {
|
this.pause();
|
||||||
return _this2._keydown(event);
|
this.cycle();
|
||||||
});
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
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) {
|
var direction = index > activeIndex ? Direction.NEXT : Direction.PREV;
|
||||||
case ARROW_LEFT_KEYCODE:
|
|
||||||
event.preventDefault();
|
this._slide(direction, this._items[index]);
|
||||||
this.prev();
|
};
|
||||||
break;
|
|
||||||
case ARROW_RIGHT_KEYCODE:
|
_proto.dispose = function dispose() {
|
||||||
event.preventDefault();
|
$(this._element).off(EVENT_KEY);
|
||||||
this.next();
|
$.removeData(this._element, DATA_KEY);
|
||||||
break;
|
this._items = null;
|
||||||
default:
|
this._config = null;
|
||||||
return;
|
this._element = null;
|
||||||
}
|
this._interval = null;
|
||||||
|
this._isPaused = null;
|
||||||
|
this._isSliding = null;
|
||||||
|
this._activeElement = null;
|
||||||
|
this._indicatorsElement = null;
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
|
_proto._getConfig = function _getConfig(config) {
|
||||||
|
config = $.extend({}, Default, config);
|
||||||
|
Util.typeCheckConfig(NAME, config, DefaultType);
|
||||||
|
return config;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._addEventListeners = function _addEventListeners() {
|
||||||
|
var _this2 = this;
|
||||||
|
|
||||||
|
if (this._config.keyboard) {
|
||||||
|
$(this._element).on(Event.KEYDOWN, function (event) {
|
||||||
|
return _this2._keydown(event);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
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) {
|
if (this._config.pause === 'hover') {
|
||||||
return activeElement;
|
$(this._element).on(Event.MOUSEENTER, function (event) {
|
||||||
}
|
return _this2.pause(event);
|
||||||
|
}).on(Event.MOUSELEAVE, function (event) {
|
||||||
var delta = direction === Direction.PREV ? -1 : 1;
|
return _this2.cycle(event);
|
||||||
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
|
|
||||||
});
|
});
|
||||||
|
|
||||||
$(this._element).trigger(slideEvent);
|
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();
|
||||||
|
|
||||||
return slideEvent;
|
if (_this2.touchTimeout) {
|
||||||
}
|
clearTimeout(_this2.touchTimeout);
|
||||||
}, {
|
|
||||||
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 (nextIndicator) {
|
|
||||||
$(nextIndicator).addClass(ClassName.ACTIVE);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
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 = void 0;
|
|
||||||
var orderClassName = void 0;
|
|
||||||
var eventDirectionName = void 0;
|
|
||||||
|
|
||||||
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 && $(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 = $.Event(Event.SLID, {
|
|
||||||
relatedTarget: nextElement,
|
|
||||||
direction: eventDirectionName,
|
|
||||||
from: activeElementIndex,
|
|
||||||
to: nextElementIndex
|
|
||||||
});
|
|
||||||
|
|
||||||
if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
|
|
||||||
|
|
||||||
$(nextElement).addClass(orderClassName);
|
|
||||||
|
|
||||||
Util.reflow(nextElement);
|
|
||||||
|
|
||||||
$(activeElement).addClass(directionalClassName);
|
|
||||||
$(nextElement).addClass(directionalClassName);
|
|
||||||
|
|
||||||
$(activeElement).one(Util.TRANSITION_END, function () {
|
|
||||||
$(nextElement).removeClass(directionalClassName + ' ' + orderClassName).addClass(ClassName.ACTIVE);
|
|
||||||
|
|
||||||
$(activeElement).removeClass(ClassName.ACTIVE + ' ' + orderClassName + ' ' + directionalClassName);
|
|
||||||
|
|
||||||
_this3._isSliding = false;
|
|
||||||
|
|
||||||
setTimeout(function () {
|
|
||||||
return $(_this3._element).trigger(slidEvent);
|
|
||||||
}, 0);
|
|
||||||
}).emulateTransitionEnd(TRANSITION_DURATION);
|
|
||||||
} else {
|
|
||||||
$(activeElement).removeClass(ClassName.ACTIVE);
|
|
||||||
$(nextElement).addClass(ClassName.ACTIVE);
|
|
||||||
|
|
||||||
this._isSliding = false;
|
|
||||||
$(this._element).trigger(slidEvent);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isCycling) {
|
|
||||||
this.cycle();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
value: function _jQueryInterface(config) {
|
|
||||||
return this.each(function () {
|
|
||||||
var data = $(this).data(DATA_KEY);
|
|
||||||
var _config = $.extend({}, Default, $(this).data());
|
|
||||||
|
|
||||||
if ((typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object') {
|
|
||||||
$.extend(_config, config);
|
|
||||||
}
|
|
||||||
|
|
||||||
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 Error('No method named "' + action + '"');
|
|
||||||
}
|
}
|
||||||
data[action]();
|
|
||||||
} else if (_config.interval) {
|
_this2.touchTimeout = setTimeout(function (event) {
|
||||||
data.pause();
|
return _this2.cycle(event);
|
||||||
data.cycle();
|
}, TOUCHEVENT_COMPAT_WAIT + _this2._config.interval);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._keydown = 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:
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getItemIndex = function _getItemIndex(element) {
|
||||||
|
this._items = $.makeArray($(element).parent().find(Selector.ITEM));
|
||||||
|
return this._items.indexOf(element);
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getItemByDirection = 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];
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._triggerSlideEvent = 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
|
||||||
|
});
|
||||||
|
$(this._element).trigger(slideEvent);
|
||||||
|
return slideEvent;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._setActiveIndicatorElement = function _setActiveIndicatorElement(element) {
|
||||||
|
if (this._indicatorsElement) {
|
||||||
|
$(this._indicatorsElement).find(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
|
||||||
|
|
||||||
|
var nextIndicator = this._indicatorsElement.children[this._getItemIndex(element)];
|
||||||
|
|
||||||
|
if (nextIndicator) {
|
||||||
|
$(nextIndicator).addClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._slide = 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;
|
||||||
|
} else {
|
||||||
|
directionalClassName = ClassName.RIGHT;
|
||||||
|
orderClassName = ClassName.PREV;
|
||||||
|
eventDirectionName = Direction.RIGHT;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nextElement && $(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 = $.Event(Event.SLID, {
|
||||||
|
relatedTarget: nextElement,
|
||||||
|
direction: eventDirectionName,
|
||||||
|
from: activeElementIndex,
|
||||||
|
to: nextElementIndex
|
||||||
|
});
|
||||||
|
|
||||||
|
if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.SLIDE)) {
|
||||||
|
$(nextElement).addClass(orderClassName);
|
||||||
|
Util.reflow(nextElement);
|
||||||
|
$(activeElement).addClass(directionalClassName);
|
||||||
|
$(nextElement).addClass(directionalClassName);
|
||||||
|
$(activeElement).one(Util.TRANSITION_END, function () {
|
||||||
|
$(nextElement).removeClass(directionalClassName + " " + orderClassName).addClass(ClassName.ACTIVE);
|
||||||
|
$(activeElement).removeClass(ClassName.ACTIVE + " " + orderClassName + " " + directionalClassName);
|
||||||
|
_this3._isSliding = false;
|
||||||
|
setTimeout(function () {
|
||||||
|
return $(_this3._element).trigger(slidEvent);
|
||||||
|
}, 0);
|
||||||
|
}).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
|
} else {
|
||||||
|
$(activeElement).removeClass(ClassName.ACTIVE);
|
||||||
|
$(nextElement).addClass(ClassName.ACTIVE);
|
||||||
|
this._isSliding = false;
|
||||||
|
$(this._element).trigger(slidEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isCycling) {
|
||||||
|
this.cycle();
|
||||||
|
}
|
||||||
|
}; // static
|
||||||
|
|
||||||
|
|
||||||
|
Carousel._jQueryInterface = function _jQueryInterface(config) {
|
||||||
|
return this.each(function () {
|
||||||
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
|
var _config = $.extend({}, Default, $(this).data());
|
||||||
|
|
||||||
|
if (typeof config === 'object') {
|
||||||
|
$.extend(_config, config);
|
||||||
|
}
|
||||||
|
|
||||||
|
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 Error("No method named \"" + action + "\"");
|
||||||
}
|
}
|
||||||
});
|
|
||||||
|
data[action]();
|
||||||
|
} else if (_config.interval) {
|
||||||
|
data.pause();
|
||||||
|
data.cycle();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
Carousel._dataApiClickHandler = function _dataApiClickHandler(event) {
|
||||||
|
var selector = Util.getSelectorFromElement(this);
|
||||||
|
|
||||||
|
if (!selector) {
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: '_dataApiClickHandler',
|
|
||||||
value: function _dataApiClickHandler(event) {
|
|
||||||
var selector = Util.getSelectorFromElement(this);
|
|
||||||
|
|
||||||
if (!selector) {
|
var target = $(selector)[0];
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var target = $(selector)[0];
|
if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
|
||||||
|
return;
|
||||||
if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var config = $.extend({}, $(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();
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
var config = $.extend({}, $(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();
|
||||||
|
};
|
||||||
|
|
||||||
|
_createClass(Carousel, null, [{
|
||||||
|
key: "VERSION",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Default',
|
key: "Default",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
|
@ -503,22 +470,21 @@ var Carousel = function () {
|
||||||
|
|
||||||
return Carousel;
|
return Carousel;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
|
|
||||||
|
|
||||||
|
$(document).on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler);
|
||||||
$(window).on(Event.LOAD_DATA_API, function () {
|
$(window).on(Event.LOAD_DATA_API, function () {
|
||||||
$(Selector.DATA_RIDE).each(function () {
|
$(Selector.DATA_RIDE).each(function () {
|
||||||
var $carousel = $(this);
|
var $carousel = $(this);
|
||||||
|
|
||||||
Carousel._jQueryInterface.call($carousel, $carousel.data());
|
Carousel._jQueryInterface.call($carousel, $carousel.data());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -527,6 +493,7 @@ var Carousel = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Carousel._jQueryInterface;
|
$.fn[NAME] = Carousel._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Carousel;
|
$.fn[NAME].Constructor = Carousel;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Carousel._jQueryInterface;
|
return Carousel._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,10 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -12,57 +8,47 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Collapse = function () {
|
var Collapse = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'collapse';
|
var NAME = 'collapse';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.collapse';
|
var DATA_KEY = 'bs.collapse';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var TRANSITION_DURATION = 600;
|
var TRANSITION_DURATION = 600;
|
||||||
|
|
||||||
var Default = {
|
var Default = {
|
||||||
toggle: true,
|
toggle: true,
|
||||||
parent: ''
|
parent: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
var DefaultType = {
|
var DefaultType = {
|
||||||
toggle: 'boolean',
|
toggle: 'boolean',
|
||||||
parent: 'string'
|
parent: '(string|element)'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
SHOW: 'show' + EVENT_KEY,
|
SHOW: "show" + EVENT_KEY,
|
||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: "shown" + EVENT_KEY,
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: "hide" + EVENT_KEY,
|
||||||
HIDDEN: 'hidden' + EVENT_KEY,
|
HIDDEN: "hidden" + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
SHOW: 'show',
|
SHOW: 'show',
|
||||||
COLLAPSE: 'collapse',
|
COLLAPSE: 'collapse',
|
||||||
COLLAPSING: 'collapsing',
|
COLLAPSING: 'collapsing',
|
||||||
COLLAPSED: 'collapsed'
|
COLLAPSED: 'collapsed'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Dimension = {
|
var Dimension = {
|
||||||
WIDTH: 'width',
|
WIDTH: 'width',
|
||||||
HEIGHT: 'height'
|
HEIGHT: 'height'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
ACTIVES: '.show, .collapsing',
|
ACTIVES: '.show, .collapsing',
|
||||||
DATA_TOGGLE: '[data-toggle="collapse"]'
|
DATA_TOGGLE: '[data-toggle="collapse"]'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -70,18 +56,21 @@ var Collapse = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Collapse = function () {
|
|
||||||
function Collapse(element, config) {
|
|
||||||
_classCallCheck(this, Collapse);
|
|
||||||
|
|
||||||
|
var Collapse =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
|
function Collapse(element, config) {
|
||||||
this._isTransitioning = false;
|
this._isTransitioning = false;
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._triggerArray = $.makeArray($('[data-toggle="collapse"][href="#' + element.id + '"],' + ('[data-toggle="collapse"][data-target="#' + element.id + '"]')));
|
this._triggerArray = $.makeArray($("[data-toggle=\"collapse\"][href=\"#" + element.id + "\"]," + ("[data-toggle=\"collapse\"][data-target=\"#" + element.id + "\"]")));
|
||||||
var tabToggles = $(Selector.DATA_TOGGLE);
|
var tabToggles = $(Selector.DATA_TOGGLE);
|
||||||
|
|
||||||
for (var i = 0; i < tabToggles.length; i++) {
|
for (var i = 0; i < tabToggles.length; i++) {
|
||||||
var elem = tabToggles[i];
|
var elem = tabToggles[i];
|
||||||
var selector = Util.getSelectorFromElement(elem);
|
var selector = Util.getSelectorFromElement(elem);
|
||||||
|
|
||||||
if (selector !== null && $(selector).filter(element).length > 0) {
|
if (selector !== null && $(selector).filter(element).length > 0) {
|
||||||
this._triggerArray.push(elem);
|
this._triggerArray.push(elem);
|
||||||
}
|
}
|
||||||
|
@ -96,247 +85,243 @@ var Collapse = function () {
|
||||||
if (this._config.toggle) {
|
if (this._config.toggle) {
|
||||||
this.toggle();
|
this.toggle();
|
||||||
}
|
}
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Collapse, [{
|
|
||||||
key: 'toggle',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Collapse.prototype;
|
||||||
|
|
||||||
value: function toggle() {
|
// public
|
||||||
if ($(this._element).hasClass(ClassName.SHOW)) {
|
_proto.toggle = function toggle() {
|
||||||
this.hide();
|
if ($(this._element).hasClass(ClassName.SHOW)) {
|
||||||
} else {
|
this.hide();
|
||||||
this.show();
|
} else {
|
||||||
|
this.show();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.show = 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).children().children(Selector.ACTIVES));
|
||||||
|
|
||||||
|
if (!actives.length) {
|
||||||
|
actives = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'show',
|
|
||||||
value: function show() {
|
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
if (this._isTransitioning || $(this._element).hasClass(ClassName.SHOW)) {
|
if (actives) {
|
||||||
|
activesData = $(actives).data(DATA_KEY);
|
||||||
|
|
||||||
|
if (activesData && activesData._isTransitioning) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var actives = void 0;
|
|
||||||
var activesData = void 0;
|
|
||||||
|
|
||||||
if (this._parent) {
|
|
||||||
actives = $.makeArray($(this._parent).children().children(Selector.ACTIVES));
|
|
||||||
if (!actives.length) {
|
|
||||||
actives = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (actives) {
|
|
||||||
activesData = $(actives).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), '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) {
|
|
||||||
$(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 (!Util.supportsTransitionEnd()) {
|
|
||||||
complete();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
|
|
||||||
var scrollSize = 'scroll' + capitalizedDimension;
|
|
||||||
|
|
||||||
$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
|
||||||
|
|
||||||
this._element.style[dimension] = this._element[scrollSize] + 'px';
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'hide',
|
|
||||||
value: function hide() {
|
|
||||||
var _this2 = this;
|
|
||||||
|
|
||||||
if (this._isTransitioning || !$(this._element).hasClass(ClassName.SHOW)) {
|
var startEvent = $.Event(Event.SHOW);
|
||||||
return;
|
$(this._element).trigger(startEvent);
|
||||||
|
|
||||||
|
if (startEvent.isDefaultPrevented()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (actives) {
|
||||||
|
Collapse._jQueryInterface.call($(actives), 'hide');
|
||||||
|
|
||||||
|
if (!activesData) {
|
||||||
|
$(actives).data(DATA_KEY, null);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
var startEvent = $.Event(Event.HIDE);
|
var dimension = this._getDimension();
|
||||||
$(this._element).trigger(startEvent);
|
|
||||||
if (startEvent.isDefaultPrevented()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var dimension = this._getDimension();
|
$(this._element).removeClass(ClassName.COLLAPSE).addClass(ClassName.COLLAPSING);
|
||||||
|
this._element.style[dimension] = 0;
|
||||||
|
|
||||||
this._element.style[dimension] = this._element.getBoundingClientRect()[dimension] + 'px';
|
if (this._triggerArray.length) {
|
||||||
|
$(this._triggerArray).removeClass(ClassName.COLLAPSED).attr('aria-expanded', true);
|
||||||
|
}
|
||||||
|
|
||||||
Util.reflow(this._element);
|
this.setTransitioning(true);
|
||||||
|
|
||||||
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
var complete = function complete() {
|
||||||
|
$(_this._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).addClass(ClassName.SHOW);
|
||||||
|
_this._element.style[dimension] = '';
|
||||||
|
|
||||||
if (this._triggerArray.length) {
|
_this.setTransitioning(false);
|
||||||
for (var i = 0; i < this._triggerArray.length; i++) {
|
|
||||||
var trigger = this._triggerArray[i];
|
$(_this._element).trigger(Event.SHOWN);
|
||||||
var selector = Util.getSelectorFromElement(trigger);
|
};
|
||||||
if (selector !== null) {
|
|
||||||
var $elem = $(selector);
|
if (!Util.supportsTransitionEnd()) {
|
||||||
if (!$elem.hasClass(ClassName.SHOW)) {
|
complete();
|
||||||
$(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);
|
||||||
|
var scrollSize = "scroll" + capitalizedDimension;
|
||||||
|
$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
|
this._element.style[dimension] = this._element[scrollSize] + "px";
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.hide = 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] = this._element.getBoundingClientRect()[dimension] + "px";
|
||||||
|
Util.reflow(this._element);
|
||||||
|
$(this._element).addClass(ClassName.COLLAPSING).removeClass(ClassName.COLLAPSE).removeClass(ClassName.SHOW);
|
||||||
|
|
||||||
|
if (this._triggerArray.length) {
|
||||||
|
for (var i = 0; i < this._triggerArray.length; i++) {
|
||||||
|
var trigger = this._triggerArray[i];
|
||||||
|
var selector = Util.getSelectorFromElement(trigger);
|
||||||
|
|
||||||
|
if (selector !== null) {
|
||||||
|
var $elem = $(selector);
|
||||||
|
|
||||||
|
if (!$elem.hasClass(ClassName.SHOW)) {
|
||||||
|
$(trigger).addClass(ClassName.COLLAPSED).attr('aria-expanded', false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.setTransitioning(true);
|
this.setTransitioning(true);
|
||||||
|
|
||||||
var complete = function complete() {
|
var complete = function complete() {
|
||||||
_this2.setTransitioning(false);
|
_this2.setTransitioning(false);
|
||||||
$(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
|
|
||||||
};
|
|
||||||
|
|
||||||
this._element.style[dimension] = '';
|
$(_this2._element).removeClass(ClassName.COLLAPSING).addClass(ClassName.COLLAPSE).trigger(Event.HIDDEN);
|
||||||
|
};
|
||||||
|
|
||||||
if (!Util.supportsTransitionEnd()) {
|
this._element.style[dimension] = '';
|
||||||
complete();
|
|
||||||
return;
|
if (!Util.supportsTransitionEnd()) {
|
||||||
|
complete();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.setTransitioning = function setTransitioning(isTransitioning) {
|
||||||
|
this._isTransitioning = isTransitioning;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.dispose = function dispose() {
|
||||||
|
$.removeData(this._element, DATA_KEY);
|
||||||
|
this._config = null;
|
||||||
|
this._parent = null;
|
||||||
|
this._element = null;
|
||||||
|
this._triggerArray = null;
|
||||||
|
this._isTransitioning = null;
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
|
_proto._getConfig = function _getConfig(config) {
|
||||||
|
config = $.extend({}, Default, config);
|
||||||
|
config.toggle = Boolean(config.toggle); // coerce string values
|
||||||
|
|
||||||
|
Util.typeCheckConfig(NAME, config, DefaultType);
|
||||||
|
return config;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getDimension = function _getDimension() {
|
||||||
|
var hasWidth = $(this._element).hasClass(Dimension.WIDTH);
|
||||||
|
return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getParent = function _getParent() {
|
||||||
|
var _this3 = this;
|
||||||
|
|
||||||
|
var parent = null;
|
||||||
|
|
||||||
|
if (Util.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 {
|
||||||
$(this._element).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
parent = $(this._config.parent)[0];
|
||||||
}
|
|
||||||
}, {
|
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private
|
var selector = "[data-toggle=\"collapse\"][data-parent=\"" + this._config.parent + "\"]";
|
||||||
|
$(parent).find(selector).each(function (i, element) {
|
||||||
|
_this3._addAriaAndCollapsedClass(Collapse._getTargetFromElement(element), [element]);
|
||||||
|
});
|
||||||
|
return parent;
|
||||||
|
};
|
||||||
|
|
||||||
}, {
|
_proto._addAriaAndCollapsedClass = function _addAriaAndCollapsedClass(element, triggerArray) {
|
||||||
key: '_getConfig',
|
if (element) {
|
||||||
value: function _getConfig(config) {
|
var isOpen = $(element).hasClass(ClassName.SHOW);
|
||||||
config = $.extend({}, Default, config);
|
|
||||||
config.toggle = Boolean(config.toggle); // coerce string values
|
|
||||||
Util.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 = $(this._config.parent)[0];
|
if (triggerArray.length) {
|
||||||
var selector = '[data-toggle="collapse"][data-parent="' + this._config.parent + '"]';
|
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
||||||
|
|
||||||
$(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) {
|
|
||||||
$(triggerArray).toggleClass(ClassName.COLLAPSED, !isOpen).attr('aria-expanded', isOpen);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}; // static
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
Collapse._getTargetFromElement = function _getTargetFromElement(element) {
|
||||||
key: '_getTargetFromElement',
|
var selector = Util.getSelectorFromElement(element);
|
||||||
value: function _getTargetFromElement(element) {
|
return selector ? $(selector)[0] : null;
|
||||||
var selector = Util.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 = $.extend({}, Default, $this.data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
|
|
||||||
|
|
||||||
if (!data && _config.toggle && /show|hide/.test(config)) {
|
Collapse._jQueryInterface = function _jQueryInterface(config) {
|
||||||
_config.toggle = false;
|
return this.each(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
var data = $this.data(DATA_KEY);
|
||||||
|
|
||||||
|
var _config = $.extend({}, 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 Error("No method named \"" + config + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data) {
|
data[config]();
|
||||||
data = new Collapse(this, _config);
|
}
|
||||||
$this.data(DATA_KEY, data);
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
if (typeof config === 'string') {
|
_createClass(Collapse, null, [{
|
||||||
if (typeof data[config] === 'undefined') {
|
key: "VERSION",
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Default',
|
key: "Default",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
|
@ -344,13 +329,13 @@ var Collapse = function () {
|
||||||
|
|
||||||
return Collapse;
|
return Collapse;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
||||||
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
|
// preventDefault only for <a> elements (which change the URL) not inside the collapsible element
|
||||||
if (event.currentTarget.tagName === 'A') {
|
if (event.currentTarget.tagName === 'A') {
|
||||||
|
@ -363,10 +348,10 @@ var Collapse = function () {
|
||||||
var $target = $(this);
|
var $target = $(this);
|
||||||
var data = $target.data(DATA_KEY);
|
var data = $target.data(DATA_KEY);
|
||||||
var config = data ? 'toggle' : $trigger.data();
|
var config = data ? 'toggle' : $trigger.data();
|
||||||
|
|
||||||
Collapse._jQueryInterface.call($target, config);
|
Collapse._jQueryInterface.call($target, config);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -375,6 +360,7 @@ var Collapse = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Collapse._jQueryInterface;
|
$.fn[NAME] = Collapse._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Collapse;
|
$.fn[NAME].Constructor = Collapse;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Collapse._jQueryInterface;
|
return Collapse._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,10 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -12,9 +8,7 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Dropdown = function () {
|
var Dropdown = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check for Popper dependency
|
* Check for Popper dependency
|
||||||
* Popper - https://popper.js.org
|
* Popper - https://popper.js.org
|
||||||
|
@ -22,38 +16,42 @@ var Dropdown = function () {
|
||||||
if (typeof Popper === 'undefined') {
|
if (typeof Popper === 'undefined') {
|
||||||
throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)');
|
throw new Error('Bootstrap dropdown require Popper.js (https://popper.js.org)');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
var NAME = 'dropdown';
|
var NAME = 'dropdown';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.dropdown';
|
var DATA_KEY = 'bs.dropdown';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
var ESCAPE_KEYCODE = 27; // KeyboardEvent.which value for Escape (Esc) key
|
||||||
|
|
||||||
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
var SPACE_KEYCODE = 32; // KeyboardEvent.which value for space key
|
||||||
|
|
||||||
var TAB_KEYCODE = 9; // KeyboardEvent.which value for tab 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_UP_KEYCODE = 38; // KeyboardEvent.which value for up arrow key
|
||||||
|
|
||||||
var ARROW_DOWN_KEYCODE = 40; // KeyboardEvent.which value for down 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 RIGHT_MOUSE_BUTTON_WHICH = 3; // MouseEvent.which value for the right button (assuming a right-handed mouse)
|
||||||
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + '|' + ARROW_DOWN_KEYCODE + '|' + ESCAPE_KEYCODE);
|
|
||||||
|
|
||||||
|
var REGEXP_KEYDOWN = new RegExp(ARROW_UP_KEYCODE + "|" + ARROW_DOWN_KEYCODE + "|" + ESCAPE_KEYCODE);
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: "hide" + EVENT_KEY,
|
||||||
HIDDEN: 'hidden' + EVENT_KEY,
|
HIDDEN: "hidden" + EVENT_KEY,
|
||||||
SHOW: 'show' + EVENT_KEY,
|
SHOW: "show" + EVENT_KEY,
|
||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: "shown" + EVENT_KEY,
|
||||||
CLICK: 'click' + EVENT_KEY,
|
CLICK: "click" + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY,
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY,
|
||||||
KEYDOWN_DATA_API: 'keydown' + EVENT_KEY + DATA_API_KEY,
|
KEYDOWN_DATA_API: "keydown" + EVENT_KEY + DATA_API_KEY,
|
||||||
KEYUP_DATA_API: 'keyup' + EVENT_KEY + DATA_API_KEY
|
KEYUP_DATA_API: "keyup" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
DISABLED: 'disabled',
|
DISABLED: 'disabled',
|
||||||
SHOW: 'show',
|
SHOW: 'show',
|
||||||
|
@ -61,7 +59,6 @@ var Dropdown = function () {
|
||||||
MENURIGHT: 'dropdown-menu-right',
|
MENURIGHT: 'dropdown-menu-right',
|
||||||
MENULEFT: 'dropdown-menu-left'
|
MENULEFT: 'dropdown-menu-left'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
DATA_TOGGLE: '[data-toggle="dropdown"]',
|
||||||
FORM_CHILD: '.dropdown form',
|
FORM_CHILD: '.dropdown form',
|
||||||
|
@ -69,23 +66,19 @@ var Dropdown = function () {
|
||||||
NAVBAR_NAV: '.navbar-nav',
|
NAVBAR_NAV: '.navbar-nav',
|
||||||
VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
|
VISIBLE_ITEMS: '.dropdown-menu .dropdown-item:not(.disabled)'
|
||||||
};
|
};
|
||||||
|
|
||||||
var AttachmentMap = {
|
var AttachmentMap = {
|
||||||
TOP: 'top-start',
|
TOP: 'top-start',
|
||||||
TOPEND: 'top-end',
|
TOPEND: 'top-end',
|
||||||
BOTTOM: 'bottom-start',
|
BOTTOM: 'bottom-start',
|
||||||
BOTTOMEND: 'bottom-end'
|
BOTTOMEND: 'bottom-end'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Default = {
|
var Default = {
|
||||||
offset: 0,
|
offset: 0,
|
||||||
flip: true
|
flip: true
|
||||||
};
|
};
|
||||||
|
|
||||||
var DefaultType = {
|
var DefaultType = {
|
||||||
offset: '(number|string)',
|
offset: '(number|string)',
|
||||||
flip: 'boolean'
|
flip: 'boolean'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -93,10 +86,11 @@ var Dropdown = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Dropdown = function () {
|
|
||||||
function Dropdown(element, config) {
|
|
||||||
_classCallCheck(this, Dropdown);
|
|
||||||
|
|
||||||
|
var Dropdown =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
|
function Dropdown(element, config) {
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._popper = null;
|
this._popper = null;
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
|
@ -104,305 +98,299 @@ var Dropdown = function () {
|
||||||
this._inNavbar = this._detectNavbar();
|
this._inNavbar = this._detectNavbar();
|
||||||
|
|
||||||
this._addEventListeners();
|
this._addEventListeners();
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Dropdown, [{
|
|
||||||
key: 'toggle',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Dropdown.prototype;
|
||||||
|
|
||||||
value: function toggle() {
|
// public
|
||||||
if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {
|
_proto.toggle = function toggle() {
|
||||||
return;
|
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;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._popper = new Popper(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) {
|
|
||||||
$('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));
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'dispose',
|
var parent = Dropdown._getParentFromElement(this._element);
|
||||||
value: function dispose() {
|
|
||||||
$.removeData(this._element, DATA_KEY);
|
var isActive = $(this._menu).hasClass(ClassName.SHOW);
|
||||||
$(this._element).off(EVENT_KEY);
|
|
||||||
this._element = null;
|
Dropdown._clearMenus();
|
||||||
this._menu = null;
|
|
||||||
if (this._popper !== null) {
|
if (isActive) {
|
||||||
this._popper.destroy();
|
return;
|
||||||
}
|
|
||||||
this._popper = null;
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'update',
|
var relatedTarget = {
|
||||||
value: function update() {
|
relatedTarget: this._element
|
||||||
this._inNavbar = this._detectNavbar();
|
};
|
||||||
if (this._popper !== null) {
|
var showEvent = $.Event(Event.SHOW, relatedTarget);
|
||||||
this._popper.scheduleUpdate();
|
$(parent).trigger(showEvent);
|
||||||
|
|
||||||
|
if (showEvent.isDefaultPrevented()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// private
|
this._popper = new Popper(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) {
|
||||||
key: '_addEventListeners',
|
$('body').children().on('mouseover', null, $.noop);
|
||||||
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 = $.extend({}, this.constructor.Default, $(this._element).data(), config);
|
|
||||||
|
|
||||||
Util.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 ($(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 popperConfig = {
|
|
||||||
placement: this._getPlacement(),
|
|
||||||
modifiers: {
|
|
||||||
offset: {
|
|
||||||
offset: this._config.offset
|
|
||||||
},
|
|
||||||
flip: {
|
|
||||||
enabled: this._config.flip
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Disable Popper.js for Dropdown in Navbar
|
|
||||||
};if (this._inNavbar) {
|
|
||||||
popperConfig.modifiers.applyStyle = {
|
|
||||||
enabled: !this._inNavbar
|
|
||||||
};
|
|
||||||
}
|
|
||||||
return popperConfig;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
this._element.focus();
|
||||||
|
|
||||||
}], [{
|
this._element.setAttribute('aria-expanded', true);
|
||||||
key: '_jQueryInterface',
|
|
||||||
value: function _jQueryInterface(config) {
|
|
||||||
return this.each(function () {
|
|
||||||
var data = $(this).data(DATA_KEY);
|
|
||||||
var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null;
|
|
||||||
|
|
||||||
if (!data) {
|
$(this._menu).toggleClass(ClassName.SHOW);
|
||||||
data = new Dropdown(this, _config);
|
$(parent).toggleClass(ClassName.SHOW).trigger($.Event(Event.SHOWN, relatedTarget));
|
||||||
$(this).data(DATA_KEY, data);
|
};
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof config === 'string') {
|
_proto.dispose = function dispose() {
|
||||||
if (typeof data[config] === 'undefined') {
|
$.removeData(this._element, DATA_KEY);
|
||||||
throw new Error('No method named "' + config + '"');
|
$(this._element).off(EVENT_KEY);
|
||||||
}
|
this._element = null;
|
||||||
data[config]();
|
this._menu = null;
|
||||||
}
|
|
||||||
});
|
if (this._popper !== null) {
|
||||||
|
this._popper.destroy();
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
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));
|
this._popper = null;
|
||||||
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) {
|
_proto.update = function update() {
|
||||||
continue;
|
this._inNavbar = this._detectNavbar();
|
||||||
}
|
|
||||||
|
|
||||||
var dropdownMenu = context._menu;
|
if (this._popper !== null) {
|
||||||
if (!$(parent).hasClass(ClassName.SHOW)) {
|
this._popper.scheduleUpdate();
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
}; // private
|
||||||
key: '_getParentFromElement',
|
|
||||||
value: function _getParentFromElement(element) {
|
|
||||||
var parent = void 0;
|
|
||||||
var selector = Util.getSelectorFromElement(element);
|
|
||||||
|
|
||||||
if (selector) {
|
|
||||||
parent = $(selector)[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
return parent || element.parentNode;
|
_proto._addEventListeners = function _addEventListeners() {
|
||||||
}
|
var _this = this;
|
||||||
}, {
|
|
||||||
key: '_dataApiKeydownHandler',
|
|
||||||
value: function _dataApiKeydownHandler(event) {
|
|
||||||
if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
$(this._element).on(Event.CLICK, function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
|
_this.toggle();
|
||||||
return;
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getConfig = function _getConfig(config) {
|
||||||
|
config = $.extend({}, this.constructor.Default, $(this._element).data(), config);
|
||||||
|
Util.typeCheckConfig(NAME, config, this.constructor.DefaultType);
|
||||||
|
return config;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getMenuElement = function _getMenuElement() {
|
||||||
|
if (!this._menu) {
|
||||||
|
var parent = Dropdown._getParentFromElement(this._element);
|
||||||
|
|
||||||
|
this._menu = $(parent).find(Selector.MENU)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return this._menu;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getPlacement = 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 ($(this._menu).hasClass(ClassName.MENURIGHT)) {
|
||||||
|
placement = AttachmentMap.BOTTOMEND;
|
||||||
|
}
|
||||||
|
|
||||||
|
return placement;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._detectNavbar = function _detectNavbar() {
|
||||||
|
return $(this._element).closest('.navbar').length > 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getPopperConfig = function _getPopperConfig() {
|
||||||
|
var popperConfig = {
|
||||||
|
placement: this._getPlacement(),
|
||||||
|
modifiers: {
|
||||||
|
offset: {
|
||||||
|
offset: this._config.offset
|
||||||
|
},
|
||||||
|
flip: {
|
||||||
|
enabled: this._config.flip
|
||||||
|
}
|
||||||
|
} // Disable Popper.js for Dropdown in Navbar
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
if (this._inNavbar) {
|
||||||
|
popperConfig.modifiers.applyStyle = {
|
||||||
|
enabled: !this._inNavbar
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
return popperConfig;
|
||||||
|
}; // static
|
||||||
|
|
||||||
|
|
||||||
|
Dropdown._jQueryInterface = 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);
|
||||||
}
|
}
|
||||||
|
|
||||||
var parent = Dropdown._getParentFromElement(this);
|
if (typeof config === 'string') {
|
||||||
var isActive = $(parent).hasClass(ClassName.SHOW);
|
if (typeof data[config] === 'undefined') {
|
||||||
|
throw new Error("No method named \"" + config + "\"");
|
||||||
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');
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$(this).trigger('click');
|
data[config]();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
|
Dropdown._clearMenus = function _clearMenus(event) {
|
||||||
|
if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH || event.type === 'keyup' && event.which !== TAB_KEYCODE)) {
|
||||||
if (!items.length) {
|
return;
|
||||||
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',
|
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));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
Dropdown._getParentFromElement = function _getParentFromElement(element) {
|
||||||
|
var parent;
|
||||||
|
var selector = Util.getSelectorFromElement(element);
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
parent = $(selector)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
return parent || element.parentNode;
|
||||||
|
};
|
||||||
|
|
||||||
|
Dropdown._dataApiKeydownHandler = function _dataApiKeydownHandler(event) {
|
||||||
|
if (!REGEXP_KEYDOWN.test(event.which) || /button/i.test(event.target.tagName) && event.which === SPACE_KEYCODE || /input|textarea/i.test(event.target.tagName)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.preventDefault();
|
||||||
|
event.stopPropagation();
|
||||||
|
|
||||||
|
if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
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');
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this).trigger('click');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var items = $(parent).find(Selector.VISIBLE_ITEMS).get();
|
||||||
|
|
||||||
|
if (!items.length) {
|
||||||
|
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();
|
||||||
|
};
|
||||||
|
|
||||||
|
_createClass(Dropdown, null, [{
|
||||||
|
key: "VERSION",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Default',
|
key: "Default",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'DefaultType',
|
key: "DefaultType",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return DefaultType;
|
return DefaultType;
|
||||||
}
|
}
|
||||||
|
@ -410,21 +398,21 @@ var Dropdown = function () {
|
||||||
|
|
||||||
return Dropdown;
|
return Dropdown;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + ' ' + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
|
||||||
|
$(document).on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler).on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler).on(Event.CLICK_DATA_API + " " + Event.KEYUP_DATA_API, Dropdown._clearMenus).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
|
||||||
Dropdown._jQueryInterface.call($(this), 'toggle');
|
Dropdown._jQueryInterface.call($(this), 'toggle');
|
||||||
}).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
}).on(Event.CLICK_DATA_API, Selector.FORM_CHILD, function (e) {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -433,6 +421,7 @@ var Dropdown = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Dropdown._jQueryInterface;
|
$.fn[NAME] = Dropdown._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Dropdown;
|
$.fn[NAME].Constructor = Dropdown;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Dropdown._jQueryInterface;
|
return Dropdown._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,12 +1,9 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* Bootstrap (v4.0.0-alpha.6): index.js
|
* Bootstrap (v4.0.0-alpha.6): index.js
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
(function () {
|
(function () {
|
||||||
if (typeof jQuery === 'undefined') {
|
if (typeof jQuery === 'undefined') {
|
||||||
throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
|
throw new Error('Bootstrap\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\'s JavaScript.');
|
||||||
|
@ -15,6 +12,7 @@
|
||||||
var version = $.fn.jquery.split(' ')[0].split('.');
|
var version = $.fn.jquery.split(' ')[0].split('.');
|
||||||
var min = 3;
|
var min = 3;
|
||||||
var max = 4;
|
var max = 4;
|
||||||
|
|
||||||
if (version[0] < min || version[0] >= max) {
|
if (version[0] < min || version[0] >= max) {
|
||||||
throw new Error('Bootstrap\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0');
|
throw new Error('Bootstrap\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0');
|
||||||
}
|
}
|
||||||
|
|
|
@ -1 +1 @@
|
||||||
{"version":3,"sources":["../src/index.js"],"names":["jQuery","Error","version","$","fn","jquery","split","min","max"],"mappings":";;AAaA;;;;;;;AAOA,CAAC,YAAM;AACL,MAAI,OAAOA,MAAP,KAAkB,WAAtB,EAAmC;AACjC,UAAM,IAAIC,KAAJ,CAAU,kGAAV,CAAN;AACD;;AAED,MAAMC,UAAUC,EAAEC,EAAF,CAAKC,MAAL,CAAYC,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,EAA0BA,KAA1B,CAAgC,GAAhC,CAAhB;AACA,MAAMC,MAAM,CAAZ;AACA,MAAMC,MAAM,CAAZ;AACA,MAAIN,QAAQ,CAAR,IAAaK,GAAb,IAAoBL,QAAQ,CAAR,KAAcM,GAAtC,EAA2C;AACzC,UAAM,IAAIP,KAAJ,CAAU,8EAAV,CAAN;AACD;AACF,CAXD,EAWGD,MAXH","file":"index.js","sourcesContent":["import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(() => {\n if (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const min = 3\n const max = 4\n if (version[0] < min || version[0] >= max) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0')\n }\n})(jQuery)\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"]}
|
{"version":3,"sources":["../src/index.js"],"names":["jQuery","Error","version","$","fn","jquery","split","min","max"],"mappings":"AAaA;;;;;;AAOA,CAAC,YAAM;AACL,MAAI,OAAOA,MAAP,KAAkB,WAAtB,EAAmC;AACjC,UAAM,IAAIC,KAAJ,CAAU,kGAAV,CAAN;AACD;;AAED,MAAMC,UAAUC,EAAEC,EAAF,CAAKC,MAAL,CAAYC,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,EAA0BA,KAA1B,CAAgC,GAAhC,CAAhB;AACA,MAAMC,MAAM,CAAZ;AACA,MAAMC,MAAM,CAAZ;;AACA,MAAIN,QAAQ,CAAR,IAAaK,GAAb,IAAoBL,QAAQ,CAAR,KAAcM,GAAtC,EAA2C;AACzC,UAAM,IAAIP,KAAJ,CAAU,8EAAV,CAAN;AACD;AACF,CAXD,EAWGD,MAXH","file":"index.js","sourcesContent":["import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.0.0-alpha.6): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(() => {\n if (typeof jQuery === 'undefined') {\n throw new Error('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n }\n\n const version = $.fn.jquery.split(' ')[0].split('.')\n const min = 3\n const max = 4\n if (version[0] < min || version[0] >= max) {\n throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v3.0.0 but less than v4.0.0')\n }\n})(jQuery)\n\nexport {\n Util,\n Alert,\n Button,\n Carousel,\n Collapse,\n Dropdown,\n Modal,\n Popover,\n Scrollspy,\n Tab,\n Tooltip\n}\n"]}
|
|
@ -1,10 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -12,19 +8,16 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Modal = function () {
|
var Modal = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'modal';
|
var NAME = 'modal';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.modal';
|
var DATA_KEY = 'bs.modal';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var TRANSITION_DURATION = 300;
|
var TRANSITION_DURATION = 300;
|
||||||
|
@ -37,28 +30,25 @@ var Modal = function () {
|
||||||
focus: true,
|
focus: true,
|
||||||
show: true
|
show: true
|
||||||
};
|
};
|
||||||
|
|
||||||
var DefaultType = {
|
var DefaultType = {
|
||||||
backdrop: '(boolean|string)',
|
backdrop: '(boolean|string)',
|
||||||
keyboard: 'boolean',
|
keyboard: 'boolean',
|
||||||
focus: 'boolean',
|
focus: 'boolean',
|
||||||
show: 'boolean'
|
show: 'boolean'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: "hide" + EVENT_KEY,
|
||||||
HIDDEN: 'hidden' + EVENT_KEY,
|
HIDDEN: "hidden" + EVENT_KEY,
|
||||||
SHOW: 'show' + EVENT_KEY,
|
SHOW: "show" + EVENT_KEY,
|
||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: "shown" + EVENT_KEY,
|
||||||
FOCUSIN: 'focusin' + EVENT_KEY,
|
FOCUSIN: "focusin" + EVENT_KEY,
|
||||||
RESIZE: 'resize' + EVENT_KEY,
|
RESIZE: "resize" + EVENT_KEY,
|
||||||
CLICK_DISMISS: 'click.dismiss' + EVENT_KEY,
|
CLICK_DISMISS: "click.dismiss" + EVENT_KEY,
|
||||||
KEYDOWN_DISMISS: 'keydown.dismiss' + EVENT_KEY,
|
KEYDOWN_DISMISS: "keydown.dismiss" + EVENT_KEY,
|
||||||
MOUSEUP_DISMISS: 'mouseup.dismiss' + EVENT_KEY,
|
MOUSEUP_DISMISS: "mouseup.dismiss" + EVENT_KEY,
|
||||||
MOUSEDOWN_DISMISS: 'mousedown.dismiss' + EVENT_KEY,
|
MOUSEDOWN_DISMISS: "mousedown.dismiss" + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
SCROLLBAR_MEASURER: 'modal-scrollbar-measure',
|
||||||
BACKDROP: 'modal-backdrop',
|
BACKDROP: 'modal-backdrop',
|
||||||
|
@ -66,7 +56,6 @@ var Modal = function () {
|
||||||
FADE: 'fade',
|
FADE: 'fade',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DIALOG: '.modal-dialog',
|
DIALOG: '.modal-dialog',
|
||||||
DATA_TOGGLE: '[data-toggle="modal"]',
|
DATA_TOGGLE: '[data-toggle="modal"]',
|
||||||
|
@ -74,7 +63,6 @@ var Modal = function () {
|
||||||
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
FIXED_CONTENT: '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',
|
||||||
STICKY_CONTENT: '.sticky-top',
|
STICKY_CONTENT: '.sticky-top',
|
||||||
NAVBAR_TOGGLER: '.navbar-toggler'
|
NAVBAR_TOGGLER: '.navbar-toggler'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -82,10 +70,11 @@ var Modal = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Modal = function () {
|
|
||||||
function Modal(element, config) {
|
|
||||||
_classCallCheck(this, Modal);
|
|
||||||
|
|
||||||
|
var Modal =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
|
function Modal(element, config) {
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._dialog = $(element).find(Selector.DIALOG)[0];
|
this._dialog = $(element).find(Selector.DIALOG)[0];
|
||||||
|
@ -95,462 +84,439 @@ var Modal = function () {
|
||||||
this._ignoreBackdropClick = false;
|
this._ignoreBackdropClick = false;
|
||||||
this._originalBodyPadding = 0;
|
this._originalBodyPadding = 0;
|
||||||
this._scrollbarWidth = 0;
|
this._scrollbarWidth = 0;
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Modal, [{
|
|
||||||
key: 'toggle',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Modal.prototype;
|
||||||
|
|
||||||
value: function toggle(relatedTarget) {
|
// public
|
||||||
return this._isShown ? this.hide() : this.show(relatedTarget);
|
_proto.toggle = function toggle(relatedTarget) {
|
||||||
}
|
return this._isShown ? this.hide() : this.show(relatedTarget);
|
||||||
}, {
|
};
|
||||||
key: 'show',
|
|
||||||
value: function show(relatedTarget) {
|
|
||||||
var _this = this;
|
|
||||||
|
|
||||||
if (this._isTransitioning) {
|
_proto.show = function show(relatedTarget) {
|
||||||
return;
|
var _this = this;
|
||||||
}
|
|
||||||
|
|
||||||
if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
|
if (this._isTransitioning) {
|
||||||
this._isTransitioning = true;
|
return;
|
||||||
}
|
|
||||||
|
|
||||||
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 transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
|
|
||||||
|
|
||||||
if (transition) {
|
|
||||||
this._isTransitioning = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
var hideEvent = $.Event(Event.HIDE);
|
|
||||||
|
|
||||||
$(this._element).trigger(hideEvent);
|
|
||||||
|
|
||||||
if (!this._isShown || hideEvent.isDefaultPrevented()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this._isShown = false;
|
|
||||||
|
|
||||||
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(Util.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();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// private
|
if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
|
||||||
|
this._isTransitioning = true;
|
||||||
}, {
|
|
||||||
key: '_getConfig',
|
|
||||||
value: function _getConfig(config) {
|
|
||||||
config = $.extend({}, Default, config);
|
|
||||||
Util.typeCheckConfig(NAME, config, DefaultType);
|
|
||||||
return config;
|
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: '_showElement',
|
|
||||||
value: function _showElement(relatedTarget) {
|
|
||||||
var _this3 = this;
|
|
||||||
|
|
||||||
var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
|
var showEvent = $.Event(Event.SHOW, {
|
||||||
|
relatedTarget: relatedTarget
|
||||||
|
});
|
||||||
|
$(this._element).trigger(showEvent);
|
||||||
|
|
||||||
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
if (this._isShown || showEvent.isDefaultPrevented()) {
|
||||||
// don't move modals dom position
|
return;
|
||||||
document.body.appendChild(this._element);
|
}
|
||||||
}
|
|
||||||
|
|
||||||
this._element.style.display = 'block';
|
this._isShown = true;
|
||||||
this._element.removeAttribute('aria-hidden');
|
|
||||||
this._element.scrollTop = 0;
|
|
||||||
|
|
||||||
if (transition) {
|
this._checkScrollbar();
|
||||||
Util.reflow(this._element);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(this._element).addClass(ClassName.SHOW);
|
this._setScrollbar();
|
||||||
|
|
||||||
if (this._config.focus) {
|
this._adjustDialog();
|
||||||
this._enforceFocus();
|
|
||||||
}
|
|
||||||
|
|
||||||
var shownEvent = $.Event(Event.SHOWN, {
|
$(document.body).addClass(ClassName.OPEN);
|
||||||
relatedTarget: relatedTarget
|
|
||||||
});
|
|
||||||
|
|
||||||
var transitionComplete = function transitionComplete() {
|
this._setEscapeEvent();
|
||||||
if (_this3._config.focus) {
|
|
||||||
_this3._element.focus();
|
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);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.hide = function hide(event) {
|
||||||
|
var _this2 = this;
|
||||||
|
|
||||||
|
if (event) {
|
||||||
|
event.preventDefault();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this._isTransitioning || !this._isShown) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
|
||||||
|
|
||||||
|
if (transition) {
|
||||||
|
this._isTransitioning = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
var hideEvent = $.Event(Event.HIDE);
|
||||||
|
$(this._element).trigger(hideEvent);
|
||||||
|
|
||||||
|
if (!this._isShown || hideEvent.isDefaultPrevented()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this._isShown = false;
|
||||||
|
|
||||||
|
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(Util.TRANSITION_END, function (event) {
|
||||||
|
return _this2._hideModal(event);
|
||||||
|
}).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
|
} else {
|
||||||
|
this._hideModal();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.dispose = 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;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.handleUpdate = function handleUpdate() {
|
||||||
|
this._adjustDialog();
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
|
_proto._getConfig = function _getConfig(config) {
|
||||||
|
config = $.extend({}, Default, config);
|
||||||
|
Util.typeCheckConfig(NAME, config, DefaultType);
|
||||||
|
return config;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._showElement = function _showElement(relatedTarget) {
|
||||||
|
var _this3 = this;
|
||||||
|
|
||||||
|
var transition = Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE);
|
||||||
|
|
||||||
|
if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {
|
||||||
|
// don't move modals dom position
|
||||||
|
document.body.appendChild(this._element);
|
||||||
|
}
|
||||||
|
|
||||||
|
this._element.style.display = 'block';
|
||||||
|
|
||||||
|
this._element.removeAttribute('aria-hidden');
|
||||||
|
|
||||||
|
this._element.scrollTop = 0;
|
||||||
|
|
||||||
|
if (transition) {
|
||||||
|
Util.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(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
|
} else {
|
||||||
|
transitionComplete();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._enforceFocus = 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) {
|
||||||
|
_this4._element.focus();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._setEscapeEvent = 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);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._setResizeEvent = function _setResizeEvent() {
|
||||||
|
var _this6 = this;
|
||||||
|
|
||||||
|
if (this._isShown) {
|
||||||
|
$(window).on(Event.RESIZE, function (event) {
|
||||||
|
return _this6.handleUpdate(event);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
$(window).off(Event.RESIZE);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._hideModal = 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);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._removeBackdrop = function _removeBackdrop() {
|
||||||
|
if (this._backdrop) {
|
||||||
|
$(this._backdrop).remove();
|
||||||
|
this._backdrop = null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._showBackdrop = function _showBackdrop(callback) {
|
||||||
|
var _this8 = this;
|
||||||
|
|
||||||
|
var animate = $(this._element).hasClass(ClassName.FADE) ? ClassName.FADE : '';
|
||||||
|
|
||||||
|
if (this._isShown && this._config.backdrop) {
|
||||||
|
var doAnimate = Util.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) {
|
||||||
|
Util.reflow(this._backdrop);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this._backdrop).addClass(ClassName.SHOW);
|
||||||
|
|
||||||
|
if (!callback) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!doAnimate) {
|
||||||
|
callback();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this._backdrop).one(Util.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();
|
||||||
}
|
}
|
||||||
_this3._isTransitioning = false;
|
|
||||||
$(_this3._element).trigger(shownEvent);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if (transition) {
|
if (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
|
||||||
$(this._dialog).one(Util.TRANSITION_END, transitionComplete).emulateTransitionEnd(TRANSITION_DURATION);
|
$(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
|
||||||
} else {
|
} else {
|
||||||
transitionComplete();
|
callbackRemove();
|
||||||
}
|
}
|
||||||
|
} else if (callback) {
|
||||||
|
callback();
|
||||||
}
|
}
|
||||||
}, {
|
}; // ----------------------------------------------------------------------
|
||||||
key: '_enforceFocus',
|
// the following methods are used to handle overflowing modals
|
||||||
value: function _enforceFocus() {
|
// todo (fat): these should probably be refactored out of modal.js
|
||||||
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) {
|
|
||||||
_this4._element.focus();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: '_setEscapeEvent',
|
|
||||||
value: function _setEscapeEvent() {
|
|
||||||
var _this5 = this;
|
|
||||||
|
|
||||||
if (this._isShown && this._config.keyboard) {
|
_proto._adjustDialog = function _adjustDialog() {
|
||||||
$(this._element).on(Event.KEYDOWN_DISMISS, function (event) {
|
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
||||||
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) {
|
if (!this._isBodyOverflowing && isModalOverflowing) {
|
||||||
$(window).on(Event.RESIZE, function (event) {
|
this._element.style.paddingLeft = this._scrollbarWidth + "px";
|
||||||
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 = Util.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) {
|
|
||||||
Util.reflow(this._backdrop);
|
|
||||||
}
|
|
||||||
|
|
||||||
$(this._backdrop).addClass(ClassName.SHOW);
|
|
||||||
|
|
||||||
if (!callback) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!doAnimate) {
|
|
||||||
callback();
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$(this._backdrop).one(Util.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 (Util.supportsTransitionEnd() && $(this._element).hasClass(ClassName.FADE)) {
|
|
||||||
$(this._backdrop).one(Util.TRANSITION_END, callbackRemove).emulateTransitionEnd(BACKDROP_TRANSITION_DURATION);
|
|
||||||
} else {
|
|
||||||
callbackRemove();
|
|
||||||
}
|
|
||||||
} else if (callback) {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ----------------------------------------------------------------------
|
if (this._isBodyOverflowing && !isModalOverflowing) {
|
||||||
// the following methods are used to handle overflowing modals
|
this._element.style.paddingRight = this._scrollbarWidth + "px";
|
||||||
// todo (fat): these should probably be refactored out of modal.js
|
|
||||||
// ----------------------------------------------------------------------
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_adjustDialog',
|
|
||||||
value: function _adjustDialog() {
|
|
||||||
var isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;
|
|
||||||
|
|
||||||
if (!this._isBodyOverflowing && isModalOverflowing) {
|
|
||||||
this._element.style.paddingLeft = this._scrollbarWidth + 'px';
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this._isBodyOverflowing && !isModalOverflowing) {
|
|
||||||
this._element.style.paddingRight = 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) {
|
_proto._resetAdjustments = function _resetAdjustments() {
|
||||||
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
this._element.style.paddingLeft = '';
|
||||||
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
this._element.style.paddingRight = '';
|
||||||
|
};
|
||||||
|
|
||||||
// Adjust fixed content padding
|
_proto._checkScrollbar = function _checkScrollbar() {
|
||||||
$(Selector.FIXED_CONTENT).each(function (index, element) {
|
var rect = document.body.getBoundingClientRect();
|
||||||
var actualPadding = $(element)[0].style.paddingRight;
|
this._isBodyOverflowing = rect.left + rect.right < window.innerWidth;
|
||||||
var calculatedPadding = $(element).css('padding-right');
|
this._scrollbarWidth = this._getScrollbarWidth();
|
||||||
$(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + 'px');
|
};
|
||||||
});
|
|
||||||
|
|
||||||
// Adjust sticky content margin
|
_proto._setScrollbar = function _setScrollbar() {
|
||||||
$(Selector.STICKY_CONTENT).each(function (index, element) {
|
var _this9 = this;
|
||||||
var actualMargin = $(element)[0].style.marginRight;
|
|
||||||
var calculatedMargin = $(element).css('margin-right');
|
|
||||||
$(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + 'px');
|
|
||||||
});
|
|
||||||
|
|
||||||
// Adjust navbar-toggler margin
|
if (this._isBodyOverflowing) {
|
||||||
$(Selector.NAVBAR_TOGGLER).each(function (index, element) {
|
// Note: DOMNode.style.paddingRight returns the actual value or '' if not set
|
||||||
var actualMargin = $(element)[0].style.marginRight;
|
// while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set
|
||||||
var calculatedMargin = $(element).css('margin-right');
|
// Adjust fixed content padding
|
||||||
$(element).data('margin-right', actualMargin).css('margin-right', 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', parseFloat(calculatedPadding) + this._scrollbarWidth + 'px');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: '_resetScrollbar',
|
|
||||||
value: function _resetScrollbar() {
|
|
||||||
// Restore fixed content padding
|
|
||||||
$(Selector.FIXED_CONTENT).each(function (index, element) {
|
$(Selector.FIXED_CONTENT).each(function (index, element) {
|
||||||
var padding = $(element).data('padding-right');
|
var actualPadding = $(element)[0].style.paddingRight;
|
||||||
if (typeof padding !== 'undefined') {
|
var calculatedPadding = $(element).css('padding-right');
|
||||||
$(element).css('padding-right', padding).removeData('padding-right');
|
$(element).data('padding-right', actualPadding).css('padding-right', parseFloat(calculatedPadding) + _this9._scrollbarWidth + "px");
|
||||||
}
|
}); // Adjust sticky content margin
|
||||||
});
|
|
||||||
|
|
||||||
// Restore sticky content and navbar-toggler margin
|
$(Selector.STICKY_CONTENT).each(function (index, element) {
|
||||||
$(Selector.STICKY_CONTENT + ', ' + Selector.NAVBAR_TOGGLER).each(function (index, element) {
|
var actualMargin = $(element)[0].style.marginRight;
|
||||||
var margin = $(element).data('margin-right');
|
var calculatedMargin = $(element).css('margin-right');
|
||||||
if (typeof margin !== 'undefined') {
|
$(element).data('margin-right', actualMargin).css('margin-right', parseFloat(calculatedMargin) - _this9._scrollbarWidth + "px");
|
||||||
$(element).css('margin-right', margin).removeData('margin-right');
|
}); // 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', 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', parseFloat(calculatedPadding) + this._scrollbarWidth + "px");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._resetScrollbar = function _resetScrollbar() {
|
||||||
|
// Restore fixed content padding
|
||||||
|
$(Selector.FIXED_CONTENT).each(function (index, element) {
|
||||||
|
var padding = $(element).data('padding-right');
|
||||||
|
|
||||||
// Restore body padding
|
|
||||||
var padding = $('body').data('padding-right');
|
|
||||||
if (typeof padding !== 'undefined') {
|
if (typeof padding !== 'undefined') {
|
||||||
$('body').css('padding-right', padding).removeData('padding-right');
|
$(element).css('padding-right', padding).removeData('padding-right');
|
||||||
}
|
}
|
||||||
|
}); // Restore sticky content and navbar-toggler margin
|
||||||
|
|
||||||
|
$(Selector.STICKY_CONTENT + ", " + 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
_proto._getScrollbarWidth = 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;
|
||||||
|
}; // static
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
value: function _jQueryInterface(config, relatedTarget) {
|
|
||||||
return this.each(function () {
|
|
||||||
var data = $(this).data(DATA_KEY);
|
|
||||||
var _config = $.extend({}, Modal.Default, $(this).data(), (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config);
|
|
||||||
|
|
||||||
if (!data) {
|
Modal._jQueryInterface = function _jQueryInterface(config, relatedTarget) {
|
||||||
data = new Modal(this, _config);
|
return this.each(function () {
|
||||||
$(this).data(DATA_KEY, data);
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
|
var _config = $.extend({}, 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 Error("No method named \"" + config + "\"");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof config === 'string') {
|
data[config](relatedTarget);
|
||||||
if (typeof data[config] === 'undefined') {
|
} else if (_config.show) {
|
||||||
throw new Error('No method named "' + config + '"');
|
data.show(relatedTarget);
|
||||||
}
|
}
|
||||||
data[config](relatedTarget);
|
});
|
||||||
} else if (_config.show) {
|
};
|
||||||
data.show(relatedTarget);
|
|
||||||
}
|
_createClass(Modal, null, [{
|
||||||
});
|
key: "VERSION",
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Default',
|
key: "Default",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
|
@ -558,17 +524,17 @@ var Modal = function () {
|
||||||
|
|
||||||
return Modal;
|
return Modal;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
||||||
var _this10 = this;
|
var _this10 = this;
|
||||||
|
|
||||||
var target = void 0;
|
var target;
|
||||||
var selector = Util.getSelectorFromElement(this);
|
var selector = Util.getSelectorFromElement(this);
|
||||||
|
|
||||||
if (selector) {
|
if (selector) {
|
||||||
|
@ -596,7 +562,6 @@ var Modal = function () {
|
||||||
|
|
||||||
Modal._jQueryInterface.call($(target), config, this);
|
Modal._jQueryInterface.call($(target), config, this);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -605,6 +570,7 @@ var Modal = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Modal._jQueryInterface;
|
$.fn[NAME] = Modal._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Modal;
|
$.fn[NAME].Constructor = Modal;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Modal._jQueryInterface;
|
return Modal._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,14 +1,8 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
function _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
|
|
||||||
|
|
||||||
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } 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; }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -16,56 +10,47 @@ function _inherits(subClass, superClass) { if (typeof superClass !== "function"
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Popover = function () {
|
var Popover = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'popover';
|
var NAME = 'popover';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.popover';
|
var DATA_KEY = 'bs.popover';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var CLASS_PREFIX = 'bs-popover';
|
var CLASS_PREFIX = 'bs-popover';
|
||||||
var BSCLS_PREFIX_REGEX = new RegExp('(^|\\s)' + CLASS_PREFIX + '\\S+', 'g');
|
var BSCLS_PREFIX_REGEX = new RegExp("(^|\\s)" + CLASS_PREFIX + "\\S+", 'g');
|
||||||
|
|
||||||
var Default = $.extend({}, Tooltip.Default, {
|
var Default = $.extend({}, Tooltip.Default, {
|
||||||
placement: 'right',
|
placement: 'right',
|
||||||
trigger: 'click',
|
trigger: 'click',
|
||||||
content: '',
|
content: '',
|
||||||
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
|
template: '<div class="popover" role="tooltip">' + '<div class="arrow"></div>' + '<h3 class="popover-header"></h3>' + '<div class="popover-body"></div></div>'
|
||||||
});
|
});
|
||||||
|
|
||||||
var DefaultType = $.extend({}, Tooltip.DefaultType, {
|
var DefaultType = $.extend({}, Tooltip.DefaultType, {
|
||||||
content: '(string|element|function)'
|
content: '(string|element|function)'
|
||||||
});
|
});
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
FADE: 'fade',
|
FADE: 'fade',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
TITLE: '.popover-header',
|
TITLE: '.popover-header',
|
||||||
CONTENT: '.popover-body'
|
CONTENT: '.popover-body'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: "hide" + EVENT_KEY,
|
||||||
HIDDEN: 'hidden' + EVENT_KEY,
|
HIDDEN: "hidden" + EVENT_KEY,
|
||||||
SHOW: 'show' + EVENT_KEY,
|
SHOW: "show" + EVENT_KEY,
|
||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: "shown" + EVENT_KEY,
|
||||||
INSERTED: 'inserted' + EVENT_KEY,
|
INSERTED: "inserted" + EVENT_KEY,
|
||||||
CLICK: 'click' + EVENT_KEY,
|
CLICK: "click" + EVENT_KEY,
|
||||||
FOCUSIN: 'focusin' + EVENT_KEY,
|
FOCUSIN: "focusin" + EVENT_KEY,
|
||||||
FOCUSOUT: 'focusout' + EVENT_KEY,
|
FOCUSOUT: "focusout" + EVENT_KEY,
|
||||||
MOUSEENTER: 'mouseenter' + EVENT_KEY,
|
MOUSEENTER: "mouseenter" + EVENT_KEY,
|
||||||
MOUSELEAVE: 'mouseleave' + EVENT_KEY
|
MOUSELEAVE: "mouseleave" + EVENT_KEY
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -73,126 +58,113 @@ var Popover = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Popover = function (_Tooltip) {
|
|
||||||
_inherits(Popover, _Tooltip);
|
var Popover =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function (_Tooltip) {
|
||||||
|
_inheritsLoose(Popover, _Tooltip);
|
||||||
|
|
||||||
function Popover() {
|
function Popover() {
|
||||||
_classCallCheck(this, Popover);
|
return _Tooltip.apply(this, arguments) || this;
|
||||||
|
|
||||||
return _possibleConstructorReturn(this, (Popover.__proto__ || Object.getPrototypeOf(Popover)).apply(this, arguments));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_createClass(Popover, [{
|
var _proto = Popover.prototype;
|
||||||
key: 'isWithContent',
|
|
||||||
|
// overrides
|
||||||
|
_proto.isWithContent = function isWithContent() {
|
||||||
|
return this.getTitle() || this._getContent();
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.addAttachmentClass = function addAttachmentClass(attachment) {
|
||||||
|
$(this.getTipElement()).addClass(CLASS_PREFIX + "-" + attachment);
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.getTipElement = function getTipElement() {
|
||||||
|
this.tip = this.tip || $(this.config.template)[0];
|
||||||
|
return this.tip;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto.setContent = function setContent() {
|
||||||
|
var $tip = $(this.getTipElement()); // we use append for html objects to maintain js events
|
||||||
|
|
||||||
|
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
|
||||||
|
this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
|
||||||
|
$tip.removeClass(ClassName.FADE + " " + ClassName.SHOW);
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
// overrides
|
_proto._getContent = function _getContent() {
|
||||||
|
return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : this.config.content);
|
||||||
|
};
|
||||||
|
|
||||||
value: function isWithContent() {
|
_proto._cleanTipClass = function _cleanTipClass() {
|
||||||
return this.getTitle() || this._getContent();
|
var $tip = $(this.getTipElement());
|
||||||
|
var tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX);
|
||||||
|
|
||||||
|
if (tabClass !== null && tabClass.length > 0) {
|
||||||
|
$tip.removeClass(tabClass.join(''));
|
||||||
}
|
}
|
||||||
}, {
|
}; // static
|
||||||
key: 'addAttachmentClass',
|
|
||||||
value: function addAttachmentClass(attachment) {
|
|
||||||
$(this.getTipElement()).addClass(CLASS_PREFIX + '-' + attachment);
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
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
|
|
||||||
this.setElementContent($tip.find(Selector.TITLE), this.getTitle());
|
|
||||||
this.setElementContent($tip.find(Selector.CONTENT), this._getContent());
|
|
||||||
|
|
||||||
$tip.removeClass(ClassName.FADE + ' ' + ClassName.SHOW);
|
Popover._jQueryInterface = function _jQueryInterface(config) {
|
||||||
}
|
return this.each(function () {
|
||||||
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
// private
|
var _config = typeof config === 'object' ? config : null;
|
||||||
|
|
||||||
}, {
|
if (!data && /destroy|hide/.test(config)) {
|
||||||
key: '_getContent',
|
return;
|
||||||
value: function _getContent() {
|
|
||||||
return this.element.getAttribute('data-content') || (typeof this.config.content === 'function' ? this.config.content.call(this.element) : 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(''));
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
if (!data) {
|
||||||
|
data = new Popover(this, _config);
|
||||||
|
$(this).data(DATA_KEY, data);
|
||||||
|
}
|
||||||
|
|
||||||
}], [{
|
if (typeof config === 'string') {
|
||||||
key: '_jQueryInterface',
|
if (typeof data[config] === 'undefined') {
|
||||||
value: function _jQueryInterface(config) {
|
throw new Error("No method named \"" + config + "\"");
|
||||||
return this.each(function () {
|
|
||||||
var data = $(this).data(DATA_KEY);
|
|
||||||
var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' ? config : null;
|
|
||||||
|
|
||||||
if (!data && /destroy|hide/.test(config)) {
|
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!data) {
|
data[config]();
|
||||||
data = new Popover(this, _config);
|
}
|
||||||
$(this).data(DATA_KEY, data);
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
if (typeof config === 'string') {
|
|
||||||
if (typeof data[config] === 'undefined') {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
|
|
||||||
|
|
||||||
|
_createClass(Popover, null, [{
|
||||||
|
key: "VERSION",
|
||||||
// getters
|
// getters
|
||||||
|
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Default',
|
key: "Default",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'NAME',
|
key: "NAME",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return NAME;
|
return NAME;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'DATA_KEY',
|
key: "DATA_KEY",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return DATA_KEY;
|
return DATA_KEY;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Event',
|
key: "Event",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Event;
|
return Event;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'EVENT_KEY',
|
key: "EVENT_KEY",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return EVENT_KEY;
|
return EVENT_KEY;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'DefaultType',
|
key: "DefaultType",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return DefaultType;
|
return DefaultType;
|
||||||
}
|
}
|
||||||
|
@ -200,15 +172,16 @@ var Popover = function () {
|
||||||
|
|
||||||
return Popover;
|
return Popover;
|
||||||
}(Tooltip);
|
}(Tooltip);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
$.fn[NAME] = Popover._jQueryInterface;
|
$.fn[NAME] = Popover._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Popover;
|
$.fn[NAME].Constructor = Popover;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Popover._jQueryInterface;
|
return Popover._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,10 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -12,61 +8,52 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var ScrollSpy = function () {
|
var ScrollSpy = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'scrollspy';
|
var NAME = 'scrollspy';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.scrollspy';
|
var DATA_KEY = 'bs.scrollspy';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
|
|
||||||
var Default = {
|
var Default = {
|
||||||
offset: 10,
|
offset: 10,
|
||||||
method: 'auto',
|
method: 'auto',
|
||||||
target: ''
|
target: ''
|
||||||
};
|
};
|
||||||
|
|
||||||
var DefaultType = {
|
var DefaultType = {
|
||||||
offset: 'number',
|
offset: 'number',
|
||||||
method: 'string',
|
method: 'string',
|
||||||
target: '(string|element)'
|
target: '(string|element)'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
ACTIVATE: 'activate' + EVENT_KEY,
|
ACTIVATE: "activate" + EVENT_KEY,
|
||||||
SCROLL: 'scroll' + EVENT_KEY,
|
SCROLL: "scroll" + EVENT_KEY,
|
||||||
LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY
|
LOAD_DATA_API: "load" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
DROPDOWN_ITEM: 'dropdown-item',
|
DROPDOWN_ITEM: 'dropdown-item',
|
||||||
DROPDOWN_MENU: 'dropdown-menu',
|
DROPDOWN_MENU: 'dropdown-menu',
|
||||||
ACTIVE: 'active'
|
ACTIVE: 'active'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DATA_SPY: '[data-spy="scroll"]',
|
DATA_SPY: '[data-spy="scroll"]',
|
||||||
ACTIVE: '.active',
|
ACTIVE: '.active',
|
||||||
NAV_LIST_GROUP: '.nav, .list-group',
|
NAV_LIST_GROUP: '.nav, .list-group',
|
||||||
NAV_LINKS: '.nav-link',
|
NAV_LINKS: '.nav-link',
|
||||||
|
NAV_ITEMS: '.nav-item',
|
||||||
LIST_ITEMS: '.list-group-item',
|
LIST_ITEMS: '.list-group-item',
|
||||||
DROPDOWN: '.dropdown',
|
DROPDOWN: '.dropdown',
|
||||||
DROPDOWN_ITEMS: '.dropdown-item',
|
DROPDOWN_ITEMS: '.dropdown-item',
|
||||||
DROPDOWN_TOGGLE: '.dropdown-toggle'
|
DROPDOWN_TOGGLE: '.dropdown-toggle'
|
||||||
};
|
};
|
||||||
|
|
||||||
var OffsetMethod = {
|
var OffsetMethod = {
|
||||||
OFFSET: 'offset',
|
OFFSET: 'offset',
|
||||||
POSITION: 'position'
|
POSITION: 'position'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -74,228 +61,218 @@ var ScrollSpy = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var ScrollSpy = function () {
|
|
||||||
|
var ScrollSpy =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function ScrollSpy(element, config) {
|
function ScrollSpy(element, config) {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
_classCallCheck(this, ScrollSpy);
|
|
||||||
|
|
||||||
this._element = element;
|
this._element = element;
|
||||||
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
this._scrollElement = element.tagName === 'BODY' ? window : element;
|
||||||
this._config = this._getConfig(config);
|
this._config = this._getConfig(config);
|
||||||
this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.LIST_ITEMS + ',') + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS);
|
this._selector = this._config.target + " " + Selector.NAV_LINKS + "," + (this._config.target + " " + Selector.LIST_ITEMS + ",") + (this._config.target + " " + Selector.DROPDOWN_ITEMS);
|
||||||
this._offsets = [];
|
this._offsets = [];
|
||||||
this._targets = [];
|
this._targets = [];
|
||||||
this._activeTarget = null;
|
this._activeTarget = null;
|
||||||
this._scrollHeight = 0;
|
this._scrollHeight = 0;
|
||||||
|
|
||||||
$(this._scrollElement).on(Event.SCROLL, function (event) {
|
$(this._scrollElement).on(Event.SCROLL, function (event) {
|
||||||
return _this._process(event);
|
return _this._process(event);
|
||||||
});
|
});
|
||||||
|
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
|
||||||
this._process();
|
this._process();
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(ScrollSpy, [{
|
|
||||||
key: 'refresh',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = ScrollSpy.prototype;
|
||||||
|
|
||||||
value: function refresh() {
|
// public
|
||||||
var _this2 = this;
|
_proto.refresh = function refresh() {
|
||||||
|
var _this2 = this;
|
||||||
|
|
||||||
var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;
|
var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET;
|
||||||
|
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 = Util.getSelectorFromElement(element);
|
||||||
|
|
||||||
var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method;
|
if (targetSelector) {
|
||||||
|
target = $(targetSelector)[0];
|
||||||
|
}
|
||||||
|
|
||||||
var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0;
|
if (target) {
|
||||||
|
var targetBCR = target.getBoundingClientRect();
|
||||||
|
|
||||||
this._offsets = [];
|
if (targetBCR.width || targetBCR.height) {
|
||||||
this._targets = [];
|
// todo (fat): remove sketch reliance on jQuery position/offset
|
||||||
|
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
|
||||||
this._scrollHeight = this._getScrollHeight();
|
|
||||||
|
|
||||||
var targets = $.makeArray($(this._selector));
|
|
||||||
|
|
||||||
targets.map(function (element) {
|
|
||||||
var target = void 0;
|
|
||||||
var targetSelector = Util.getSelectorFromElement(element);
|
|
||||||
|
|
||||||
if (targetSelector) {
|
|
||||||
target = $(targetSelector)[0];
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (target) {
|
return null;
|
||||||
var targetBCR = target.getBoundingClientRect();
|
}).filter(function (item) {
|
||||||
if (targetBCR.width || targetBCR.height) {
|
return item;
|
||||||
// todo (fat): remove sketch reliance on jQuery position/offset
|
}).sort(function (a, b) {
|
||||||
return [$(target)[offsetMethod]().top + offsetBase, targetSelector];
|
return a[0] - b[0];
|
||||||
}
|
}).forEach(function (item) {
|
||||||
}
|
_this2._offsets.push(item[0]);
|
||||||
return null;
|
|
||||||
}).filter(function (item) {
|
_this2._targets.push(item[1]);
|
||||||
return item;
|
});
|
||||||
}).sort(function (a, b) {
|
};
|
||||||
return a[0] - b[0];
|
|
||||||
}).forEach(function (item) {
|
_proto.dispose = function dispose() {
|
||||||
_this2._offsets.push(item[0]);
|
$.removeData(this._element, DATA_KEY);
|
||||||
_this2._targets.push(item[1]);
|
$(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;
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
|
_proto._getConfig = function _getConfig(config) {
|
||||||
|
config = $.extend({}, Default, config);
|
||||||
|
|
||||||
|
if (typeof config.target !== 'string') {
|
||||||
|
var id = $(config.target).attr('id');
|
||||||
|
|
||||||
|
if (!id) {
|
||||||
|
id = Util.getUID(NAME);
|
||||||
|
$(config.target).attr('id', id);
|
||||||
|
}
|
||||||
|
|
||||||
|
config.target = "#" + id;
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: 'dispose',
|
|
||||||
value: function dispose() {
|
|
||||||
$.removeData(this._element, DATA_KEY);
|
|
||||||
$(this._scrollElement).off(EVENT_KEY);
|
|
||||||
|
|
||||||
this._element = null;
|
Util.typeCheckConfig(NAME, config, DefaultType);
|
||||||
this._scrollElement = null;
|
return config;
|
||||||
this._config = null;
|
};
|
||||||
this._selector = null;
|
|
||||||
this._offsets = null;
|
_proto._getScrollTop = function _getScrollTop() {
|
||||||
this._targets = null;
|
return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getScrollHeight = function _getScrollHeight() {
|
||||||
|
return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight);
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._getOffsetHeight = function _getOffsetHeight() {
|
||||||
|
return this._scrollElement === window ? window.innerHeight : this._scrollElement.getBoundingClientRect().height;
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._process = 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._activeTarget = null;
|
||||||
this._scrollHeight = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// private
|
|
||||||
|
|
||||||
}, {
|
|
||||||
key: '_getConfig',
|
|
||||||
value: function _getConfig(config) {
|
|
||||||
config = $.extend({}, Default, config);
|
|
||||||
|
|
||||||
if (typeof config.target !== 'string') {
|
|
||||||
var id = $(config.target).attr('id');
|
|
||||||
if (!id) {
|
|
||||||
id = Util.getUID(NAME);
|
|
||||||
$(config.target).attr('id', id);
|
|
||||||
}
|
|
||||||
config.target = '#' + id;
|
|
||||||
}
|
|
||||||
|
|
||||||
Util.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();
|
this._clear();
|
||||||
|
|
||||||
var queries = this._selector.split(',');
|
return;
|
||||||
// eslint-disable-next-line arrow-body-style
|
}
|
||||||
queries = queries.map(function (selector) {
|
|
||||||
return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]');
|
|
||||||
});
|
|
||||||
|
|
||||||
var $link = $(queries.join(','));
|
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 ($link.hasClass(ClassName.DROPDOWN_ITEM)) {
|
if (isActiveTarget) {
|
||||||
$link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
|
this._activate(this._targets[i]);
|
||||||
$link.addClass(ClassName.ACTIVE);
|
}
|
||||||
} else {
|
}
|
||||||
// Set triggered link as active
|
};
|
||||||
$link.addClass(ClassName.ACTIVE);
|
|
||||||
// Set triggered links parents as active
|
_proto._activate = function _activate(target) {
|
||||||
// With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
this._activeTarget = target;
|
||||||
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ', ' + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE);
|
|
||||||
|
this._clear();
|
||||||
|
|
||||||
|
var queries = this._selector.split(','); // eslint-disable-next-line arrow-body-style
|
||||||
|
|
||||||
|
|
||||||
|
queries = queries.map(function (selector) {
|
||||||
|
return selector + "[data-target=\"" + target + "\"]," + (selector + "[href=\"" + target + "\"]");
|
||||||
|
});
|
||||||
|
var $link = $(queries.join(','));
|
||||||
|
|
||||||
|
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 <ul> and <nav> markup a parent is the previous sibling of any nav ancestor
|
||||||
|
|
||||||
|
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_LINKS + ", " + Selector.LIST_ITEMS).addClass(ClassName.ACTIVE); // Handle special case when .nav-link is inside .nav-item
|
||||||
|
|
||||||
|
$link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this._scrollElement).trigger(Event.ACTIVATE, {
|
||||||
|
relatedTarget: target
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._clear = function _clear() {
|
||||||
|
$(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
|
||||||
|
}; // static
|
||||||
|
|
||||||
|
|
||||||
|
ScrollSpy._jQueryInterface = function _jQueryInterface(config) {
|
||||||
|
return this.each(function () {
|
||||||
|
var data = $(this).data(DATA_KEY);
|
||||||
|
|
||||||
|
var _config = typeof config === 'object' && config;
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
data = new ScrollSpy(this, _config);
|
||||||
|
$(this).data(DATA_KEY, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
$(this._scrollElement).trigger(Event.ACTIVATE, {
|
if (typeof config === 'string') {
|
||||||
relatedTarget: target
|
if (typeof data[config] === 'undefined') {
|
||||||
});
|
throw new Error("No method named \"" + config + "\"");
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: '_clear',
|
|
||||||
value: function _clear() {
|
|
||||||
$(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
// static
|
|
||||||
|
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
value: function _jQueryInterface(config) {
|
|
||||||
return this.each(function () {
|
|
||||||
var data = $(this).data(DATA_KEY);
|
|
||||||
var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config;
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
data = new ScrollSpy(this, _config);
|
|
||||||
$(this).data(DATA_KEY, data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (typeof config === 'string') {
|
data[config]();
|
||||||
if (typeof data[config] === 'undefined') {
|
}
|
||||||
throw new Error('No method named "' + config + '"');
|
});
|
||||||
}
|
};
|
||||||
data[config]();
|
|
||||||
}
|
_createClass(ScrollSpy, null, [{
|
||||||
});
|
key: "VERSION",
|
||||||
}
|
|
||||||
}, {
|
|
||||||
key: 'VERSION',
|
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
}, {
|
}, {
|
||||||
key: 'Default',
|
key: "Default",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return Default;
|
return Default;
|
||||||
}
|
}
|
||||||
|
@ -303,22 +280,22 @@ var ScrollSpy = function () {
|
||||||
|
|
||||||
return ScrollSpy;
|
return ScrollSpy;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
$(window).on(Event.LOAD_DATA_API, function () {
|
$(window).on(Event.LOAD_DATA_API, function () {
|
||||||
var scrollSpys = $.makeArray($(Selector.DATA_SPY));
|
var scrollSpys = $.makeArray($(Selector.DATA_SPY));
|
||||||
|
|
||||||
for (var i = scrollSpys.length; i--;) {
|
for (var i = scrollSpys.length; i--;) {
|
||||||
var $spy = $(scrollSpys[i]);
|
var $spy = $(scrollSpys[i]);
|
||||||
|
|
||||||
ScrollSpy._jQueryInterface.call($spy, $spy.data());
|
ScrollSpy._jQueryInterface.call($spy, $spy.data());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -327,6 +304,7 @@ var ScrollSpy = function () {
|
||||||
|
|
||||||
$.fn[NAME] = ScrollSpy._jQueryInterface;
|
$.fn[NAME] = ScrollSpy._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = ScrollSpy;
|
$.fn[NAME].Constructor = ScrollSpy;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return ScrollSpy._jQueryInterface;
|
return ScrollSpy._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,8 +1,6 @@
|
||||||
'use strict';
|
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
||||||
|
|
||||||
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
|
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
||||||
|
|
||||||
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
|
@ -10,31 +8,26 @@ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Cons
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Tab = function () {
|
var Tab = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Constants
|
* Constants
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var NAME = 'tab';
|
var NAME = 'tab';
|
||||||
var VERSION = '4.0.0-beta';
|
var VERSION = '4.0.0-beta';
|
||||||
var DATA_KEY = 'bs.tab';
|
var DATA_KEY = 'bs.tab';
|
||||||
var EVENT_KEY = '.' + DATA_KEY;
|
var EVENT_KEY = "." + DATA_KEY;
|
||||||
var DATA_API_KEY = '.data-api';
|
var DATA_API_KEY = '.data-api';
|
||||||
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
var JQUERY_NO_CONFLICT = $.fn[NAME];
|
||||||
var TRANSITION_DURATION = 150;
|
var TRANSITION_DURATION = 150;
|
||||||
|
|
||||||
var Event = {
|
var Event = {
|
||||||
HIDE: 'hide' + EVENT_KEY,
|
HIDE: "hide" + EVENT_KEY,
|
||||||
HIDDEN: 'hidden' + EVENT_KEY,
|
HIDDEN: "hidden" + EVENT_KEY,
|
||||||
SHOW: 'show' + EVENT_KEY,
|
SHOW: "show" + EVENT_KEY,
|
||||||
SHOWN: 'shown' + EVENT_KEY,
|
SHOWN: "shown" + EVENT_KEY,
|
||||||
CLICK_DATA_API: 'click' + EVENT_KEY + DATA_API_KEY
|
CLICK_DATA_API: "click" + EVENT_KEY + DATA_API_KEY
|
||||||
};
|
};
|
||||||
|
|
||||||
var ClassName = {
|
var ClassName = {
|
||||||
DROPDOWN_MENU: 'dropdown-menu',
|
DROPDOWN_MENU: 'dropdown-menu',
|
||||||
ACTIVE: 'active',
|
ACTIVE: 'active',
|
||||||
|
@ -42,7 +35,6 @@ var Tab = function () {
|
||||||
FADE: 'fade',
|
FADE: 'fade',
|
||||||
SHOW: 'show'
|
SHOW: 'show'
|
||||||
};
|
};
|
||||||
|
|
||||||
var Selector = {
|
var Selector = {
|
||||||
DROPDOWN: '.dropdown',
|
DROPDOWN: '.dropdown',
|
||||||
NAV_LIST_GROUP: '.nav, .list-group',
|
NAV_LIST_GROUP: '.nav, .list-group',
|
||||||
|
@ -51,7 +43,6 @@ var Tab = function () {
|
||||||
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
|
DATA_TOGGLE: '[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',
|
||||||
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
DROPDOWN_TOGGLE: '.dropdown-toggle',
|
||||||
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
DROPDOWN_ACTIVE_CHILD: '> .dropdown-menu .active'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Class Definition
|
* Class Definition
|
||||||
|
@ -59,184 +50,177 @@ var Tab = function () {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
};
|
};
|
||||||
var Tab = function () {
|
|
||||||
|
var Tab =
|
||||||
|
/*#__PURE__*/
|
||||||
|
function () {
|
||||||
function Tab(element) {
|
function Tab(element) {
|
||||||
_classCallCheck(this, Tab);
|
|
||||||
|
|
||||||
this._element = element;
|
this._element = element;
|
||||||
}
|
} // getters
|
||||||
|
|
||||||
// getters
|
|
||||||
|
|
||||||
_createClass(Tab, [{
|
|
||||||
key: 'show',
|
|
||||||
|
|
||||||
|
|
||||||
// public
|
var _proto = Tab.prototype;
|
||||||
|
|
||||||
value: function show() {
|
// public
|
||||||
var _this = this;
|
_proto.show = function show() {
|
||||||
|
var _this = this;
|
||||||
|
|
||||||
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
|
if (this._element.parentNode && this._element.parentNode.nodeType === Node.ELEMENT_NODE && $(this._element).hasClass(ClassName.ACTIVE) || $(this._element).hasClass(ClassName.DISABLED)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var target = void 0;
|
var target;
|
||||||
var previous = void 0;
|
var previous;
|
||||||
var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0];
|
var listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0];
|
||||||
var selector = Util.getSelectorFromElement(this._element);
|
var selector = Util.getSelectorFromElement(this._element);
|
||||||
|
|
||||||
if (listElement) {
|
if (listElement) {
|
||||||
var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
|
var itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE;
|
||||||
previous = $.makeArray($(listElement).find(itemSelector));
|
previous = $.makeArray($(listElement).find(itemSelector));
|
||||||
previous = previous[previous.length - 1];
|
previous = previous[previous.length - 1];
|
||||||
}
|
}
|
||||||
|
|
||||||
var hideEvent = $.Event(Event.HIDE, {
|
var hideEvent = $.Event(Event.HIDE, {
|
||||||
relatedTarget: this._element
|
relatedTarget: this._element
|
||||||
|
});
|
||||||
|
var showEvent = $.Event(Event.SHOW, {
|
||||||
|
relatedTarget: previous
|
||||||
|
});
|
||||||
|
|
||||||
|
if (previous) {
|
||||||
|
$(previous).trigger(hideEvent);
|
||||||
|
}
|
||||||
|
|
||||||
|
$(this._element).trigger(showEvent);
|
||||||
|
|
||||||
|
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (selector) {
|
||||||
|
target = $(selector)[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
this._activate(this._element, listElement);
|
||||||
|
|
||||||
|
var complete = function complete() {
|
||||||
|
var hiddenEvent = $.Event(Event.HIDDEN, {
|
||||||
|
relatedTarget: _this._element
|
||||||
});
|
});
|
||||||
|
var shownEvent = $.Event(Event.SHOWN, {
|
||||||
var showEvent = $.Event(Event.SHOW, {
|
|
||||||
relatedTarget: previous
|
relatedTarget: previous
|
||||||
});
|
});
|
||||||
|
$(previous).trigger(hiddenEvent);
|
||||||
|
$(_this._element).trigger(shownEvent);
|
||||||
|
};
|
||||||
|
|
||||||
if (previous) {
|
if (target) {
|
||||||
$(previous).trigger(hideEvent);
|
this._activate(target, target.parentNode, complete);
|
||||||
}
|
} else {
|
||||||
|
complete();
|
||||||
$(this._element).trigger(showEvent);
|
|
||||||
|
|
||||||
if (showEvent.isDefaultPrevented() || hideEvent.isDefaultPrevented()) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (selector) {
|
|
||||||
target = $(selector)[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
this._activate(this._element, listElement);
|
|
||||||
|
|
||||||
var complete = function complete() {
|
|
||||||
var hiddenEvent = $.Event(Event.HIDDEN, {
|
|
||||||
relatedTarget: _this._element
|
|
||||||
});
|
|
||||||
|
|
||||||
var shownEvent = $.Event(Event.SHOWN, {
|
|
||||||
relatedTarget: previous
|
|
||||||
});
|
|
||||||
|
|
||||||
$(previous).trigger(hiddenEvent);
|
|
||||||
$(_this._element).trigger(shownEvent);
|
|
||||||
};
|
|
||||||
|
|
||||||
if (target) {
|
|
||||||
this._activate(target, target.parentNode, complete);
|
|
||||||
} else {
|
|
||||||
complete();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}, {
|
};
|
||||||
key: 'dispose',
|
|
||||||
value: function dispose() {
|
_proto.dispose = function dispose() {
|
||||||
$.removeData(this._element, DATA_KEY);
|
$.removeData(this._element, DATA_KEY);
|
||||||
this._element = null;
|
this._element = null;
|
||||||
|
}; // private
|
||||||
|
|
||||||
|
|
||||||
|
_proto._activate = function _activate(element, container, callback) {
|
||||||
|
var _this2 = this;
|
||||||
|
|
||||||
|
var activeElements;
|
||||||
|
|
||||||
|
if (container.nodeName === 'UL') {
|
||||||
|
activeElements = $(container).find(Selector.ACTIVE_UL);
|
||||||
|
} else {
|
||||||
|
activeElements = $(container).children(Selector.ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// private
|
var active = activeElements[0];
|
||||||
|
var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE);
|
||||||
|
|
||||||
}, {
|
var complete = function complete() {
|
||||||
key: '_activate',
|
return _this2._transitionComplete(element, active, isTransitioning, callback);
|
||||||
value: function _activate(element, container, callback) {
|
};
|
||||||
var _this2 = this;
|
|
||||||
|
|
||||||
var activeElements = void 0;
|
if (active && isTransitioning) {
|
||||||
if (container.nodeName === 'UL') {
|
$(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
||||||
activeElements = $(container).find(Selector.ACTIVE_UL);
|
} else {
|
||||||
} else {
|
complete();
|
||||||
activeElements = $(container).children(Selector.ACTIVE);
|
}
|
||||||
|
|
||||||
|
if (active) {
|
||||||
|
$(active).removeClass(ClassName.SHOW);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
_proto._transitionComplete = function _transitionComplete(element, active, isTransitioning, callback) {
|
||||||
|
if (active) {
|
||||||
|
$(active).removeClass(ClassName.ACTIVE);
|
||||||
|
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
||||||
|
|
||||||
|
if (dropdownChild) {
|
||||||
|
$(dropdownChild).removeClass(ClassName.ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
var active = activeElements[0];
|
if (active.getAttribute('role') === 'tab') {
|
||||||
var isTransitioning = callback && Util.supportsTransitionEnd() && active && $(active).hasClass(ClassName.FADE);
|
active.setAttribute('aria-selected', false);
|
||||||
|
|
||||||
var complete = function complete() {
|
|
||||||
return _this2._transitionComplete(element, active, isTransitioning, callback);
|
|
||||||
};
|
|
||||||
|
|
||||||
if (active && isTransitioning) {
|
|
||||||
$(active).one(Util.TRANSITION_END, complete).emulateTransitionEnd(TRANSITION_DURATION);
|
|
||||||
} else {
|
|
||||||
complete();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (active) {
|
|
||||||
$(active).removeClass(ClassName.SHOW);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}, {
|
|
||||||
key: '_transitionComplete',
|
|
||||||
value: function _transitionComplete(element, active, isTransitioning, callback) {
|
|
||||||
if (active) {
|
|
||||||
$(active).removeClass(ClassName.ACTIVE);
|
|
||||||
|
|
||||||
var dropdownChild = $(active.parentNode).find(Selector.DROPDOWN_ACTIVE_CHILD)[0];
|
$(element).addClass(ClassName.ACTIVE);
|
||||||
|
|
||||||
if (dropdownChild) {
|
if (element.getAttribute('role') === 'tab') {
|
||||||
$(dropdownChild).removeClass(ClassName.ACTIVE);
|
element.setAttribute('aria-selected', true);
|
||||||
}
|
}
|
||||||
|
|
||||||
active.setAttribute('aria-expanded', false);
|
if (isTransitioning) {
|
||||||
|
Util.reflow(element);
|
||||||
|
$(element).addClass(ClassName.SHOW);
|
||||||
|
} else {
|
||||||
|
$(element).removeClass(ClassName.FADE);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
|
||||||
|
var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
|
||||||
|
|
||||||
|
if (dropdownElement) {
|
||||||
|
$(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
$(element).addClass(ClassName.ACTIVE);
|
|
||||||
element.setAttribute('aria-expanded', true);
|
element.setAttribute('aria-expanded', true);
|
||||||
|
|
||||||
if (isTransitioning) {
|
|
||||||
Util.reflow(element);
|
|
||||||
$(element).addClass(ClassName.SHOW);
|
|
||||||
} else {
|
|
||||||
$(element).removeClass(ClassName.FADE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (element.parentNode && $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {
|
|
||||||
|
|
||||||
var dropdownElement = $(element).closest(Selector.DROPDOWN)[0];
|
|
||||||
if (dropdownElement) {
|
|
||||||
$(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE);
|
|
||||||
}
|
|
||||||
|
|
||||||
element.setAttribute('aria-expanded', true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (callback) {
|
|
||||||
callback();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// static
|
if (callback) {
|
||||||
|
callback();
|
||||||
}], [{
|
|
||||||
key: '_jQueryInterface',
|
|
||||||
value: function _jQueryInterface(config) {
|
|
||||||
return this.each(function () {
|
|
||||||
var $this = $(this);
|
|
||||||
var data = $this.data(DATA_KEY);
|
|
||||||
|
|
||||||
if (!data) {
|
|
||||||
data = new Tab(this);
|
|
||||||
$this.data(DATA_KEY, data);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof config === 'string') {
|
|
||||||
if (typeof data[config] === 'undefined') {
|
|
||||||
throw new Error('No method named "' + config + '"');
|
|
||||||
}
|
|
||||||
data[config]();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}, {
|
}; // static
|
||||||
key: 'VERSION',
|
|
||||||
|
|
||||||
|
Tab._jQueryInterface = function _jQueryInterface(config) {
|
||||||
|
return this.each(function () {
|
||||||
|
var $this = $(this);
|
||||||
|
var data = $this.data(DATA_KEY);
|
||||||
|
|
||||||
|
if (!data) {
|
||||||
|
data = new Tab(this);
|
||||||
|
$this.data(DATA_KEY, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (typeof config === 'string') {
|
||||||
|
if (typeof data[config] === 'undefined') {
|
||||||
|
throw new Error("No method named \"" + config + "\"");
|
||||||
|
}
|
||||||
|
|
||||||
|
data[config]();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
_createClass(Tab, null, [{
|
||||||
|
key: "VERSION",
|
||||||
get: function get() {
|
get: function get() {
|
||||||
return VERSION;
|
return VERSION;
|
||||||
}
|
}
|
||||||
|
@ -244,18 +228,18 @@ var Tab = function () {
|
||||||
|
|
||||||
return Tab;
|
return Tab;
|
||||||
}();
|
}();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Data Api implementation
|
* Data Api implementation
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
$(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
Tab._jQueryInterface.call($(this), 'show');
|
Tab._jQueryInterface.call($(this), 'show');
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* jQuery
|
* jQuery
|
||||||
|
@ -264,6 +248,7 @@ var Tab = function () {
|
||||||
|
|
||||||
$.fn[NAME] = Tab._jQueryInterface;
|
$.fn[NAME] = Tab._jQueryInterface;
|
||||||
$.fn[NAME].Constructor = Tab;
|
$.fn[NAME].Constructor = Tab;
|
||||||
|
|
||||||
$.fn[NAME].noConflict = function () {
|
$.fn[NAME].noConflict = function () {
|
||||||
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
$.fn[NAME] = JQUERY_NO_CONFLICT;
|
||||||
return Tab._jQueryInterface;
|
return Tab._jQueryInterface;
|
||||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
File diff suppressed because one or more lines are too long
|
@ -1,39 +1,29 @@
|
||||||
'use strict';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* Bootstrap (v4.0.0-beta): util.js
|
* Bootstrap (v4.0.0-beta): util.js
|
||||||
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var Util = function () {
|
var Util = function () {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
* Private TransitionEnd Helpers
|
* Private TransitionEnd Helpers
|
||||||
* ------------------------------------------------------------------------
|
* ------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var transition = false;
|
var transition = false;
|
||||||
|
|
||||||
var MAX_UID = 1000000;
|
var MAX_UID = 1000000;
|
||||||
|
|
||||||
var TransitionEndEvent = {
|
var TransitionEndEvent = {
|
||||||
WebkitTransition: 'webkitTransitionEnd',
|
WebkitTransition: 'webkitTransitionEnd',
|
||||||
MozTransition: 'transitionend',
|
MozTransition: 'transitionend',
|
||||||
OTransition: 'oTransitionEnd otransitionend',
|
OTransition: 'oTransitionEnd otransitionend',
|
||||||
transition: 'transitionend'
|
transition: 'transitionend' // shoutout AngusCroll (https://goo.gl/pxwQGp)
|
||||||
|
|
||||||
// shoutout AngusCroll (https://goo.gl/pxwQGp)
|
};
|
||||||
};function toType(obj) {
|
|
||||||
|
function toType(obj) {
|
||||||
return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
|
return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
function isElement(obj) {
|
|
||||||
return (obj[0] || obj).nodeType;
|
|
||||||
}
|
|
||||||
|
|
||||||
function getSpecialTransitionEndEvent() {
|
function getSpecialTransitionEndEvent() {
|
||||||
return {
|
return {
|
||||||
bindType: transition.end,
|
bindType: transition.end,
|
||||||
|
@ -42,6 +32,7 @@ var Util = function () {
|
||||||
if ($(event.target).is(this)) {
|
if ($(event.target).is(this)) {
|
||||||
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params
|
||||||
}
|
}
|
||||||
|
|
||||||
return undefined; // eslint-disable-line no-undefined
|
return undefined; // eslint-disable-line no-undefined
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -69,49 +60,45 @@ var Util = function () {
|
||||||
var _this = this;
|
var _this = this;
|
||||||
|
|
||||||
var called = false;
|
var called = false;
|
||||||
|
|
||||||
$(this).one(Util.TRANSITION_END, function () {
|
$(this).one(Util.TRANSITION_END, function () {
|
||||||
called = true;
|
called = true;
|
||||||
});
|
});
|
||||||
|
|
||||||
setTimeout(function () {
|
setTimeout(function () {
|
||||||
if (!called) {
|
if (!called) {
|
||||||
Util.triggerTransitionEnd(_this);
|
Util.triggerTransitionEnd(_this);
|
||||||
}
|
}
|
||||||
}, duration);
|
}, duration);
|
||||||
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setTransitionEndSupport() {
|
function setTransitionEndSupport() {
|
||||||
transition = transitionEndTest();
|
transition = transitionEndTest();
|
||||||
|
|
||||||
$.fn.emulateTransitionEnd = transitionEndEmulator;
|
$.fn.emulateTransitionEnd = transitionEndEmulator;
|
||||||
|
|
||||||
if (Util.supportsTransitionEnd()) {
|
if (Util.supportsTransitionEnd()) {
|
||||||
$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
|
$.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
* Public Util Api
|
* Public Util Api
|
||||||
* --------------------------------------------------------------------------
|
* --------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
var Util = {
|
var Util = {
|
||||||
|
|
||||||
TRANSITION_END: 'bsTransitionEnd',
|
TRANSITION_END: 'bsTransitionEnd',
|
||||||
|
|
||||||
getUID: function getUID(prefix) {
|
getUID: function getUID(prefix) {
|
||||||
do {
|
do {
|
||||||
// eslint-disable-next-line no-bitwise
|
// eslint-disable-next-line no-bitwise
|
||||||
prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
|
prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here
|
||||||
} while (document.getElementById(prefix));
|
} while (document.getElementById(prefix));
|
||||||
|
|
||||||
return prefix;
|
return prefix;
|
||||||
},
|
},
|
||||||
getSelectorFromElement: function getSelectorFromElement(element) {
|
getSelectorFromElement: function getSelectorFromElement(element) {
|
||||||
var selector = element.getAttribute('data-target');
|
var selector = element.getAttribute('data-target');
|
||||||
|
|
||||||
if (!selector || selector === '#') {
|
if (!selector || selector === '#') {
|
||||||
selector = element.getAttribute('href') || '';
|
selector = element.getAttribute('href') || '';
|
||||||
}
|
}
|
||||||
|
@ -132,23 +119,24 @@ var Util = function () {
|
||||||
supportsTransitionEnd: function supportsTransitionEnd() {
|
supportsTransitionEnd: function supportsTransitionEnd() {
|
||||||
return Boolean(transition);
|
return Boolean(transition);
|
||||||
},
|
},
|
||||||
|
isElement: function isElement(obj) {
|
||||||
|
return (obj[0] || obj).nodeType;
|
||||||
|
},
|
||||||
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
|
typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) {
|
||||||
for (var property in configTypes) {
|
for (var property in configTypes) {
|
||||||
if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
|
if (Object.prototype.hasOwnProperty.call(configTypes, property)) {
|
||||||
var expectedTypes = configTypes[property];
|
var expectedTypes = configTypes[property];
|
||||||
var value = config[property];
|
var value = config[property];
|
||||||
var valueType = value && isElement(value) ? 'element' : toType(value);
|
var valueType = value && Util.isElement(value) ? 'element' : toType(value);
|
||||||
|
|
||||||
if (!new RegExp(expectedTypes).test(valueType)) {
|
if (!new RegExp(expectedTypes).test(valueType)) {
|
||||||
throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".'));
|
throw new Error(componentName.toUpperCase() + ": " + ("Option \"" + property + "\" provided type \"" + valueType + "\" ") + ("but expected type \"" + expectedTypes + "\"."));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
setTransitionEndSupport();
|
setTransitionEndSupport();
|
||||||
|
|
||||||
return Util;
|
return Util;
|
||||||
}(jQuery);
|
}(jQuery);
|
||||||
//# sourceMappingURL=util.js.map
|
//# sourceMappingURL=util.js.map
|
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue