Add docs and allow modifying padding
Browse files- .eslintrc.json +5 -2
- README.md +14 -0
- assets/scripts/src/overlay.js +14 -12
- assets/scripts/src/sholo.js +5 -2
.eslintrc.json
CHANGED
|
@@ -9,7 +9,10 @@
|
|
| 9 |
"no-plusplus": "off",
|
| 10 |
"no-cond-assign": "off",
|
| 11 |
"func-names": "off",
|
| 12 |
-
"no-param-reassign": [
|
| 13 |
-
|
|
|
|
|
|
|
|
|
|
| 14 |
}
|
| 15 |
}
|
|
|
|
| 9 |
"no-plusplus": "off",
|
| 10 |
"no-cond-assign": "off",
|
| 11 |
"func-names": "off",
|
| 12 |
+
"no-param-reassign": [
|
| 13 |
+
"off"
|
| 14 |
+
],
|
| 15 |
+
"max-len": "off",
|
| 16 |
+
"no-multi-spaces": "off"
|
| 17 |
}
|
| 18 |
}
|
README.md
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## spotlight-js
|
| 2 |
+
> Allows highlighting any element, adding feature introduction, adding hints
|
| 3 |
+
|
| 4 |
+
## Highlighting Single Elements
|
| 5 |
+
|
| 6 |
+
```javascript
|
| 7 |
+
const spotlight = new Spotlight({
|
| 8 |
+
opacity: 0.7, // opacity for the background
|
| 9 |
+
padding: 5, // padding around the element
|
| 10 |
+
});
|
| 11 |
+
|
| 12 |
+
spotlight.highlight('#some-element');
|
| 13 |
+
spotlight.clear();
|
| 14 |
+
```
|
assets/scripts/src/overlay.js
CHANGED
|
@@ -5,15 +5,17 @@ import Position from './position';
|
|
| 5 |
* cutting out the visible part, animating between the sections etc
|
| 6 |
*/
|
| 7 |
export default class Overlay {
|
| 8 |
-
constructor({ opacity = 0.75 }) {
|
| 9 |
-
this.opacity = opacity;
|
| 10 |
-
this.
|
| 11 |
-
|
| 12 |
-
this.
|
| 13 |
-
this.
|
| 14 |
-
this.
|
|
|
|
|
|
|
| 15 |
|
| 16 |
-
this.draw = this.draw.bind(this);
|
| 17 |
|
| 18 |
this.window = window;
|
| 19 |
this.document = document;
|
|
@@ -101,10 +103,10 @@ export default class Overlay {
|
|
| 101 |
|
| 102 |
// Remove the cloak from the position to highlight
|
| 103 |
this.removeCloak({
|
| 104 |
-
posX: this.highlightedPosition.left - window.scrollX -
|
| 105 |
-
posY: this.highlightedPosition.top - window.scrollY -
|
| 106 |
-
width: (this.highlightedPosition.right - this.highlightedPosition.left) + (
|
| 107 |
-
height: (this.highlightedPosition.bottom - this.highlightedPosition.top) + (
|
| 108 |
});
|
| 109 |
|
| 110 |
if (canHighlight) {
|
|
|
|
| 5 |
* cutting out the visible part, animating between the sections etc
|
| 6 |
*/
|
| 7 |
export default class Overlay {
|
| 8 |
+
constructor({ opacity = 0.75, padding = 5 }) {
|
| 9 |
+
this.opacity = opacity; // Fixed opacity for the layover
|
| 10 |
+
this.padding = padding; // Padding around the highlighted item
|
| 11 |
+
|
| 12 |
+
this.overlayAlpha = 0; // Is used to animate the layover
|
| 13 |
+
this.positionToHighlight = new Position({}); // position at which layover is to be patched at
|
| 14 |
+
this.highlightedPosition = new Position({}); // position at which layover is patched currently
|
| 15 |
+
this.redrawAnimation = null; // used to cancel the redraw animation
|
| 16 |
+
this.highlightedElement = null; // currently highlighted dom element (instance of Element)
|
| 17 |
|
| 18 |
+
this.draw = this.draw.bind(this); // To pass the context of class, as it is to be used in redraw animation callback
|
| 19 |
|
| 20 |
this.window = window;
|
| 21 |
this.document = document;
|
|
|
|
| 103 |
|
| 104 |
// Remove the cloak from the position to highlight
|
| 105 |
this.removeCloak({
|
| 106 |
+
posX: this.highlightedPosition.left - window.scrollX - this.padding,
|
| 107 |
+
posY: this.highlightedPosition.top - window.scrollY - this.padding,
|
| 108 |
+
width: (this.highlightedPosition.right - this.highlightedPosition.left) + (this.padding * 2),
|
| 109 |
+
height: (this.highlightedPosition.bottom - this.highlightedPosition.top) + (this.padding * 2),
|
| 110 |
});
|
| 111 |
|
| 112 |
if (canHighlight) {
|
assets/scripts/src/sholo.js
CHANGED
|
@@ -6,8 +6,11 @@ import './polyfill';
|
|
| 6 |
* Plugin class that drives the plugin
|
| 7 |
*/
|
| 8 |
export default class Sholo {
|
| 9 |
-
constructor({ opacity = 0.75 } = {}) {
|
| 10 |
-
this.overlay = new Overlay({
|
|
|
|
|
|
|
|
|
|
| 11 |
}
|
| 12 |
|
| 13 |
highlight(selector) {
|
|
|
|
| 6 |
* Plugin class that drives the plugin
|
| 7 |
*/
|
| 8 |
export default class Sholo {
|
| 9 |
+
constructor({ opacity = 0.75, padding = 5 } = {}) {
|
| 10 |
+
this.overlay = new Overlay({
|
| 11 |
+
opacity,
|
| 12 |
+
padding,
|
| 13 |
+
});
|
| 14 |
}
|
| 15 |
|
| 16 |
highlight(selector) {
|