05-tilda-export-backup/Tilda_ Рождение писателя во мраке_files/tilda-date-picker-1.1.min.js
2025-10-29 19:50:39 +03:00

1 line
17 KiB
JavaScript

function t_datepicker_init(e,t,a,r){var i=document.querySelector("#rec"+e);if(i){var n,d="";if(d=a?"#rec"+e+' [data-elem-id="'+a+'"] [data-input-lid="'+t+'"]':"#rec"+e+' [data-input-lid="'+t+'"]',n=i.querySelector(d+" .t-input-block"))if(!n.querySelector(".t_datepicker__inner"))if(!n.classList.contains("js-datepicker-rendered")){var s=n.querySelector(".t-datepicker");if(s)n.classList.add("js-datepicker-rendered"),s.setAttribute("autocomplete",navigator.userAgent.search(/Chrome/)>0?"no":"off"),n.classList.contains("t-input-block_inited-date-picker")||(n.classList.add("t-input-block_inited-date-picker"),n.style.position="relative"),t_datepicker__addHandler(d+" .t-datepicker",t_datepicker__createOptions(n,i,r))}}}function t_datepicker__createOptions(e,t,a){var r=(window.navigator.userLanguage||window.navigator.language).toUpperCase().slice(0,2),i=document.getElementById("allrecords");if(i){var n=i.getAttribute("data-tilda-project-lang");n&&(r=n)}for(var d=[],s=0;s<12;s++){var l=new Date(Date.UTC(2006,s,1,0,0,0));d.push(l.toLocaleDateString(r,{month:"long",timeZone:"UTC"}))}for(var c=[],_=1;_<=7;_++){l=new Date(Date.UTC(2006,0,_,0,0,0));c.push(l.toLocaleDateString(r,{weekday:"short",timeZone:"UTC"}).substring(0,2))}for(var o=[],p=0;p<24;p+=1)for(var u=0;u<60;u+=60){var k=(p<10?"0":"")+p,m=(u<10?"0":"")+u;o.push({hour:k,minute:m})}var y=e.querySelector(".t-datepicker__wrapper input").getAttribute("data-tilda-dateunvailable"),g=[];return y&&(g=y.split(",")),{months:d,weekDays:c,times:o,minuteStep:60,body:e,sundayBased:!1,isTime:a||!1,pickerAttribute:"data-picker",datePickerClass:"t_datepicker__inner",selectedDayClass:"t_datepicker__selected-day",selectedTimeClass:"t_datepicker__selected-time",timeListClass:"t_datepicker__time-list",timeItemClass:"t_datepicker__time-item",header:'<div class="t_datepicker__header"><button class="t_datepicker__arrow t_datepicker__arrow_prev" type="button"></button><button class="t_datepicker__arrow t_datepicker__arrow_next" type="button"></button><div class="t_datepicker__label t_datepicker__label_month"><span>{{month}}</span><select class="t_datepicker__select t_datepicker__select_month" tabindex="-1">{{months}}</select></div><div class="t_datepicker__label t_datepicker__label_year"><span>{{year}}</span><select class="t_datepicker__select t_datepicker__select_year" tabindex="-1">{{years}}</select></div></div>',minDate:"1940-01-01",maxDate:"2040-12-31",nextButtonClass:"t_datepicker__arrow_next",prevButtonClass:"t_datepicker__arrow_prev",topButtonClass:"t_datepicker__arrow_top",bottomButtonClass:"t_datepicker__arrow_bottom",selectYearClass:"t_datepicker__select_year",selectMonthClass:"t_datepicker__select_month",isRendered:!1,rec:t,datePickerEl:"",datePickerTable:"",datePickerTimeEl:"",datePickerTimeListEl:"",nextButtonEl:"",prevButtonEl:"",topButtonEl:"",bottomButtonEl:"",currentMonth:"",currentYear:"",currentTimeEl:"",inputEl:"",disablePast:-1!==g.indexOf("past"),disableFuture:-1!==g.indexOf("future"),disableMonday:-1!==g.indexOf("mo"),disableTuesday:-1!==g.indexOf("tu"),disableWednesday:-1!==g.indexOf("we"),disableThursday:-1!==g.indexOf("th"),disableFriday:-1!==g.indexOf("fr"),disableSaturday:-1!==g.indexOf("sa"),disableSunday:-1!==g.indexOf("su"),disableToday:-1!==g.indexOf("today")}}function t_datepicker__renderCallback(e){if(1===e.rec.querySelectorAll(".t-cover, .t396__artboard").length){var t=e.datePickerEl,a=e.body,r=a.getBoundingClientRect().height,i=a.getBoundingClientRect().y-e.rec.getBoundingClientRect().y;e.rec.getBoundingClientRect().height<i+t.getBoundingClientRect().height+r?(t.style.top="auto",t.style.bottom="100%"):(t.style.bottom="auto",t.style.top="100%")}}function t_datepicker__addHandler(e,t){var a=t.body.querySelector(e),r=t.maxDate.split("-")[0],i=t.minDate.split("-")[0],n="click mousedown".split(" "),d=!1;n.forEach((function(e){a.addEventListener(e,(function(){d?d=!1:(t_datepicker__openDatepicker(t),d=!0)}))})),document.addEventListener("click",(function(e){if(e.target!==a||t.isRendered&&"none"!==t.datePickerEl.style.display)!e.target||e.target.classList.contains(t.datePickerClass)||e.target.closest("."+t.datePickerClass)||e.target.classList.contains("t-datepicker")||t_datepicker__closeDatepicker(t);else{var r=document.querySelectorAll(".t_datepicker__inner");0!==r.length&&r.forEach((function(e){e!==a&&(e.style.display="none")}))}})),t.body.addEventListener("click",(function(e){var n=e.target.getAttribute(t.pickerAttribute);if(n){var d=parseInt(n.split("-")[0],10);if(d<=r&&d>=i){if((l=t.datePickerTable.querySelector("."+t.selectedDayClass))&&l.classList.remove(t.selectedDayClass),e.target.classList.add(t.selectedDayClass),t.isTime&&t.currentTimeEl){var s=t.currentTimeEl.innerHTML;t_datepicker__renderValue(a,n,s)}else t_datepicker__renderValue(a,n);t_datepicker__closeDatepicker(t)}}if(e.target.classList.contains(t.timeItemClass)){var l;if(!(l=t.datePickerTable.querySelector("."+t.selectedDayClass)))return;var c=t.datePickerTimeEl.querySelector("."+t.selectedTimeClass);c&&c.classList.remove(t.selectedTimeClass),t.currentTimeEl=e.target,t.currentTimeEl.classList.add(t.selectedTimeClass);var _=l.getAttribute(t.pickerAttribute);s=t.currentTimeEl.innerHTML;t_datepicker__renderValue(a,_,s),t_datepicker__closeDatepicker(t)}e.target&&(e.target.classList.contains(t.nextButtonClass)?(t_datepicker__goToNextMonth(t),t_datepicker__checkLimit(t)):e.target.classList.contains(t.prevButtonClass)?(t_datepicker__goToPrevMonth(t),t_datepicker__checkLimit(t)):e.target.classList.contains(t.topButtonClass)?t_datepicker__scrollTimeListTop(t):e.target.classList.contains(t.bottomButtonClass)&&t_datepicker__scrollTimeListBottom(t))})),a.addEventListener("focusout",(function(e){var r=t_datepicker__getDateDivider(t.inputEl),i=e.target.value;i&&t_datepicker__validateWithRestrictions(i.split(r),t,a)})),a.addEventListener("keydown",(function(e){if(13===e.keyCode){var r=t_datepicker__getDateDivider(t.inputEl),i=e.target.value;if(!i)return;t_datepicker__validateWithRestrictions(i.split(r),t,a)}}))}function t_datepicker__renderCalendar(e){var t=document.createElement("div");t.classList.add(e.datePickerClass);var a=t_datepicker__getCurrentDate().split("-");e.sundayBased||(e.weekDays.push(e.weekDays[0]),e.weekDays.splice(0,1)),e.inputEl=e.body.querySelector(".t-datepicker");for(var r=[],i=parseInt(e.minDate.slice(0,4),10);i<=parseInt(e.maxDate.slice(0,4),10);i++)r.push(i);var n="";n+='<div class="t_datepicker__date">',n+=e.header.replace("{{year}}",a[0]).replace("{{years}}",t_datepicker__getOptionsHTML(r,parseInt(a[0],10))).replace("{{month}}",e.months[parseInt(a[1],10)-1]).replace("{{months}}",t_datepicker__getOptionsHTML(e.months,e.months[parseInt(a[1],10)-1])),n+='<table class="t_datepicker__body">',n+=t_datepicker__renderMonth(a[0],parseInt(a[1],10)-1,e),n+="</table>",n+="</div>",e.isTime&&(n+='<div class="t_datepicker__time">',n+=t_datepicker__getOptionsTimeHTML(e),n+="</div>"),t.innerHTML=n,e.body.insertAdjacentElement("beforeend",t),e.datePickerEl=e.body.querySelector("."+e.datePickerClass),e.datePickerTable=e.body.querySelector(".t_datepicker__body"),e.nextButtonEl=e.datePickerEl.querySelector("."+e.nextButtonClass),e.prevButtonEl=e.datePickerEl.querySelector("."+e.prevButtonClass),e.currentMonth=e.body.querySelector(".t_datepicker__label_month span"),e.currentYear=e.body.querySelector(".t_datepicker__label_year span"),e.isTime&&(e.datePickerTimeEl=e.body.querySelector(".t_datepicker__time"),e.datePickerTimeListEl=e.datePickerTimeEl.querySelector("."+e.timeListClass),e.topButtonEl=e.datePickerTimeEl.querySelector("."+e.topButtonClass),e.bottomButtonEl=e.datePickerTimeEl.querySelector("."+e.bottomButtonClass),e.currentTimeEl=e.datePickerTimeEl.querySelector("."+e.selectedTimeClass));var d=e.body.querySelector(".t_datepicker__select_year");t_datepicker__addSelectHandler(e.body.querySelector(".t_datepicker__select_month"),e,e.currentMonth),t_datepicker__addSelectHandler(d,e,e.currentYear)}function t_datepicker__goToNextMonth(e){var t,a,r=e.currentYear.innerHTML,i=e.datePickerEl.querySelector("."+e.selectMonthClass),n=e.months.indexOf(e.currentMonth.innerHTML);if(11===parseInt(n,10)){t=e.months[0];var d=e.datePickerEl.querySelector("."+e.selectYearClass);a=parseInt(r,10)+1,d.value=a,e.currentYear.innerHTML=a}else t=e.months[parseInt(n,10)+1],a=r;i.value=t,e.currentMonth.innerHTML=t,e.datePickerTable.innerHTML=t_datepicker__renderMonth(a,e.months.indexOf(t),e)}function t_datepicker__goToPrevMonth(e){var t,a,r=e.currentYear.innerHTML,i=e.datePickerEl.querySelector("."+e.selectMonthClass),n=e.months.indexOf(e.currentMonth.innerHTML);if(0===parseInt(n,10)){t=e.months[11];var d=e.datePickerEl.querySelector("."+e.selectYearClass);a=parseInt(r,10)-1,d.value=a,e.currentYear.innerHTML=a}else t=e.months[parseInt(n,10)-1],a=r;i.value=t,e.currentMonth.innerHTML=t,e.datePickerTable.innerHTML=t_datepicker__renderMonth(a,e.months.indexOf(t),e)}function t_datepicker__renderMonth(e,t,a,r){var i,n=t_datepicker__generateDays(e,t);i=r?new Date(e,t,r):new Date;for(var d="<thead><tr>",s=0;s<a.weekDays.length;s++){d+='<th class="t_datepicker__week-day'+(s>4?" t_datepicker__week-end":"")+'">'+a.weekDays[s]+"</th>"}var l=t_datepicker__getCurrentDate().split("-");d+="</tr></thead><tbody>";var c=0;for(s=0;s<n.length;s++){d+=1===n[s].getDay()?"<tr>":"",d+='<td class="t_datepicker__day-cell ',n[s].getMonth()===t?d+="t_datepicker__current-month":n[s].getMonth()<t?d+="t_datepicker__previous-month":n[s].getMonth()>t&&(d+="t_datepicker__next-month"),n[s].getFullYear()===parseInt(l[0],10)&&n[s].getMonth()+1===parseInt(l[1],10)&&n[s].getDate()===parseInt(l[2],10)&&(d+=" t_datepicker__today"),n[s].getFullYear()===i.getFullYear()&&n[s].getMonth()===i.getMonth()&&n[s].getDate()===i.getDate()&&(d+=" t_datepicker__selected-day"),c+=1,(a.disableMonday&&c+!a.sundayBased===2||a.disableTuesday&&c+!a.sundayBased===3||a.disableWednesday&&c+!a.sundayBased===4||a.disableThursday&&c+!a.sundayBased===5||a.disableFriday&&c+!a.sundayBased===6||a.disableSaturday&&c+!a.sundayBased===7||a.disableSunday&&(c+!a.sundayBased)%7==1||a.disableToday&&n[s].getFullYear()===parseInt(l[0],10)&&n[s].getMonth()+1===parseInt(l[1],10)&&n[s].getDate()===parseInt(l[2],10))&&(d+=" t_datepicker__day-cell--disabled"),7===c&&(c=0),(n[s].getFullYear()<parseInt(l[0],10)||n[s].getFullYear()===parseInt(l[0],10)&&n[s].getMonth()+1<parseInt(l[1],10)||n[s].getFullYear()===parseInt(l[0],10)&&n[s].getMonth()+1===parseInt(l[1],10)&&n[s].getDate()<parseInt(l[2],10))&&(d+=" t_datepicker__past",a.disablePast&&(d+=" t_datepicker__day-cell--disabled")),(n[s].getFullYear()>parseInt(l[0],10)||n[s].getFullYear()===parseInt(l[0],10)&&n[s].getMonth()+1>parseInt(l[1],10)||n[s].getFullYear()===parseInt(l[0],10)&&n[s].getMonth()+1===parseInt(l[1],10)&&n[s].getDate()>parseInt(l[2],10))&&(d+=" t_datepicker__future",a.disableFuture&&(d+=" t_datepicker__day-cell--disabled")),d+='"',d+=a.pickerAttribute+'="',d+=n[s].getFullYear()+"-",d+=n[s].getMonth()+1+"-",d+=n[s].getDate()+'"',d+=">",d+=n[s].getDate(),d+=0===n[s].getDay()?"</tr>":""}return d+="</tbody>"}function t_datepicker__generateDays(e,t){var a=new Date(e,t,1),r=[],i=a.getDay()-1==-1?6:a.getDay()-1;a.setDate(a.getDate()-i);for(var n=0;n<i;n++)r.push(new Date(a)),a.setDate(a.getDate()+1);for(;a.getMonth()===t;)r.push(new Date(a)),a.setDate(a.getDate()+1);if(1!==a.getDay())for(;1!==a.getDay()&&(r.push(new Date(a)),a.setDate(a.getDate()+1),!isNaN(a.getDay())););return r}function t_datepicker__openDatepicker(e){if(!e.isRendered)return t_datepicker__renderCalendar(e),e.isRendered=!0,e.datePickerEl.style.display="flex",t_datepicker__renderCallback(e),void(e.isTime&&t_datepicker__scrollSelectedTimeItem(e));var t=t_datepicker__getDateDivider(e.inputEl);isNaN(+e.inputEl.value.split(" ")[0].replaceAll(t,""))||t_datepicker__validateEnteredValue(t_datepicker__readValue(e.inputEl),e);e.datePickerEl.style.display="flex",t_datepicker__renderCallback(e),e.isTime&&t_datepicker__scrollSelectedTimeItem(e)}function t_datepicker__closeDatepicker(e){e.datePickerEl&&(e.datePickerEl.style.display="none",t_datepicker__renderCallback(e))}function t_datepicker__renderValue(e,t,a){for(var r=t.split("-"),i="",n=0;n<3;n++)r[n].length<2&&(r[n]="0"+r[n]);var d=e.getAttribute("data-tilda-dateformat"),s=t_datepicker__getDateDivider(e);"DD-MM-YYYY"===d&&(i=r[2]+s+r[1]+s+r[0]),"MM-DD-YYYY"===d&&(i=r[1]+s+r[2]+s+r[0]),"YYYY-MM-DD"===d&&(i=r[0]+s+r[1]+s+r[2]),e.classList.contains("t-input_pvis")&&e.classList.add("t-input_has-content"),a&&(i+=" "+a),i&&(e.value=i)}function t_datepicker__readValue(e){var t=t_datepicker__getDateDivider(e),a=e.value.split(t);a.indexOf(" ")>-1?a=e.value.split(" ")[0]:currentTime=e.value.split(" ")[1];var r=e.getAttribute("data-tilda-dateformat");return""==a?t_datepicker__getCurrentDate():"DD-MM-YYYY"===r?a[2]+"-"+a[1]+"-"+a[0]:"MM-DD-YYYY"===r?a[2]+"-"+a[0]+"-"+a[1]:"YYYY-MM-DD"===r?a[0]+"-"+a[1]+"-"+a[2]:void 0}function t_datepicker__getCurrentDate(){var e=new Date;return e.getFullYear()+"-"+(e.getMonth()+1)+"-"+e.getDate()}function t_datepicker__getOptionsHTML(e,t){for(var a=[],r=0;r<e.length;r++)a.push('<option value="'+e[r]+'"'+(e[r]===t?"selected":"")+">"+e[r]+"</option>");return a.join("")}function t_datepicker__getDateDivider(e){if(e){var t=e.getAttribute("data-tilda-datediv");return"dash"!==t&&t?"slash"===t?"/":"dot"===t?".":void 0:"-"}}function t_datepicker__checkLimit(e){var t=e.maxDate.split("-"),a=e.minDate.split("-"),r=parseInt(e.currentYear.innerHTML,10),i=e.currentMonth.innerHTML;11===e.months.indexOf(i)&&r===parseInt(t[0],10)?(e.nextButtonEl.disabled=!0,e.prevButtonEl.disabled=!1):0===e.months.indexOf(i)&&r===parseInt(a[0],10)?(e.prevButtonEl.disabled=!0,e.nextButtonEl.disabled=!1):(e.nextButtonEl.disabled=!1,e.prevButtonEl.disabled=!1)}function t_datepicker__addSelectHandler(e,t,a){e.addEventListener("input",(function(e){a.innerHTML=e.target.value;var r=t.currentYear.innerHTML,i=t.months.indexOf(t.currentMonth.innerHTML);t.datePickerTable.innerHTML=t_datepicker__renderMonth(r,i,t),t_datepicker__checkLimit(t)}))}function t_datepicker__validateEnteredValue(e,t){var a=e.split(" ")[0].split("-"),r=e.indexOf(" ")>-1?e.split(" ")[1]:"",i=parseInt(a[0],10),n=parseInt(a[1])-1,d=parseInt(a[2]),s=parseInt(t.maxDate.split("-")[0],10),l=parseInt(t.minDate.split("-")[0],10),c=d>=0&&d<=31,_=n>=0&&n<=11,o=t.datePickerEl.querySelector("."+t.selectMonthClass),p=t.datePickerEl.querySelector("."+t.selectYearClass);if(i>s?(t.datePickerTable.innerHTML=t_datepicker__renderMonth(s,_?n:11,t,c?d:void 0),o.value=t.months[_?n:11],t.currentMonth.innerHTML=t.months[_?n:11],p.value=s,t.currentYear.innerHTML=s):i<l?(t.datePickerTable.innerHTML=t_datepicker__renderMonth(l,_?n:0,t,c?d:void 0),o.value=t.months[_?n:0],t.currentMonth.innerHTML=t.months[_?n:0],p.value=l,t.currentYear.innerHTML=l):(t.datePickerTable.innerHTML=t_datepicker__renderMonth(i,_?n:11,t,c?d:void 0),o.value=t.months[_?n:0],t.currentMonth.innerHTML=t.months[_?n:0],p.value=i,t.currentYear.innerHTML=i),r){var u=document.querySelector("."+t.timeItemClass+".t_datepicker__selected-time");u&&u.classList.remove("t_datepicker__selected-time");var k=document.querySelector('[data-time="'+r+'"]');k&&k.classList.add("t_datepicker__selected-time"),t.currentTimeEl=k}t_datepicker__checkLimit(t)}function t_datepicker__validateWithRestrictions(e,t,a){var r=new Date(e[2],e[1]-1,e[0]),i=r.getDay(),n=new Date;(r.getTime()>n.getTime()&&t.disableFuture||r.getTime()<n.getTime()&&t.disablePast||0===i&&t.disableSunday||1===i&&t.disableMonday||2===i&&t.disableTuesday||3===i&&t.disableWednesday||4===i&&t.disableThursday||5===i&&t.disableFriday||6===i&&t.disableSaturday||r.getFullYear()===n.getFullYear()&&r.getMonth()===n.getMonth()&&r.getDate()===n.getDate()&&t.disableToday)&&(a.value="")}function t_datepicker__getOptionsTimeHTML(e){var t=e.times,a=(new Date).getHours();e.inputEl&&e.inputEl.value.indexOf(" ")>-1&&(a=1*e.inputEl.value.split(" ")[1].split(":")[0]);var r="";r+='<button class="t_datepicker__arrow t_datepicker__arrow_top" type="button"></button>',r+='<div class="t_datepicker__time-list">';for(var i=0;i<t.length;i++)r+='<div class="t_datepicker__time-item'+(a===Number(t[i].hour)?" t_datepicker__selected-time":"")+'" data-time="'+t[i].hour+":"+t[i].minute+'">',r+=t[i].hour+":"+t[i].minute,r+="</div>";return r+="</div>",r+='<button class="t_datepicker__arrow t_datepicker__arrow_bottom" type="button"></button>'}function t_datepicker__scrollSelectedTimeItem(e){var t=e.datePickerTimeListEl.getBoundingClientRect().top,a=e.currentTimeEl.getBoundingClientRect().top;e.datePickerTimeListEl.scrollTop=a-t+e.datePickerTimeListEl.scrollTop}function t_datepicker__scrollTimeListTop(e){0!==e.datePickerTimeListEl.scrollTop&&(e.datePickerTimeListEl.scrollTop-=29)}function t_datepicker__scrollTimeListBottom(e){var t=e.datePickerTimeListEl.clientHeight;e.datePickerTimeListEl.scrollHeight-t!==e.datePickerTimeListEl.scrollTop&&(e.datePickerTimeListEl.scrollTop+=29)}