taskui
This commit is contained in:
parent
fe571b36ed
commit
718d9df37b
6 changed files with 21 additions and 211 deletions
|
@ -1,5 +1,3 @@
|
|||
'use strict';
|
||||
|
||||
class HoverIntent {
|
||||
|
||||
constructor({
|
||||
|
|
|
@ -1,37 +0,0 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<script src="hoverIntent.js"></script>
|
||||
<script src="https://en.js.cx/test/libs.js"></script>
|
||||
<script src="test.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="elem" class="clock">
|
||||
<span class="hours">12</span> :
|
||||
<span class="minutes">30</span> :
|
||||
<span class="seconds">00</span>
|
||||
</div>
|
||||
|
||||
<div id="tooltip" hidden>Tooltip</div>
|
||||
|
||||
<script>
|
||||
new HoverIntent({
|
||||
elem,
|
||||
over() {
|
||||
tooltip.style.left = elem.getBoundingClientRect().left + 5 + 'px';
|
||||
tooltip.style.top = elem.getBoundingClientRect().bottom + 5 + 'px';
|
||||
tooltip.hidden = false;
|
||||
},
|
||||
out() {
|
||||
tooltip.hidden = true;
|
||||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
|
@ -1,38 +0,0 @@
|
|||
.hours {
|
||||
color: red;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.minutes {
|
||||
color: green;
|
||||
}
|
||||
|
||||
.seconds {
|
||||
color: blue;
|
||||
}
|
||||
|
||||
.clock {
|
||||
border: 1px dashed black;
|
||||
padding: 5px;
|
||||
display: inline-block;
|
||||
background: yellow;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 0;
|
||||
}
|
||||
|
||||
#tooltip {
|
||||
position: absolute;
|
||||
padding: 10px 20px;
|
||||
border: 1px solid #b3c9ce;
|
||||
border-radius: 4px;
|
||||
text-align: center;
|
||||
font: italic 14px/1.3 sans-serif;
|
||||
color: #333;
|
||||
background: #fff;
|
||||
z-index: 100000;
|
||||
box-shadow: 3px 3px 3px rgba(0, 0, 0, .3);
|
||||
}
|
|
@ -1,98 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
describe("hoverIntent", function() {
|
||||
|
||||
function mouse(eventType, x, y, options) {
|
||||
let eventOptions = Object.assign({
|
||||
bubbles: true,
|
||||
clientX: x,
|
||||
clientY: y,
|
||||
pageX: x,
|
||||
pageY: y,
|
||||
target: elem
|
||||
}, options || {});
|
||||
|
||||
elem.dispatchEvent(new MouseEvent(eventType, eventOptions));
|
||||
}
|
||||
|
||||
|
||||
let isOver;
|
||||
let hoverIntent;
|
||||
|
||||
|
||||
before(function() {
|
||||
this.clock = sinon.useFakeTimers();
|
||||
});
|
||||
|
||||
after(function() {
|
||||
this.clock.restore();
|
||||
});
|
||||
|
||||
|
||||
beforeEach(function() {
|
||||
isOver = false;
|
||||
|
||||
hoverIntent = new HoverIntent({
|
||||
elem: elem,
|
||||
over: function() {
|
||||
isOver = true;
|
||||
},
|
||||
out: function() {
|
||||
isOver = false;
|
||||
}
|
||||
});
|
||||
})
|
||||
|
||||
afterEach(function() {
|
||||
if (hoverIntent) {
|
||||
hoverIntent.destroy();
|
||||
}
|
||||
})
|
||||
|
||||
it("mouseover -> when the pointer just arrived, no tooltip", function() {
|
||||
mouse('mouseover', 10, 10);
|
||||
assert.isFalse(isOver);
|
||||
});
|
||||
|
||||
it("mouseover -> after a delay, the tooltip shows up", function() {
|
||||
mouse('mouseover', 10, 10);
|
||||
this.clock.tick(100);
|
||||
assert.isTrue(isOver);
|
||||
});
|
||||
|
||||
it("mouseover -> followed by fast mouseout leads doesn't show tooltip", function() {
|
||||
mouse('mouseover', 10, 10);
|
||||
setTimeout(
|
||||
() => mouse('mouseout', 300, 300, { relatedTarget: document.body}),
|
||||
30
|
||||
);
|
||||
this.clock.tick(100);
|
||||
assert.isFalse(isOver);
|
||||
});
|
||||
|
||||
|
||||
it("mouseover -> slow move -> tooltips", function() {
|
||||
mouse('mouseover', 10, 10);
|
||||
for(let i=10; i<200; i+= 10) {
|
||||
setTimeout(
|
||||
() => mouse('mousemove', i/5, 10),
|
||||
i
|
||||
);
|
||||
}
|
||||
this.clock.tick(200);
|
||||
assert.isTrue(isOver);
|
||||
});
|
||||
|
||||
it("mouseover -> fast move -> no tooltip", function() {
|
||||
mouse('mouseover', 10, 10);
|
||||
for(let i=10; i<200; i+= 10) {
|
||||
setTimeout(
|
||||
() => mouse('mousemove', i, 10),
|
||||
i
|
||||
);
|
||||
}
|
||||
this.clock.tick(200);
|
||||
assert.isFalse(isOver);
|
||||
});
|
||||
|
||||
});
|
|
@ -1,5 +1,3 @@
|
|||
'use strict';
|
||||
|
||||
// Here's a brief sketch of the class
|
||||
// with things that you'll need anyway
|
||||
class HoverIntent {
|
||||
|
|
|
@ -1,15 +1,5 @@
|
|||
<!doctype html>
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<link rel="stylesheet" href="style.css">
|
||||
<script src="hoverIntent.js"></script>
|
||||
<script src="https://en.js.cx/test/libs.js"></script>
|
||||
<script src="test.js"></script>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div id="elem" class="clock">
|
||||
<span class="hours">12</span> :
|
||||
|
@ -32,6 +22,3 @@
|
|||
}
|
||||
});
|
||||
</script>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue