import popper.js
Signed-off-by: Nico Schottelius <nico@nico-notebook.schottelius.org>
This commit is contained in:
parent
615dc56d16
commit
16fb2bb919
241 changed files with 34099 additions and 0 deletions
|
|
@ -0,0 +1,97 @@
|
|||
import getBoundaries from '../../src/utils/getBoundaries';
|
||||
|
||||
describe('utils/getBoundaries', () => {
|
||||
let node;
|
||||
let spacing;
|
||||
let scrolling;
|
||||
let scrollingChild;
|
||||
let popper;
|
||||
let scrollingPopper;
|
||||
|
||||
function setCss(element, css) {
|
||||
for (const key in css) {
|
||||
if (css.hasOwnProperty(key)) {
|
||||
element.style[key] = css[key];
|
||||
}
|
||||
}
|
||||
}
|
||||
function expectBoundary(result, expected) {
|
||||
const tolerance = 2;
|
||||
expect(Math.abs(result.top - expected.top) <= tolerance).toBeTruthy();
|
||||
expect(Math.abs(result.right - expected.right) <= tolerance).toBeTruthy();
|
||||
expect(Math.abs(result.bottom - expected.bottom) <= tolerance).toBeTruthy();
|
||||
expect(Math.abs(result.left - expected.left) <= tolerance).toBeTruthy();
|
||||
}
|
||||
|
||||
beforeEach(() => {
|
||||
node = document.createElement('div');
|
||||
spacing = document.createElement('div');
|
||||
popper = document.createElement('div');
|
||||
scrollingPopper = document.createElement('div');
|
||||
|
||||
scrolling = document.createElement('div');
|
||||
setCss(scrolling, {
|
||||
top: '150px',
|
||||
left: '160px',
|
||||
right: '300px',
|
||||
bottom: '400px',
|
||||
height: '150px',
|
||||
width: '125px',
|
||||
});
|
||||
|
||||
scrollingChild = document.createElement('div');
|
||||
setCss(scrollingChild, {
|
||||
overflow: 'scroll',
|
||||
top: '50px',
|
||||
left: '60px',
|
||||
right: '-100px',
|
||||
bottom: '-200px',
|
||||
height: '350px',
|
||||
width: '625px',
|
||||
position: 'absolute',
|
||||
transform: 'translate3d(100px, 100px, 0)',
|
||||
willChange: 'transform',
|
||||
});
|
||||
|
||||
document.body.appendChild(node);
|
||||
node.appendChild(spacing);
|
||||
node.appendChild(scrolling);
|
||||
node.appendChild(popper);
|
||||
scrolling.appendChild(scrollingChild);
|
||||
scrollingChild.appendChild(scrollingPopper);
|
||||
});
|
||||
|
||||
afterEach(() => {
|
||||
document.body.removeChild(node);
|
||||
});
|
||||
|
||||
it('returns a boundary defined by the document element.', () => {
|
||||
const result = getBoundaries(popper, node, 0, 'window', true);
|
||||
expectBoundary(result, {
|
||||
top: 0,
|
||||
right: window.innerWidth,
|
||||
bottom: window.innerHeight,
|
||||
left: 0,
|
||||
});
|
||||
});
|
||||
|
||||
it('returns a boundary defined by the document element by way of a child reference.', () => {
|
||||
const result = getBoundaries(popper, spacing, 0, 'scrollParent', true);
|
||||
expectBoundary(result, {
|
||||
top: 0,
|
||||
right: window.innerWidth,
|
||||
bottom: window.innerHeight,
|
||||
left: 0,
|
||||
});
|
||||
});
|
||||
|
||||
it('returns a custom defined boundary within the page.', () => {
|
||||
const result = getBoundaries(scrollingPopper, scrollingChild, 0, 'scrollParent', false);
|
||||
expectBoundary(result, {
|
||||
top: -150,
|
||||
right: window.innerWidth - 160,
|
||||
bottom: window.innerHeight - 150,
|
||||
left: -160,
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Add table
Add a link
Reference in a new issue