-
Notifications
You must be signed in to change notification settings - Fork 8
/
nepali-date-picker.min.js
1 lines (1 loc) · 15.8 KB
/
nepali-date-picker.min.js
1
!function(t){var e,$=t("body"),a=new w;a.setCurrentDate();let _=a.nepaliYear+"-"+a.nepaliMonth+"-"+a.nepaliDate;t("form").attr("autocomplete","off");var n=1,s="",l=a.getNepaliYear(),o=a.getNepaliMonth(),h=0,d="",r="",p="",c=[],u="",f="",v="win",g="",D="";function m(t){let e=t.split("-"),$=e[0]+"-";return $+=1==e[1].length?"0"+e[1]:e[1],$+="-",$+=1==e[2].length?"0"+e[2]:e[2]}function y(){let e=c.length;if(e<1){t(".andp-datepicker-container").removeClass("open").hide();return}if(c=c.sort(function(t,e){return(t=t.split("/").reverse().join(""))>(e=e.split("/").reverse().join(""))?1:t<e?-1:0}),h)g.attr("value",c[0]).val(c[0]);else{for(t('input.andp-hidden-dates[data-cal_id="'+s+'"]').remove(),i=0;i<=e-1;i++)N(c[i]);var $="";$=!0==g.data("show_all_dates")?g.is(":input")?c.join(", "):"<span>"+c.join("</span><span>")+"</span>":e>1?e+" dates selected":c[0],g.is(":input")?g.attr("value",$).val($):g.html($)}t(".andp-datepicker-container").removeClass("open").hide(),selected_date=t(this).data("date")}function M(){var e=g.offset(),$=g.outerHeight(),a=t(window).width(),_=g.outerWidth();if(t(".andp-datepicker-container").outerWidth()+e.left+10>a){var n=a-(e.left+_);t('.andp-datepicker-container[data-cal_id="'+s+'"]').css({top:e.top+$,right:n,left:"inherit"})}else t('.andp-datepicker-container[data-cal_id="'+s+'"]').css({top:e.top+$,left:e.left,right:"inherit"})}function k(){month=r.val(),year=d.val(),p.html("");var t=new w;t.setNepaliDate(year,month,1);var e=t.getDay(),$=Y(year,month);append_html="";var a=1,_=1,n=parseInt(e)-2,s=1;for(i=1;i<=42;i++){last_month=parseInt(month)-1,last_year=parseInt(year),last_month<1&&(last_month=12,(last_year-=1)<2e3&&(last_year=2e3,last_month=1)),next_month=parseInt(month)+1,next_year=parseInt(year);var l=Y(last_year,last_month);if(1==a&&(append_html+='<div class="andp-column">'),i<e)append_html+='<div class="old-dates"> '+parseInt(l-n)+" </div>",n-=1;else if(_<=$){let o=year+"-"+month+"-"+(_<10?"0"+_:_);append_html+='<div class="day'+(c.indexOf(o)>=0?" selected":"")+'" data-date="'+o+'">'+_+"</div>",_++}else append_html+='<div class="old-dates"> '+s+"</div>",s++;7==a&&(append_html+="</div>",a=0),a++}p.append(append_html)}function Y(t,e){var $=new w;if(!(t<2e3)&&!(t>2098)&&!(e<1)&&!(e>12)){var t=t-2e3,e=e-1;return $.nepaliMonths[t][e]}}function E(t){year=parseInt((t=t.split("-"))[0]),month=parseInt(t[1]);var e=parseInt(Y(year,month));return(day=parseInt(t[2])+1)>e&&(day=1,(month+=1)>12&&(month=1,year+=1)),year+"-"+month+"-"+day}function C(e,$=!1){e=m(e);var a=c.indexOf(e),_=t('.andp-datepicker-container[data-cal_id="'+s+'"]').find('.day[data-date="'+e+'"]');$?_.addClass("soft-select"):a<0?(c.push(e),_.addClass("selected")):(c.splice(a,1),_.removeClass("selected"))}function N(t){D.append('<input class="andp-hidden-dates" type="hidden" data-cal_id="'+s+'" name="'+f+'[]" value="'+t+'">')}function w(){this.englishMonths=[31,28,31,30,31,30,31,31,30,31,30,31],this.englishLeapMonths=[31,29,31,30,31,30,31,31,30,31,30,31],this.nepaliMonths=[[30,32,31,32,31,30,30,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[30,32,31,32,31,30,30,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,30,29,31],[31,31,31,32,31,31,30,29,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,30],[31,32,31,32,31,30,30,30,29,30,29,31],[31,31,31,32,31,31,30,29,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[30,32,31,32,31,30,30,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,31,32,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[30,32,31,32,31,30,30,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[30,32,31,32,31,31,29,30,30,29,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,30,29,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,30],[31,32,31,32,31,30,30,30,29,30,29,31],[31,31,31,32,31,31,30,29,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,30],[31,32,31,32,31,30,30,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,31,32,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[30,32,31,32,31,30,30,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[30,32,31,32,31,31,29,30,29,30,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,29,31],[31,31,32,31,31,31,30,29,30,29,30,30],[31,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,29,30,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,31],[31,31,31,32,31,31,30,29,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,30],[31,32,31,32,31,30,30,30,29,30,29,31],[31,31,31,32,31,31,30,29,30,29,30,30],[31,31,32,31,31,31,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,29,30,30],[31,32,31,32,31,30,30,30,29,30,29,31],[30,32,31,32,31,30,30,30,29,30,30,30],[31,31,32,31,31,30,30,30,29,30,30,30],[31,31,32,31,31,30,30,30,29,30,30,30],[31,32,31,32,30,31,30,30,29,30,30,30],[30,32,31,32,31,30,30,30,29,30,30,30],[31,31,32,31,31,31,30,30,29,30,30,30],[30,31,32,32,30,31,30,30,29,30,30,30],[30,32,31,32,31,30,30,30,29,30,30,30],[30,32,31,32,31,30,30,30,29,30,30,30],[31,31,32,31,31,31,30,30,29,30,30,30],[30,31,32,32,31,30,30,30,29,30,30,30],[30,32,31,32,31,30,30,30,29,30,30,30],[31,31,32,31,31,30,30,30,29,30,30,30],[31,31,32,31,31,31,30,29,30,30,30,30],[30,31,32,32,31,30,30,29,30,29,30,30],[31,32,31,32,31,30,30,30,29,30,30,30],[31,31,32,31,31,31,29,30,29,30,29,31],[31,31,32,31,31,31,30,29,29,30,30,30]],this.setCurrentDate=function(){var t=new Date;this.setEnglishDate(t.getFullYear(),t.getMonth()+1,t.getDate())},this.setEnglishDate=function(t,e,$){if(!this.isEnglishRange(t,e,$))throw new Exception("Invalid date format.");this.englishYear=t,this.englishMonth=e,this.englishDate=$,this.nepaliYear=2e3,this.nepaliMonth=1,this.nepaliDate=1;for(var a=this.getEnglishDateDifference(1943,4,14),_=0;a>=this.nepaliYearDays(_);)this.nepaliYear++,a-=this.nepaliYearDays(_),_++;for(var n=0;a>=this.nepaliMonths[_][n];)a-=this.nepaliMonths[_][n],this.nepaliMonth++,n++;this.nepaliDate=this.nepaliDate+a,this.getDay()},this.toEnglishString=function(t){return void 0===t&&(t="-"),this.englishYear+t+this.englishMonth+t+this.englishDate},this.getEnglishDateDifference=function(t,e,$){var a=this.countTotalEnglishDays(this.englishYear,this.englishMonth,this.englishDate)-this.countTotalEnglishDays(t,e,$);return a<0?-a:a},this.countTotalEnglishDays=function(t,e,$){for(var a=365*t+$,_=0;_<e-1;_++)a+=this.englishMonths[_];return a+this.countleap(t,e)},this.countleap=function(t,e){return e<=2&&t--,Math.floor(t/4)-Math.floor(t/100)+Math.floor(t/400)},this.isEnglishRange=function(t,e,$){return!(t<1944)&&!(t>2042)&&!(e<1)&&!(e>12)&&!($<1)&&!($>31)},this.isLeapYear=function(t){return t%4==0&&(t%100!=0||t%400==0)},this.setNepaliDate=function(t,e,$){if(!this.isNepaliRange(t,e,$)){console.log("Invalid Date Format");return}this.nepaliYear=t,this.nepaliMonth=e,this.nepaliDate=$,this.englishYear=1944,this.englishMonth=1,this.englishDate=1;for(var a=this.getNepaliDateDifference(2e3,9,17);a>=(this.isLeapYear(this.englishYear)?366:365);)a-=this.isLeapYear(this.englishYear)?366:365,this.englishYear++;for(var _=this.isLeapYear(this.englishYear)?this.englishLeapMonths:this.englishMonths,n=0;a>=_[n];)this.englishMonth++,a-=_[n],n++;this.englishDate=this.englishDate+a,this.getDay()},this.toNepaliString=function(t){return void 0===t&&(t="-"),this.nepaliYear+t+this.nepaliMonth+t+this.nepaliDate},this.getNepaliDateDifference=function(t,e,$){var a=this.countTotalNepaliDays(this.nepaliYear,this.nepaliMonth,this.nepaliDate)-this.countTotalNepaliDays(t,e,$);return a<0?-a:a},this.countTotalNepaliDays=function(t,e,$){var a=0;if(t<2e3)return 0;a+=$-1;for(var _=t-2e3,n=0;n<e-1;n++)a+=this.nepaliMonths[_][n];for(var n=0;n<_;n++)a+=this.nepaliYearDays(n);return a},this.nepaliYearDays=function(t){for(var e=0,$=0;$<12;$++)e+=this.nepaliMonths[t][$];return e},this.isNepaliRange=function(t,e,$){return!(t<2e3)&&!(t>2098)&&!(e<1)&&!(e>12)&&!($<1)&&!($>this.nepaliMonths[t-2e3][e-1])},this.getDay=function(){var t=this.getEnglishDateDifference(1943,4,14);return this.weekDay=(3+t%7)%7+1,this.weekDay},this.getEnglishYear=function(){return this.englishYear},this.getEnglishMonth=function(){return this.englishMonth},this.getEnglishDate=function(){return this.englishDate},this.getNepaliYear=function(){return this.nepaliYear},this.getNepaliMonth=function(){return this.nepaliMonth},this.getNepaliDate=function(){return this.nepaliDate}}t.fn.nepaliDatePicker=function(){navigator.platform.toUpperCase().indexOf("MAC")>=0&&(v="mac"),t(this).each(function(){let e=t(this);t(this).attr("data-cal_id","cal-"+n),n++,t(this).addClass("andp-date-picker");var $=t.trim(t(this).attr("value"));let a=t(this).data("single");if(h=!0==a||1==a?1:0,$&&!h){D=t(this).parents("form"),s=t(this).data("cal_id"),f=t(this).attr("name");let _=$.split(",");if(_.forEach(function(t,e){N(t.trim())}),!0!=t(this).data("show_all_dates"))output_msg=_.length>1?_.length+" dates selected":_[0],t(this).attr("value",output_msg);else if(!e.is("input")){let l="<span>"+$.split(",").join("</span><span>")+"</span>";e.append(l)}}}),t(this).click(function(){if(e=this,c=[],g=t(this),h=!0==(data_single=t(this).data("single"))||1==data_single?1:0,s=t(this).data("cal_id"),function e(a){t(".andp-datepicker-container").removeClass("open").hide();var _=t('.andp-datepicker-container[data-cal_id="'+s+'"]');if(_.length>0){d=_.find(".andp-year-select"),r=_.find(".andp-month-select"),p=_.find(".andp-days-numbers"),_.addClass("open").show(),M();return}var n='<div class="andp-datepicker-container" data-cal_id="'+s+'" >';for(n+='<div class = "andp-header">',n+='<button type = "button" class = "andp-prev andp-change-months"> ❮ </button>',n+='<select class = "andp-month-select"> </select>',n+='<select class = "andp-year-select"> </select>',n+='<button type = "button" class = "andp-next andp-change-months"> ❯ </button> ',n+="</div>",n+='<div class="andp-body">',n+='<div class = "andp-days-names"> <div> SUN </div> <div> MON </div> <div> TUE </div> <div> WED </div> <div> THU </div> <div> FRI </div> <div> SAT </div> </div>',n+='<div class = "andp-days-numbers"> </div>',h||(n+='<div class="andp-info" style="display:none"><i class="mdi mdi-information text-primary"></i> Press <strong>'+(control_key="mac"==v?"CMD":"CTRL")+"</strong> or <strong>Shift</strong> key for multiple selection </div>"),n+='<div class="andp-action-btns">',h||(n+='<button type="button" class="apply-date" data-cal_id="'+s+'">Apply</button>'),n+="</div>",n+="</div>",n+="</div>",$.append(n),d=(_=t('.andp-datepicker-container[data-cal_id="'+s+'"]')).find(".andp-year-select"),r=_.find(".andp-month-select"),p=_.find(".andp-days-numbers"),append_html='<option value = "01" '+("01"==o?"selected":" ")+" > Baisakh </option>",append_html+='<option value = "02" '+("02"==o?"selected":"")+" > Jestha </option>",append_html+='<option value = "03" '+("03"==o?"selected":"")+" > Asar </option>",append_html+='<option value = "04" '+("04"==o?"selected":"")+" > Shrawan </option>",append_html+='<option value = "05" '+("05"==o?"selected":"")+" > Bhadra </option>",append_html+='<option value = "06" '+("06"==o?"selected":"")+" > Ashoj </option>",append_html+='<option value = "07" '+("07"==o?"selected":"")+" > Kartik </option>",append_html+='<option value = "08" '+("08"==o?"selected":"")+" > Mangsir </option>",append_html+='<option value = "09" '+("09"==o?"selected":"")+" > Poush </option>",append_html+='<option value = "10" '+("10"==o?"selected":"")+" > Magh </option> ",append_html+='<option value = "11" '+("11"==o?"selected":"")+" > Falgun </option>",append_html+='<option value = "12" '+("12"==o?"selected":"")+" > Chaitra </option>",r.append(append_html),i=2e3;i<=2098;i++)append_html='<option value="'+i+'"',i==l&&(append_html+=" selected"),append_html+=">"+i+"</option>",d.append(append_html);k(),t('.andp-datepicker-container[data-cal_id="'+s+'"]').addClass("open"),M()}(this),h)(selected_date=m(t(this).val())).length>0?(older_date_ar=selected_date.split("-"),r.val(older_date_ar[1]).change(),d.val(older_date_ar[0]).change(),C(selected_date)):C(_,!0);else{D=t(this).parents("form"),(f=t(this).attr("name"))?t(this).removeAttr("name","").attr("data-name",f):f=t(this).attr("data-name");var a=t('input.andp-hidden-dates[data-cal_id="'+s+'"]'),n=a.length;if(n>0){if(1==n)older_date_ar=(selected_date=m(a.eq(0).val())).split("-"),r.val(older_date_ar[1]).change(),d.val(older_date_ar[0]).change(),C(selected_date);else{let u=(older_date=t('input.andp-hidden-dates[data-cal_id="'+s+'"]')).length;(older_date=m(older_date.eq(u-1).val()))&&older_date.length>0&&(older_date_ar=older_date.split("-"),r.val(older_date_ar[1]).change(),d.val(older_date_ar[0]).change()),a.each(function(){C(m(t(this).val()))})}}else C(_,!0)}}),$.on("change",".andp-month-select, .andp-year-select",function(){k()})},$.on("click",".andp-datepicker-container.open .andp-change-months",function(e){selected_month=parseInt(r.val()),selected_year=parseInt(d.val()),t(this).hasClass("andp-next")?(selected_month+=1)>12&&(selected_month=1,(selected_year+=1)>2098&&(selected_year=2098,selected_month=12)):(selected_month-=1)<1&&(selected_month=12,(selected_year-=1)<2e3&&(selected_year=2e3,selected_month=1)),selected_month<10&&(selected_month="0"+selected_month),selected_year<10&&(selected_year="0"+selected_year),r.val(selected_month).change(),d.val(selected_year).change()}),$.on("click",".andp-datepicker-container.open .andp-days-numbers .day",function($){selected_day=t(this).text(),selected_date=t(this).data("date");var a=t('.andp-datepicker-container[data-cal_id="'+s+'"]');if(h)c=[],a.find(".andp-column .day").removeClass("selected"),C(selected_date),a.find(".andp-info").hide(),y();else if($.shiftKey){var _=c.length;if(_>0){var n,l,o,d,r,p,f,v,g,D,m=(n=selected_date=t(this).data("date"),l=u=c[_-1],n=n.split("-"),l=l.split("-"),o=new w,o.setNepaliDate(n[0],n[1],n[2]),d=[o.getEnglishYear(),o.getEnglishMonth(),o.getEnglishDate()],o.setNepaliDate(l[0],l[1],l[2]),r=[o.getEnglishYear(),o.getEnglishMonth(),o.getEnglishDate()],p=new Date(d[0],d[1],d[2]),f=new Date(r[0],r[1],r[2]),p>f)?u:selected_date,M=(v=selected_date,g=u,v=v.split("-"),g=g.split("-"),D=new w,D.setNepaliDate(v[0],v[1],v[2]),D.getNepaliDateDifference(g[0],g[1],g[2]));for(c=[],a.find(".andp-column .day").removeClass("selected"),C(m),i=1;i<=M;i++)C(m=E(m))}}else $.ctrlKey||$.metaKey?C(selected_date):(c=[],a.find(".andp-column .day").removeClass("selected"),C(selected_date),a.find(".andp-info").show());t("document").trigger("andp_date_selected",[c,e])}),$.on("click",function(e){var $=t(".andp-datepicker-container, .andp-date-picker");$.is(e.target)||0!==$.has(e.target).length||t(".andp-datepicker-container").removeClass("open").hide()}),$.on("click",".andp-datepicker-container.open .apply-date",function(){y()})}(jQuery);