This commit is contained in:
Mark Otto 2017-09-30 14:28:03 -07:00
parent 136c49a13f
commit f5ad6e3987
40 changed files with 3517 additions and 3926 deletions

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

View File

@ -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

View File

@ -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

View File

@ -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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

215
js/dist/alert.js vendored
View File

@ -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

155
js/dist/button.js vendored
View File

@ -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

731
js/dist/carousel.js vendored
View File

@ -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

444
js/dist/collapse.js vendored
View File

@ -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

569
js/dist/dropdown.js vendored
View File

@ -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

4
js/dist/index.js vendored
View File

@ -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');
} }

View File

@ -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"]}

848
js/dist/modal.js vendored
View File

@ -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

189
js/dist/popover.js vendored
View File

@ -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

386
js/dist/scrollspy.js vendored
View File

@ -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

317
js/dist/tab.js vendored
View File

@ -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;

2
js/dist/tab.js.map vendored

File diff suppressed because one or more lines are too long

936
js/dist/tooltip.js vendored

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

38
js/dist/util.js vendored
View File

@ -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

2
js/dist/util.js.map vendored

File diff suppressed because one or more lines are too long