|
@@ -1,6 +1,6 @@
|
|
|
/**!
|
|
|
* @fileOverview Kickass library to create and place poppers near their reference elements.
|
|
|
- * @version 1.15.0
|
|
|
+ * @version 1.16.0
|
|
|
* @license
|
|
|
* Copyright (c) 2016 Federico Zivolo and contributors
|
|
|
*
|
|
@@ -28,16 +28,17 @@
|
|
|
(global.Popper = factory());
|
|
|
}(this, (function () { 'use strict';
|
|
|
|
|
|
-var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';
|
|
|
+var isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && typeof navigator !== 'undefined';
|
|
|
|
|
|
-var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
|
|
|
-var timeoutDuration = 0;
|
|
|
-for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
|
|
|
- if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
|
|
|
- timeoutDuration = 1;
|
|
|
- break;
|
|
|
+var timeoutDuration = function () {
|
|
|
+ var longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];
|
|
|
+ for (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {
|
|
|
+ if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
}
|
|
|
-}
|
|
|
+ return 0;
|
|
|
+}();
|
|
|
|
|
|
function microtaskDebounce(fn) {
|
|
|
var called = false;
|
|
@@ -157,6 +158,17 @@ function getScrollParent(element) {
|
|
|
return getScrollParent(getParentNode(element));
|
|
|
}
|
|
|
|
|
|
+/**
|
|
|
+ * Returns the reference node of the reference object, or the reference object itself.
|
|
|
+ * @method
|
|
|
+ * @memberof Popper.Utils
|
|
|
+ * @param {Element|Object} reference - the reference element (the popper will be relative to this)
|
|
|
+ * @returns {Element} parent
|
|
|
+ */
|
|
|
+function getReferenceNode(reference) {
|
|
|
+ return reference && reference.referenceNode ? reference.referenceNode : reference;
|
|
|
+}
|
|
|
+
|
|
|
var isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);
|
|
|
var isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);
|
|
|
|
|
@@ -465,8 +477,8 @@ function getBoundingClientRect(element) {
|
|
|
|
|
|
// subtract scrollbar size from sizes
|
|
|
var sizes = element.nodeName === 'HTML' ? getWindowSizes(element.ownerDocument) : {};
|
|
|
- var width = sizes.width || element.clientWidth || result.right - result.left;
|
|
|
- var height = sizes.height || element.clientHeight || result.bottom - result.top;
|
|
|
+ var width = sizes.width || element.clientWidth || result.width;
|
|
|
+ var height = sizes.height || element.clientHeight || result.height;
|
|
|
|
|
|
var horizScrollbar = element.offsetWidth - width;
|
|
|
var vertScrollbar = element.offsetHeight - height;
|
|
@@ -618,7 +630,7 @@ function getBoundaries(popper, reference, padding, boundariesElement) {
|
|
|
// NOTE: 1 DOM access here
|
|
|
|
|
|
var boundaries = { top: 0, left: 0 };
|
|
|
- var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);
|
|
|
+ var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
|
|
|
|
|
|
// Handle viewport case
|
|
|
if (boundariesElement === 'viewport') {
|
|
@@ -746,7 +758,7 @@ function computeAutoPlacement(placement, refRect, popper, reference, boundariesE
|
|
|
function getReferenceOffsets(state, popper, reference) {
|
|
|
var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
|
|
|
|
|
|
- var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);
|
|
|
+ var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, getReferenceNode(reference));
|
|
|
return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);
|
|
|
}
|
|
|
|
|
@@ -1008,7 +1020,7 @@ function destroy() {
|
|
|
|
|
|
this.disableEventListeners();
|
|
|
|
|
|
- // remove the popper if user explicity asked for the deletion on destroy
|
|
|
+ // remove the popper if user explicitly asked for the deletion on destroy
|
|
|
// do not use `remove` because IE11 doesn't support it
|
|
|
if (this.options.removeOnDestroy) {
|
|
|
this.popper.parentNode.removeChild(this.popper);
|