diff --git a/frappe/core/page/desktop/desktop.js b/frappe/core/page/desktop/desktop.js index d18f7dd55c..c251e5b4d5 100644 --- a/frappe/core/page/desktop/desktop.js +++ b/frappe/core/page/desktop/desktop.js @@ -149,34 +149,29 @@ $.extend(frappe.desktop, { // This hack is so bad, I should punch myself. // Seriously, punch yourself. const text = $(object).find('.circle-text').html(); - + return text; })); - + const clearWiggle = () => { const $closes = $cases.find('.module-remove'); $closes.hide(); $notis.show(); - $icons.trigger('stopRumble'); + $icons.removeClass('wiggle'); frappe.desktop.wiggling = false; }; - // initiate wiggling. - $icons.jrumble({ - speed: WIGGLE_ANTIDODE // seems neat enough to match the iOS way - }); - frappe.desktop.wrapper.on('mousedown', '.app-icon', () => { timer_id = setTimeout(() => { frappe.desktop.wiggling = true; // hide all notifications. $notis.hide(); - + $cases.each((i) => { const $case = $($cases[i]); - const template = + const template = `
@@ -200,7 +195,7 @@ $.extend(frappe.desktop, { method: 'frappe.desk.doctype.desktop_icon.desktop_icon.hide', args: { name: name }, freeze: true, - callback: (response) => + callback: (response) => { if ( response.message ) { location.reload(); @@ -209,7 +204,7 @@ $.extend(frappe.desktop, { }) dialog.hide(); - + clearWiggle(); }); // Hacks, Hacks and Hacks. @@ -222,8 +217,9 @@ $.extend(frappe.desktop, { dialog.show(); }); }); - - $icons.trigger('startRumble'); + + $icons.addClass('wiggle'); + }, DURATION_LONG_PRESS); }); frappe.desktop.wrapper.on('mouseup mouseleave', '.app-icon', () => { diff --git a/frappe/public/css/desktop.css b/frappe/public/css/desktop.css index 8b918ca8fe..4d91482772 100644 --- a/frappe/public/css/desktop.css +++ b/frappe/public/css/desktop.css @@ -62,6 +62,44 @@ body[data-route="desktop"] .navbar-default { transition: 0.2s; -webkit-transition: 0.2s; } +@-webkit-keyframes wiggle { + 0% { + -webkit-transform: rotate(3deg); + } + 50% { + -webkit-transform: rotate(-3deg); + } + 100% { + -webkit-transform: rotate(3deg); + } +} +@-moz-keyframes wiggle { + 0% { + -moz-transform: rotate(3deg); + } + 50% { + -moz-transform: rotate(-3deg); + } + 100% { + -moz-transform: rotate(3deg); + } +} +@keyframes wiggle { + 0% { + transform: rotate(3deg); + } + 50% { + transform: rotate(-3deg); + } + 100% { + transform: rotate(3deg); + } +} +.wiggle { + -webkit-animation: wiggle 0.2s linear infinite; + -moz-animation: wiggle 0.2s linear infinite; + animation: wiggle 0.2s linear infinite; +} .circle { position: absolute; right: 20px; diff --git a/frappe/public/js/lib/jquery.jrumble.min.js b/frappe/public/js/lib/jquery.jrumble.min.js deleted file mode 100644 index 71de6ffb7c..0000000000 --- a/frappe/public/js/lib/jquery.jrumble.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/* jRumble v1.3 - http://jackrugile.com/jrumble - MIT License */ -(function(f){f.fn.jrumble=function(g){var a=f.extend({x:2,y:2,rotation:1,speed:15,opacity:false,opacityMin:0.5},g);return this.each(function(){var b=f(this),h=a.x*2,i=a.y*2,k=a.rotation*2,g=a.speed===0?1:a.speed,m=a.opacity,n=a.opacityMin,l,j,o=function(){var e=Math.floor(Math.random()*(h+1))-h/2,a=Math.floor(Math.random()*(i+1))-i/2,c=Math.floor(Math.random()*(k+1))-k/2,d=m?Math.random()+n:1,e=e===0&&h!==0?Math.random()<0.5?1:-1:e,a=a===0&&i!==0?Math.random()<0.5?1:-1:a;b.css("display")==="inline"&&(l=true,b.css("display","inline-block"));b.css({position:"relative",left:e+"px",top:a+"px","-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity="+d*100+")",filter:"alpha(opacity="+d*100+")","-moz-opacity":d,"-khtml-opacity":d,opacity:d,"-webkit-transform":"rotate("+c+"deg)","-moz-transform":"rotate("+c+"deg)","-ms-transform":"rotate("+c+"deg)","-o-transform":"rotate("+c+"deg)",transform:"rotate("+c+"deg)"})},p={left:0,top:0,"-ms-filter":"progid:DXImageTransform.Microsoft.Alpha(Opacity=100)",filter:"alpha(opacity=100)","-moz-opacity":1,"-khtml-opacity":1,opacity:1,"-webkit-transform":"rotate(0deg)","-moz-transform":"rotate(0deg)","-ms-transform":"rotate(0deg)","-o-transform":"rotate(0deg)",transform:"rotate(0deg)"};b.bind({startRumble:function(a){a.stopPropagation();clearInterval(j);j=setInterval(o,g)},stopRumble:function(a){a.stopPropagation();clearInterval(j);l&&b.css("display","inline");b.css(p)}})})}})(jQuery); \ No newline at end of file diff --git a/frappe/public/less/desktop.less b/frappe/public/less/desktop.less index 55bc98a4dd..d5a0710ea2 100644 --- a/frappe/public/less/desktop.less +++ b/frappe/public/less/desktop.less @@ -75,6 +75,30 @@ body[data-route=""] .navbar-default, body[data-route="desktop"] .navbar-default -webkit-transition: 0.2s; } +@-webkit-keyframes wiggle { + 0% {-webkit-transform:rotate(3deg);} + 50% {-webkit-transform:rotate(-3deg);} + 100% {-webkit-transform:rotate(3deg);} +} + +@-moz-keyframes wiggle { + 0% {-moz-transform:rotate(3deg);} + 50% {-moz-transform:rotate(-3deg);} + 100% {-moz-transform:rotate(3deg);} +} + +@keyframes wiggle { + 0% {transform:rotate(3deg);} + 50% {transform:rotate(-3deg);} + 100% {transform:rotate(3deg);} +} + +.wiggle { + -webkit-animation: wiggle 0.2s linear infinite; + -moz-animation: wiggle 0.2s linear infinite; + animation: wiggle 0.2s linear infinite; +} + .circle { position: absolute; right: 20px;