diff --git a/package.json b/package.json index ea4ae1299f..344cfb64b7 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "popperjs-monorepo", + "name": "@techtouch-inc/popperjs-monorepo", "version": "0.0.0", "license": "MIT", "private": true, @@ -42,5 +42,8 @@ "dependencies": {}, "workspaces": [ "packages/*" - ] + ], + "publishConfig": { + "registry": "https://npm.pkg.github.com/" + } } diff --git a/packages/popper/package.json b/packages/popper/package.json index aa985637b5..df997ba2c4 100644 --- a/packages/popper/package.json +++ b/packages/popper/package.json @@ -1,11 +1,11 @@ { - "name": "popper.js", - "version": "1.16.1", + "name": "@techtouch-inc/popper.js", + "version": "1.17.1", "description": "A kickass library to manage your poppers", "homepage": "https://popper.js.org", "repository": { "type": "git", - "url": "git+https://github.com/FezVrasta/popper.js.git" + "url": "git+https://github.com/techtouch-inc/popper.js.git" }, "author": "Federico Zivolo ", "contributors": [ @@ -52,5 +52,8 @@ }, "resolutions": { "micromatch": "^3.0.3" + }, + "publishConfig": { + "registry": "https://npm.pkg.github.com/" } } diff --git a/packages/popper/src/utils/getBoundaries.js b/packages/popper/src/utils/getBoundaries.js index 45cb54ab91..281d10f1f1 100644 --- a/packages/popper/src/utils/getBoundaries.js +++ b/packages/popper/src/utils/getBoundaries.js @@ -7,6 +7,7 @@ import getViewportOffsetRectRelativeToArtbitraryNode from './getViewportOffsetRe import getWindowSizes from './getWindowSizes'; import isFixed from './isFixed'; import getFixedPositionOffsetParent from './getFixedPositionOffsetParent'; +import getParentNodeAndParentNodeIs from './getParentNodeAndParentNodeIs'; /** * Computed the boundaries limits and return them @@ -41,7 +42,7 @@ export default function getBoundaries( let boundariesNode; if (boundariesElement === 'scrollParent') { boundariesNode = getScrollParent(getParentNode(reference)); - if (boundariesNode.nodeName === 'BODY') { + if (boundariesNode.nodeName === 'BODY' || getParentNodeAndParentNodeIs(boundariesNode, parent => parent.nodeName === 'HTML')) { boundariesNode = popper.ownerDocument.documentElement; } } else if (boundariesElement === 'window') { diff --git a/packages/popper/src/utils/getOffsetParent.js b/packages/popper/src/utils/getOffsetParent.js index 875aacda63..90e76df6b1 100644 --- a/packages/popper/src/utils/getOffsetParent.js +++ b/packages/popper/src/utils/getOffsetParent.js @@ -1,5 +1,6 @@ import getStyleComputedProperty from './getStyleComputedProperty'; import isIE from './isIE'; +import getParentNodeAndParentNodeIs from './getParentNodeAndParentNodeIs'; /** * Returns the offset parent of the given element * @method @@ -23,7 +24,7 @@ export default function getOffsetParent(element) { const nodeName = offsetParent && offsetParent.nodeName; - if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') { + if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML' || getParentNodeAndParentNodeIs(offsetParent, parent => parent.nodeName === 'HTML')) { return element ? element.ownerDocument.documentElement : document.documentElement; } diff --git a/packages/popper/src/utils/getParentNodeAndParentNodeIs.js b/packages/popper/src/utils/getParentNodeAndParentNodeIs.js new file mode 100644 index 0000000000..ea31121623 --- /dev/null +++ b/packages/popper/src/utils/getParentNodeAndParentNodeIs.js @@ -0,0 +1,6 @@ +import getParentNode from './getParentNode'; + +export default function getParentNodeAndParentNodeIs(element, condition) { + const parentNode = getParentNode(element) + return parentNode && condition(parentNode) +} diff --git a/packages/popper/src/utils/getScroll.js b/packages/popper/src/utils/getScroll.js index b94f06aec6..50b3f31f0b 100644 --- a/packages/popper/src/utils/getScroll.js +++ b/packages/popper/src/utils/getScroll.js @@ -1,3 +1,4 @@ +import getParentNodeAndParentNodeIs from './getParentNodeAndParentNodeIs'; /** * Gets the scroll value of the given element in the given side (top and left) * @method @@ -10,7 +11,7 @@ export default function getScroll(element, side = 'top') { const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft'; const nodeName = element.nodeName; - if (nodeName === 'BODY' || nodeName === 'HTML') { + if (nodeName === 'BODY' || nodeName === 'HTML' || getParentNodeAndParentNodeIs(element, parent => parent.nodeName === 'HTML')) { const html = element.ownerDocument.documentElement; const scrollingElement = element.ownerDocument.scrollingElement || html; return scrollingElement[upperSide]; diff --git a/packages/popper/src/utils/getStyleComputedProperty.js b/packages/popper/src/utils/getStyleComputedProperty.js index 014f32bb8e..cd456e4a56 100644 --- a/packages/popper/src/utils/getStyleComputedProperty.js +++ b/packages/popper/src/utils/getStyleComputedProperty.js @@ -1,3 +1,5 @@ +import getWindow from './getWindow'; + /** * Get CSS computed property of the given element * @method @@ -10,7 +12,7 @@ export default function getStyleComputedProperty(element, property) { return []; } // NOTE: 1 DOM access here - const window = element.ownerDocument.defaultView; + const window = getWindow(element); const css = window.getComputedStyle(element, null); return property ? css[property] : css; } diff --git a/packages/popper/src/utils/isFixed.js b/packages/popper/src/utils/isFixed.js index b4ad5af927..3e102d3adf 100644 --- a/packages/popper/src/utils/isFixed.js +++ b/packages/popper/src/utils/isFixed.js @@ -1,5 +1,6 @@ import getStyleComputedProperty from './getStyleComputedProperty'; import getParentNode from './getParentNode'; +import getParentNodeAndParentNodeIs from './getParentNodeAndParentNodeIs'; /** * Check if the given element is fixed or is inside a fixed parent @@ -11,7 +12,7 @@ import getParentNode from './getParentNode'; */ export default function isFixed(element) { const nodeName = element.nodeName; - if (nodeName === 'BODY' || nodeName === 'HTML') { + if (nodeName === 'BODY' || nodeName === 'HTML' || getParentNodeAndParentNodeIs(element, parent => parent.nodeName === 'HTML')) { return false; } if (getStyleComputedProperty(element, 'position') === 'fixed') { diff --git a/packages/popper/src/utils/setupEventListeners.js b/packages/popper/src/utils/setupEventListeners.js index 0b1255f9e3..47aee352f0 100644 --- a/packages/popper/src/utils/setupEventListeners.js +++ b/packages/popper/src/utils/setupEventListeners.js @@ -1,8 +1,9 @@ import getScrollParent from './getScrollParent'; import getWindow from './getWindow'; +import getParentNodeAndParentNodeIs from './getParentNodeAndParentNodeIs'; function attachToScrollParents(scrollParent, event, callback, scrollParents) { - const isBody = scrollParent.nodeName === 'BODY'; + const isBody = scrollParent.nodeName === 'BODY' || getParentNodeAndParentNodeIs(scrollParent, parent => parent.nodeName === 'HTML'); const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent; target.addEventListener(event, callback, { passive: true });