UNPKG

@vuesax-alpha/nightly

Version:
156 lines (151 loc) • 4.99 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var color = require('./color.js'); const ripple = (evs, color$1, solid) => { const el = evs.currentTarget; const offset = el.getBoundingClientRect(); const x = evs.clientX - offset.left; const y = evs.clientY - offset.top; let time = 0.6; if (el.clientWidth > 150) { time = 1.2; } const effectContent = document.createElement("div"); effectContent.className = "vs-ripple"; if (!color$1) { color.setColor("color", "#fff", effectContent); } const effect = document.createElement("div"); effect.className = "vs-ripple--default"; if (solid) { effect.classList.add("vs-ripple--solid"); } effect.style.transition = `all ${time}s ease`; effect.style.left = `${x}px`; effect.style.top = `${y}px`; effectContent.appendChild(effect); el.appendChild(effectContent); effect.style.width = `${el.clientWidth * 2.5}px`; effect.style.height = `${el.clientWidth * 2.5}px`; effect.style.opacity = `1`; let noTime = false; setTimeout(() => { noTime = true; }, 300); function removeEffect(evs2) { effect.style.transition = `all 0.${time * 600}s ease`; setTimeout( () => { effect.style.opacity = "0"; setTimeout(() => { el.removeChild(effectContent); }, time * 300); }, noTime ? 0 : time * 400 ); evs2.target.removeEventListener("mouseup", removeEffect); evs2.target.removeEventListener("mouseleave", removeEffect); } evs.target.addEventListener("mouseup", removeEffect); evs.target.addEventListener("mouseleave", removeEffect); }; const rippleReverse = (evs) => { const el = evs.currentTarget; const offset = el.getBoundingClientRect(); const x = evs.clientX - offset.left; const y = evs.clientY - offset.top; let time = 0.6; if (el.clientWidth > 150) { time = 1.2; } const effectContent = document.createElement("div"); effectContent.className = "vs-ripple"; const effect = document.createElement("div"); effect.className = "vs-ripple--invert"; effect.style.left = `${x}px`; effect.style.top = `${y}px`; effect.style.width = `${el.clientWidth * 2.5}px`; effect.style.height = `${el.clientWidth * 2.5}px`; effect.style.opacity = "0"; effectContent.appendChild(effect); el.appendChild(effectContent); setTimeout(() => { effect.style.width = "0px"; effect.style.height = "0px"; effect.style.opacity = "0.5"; }, 1); let noTime = false; setTimeout(() => { noTime = true; }, 300); function removeEffect(evs2) { effect.style.transition = `all 0.${time * 600}s ease`; setTimeout( () => { effect.style.opacity = "0"; setTimeout(() => { el.removeChild(effectContent); }, time * 300); }, noTime ? 0 : time * 400 ); evs2.target.removeEventListener("mouseup", removeEffect); evs2.target.removeEventListener("mouseleave", removeEffect); } evs.target.addEventListener("mouseup", removeEffect); evs.target.addEventListener("mouseleave", removeEffect); }; const rippleCut = (evs) => { const el = evs.currentTarget; const offset = el.getBoundingClientRect(); const x = evs.clientX - offset.left; const y = evs.clientY - offset.top; let time = 0.6; if (el.clientWidth > 150) { time = 1.2; } const effectContent = document.createElement("div"); effectContent.className = "vs-ripple"; const effect = document.createElement("div"); const effect2 = document.createElement("div"); effect.className = "vs-ripple--cut-1"; effect2.className = "vs-ripple--cut-2"; effect.style.left = effect2.style.left = `${x}px`; effect.style.top = effect2.style.top = `${y}px`; effect.style.width = effect2.style.width = `${el.clientWidth * 2.5}px`; effect.style.height = effect2.style.height = `${el.clientWidth * 2.5}px`; effect.style.opacity = effect2.style.opacity = `1`; effectContent.appendChild(effect); effectContent.appendChild(effect2); el.appendChild(effectContent); setTimeout(() => { effect.style.left = `-${el.clientWidth * 1.3}px`; effect.style.opacity = "1"; effect2.style.left = `${el.clientWidth * 1.3}px`; effect2.style.opacity = "1"; }, 1); let noTime = false; setTimeout(() => { noTime = true; }, 300); function removeEffect(evs2) { effect.style.transition = `all 0.${time * 600}s ease`; setTimeout( () => { effect.style.opacity = "0"; setTimeout(() => { el.removeChild(effectContent); }, time * 300); }, noTime ? 0 : time * 400 ); evs2.target.removeEventListener("mouseup", removeEffect); evs2.target.removeEventListener("mouseleave", removeEffect); } evs.target.addEventListener("mouseup", removeEffect); evs.target.addEventListener("mouseleave", removeEffect); }; exports.ripple = ripple; exports.rippleCut = rippleCut; exports.rippleReverse = rippleReverse; //# sourceMappingURL=ripple.js.map