Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"name": "popperjs-monorepo",
"name": "@techtouch-inc/popperjs-monorepo",
"version": "0.0.0",
"license": "MIT",
"private": true,
Expand Down Expand Up @@ -42,5 +42,8 @@
"dependencies": {},
"workspaces": [
"packages/*"
]
],
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
}
9 changes: 6 additions & 3 deletions packages/popper/package.json
Original file line number Diff line number Diff line change
@@ -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 <federico.zivolo@gmail.com>",
"contributors": [
Expand Down Expand Up @@ -52,5 +52,8 @@
},
"resolutions": {
"micromatch": "^3.0.3"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
}
3 changes: 2 additions & 1 deletion packages/popper/src/utils/getBoundaries.js
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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') {
Expand Down
3 changes: 2 additions & 1 deletion packages/popper/src/utils/getOffsetParent.js
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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;
}

Expand Down
6 changes: 6 additions & 0 deletions packages/popper/src/utils/getParentNodeAndParentNodeIs.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import getParentNode from './getParentNode';

export default function getParentNodeAndParentNodeIs(element, condition) {
const parentNode = getParentNode(element)
return parentNode && condition(parentNode)
}
3 changes: 2 additions & 1 deletion packages/popper/src/utils/getScroll.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import getParentNodeAndParentNodeIs from './getParentNodeAndParentNodeIs';
/**
* Gets the scroll value of the given element in the given side (top and left)
* @method
Expand All @@ -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];
Expand Down
4 changes: 3 additions & 1 deletion packages/popper/src/utils/getStyleComputedProperty.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import getWindow from './getWindow';

/**
* Get CSS computed property of the given element
* @method
Expand All @@ -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;
}
3 changes: 2 additions & 1 deletion packages/popper/src/utils/isFixed.js
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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') {
Expand Down
3 changes: 2 additions & 1 deletion packages/popper/src/utils/setupEventListeners.js
Original file line number Diff line number Diff line change
@@ -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 });

Expand Down