uikit
Version:
UIkit is a lightweight and modular front-end framework for developing fast and powerful web interfaces.
3 lines (2 loc) • 2.14 kB
JavaScript
/*! UIkit 3.6.19 | https://www.getuikit.com | (c) 2014 - 2021 YOOtheme | MIT License */
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?module.exports=n(require("uikit-util")):"function"==typeof define&&define.amd?define("uikitcountdown",["uikit-util"],n):(t="undefined"!=typeof globalThis?globalThis:t||self).UIkitCountdown=n(t.UIkit.util)}(this,function(o){"use strict";var t={mixins:[{connected:function(){o.hasClass(this.$el,this.$name)||o.addClass(this.$el,this.$name)}}],props:{date:String,clsWrapper:String},data:{date:"",clsWrapper:".uk-countdown-%unit%"},computed:{date:function(t){t=t.date;return Date.parse(t)},days:function(t,n){t=t.clsWrapper;return o.$(t.replace("%unit%","days"),n)},hours:function(t,n){t=t.clsWrapper;return o.$(t.replace("%unit%","hours"),n)},minutes:function(t,n){t=t.clsWrapper;return o.$(t.replace("%unit%","minutes"),n)},seconds:function(t,n){t=t.clsWrapper;return o.$(t.replace("%unit%","seconds"),n)},units:function(){var n=this;return["days","hours","minutes","seconds"].filter(function(t){return n[t]})}},connected:function(){this.start()},disconnected:function(){var n=this;this.stop(),this.units.forEach(function(t){return o.empty(n[t])})},events:[{name:"visibilitychange",el:function(){return document},handler:function(){document.hidden?this.stop():this.start()}}],update:{write:function(){var i=this,s=function(t){t-=Date.now();return{total:t,seconds:t/1e3%60,minutes:t/1e3/60%60,hours:t/1e3/60/60%24,days:t/1e3/60/60/24}}(this.date);s.total<=0&&(this.stop(),s.days=s.hours=s.minutes=s.seconds=0),this.units.forEach(function(t){var n=(n=String(Math.floor(s[t]))).length<2?"0"+n:n,e=i[t];e.textContent!==n&&((n=n.split("")).length!==e.children.length&&o.html(e,n.map(function(){return"<span></span>"}).join("")),n.forEach(function(t,n){return e.children[n].textContent=t}))})}},methods:{start:function(){this.stop(),this.date&&this.units.length&&(this.$update(),this.timer=setInterval(this.$update,1e3))},stop:function(){this.timer&&(clearInterval(this.timer),this.timer=null)}}};return"undefined"!=typeof window&&window.UIkit&&window.UIkit.component("countdown",t),t});