Socket
Socket
Sign inDemoInstall

ripple-js

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

ripple-js - npm Package Compare versions

Comparing version 1.0.0 to 1.1.0

.gitattributes

2

package.json
{
"name": "ripple-js",
"version": "1.0.0",
"version": "1.1.0",
"description": "A small library for ripple effects",

@@ -5,0 +5,0 @@ "main": "ripple.min.js",

@@ -1,128 +0,128 @@

//Mady by Aaron Längert in 2016
window.addEventListener("load", function() {
document.head.innerHTML += '<style type="text/css">.ripple { overflow: hidden; position: relative; } .ripple .rippleContainer { display: inline-block; height: 0px !important; width: 0px !important; padding: 0px 0px 0px 0px; border-radius: 50%; position: absolute; top: 0px; left: 0px; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); background-color: transparent; }</style>';
registerRipples();
});
registerRipples = function() {
rippleButtons = document.getElementsByClassName("ripple");
for (ripplei = 0; ripplei < rippleButtons.length; ripplei++) {
rippleButtons[ripplei].addEventListener("touchstart", function(e) {
rippleStart(e);
}, false);
rippleButtons[ripplei].addEventListener("touchmove", function(e) {
if (!document.elementFromPoint(e.touches[0].pageX, e.touches[0].pageY).className.includes("rippleContainer") || !document.elementFromPoint(e.touches[0].pageX, e.touches[0].pageY).parentNode.className.includes("ripple")) {
rippleRetrieve(e);
}
}, false);
rippleButtons[ripplei].addEventListener("touchend", function(e) {
rippleEnd(e.target);
}, false);
rippleButtons[ripplei].addEventListener("mousedown", function(e) {
rippleStart(e);
}, false);
rippleButtons[ripplei].addEventListener("mouseup", function(e) {
rippleEnd(e.target);
}, false);
rippleButtons[ripplei].addEventListener("mouseleave", function(e) {
rippleRetrieve(e);
}, false);
rippleButtons[ripplei].addEventListener("transitionend", function(e) {
collapseTime = e.target.parentNode.getAttribute("ripple-leave-collapse-time") || .4;
expandTime = e.target.parentNode.getAttribute("ripple-release-expand-time") || .4;
if (e.elapsedTime == collapseTime || e.elapsedTime == expandTime) {
e.target.style.transition = "none";
e.target.style.padding = "0px";
e.target.style.boxShadow = "none";
e.target.setAttribute("animating", "0");
}
}, false);
if (getRippleContainer(rippleButtons[ripplei]) == rippleButtons[ripplei]) {
rippleButtons[ripplei].innerHTML += '<div class="rippleContainer"></div>';
//Written by Aaron Längert
var ripple = function() {
window.addEventListener("load", function() {
//add stylesheet at finished load
document.head.innerHTML += '<style type="text/css">.ripple { overflow: hidden; position: relative; } .ripple .rippleContainer { display: inline-block; height: 0px !important; width: 0px !important; padding: 0px 0px 0px 0px; border-radius: 50%; position: absolute; top: 0px; left: 0px; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); background-color: transparent; } .ripple * {pointer-events: none;}</style>';
ripple.registerRipples();
});
function rippleStart(e) {
rippleContainer = getRippleContainer(e.target);
if (rippleContainer.getAttribute("animating") == "0" || !rippleContainer.hasAttribute("animating")) {
rippleContainer.setAttribute("animating", "1");
scroll = getScroll(e.target);
offsetX = typeof e.offsetX == "number" ? e.offsetX : e.touches[0].pageX - scroll.left;
offsetY = typeof e.offsetY == "number" ? e.offsetY : e.touches[0].pageY - scroll.top;
//fullCoverRadius is the longest distance between the touch and the corners of the element where the event fired
fullCoverRadius = Math.max(Math.sqrt(Math.pow(offsetX, 2) + Math.pow(offsetY, 2)), Math.sqrt(Math.pow(e.target.clientWidth - offsetX, 2) + Math.pow(e.target.clientHeight - offsetY, 2)), Math.sqrt(Math.pow(offsetX, 2) + Math.pow(e.target.clientHeight - offsetY, 2)), Math.sqrt(Math.pow(offsetY, 2) + Math.pow(e.target.clientWidth - offsetX, 2)));
expandTime = e.target.getAttribute("ripple-press-expand-time") || 3;
rippleContainer.style.transition = "padding " + expandTime + "s ease-out, box-shadow 0.1s linear";
rippleContainer.style.background = e.target.getAttribute("ripple-color") || "white";
rippleContainer.style.opacity = e.target.getAttribute("ripple-opacity") || "0.6";
rippleContainer.style.boxShadow = e.target.getAttribute("ripple-shadow") || "none";
rippleContainer.style.top = offsetY + "px";
rippleContainer.style.left = offsetX + "px";
rippleContainer.style.padding = fullCoverRadius + "px";
}
}
};
rippleStart = function(e) {
rippleContainer = getRippleContainer(e.target);
if (rippleContainer.getAttribute("animating") == "0" || !rippleContainer.hasAttribute("animating")) {
rippleContainer.setAttribute("animating", "1");
scroll = getScroll(e.target);
offsetX = e.offsetX || e.touches[0].pageX - e.target.offsetLeft + scroll.left;
offsetY = e.offsetY || e.touches[0].pageY - e.target.offsetTop + scroll.top;
fullCoverRadius = Math.max(Math.sqrt(Math.pow(offsetX, 2) + Math.pow(offsetY, 2)), Math.sqrt(Math.pow(e.target.clientWidth - offsetX, 2) + Math.pow(e.target.clientHeight - offsetY, 2)), Math.sqrt(Math.pow(offsetX, 2) + Math.pow(e.target.clientHeight - offsetY, 2)), Math.sqrt(Math.pow(offsetY, 2) + Math.pow(e.target.clientWidth - offsetX, 2)));
expandTime = e.target.getAttribute("ripple-press-expand-time") || 3;
rippleContainer.style.transition = "padding " + expandTime + "s ease-out, box-shadow 0.1s linear";
rippleContainer.style.background = e.target.getAttribute("ripple-color") || "white";
rippleContainer.style.opacity = e.target.getAttribute("ripple-opacity") || "0.6";
rippleContainer.style.boxShadow = e.target.getAttribute("ripple-shadow") || "none";
rippleContainer.style.top = String(offsetY) + "px";
rippleContainer.style.left = String(offsetX) + "px";
rippleContainer.style.padding = String(fullCoverRadius) + "px";
function rippleEnd(e) {
rippleContainer = getRippleContainer(e.target);
if (rippleContainer.getAttribute("animating") == "1") {
rippleContainer.setAttribute("animating", "2");
radius = window.getComputedStyle(rippleContainer, null).getPropertyValue("padding");
background = window.getComputedStyle(rippleContainer, null).getPropertyValue("background");
destinationRadius = e.target.clientWidth + e.target.clientHeight;
rippleContainer.style.transition = "none";
rippleContainer.style.padding = radius;
expandTime = e.target.getAttribute("ripple-release-expand-time") || .4;
rippleContainer.style.transition = "padding " + expandTime + "s linear, background " + expandTime + "s linear, opacity " + expandTime + "s ease-in-out";
rippleContainer.style.padding = destinationRadius + "px";
rippleContainer.style.background = "radial-gradient(transparent 10%, " + background + " 40%)";
rippleContainer.style.opacity = "0";
//fire custom event
e.target.dispatchEvent(new CustomEvent("ripple-button-click", {
target: e.target
}));
}
}
};
rippleEnd = function(el) {
try {
if (!el.className.match(/(?:^|\s)rippleContainer(?!\S)/)) {
window.setTimeout(rippleEnd, 1, getRippleContainer(el));
return;
function rippleRetrieve(e) {
rippleContainer = getRippleContainer(e.target);
if (rippleContainer.getAttribute("animating") == "1") {
rippleContainer.setAttribute("animating", "3");
collapseTime = e.target.getAttribute("ripple-leave-collapse-time") || .4;
rippleContainer.style.transition = "padding " + collapseTime + "s linear, box-shadow " + collapseTime + "s linear";
rippleContainer.style.boxShadow = "none";
rippleContainer.style.padding = "0px";
}
} catch (err) {}
if (el.getAttribute("animating") == "1") {
el.setAttribute("animating", "2");
radius = window.getComputedStyle(el, null).getPropertyValue("padding");
background = window.getComputedStyle(el, null).getPropertyValue("background");
destinationRadius = el.parentNode.clientWidth + el.parentNode.clientHeight;
el.style.transition = "none";
el.style.padding = radius;
expandTime = el.parentNode.getAttribute("ripple-release-expand-time") || .4;
el.style.transition = "padding " + expandTime + "s linear, background " + expandTime + "s linear, opacity " + expandTime + "s ease-in-out";
el.style.padding = String(destinationRadius) + "px";
el.style.background = "radial-gradient(transparent 10%, " + background + " 40%)";
el.style.opacity = "0";
el.parentNode.dispatchEvent(new CustomEvent("ripple-button-click", {
target: el.parentNode
}));
}
};
rippleRetrieve = function(e) {
rippleContainer = getRippleContainer(e.target);
if (rippleContainer.getAttribute("animating") == "1") {
rippleContainer.setAttribute("animating", "3");
collapseTime = e.target.getAttribute("ripple-leave-collapse-time") || .4;
rippleContainer.style.transition = "padding " + collapseTime + "s linear, box-shadow " + collapseTime + "s linear";
rippleContainer.style.boxShadow = "none";
rippleContainer.style.padding = "0px";
//returns the ripple div by scanning all children. If not found, return the argument
function getRippleContainer(el) {
childs = el.childNodes;
for (ii = 0; ii < childs.length; ii++) {
try {
if (childs[ii].className.indexOf("rippleContainer") > -1) {
return childs[ii];
}
} catch (err) {}
}
return el;
}
};
getRippleContainer = function(el) {
childs = el.childNodes;
for (i = 0; i < childs.length; i++) {
try {
if (childs[i].className.match(/(?:^|\s)rippleContainer(?!\S)/)) {
return childs[i];
//calculates the top and left space of the document hidden due to scrolling
function getScroll(el) {
scroll = {
top: 0 + el.getBoundingClientRect().top,
left: 0 + el.getBoundingClientRect().left
};
do {
scroll.top += el.scrollTop || 0;
scroll.left += el.scrollLeft || 0;
} while (el = el.parentNode);
return scroll;
}
var ripple = {
registerRipples: function() {
//loop through all elements with the class ripple and add eventlisteners to them
rippleButtons = document.getElementsByClassName("ripple");
for (i = 0; i < rippleButtons.length; i++) {
rippleButtons[i].addEventListener("touchstart", function(e) {
rippleStart(e);
}, false);
rippleButtons[i].addEventListener("touchmove", function(e) {
try {
scroll = getScroll(e.target);
overEl = document.elementFromPoint(e.touches[0].pageX - scroll.left, e.touches[0].pageY - scroll.top).className.indexOf("ripple") >= 0;
} catch (err) {
overEl = false;
}
if (!overEl) {
rippleRetrieve(e);
}
}, false);
rippleButtons[i].addEventListener("touchend", function(e) {
rippleEnd(e);
}, false);
rippleButtons[i].addEventListener("mousedown", function(e) {
rippleStart(e);
}, false);
rippleButtons[i].addEventListener("mouseup", function(e) {
rippleEnd(e);
}, false);
rippleButtons[i].addEventListener("mouseleave", function(e) {
rippleRetrieve(e);
}, false);
rippleButtons[i].addEventListener("transitionend", function(e) {
if (e.target.getAttribute("animating") == "2" || e.target.getAttribute("animating") == "3") {
e.target.style.transition = "none";
e.target.style.padding = "0px";
e.target.style.boxShadow = "none";
e.target.setAttribute("animating", "0");
}
}, false);
//if not there, create a ripple div inside the element
if (getRippleContainer(rippleButtons[i]) == rippleButtons[i]) {
rippleButtons[i].innerHTML += '<div class="rippleContainer"></div>';
}
}
} catch (err) {}
}
return el;
};
getScroll = function(el) {
scroll = {
top: 0,
left: 0
}
};
do {
if (el.scrollTop) {
scroll.top += el.scrollTop;
}
if (el.scrollLeft) {
scroll.left += scrollLeft;
}
} while (el = el.parentNode);
return scroll;
};
return ripple;
}();

@@ -1,2 +0,2 @@

//Made by Aaron Längert in 2016
window.addEventListener("load",function(){document.head.innerHTML+='<style type="text/css">.ripple { overflow: hidden; position: relative; } .ripple .rippleContainer { display: inline-block; height: 0px !important; width: 0px !important; padding: 0px 0px 0px 0px; border-radius: 50%; position: absolute; top: 0px; left: 0px; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); background-color: transparent; }</style>',registerRipples()}),registerRipples=function(){for(rippleButtons=document.getElementsByClassName("ripple"),ripplei=0;ripplei<rippleButtons.length;ripplei++)rippleButtons[ripplei].addEventListener("touchstart",function(e){rippleStart(e)},!1),rippleButtons[ripplei].addEventListener("touchmove",function(e){document.elementFromPoint(e.touches[0].pageX,e.touches[0].pageY).className.includes("rippleContainer")&&document.elementFromPoint(e.touches[0].pageX,e.touches[0].pageY).parentNode.className.includes("ripple")||rippleRetrieve(e)},!1),rippleButtons[ripplei].addEventListener("touchend",function(e){rippleEnd(e.target)},!1),rippleButtons[ripplei].addEventListener("mousedown",function(e){rippleStart(e)},!1),rippleButtons[ripplei].addEventListener("mouseup",function(e){rippleEnd(e.target)},!1),rippleButtons[ripplei].addEventListener("mouseleave",function(e){rippleRetrieve(e)},!1),rippleButtons[ripplei].addEventListener("transitionend",function(e){collapseTime=e.target.parentNode.getAttribute("ripple-leave-collapse-time")||.4,expandTime=e.target.parentNode.getAttribute("ripple-release-expand-time")||.4,(e.elapsedTime==collapseTime||e.elapsedTime==expandTime)&&(e.target.style.transition="none",e.target.style.padding="0px",e.target.style.boxShadow="none",e.target.setAttribute("animating","0"))},!1),getRippleContainer(rippleButtons[ripplei])==rippleButtons[ripplei]&&(rippleButtons[ripplei].innerHTML+='<div class="rippleContainer"></div>')},rippleStart=function(e){rippleContainer=getRippleContainer(e.target),"0"!=rippleContainer.getAttribute("animating")&&rippleContainer.hasAttribute("animating")||(rippleContainer.setAttribute("animating","1"),scroll=getScroll(e.target),offsetX=e.offsetX||e.touches[0].pageX-e.target.offsetLeft+scroll.left,offsetY=e.offsetY||e.touches[0].pageY-e.target.offsetTop+scroll.top,fullCoverRadius=Math.max(Math.sqrt(Math.pow(offsetX,2)+Math.pow(offsetY,2)),Math.sqrt(Math.pow(e.target.clientWidth-offsetX,2)+Math.pow(e.target.clientHeight-offsetY,2)),Math.sqrt(Math.pow(offsetX,2)+Math.pow(e.target.clientHeight-offsetY,2)),Math.sqrt(Math.pow(offsetY,2)+Math.pow(e.target.clientWidth-offsetX,2))),expandTime=e.target.getAttribute("ripple-press-expand-time")||3,rippleContainer.style.transition="padding "+expandTime+"s ease-out, box-shadow 0.1s linear",rippleContainer.style.background=e.target.getAttribute("ripple-color")||"white",rippleContainer.style.opacity=e.target.getAttribute("ripple-opacity")||"0.6",rippleContainer.style.boxShadow=e.target.getAttribute("ripple-shadow")||"none",rippleContainer.style.top=String(offsetY)+"px",rippleContainer.style.left=String(offsetX)+"px",rippleContainer.style.padding=String(fullCoverRadius)+"px")},rippleEnd=function(e){try{if(!e.className.match(/(?:^|\s)rippleContainer(?!\S)/))return void window.setTimeout(rippleEnd,1,getRippleContainer(e))}catch(t){}"1"==e.getAttribute("animating")&&(e.setAttribute("animating","2"),radius=window.getComputedStyle(e,null).getPropertyValue("padding"),background=window.getComputedStyle(e,null).getPropertyValue("background"),destinationRadius=e.parentNode.clientWidth+e.parentNode.clientHeight,e.style.transition="none",e.style.padding=radius,expandTime=e.parentNode.getAttribute("ripple-release-expand-time")||.4,e.style.transition="padding "+expandTime+"s linear, background "+expandTime+"s linear, opacity "+expandTime+"s ease-in-out",e.style.padding=String(destinationRadius)+"px",e.style.background="radial-gradient(transparent 10%, "+background+" 40%)",e.style.opacity="0",e.parentNode.dispatchEvent(new CustomEvent("ripple-button-click",{target:e.parentNode})))},rippleRetrieve=function(e){rippleContainer=getRippleContainer(e.target),"1"==rippleContainer.getAttribute("animating")&&(rippleContainer.setAttribute("animating","3"),collapseTime=e.target.getAttribute("ripple-leave-collapse-time")||.4,rippleContainer.style.transition="padding "+collapseTime+"s linear, box-shadow "+collapseTime+"s linear",rippleContainer.style.boxShadow="none",rippleContainer.style.padding="0px")},getRippleContainer=function(e){for(childs=e.childNodes,i=0;i<childs.length;i++)try{if(childs[i].className.match(/(?:^|\s)rippleContainer(?!\S)/))return childs[i]}catch(t){}return e},getScroll=function(e){scroll={top:0,left:0};do e.scrollTop&&(scroll.top+=e.scrollTop),e.scrollLeft&&(scroll.left+=scrollLeft);while(e=e.parentNode);return scroll};
//Written by Aaron Längert
var ripple=function(){function t(t){rippleContainer=r(t.target),"0"!=rippleContainer.getAttribute("animating")&&rippleContainer.hasAttribute("animating")||(rippleContainer.setAttribute("animating","1"),scroll=a(t.target),offsetX="number"==typeof t.offsetX?t.offsetX:t.touches[0].pageX-scroll.left,offsetY="number"==typeof t.offsetY?t.offsetY:t.touches[0].pageY-scroll.top,fullCoverRadius=Math.max(Math.sqrt(Math.pow(offsetX,2)+Math.pow(offsetY,2)),Math.sqrt(Math.pow(t.target.clientWidth-offsetX,2)+Math.pow(t.target.clientHeight-offsetY,2)),Math.sqrt(Math.pow(offsetX,2)+Math.pow(t.target.clientHeight-offsetY,2)),Math.sqrt(Math.pow(offsetY,2)+Math.pow(t.target.clientWidth-offsetX,2))),expandTime=t.target.getAttribute("ripple-press-expand-time")||3,rippleContainer.style.transition="padding "+expandTime+"s ease-out, box-shadow 0.1s linear",rippleContainer.style.background=t.target.getAttribute("ripple-color")||"white",rippleContainer.style.opacity=t.target.getAttribute("ripple-opacity")||"0.6",rippleContainer.style.boxShadow=t.target.getAttribute("ripple-shadow")||"none",rippleContainer.style.top=offsetY+"px",rippleContainer.style.left=offsetX+"px",rippleContainer.style.padding=fullCoverRadius+"px")}function e(t){rippleContainer=r(t.target),"1"==rippleContainer.getAttribute("animating")&&(rippleContainer.setAttribute("animating","2"),radius=window.getComputedStyle(rippleContainer,null).getPropertyValue("padding"),background=window.getComputedStyle(rippleContainer,null).getPropertyValue("background"),destinationRadius=t.target.clientWidth+t.target.clientHeight,rippleContainer.style.transition="none",rippleContainer.style.padding=radius,expandTime=t.target.getAttribute("ripple-release-expand-time")||.4,rippleContainer.style.transition="padding "+expandTime+"s linear, background "+expandTime+"s linear, opacity "+expandTime+"s ease-in-out",rippleContainer.style.padding=destinationRadius+"px",rippleContainer.style.background="radial-gradient(transparent 10%, "+background+" 40%)",rippleContainer.style.opacity="0",t.target.dispatchEvent(new CustomEvent("ripple-button-click",{target:t.target})))}function n(t){rippleContainer=r(t.target),"1"==rippleContainer.getAttribute("animating")&&(rippleContainer.setAttribute("animating","3"),collapseTime=t.target.getAttribute("ripple-leave-collapse-time")||.4,rippleContainer.style.transition="padding "+collapseTime+"s linear, box-shadow "+collapseTime+"s linear",rippleContainer.style.boxShadow="none",rippleContainer.style.padding="0px")}function r(t){for(childs=t.childNodes,ii=0;ii<childs.length;ii++)try{if(childs[ii].className.indexOf("rippleContainer")>-1)return childs[ii]}catch(e){}return t}function a(t){scroll={top:0+t.getBoundingClientRect().top,left:0+t.getBoundingClientRect().left};do scroll.top+=t.scrollTop||0,scroll.left+=t.scrollLeft||0;while(t=t.parentNode);return scroll}window.addEventListener("load",function(){document.head.innerHTML+='<style type="text/css">.ripple { overflow: hidden; position: relative; } .ripple .rippleContainer { display: inline-block; height: 0px !important; width: 0px !important; padding: 0px 0px 0px 0px; border-radius: 50%; position: absolute; top: 0px; left: 0px; transform: translate(-50%, -50%); -webkit-transform: translate(-50%, -50%); -ms-transform: translate(-50%, -50%); background-color: transparent; } .ripple * {pointer-events: none;}</style>',o.registerRipples()});var o={registerRipples:function(){for(rippleButtons=document.getElementsByClassName("ripple"),i=0;i<rippleButtons.length;i++)rippleButtons[i].addEventListener("touchstart",function(e){t(e)},!1),rippleButtons[i].addEventListener("touchmove",function(t){try{scroll=a(t.target),overEl=document.elementFromPoint(t.touches[0].pageX-scroll.left,t.touches[0].pageY-scroll.top).className.indexOf("ripple")>=0}catch(e){overEl=!1}overEl||n(t)},!1),rippleButtons[i].addEventListener("touchend",function(t){e(t)},!1),rippleButtons[i].addEventListener("mousedown",function(e){t(e)},!1),rippleButtons[i].addEventListener("mouseup",function(t){e(t)},!1),rippleButtons[i].addEventListener("mouseleave",function(t){n(t)},!1),rippleButtons[i].addEventListener("transitionend",function(t){("2"==t.target.getAttribute("animating")||"3"==t.target.getAttribute("animating"))&&(t.target.style.transition="none",t.target.style.padding="0px",t.target.style.boxShadow="none",t.target.setAttribute("animating","0"))},!1),r(rippleButtons[i])==rippleButtons[i]&&(rippleButtons[i].innerHTML+='<div class="rippleContainer"></div>')}};return o}();
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc