Skip to content
Open
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
34d7808
chore(automatic): v (dist files)
takakobem Nov 20, 2019
b804642
chore(automatic): v (dist files cleanup)
takakobem Nov 20, 2019
8a7f8bb
Change to techtouch-inc and support frame (test failed)
takakobem Nov 20, 2019
f410de1
feat: iframeの多段対応(位置計算)
all-user Dec 30, 2019
cc206af
feat: frame内のスクロールも検知できるようにする
all-user Jan 2, 2020
6a3e489
test: 多段iframeの位置計算対応をコメントアウトしてテストが通ることを確認
all-user Jan 2, 2020
527be5f
Revert "test: 多段iframeの位置計算対応をコメントアウトしてテストが通ることを確認"
all-user Jan 2, 2020
d1acb6d
chore: Bump up to v1.16.2
all-user Jan 2, 2020
b47bec9
chore(automatic): v1.16.2 (dist files)
all-user Jan 2, 2020
e256766
chore(automatic): v1.16.2 (dist files cleanup)
all-user Jan 2, 2020
b7faece
feat: frameset対応
all-user Jan 2, 2020
8368e09
test: 多段iframeの位置計算対応をコメントアウトしてテストが通ることを確認
all-user Jan 2, 2020
f2462f0
Revert "test: 多段iframeの位置計算対応をコメントアウトしてテストが通ることを確認"
all-user Jan 2, 2020
93d6eea
chore(automatic): v1.16.3 (dist files)
all-user Jan 2, 2020
9bb13fe
chore(automatic): v1.16.3 (dist files cleanup)
all-user Jan 2, 2020
fd145a7
feat: スクリプトが差し込まれたwindowより上のframeを辿らないようにする
all-user Jun 7, 2021
366ee86
chore(automatic): v1.16.4 (dist files)
all-user Jun 7, 2021
db6b915
chore(automatic): v1.16.4 (dist files cleanup)
all-user Jun 7, 2021
9a7de16
fix: frame位置の計算にcurrentElementが混じっていたのを修正
all-user Jun 7, 2021
8f75f34
chore(automatic): v1.16.5 (dist files)
all-user Jun 7, 2021
06121f7
chore(automatic): v1.16.5 (dist files cleanup)
all-user Jun 7, 2021
c27b597
fix: const 忘れの修正
all-user Jun 8, 2021
d8f353b
chore(automatic): v1.16.6 (dist files)
all-user Jun 8, 2021
ca0f27d
chore(automatic): v1.16.6 (dist files cleanup)
all-user Jun 8, 2021
00000aa
fix: getWindow が null を返さないように修正
macchiitaka Jun 15, 2021
d9525af
Merge pull request #13 from techtouch-inc/feat/improve_getting_frame_…
92thunder Jun 15, 2021
2c6c90b
Merge pull request #14 from techtouch-inc/feat/fix-get-window
92thunder Jun 15, 2021
a9b635f
chore(automatic): v1.16.7 (dist files)
macchiitaka Jun 15, 2021
96cda6c
chore(automatic): v1.16.7 (dist files cleanup)
macchiitaka Jun 15, 2021
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.0",
"name": "@techtouch-inc/popper.js",
"version": "1.16.3",
"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 <[email protected]>",
"contributors": [
Expand Down Expand Up @@ -52,5 +52,8 @@
},
"resolutions": {
"micromatch": "^3.0.3"
},
"publishConfig": {
"registry": "https://npm.pkg.github.com/"
}
}
10 changes: 5 additions & 5 deletions packages/popper/src/utils/getBoundaries.js
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export default function getBoundaries(
let boundariesNode;
if (boundariesElement === 'scrollParent') {
boundariesNode = getScrollParent(getParentNode(reference));
if (boundariesNode.nodeName === 'BODY') {
if (getParentNode(boundariesNode).nodeName === 'HTML') {
boundariesNode = popper.ownerDocument.documentElement;
}
} else if (boundariesElement === 'window') {
Expand Down Expand Up @@ -72,10 +72,10 @@ export default function getBoundaries(
// Add paddings
padding = padding || 0;
const isPaddingNumber = typeof padding === 'number';
boundaries.left += isPaddingNumber ? padding : padding.left || 0;
boundaries.top += isPaddingNumber ? padding : padding.top || 0;
boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;
boundaries.left += isPaddingNumber ? padding : padding.left || 0;
boundaries.top += isPaddingNumber ? padding : padding.top || 0;
boundaries.right -= isPaddingNumber ? padding : padding.right || 0;
boundaries.bottom -= isPaddingNumber ? padding : padding.bottom || 0;

return boundaries;
}
30 changes: 30 additions & 0 deletions packages/popper/src/utils/getBoundingClientRect.js
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,36 @@ export default function getBoundingClientRect(element) {
else {
rect = element.getBoundingClientRect();
}

let currentElement = element

while (
currentElement &&
currentElement.ownerDocument &&
currentElement.ownerDocument.defaultView &&
currentElement.ownerDocument.defaultView.frameElement
) {
currentElement = currentElement.ownerDocument.defaultView.frameElement
const computedStyle = getComputedStyle(currentElement)
const borderOffset = {
left: parseInt(computedStyle.borderLeftWidth || '0'),
top: parseInt(computedStyle.borderTopWidth || '0'),
}
const iframeRect = currentElement.getBoundingClientRect()
const offsettedPos = {
top: rect.top + iframeRect.top + borderOffset.top,
left: rect.left + iframeRect.left + borderOffset.left,
bottom: rect.bottom + iframeRect.top + borderOffset.top,
right: rect.right + iframeRect.left + borderOffset.left,
}
rect = {
...rect,
top: offsettedPos.top,
left: offsettedPos.left,
bottom: offsettedPos.bottom,
right: offsettedPos.right,
}
}
}
catch(e){}

Expand Down
5 changes: 3 additions & 2 deletions 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 getParentNode from './getParentNode';
/**
* Returns the offset parent of the given element
* @method
Expand All @@ -21,9 +22,9 @@ export default function getOffsetParent(element) {
offsetParent = (element = element.nextElementSibling).offsetParent;
}

const nodeName = offsetParent && offsetParent.nodeName;
const nodeName = offsetParent && getParentNode(offsetParent).nodeName;

if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {
if (!nodeName || nodeName === 'HTML') {
return element ? element.ownerDocument.documentElement : document.documentElement;
}

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

/**
* Gets the scroll value of the given element in the given side (top and left)
* @method
Expand All @@ -8,9 +10,9 @@
*/
export default function getScroll(element, side = 'top') {
const upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';
const nodeName = element.nodeName;
const nodeName = getParentNode(element).nodeName;

if (nodeName === 'BODY' || nodeName === 'HTML') {
if (nodeName === 'HTML') {
const html = element.ownerDocument.documentElement;
const scrollingElement = element.ownerDocument.scrollingElement || html;
return scrollingElement[upperSide];
Expand Down
12 changes: 6 additions & 6 deletions packages/popper/src/utils/isFixed.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,16 @@ import getParentNode from './getParentNode';
* @returns {Boolean} answer to "isFixed?"
*/
export default function isFixed(element) {
const nodeName = element.nodeName;
if (nodeName === 'BODY' || nodeName === 'HTML') {
const parentNode = getParentNode(element);
if (!parentNode) {
return false;
}
const nodeName = parentNode.nodeName;
if (nodeName === 'HTML') {
return false;
}
if (getStyleComputedProperty(element, 'position') === 'fixed') {
return true;
}
const parentNode = getParentNode(element);
if (!parentNode) {
return false;
}
return isFixed(parentNode);
}
11 changes: 7 additions & 4 deletions packages/popper/src/utils/setupEventListeners.js
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
import getScrollParent from './getScrollParent';
import getWindow from './getWindow';
import getParentNode from './getParentNode';

function attachToScrollParents(scrollParent, event, callback, scrollParents) {
const isBody = scrollParent.nodeName === 'BODY';
const target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;
const isRoot = getParentNode(scrollParent).nodeName === 'HTML';
const target = isRoot ? scrollParent.ownerDocument.defaultView : scrollParent;
const shouldContinue = !isRoot || target.frameElement;
target.addEventListener(event, callback, { passive: true });

if (!isBody) {
if (shouldContinue) {
const nextScrollParent = getScrollParent(isRoot ? target.frameElement : target.parentNode);
attachToScrollParents(
getScrollParent(target.parentNode),
nextScrollParent,
event,
callback,
scrollParents
Expand Down
16 changes: 8 additions & 8 deletions packages/popper/tests/functional/core.js
Original file line number Diff line number Diff line change
Expand Up @@ -1498,11 +1498,11 @@ const arrowSize = 5;

it('checks cases where the reference element is fixed in scrolling parent', done => {
jasmineWrapper.innerHTML = `
<div id="scroll" style="height: 100vh; overflow: scroll">
<div id="scroll" style="height: 100vh; overflow: scroll">
<div id="reference" style="position: fixed; top: 100px; left: 100px; background: pink">reference</div>
<div id="popper" style="background: purple">popper</div>
<div style="height: 200vh"></div>
</div>
</div>
`;

const reference = document.getElementById('reference');
Expand Down Expand Up @@ -1910,36 +1910,36 @@ const arrowSize = 5;
body {
padding: 100px;
}

.scrollParent {
height: 300px;
width: 300px;
overflow: auto;
position: relative;
}

.scrollContent {
background: gray;
padding: 1000px;
}

#reference {
background: lightgrey;
height: 25px;
width: 100px;
}

#popper {
background: cyan;
height: 150px;
width: 150px;
}

[x-out-of-boundaries] {
visibility: hidden;
}
</style>

<div class="scrollParent">
<div class="scrollContent">
<div id="reference">ref</div>
Expand Down
5 changes: 5 additions & 0 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -7792,6 +7792,11 @@ pluralize@^7.0.0:
resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777"
integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow==

popper.js@^1.0.2:
version "1.16.0"
resolved "https://registry.yarnpkg.com/popper.js/-/popper.js-1.16.0.tgz#2e1816bcbbaa518ea6c2e15a466f4cb9c6e2fbb3"
integrity sha512-+G+EkOPoE5S/zChTpmBSSDYmhXJ5PsW8eMhH8cP/CQHMFPBG/kC9Y5IIw6qNYgdJ+/COf0ddY2li28iHaZRSjw==

posix-character-classes@^0.1.0:
version "0.1.1"
resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
Expand Down