@progress/kendo-ui
Version:
This package is part of the [Kendo UI for jQuery](http://www.telerik.com/kendo-ui) suite.
9 lines • 3.71 kB
JavaScript
/* @license */
(function(e,t){typeof exports==`object`&&typeof module<`u`?t(exports):typeof define==`function`&&define.amd?define([`exports`],t):(e=typeof globalThis<`u`?globalThis:e||self,t((e.kendo=e.kendo||{},e.kendo._globals=e.kendo._globals||{},e.kendo._globals.Ripple={})))})(this,function(e){Object.defineProperties(e,{__esModule:{value:!0},[Symbol.toStringTag]:{value:`Module`}});let t=(e,t)=>{if(e.closest)return e.closest(t);let n=Element.prototype.matches?(e,t)=>e.matches(t):(e,t)=>e.msMatchesSelector(t),r=e;for(;r;){if(n(r,t))return r;r=r.parentElement}},n=e=>{let t=e.createElement(`div`);t.className=`k-ripple`;let n=e.createElement(`div`);return n.className=`k-ripple-blob`,t.appendChild(n),[t,n]},r=(e,t,n)=>{let r=()=>{n(),e.removeEventListener(t,r,!1)},i=()=>e.addEventListener(t,r,!1);return i(),{remove:i}},i=(e,i)=>s=>{let c=s.target,l=c.document||c.ownerDocument,u;if(u=i.container?i.container(c):t(c,e),!(!u||/focus/i.test(s.type)&&u.classList.contains(`k-ripple-target`)))if(!c.classList.contains(`k-checkbox`)&&!c.classList.contains(`k-radio`)){u.classList.add(`k-ripple-target`);let[e,t]=n(l),i={animated:!1,released:!1,blob:t,container:u,ripple:e},c={focusin:`focusout`,keydown:`keyup`,mousedown:`mouseup`,pointerdown:`pointerup`,touchdown:`touchup`,animationstart:`animationend`}[s.type];r(s.currentTarget,c,()=>o(i)),u.appendChild(e),window.getComputedStyle(e).getPropertyValue(`opacity`);let d=u.getBoundingClientRect(),f=0,p=0;/mouse|pointer|touch/.test(s.type)?(f=s.clientX-d.left,p=s.clientY-d.top):(f=d.width/2,p=d.height/2);let m=f<d.width/2?d.width:0,h=p<d.height/2?d.height:0,g=f-m,_=p-h,v=2*Math.sqrt(g*g+_*_);if(t.style.width=t.style.height=`${v}px`,t.offsetWidth<0)throw Error(`Inconceivable!`);t.style.cssText=`
width: ${v}px;
height: ${v}px;
transform: translate(-50%, -50%) scale(1);
left: ${f}px;
top: ${p}px;
`,setTimeout(()=>a(i),500)}else s.target.classList.remove(`k-ripple-focus`),s.type!==`animationend`&&s.target.classList.add(`k-ripple-focus`)},a=e=>{e.animated=!0,s(e)},o=e=>{e.released=!0,s(e)},s=e=>{if(!e.released||!e.animated)return;let{blob:t,ripple:n,container:i}=e;i&&r(i,`blur`,()=>i.classList.remove(`k-ripple-target`)),t&&(r(t,`transitionend`,()=>{n&&n.parentNode&&n.parentNode.removeChild(n)}),t.style.transition=`opacity 200ms linear`,t.style.opacity=`0`)},c=(e,t)=>{let n=(e=>[].concat.apply([],e))(t.map(t=>{let n={events:[`mousedown`,`touchdown`],global:!1},{selector:r,options:a=n}=t,o=i(r,a),s=a.events||n.events,c=a.global?document.body:e;return s.forEach(e=>c.addEventListener(e,o,!1)),{events:s,options:a,activator:o}}));return()=>{e&&=(n.forEach(({events:t,options:n,activator:r})=>{let i=n.global?document.body:e;t.forEach(e=>i.removeEventListener(e,r,!1))}),null)}},l={id:`ripplecontainer`,name:`RippleContainer`,category:`web`,depends:[`core`]};(function(e,t){var n=window.kendo.ui,r=n.Widget,i=e.extend,a=r.extend({init:function(e,t){var n=this;r.fn.init.call(n,e),e=n.wrapper=n.element,e.addClass(`k-ripple-container`),n.options=i({},n.options,t),n.registerListeners()},options:{name:`RippleContainer`,elements:[{selector:`.k-button:not(li)`},{selector:`.k-list-ul > .k-list-item`,options:{global:!0}},{selector:`.k-checkbox-label, .k-radio-label`},{selector:`.k-checkbox, .k-radio`,options:{events:[`focusin`,`animationend`,`click`]}}]},removeListeners:function(){},registerListeners:function(){var e=this,t=e.element[0],n=e.options.elements;e.removeListeners(),e.removeListeners=c(t,n)},destroy:function(){var e=this;r.fn.destroy.call(e),e.removeListeners()}});n.plugin(a)})(window.kendo.jQuery);var u=kendo;e.__meta__=l,e.default=u});
//# sourceMappingURL=kendo.ripple.min.js.map